Compare commits
365 Commits
3.3.90
...
wip/input-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4802861ed | ||
|
|
a8fa0b8146 | ||
|
|
cf0bb62f40 | ||
|
|
de8106967d | ||
|
|
1a24f061cf | ||
|
|
e038845458 | ||
|
|
b03273c765 | ||
|
|
915524e1ab | ||
|
|
d579cd1605 | ||
|
|
cb5941ec55 | ||
|
|
a5ac183d86 | ||
|
|
a36de92bb9 | ||
|
|
01f9d551f1 | ||
|
|
399df66b18 | ||
|
|
723a1c843a | ||
|
|
e333263fd6 | ||
|
|
507df9eea1 | ||
|
|
a9a3687ea0 | ||
|
|
f05c649c61 | ||
|
|
a2dfba1842 | ||
|
|
c199da4dfa | ||
|
|
ee9033e12f | ||
|
|
54788d750e | ||
|
|
78e894c6f2 | ||
|
|
32107ba8b5 | ||
|
|
6122f65e7a | ||
|
|
43fd29f9bf | ||
|
|
54c624b356 | ||
|
|
8c33adfd29 | ||
|
|
2e8881b77c | ||
|
|
64aa729edd | ||
|
|
ccf95b738d | ||
|
|
b2847fedd3 | ||
|
|
8befcb9bba | ||
|
|
988fc52303 | ||
|
|
7293ddb22c | ||
|
|
f23c118e81 | ||
|
|
f68b3be35a | ||
|
|
3d95e7bb11 | ||
|
|
337c484f01 | ||
|
|
5d98e2bf04 | ||
|
|
6f300d0cc6 | ||
|
|
3422e1dca7 | ||
|
|
963c6ae567 | ||
|
|
6304169926 | ||
|
|
221afde55e | ||
|
|
0ae87270ad | ||
|
|
9d33baec70 | ||
|
|
0f37b22cdb | ||
|
|
47afd87e84 | ||
|
|
700c06023e | ||
|
|
4fea5b5ca3 | ||
|
|
521bddc1cc | ||
|
|
bdfff20ec2 | ||
|
|
bdd05aba3b | ||
|
|
89c2538ff1 | ||
|
|
7680819108 | ||
|
|
d79e8b84c9 | ||
|
|
731317230a | ||
|
|
5046938913 | ||
|
|
0e8fd45559 | ||
|
|
6099a5dbc3 | ||
|
|
2daa98a694 | ||
|
|
5d2c6496fa | ||
|
|
817dbbe73f | ||
|
|
29c89c82f8 | ||
|
|
0b714bd479 | ||
|
|
8c94a5afb9 | ||
|
|
aeb117c9d1 | ||
|
|
a2d4f133b7 | ||
|
|
b833aff3c8 | ||
|
|
6601e4ddba | ||
|
|
815da2d0ec | ||
|
|
ddd35b3653 | ||
|
|
8a32894c83 | ||
|
|
49d8e6da40 | ||
|
|
8089f24c81 | ||
|
|
b6aab53d10 | ||
|
|
55a4517cd1 | ||
|
|
b095319a16 | ||
|
|
5ea5806730 | ||
|
|
bfbf812148 | ||
|
|
168e9eeac1 | ||
|
|
dd79c1a79a | ||
|
|
fe3402589b | ||
|
|
74dcaff21c | ||
|
|
0a7968a2e5 | ||
|
|
00091a2acb | ||
|
|
c5aa834b6a | ||
|
|
b1bde46694 | ||
|
|
49e4fa494e | ||
|
|
4622c52b71 | ||
|
|
e9ac5dd5f4 | ||
|
|
7570c43d11 | ||
|
|
4332e7ec49 | ||
|
|
9f26f1e225 | ||
|
|
0c0319c415 | ||
|
|
c16dbd7607 | ||
|
|
7b1f10a5fe | ||
|
|
dce74749b7 | ||
|
|
1ba88b8c42 | ||
|
|
9c50b57d46 | ||
|
|
900bd3ee97 | ||
|
|
b4affe00a7 | ||
|
|
ca49c84bc1 | ||
|
|
2cddf60226 | ||
|
|
d9c3951f02 | ||
|
|
aa5997d975 | ||
|
|
c51acf7c2a | ||
|
|
348044bc8a | ||
|
|
7dbdf2aa07 | ||
|
|
c933731ead | ||
|
|
e7da715994 | ||
|
|
6d82aefad4 | ||
|
|
8a11ab7d96 | ||
|
|
f465086405 | ||
|
|
70313a8b79 | ||
|
|
71679c38be | ||
|
|
addd943074 | ||
|
|
0b8470421c | ||
|
|
bcf7c0f006 | ||
|
|
2b87bb015c | ||
|
|
07e10fa03e | ||
|
|
bf992989c7 | ||
|
|
00400e354d | ||
|
|
19a49d34ce | ||
|
|
e8badac282 | ||
|
|
282a60fcab | ||
|
|
e76a28ded5 | ||
|
|
b22543ab66 | ||
|
|
d5165cdc08 | ||
|
|
1c0549f468 | ||
|
|
a7316b0594 | ||
|
|
634eeaf74c | ||
|
|
1299e196be | ||
|
|
92c325230d | ||
|
|
827a466a5c | ||
|
|
89b38b1361 | ||
|
|
140de6dd60 | ||
|
|
e64ff5832e | ||
|
|
17b1543d44 | ||
|
|
043e79a570 | ||
|
|
5d036e3d54 | ||
|
|
9d2a638988 | ||
|
|
7943993fcb | ||
|
|
026ddc2d9b | ||
|
|
384c7e2c17 | ||
|
|
700f706428 | ||
|
|
0a4deb2a9b | ||
|
|
5b8abe6809 | ||
|
|
2c5005c1ea | ||
|
|
c2b3022163 | ||
|
|
644abb2dc9 | ||
|
|
48b53c30f7 | ||
|
|
bf3818eb22 | ||
|
|
b3358aeed7 | ||
|
|
a7d4c7d8de | ||
|
|
369c1b0a41 | ||
|
|
21636f3f29 | ||
|
|
bf428312d7 | ||
|
|
6218209dcb | ||
|
|
1b7ead3455 | ||
|
|
3a252a1b41 | ||
|
|
fc7e6470b5 | ||
|
|
3813a03117 | ||
|
|
e59c29993c | ||
|
|
92d2ebc3f9 | ||
|
|
67ef448471 | ||
|
|
207abe9a2c | ||
|
|
05863227a6 | ||
|
|
ac05cb323c | ||
|
|
066d44636a | ||
|
|
3dbf06420d | ||
|
|
1983097d3a | ||
|
|
1c60aa58ae | ||
|
|
1626d9f9a4 | ||
|
|
c7182589d2 | ||
|
|
ceb17dc713 | ||
|
|
46c0360b03 | ||
|
|
0ebddfcf50 | ||
|
|
36d20eb1b8 | ||
|
|
db4b266874 | ||
|
|
63cf470e07 | ||
|
|
1f87eb4157 | ||
|
|
9bb9999b46 | ||
|
|
60e6349963 | ||
|
|
581d1c5db1 | ||
|
|
cf0b6dda25 | ||
|
|
8a5faa3d2e | ||
|
|
09607787cc | ||
|
|
0aad74a670 | ||
|
|
985f28bbea | ||
|
|
22e1abbaff | ||
|
|
21e8097b9c | ||
|
|
14d267c246 | ||
|
|
9420174477 | ||
|
|
fb4878bb7c | ||
|
|
c856cbb523 | ||
|
|
2e42eb6bad | ||
|
|
4f87e86603 | ||
|
|
3c6737f738 | ||
|
|
b2bc73c3fe | ||
|
|
30ca25e978 | ||
|
|
ecdd0875df | ||
|
|
d05d748fe2 | ||
|
|
8db193a172 | ||
|
|
c064973c9d | ||
|
|
01c66eaf0c | ||
|
|
c2fdec188e | ||
|
|
d7e2b0a771 | ||
|
|
06354a8c9a | ||
|
|
7c25dead17 | ||
|
|
f4d3153e91 | ||
|
|
7030d59b2f | ||
|
|
6eae036ac3 | ||
|
|
b6b6ed0e2f | ||
|
|
51b5825665 | ||
|
|
1c2629595e | ||
|
|
e91f4e88b5 | ||
|
|
bdb7dbdd00 | ||
|
|
7092521253 | ||
|
|
47f7fcd4fe | ||
|
|
93a004b016 | ||
|
|
2fad9d73d4 | ||
|
|
252eb24522 | ||
|
|
b7964e9efb | ||
|
|
23e7a9e710 | ||
|
|
36804a60c9 | ||
|
|
73270345f5 | ||
|
|
e1ffe06709 | ||
|
|
3dd240bdbb | ||
|
|
b58425d7d7 | ||
|
|
a197ce6f53 | ||
|
|
9dcdaf05b5 | ||
|
|
c827cccdf3 | ||
|
|
6805f2d71e | ||
|
|
0ea690a2f2 | ||
|
|
d68ff69c7a | ||
|
|
f1f2bc28a2 | ||
|
|
5f0389c07c | ||
|
|
c2f304f3bc | ||
|
|
ce9c1a1f7a | ||
|
|
203382e007 | ||
|
|
d2ba9eb967 | ||
|
|
59ebec25f3 | ||
|
|
b864b03a65 | ||
|
|
c7a37660ce | ||
|
|
02aae631d8 | ||
|
|
d542f63d3f | ||
|
|
74694a6e23 | ||
|
|
a5baeac428 | ||
|
|
e23e04953c | ||
|
|
fa9f923697 | ||
|
|
797e201946 | ||
|
|
156a642d28 | ||
|
|
96379b7517 | ||
|
|
9b5bb62aa7 | ||
|
|
895745ac14 | ||
|
|
6cde2d8db4 | ||
|
|
a277f8e0e1 | ||
|
|
cf5c5d06e1 | ||
|
|
722f45fa58 | ||
|
|
c97390b9c6 | ||
|
|
124c461a56 | ||
|
|
4ac352637c | ||
|
|
00cf62acfb | ||
|
|
ee0c2a1152 | ||
|
|
f32ab20267 | ||
|
|
1316f93b21 | ||
|
|
52d72fe8a1 | ||
|
|
0406aaa591 | ||
|
|
8f56660cfc | ||
|
|
402cc6b90c | ||
|
|
b8c14ad64e | ||
|
|
1f9c83d88b | ||
|
|
319667a25c | ||
|
|
b047a37a80 | ||
|
|
31af220483 | ||
|
|
40d51ea59f | ||
|
|
284cf83935 | ||
|
|
5ba04a7478 | ||
|
|
2b87051022 | ||
|
|
a901f2dc5d | ||
|
|
bd6f1f2c6d | ||
|
|
ca612872a6 | ||
|
|
feb33a6a28 | ||
|
|
ff92d962f3 | ||
|
|
79ca0d579c | ||
|
|
c61ac862ba | ||
|
|
64ce622f83 | ||
|
|
772638c78e | ||
|
|
24badb46fe | ||
|
|
87d54b37e4 | ||
|
|
98aa61e2a4 | ||
|
|
bea5c6f4e6 | ||
|
|
7d29e691a4 | ||
|
|
b0d161faad | ||
|
|
4c74fa81d1 | ||
|
|
556a3e08db | ||
|
|
e3fb77c051 | ||
|
|
3ee07d0e82 | ||
|
|
72c486cb3e | ||
|
|
e37574510e | ||
|
|
f4b58f35ba | ||
|
|
01696f19e8 | ||
|
|
1f5a27d5c5 | ||
|
|
81476dedcb | ||
|
|
90b08acbf1 | ||
|
|
f967fd21f8 | ||
|
|
8d854d5f1a | ||
|
|
fde5932b45 | ||
|
|
eb84227f78 | ||
|
|
550d595034 | ||
|
|
24cc4b49d6 | ||
|
|
5f130d1925 | ||
|
|
4f05787338 | ||
|
|
a98db33c18 | ||
|
|
a5d78f2943 | ||
|
|
46ebe9ffc5 | ||
|
|
e2b80658ca | ||
|
|
0a586c5c92 | ||
|
|
aa5d352a06 | ||
|
|
760da64a4c | ||
|
|
714ffc5ef1 | ||
|
|
fd4d645687 | ||
|
|
24ad59ea37 | ||
|
|
15f881f967 | ||
|
|
d5285674ae | ||
|
|
bb862e20c0 | ||
|
|
be3eb308b9 | ||
|
|
e7f0b1dc59 | ||
|
|
336cec8b2a | ||
|
|
fad0b96f24 | ||
|
|
d2aab9d6a6 | ||
|
|
4005863e3d | ||
|
|
70cdb67f31 | ||
|
|
a9aec6956d | ||
|
|
d871eda6be | ||
|
|
49d620a414 | ||
|
|
2e2e3281da | ||
|
|
37cbfe29cf | ||
|
|
a1f88fc17f | ||
|
|
0065da61bd | ||
|
|
d2b0706c40 | ||
|
|
a95e585e39 | ||
|
|
7d39fa76dd | ||
|
|
ddf27c1a84 | ||
|
|
87e46f3ff1 | ||
|
|
33a6fda6c3 | ||
|
|
7cc1bdb35d | ||
|
|
60557f4e0f | ||
|
|
914441218a | ||
|
|
e322d98886 | ||
|
|
ba1e5f8f71 | ||
|
|
517075c605 | ||
|
|
540e970170 | ||
|
|
d0fd5641c1 | ||
|
|
caaa21dec0 | ||
|
|
22c606326f | ||
|
|
00ed2973b2 | ||
|
|
3837fc0a87 | ||
|
|
07b95d3436 | ||
|
|
1f5dd9c397 | ||
|
|
007736a234 | ||
|
|
c2a9f7fbb2 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -23,6 +23,8 @@ data/gnome-shell-extension-prefs.desktop.in
|
|||||||
data/gschemas.compiled
|
data/gschemas.compiled
|
||||||
data/org.gnome.shell.gschema.xml
|
data/org.gnome.shell.gschema.xml
|
||||||
data/org.gnome.shell.gschema.valid
|
data/org.gnome.shell.gschema.valid
|
||||||
|
data/org.gnome.shell.evolution.calendar.gschema.xml
|
||||||
|
data/org.gnome.shell.evolution.calendar.gschema.valid
|
||||||
docs/reference/*/*.args
|
docs/reference/*/*.args
|
||||||
docs/reference/*/*.bak
|
docs/reference/*/*.bak
|
||||||
docs/reference/*/*.hierarchy
|
docs/reference/*/*.hierarchy
|
||||||
@@ -68,6 +70,7 @@ src/gnome-shell-extension-prefs
|
|||||||
src/gnome-shell-hotplug-sniffer
|
src/gnome-shell-hotplug-sniffer
|
||||||
src/gnome-shell-jhbuild
|
src/gnome-shell-jhbuild
|
||||||
src/gnome-shell-perf-helper
|
src/gnome-shell-perf-helper
|
||||||
|
src/gnome-shell-perf-tool
|
||||||
src/gnome-shell-real
|
src/gnome-shell-real
|
||||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||||
src/run-js-test
|
src/run-js-test
|
||||||
|
|||||||
145
NEWS
145
NEWS
@@ -1,7 +1,144 @@
|
|||||||
|
3.4.1
|
||||||
|
=====
|
||||||
|
* Fix crash that occurred when an icon theme change caused unexpected
|
||||||
|
reentrancy in the icon loading code [Jasper; #673512]
|
||||||
|
* Don't show system and other disabled users in the GDM user list
|
||||||
|
[Adel; #673784]
|
||||||
|
* Make gnome-shell-calendar-server initialize GTK+ so it can display
|
||||||
|
password prompts if needed [#673608; Owen, Rico]
|
||||||
|
* Adapt to Mutter API change for keybinding addition [Florian; #673014]
|
||||||
|
* Fix crash when an extension was installed as both a user extension
|
||||||
|
and a system extension [#673613; Jasper]
|
||||||
|
* Fix bug where chat entry could end up partially offscreen [Joost, 661944]
|
||||||
|
* Fix problem where icons weren't updating when theme was changed
|
||||||
|
[#672941; Florian]
|
||||||
|
* Look for Evolution calendar settings in GSettings, not GConf [#673610; Owen]
|
||||||
|
* Add <super>F10 for the application menu [#672909; Florian]
|
||||||
|
* Fix %Id format characters to work in translations [#673106; Cosimo]
|
||||||
|
(were already used in fa translation)
|
||||||
|
* Fix error when NetworkManager restarts [#673043; Giovanni]
|
||||||
|
* Improve efficiency of overview redraws by working around Clutter issue
|
||||||
|
[Stefano; #670636]
|
||||||
|
* Misc bug fixes [Florian, Giovanni, Jasper, Rui, Stefano;
|
||||||
|
#672592, #672641, #672719, #673187, #673233, #673656]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos,
|
||||||
|
Florian Müllner, Jasper St. Pierre, Owen Taylor, Rico Tzschichholz,
|
||||||
|
Joost Verdoorn
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Khaled Hosny [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Gil Forcada,
|
||||||
|
Jordi Serratosa [ca], Petr Kovar [cs], Bruce Cowan [en_GB],
|
||||||
|
Carles Ferrando [ca@valencia], Wolfgang Stöggl [de], Daniel Mustieles [es],
|
||||||
|
Arash Mousavi [fa], Bruno Brouard [fr], Fran Diéguez [gl],
|
||||||
|
Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu],
|
||||||
|
Shankar Prasad [kn], Žygimantas Beručka [lt], Rudolfs Mazurs [lv],
|
||||||
|
Sandeep Sheshrao Shedmake [mr], Kjartan Maraas [nb], Piotr Drąg [pl],
|
||||||
|
Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl],
|
||||||
|
Miroslav Nikolić [sr], Sasi Bhushan, Praveen Illa [te], Yinghua Wang [zh_CN]
|
||||||
|
|
||||||
|
3.4.0
|
||||||
|
=====
|
||||||
|
* Don't crash when taking screenshots [Jasper; #672775]
|
||||||
|
* Fix dialog-resizing problem [Florian; #672543]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Florian Müllner, Jasper St. Pierre
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Khaled Hosny, Abderrahim Kitouni [ar], Ihar Hrachyshka [be],
|
||||||
|
Alexander Shopov [bg], Marek Černocký [cs], Jiri Grönroos, Timo Jyrinki [fi],
|
||||||
|
Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he],
|
||||||
|
Gabor Kelemen [hu], Jiro Matsuzawa [ja], Kenneth Nielsen [dk],
|
||||||
|
Mattias Põldaru [et], Changwoo Ryu [ko], Rudolfs Mazurs [lv],
|
||||||
|
Jonh Wendell [pt_BR], Yuri Myasoedov[ru], Daniel Korostil [uk],
|
||||||
|
Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||||
|
|
||||||
|
3.3.92
|
||||||
|
======
|
||||||
|
* Add shell-dialogs for GNOME Keyring prompts [Stef; #652459, #652460, #671034]
|
||||||
|
* When the user returns from idle, bring up the message tray if there were
|
||||||
|
messages while they were away [Marina; #643014]
|
||||||
|
* https://live.gnome.org/EveryDetailMatters
|
||||||
|
- Make the workspace thumbnails clickable all the way to the edge of the
|
||||||
|
screen [Stefano; #643319]
|
||||||
|
- Don't slide out the workspace thumbnails if the mouse is over them when
|
||||||
|
entering the overview [Joost, #651092]
|
||||||
|
- Fix placeholder jumps while dragging a dash item [Joost; #651842]
|
||||||
|
- Don't favorite apps if they are dropped back at the same position
|
||||||
|
[Jean-Philippe; #656333]
|
||||||
|
- To avoid confusion, don't allow removing running apps from favorites
|
||||||
|
[Florian; #644853]
|
||||||
|
- Fix creation of new workspaces by dragging application launchers
|
||||||
|
[Stefano; #664202]
|
||||||
|
- Make it easier to drag dash items without triggering the menu
|
||||||
|
[Florian; #637103]
|
||||||
|
* Accessibility [Alejandro]
|
||||||
|
- Add StWidget API for easily adding accessible states and setting roles,
|
||||||
|
names [#668366, #667432, #671378]
|
||||||
|
- Set accessibility information on UI elements
|
||||||
|
[#644255, #667432, #668361, #672047, #670308, #670312, #670719, #671404]
|
||||||
|
* Improve key-navigation in the overview [Rui, Florian; #663901]
|
||||||
|
* Key navigation bug fixes [Rui, Florian; #662493, #663437, #665215, #671998]
|
||||||
|
* Honor a 'org.gnome.shell.overrides.dynamic-workspaces' setting that
|
||||||
|
determines whether the workspace count is dynamic and unsaved in GSettings
|
||||||
|
or static and saved. [Florian; #671568]
|
||||||
|
* Avoid saving user presence to GSettings when not necessary
|
||||||
|
[Florian; #665701, #668214]
|
||||||
|
* Save screencasts in the users Videos/ directory [Adel; #670749]
|
||||||
|
Use a "human readable" filename [Florian, Adel, Ray; #670753]
|
||||||
|
* Allow dragging from the empty part of the top panel to unmaximize a window
|
||||||
|
[Florian; #666359]
|
||||||
|
* Fix hangs that could occur when switching away to a VT [Ray; #653833]
|
||||||
|
* Fix problems with installing from extensions.gnome.org [Giovanni; #671134]
|
||||||
|
* Fix locking the screen when suspending via menu [David, Gert; #670820]
|
||||||
|
* Fix browser plugin with Konqueror and Opera [Jasper]
|
||||||
|
* Fix shell restart not to bring up failure screen [Giovanni; #648384]
|
||||||
|
* Reorganize and clean up CSS theming [Allan; #668209]
|
||||||
|
* Improve appearance of modal dialogs [Allan, Florian; #670227, #668209]
|
||||||
|
* Update the calendar code to use ECalClient [Giovanni; #671177]
|
||||||
|
* Update jhbuild script to use the main moduleset [Owen, Will; #668440]
|
||||||
|
* StTextureCache: code cleanup, evict unused icons, merge together
|
||||||
|
simulataneous requests for the same icon [Jasper; #670771, #671656, #672273]
|
||||||
|
* Clean up St for recent Clutter changes and fix bugs. StContainer and
|
||||||
|
StGroup are removed [Jasper, Florian; #670034, #670640, #670904]
|
||||||
|
* Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103]
|
||||||
|
* Misc bug fixes
|
||||||
|
[Adel, Colin G, Cosimo, Florian, Giovanni, Jasper, Marius, Rui, Stefano;
|
||||||
|
#651130, #658946, #667552, #670076, #671001, #670979, #671410, #671411,
|
||||||
|
#671556, #671656, #671657, #672011, #672024, #672240, #672265, #672270,
|
||||||
|
#672321, #672326, #672413, #672471]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jean-Philippe Braun, Giovanni Campagna, Cosimo Cecchi, Allan Day,
|
||||||
|
Stefano Facchini, David Foerster, Adel Gadllah, Marius Gedminas,
|
||||||
|
Colin Guthrie, Gert Michael Kulyk, William Lachance, Rui Matos,
|
||||||
|
Florian Müllner, Alejandro Piñeiro, Jan Alexander Steffens,
|
||||||
|
Jasper St. Pierre, Ray Strode, Owen Taylor, Joost Verdoorn, Stef Walter,
|
||||||
|
Marina Zhurakhinskaya
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Nilamdyuti Goswami [as], Ihar Hrachyshka, Kasia Bondarava [be],
|
||||||
|
Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cs],
|
||||||
|
Mario Blättermann [de], Kris Thomsen [dk], Bruce Cowan [en_GB],
|
||||||
|
Kristjan Schmidt [eo], Daniel Mustieles [es], Mattias Põldaru [et],
|
||||||
|
Inaki Larranaga Murgoitio [eu], Arash Mousavi [fa], Timo Jyrinki [fi],
|
||||||
|
Bruno Brouard [fr], Fran Diéguez [gl], Sweta Kothari [gu],
|
||||||
|
Yaron Shahrabani [he], Gabor Kelemen [hu], Jiro Matsuzawa [ja],
|
||||||
|
Baurzhan Muftakhidinov [kk], Seong-ho Cho [ko], Žygimantas Beručka [lt],
|
||||||
|
Anita Reitere [lv], Anish A, Praveen Arimbrathodiyil, Mohammed Sadiq [ml],
|
||||||
|
fKjartan Maraas [nb], Wouter Bolsterlee [nl], A S Alam [pa], Piotr Drąg [pl],
|
||||||
|
Duarte Loreto [pt], Jonh Wendell [pt_BR], Yuri Myasoedov [ru],
|
||||||
|
Matej Urbančič [sl], Miroslav Nikolić [sr], Tirumurti Vasudevan [ta],
|
||||||
|
Sasi Bhushan, Krishnababu Krothapalli [te], Daniel Korostil [uk],
|
||||||
|
Nguyễn Thái Ngọc Duy [vi], YunQiang Su, Yinghua Wang [zh_CN],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||||
|
|
||||||
3.3.90
|
3.3.90
|
||||||
======
|
======
|
||||||
|
|
||||||
* All other applications to implement search providers via D-Bus
|
* Allow other applications to implement search providers via D-Bus
|
||||||
[Florian; #663125, #670148]
|
[Florian; #663125, #670148]
|
||||||
* Remove "Recent Items" search, as replaced by Documents search
|
* Remove "Recent Items" search, as replaced by Documents search
|
||||||
[Florian; #663125]
|
[Florian; #663125]
|
||||||
@@ -32,7 +169,7 @@ Contributors:
|
|||||||
Will Thompson, Stef Walter
|
Will Thompson, Stef Walter
|
||||||
|
|
||||||
Translations:
|
Translations:
|
||||||
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cz],
|
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cs],
|
||||||
Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et],
|
Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et],
|
||||||
Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it],
|
Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it],
|
||||||
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb],
|
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb],
|
||||||
@@ -163,7 +300,7 @@ Contributors:
|
|||||||
Marina Zhurakhinskaya
|
Marina Zhurakhinskaya
|
||||||
|
|
||||||
Translations:
|
Translations:
|
||||||
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
|
Petr Kovar [cs], Kris Thomsen [dk], Daniel Mustieles [es],
|
||||||
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
|
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
|
||||||
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
|
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
|
||||||
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
|
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
|
||||||
@@ -326,7 +463,7 @@ Contributors:
|
|||||||
Translations:
|
Translations:
|
||||||
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
|
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
|
||||||
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
|
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
|
||||||
Petr Kovar [cz], Mario Blättermann [de], Kris Thomsen [dk],
|
Petr Kovar [cs], Mario Blättermann [de], Kris Thomsen [dk],
|
||||||
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
|
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
|
||||||
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
|
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
|
||||||
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],
|
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],
|
||||||
|
|||||||
@@ -153,6 +153,8 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
|||||||
/* global initialization routine, called once when plugin
|
/* global initialization routine, called once when plugin
|
||||||
is loaded */
|
is loaded */
|
||||||
|
|
||||||
|
g_type_init ();
|
||||||
|
|
||||||
g_debug ("plugin loaded");
|
g_debug ("plugin loaded");
|
||||||
|
|
||||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||||
|
|||||||
14
configure.ac
14
configure.ac
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.3.90],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.4.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@@ -60,10 +60,10 @@ fi
|
|||||||
|
|
||||||
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||||
|
|
||||||
CLUTTER_MIN_VERSION=1.9.11
|
CLUTTER_MIN_VERSION=1.9.16
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||||
GJS_MIN_VERSION=1.29.18
|
GJS_MIN_VERSION=1.29.18
|
||||||
MUTTER_MIN_VERSION=3.3.5
|
MUTTER_MIN_VERSION=3.4.1
|
||||||
FOLKS_MIN_VERSION=0.5.2
|
FOLKS_MIN_VERSION=0.5.2
|
||||||
GTK_MIN_VERSION=3.3.9
|
GTK_MIN_VERSION=3.3.9
|
||||||
GIO_MIN_VERSION=2.31.6
|
GIO_MIN_VERSION=2.31.6
|
||||||
@@ -74,6 +74,7 @@ TELEPATHY_GLIB_MIN_VERSION=0.17.5
|
|||||||
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||||
POLKIT_MIN_VERSION=0.100
|
POLKIT_MIN_VERSION=0.100
|
||||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||||
|
GCR_MIN_VERSION=3.3.90
|
||||||
|
|
||||||
# Collect more than 20 libraries for a prize!
|
# Collect more than 20 libraries for a prize!
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||||
@@ -93,7 +94,8 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
||||||
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
||||||
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
||||||
libnm-glib libnm-util gnome-keyring-1)
|
libnm-glib libnm-util gnome-keyring-1
|
||||||
|
gcr-3 >= $GCR_MIN_VERSION)
|
||||||
|
|
||||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||||
|
|
||||||
@@ -106,8 +108,6 @@ AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're li
|
|||||||
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
||||||
|
|
||||||
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
||||||
JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
|
|
||||||
AC_SUBST(JHBUILD_TYPELIBDIR)
|
|
||||||
|
|
||||||
saved_CFLAGS=$CFLAGS
|
saved_CFLAGS=$CFLAGS
|
||||||
saved_LIBS=$LIBS
|
saved_LIBS=$LIBS
|
||||||
@@ -210,7 +210,7 @@ GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
|||||||
# minimum/yes/maximum are the same, however.
|
# minimum/yes/maximum are the same, however.
|
||||||
AC_ARG_ENABLE(compile_warnings,
|
AC_ARG_ENABLE(compile_warnings,
|
||||||
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
||||||
enable_compile_warnings=maximum)
|
enable_compile_warnings=error)
|
||||||
|
|
||||||
changequote(,)dnl
|
changequote(,)dnl
|
||||||
if test "$enable_compile_warnings" != no ; then
|
if test "$enable_compile_warnings" != no ; then
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ dist_theme_DATA = \
|
|||||||
theme/ws-switch-arrow-up.svg \
|
theme/ws-switch-arrow-up.svg \
|
||||||
theme/ws-switch-arrow-down.svg
|
theme/ws-switch-arrow-down.svg
|
||||||
|
|
||||||
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
|
gsettings_SCHEMAS = org.gnome.shell.gschema.xml org.gnome.shell.evolution.calendar.gschema.xml
|
||||||
|
|
||||||
@INTLTOOL_XML_NOMERGE_RULE@
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
@GSETTINGS_RULES@
|
@GSETTINGS_RULES@
|
||||||
@@ -80,6 +80,7 @@ EXTRA_DIST = \
|
|||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(shaders_DATA) \
|
$(shaders_DATA) \
|
||||||
$(convert_DATA) \
|
$(convert_DATA) \
|
||||||
|
org.gnome.shell.evolution.calendar.gschema.xml.in \
|
||||||
org.gnome.shell.gschema.xml.in
|
org.gnome.shell.gschema.xml.in
|
||||||
|
|
||||||
CLEANFILES = \
|
CLEANFILES = \
|
||||||
|
|||||||
@@ -13,4 +13,4 @@ NoDisplay=true
|
|||||||
X-GNOME-Autostart-Phase=WindowManager
|
X-GNOME-Autostart-Phase=WindowManager
|
||||||
X-GNOME-Provides=panel;windowmanager;
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
X-GNOME-Autostart-Notify=true
|
X-GNOME-Autostart-Notify=true
|
||||||
X-GNOME-AutoRestart=true
|
X-GNOME-AutoRestart=false
|
||||||
|
|||||||
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- NOTE: This schema is a GNOME 3.4 workaround - it uses the same path
|
||||||
|
as org.gnome.evolution.calendar, but avoids us requiring Evolution
|
||||||
|
be installed. In GNOME 3.6 the selected state will become a flag
|
||||||
|
on the calendar. Because the translations are in Evolution,
|
||||||
|
this is untranslated and in POTFILES.skip.
|
||||||
|
-->
|
||||||
|
<schemalist>
|
||||||
|
<schema path="/org/gnome/evolution/calendar/" id="org.gnome.shell.evolution.calendar" gettext-domain="evolution">
|
||||||
|
<key type="as" name="selected-calendars">
|
||||||
|
<default>[]</default>
|
||||||
|
<summary>List of selected calendars</summary>
|
||||||
|
<description>List of calendars to load</description>
|
||||||
|
</key>
|
||||||
|
<key type="as" name="selected-tasks">
|
||||||
|
<default>[]</default>
|
||||||
|
<summary>List of selected task lists</summary>
|
||||||
|
<description>List of task lists to load</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -64,6 +64,7 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
<child name="clock" schema="org.gnome.shell.clock"/>
|
<child name="clock" schema="org.gnome.shell.clock"/>
|
||||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
||||||
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
||||||
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@@ -78,6 +79,24 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
|
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
||||||
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
|
<key name="open-application-menu" type="as">
|
||||||
|
<default>["<Super>F10"]</default>
|
||||||
|
<_summary>Keybinding to open the application menu</_summary>
|
||||||
|
<_description>
|
||||||
|
Keybinding to open the application menu.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
|
<key name="toggle-recording" type="as">
|
||||||
|
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
|
||||||
|
<_summary>Keybinding to toggle the screen recorder</_summary>
|
||||||
|
<_description>
|
||||||
|
Keybinding to start/stop the builtin screen recorder.
|
||||||
|
</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="keyboard-type" type="s">
|
<key name="keyboard-type" type="s">
|
||||||
@@ -172,6 +191,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
|
<key name="dynamic-workspaces" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Workspaces are managed dynamically</summary>
|
||||||
|
<description>
|
||||||
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
<key name="workspaces-only-on-primary" type="b">
|
<key name="workspaces-only-on-primary" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
<summary>Workspaces only on primary monitor</summary>
|
<summary>Workspaces only on primary monitor</summary>
|
||||||
|
|||||||
@@ -17,10 +17,16 @@
|
|||||||
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Text Styles */
|
||||||
|
|
||||||
|
/* default text style */
|
||||||
stage {
|
stage {
|
||||||
font-family: cantarell, sans-serif;
|
font-family: cantarell, sans-serif;
|
||||||
|
font-size: 11pt;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* links */
|
||||||
.shell-link {
|
.shell-link {
|
||||||
color: #0000ff;
|
color: #0000ff;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
@@ -30,10 +36,28 @@ stage {
|
|||||||
color: #0000e0;
|
color: #0000e0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label-shadow {
|
/* small */
|
||||||
color: rgba(0,0,0,0.5);
|
.app-well-menu,
|
||||||
|
.contact-details-status,
|
||||||
|
.run-dialog-label,
|
||||||
|
.run-dialog-error-label {
|
||||||
|
font-size: 9pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* small bold */
|
||||||
|
.dash-label,
|
||||||
|
.window-caption,
|
||||||
|
.switcher-list,
|
||||||
|
.source-title,
|
||||||
|
.app-well-app > .overview-icon,
|
||||||
|
.remove-favorite > .overview-icon,
|
||||||
|
.search-result-content > .overview-icon {
|
||||||
|
font-size: 9pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll Bars */
|
||||||
|
|
||||||
StScrollBar
|
StScrollBar
|
||||||
{
|
{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@@ -44,6 +68,11 @@ StScrollView.vfade
|
|||||||
-st-vfade-offset: 68px;
|
-st-vfade-offset: 68px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StScrollView.hfade
|
||||||
|
{
|
||||||
|
-st-hfade-offset: 68px;
|
||||||
|
}
|
||||||
|
|
||||||
StScrollView StScrollBar
|
StScrollView StScrollBar
|
||||||
{
|
{
|
||||||
min-width: 16px;
|
min-width: 16px;
|
||||||
@@ -79,6 +108,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
background-color: #292929;
|
background-color: #292929;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check Boxes */
|
||||||
|
|
||||||
.check-box ShellGenericContainer {
|
.check-box ShellGenericContainer {
|
||||||
spacing: .8em;
|
spacing: .8em;
|
||||||
}
|
}
|
||||||
@@ -113,8 +144,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
color: #ffffff;
|
|
||||||
font-size: 10.5pt;
|
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,8 +182,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
.popup-combo-menu {
|
.popup-combo-menu {
|
||||||
background-color: rgba(0,0,0,0.9);
|
background-color: rgba(0,0,0,0.9);
|
||||||
padding: 1em 0em;
|
padding: 1em 0em;
|
||||||
color: #ffffff;
|
|
||||||
font-size: 10.5pt;
|
|
||||||
border: 1px solid #5f5f5f;
|
border: 1px solid #5f5f5f;
|
||||||
border-radius: 9px;
|
border-radius: 9px;
|
||||||
}
|
}
|
||||||
@@ -224,10 +251,10 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.popup-menu-icon {
|
.popup-menu-icon {
|
||||||
icon-size: 1.14em;
|
icon-size: 1.09em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Switches (to be used in menus) */
|
/* Switches */
|
||||||
.toggle-switch {
|
.toggle-switch {
|
||||||
width: 65px;
|
width: 65px;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
@@ -255,35 +282,48 @@ StScrollBar StButton#vhandle:hover
|
|||||||
spacing: .5em;
|
spacing: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Shared button properties */
|
/* Buttons */
|
||||||
|
|
||||||
.dash-search-button, .notification-button, .notification-icon-button,
|
.dash-search-button,
|
||||||
.hotplug-notification-item, .hotplug-resident-eject-button,
|
.notification-button,
|
||||||
|
.notification-icon-button,
|
||||||
|
.hotplug-notification-item,
|
||||||
|
.hotplug-resident-eject-button,
|
||||||
.modal-dialog-button {
|
.modal-dialog-button {
|
||||||
color: white;
|
font-weight: bold;
|
||||||
border: 1px solid #8b8b8b;
|
border: 1px solid #8b8b8b;
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
background-gradient-start: rgba(255, 255, 255, 0.2);
|
background-gradient-start: rgba(255, 255, 255, 0.2);
|
||||||
background-gradient-end: rgba(255, 255, 255, 0);
|
background-gradient-end: rgba(255, 255, 255, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-search-button:hover, .notification-button:hover,
|
.dash-search-button:hover,
|
||||||
.notification-icon-button:hover, .hotplug-notification-item:hover,
|
.notification-button:hover,
|
||||||
.hotplug-resident-eject-button:hover, .modal-dialog-button:hover {
|
.notification-icon-button:hover,
|
||||||
|
.hotplug-notification-item:hover,
|
||||||
|
.hotplug-resident-eject-button:hover,
|
||||||
|
.modal-dialog-button:hover {
|
||||||
background-gradient-start: rgba(255, 255, 255, 0.3);
|
background-gradient-start: rgba(255, 255, 255, 0.3);
|
||||||
background-gradient-end: rgba(255, 255, 255, 0.1);
|
background-gradient-end: rgba(255, 255, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-search-button:selected, .notification-button:focus,
|
.dash-search-button:selected,
|
||||||
.notification-icon-button:focus, .hotplug-notification-item:focus,
|
.dash-search-button:focus,
|
||||||
|
.notification-button:focus,
|
||||||
|
.notification-icon-button:focus,
|
||||||
|
.hotplug-notification-item:focus,
|
||||||
.modal-dialog-button:focus {
|
.modal-dialog-button:focus {
|
||||||
border: 2px solid #8b8b8b;
|
border: 2px solid #8b8b8b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-search-button:active, .dash-search-button:pressed,
|
.dash-search-button:active,
|
||||||
.notification-button:active, .notification-icon-button:active,
|
.dash-search-button:pressed,
|
||||||
.hotplug-notification-item:active, .hotplug-resident-eject-button:active,
|
.notification-button:active,
|
||||||
.modal-dialog-button:active, .modal-dialog-button:pressed {
|
.notification-icon-button:active,
|
||||||
|
.hotplug-notification-item:active,
|
||||||
|
.hotplug-resident-eject-button:active,
|
||||||
|
.modal-dialog-button:active,
|
||||||
|
.modal-dialog-button:pressed {
|
||||||
background-gradient-start: rgba(255, 255, 255, 0);
|
background-gradient-start: rgba(255, 255, 255, 0);
|
||||||
background-gradient-end: rgba(255, 255, 255, 0.2);
|
background-gradient-end: rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
@@ -291,9 +331,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
/* Panel */
|
/* Panel */
|
||||||
|
|
||||||
#panel {
|
#panel {
|
||||||
color: #ffffff;
|
|
||||||
background-color: black;
|
background-color: black;
|
||||||
font-size: 10.5pt;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
height: 1.86em;
|
height: 1.86em;
|
||||||
}
|
}
|
||||||
@@ -335,6 +373,11 @@ StScrollBar StButton#vhandle:hover
|
|||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* used for the app menu header only */
|
||||||
|
.label-shadow {
|
||||||
|
color: rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
.panel-button #appMenuIcon {
|
.panel-button #appMenuIcon {
|
||||||
app-icon-bottom-clip: 1px;
|
app-icon-bottom-clip: 1px;
|
||||||
}
|
}
|
||||||
@@ -388,6 +431,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
-boxpointer-gap: 4px
|
-boxpointer-gap: 4px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* User Menu */
|
||||||
|
|
||||||
#panelUserMenu {
|
#panelUserMenu {
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
@@ -427,8 +472,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding: .4em 0em;
|
padding: .4em 0em;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid #5f5f5f;
|
border: 1px solid #5f5f5f;
|
||||||
color: #ffffff;
|
|
||||||
font-size: 10.5pt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-chooser-status-item,
|
.status-chooser-status-item,
|
||||||
@@ -437,7 +480,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.system-status-icon {
|
.system-status-icon {
|
||||||
icon-size: 1.14em;
|
icon-size: 1.09em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Overview */
|
/* Overview */
|
||||||
@@ -447,7 +490,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.window-caption {
|
.window-caption {
|
||||||
color: white;
|
|
||||||
spacing: 25px;
|
spacing: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,8 +523,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
.window-caption {
|
.window-caption {
|
||||||
background: rgba(0,0,0,0.5);
|
background: rgba(0,0,0,0.5);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
font-size: 9pt;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
-shell-caption-spacing: 12px;
|
-shell-caption-spacing: 12px;
|
||||||
}
|
}
|
||||||
@@ -530,13 +570,14 @@ StScrollBar StButton#vhandle:hover
|
|||||||
|
|
||||||
#viewSelector {
|
#viewSelector {
|
||||||
spacing: 1em;
|
spacing: 1em;
|
||||||
font-size: 12pt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#viewSelectorTabBar {
|
#viewSelectorTabBar {
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Search Box */
|
||||||
|
|
||||||
#searchArea {
|
#searchArea {
|
||||||
padding: 0px 24px;
|
padding: 0px 24px;
|
||||||
}
|
}
|
||||||
@@ -544,6 +585,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
#searchEntry {
|
#searchEntry {
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
border-radius: 17px;
|
border-radius: 17px;
|
||||||
|
font-size: 12pt;
|
||||||
color: rgb(128, 128, 128);
|
color: rgb(128, 128, 128);
|
||||||
border: 2px solid rgba(245,245,245,0.2);
|
border: 2px solid rgba(245,245,245,0.2);
|
||||||
background-gradient-start: rgba(5,5,6,0.1);
|
background-gradient-start: rgba(5,5,6,0.1);
|
||||||
@@ -580,8 +622,11 @@ StScrollBar StButton#vhandle:hover
|
|||||||
color: #8d8f8a;
|
color: #8d8f8a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* View Tabs */
|
||||||
|
|
||||||
.view-tab-title {
|
.view-tab-title {
|
||||||
color: #888a85;
|
color: #888a85;
|
||||||
|
font-size: 12pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 0px 0.75em;
|
padding: 0px 0.75em;
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
@@ -597,6 +642,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
border-radius: 0.25em;
|
border-radius: 0.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Search Results */
|
||||||
|
|
||||||
#searchResults {
|
#searchResults {
|
||||||
padding: 20px 10px 10px 10px;
|
padding: 20px 10px 10px 10px;
|
||||||
spacing: 18px;
|
spacing: 18px;
|
||||||
@@ -621,7 +668,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-section-results {
|
.search-section-results {
|
||||||
color: #ffffff;
|
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -648,29 +694,22 @@ StScrollBar StButton#vhandle:hover
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dash-search-button:focus,
|
||||||
.dash-search-button:selected {
|
.dash-search-button:selected {
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
padding-bottom: 4px;
|
padding-bottom: 4px;
|
||||||
width: 298px;
|
width: 298px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-search-button-label {
|
|
||||||
color: white;
|
|
||||||
font-size: 11pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dash-label {
|
.dash-label {
|
||||||
border-radius: 7px;
|
border-radius: 7px;
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
background-color: rgba(0,0,0,0.5);
|
background-color: rgba(0,0,0,0.5);
|
||||||
color: #ffffff;
|
|
||||||
font-size: 0.9em;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
-x-offset: 8px;
|
-x-offset: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apps */
|
/* Application Launchers and Grid */
|
||||||
|
|
||||||
.icon-grid {
|
.icon-grid {
|
||||||
spacing: 36px;
|
spacing: 36px;
|
||||||
@@ -678,12 +717,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
-shell-grid-vertical-item-size: 118px;
|
-shell-grid-vertical-item-size: 118px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-grid {
|
|
||||||
spacing: 36px;
|
|
||||||
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
|
|
||||||
-shell-grid-vertical-item-size: 118px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-grid .overview-icon {
|
.icon-grid .overview-icon {
|
||||||
icon-size: 96px;
|
icon-size: 96px;
|
||||||
}
|
}
|
||||||
@@ -699,7 +732,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-filter {
|
.app-filter {
|
||||||
font-size: 10.5pt;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
height: 2.85em;
|
height: 2.85em;
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
@@ -744,13 +776,32 @@ StScrollBar StButton#vhandle:hover
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
border: 1px rgba(0,0,0,0);
|
border: 1px rgba(0,0,0,0);
|
||||||
font-size: 8pt;
|
|
||||||
font-weight: bold;
|
|
||||||
color: white;
|
|
||||||
transition-duration: 100;
|
transition-duration: 100;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.app-well-app.running > .overview-icon {
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
|
background-image: url("running-indicator.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-well-app:hover > .overview-icon,
|
||||||
|
.remove-favorite:hover > .overview-icon,
|
||||||
|
.search-result-content:hover > .overview-icon {
|
||||||
|
background-color: rgba(255,255,255,0.1);
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
|
transition-duration: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Contacts */
|
||||||
|
|
||||||
|
.contact-grid {
|
||||||
|
spacing: 36px;
|
||||||
|
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
|
||||||
|
-shell-grid-vertical-item-size: 118px;
|
||||||
|
}
|
||||||
|
|
||||||
.contact {
|
.contact {
|
||||||
width: 272px; /* Same width as two normal results + spacing */
|
width: 272px; /* Same width as two normal results + spacing */
|
||||||
height: 118px; /* Aspect ratio = 1.75. Normal US business card ratio */
|
height: 118px; /* Aspect ratio = 1.75. Normal US business card ratio */
|
||||||
@@ -782,10 +833,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-details-status {
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-details-status-icon {
|
.contact-details-status-icon {
|
||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
}
|
}
|
||||||
@@ -795,36 +842,15 @@ StScrollBar StButton#vhandle:hover
|
|||||||
transition-duration: 100;
|
transition-duration: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-well-app.running > .overview-icon {
|
.contact:focus,
|
||||||
text-shadow: black 0px 2px 2px;
|
.app-well-app:focus > .overview-icon,
|
||||||
background-image: url("running-indicator.svg");
|
.search-result-content:focus > .overview-icon,
|
||||||
background-size: contain;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact:selected,
|
.contact:selected,
|
||||||
.app-well-app:selected > .overview-icon,
|
.app-well-app:selected > .overview-icon,
|
||||||
.search-result-content:selected > .overview-icon {
|
.search-result-content:selected > .overview-icon {
|
||||||
background-color: rgba(255,255,255,0.33);
|
background-color: rgba(255,255,255,0.33);
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-well-app:hover > .overview-icon,
|
|
||||||
.remove-favorite:hover > .overview-icon,
|
|
||||||
.search-result-content:hover > .overview-icon {
|
|
||||||
background-color: rgba(255,255,255,0.1);
|
|
||||||
text-shadow: black 0px 2px 2px;
|
|
||||||
transition-duration: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact:focus,
|
|
||||||
.app-well-app:focus > .overview-icon,
|
|
||||||
.search-result-content:focus > .overview-icon {
|
|
||||||
border: 1px solid #cccccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-well-menu {
|
|
||||||
font-size: 9pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LookingGlass */
|
/* LookingGlass */
|
||||||
|
|
||||||
#LookingGlassDialog
|
#LookingGlassDialog
|
||||||
@@ -834,8 +860,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding: 4px;
|
padding: 4px;
|
||||||
border: 2px solid grey;
|
border: 2px solid grey;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog > #Toolbar
|
#LookingGlassDialog > #Toolbar
|
||||||
@@ -875,14 +899,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-dialog StLabel
|
|
||||||
{
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-dialog StEntry
|
.lg-dialog StEntry
|
||||||
{
|
{
|
||||||
color: #ffffff;
|
|
||||||
selection-background-color: #bbbbbb;
|
selection-background-color: #bbbbbb;
|
||||||
selected-color: #333333;
|
selected-color: #333333;
|
||||||
}
|
}
|
||||||
@@ -959,7 +977,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
border: 2px solid grey;
|
border: 2px solid grey;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
color: #ffffff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar popup */
|
/* Calendar popup */
|
||||||
@@ -1038,7 +1055,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
|
|
||||||
.datemenu-date-label {
|
.datemenu-date-label {
|
||||||
padding: .4em 1.75em;
|
padding: .4em 1.75em;
|
||||||
font-size: 10.5pt;
|
|
||||||
color: #cccccc;
|
color: #cccccc;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@@ -1185,10 +1201,9 @@ StScrollBar StButton#vhandle:hover
|
|||||||
background-gradient-start: rgba(0,0,0,0.01);
|
background-gradient-start: rgba(0,0,0,0.01);
|
||||||
background-gradient-end: rgba(0,0,0,0.82);
|
background-gradient-end: rgba(0,0,0,0.82);
|
||||||
height: 36px;
|
height: 36px;
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification {
|
.notification {
|
||||||
font-size: 11pt;
|
font-size: 11pt;
|
||||||
border-radius: 10px 10px 0px 0px;
|
border-radius: 10px 10px 0px 0px;
|
||||||
background: rgba(0,0,0,0.8);
|
background: rgba(0,0,0,0.8);
|
||||||
@@ -1198,7 +1213,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
width: 34em;
|
width: 34em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification.multi-line-notification {
|
.notification.multi-line-notification {
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1220,14 +1235,13 @@ StScrollBar StButton#vhandle:hover
|
|||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer #notification {
|
.summary-boxpointer .notification {
|
||||||
border-radius: 9px;
|
border-radius: 9px;
|
||||||
background: rgba(0,0,0,0) !important;
|
background: rgba(0,0,0,0) !important;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer #summary-right-click-menu {
|
.summary-boxpointer #summary-right-click-menu {
|
||||||
font-size: 10.5pt;
|
|
||||||
padding-top: 12px;
|
padding-top: 12px;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
}
|
}
|
||||||
@@ -1238,10 +1252,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#summary-notification-stack-scrollview > .top-shadow, #summary-notification-stack-scrollview > .bottom-shadow {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#summary-notification-stack-scrollview:ltr {
|
#summary-notification-stack-scrollview:ltr {
|
||||||
padding-right: 8px;
|
padding-right: 8px;
|
||||||
}
|
}
|
||||||
@@ -1250,34 +1260,29 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview {
|
.notification-scrollview {
|
||||||
max-height: 10em;
|
max-height: 10em;
|
||||||
-st-vfade-offset: 24px;
|
-st-vfade-offset: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
|
.notification-scrollview:ltr > StScrollBar {
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#notification-scrollview:ltr > StScrollBar {
|
|
||||||
padding-left: 6px;
|
padding-left: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview:rtl > StScrollBar {
|
.notification-scrollview:rtl > StScrollBar {
|
||||||
padding-right: 6px;
|
padding-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-body {
|
.notification-body {
|
||||||
spacing: 5px;
|
spacing: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-actions {
|
.notification-actions {
|
||||||
spacing: 10px;
|
spacing: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-button {
|
.notification-button {
|
||||||
border-radius: 18px;
|
border-radius: 18px;
|
||||||
font-size: 11pt;
|
|
||||||
padding: 4px 42px 5px;
|
padding: 4px 42px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1307,7 +1312,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
.hotplug-notification-item {
|
.hotplug-notification-item {
|
||||||
padding: 2px 10px;
|
padding: 2px 10px;
|
||||||
border-radius: 18px;
|
border-radius: 18px;
|
||||||
font-size: 10.5pt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.hotplug-notification-item:focus {
|
.hotplug-notification-item:focus {
|
||||||
@@ -1400,7 +1404,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification StEntry {
|
.notification StEntry {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: #a8a8a8;
|
color: #a8a8a8;
|
||||||
@@ -1416,7 +1420,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
caret-size: 1px;
|
caret-size: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification StEntry:focus {
|
.notification StEntry:focus {
|
||||||
border: 1px solid #8b8b8b;
|
border: 1px solid #8b8b8b;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
@@ -1450,7 +1454,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button {
|
.summary-source-button {
|
||||||
color: #fff;
|
|
||||||
text-shadow: black 0px 2px 2px;
|
text-shadow: black 0px 2px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1503,8 +1506,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.source-title {
|
.source-title {
|
||||||
font-size: 9pt;
|
|
||||||
font-weight: bold;
|
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1524,9 +1525,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
border: 1px solid rgba(128,128,128,0.40);
|
border: 1px solid rgba(128,128,128,0.40);
|
||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
font-size: 9pt;
|
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.switcher-list-item-container {
|
.switcher-list-item-container {
|
||||||
@@ -1646,12 +1644,20 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Modal Dialogs */
|
/* Modal Dialogs */
|
||||||
|
|
||||||
|
/* Dialog Subject Text Style */
|
||||||
|
.show-processes-dialog-subject,
|
||||||
|
.mount-question-dialog-subject,
|
||||||
|
.end-session-dialog-subject {
|
||||||
|
font-size: 14pt;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
font-size: 12pt;
|
|
||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
||||||
border: 2px solid #868686;
|
border: 2px solid #868686;
|
||||||
color: #babdb6;
|
|
||||||
|
|
||||||
padding-right: 42px;
|
padding-right: 42px;
|
||||||
padding-left: 42px;
|
padding-left: 42px;
|
||||||
@@ -1661,12 +1667,11 @@ StScrollBar StButton#vhandle:hover
|
|||||||
|
|
||||||
.modal-dialog-button-box {
|
.modal-dialog-button-box {
|
||||||
spacing: 21px;
|
spacing: 21px;
|
||||||
|
padding-top: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-dialog-button {
|
.modal-dialog-button {
|
||||||
border-radius: 18px;
|
border-radius: 18px;
|
||||||
font-size: 11pt;
|
|
||||||
color: white;
|
|
||||||
|
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
@@ -1682,15 +1687,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Run Dialog */
|
/* Run Dialog */
|
||||||
.run-dialog-label {
|
|
||||||
font-size: 9pt;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.run-dialog-error-label {
|
|
||||||
font-size: 9pt;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.run-dialog-error-box {
|
.run-dialog-error-box {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
@@ -1698,10 +1694,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.run-dialog-entry {
|
.run-dialog-entry {
|
||||||
font-size: 10.5pt;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
width: 23em;
|
width: 23em;
|
||||||
color: white;
|
|
||||||
selection-background-color: white;
|
selection-background-color: white;
|
||||||
selected-color: black;
|
selected-color: black;
|
||||||
}
|
}
|
||||||
@@ -1729,12 +1723,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-subject {
|
.end-session-dialog-subject {
|
||||||
font-size: 12pt;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #666666;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
padding-bottom: 30px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-subject:rtl {
|
.end-session-dialog-subject:rtl {
|
||||||
@@ -1743,8 +1733,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-description {
|
.end-session-dialog-description {
|
||||||
font-size: 10pt;
|
|
||||||
color: white;
|
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
width: 28em;
|
width: 28em;
|
||||||
}
|
}
|
||||||
@@ -1761,6 +1749,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-shutdown-icon {
|
.end-session-dialog-shutdown-icon {
|
||||||
|
color: #bebebe;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
}
|
}
|
||||||
@@ -1827,9 +1816,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
|
|
||||||
.show-processes-dialog-subject,
|
.show-processes-dialog-subject,
|
||||||
.mount-question-dialog-subject {
|
.mount-question-dialog-subject {
|
||||||
font-size: 12pt;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #666666;
|
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
@@ -1847,8 +1833,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
|
|
||||||
.show-processes-dialog-description,
|
.show-processes-dialog-description,
|
||||||
.mount-question-dialog-description {
|
.mount-question-dialog-description {
|
||||||
font-size: 10pt;
|
|
||||||
color: white;
|
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
width: 28em;
|
width: 28em;
|
||||||
}
|
}
|
||||||
@@ -1920,11 +1904,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
color: #666666;
|
color: #666666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prompt-dialog-description {
|
|
||||||
font-size: 10pt;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-password-label:ltr {
|
.prompt-dialog-password-label:ltr {
|
||||||
padding-right: 0.5em;
|
padding-right: 0.5em;
|
||||||
}
|
}
|
||||||
@@ -1993,6 +1972,10 @@ StScrollBar StButton#vhandle:hover
|
|||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.keyring-dialog-control-table {
|
||||||
|
spacing-rows: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Magnifier */
|
/* Magnifier */
|
||||||
|
|
||||||
.magnifier-zoom-region {
|
.magnifier-zoom-region {
|
||||||
@@ -2057,3 +2040,30 @@ StScrollBar StButton#vhandle:hover
|
|||||||
-arrow-rise: 10px;
|
-arrow-rise: 10px;
|
||||||
-boxpointer-gap: 5px;
|
-boxpointer-gap: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Candidate Window */
|
||||||
|
.candidate-panel {
|
||||||
|
min-width: 100px;
|
||||||
|
padding: .5em;
|
||||||
|
spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-area {
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-label {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-hlabel-content {
|
||||||
|
padding: 0em .5em 0em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-htext-content {
|
||||||
|
padding: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.candidate-vcontent {
|
||||||
|
padding: 0em .5em 0em 0em;
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="64"
|
width="65"
|
||||||
height="22"
|
height="22"
|
||||||
id="svg3273"
|
id="svg3273"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
@@ -9,7 +9,7 @@
|
|||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="64"
|
width="65"
|
||||||
height="22"
|
height="22"
|
||||||
id="svg3012"
|
id="svg3012"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
@@ -20,7 +20,6 @@
|
|||||||
<title>Abstract classes and Interfaces</title>
|
<title>Abstract classes and Interfaces</title>
|
||||||
<xi:include href="xml/st-widget.xml"/>
|
<xi:include href="xml/st-widget.xml"/>
|
||||||
<xi:include href="xml/st-widget-accessible.xml"/>
|
<xi:include href="xml/st-widget-accessible.xml"/>
|
||||||
<xi:include href="xml/st-container.xml"/>
|
|
||||||
<xi:include href="xml/st-scrollable.xml"/>
|
<xi:include href="xml/st-scrollable.xml"/>
|
||||||
</chapter>
|
</chapter>
|
||||||
<chapter id="widgets">
|
<chapter id="widgets">
|
||||||
@@ -35,7 +34,6 @@
|
|||||||
<title>Containers</title>
|
<title>Containers</title>
|
||||||
<xi:include href="xml/st-bin.xml"/>
|
<xi:include href="xml/st-bin.xml"/>
|
||||||
<xi:include href="xml/st-box-layout.xml"/>
|
<xi:include href="xml/st-box-layout.xml"/>
|
||||||
<xi:include href="xml/st-group.xml"/>
|
|
||||||
<xi:include href="xml/st-scroll-view.xml"/>
|
<xi:include href="xml/st-scroll-view.xml"/>
|
||||||
<xi:include href="xml/st-table.xml"/>
|
<xi:include href="xml/st-table.xml"/>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|||||||
@@ -66,4 +66,11 @@ its dependencies to build from tarballs.</description>
|
|||||||
<gnome:userid>marinaz</gnome:userid>
|
<gnome:userid>marinaz</gnome:userid>
|
||||||
</foaf:Person>
|
</foaf:Person>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
|
<maintainer>
|
||||||
|
<foaf:Person>
|
||||||
|
<foaf:name>Florian Müllner</foaf:name>
|
||||||
|
<foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" />
|
||||||
|
<gnome:userid>fmuellner</gnome:userid>
|
||||||
|
</foaf:Person>
|
||||||
|
</maintainer>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/flashspot.js \
|
ui/flashspot.js \
|
||||||
ui/iconGrid.js \
|
ui/iconGrid.js \
|
||||||
ui/keyboard.js \
|
ui/keyboard.js \
|
||||||
|
ui/keyringPrompt.js \
|
||||||
ui/layout.js \
|
ui/layout.js \
|
||||||
ui/lightbox.js \
|
ui/lightbox.js \
|
||||||
ui/link.js \
|
ui/link.js \
|
||||||
@@ -83,6 +84,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/shellDBus.js \
|
ui/shellDBus.js \
|
||||||
ui/statusIconDispatcher.js \
|
ui/statusIconDispatcher.js \
|
||||||
ui/status/accessibility.js \
|
ui/status/accessibility.js \
|
||||||
|
ui/status/candidatePanel.js \
|
||||||
ui/status/keyboard.js \
|
ui/status/keyboard.js \
|
||||||
ui/status/network.js \
|
ui/status/network.js \
|
||||||
ui/status/power.js \
|
ui/status/power.js \
|
||||||
|
|||||||
@@ -11,10 +11,17 @@ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
|
|||||||
</method>
|
</method>
|
||||||
</interface>;
|
</interface>;
|
||||||
|
|
||||||
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
|
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
|
||||||
|
|
||||||
function FprintManager() {
|
function FprintManager() {
|
||||||
return new FprintManagerProxy(Gio.DBus.system,
|
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
|
||||||
'net.reactivated.Fprint',
|
g_interface_name: FprintManagerInfo.name,
|
||||||
'/net/reactivated/Fprint/Manager');
|
g_interface_info: FprintManagerInfo,
|
||||||
};
|
g_name: 'net.reactivated.Fprint',
|
||||||
|
g_object_path: '/net/reactivated/Fprint/Manager',
|
||||||
|
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||||
|
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||||
|
|
||||||
|
self.init(null);
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|||||||
@@ -488,6 +488,9 @@ const UserList = new Lang.Class({
|
|||||||
if (user.is_system_account())
|
if (user.is_system_account())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (user.locked)
|
||||||
|
return;
|
||||||
|
|
||||||
let userName = user.get_user_name();
|
let userName = user.get_user_name();
|
||||||
|
|
||||||
if (!userName)
|
if (!userName)
|
||||||
|
|||||||
@@ -33,10 +33,13 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('system-shutdown', null);
|
this.parent('system-shutdown', null);
|
||||||
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
|
||||||
this._systemdLoginManager = new Systemd.SystemdLoginManager();
|
|
||||||
this._upClient = new UPowerGlib.Client();
|
this._upClient = new UPowerGlib.Client();
|
||||||
|
|
||||||
|
if (Systemd.haveSystemd())
|
||||||
|
this._systemdLoginManager = new Systemd.SystemdLoginManager();
|
||||||
|
else
|
||||||
|
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
||||||
|
|
||||||
this._createSubMenu();
|
this._createSubMenu();
|
||||||
|
|
||||||
this._upClient.connect('notify::can-suspend',
|
this._upClient.connect('notify::can-suspend',
|
||||||
@@ -57,10 +60,8 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
if (!this._haveSuspend && !this._haveShutdown && !this._haveRestart)
|
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
||||||
this.actor.hide();
|
this.actor.visible = shouldBeVisible;
|
||||||
else
|
|
||||||
this.actor.show();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveShutdown: function() {
|
_updateHaveShutdown: function() {
|
||||||
@@ -73,11 +74,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveShutdown = false;
|
this._haveShutdown = false;
|
||||||
|
|
||||||
if (this._haveShutdown)
|
this._powerOffItem.actor.visible = this._haveShutdown;
|
||||||
this._powerOffItem.actor.show();
|
|
||||||
else
|
|
||||||
this._powerOffItem.actor.hide();
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
@@ -88,12 +85,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveShutdown = false;
|
this._haveShutdown = false;
|
||||||
|
|
||||||
if (this._haveShutdown) {
|
this._powerOffItem.actor.visible = this._haveShutdown;
|
||||||
this._powerOffItem.actor.show();
|
|
||||||
} else {
|
|
||||||
this._powerOffItem.actor.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -109,11 +101,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveRestart = false;
|
this._haveRestart = false;
|
||||||
|
|
||||||
if (this._haveRestart)
|
this._restartItem.actor.visible = this._haveRestart;
|
||||||
this._restartItem.actor.show();
|
|
||||||
else
|
|
||||||
this._restartItem.actor.hide();
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
@@ -124,12 +112,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveRestart = false;
|
this._haveRestart = false;
|
||||||
|
|
||||||
if (this._haveRestart) {
|
this._restartItem.actor.visible = this._haveRestart;
|
||||||
this._restartItem.actor.show();
|
|
||||||
} else {
|
|
||||||
this._restartItem.actor.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -137,12 +120,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_updateHaveSuspend: function() {
|
_updateHaveSuspend: function() {
|
||||||
this._haveSuspend = this._upClient.get_can_suspend();
|
this._haveSuspend = this._upClient.get_can_suspend();
|
||||||
|
this._suspendItem.actor.visible = this._haveSuspend;
|
||||||
if (this._haveSuspend)
|
|
||||||
this._suspendItem.actor.show();
|
|
||||||
else
|
|
||||||
this._suspendItem.actor.hide();
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -184,11 +184,11 @@ function scanExtensionsInDirectory(callback, dir, type) {
|
|||||||
|
|
||||||
function scanExtensions(callback) {
|
function scanExtensions(callback) {
|
||||||
let systemDataDirs = GLib.get_system_data_dirs();
|
let systemDataDirs = GLib.get_system_data_dirs();
|
||||||
|
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
|
||||||
for (let i = 0; i < systemDataDirs.length; i++) {
|
for (let i = 0; i < systemDataDirs.length; i++) {
|
||||||
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
|
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
|
||||||
let dir = Gio.file_new_for_path(dirPath);
|
let dir = Gio.file_new_for_path(dirPath);
|
||||||
if (dir.query_exists(null))
|
if (dir.query_exists(null))
|
||||||
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
|
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
|
||||||
}
|
}
|
||||||
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const ShellJS = imports.gi.ShellJS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is intended to extend the String object and provide
|
* This function is intended to extend the String object and provide
|
||||||
* an String.format API for string formatting.
|
* an String.format API for string formatting.
|
||||||
@@ -17,11 +19,16 @@ function format() {
|
|||||||
let i = 0;
|
let i = 0;
|
||||||
let args = arguments;
|
let args = arguments;
|
||||||
|
|
||||||
return str.replace(/%([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, widthGroup, precisionGroup, genericGroup) {
|
return str.replace(/%(I+)?([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, flagsGroup, widthGroup, precisionGroup, genericGroup) {
|
||||||
|
|
||||||
if (precisionGroup != '' && genericGroup != 'f')
|
if (precisionGroup != '' && genericGroup != 'f')
|
||||||
throw new Error("Precision can only be specified for 'f'");
|
throw new Error("Precision can only be specified for 'f'");
|
||||||
|
|
||||||
|
let hasAlternativeIntFlag = (flagsGroup.indexOf('I') != -1);
|
||||||
|
|
||||||
|
if (hasAlternativeIntFlag && genericGroup != 'd')
|
||||||
|
throw new Error("Alternative output digits can only be specfied for 'd'");
|
||||||
|
|
||||||
let fillChar = (widthGroup[0] == '0') ? '0' : ' ';
|
let fillChar = (widthGroup[0] == '0') ? '0' : ' ';
|
||||||
let width = parseInt(widthGroup, 10) || 0;
|
let width = parseInt(widthGroup, 10) || 0;
|
||||||
|
|
||||||
@@ -41,7 +48,11 @@ function format() {
|
|||||||
s = args[i++].toString();
|
s = args[i++].toString();
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
s = parseInt(args[i++]).toString();
|
let intV = parseInt(args[i++]);
|
||||||
|
if (hasAlternativeIntFlag)
|
||||||
|
s = ShellJS.format_int_alternative_output(intV);
|
||||||
|
else
|
||||||
|
s = intV.toString();
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
s = parseInt(args[i++]).toString(16);
|
s = parseInt(args[i++]).toString(16);
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ function Presence(initCallback, cancellable) {
|
|||||||
// change at runtime (changes always come in the form
|
// change at runtime (changes always come in the form
|
||||||
// of new inhibitors)
|
// of new inhibitors)
|
||||||
const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
|
const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
|
||||||
<property name="app_id" type="s" access="read" />
|
<method name="GetAppId">
|
||||||
<property name="client_id" type="s" access="read" />
|
<arg type="s" direction="out" />
|
||||||
<property name="reason" type="s" access="read" />
|
</method>
|
||||||
<property name="flags" type="u" access="read" />
|
<method name="GetReason">
|
||||||
<property name="toplevel_xid" type="u" access="read" />
|
<arg type="s" direction="out" />
|
||||||
<property name="cookie" type="u" access="read" />
|
</method>
|
||||||
</interface>;
|
</interface>;
|
||||||
|
|
||||||
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
|
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
|
||||||
|
|||||||
140
js/ui/altTab.js
140
js/ui/altTab.js
@@ -2,12 +2,14 @@
|
|||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gdk = imports.gi.Gdk;
|
const Gdk = imports.gi.Gdk;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
@@ -125,7 +127,7 @@ const AltTabPopup = new Lang.Class({
|
|||||||
if (childBox.x2 > primary.x + primary.width - rightPadding)
|
if (childBox.x2 > primary.x + primary.width - rightPadding)
|
||||||
childBox.x2 = primary.x + primary.width - rightPadding;
|
childBox.x2 = primary.x + primary.width - rightPadding;
|
||||||
childBox.y1 = this._appSwitcher.actor.allocation.y2 + spacing;
|
childBox.y1 = this._appSwitcher.actor.allocation.y2 + spacing;
|
||||||
this._thumbnails.addClones(primary.height - bottomPadding - childBox.y1);
|
this._thumbnails.addClones(primary.y + primary.height - bottomPadding - childBox.y1);
|
||||||
let [childMinHeight, childNaturalHeight] = this._thumbnails.actor.get_preferred_height(-1);
|
let [childMinHeight, childNaturalHeight] = this._thumbnails.actor.get_preferred_height(-1);
|
||||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||||
this._thumbnails.actor.allocate(childBox, flags);
|
this._thumbnails.actor.allocate(childBox, flags);
|
||||||
@@ -139,7 +141,7 @@ const AltTabPopup = new Lang.Class({
|
|||||||
|
|
||||||
let screen = global.screen;
|
let screen = global.screen;
|
||||||
let display = screen.get_display();
|
let display = screen.get_display();
|
||||||
let windows = display.get_tab_list(Meta.TabList.NORMAL, screen,
|
let windows = display.get_tab_list(Meta.TabList.NORMAL_ALL, screen,
|
||||||
screen.get_active_workspace());
|
screen.get_active_workspace());
|
||||||
|
|
||||||
// windows is only the windows on the current workspace. For
|
// windows is only the windows on the current workspace. For
|
||||||
@@ -264,7 +266,7 @@ const AltTabPopup = new Lang.Class({
|
|||||||
|
|
||||||
_keyPressEvent : function(actor, event) {
|
_keyPressEvent : function(actor, event) {
|
||||||
let keysym = event.get_key_symbol();
|
let keysym = event.get_key_symbol();
|
||||||
let event_state = Shell.get_event_state(event);
|
let event_state = event.get_state();
|
||||||
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
|
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
|
||||||
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
|
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
|
||||||
|
|
||||||
@@ -517,6 +519,7 @@ const AltTabPopup = new Lang.Class({
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
this._thumbnails = null;
|
this._thumbnails = null;
|
||||||
|
this._appSwitcher._items[this._currentApp].remove_accessible_state (Atk.StateType.EXPANDED);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createThumbnails : function() {
|
_createThumbnails : function() {
|
||||||
@@ -537,6 +540,8 @@ const AltTabPopup = new Lang.Class({
|
|||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
|
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._appSwitcher._items[this._currentApp].add_accessible_state (Atk.StateType.EXPANDED);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -561,14 +566,14 @@ const SwitcherList = new Lang.Class({
|
|||||||
this._list.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this._list.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
this._list.connect('allocate', Lang.bind(this, this._allocate));
|
this._list.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
|
|
||||||
this._clipBin = new St.Bin({style_class: 'cbin'});
|
this._scrollView = new St.ScrollView({ style_class: 'hfade',
|
||||||
this._clipBin.child = this._list;
|
enable_mouse_scrolling: false });
|
||||||
this.actor.add_actor(this._clipBin);
|
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER);
|
||||||
|
|
||||||
this._leftGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-left', vertical: true});
|
let scrollBox = new St.BoxLayout();
|
||||||
this._rightGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-right', vertical: true});
|
scrollBox.add_actor(this._list);
|
||||||
this.actor.add_actor(this._leftGradient);
|
this._scrollView.add_actor(scrollBox);
|
||||||
this.actor.add_actor(this._rightGradient);
|
this.actor.add_actor(this._scrollView);
|
||||||
|
|
||||||
// Those arrows indicate whether scrolling in one direction is possible
|
// Those arrows indicate whether scrolling in one direction is possible
|
||||||
this._leftArrow = new St.DrawingArea({ style_class: 'switcher-arrow',
|
this._leftArrow = new St.DrawingArea({ style_class: 'switcher-arrow',
|
||||||
@@ -599,21 +604,9 @@ const SwitcherList = new Lang.Class({
|
|||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
let scrollable = this._minSize > box.x2 - box.x1;
|
let scrollable = this._minSize > box.x2 - box.x1;
|
||||||
|
|
||||||
this._clipBin.allocate(box, flags);
|
box.y1 -= this.actor.get_theme_node().get_padding(St.Side.TOP);
|
||||||
|
box.y2 += this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||||
childBox.x1 = 0;
|
this._scrollView.allocate(box, flags);
|
||||||
childBox.y1 = 0;
|
|
||||||
childBox.x2 = this._leftGradient.width;
|
|
||||||
childBox.y2 = this.actor.height;
|
|
||||||
this._leftGradient.allocate(childBox, flags);
|
|
||||||
this._leftGradient.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
|
|
||||||
|
|
||||||
childBox.x1 = (this.actor.allocation.x2 - this.actor.allocation.x1) - this._rightGradient.width;
|
|
||||||
childBox.y1 = 0;
|
|
||||||
childBox.x2 = childBox.x1 + this._rightGradient.width;
|
|
||||||
childBox.y2 = this.actor.height;
|
|
||||||
this._rightGradient.allocate(childBox, flags);
|
|
||||||
this._rightGradient.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
|
|
||||||
|
|
||||||
let arrowWidth = Math.floor(leftPadding / 3);
|
let arrowWidth = Math.floor(leftPadding / 3);
|
||||||
let arrowHeight = arrowWidth * 2;
|
let arrowHeight = arrowWidth * 2;
|
||||||
@@ -622,7 +615,7 @@ const SwitcherList = new Lang.Class({
|
|||||||
childBox.x2 = childBox.x1 + arrowWidth;
|
childBox.x2 = childBox.x1 + arrowWidth;
|
||||||
childBox.y2 = childBox.y1 + arrowHeight;
|
childBox.y2 = childBox.y1 + arrowHeight;
|
||||||
this._leftArrow.allocate(childBox, flags);
|
this._leftArrow.allocate(childBox, flags);
|
||||||
this._leftArrow.opacity = this._leftGradient.opacity;
|
this._leftArrow.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
|
||||||
|
|
||||||
arrowWidth = Math.floor(rightPadding / 3);
|
arrowWidth = Math.floor(rightPadding / 3);
|
||||||
arrowHeight = arrowWidth * 2;
|
arrowHeight = arrowWidth * 2;
|
||||||
@@ -631,7 +624,7 @@ const SwitcherList = new Lang.Class({
|
|||||||
childBox.x2 = childBox.x1 + arrowWidth;
|
childBox.x2 = childBox.x1 + arrowWidth;
|
||||||
childBox.y2 = childBox.y1 + arrowHeight;
|
childBox.y2 = childBox.y1 + arrowHeight;
|
||||||
this._rightArrow.allocate(childBox, flags);
|
this._rightArrow.allocate(childBox, flags);
|
||||||
this._rightArrow.opacity = this._rightGradient.opacity;
|
this._rightArrow.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
addItem : function(item, label) {
|
addItem : function(item, label) {
|
||||||
@@ -648,6 +641,8 @@ const SwitcherList = new Lang.Class({
|
|||||||
bbox.label_actor = label;
|
bbox.label_actor = label;
|
||||||
|
|
||||||
this._items.push(bbox);
|
this._items.push(bbox);
|
||||||
|
|
||||||
|
return bbox;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onItemClicked: function (index) {
|
_onItemClicked: function (index) {
|
||||||
@@ -679,47 +674,66 @@ const SwitcherList = new Lang.Class({
|
|||||||
this._items[this._highlighted].add_style_pseudo_class('selected');
|
this._items[this._highlighted].add_style_pseudo_class('selected');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let adjustment = this._scrollView.hscroll.adjustment;
|
||||||
|
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||||
let [absItemX, absItemY] = this._items[index].get_transformed_position();
|
let [absItemX, absItemY] = this._items[index].get_transformed_position();
|
||||||
let [result, posX, posY] = this.actor.transform_stage_point(absItemX, 0);
|
let [result, posX, posY] = this.actor.transform_stage_point(absItemX, 0);
|
||||||
let [containerWidth, containerHeight] = this.actor.get_transformed_size();
|
let [containerWidth, containerHeight] = this.actor.get_transformed_size();
|
||||||
if (posX + this._items[index].get_width() > containerWidth)
|
if (posX + this._items[index].get_width() > containerWidth)
|
||||||
this._scrollToRight();
|
this._scrollToRight();
|
||||||
else if (posX < 0)
|
else if (this._items[index].allocation.x1 - value < 0)
|
||||||
this._scrollToLeft();
|
this._scrollToLeft();
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_scrollToLeft : function() {
|
_scrollToLeft : function() {
|
||||||
let x = this._items[this._highlighted].allocation.x1;
|
let adjustment = this._scrollView.hscroll.adjustment;
|
||||||
|
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||||
|
|
||||||
|
let item = this._items[this._highlighted];
|
||||||
|
|
||||||
|
if (item.allocation.x1 < value)
|
||||||
|
value = Math.min(0, item.allocation.x1);
|
||||||
|
else if (item.allocation.x2 > value + pageSize)
|
||||||
|
value = Math.max(upper, item.allocation.x2 - pageSize);
|
||||||
|
|
||||||
this._scrollableRight = true;
|
this._scrollableRight = true;
|
||||||
Tweener.addTween(this._list, { anchor_x: x,
|
Tweener.addTween(adjustment,
|
||||||
time: POPUP_SCROLL_TIME,
|
{ value: value,
|
||||||
transition: 'easeOutQuad',
|
time: POPUP_SCROLL_TIME,
|
||||||
onComplete: Lang.bind(this, function () {
|
transition: 'easeOutQuad',
|
||||||
if (this._highlighted == 0) {
|
onComplete: Lang.bind(this, function () {
|
||||||
this._scrollableLeft = false;
|
if (this._highlighted == 0) {
|
||||||
this.actor.queue_relayout();
|
this._scrollableLeft = false;
|
||||||
}
|
this.actor.queue_relayout();
|
||||||
})
|
}
|
||||||
});
|
})
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_scrollToRight : function() {
|
_scrollToRight : function() {
|
||||||
|
let adjustment = this._scrollView.hscroll.adjustment;
|
||||||
|
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||||
|
|
||||||
|
let item = this._items[this._highlighted];
|
||||||
|
|
||||||
|
if (item.allocation.x1 < value)
|
||||||
|
value = Math.max(0, item.allocation.x1);
|
||||||
|
else if (item.allocation.x2 > value + pageSize)
|
||||||
|
value = Math.min(upper, item.allocation.x2 - pageSize);
|
||||||
|
|
||||||
this._scrollableLeft = true;
|
this._scrollableLeft = true;
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
Tweener.addTween(adjustment,
|
||||||
let padding = this.actor.get_theme_node().get_horizontal_padding();
|
{ value: value,
|
||||||
let parentPadding = this.actor.get_parent().get_theme_node().get_horizontal_padding();
|
time: POPUP_SCROLL_TIME,
|
||||||
let x = this._items[this._highlighted].allocation.x2 - monitor.width + padding + parentPadding;
|
transition: 'easeOutQuad',
|
||||||
Tweener.addTween(this._list, { anchor_x: x,
|
onComplete: Lang.bind(this, function () {
|
||||||
time: POPUP_SCROLL_TIME,
|
if (this._highlighted == this._items.length - 1) {
|
||||||
transition: 'easeOutQuad',
|
this._scrollableRight = false;
|
||||||
onComplete: Lang.bind(this, function () {
|
this.actor.queue_relayout();
|
||||||
if (this._highlighted == this._items.length - 1) {
|
}
|
||||||
this._scrollableRight = false;
|
})
|
||||||
this.actor.queue_relayout();
|
});
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_itemActivated: function(n) {
|
_itemActivated: function(n) {
|
||||||
@@ -805,14 +819,6 @@ const SwitcherList = new Lang.Class({
|
|||||||
|
|
||||||
let primary = Main.layoutManager.primaryMonitor;
|
let primary = Main.layoutManager.primaryMonitor;
|
||||||
let parentRightPadding = this.actor.get_parent().get_theme_node().get_padding(St.Side.RIGHT);
|
let parentRightPadding = this.actor.get_parent().get_theme_node().get_padding(St.Side.RIGHT);
|
||||||
if (this.actor.allocation.x2 == primary.x + primary.width - parentRightPadding) {
|
|
||||||
if (this._squareItems)
|
|
||||||
childWidth = childHeight;
|
|
||||||
else {
|
|
||||||
let [childMin, childNat] = children[0].get_preferred_width(childHeight);
|
|
||||||
childWidth = childMin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < children.length; i++) {
|
for (let i = 0; i < children.length; i++) {
|
||||||
if (this._items.indexOf(children[i]) != -1) {
|
if (this._items.indexOf(children[i]) != -1) {
|
||||||
@@ -838,14 +844,6 @@ const SwitcherList = new Lang.Class({
|
|||||||
// we don't allocate it.
|
// we don't allocate it.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
|
||||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
|
||||||
let topPadding = this.actor.get_theme_node().get_padding(St.Side.TOP);
|
|
||||||
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
|
||||||
|
|
||||||
// Clip the area for scrolling
|
|
||||||
this._clipBin.set_clip(0, -topPadding, (this.actor.allocation.x2 - this.actor.allocation.x1) - leftPadding - rightPadding, this.actor.height + bottomPadding);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1025,7 +1023,7 @@ const AppSwitcher = new Lang.Class({
|
|||||||
|
|
||||||
_addIcon : function(appIcon) {
|
_addIcon : function(appIcon) {
|
||||||
this.icons.push(appIcon);
|
this.icons.push(appIcon);
|
||||||
this.addItem(appIcon.actor, appIcon.label);
|
let item = this.addItem(appIcon.actor, appIcon.label);
|
||||||
|
|
||||||
let n = this._arrows.length;
|
let n = this._arrows.length;
|
||||||
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
||||||
@@ -1035,6 +1033,8 @@ const AppSwitcher = new Lang.Class({
|
|||||||
|
|
||||||
if (appIcon.cachedWindows.length == 1)
|
if (appIcon.cachedWindows.length == 1)
|
||||||
arrow.hide();
|
arrow.hide();
|
||||||
|
else
|
||||||
|
item.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const Signals = imports.signals;
|
|||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const AppFavorites = imports.ui.appFavorites;
|
const AppFavorites = imports.ui.appFavorites;
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
@@ -148,7 +149,9 @@ const ViewByCategories = new Lang.Class({
|
|||||||
this._categories = [];
|
this._categories = [];
|
||||||
this._apps = null;
|
this._apps = null;
|
||||||
|
|
||||||
this._categoryBox = new St.BoxLayout({ vertical: true, reactive: true });
|
this._categoryBox = new St.BoxLayout({ vertical: true,
|
||||||
|
reactive: true,
|
||||||
|
accessible_role: Atk.Role.LIST });
|
||||||
this._categoryScroll = new St.ScrollView({ x_fill: false,
|
this._categoryScroll = new St.ScrollView({ x_fill: false,
|
||||||
y_fill: false,
|
y_fill: false,
|
||||||
style_class: 'vfade' });
|
style_class: 'vfade' });
|
||||||
@@ -214,7 +217,8 @@ const ViewByCategories = new Lang.Class({
|
|||||||
let button = new St.Button({ label: GLib.markup_escape_text (name, -1),
|
let button = new St.Button({ label: GLib.markup_escape_text (name, -1),
|
||||||
style_class: 'app-filter',
|
style_class: 'app-filter',
|
||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
can_focus: true });
|
can_focus: true ,
|
||||||
|
accessible_role: Atk.Role.LIST_ITEM });
|
||||||
button.connect('clicked', Lang.bind(this, function() {
|
button.connect('clicked', Lang.bind(this, function() {
|
||||||
this._selectCategory(index);
|
this._selectCategory(index);
|
||||||
}));
|
}));
|
||||||
@@ -339,7 +343,7 @@ const AppSearchProvider = new Lang.Class({
|
|||||||
timestamp: 0 });
|
timestamp: 0 });
|
||||||
|
|
||||||
let event = Clutter.get_current_event();
|
let event = Clutter.get_current_event();
|
||||||
let modifiers = event ? Shell.get_event_state(event) : 0;
|
let modifiers = event ? event.get_state() : 0;
|
||||||
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
|
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
|
||||||
|
|
||||||
if (openNewWindow)
|
if (openNewWindow)
|
||||||
@@ -584,7 +588,7 @@ const AppWellIcon = new Lang.Class({
|
|||||||
|
|
||||||
_onActivate: function (event) {
|
_onActivate: function (event) {
|
||||||
this.emit('launching');
|
this.emit('launching');
|
||||||
let modifiers = Shell.get_event_state(event);
|
let modifiers = event.get_state();
|
||||||
|
|
||||||
if (this._onActivateOverride) {
|
if (this._onActivateOverride) {
|
||||||
this._onActivateOverride(event);
|
this._onActivateOverride(event);
|
||||||
@@ -624,7 +628,7 @@ const AppIconMenu = new Lang.Class({
|
|||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
let side = St.Side.LEFT;
|
let side = St.Side.LEFT;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
side = St.Side.RIGHT;
|
side = St.Side.RIGHT;
|
||||||
|
|
||||||
this.parent(source.actor, 0.5, side);
|
this.parent(source.actor, 0.5, side);
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ const AutomountManager = new Lang.Class({
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
_sessionActive: function() {
|
isSessionActive: function() {
|
||||||
// Return whether the current session is active, using the
|
// Return whether the current session is active, using the
|
||||||
// right mechanism: either systemd if available or ConsoleKit
|
// right mechanism: either systemd if available or ConsoleKit
|
||||||
// as fallback.
|
// as fallback.
|
||||||
@@ -143,7 +143,7 @@ const AutomountManager = new Lang.Class({
|
|||||||
_onDriveConnected: function() {
|
_onDriveConnected: function() {
|
||||||
// if we're not in the current ConsoleKit session,
|
// if we're not in the current ConsoleKit session,
|
||||||
// or screensaver is active, don't play sounds
|
// or screensaver is active, don't play sounds
|
||||||
if (!this._sessionActive())
|
if (!this.isSessionActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._ssProxy.screenSaverActive)
|
if (this._ssProxy.screenSaverActive)
|
||||||
@@ -155,7 +155,7 @@ const AutomountManager = new Lang.Class({
|
|||||||
_onDriveDisconnected: function() {
|
_onDriveDisconnected: function() {
|
||||||
// if we're not in the current ConsoleKit session,
|
// if we're not in the current ConsoleKit session,
|
||||||
// or screensaver is active, don't play sounds
|
// or screensaver is active, don't play sounds
|
||||||
if (!this._sessionActive())
|
if (!this.isSessionActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._ssProxy.screenSaverActive)
|
if (this._ssProxy.screenSaverActive)
|
||||||
@@ -167,7 +167,7 @@ const AutomountManager = new Lang.Class({
|
|||||||
_onDriveEjectButton: function(monitor, drive) {
|
_onDriveEjectButton: function(monitor, drive) {
|
||||||
// TODO: this code path is not tested, as the GVfs volume monitor
|
// TODO: this code path is not tested, as the GVfs volume monitor
|
||||||
// doesn't emit this signal just yet.
|
// doesn't emit this signal just yet.
|
||||||
if (!this._sessionActive())
|
if (!this.isSessionActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// we force stop/eject in this case, so we don't have to pass a
|
// we force stop/eject in this case, so we don't have to pass a
|
||||||
@@ -206,7 +206,7 @@ const AutomountManager = new Lang.Class({
|
|||||||
if (params.checkSession) {
|
if (params.checkSession) {
|
||||||
// if we're not in the current ConsoleKit session,
|
// if we're not in the current ConsoleKit session,
|
||||||
// don't attempt automount
|
// don't attempt automount
|
||||||
if (!this._sessionActive())
|
if (!this.isSessionActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._ssProxy.screenSaverActive) {
|
if (this._ssProxy.screenSaverActive) {
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ const AutorunManager = new Lang.Class({
|
|||||||
_onMountAdded: function(monitor, mount) {
|
_onMountAdded: function(monitor, mount) {
|
||||||
// don't do anything if our session is not the currently
|
// don't do anything if our session is not the currently
|
||||||
// active one
|
// active one
|
||||||
if (!Main.automountManager.ckListener.sessionActive)
|
if (!Main.automountManager.isSessionActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
||||||
|
|||||||
@@ -45,6 +45,21 @@ const BoxPointer = new Lang.Class({
|
|||||||
this._xPosition = 0;
|
this._xPosition = 0;
|
||||||
this._yPosition = 0;
|
this._yPosition = 0;
|
||||||
this._sourceAlignment = 0.5;
|
this._sourceAlignment = 0.5;
|
||||||
|
this._capturedEventId = 0;
|
||||||
|
this._muteInput();
|
||||||
|
},
|
||||||
|
|
||||||
|
_muteInput: function() {
|
||||||
|
if (this._capturedEventId == 0)
|
||||||
|
this._capturedEventId = this.actor.connect('captured-event',
|
||||||
|
function() { return true; });
|
||||||
|
},
|
||||||
|
|
||||||
|
_unmuteInput: function() {
|
||||||
|
if (this._capturedEventId != 0) {
|
||||||
|
this.actor.disconnect(this._capturedEventId);
|
||||||
|
this._capturedEventId = 0;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function(animate, onComplete) {
|
show: function(animate, onComplete) {
|
||||||
@@ -75,7 +90,11 @@ const BoxPointer = new Lang.Class({
|
|||||||
xOffset: 0,
|
xOffset: 0,
|
||||||
yOffset: 0,
|
yOffset: 0,
|
||||||
transition: 'linear',
|
transition: 'linear',
|
||||||
onComplete: onComplete,
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this._unmuteInput();
|
||||||
|
if (onComplete)
|
||||||
|
onComplete();
|
||||||
|
}),
|
||||||
time: POPUP_ANIMATION_TIME });
|
time: POPUP_ANIMATION_TIME });
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -102,6 +121,8 @@ const BoxPointer = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._muteInput();
|
||||||
|
|
||||||
Tweener.addTween(this, { opacity: 0,
|
Tweener.addTween(this, { opacity: 0,
|
||||||
xOffset: xOffset,
|
xOffset: xOffset,
|
||||||
yOffset: yOffset,
|
yOffset: yOffset,
|
||||||
|
|||||||
@@ -42,6 +42,12 @@ const CheckBoxContainer = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||||
|
/* FIXME: StBoxlayout currently does not handle
|
||||||
|
height-for-width children correctly, so hard-code
|
||||||
|
two lines for the label until that problem is fixed.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=672543 */
|
||||||
|
/*
|
||||||
let [minBoxHeight, natBoxHeight] =
|
let [minBoxHeight, natBoxHeight] =
|
||||||
this._box.get_preferred_height(forWidth);
|
this._box.get_preferred_height(forWidth);
|
||||||
let [minLabelHeight, natLabelHeight] =
|
let [minLabelHeight, natLabelHeight] =
|
||||||
@@ -49,6 +55,14 @@ const CheckBoxContainer = new Lang.Class({
|
|||||||
|
|
||||||
alloc.min_size = Math.max(minBoxHeight, minLabelHeight);
|
alloc.min_size = Math.max(minBoxHeight, minLabelHeight);
|
||||||
alloc.natural_size = Math.max(natBoxHeight, natLabelHeight);
|
alloc.natural_size = Math.max(natBoxHeight, natLabelHeight);
|
||||||
|
*/
|
||||||
|
let [minBoxHeight, natBoxHeight] =
|
||||||
|
this._box.get_preferred_height(-1);
|
||||||
|
let [minLabelHeight, natLabelHeight] =
|
||||||
|
this.label.get_preferred_height(-1);
|
||||||
|
|
||||||
|
alloc.min_size = Math.max(minBoxHeight, 2 * minLabelHeight);
|
||||||
|
alloc.natural_size = Math.max(natBoxHeight, 2 * natLabelHeight);
|
||||||
},
|
},
|
||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
@@ -93,5 +107,9 @@ const CheckBox = new Lang.Class({
|
|||||||
|
|
||||||
setLabel: function(label) {
|
setLabel: function(label) {
|
||||||
this._container.label.set_text(label);
|
this._container.label.set_text(label);
|
||||||
|
},
|
||||||
|
|
||||||
|
getLabelActor: function() {
|
||||||
|
return this._container.label;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const Lang = imports.lang;
|
|||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
const IconGrid = imports.ui.iconGrid;
|
const IconGrid = imports.ui.iconGrid;
|
||||||
@@ -29,7 +30,9 @@ const Contact = new Lang.Class({
|
|||||||
|
|
||||||
this.actor = new St.Bin({ style_class: 'contact',
|
this.actor = new St.Bin({ style_class: 'contact',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
track_hover: true });
|
can_focus: true,
|
||||||
|
track_hover: true,
|
||||||
|
accessible_role: Atk.Role.PUSH_BUTTON });
|
||||||
|
|
||||||
let content = new St.BoxLayout( { style_class: 'contact-content',
|
let content = new St.BoxLayout( { style_class: 'contact-content',
|
||||||
vertical: false });
|
vertical: false });
|
||||||
@@ -68,6 +71,8 @@ const Contact = new Lang.Class({
|
|||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
this.actor.label_actor = aliasLabel;
|
||||||
|
|
||||||
let presence = this._createPresence(this.individual.presence_type);
|
let presence = this._createPresence(this.individual.presence_type);
|
||||||
details.add(presence, { x_fill: false,
|
details.add(presence, { x_fill: false,
|
||||||
y_fill: true,
|
y_fill: true,
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ const CtrlAltTabPopup = new Lang.Class({
|
|||||||
|
|
||||||
_keyPressEvent : function(actor, event) {
|
_keyPressEvent : function(actor, event) {
|
||||||
let keysym = event.get_key_symbol();
|
let keysym = event.get_key_symbol();
|
||||||
let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK);
|
let shift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK);
|
||||||
if (shift && keysym == Clutter.KEY_Tab)
|
if (shift && keysym == Clutter.KEY_Tab)
|
||||||
keysym = Clutter.ISO_Left_Tab;
|
keysym = Clutter.ISO_Left_Tab;
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ const DashItemContainer = new Lang.Class({
|
|||||||
Lang.bind(this, this._allocate));
|
Lang.bind(this, this._allocate));
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
|
|
||||||
this._label = null;
|
this.label = null;
|
||||||
|
|
||||||
this.child = null;
|
this.child = null;
|
||||||
this._childScale = 1;
|
this._childScale = 1;
|
||||||
@@ -91,32 +91,32 @@ const DashItemContainer = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
showLabel: function() {
|
showLabel: function() {
|
||||||
if (this._label == null)
|
if (this.label == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._label.opacity = 0;
|
this.label.opacity = 0;
|
||||||
this._label.show();
|
this.label.show();
|
||||||
|
|
||||||
let [stageX, stageY] = this.actor.get_transformed_position();
|
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
||||||
|
|
||||||
let labelHeight = this._label.get_height();
|
let labelHeight = this.label.get_height();
|
||||||
let yOffset = Math.floor((itemHeight - labelHeight) / 2)
|
let yOffset = Math.floor((itemHeight - labelHeight) / 2)
|
||||||
|
|
||||||
let y = stageY + yOffset;
|
let y = stageY + yOffset;
|
||||||
|
|
||||||
let node = this._label.get_theme_node();
|
let node = this.label.get_theme_node();
|
||||||
let xOffset = node.get_length('-x-offset');
|
let xOffset = node.get_length('-x-offset');
|
||||||
|
|
||||||
let x;
|
let x;
|
||||||
if (St.Widget.get_default_direction () == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
x = stageX - this._label.get_width() - xOffset;
|
x = stageX - this.label.get_width() - xOffset;
|
||||||
else
|
else
|
||||||
x = stageX + this.actor.get_width() + xOffset;
|
x = stageX + this.actor.get_width() + xOffset;
|
||||||
|
|
||||||
this._label.set_position(x, y);
|
this.label.set_position(x, y);
|
||||||
Tweener.addTween(this._label,
|
Tweener.addTween(this.label,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
time: DASH_ITEM_LABEL_SHOW_TIME,
|
time: DASH_ITEM_LABEL_SHOW_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
@@ -124,22 +124,22 @@ const DashItemContainer = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setLabelText: function(text) {
|
setLabelText: function(text) {
|
||||||
if (this._label == null)
|
if (this.label == null)
|
||||||
this._label = new St.Label({ style_class: 'dash-label'});
|
this.label = new St.Label({ style_class: 'dash-label'});
|
||||||
|
|
||||||
this._label.set_text(text);
|
this.label.set_text(text);
|
||||||
Main.layoutManager.addChrome(this._label);
|
Main.layoutManager.addChrome(this.label);
|
||||||
this._label.hide();
|
this.label.hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
hideLabel: function () {
|
hideLabel: function () {
|
||||||
this._label.opacity = 255;
|
this.label.opacity = 255;
|
||||||
Tweener.addTween(this._label,
|
Tweener.addTween(this.label,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: DASH_ITEM_LABEL_HIDE_TIME,
|
time: DASH_ITEM_LABEL_HIDE_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
this._label.hide();
|
this.label.hide();
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -168,7 +168,17 @@ const DashItemContainer = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
if (this.label)
|
||||||
|
this.label.destroy();
|
||||||
|
|
||||||
|
this.actor.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
animateOutAndDestroy: function() {
|
animateOutAndDestroy: function() {
|
||||||
|
if (this.label)
|
||||||
|
this.label.destroy();
|
||||||
|
|
||||||
if (this.child == null) {
|
if (this.child == null) {
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
return;
|
return;
|
||||||
@@ -387,6 +397,7 @@ const Dash = new Lang.Class({
|
|||||||
let srcIsFavorite = (id in favorites);
|
let srcIsFavorite = (id in favorites);
|
||||||
|
|
||||||
if (srcIsFavorite &&
|
if (srcIsFavorite &&
|
||||||
|
app.get_state() != Shell.AppState.RUNNING &&
|
||||||
dragEvent.source.actor &&
|
dragEvent.source.actor &&
|
||||||
this.actor.contains (dragEvent.source.actor) &&
|
this.actor.contains (dragEvent.source.actor) &&
|
||||||
this._favRemoveTarget == null) {
|
this._favRemoveTarget == null) {
|
||||||
@@ -439,6 +450,9 @@ const Dash = new Lang.Class({
|
|||||||
item.setChild(display.actor);
|
item.setChild(display.actor);
|
||||||
|
|
||||||
item.setLabelText(app.get_name());
|
item.setLabelText(app.get_name());
|
||||||
|
// Override default AppWellIcon label_actor
|
||||||
|
display.actor.label_actor = item.label;
|
||||||
|
|
||||||
|
|
||||||
display.icon.setIconSize(this.iconSize);
|
display.icon.setIconSize(this.iconSize);
|
||||||
display.actor.connect('notify::hover',
|
display.actor.connect('notify::hover',
|
||||||
@@ -687,7 +701,7 @@ const Dash = new Lang.Class({
|
|||||||
if (Main.overview.visible)
|
if (Main.overview.visible)
|
||||||
item.animateOutAndDestroy();
|
item.animateOutAndDestroy();
|
||||||
else
|
else
|
||||||
item.actor.destroy();
|
item.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
this._adjustIconSize();
|
this._adjustIconSize();
|
||||||
@@ -743,20 +757,10 @@ const Dash = new Lang.Class({
|
|||||||
numChildren--;
|
numChildren--;
|
||||||
}
|
}
|
||||||
|
|
||||||
let pos = Math.round(y * numChildren / boxHeight);
|
let pos = Math.floor(y * numChildren / boxHeight);
|
||||||
|
|
||||||
if (pos != this._dragPlaceholderPos && pos <= numFavorites) {
|
if (pos != this._dragPlaceholderPos && pos <= numFavorites && this._animatingPlaceholdersCount == 0) {
|
||||||
if (this._animatingPlaceholdersCount > 0) {
|
this._dragPlaceholderPos = pos;
|
||||||
let appChildren = children.filter(function(actor) {
|
|
||||||
return actor._delegate &&
|
|
||||||
actor._delegate.child &&
|
|
||||||
actor._delegate.child._delegate &&
|
|
||||||
actor._delegate.child._delegate.app;
|
|
||||||
});
|
|
||||||
this._dragPlaceholderPos = children.indexOf(appChildren[pos]);
|
|
||||||
} else {
|
|
||||||
this._dragPlaceholderPos = pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't allow positioning before or after self
|
// Don't allow positioning before or after self
|
||||||
if (favPos != -1 && (pos == favPos || pos == favPos + 1)) {
|
if (favPos != -1 && (pos == favPos || pos == favPos + 1)) {
|
||||||
@@ -793,6 +797,14 @@ const Dash = new Lang.Class({
|
|||||||
this._dragPlaceholder.animateIn();
|
this._dragPlaceholder.animateIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove the drag placeholder if we are not in the
|
||||||
|
// "favorites zone"
|
||||||
|
if (pos > numFavorites && this._dragPlaceholder) {
|
||||||
|
this._clearDragPlaceholder();
|
||||||
|
}
|
||||||
|
if (!this._dragPlaceholder)
|
||||||
|
return DND.DragMotionResult.NO_DROP;
|
||||||
|
|
||||||
let srcIsFavorite = (favPos != -1);
|
let srcIsFavorite = (favPos != -1);
|
||||||
|
|
||||||
if (srcIsFavorite)
|
if (srcIsFavorite)
|
||||||
@@ -835,6 +847,11 @@ const Dash = new Lang.Class({
|
|||||||
favPos++;
|
favPos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No drag placeholder means we don't wan't to favorite the app
|
||||||
|
// and we are dragging it to its original position
|
||||||
|
if (!this._dragPlaceholder)
|
||||||
|
return true;
|
||||||
|
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
let appFavorites = AppFavorites.getAppFavorites();
|
let appFavorites = AppFavorites.getAppFavorites();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const Cairo = imports.cairo;
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
@@ -52,10 +53,15 @@ const DateMenuButton = new Lang.Class({
|
|||||||
let vbox;
|
let vbox;
|
||||||
|
|
||||||
let menuAlignment = 0.25;
|
let menuAlignment = 0.25;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
menuAlignment = 1.0 - menuAlignment;
|
menuAlignment = 1.0 - menuAlignment;
|
||||||
this.parent(menuAlignment);
|
this.parent(menuAlignment);
|
||||||
|
|
||||||
|
// At this moment calendar menu is not keyboard navigable at
|
||||||
|
// all (so not accessible), so it doesn't make sense to set as
|
||||||
|
// role ATK_ROLE_MENU like other elements of the panel.
|
||||||
|
this.actor.accessible_role = Atk.Role.LABEL;
|
||||||
|
|
||||||
this._clock = new St.Label();
|
this._clock = new St.Label();
|
||||||
this.actor.add_actor(this._clock);
|
this.actor.add_actor(this._clock);
|
||||||
|
|
||||||
|
|||||||
24
js/ui/dnd.js
24
js/ui/dnd.js
@@ -120,13 +120,7 @@ const _Draggable = new Lang.Class({
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._buttonDown = true;
|
this._buttonDown = true;
|
||||||
// special case St.Button: grabbing the pointer would mess up the
|
this._grabActor();
|
||||||
// internal state, so we start the drag manually on hover change
|
|
||||||
if (this.actor instanceof St.Button)
|
|
||||||
this.actor.connect('notify::hover',
|
|
||||||
Lang.bind(this, this._onButtonHoverChanged));
|
|
||||||
else
|
|
||||||
this._grabActor();
|
|
||||||
|
|
||||||
let [stageX, stageY] = event.get_coords();
|
let [stageX, stageY] = event.get_coords();
|
||||||
this._dragStartX = stageX;
|
this._dragStartX = stageX;
|
||||||
@@ -135,15 +129,6 @@ const _Draggable = new Lang.Class({
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onButtonHoverChanged: function(button) {
|
|
||||||
if (button.hover || !button.pressed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
button.fake_release();
|
|
||||||
this.startDrag(this._dragStartX, this._dragStartY,
|
|
||||||
global.get_current_time());
|
|
||||||
},
|
|
||||||
|
|
||||||
_grabActor: function() {
|
_grabActor: function() {
|
||||||
Clutter.grab_pointer(this.actor);
|
Clutter.grab_pointer(this.actor);
|
||||||
this._onEventId = this.actor.connect('event',
|
this._onEventId = this.actor.connect('event',
|
||||||
@@ -232,6 +217,13 @@ const _Draggable = new Lang.Class({
|
|||||||
currentDraggable = this;
|
currentDraggable = this;
|
||||||
this._dragInProgress = true;
|
this._dragInProgress = true;
|
||||||
|
|
||||||
|
// Special-case St.Button: the pointer grab messes with the internal
|
||||||
|
// state, so force a reset to a reasonable state here
|
||||||
|
if (this.actor instanceof St.Button) {
|
||||||
|
this.actor.fake_release();
|
||||||
|
this.actor.hover = false;
|
||||||
|
}
|
||||||
|
|
||||||
this.emit('drag-begin', time);
|
this.emit('drag-begin', time);
|
||||||
if (this._onEventId)
|
if (this._onEventId)
|
||||||
this._ungrabActor();
|
this._ungrabActor();
|
||||||
|
|||||||
@@ -116,30 +116,12 @@ const DialogContent = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function findAppFromInhibitor(inhibitor) {
|
function findAppFromInhibitor(inhibitor) {
|
||||||
let desktopFile = inhibitor.app_id;
|
let [desktopFile] = inhibitor.GetAppIdSync();
|
||||||
|
|
||||||
if (!GLib.str_has_suffix(desktopFile, '.desktop'))
|
if (!GLib.str_has_suffix(desktopFile, '.desktop'))
|
||||||
desktopFile += '.desktop';
|
desktopFile += '.desktop';
|
||||||
|
|
||||||
let candidateDesktopFiles = [];
|
return Shell.AppSystem.get_default().lookup_heuristic_basename(desktopFile);
|
||||||
|
|
||||||
candidateDesktopFiles.push(desktopFile);
|
|
||||||
candidateDesktopFiles.push('gnome-' + desktopFile);
|
|
||||||
|
|
||||||
let appSystem = Shell.AppSystem.get_default();
|
|
||||||
let app = null;
|
|
||||||
for (let i = 0; i < candidateDesktopFiles.length; i++) {
|
|
||||||
try {
|
|
||||||
app = appSystem.lookup_app(candidateDesktopFiles[i]);
|
|
||||||
|
|
||||||
if (app)
|
|
||||||
break;
|
|
||||||
} catch(e) {
|
|
||||||
// ignore errors
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return app;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ListItem = new Lang.Class({
|
const ListItem = new Lang.Class({
|
||||||
@@ -482,7 +464,8 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
let app = findAppFromInhibitor(inhibitor);
|
let app = findAppFromInhibitor(inhibitor);
|
||||||
|
|
||||||
if (app) {
|
if (app) {
|
||||||
let item = new ListItem(app, inhibitor.reason);
|
let [reason] = inhibitor.GetReasonSync();
|
||||||
|
let item = new ListItem(app, reason);
|
||||||
item.connect('activate',
|
item.connect('activate',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this.close(global.get_current_time());
|
this.close(global.get_current_time());
|
||||||
@@ -505,7 +488,7 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._type = type;
|
this._type = type;
|
||||||
|
|
||||||
if (!(this._type in DialogContent)) {
|
if (!(this._type in DialogContent)) {
|
||||||
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
|
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
|
||||||
"Unknown dialog type requested");
|
"Unknown dialog type requested");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -521,7 +504,7 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._updateButtons();
|
this._updateButtons();
|
||||||
|
|
||||||
if (!this.open(timestamp)) {
|
if (!this.open(timestamp)) {
|
||||||
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
|
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
|
||||||
"Cannot grab pointer and keyboard");
|
"Cannot grab pointer and keyboard");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,20 +39,23 @@ function _patchContainerClass(containerClass) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _makeLoggingFunc(func) {
|
||||||
|
return function() {
|
||||||
|
return func([].join.call(arguments, ', '));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
// Add some bindings to the global JS namespace; (gjs keeps the web
|
// Add some bindings to the global JS namespace; (gjs keeps the web
|
||||||
// browser convention of having that namespace be called 'window'.)
|
// browser convention of having that namespace be called 'window'.)
|
||||||
window.global = Shell.Global.get();
|
window.global = Shell.Global.get();
|
||||||
|
|
||||||
|
window.log = _makeLoggingFunc(window.log);
|
||||||
|
|
||||||
window._ = Gettext.gettext;
|
window._ = Gettext.gettext;
|
||||||
window.C_ = Gettext.pgettext;
|
window.C_ = Gettext.pgettext;
|
||||||
window.ngettext = Gettext.ngettext;
|
window.ngettext = Gettext.ngettext;
|
||||||
|
|
||||||
// Set the default direction for St widgets (this needs to be done before any use of St)
|
|
||||||
if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) {
|
|
||||||
St.Widget.set_default_direction(St.TextDirection.RTL);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Miscellaneous monkeypatching
|
// Miscellaneous monkeypatching
|
||||||
_patchContainerClass(St.BoxLayout);
|
_patchContainerClass(St.BoxLayout);
|
||||||
_patchContainerClass(St.Table);
|
_patchContainerClass(St.Table);
|
||||||
@@ -64,10 +67,14 @@ function init() {
|
|||||||
let origToString = Object.prototype.toString;
|
let origToString = Object.prototype.toString;
|
||||||
Object.prototype.toString = function() {
|
Object.prototype.toString = function() {
|
||||||
let base = origToString.call(this);
|
let base = origToString.call(this);
|
||||||
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
try {
|
||||||
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
||||||
else
|
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
||||||
|
else
|
||||||
|
return base;
|
||||||
|
} catch(e) {
|
||||||
return base;
|
return base;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
|
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
|
||||||
|
|||||||
@@ -103,8 +103,6 @@ function uninstallExtensionFromUUID(uuid) {
|
|||||||
_signals.emit('extension-state-changed', extension);
|
_signals.emit('extension-state-changed', extension);
|
||||||
|
|
||||||
delete ExtensionUtils.extensions[uuid];
|
delete ExtensionUtils.extensions[uuid];
|
||||||
delete extensionStateObjs[uuid];
|
|
||||||
delete errors[uuid];
|
|
||||||
|
|
||||||
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
|
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
|
||||||
|
|
||||||
@@ -251,7 +249,8 @@ function loadExtension(dir, type, enabled) {
|
|||||||
let extension;
|
let extension;
|
||||||
|
|
||||||
if (ExtensionUtils.extensions[uuid] != undefined) {
|
if (ExtensionUtils.extensions[uuid] != undefined) {
|
||||||
throw new Error('extension already loaded');
|
global.logError('Extension "%s" is already loaded'.format(uuid));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -430,13 +429,11 @@ const InstallExtensionDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onInstallButtonPressed: function(button, event) {
|
_onInstallButtonPressed: function(button, event) {
|
||||||
let extension = { uuid: this._uuid,
|
let state = { uuid: this._uuid,
|
||||||
state: ExtensionState.DOWNLOADING,
|
state: ExtensionState.DOWNLOADING,
|
||||||
error: '' };
|
error: '' };
|
||||||
|
|
||||||
ExtensionUtils.extensions[this._uuid] = extension;
|
_signals.emit('extension-state-changed', state);
|
||||||
|
|
||||||
_signals.emit('extension-state-changed', extension);
|
|
||||||
|
|
||||||
let params = { version_tag: this._version_tag,
|
let params = { version_tag: this._version_tag,
|
||||||
shell_version: Config.PACKAGE_VERSION,
|
shell_version: Config.PACKAGE_VERSION,
|
||||||
|
|||||||
@@ -146,11 +146,6 @@ const BaseIcon = new Lang.Class({
|
|||||||
size = found ? len : ICON_SIZE;
|
size = found ? len : ICON_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't create icons unnecessarily
|
|
||||||
if (size == this.iconSize &&
|
|
||||||
this._iconBin.child)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._createIconTexture(size);
|
this._createIconTexture(size);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -251,7 +246,7 @@ const IconGrid = new Lang.Class({
|
|||||||
let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
|
let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
|
||||||
|
|
||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
let _x = box.x2 - (x + width);
|
let _x = box.x2 - (x + width);
|
||||||
childBox.x1 = Math.floor(_x - childXSpacing);
|
childBox.x1 = Math.floor(_x - childXSpacing);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -269,6 +269,11 @@ const Keyboard = new Lang.Class({
|
|||||||
|
|
||||||
this._addKeys();
|
this._addKeys();
|
||||||
|
|
||||||
|
// Keys should be layout according to the group, not the
|
||||||
|
// locale; as Caribou already provides the expected layout,
|
||||||
|
// this means enforcing LTR for all locales.
|
||||||
|
this.actor.text_direction = Clutter.TextDirection.LTR;
|
||||||
|
|
||||||
this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged));
|
this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged));
|
||||||
this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
|
this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
|
||||||
|
|
||||||
|
|||||||
207
js/ui/keyringPrompt.js
Normal file
207
js/ui/keyringPrompt.js
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Gcr = imports.gi.Gcr;
|
||||||
|
|
||||||
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
|
const CheckBox = imports.ui.checkBox;
|
||||||
|
|
||||||
|
let prompter = null;
|
||||||
|
|
||||||
|
const KeyringDialog = new Lang.Class({
|
||||||
|
Name: 'KeyringDialog',
|
||||||
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.parent({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
|
this.prompt = new Shell.KeyringPrompt();
|
||||||
|
this.prompt.connect('show-password', Lang.bind(this, this._onShowPassword));
|
||||||
|
this.prompt.connect('show-confirm', Lang.bind(this, this._onShowConfirm));
|
||||||
|
this.prompt.connect('hide-prompt', Lang.bind(this, this._onHidePrompt));
|
||||||
|
|
||||||
|
let mainContentBox = new St.BoxLayout({ style_class: 'prompt-dialog-main-layout',
|
||||||
|
vertical: false });
|
||||||
|
this.contentLayout.add(mainContentBox);
|
||||||
|
|
||||||
|
let icon = new St.Icon({ icon_name: 'dialog-password-symbolic' });
|
||||||
|
mainContentBox.add(icon,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.END,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
this._messageBox = new St.BoxLayout({ style_class: 'prompt-dialog-message-layout',
|
||||||
|
vertical: true });
|
||||||
|
mainContentBox.add(this._messageBox,
|
||||||
|
{ y_align: St.Align.START, expand: true, x_fill: true, y_fill: true });
|
||||||
|
|
||||||
|
let subject = new St.Label({ style_class: 'prompt-dialog-headline' });
|
||||||
|
this.prompt.bind_property('message', subject, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
|
this._messageBox.add(subject,
|
||||||
|
{ y_fill: false,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
let description = new St.Label({ style_class: 'prompt-dialog-description' });
|
||||||
|
description.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
description.clutter_text.line_wrap = true;
|
||||||
|
this.prompt.bind_property('description', description, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
this._messageBox.add(description,
|
||||||
|
{ y_fill: true,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
this._controlTable = null;
|
||||||
|
|
||||||
|
let buttons = [{ label: '',
|
||||||
|
action: Lang.bind(this, this._onCancelButton),
|
||||||
|
key: Clutter.Escape
|
||||||
|
},
|
||||||
|
{ label: '',
|
||||||
|
action: Lang.bind(this, this._onContinueButton)
|
||||||
|
}]
|
||||||
|
|
||||||
|
this.setButtons(buttons);
|
||||||
|
this._cancelButton = buttons[0].button;
|
||||||
|
this._continueButton = buttons[1].button;
|
||||||
|
|
||||||
|
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
},
|
||||||
|
|
||||||
|
_buildControlTable: function() {
|
||||||
|
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
|
||||||
|
let row = 0;
|
||||||
|
|
||||||
|
if (this.prompt.password_visible) {
|
||||||
|
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
|
||||||
|
label.set_text(_("Password:"));
|
||||||
|
table.add(label, { row: row, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||||
|
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
|
text: '',
|
||||||
|
can_focus: true});
|
||||||
|
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
|
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||||
|
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
||||||
|
table.add(this._passwordEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
|
||||||
|
row++;
|
||||||
|
} else {
|
||||||
|
this._passwordEntry = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.prompt.confirm_visible) {
|
||||||
|
var label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
|
||||||
|
label.set_text(_("Type again:"));
|
||||||
|
table.add(label, { row: row, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||||
|
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
|
text: '',
|
||||||
|
can_focus: true});
|
||||||
|
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
|
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
|
||||||
|
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
|
||||||
|
table.add(this._confirmEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
|
||||||
|
row++;
|
||||||
|
} else {
|
||||||
|
this._confirmEntry = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.prompt.set_password_actor(this._passwordEntry ? this._passwordEntry.clutter_text : null);
|
||||||
|
this.prompt.set_confirm_actor(this._confirmEntry ? this._confirmEntry.clutter_text : null);
|
||||||
|
|
||||||
|
if (this.prompt.choice_visible) {
|
||||||
|
let choice = new CheckBox.CheckBox();
|
||||||
|
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
|
||||||
|
table.add(choice.actor, { row: row, col: 1, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
|
||||||
|
let warning = new St.Label({ style_class: 'prompt-dialog-error-label' });
|
||||||
|
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
warning.clutter_text.line_wrap = true;
|
||||||
|
table.add(warning, { row: row, col: 1, x_expand: false, x_fill: false, x_align: St.Align.START });
|
||||||
|
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
|
if (this._controlTable) {
|
||||||
|
this._controlTable.destroy_all_children();
|
||||||
|
this._controlTable.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._controlTable = table;
|
||||||
|
this._messageBox.add(table, { x_fill: true, y_fill: true });
|
||||||
|
},
|
||||||
|
|
||||||
|
_ensureOpen: function() {
|
||||||
|
// NOTE: ModalDialog.open() is safe to call if the dialog is
|
||||||
|
// already open - it just returns true without side-effects
|
||||||
|
if (this.open())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// The above fail if e.g. unable to get input grab
|
||||||
|
//
|
||||||
|
// In an ideal world this wouldn't happen (because the
|
||||||
|
// Shell is in complete control of the session) but that's
|
||||||
|
// just not how things work right now.
|
||||||
|
|
||||||
|
log('keyringPrompt: Failed to show modal dialog.' +
|
||||||
|
' Dismissing prompt request');
|
||||||
|
this.prompt.cancel()
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onShowPassword: function(prompt) {
|
||||||
|
this._buildControlTable();
|
||||||
|
this._ensureOpen();
|
||||||
|
this._passwordEntry.grab_key_focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onShowConfirm: function(prompt) {
|
||||||
|
this._buildControlTable();
|
||||||
|
this._ensureOpen();
|
||||||
|
this._continueButton.grab_key_focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onHidePrompt: function(prompt) {
|
||||||
|
this.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onPasswordActivate: function() {
|
||||||
|
if (this.prompt.confirm_visible)
|
||||||
|
this._confirmEntry.grab_key_focus();
|
||||||
|
else
|
||||||
|
this._onContinueButton();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onConfirmActivate: function() {
|
||||||
|
this._onContinueButton();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onContinueButton: function() {
|
||||||
|
this.prompt.complete()
|
||||||
|
},
|
||||||
|
|
||||||
|
_onCancelButton: function() {
|
||||||
|
this.prompt.cancel()
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
prompter = new Gcr.SystemPrompter();
|
||||||
|
prompter.connect('new-prompt', function(prompter) {
|
||||||
|
let dialog = new KeyringDialog();
|
||||||
|
return dialog.prompt;
|
||||||
|
});
|
||||||
|
|
||||||
|
let connection = Gio.DBus.session;
|
||||||
|
prompter.register(connection);
|
||||||
|
Gio.bus_own_name_on_connection (connection, 'org.gnome.keyring.SystemPrompter',
|
||||||
|
Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||||
|
}
|
||||||
@@ -22,7 +22,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
Name: 'LayoutManager',
|
Name: 'LayoutManager',
|
||||||
|
|
||||||
_init: function () {
|
_init: function () {
|
||||||
this._rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||||
this.monitors = [];
|
this.monitors = [];
|
||||||
this.primaryMonitor = null;
|
this.primaryMonitor = null;
|
||||||
this.primaryIndex = -1;
|
this.primaryIndex = -1;
|
||||||
@@ -405,7 +405,7 @@ const HotCorner = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.add_actor(this._corner);
|
this.actor.add_actor(this._corner);
|
||||||
|
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
this._corner.set_position(this.actor.width - this._corner.width, 0);
|
this._corner.set_position(this.actor.width - this._corner.width, 0);
|
||||||
this.actor.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
this.actor.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||||
} else {
|
} else {
|
||||||
@@ -457,7 +457,7 @@ const HotCorner = new Lang.Class({
|
|||||||
|
|
||||||
ripple._opacity = startOpacity;
|
ripple._opacity = startOpacity;
|
||||||
|
|
||||||
if (ripple.get_direction() == St.TextDirection.RTL)
|
if (ripple.get_text_direction() == Clutter.TextDirection.RTL)
|
||||||
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||||
|
|
||||||
ripple.visible = true;
|
ripple.visible = true;
|
||||||
|
|||||||
@@ -400,7 +400,14 @@ const ObjInspector = new Lang.Class({
|
|||||||
button.connect('clicked', Lang.bind(this, this.close));
|
button.connect('clicked', Lang.bind(this, this.close));
|
||||||
hbox.add(button);
|
hbox.add(button);
|
||||||
if (typeof(obj) == typeof({})) {
|
if (typeof(obj) == typeof({})) {
|
||||||
|
let properties = [];
|
||||||
for (let propName in obj) {
|
for (let propName in obj) {
|
||||||
|
properties.push(propName);
|
||||||
|
}
|
||||||
|
properties.sort();
|
||||||
|
|
||||||
|
for (let i = 0; i < properties.length; i++) {
|
||||||
|
let propName = properties[i];
|
||||||
let valueStr;
|
let valueStr;
|
||||||
let link;
|
let link;
|
||||||
try {
|
try {
|
||||||
@@ -627,45 +634,6 @@ const Inspector = new Lang.Class({
|
|||||||
|
|
||||||
Signals.addSignalMethods(Inspector.prototype);
|
Signals.addSignalMethods(Inspector.prototype);
|
||||||
|
|
||||||
const ErrorLog = new Lang.Class({
|
|
||||||
Name: 'ErrorLog',
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
this.actor = new St.BoxLayout();
|
|
||||||
this.text = new St.Label();
|
|
||||||
this.actor.add(this.text);
|
|
||||||
// We need to override StLabel's default ellipsization when
|
|
||||||
// using line_wrap; otherwise ClutterText's layout is going
|
|
||||||
// to constrain both the width and height, which prevents
|
|
||||||
// scrolling.
|
|
||||||
this.text.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
|
||||||
this.text.clutter_text.line_wrap = true;
|
|
||||||
this.actor.connect('notify::mapped', Lang.bind(this, this._renderText));
|
|
||||||
},
|
|
||||||
|
|
||||||
_formatTime: function(d){
|
|
||||||
function pad(n) { return n < 10 ? '0' + n : n; }
|
|
||||||
return d.getUTCFullYear()+'-'
|
|
||||||
+ pad(d.getUTCMonth()+1)+'-'
|
|
||||||
+ pad(d.getUTCDate())+'T'
|
|
||||||
+ pad(d.getUTCHours())+':'
|
|
||||||
+ pad(d.getUTCMinutes())+':'
|
|
||||||
+ pad(d.getUTCSeconds())+'Z';
|
|
||||||
},
|
|
||||||
|
|
||||||
_renderText: function() {
|
|
||||||
if (!this.actor.mapped)
|
|
||||||
return;
|
|
||||||
let text = this.text.text;
|
|
||||||
let stack = Main._getAndClearErrorStack();
|
|
||||||
for (let i = 0; i < stack.length; i++) {
|
|
||||||
let logItem = stack[i];
|
|
||||||
text += logItem.category + ' t=' + this._formatTime(new Date(logItem.timestamp)) + ' ' + logItem.message + '\n';
|
|
||||||
}
|
|
||||||
this.text.text = text;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const Memory = new Lang.Class({
|
const Memory = new Lang.Class({
|
||||||
Name: 'Memory',
|
Name: 'Memory',
|
||||||
|
|
||||||
@@ -940,9 +908,6 @@ const LookingGlass = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
notebook.appendPage('Windows', this._windowList.actor);
|
notebook.appendPage('Windows', this._windowList.actor);
|
||||||
|
|
||||||
this._errorLog = new ErrorLog();
|
|
||||||
notebook.appendPage('Errors', this._errorLog.actor);
|
|
||||||
|
|
||||||
this._memory = new Memory();
|
this._memory = new Memory();
|
||||||
notebook.appendPage('Memory', this._memory.actor);
|
notebook.appendPage('Memory', this._memory.actor);
|
||||||
|
|
||||||
@@ -1140,7 +1105,7 @@ const LookingGlass = new Lang.Class({
|
|||||||
// Handle key events which are relevant for all tabs of the LookingGlass
|
// Handle key events which are relevant for all tabs of the LookingGlass
|
||||||
_globalKeyPressEvent : function(actor, event) {
|
_globalKeyPressEvent : function(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
let modifierState = Shell.get_event_state(event);
|
let modifierState = event.get_state();
|
||||||
if (symbol == Clutter.Escape) {
|
if (symbol == Clutter.Escape) {
|
||||||
if (this._objInspector.actor.visible) {
|
if (this._objInspector.actor.visible) {
|
||||||
this._objInspector.close();
|
this._objInspector.close();
|
||||||
|
|||||||
@@ -1228,10 +1228,7 @@ const Crosshairs = new Lang.Class({
|
|||||||
crosshairsActor = new Clutter.Clone({ source: this._actor });
|
crosshairsActor = new Clutter.Clone({ source: this._actor });
|
||||||
this._clones.push(crosshairsActor);
|
this._clones.push(crosshairsActor);
|
||||||
}
|
}
|
||||||
if (this._actor.visible)
|
crosshairsActor.visible = this._actor.visible;
|
||||||
crosshairsActor.show();
|
|
||||||
else
|
|
||||||
crosshairsActor.hide();
|
|
||||||
|
|
||||||
container.add_actor(crosshairsActor);
|
container.add_actor(crosshairsActor);
|
||||||
container.raise_child(magnifiedMouse, crosshairsActor);
|
container.raise_child(magnifiedMouse, crosshairsActor);
|
||||||
|
|||||||
135
js/ui/main.js
135
js/ui/main.js
@@ -15,6 +15,7 @@ const AutorunManager = imports.ui.autorunManager;
|
|||||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||||
const EndSessionDialog = imports.ui.endSessionDialog;
|
const EndSessionDialog = imports.ui.endSessionDialog;
|
||||||
const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
|
const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
|
||||||
|
const KeyringPrompt = imports.ui.keyringPrompt;
|
||||||
const Environment = imports.ui.environment;
|
const Environment = imports.ui.environment;
|
||||||
const ExtensionSystem = imports.ui.extensionSystem;
|
const ExtensionSystem = imports.ui.extensionSystem;
|
||||||
const Keyboard = imports.ui.keyboard;
|
const Keyboard = imports.ui.keyboard;
|
||||||
@@ -37,6 +38,7 @@ const XdndHandler = imports.ui.xdndHandler;
|
|||||||
const StatusIconDispatcher = imports.ui.statusIconDispatcher;
|
const StatusIconDispatcher = imports.ui.statusIconDispatcher;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
|
const OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
const DEFAULT_BACKGROUND_COLOR = new Clutter.Color();
|
const DEFAULT_BACKGROUND_COLOR = new Clutter.Color();
|
||||||
DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
|
DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
|
||||||
|
|
||||||
@@ -65,11 +67,11 @@ let statusIconDispatcher = null;
|
|||||||
let keyboard = null;
|
let keyboard = null;
|
||||||
let layoutManager = null;
|
let layoutManager = null;
|
||||||
let networkAgent = null;
|
let networkAgent = null;
|
||||||
let _errorLogStack = [];
|
|
||||||
let _startDate;
|
let _startDate;
|
||||||
let _defaultCssStylesheet = null;
|
let _defaultCssStylesheet = null;
|
||||||
let _cssStylesheet = null;
|
let _cssStylesheet = null;
|
||||||
let _gdmCssStylesheet = null;
|
let _gdmCssStylesheet = null;
|
||||||
|
let _overridesSettings = null;
|
||||||
|
|
||||||
let background = null;
|
let background = null;
|
||||||
|
|
||||||
@@ -98,19 +100,24 @@ function _createGDMSession() {
|
|||||||
|
|
||||||
function _initRecorder() {
|
function _initRecorder() {
|
||||||
let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
|
let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
|
||||||
|
let bindingSettings = new Gio.Settings({ schema: 'org.gnome.shell.keybindings' });
|
||||||
|
|
||||||
global.screen.connect('toggle-recording', function() {
|
global.display.add_keybinding('toggle-recording',
|
||||||
|
bindingSettings,
|
||||||
|
Meta.KeyBindingFlags.NONE, function() {
|
||||||
if (recorder == null) {
|
if (recorder == null) {
|
||||||
recorder = new Shell.Recorder({ stage: global.stage });
|
recorder = new Shell.Recorder({ stage: global.stage });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recorder.is_recording()) {
|
if (recorder.is_recording()) {
|
||||||
recorder.pause();
|
recorder.close();
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
} else {
|
} else {
|
||||||
// read the parameters from GSettings always in case they have changed
|
// read the parameters from GSettings always in case they have changed
|
||||||
recorder.set_framerate(recorderSettings.get_int('framerate'));
|
recorder.set_framerate(recorderSettings.get_int('framerate'));
|
||||||
recorder.set_filename('shell-%d%u-%c.' + recorderSettings.get_string('file-extension'));
|
/* Translators: this is a filename used for screencast recording */
|
||||||
|
// xgettext:no-c-format
|
||||||
|
recorder.set_filename(_("Screencast from %d %t") + '.' + recorderSettings.get_string('file-extension'));
|
||||||
let pipeline = recorderSettings.get_string('pipeline');
|
let pipeline = recorderSettings.get_string('pipeline');
|
||||||
|
|
||||||
if (!pipeline.match(/^\s*$/))
|
if (!pipeline.match(/^\s*$/))
|
||||||
@@ -145,11 +152,9 @@ function _initUserSession() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function start() {
|
function start() {
|
||||||
// Monkey patch utility functions into the global proxy;
|
// These are here so we don't break compatibility.
|
||||||
// This is easier and faster than indirecting down into global
|
global.logError = window.log;
|
||||||
// if we want to call back up into JS.
|
global.log = window.log;
|
||||||
global.logError = _logError;
|
|
||||||
global.log = _logDebug;
|
|
||||||
|
|
||||||
// Chain up async errors reported from C
|
// Chain up async errors reported from C
|
||||||
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
||||||
@@ -166,9 +171,11 @@ function start() {
|
|||||||
// and recalculate application associations, so to avoid
|
// and recalculate application associations, so to avoid
|
||||||
// races for now we initialize it here. It's better to
|
// races for now we initialize it here. It's better to
|
||||||
// be predictable anyways.
|
// be predictable anyways.
|
||||||
Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
Shell.AppUsage.get_default();
|
Shell.AppUsage.get_default();
|
||||||
|
|
||||||
|
tracker.connect('startup-sequence-changed', _queueCheckWorkspaces);
|
||||||
|
|
||||||
// The stage is always covered so Clutter doesn't need to clear it; however
|
// The stage is always covered so Clutter doesn't need to clear it; however
|
||||||
// the color is used as the default contents for the Mutter root background
|
// the color is used as the default contents for the Mutter root background
|
||||||
// actor so set it anyways.
|
// actor so set it anyways.
|
||||||
@@ -187,9 +194,16 @@ function start() {
|
|||||||
for (let i = 0; i < children.length; i++)
|
for (let i = 0; i < children.length; i++)
|
||||||
children[i].allocate_preferred_size(flags);
|
children[i].allocate_preferred_size(flags);
|
||||||
});
|
});
|
||||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
uiGroup.connect('get-preferred-width',
|
||||||
coordinate: Clutter.BindCoordinate.SIZE });
|
function(actor, forHeight, alloc) {
|
||||||
uiGroup.add_constraint(constraint);
|
let width = global.stage.width;
|
||||||
|
[alloc.min_size, alloc.natural_size] = [width, width];
|
||||||
|
});
|
||||||
|
uiGroup.connect('get-preferred-height',
|
||||||
|
function(actor, forWidth, alloc) {
|
||||||
|
let height = global.stage.height;
|
||||||
|
[alloc.min_size, alloc.natural_size] = [height, height];
|
||||||
|
});
|
||||||
global.window_group.reparent(uiGroup);
|
global.window_group.reparent(uiGroup);
|
||||||
global.overlay_group.reparent(uiGroup);
|
global.overlay_group.reparent(uiGroup);
|
||||||
global.stage.add_actor(uiGroup);
|
global.stage.add_actor(uiGroup);
|
||||||
@@ -230,11 +244,13 @@ function start() {
|
|||||||
// Attempt to become a PolicyKit authentication agent
|
// Attempt to become a PolicyKit authentication agent
|
||||||
PolkitAuthenticationAgent.init()
|
PolkitAuthenticationAgent.init()
|
||||||
|
|
||||||
|
// Become a prompter for gnome keyring
|
||||||
|
KeyringPrompt.init();
|
||||||
|
|
||||||
_startDate = new Date();
|
_startDate = new Date();
|
||||||
|
|
||||||
global.stage.connect('captured-event', _globalKeyPressHandler);
|
global.stage.connect('captured-event', _globalKeyPressHandler);
|
||||||
|
|
||||||
_log('info', 'loaded at ' + _startDate);
|
|
||||||
log('GNOME Shell started at ' + _startDate);
|
log('GNOME Shell started at ' + _startDate);
|
||||||
|
|
||||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||||
@@ -244,6 +260,9 @@ function start() {
|
|||||||
Scripting.runPerfScript(module, perfOutput);
|
Scripting.runPerfScript(module, perfOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_overridesSettings = new Gio.Settings({ schema: OVERRIDES_SCHEMA });
|
||||||
|
_overridesSettings.connect('changed::dynamic-workspaces', _queueCheckWorkspaces);
|
||||||
|
|
||||||
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
||||||
|
|
||||||
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
|
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
|
||||||
@@ -268,17 +287,30 @@ function _checkWorkspaces() {
|
|||||||
let i;
|
let i;
|
||||||
let emptyWorkspaces = [];
|
let emptyWorkspaces = [];
|
||||||
|
|
||||||
|
if (!Meta.prefs_get_dynamic_workspaces()) {
|
||||||
|
_checkWorkspacesId = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < _workspaces.length; i++) {
|
for (i = 0; i < _workspaces.length; i++) {
|
||||||
let lastRemoved = _workspaces[i]._lastRemovedWindow;
|
let lastRemoved = _workspaces[i]._lastRemovedWindow;
|
||||||
if (lastRemoved &&
|
if ((lastRemoved &&
|
||||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG)) ||
|
||||||
|
_workspaces[i]._keepAliveId)
|
||||||
emptyWorkspaces[i] = false;
|
emptyWorkspaces[i] = false;
|
||||||
else
|
else
|
||||||
emptyWorkspaces[i] = true;
|
emptyWorkspaces[i] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let sequences = Shell.WindowTracker.get_default().get_startup_sequences();
|
||||||
|
for (i = 0; i < sequences.length; i++) {
|
||||||
|
let index = sequences[i].get_workspace();
|
||||||
|
if (index >= 0 && index <= global.screen.n_workspaces)
|
||||||
|
emptyWorkspaces[index] = false;
|
||||||
|
}
|
||||||
|
|
||||||
let windows = global.get_window_actors();
|
let windows = global.get_window_actors();
|
||||||
for (i = 0; i < windows.length; i++) {
|
for (i = 0; i < windows.length; i++) {
|
||||||
let win = windows[i];
|
let win = windows[i];
|
||||||
@@ -326,6 +358,17 @@ function _checkWorkspaces() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function keepWorkspaceAlive(workspace, duration) {
|
||||||
|
if (workspace._keepAliveId)
|
||||||
|
Mainloop.source_remove(workspace._keepAliveId);
|
||||||
|
|
||||||
|
workspace._keepAliveId = Mainloop.timeout_add(duration, function() {
|
||||||
|
workspace._keepAliveId = 0;
|
||||||
|
_queueCheckWorkspaces();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function _windowRemoved(workspace, window) {
|
function _windowRemoved(workspace, window) {
|
||||||
workspace._lastRemovedWindow = window;
|
workspace._lastRemovedWindow = window;
|
||||||
_queueCheckWorkspaces();
|
_queueCheckWorkspaces();
|
||||||
@@ -493,59 +536,6 @@ function notifyError(msg, details) {
|
|||||||
notify(msg, details);
|
notify(msg, details);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* _log:
|
|
||||||
* @category: string message type ('info', 'error')
|
|
||||||
* @msg: A message string
|
|
||||||
* ...: Any further arguments are converted into JSON notation,
|
|
||||||
* and appended to the log message, separated by spaces.
|
|
||||||
*
|
|
||||||
* Log a message into the LookingGlass error
|
|
||||||
* stream. This is primarily intended for use by the
|
|
||||||
* extension system as well as debugging.
|
|
||||||
*/
|
|
||||||
function _log(category, msg) {
|
|
||||||
let text = msg;
|
|
||||||
if (arguments.length > 2) {
|
|
||||||
text += ': ';
|
|
||||||
for (let i = 2; i < arguments.length; i++) {
|
|
||||||
text += JSON.stringify(arguments[i]);
|
|
||||||
if (i < arguments.length - 1)
|
|
||||||
text += ' ';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_errorLogStack.push({timestamp: new Date().getTime(),
|
|
||||||
category: category,
|
|
||||||
message: text });
|
|
||||||
}
|
|
||||||
|
|
||||||
function _logError(msg) {
|
|
||||||
return _log('error', msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
function _logDebug(msg) {
|
|
||||||
return _log('debug', msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used by the error display in lookingGlass.js
|
|
||||||
function _getAndClearErrorStack() {
|
|
||||||
let errors = _errorLogStack;
|
|
||||||
_errorLogStack = [];
|
|
||||||
return errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
function logStackTrace(msg) {
|
|
||||||
try {
|
|
||||||
throw new Error();
|
|
||||||
} catch (e) {
|
|
||||||
// e.stack must have at least two lines, with the first being
|
|
||||||
// logStackTrace() (which we strip off), and the second being
|
|
||||||
// our caller.
|
|
||||||
let trace = e.stack.substr(e.stack.indexOf('\n') + 1);
|
|
||||||
log(msg ? (msg + '\n' + trace) : trace);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function isWindowActorDisplayedOnWorkspace(win, workspaceIndex) {
|
function isWindowActorDisplayedOnWorkspace(win, workspaceIndex) {
|
||||||
return win.get_workspace() == workspaceIndex ||
|
return win.get_workspace() == workspaceIndex ||
|
||||||
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
|
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
|
||||||
@@ -570,7 +560,8 @@ function _globalKeyPressHandler(actor, event) {
|
|||||||
|
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
let keyCode = event.get_key_code();
|
let keyCode = event.get_key_code();
|
||||||
let modifierState = Shell.get_event_state(event);
|
let ignoredModifiers = global.display.get_ignored_modifier_mask();
|
||||||
|
let modifierState = event.get_state() & ~ignoredModifiers;
|
||||||
|
|
||||||
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
||||||
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
|||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@@ -261,7 +262,9 @@ const FocusGrabber = new Lang.Class({
|
|||||||
|
|
||||||
this._hasFocus = true;
|
this._hasFocus = true;
|
||||||
|
|
||||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
if (!this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false))
|
||||||
|
this.actor.grab_key_focus();
|
||||||
|
|
||||||
this.emit('focus-grabbed');
|
this.emit('focus-grabbed');
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -423,7 +426,7 @@ const Notification = new Lang.Class({
|
|||||||
this._bannerBodyText = null;
|
this._bannerBodyText = null;
|
||||||
this._bannerBodyMarkup = false;
|
this._bannerBodyMarkup = false;
|
||||||
this._titleFitsInBannerMode = true;
|
this._titleFitsInBannerMode = true;
|
||||||
this._titleDirection = St.TextDirection.NONE;
|
this._titleDirection = Clutter.TextDirection.DEFAULT;
|
||||||
this._spacing = 0;
|
this._spacing = 0;
|
||||||
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
|
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
|
||||||
this._imageBin = null;
|
this._imageBin = null;
|
||||||
@@ -433,12 +436,12 @@ const Notification = new Lang.Class({
|
|||||||
this.destroy(reason);
|
this.destroy(reason);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.actor = new St.Button();
|
this.actor = new St.Button({ accessible_role: Atk.Role.NOTIFICATION });
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._table = new St.Table({ name: 'notification',
|
this._table = new St.Table({ style_class: 'notification',
|
||||||
reactive: true });
|
reactive: true });
|
||||||
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
|
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
|
||||||
this.actor.set_child(this._table);
|
this.actor.set_child(this._table);
|
||||||
@@ -544,9 +547,9 @@ const Notification = new Lang.Class({
|
|||||||
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
|
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
|
||||||
|
|
||||||
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
|
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
|
||||||
this._titleDirection = St.TextDirection.RTL;
|
this._titleDirection = Clutter.TextDirection.RTL;
|
||||||
else
|
else
|
||||||
this._titleDirection = St.TextDirection.LTR;
|
this._titleDirection = Clutter.TextDirection.LTR;
|
||||||
|
|
||||||
// Let the title's text direction control the overall direction
|
// Let the title's text direction control the overall direction
|
||||||
// of the notification - in case where different scripts are used
|
// of the notification - in case where different scripts are used
|
||||||
@@ -554,7 +557,7 @@ const Notification = new Lang.Class({
|
|||||||
// arguably for action buttons as well. Labels other than the title
|
// arguably for action buttons as well. Labels other than the title
|
||||||
// will be allocated at the available width, so that their alignment
|
// will be allocated at the available width, so that their alignment
|
||||||
// is done correctly automatically.
|
// is done correctly automatically.
|
||||||
this._table.set_direction(this._titleDirection);
|
this._table.set_text_direction(this._titleDirection);
|
||||||
|
|
||||||
// Unless the notification has custom content, we save this._bannerBodyText
|
// Unless the notification has custom content, we save this._bannerBodyText
|
||||||
// to add it to the content of the notification if the notification is
|
// to add it to the content of the notification if the notification is
|
||||||
@@ -574,7 +577,7 @@ const Notification = new Lang.Class({
|
|||||||
|
|
||||||
if (params.body)
|
if (params.body)
|
||||||
this.addBody(params.body, params.bodyMarkup);
|
this.addBody(params.body, params.bodyMarkup);
|
||||||
this._updated();
|
this.updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
setIconVisible: function(visible) {
|
setIconVisible: function(visible) {
|
||||||
@@ -583,19 +586,21 @@ const Notification = new Lang.Class({
|
|||||||
|
|
||||||
enableScrolling: function(enableScrolling) {
|
enableScrolling: function(enableScrolling) {
|
||||||
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
||||||
if (this._scrollArea)
|
if (this._scrollArea) {
|
||||||
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
|
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
|
||||||
|
this._scrollArea.enable_mouse_scrolling = enableScrolling;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_createScrollArea: function() {
|
_createScrollArea: function() {
|
||||||
this._table.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
this._scrollArea = new St.ScrollView({ style_class: 'notification-scrollview',
|
||||||
vscrollbar_policy: this._scrollPolicy,
|
vscrollbar_policy: this._scrollPolicy,
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||||
this._table.add(this._scrollArea, { row: 1,
|
this._table.add(this._scrollArea, { row: 1,
|
||||||
col: 2 });
|
col: 2 });
|
||||||
this._updateLastColumnSettings();
|
this._updateLastColumnSettings();
|
||||||
this._contentArea = new St.BoxLayout({ name: 'notification-body',
|
this._contentArea = new St.BoxLayout({ style_class: 'notification-body',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
this._scrollArea.add_actor(this._contentArea);
|
this._scrollArea.add_actor(this._contentArea);
|
||||||
// If we know the notification will be expandable, we need to add
|
// If we know the notification will be expandable, we need to add
|
||||||
@@ -613,7 +618,7 @@ const Notification = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._contentArea.add(actor, style ? style : {});
|
this._contentArea.add(actor, style ? style : {});
|
||||||
this._updated();
|
this.updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
// addBody:
|
// addBody:
|
||||||
@@ -676,7 +681,7 @@ const Notification = new Lang.Class({
|
|||||||
this._table.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._table.add(this._actionArea, props);
|
this._table.add(this._actionArea, props);
|
||||||
this._updateLastColumnSettings();
|
this._updateLastColumnSettings();
|
||||||
this._updated();
|
this.updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLastColumnSettings: function() {
|
_updateLastColumnSettings: function() {
|
||||||
@@ -731,7 +736,7 @@ const Notification = new Lang.Class({
|
|||||||
addButton: function(id, label) {
|
addButton: function(id, label) {
|
||||||
if (!this._buttonBox) {
|
if (!this._buttonBox) {
|
||||||
|
|
||||||
let box = new St.BoxLayout({ name: 'notification-actions' });
|
let box = new St.BoxLayout({ style_class: 'notification-actions' });
|
||||||
this.setActionArea(box, { x_expand: false,
|
this.setActionArea(box, { x_expand: false,
|
||||||
y_expand: false,
|
y_expand: false,
|
||||||
x_fill: false,
|
x_fill: false,
|
||||||
@@ -757,7 +762,7 @@ const Notification = new Lang.Class({
|
|||||||
this._buttonFocusManager.add_group(this._buttonBox);
|
this._buttonFocusManager.add_group(this._buttonBox);
|
||||||
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
|
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
|
||||||
|
|
||||||
this._updated();
|
this.updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
setUrgency: function(urgency) {
|
setUrgency: function(urgency) {
|
||||||
@@ -802,7 +807,7 @@ const Notification = new Lang.Class({
|
|||||||
|
|
||||||
let titleBox = new Clutter.ActorBox();
|
let titleBox = new Clutter.ActorBox();
|
||||||
let titleBoxW = Math.min(titleNatW, availWidth);
|
let titleBoxW = Math.min(titleNatW, availWidth);
|
||||||
if (this._titleDirection == St.TextDirection.RTL) {
|
if (this._titleDirection == Clutter.TextDirection.RTL) {
|
||||||
titleBox.x1 = availWidth - titleBoxW;
|
titleBox.x1 = availWidth - titleBoxW;
|
||||||
titleBox.x2 = availWidth;
|
titleBox.x2 = availWidth;
|
||||||
} else {
|
} else {
|
||||||
@@ -821,7 +826,7 @@ const Notification = new Lang.Class({
|
|||||||
} else {
|
} else {
|
||||||
let bannerBox = new Clutter.ActorBox();
|
let bannerBox = new Clutter.ActorBox();
|
||||||
|
|
||||||
if (this._titleDirection == St.TextDirection.RTL) {
|
if (this._titleDirection == Clutter.TextDirection.RTL) {
|
||||||
bannerBox.x1 = 0;
|
bannerBox.x1 = 0;
|
||||||
bannerBox.x2 = titleBox.x1 - this._spacing;
|
bannerBox.x2 = titleBox.x1 - this._spacing;
|
||||||
|
|
||||||
@@ -853,7 +858,7 @@ const Notification = new Lang.Class({
|
|||||||
if (this._canExpandContent()) {
|
if (this._canExpandContent()) {
|
||||||
this._addBannerBody();
|
this._addBannerBody();
|
||||||
this._table.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._updated();
|
this.updated();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
@@ -864,7 +869,7 @@ const Notification = new Lang.Class({
|
|||||||
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
|
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
|
||||||
},
|
},
|
||||||
|
|
||||||
_updated: function() {
|
updated: function() {
|
||||||
if (this.expanded)
|
if (this.expanded)
|
||||||
this.expand(false);
|
this.expand(false);
|
||||||
},
|
},
|
||||||
@@ -1005,9 +1010,9 @@ const Source = new Lang.Class({
|
|||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
|
|
||||||
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._counterBin.get_preferred_size();
|
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._counterBin.get_preferred_size();
|
||||||
let direction = this.actor.get_direction();
|
let direction = this.actor.get_text_direction();
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
// allocate on the right in LTR
|
// allocate on the right in LTR
|
||||||
childBox.x1 = box.x2 - naturalWidth;
|
childBox.x1 = box.x2 - naturalWidth;
|
||||||
childBox.x2 = box.x2;
|
childBox.x2 = box.x2;
|
||||||
@@ -1341,16 +1346,14 @@ const MessageTray = new Lang.Class({
|
|||||||
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
|
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
|
||||||
this._onStatusChanged(proxy.status);
|
this._onStatusChanged(proxy.status);
|
||||||
}));
|
}));
|
||||||
this._userStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
|
||||||
this._busy = false;
|
this._busy = false;
|
||||||
this._backFromAway = false;
|
|
||||||
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
||||||
this._onStatusChanged(status);
|
this._onStatusChanged(status);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.actor = new St.Group({ name: 'message-tray',
|
this.actor = new St.Widget({ name: 'message-tray',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
this.actor.connect('notify::hover', Lang.bind(this, this._onTrayHoverChanged));
|
this.actor.connect('notify::hover', Lang.bind(this, this._onTrayHoverChanged));
|
||||||
|
|
||||||
this._notificationBin = new St.Bin();
|
this._notificationBin = new St.Bin();
|
||||||
@@ -1389,6 +1392,12 @@ const MessageTray = new Lang.Class({
|
|||||||
this._summaryItemTitleWidth = 0;
|
this._summaryItemTitleWidth = 0;
|
||||||
this._pointerBarrier = 0;
|
this._pointerBarrier = 0;
|
||||||
|
|
||||||
|
this._unseenNotifications = [];
|
||||||
|
this._idleMonitorWatchId = 0;
|
||||||
|
this._backFromAway = false;
|
||||||
|
|
||||||
|
this.idleMonitor = new Shell.IdleMonitor();
|
||||||
|
|
||||||
// To simplify the summary item animation code, we pretend
|
// To simplify the summary item animation code, we pretend
|
||||||
// that there's an invisible SummaryItem to the left of the
|
// that there's an invisible SummaryItem to the left of the
|
||||||
// leftmost real summary item, and that it's expanded when all
|
// leftmost real summary item, and that it's expanded when all
|
||||||
@@ -1491,7 +1500,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._summaryBin.x = 0;
|
this._summaryBin.x = 0;
|
||||||
this._summaryBin.width = monitor.width;
|
this._summaryBin.width = monitor.width;
|
||||||
|
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
this._corner.x = 0;
|
this._corner.x = 0;
|
||||||
else
|
else
|
||||||
this._corner.x = Main.layoutManager.trayBox.width - 1;
|
this._corner.x = Main.layoutManager.trayBox.width - 1;
|
||||||
@@ -1632,6 +1641,10 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onNotificationDestroy: function(notification) {
|
_onNotificationDestroy: function(notification) {
|
||||||
|
let unseenNotificationsIndex = this._unseenNotifications.indexOf(notification);
|
||||||
|
if (unseenNotificationsIndex != -1)
|
||||||
|
this._unseenNotifications.splice(unseenNotificationsIndex, 1);
|
||||||
|
|
||||||
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
|
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
|
||||||
this._updateNotificationTimeout(0);
|
this._updateNotificationTimeout(0);
|
||||||
this._notificationRemoved = true;
|
this._notificationRemoved = true;
|
||||||
@@ -1915,16 +1928,10 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onStatusChanged: function(status) {
|
_onStatusChanged: function(status) {
|
||||||
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
|
|
||||||
this._userStatus = status;
|
|
||||||
|
|
||||||
if (status == GnomeSession.PresenceStatus.BUSY) {
|
if (status == GnomeSession.PresenceStatus.BUSY) {
|
||||||
// remove notification and allow the summary to be closed now
|
// remove notification and allow the summary to be closed now
|
||||||
this._updateNotificationTimeout(0);
|
this._updateNotificationTimeout(0);
|
||||||
if (this._summaryTimeoutId) {
|
this._unsetSummaryTimeout();
|
||||||
Mainloop.source_remove(this._summaryTimeoutId);
|
|
||||||
this._summaryTimeoutId = 0;
|
|
||||||
}
|
|
||||||
this._busy = true;
|
this._busy = true;
|
||||||
} else if (status != GnomeSession.PresenceStatus.IDLE) {
|
} else if (status != GnomeSession.PresenceStatus.IDLE) {
|
||||||
// We preserve the previous value of this._busy if the status turns to IDLE
|
// We preserve the previous value of this._busy if the status turns to IDLE
|
||||||
@@ -1954,6 +1961,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._pointerInTray = false;
|
this._pointerInTray = false;
|
||||||
this._pointerInSummary = false;
|
this._pointerInSummary = false;
|
||||||
this._updateNotificationTimeout(0);
|
this._updateNotificationTimeout(0);
|
||||||
|
this._unsetSummaryTimeout();
|
||||||
this._updateState();
|
this._updateState();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -1964,6 +1972,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._pointerInTray = false;
|
this._pointerInTray = false;
|
||||||
this._pointerInSummary = false;
|
this._pointerInSummary = false;
|
||||||
this._updateNotificationTimeout(0);
|
this._updateNotificationTimeout(0);
|
||||||
|
this._unsetSummaryTimeout();
|
||||||
this._updateState();
|
this._updateState();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -2009,15 +2018,13 @@ const MessageTray = new Lang.Class({
|
|||||||
|| notificationsVisible;
|
|| notificationsVisible;
|
||||||
|
|
||||||
if (this._summaryState == State.HIDDEN && !mustHideSummary) {
|
if (this._summaryState == State.HIDDEN && !mustHideSummary) {
|
||||||
if (this._backFromAway) {
|
if (summarySummoned) {
|
||||||
// Immediately set this to false, so that we don't schedule a timeout later
|
|
||||||
this._backFromAway = false;
|
|
||||||
if (!this._busy)
|
|
||||||
this._showSummary(LONGER_SUMMARY_TIMEOUT);
|
|
||||||
} else if (notificationsDone && this._newSummaryItems.length > 0 && !this._busy) {
|
|
||||||
this._showSummary(SUMMARY_TIMEOUT);
|
|
||||||
} else if (summarySummoned) {
|
|
||||||
this._showSummary(0);
|
this._showSummary(0);
|
||||||
|
} else if (notificationsDone && !this._busy) {
|
||||||
|
if (this._backFromAway && this._unseenNotifications.length > 0)
|
||||||
|
this._showSummary(LONGER_SUMMARY_TIMEOUT);
|
||||||
|
else if (this._newSummaryItems.length > 0)
|
||||||
|
this._showSummary(SUMMARY_TIMEOUT);
|
||||||
}
|
}
|
||||||
} else if (this._summaryState == State.SHOWN) {
|
} else if (this._summaryState == State.SHOWN) {
|
||||||
if (!summaryPinned || mustHideSummary)
|
if (!summaryPinned || mustHideSummary)
|
||||||
@@ -2106,8 +2113,32 @@ const MessageTray = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||||
|
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
|
||||||
|
this._idleMonitorWatchId = 0;
|
||||||
|
|
||||||
|
if (userBecameIdle) {
|
||||||
|
// The user became idle, which means the user was active while the notifications were
|
||||||
|
// shown and we can unset this._unseenNotifications .
|
||||||
|
this._unseenNotiications = [];
|
||||||
|
} else if (this._unseenNotifications.length == 1 && this._unseenNotifications[0] == this._notification) {
|
||||||
|
// The user became active while the only notification in this._unseenNotifications is being shown
|
||||||
|
// as this._notification , so we can unset this._unseenNotifications .
|
||||||
|
this._unseenNotifications = [];
|
||||||
|
} else {
|
||||||
|
// The user became active and we have one or more unseen notifications. We should show
|
||||||
|
// the message tray to the user to inform the user about the missed notifications.
|
||||||
|
this._backFromAway = true;
|
||||||
|
this._updateState();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_showNotification: function() {
|
_showNotification: function() {
|
||||||
this._notification = this._notificationQueue.shift();
|
this._notification = this._notificationQueue.shift();
|
||||||
|
this._unseenNotifications.push(this._notification);
|
||||||
|
if (this._idleMonitorWatchId == 0)
|
||||||
|
this._idleMonitorWatchId = this.idleMonitor.add_watch(1000,
|
||||||
|
Lang.bind(this, this._onIdleMonitorWatch));
|
||||||
this._notificationClickedId = this._notification.connect('done-displaying',
|
this._notificationClickedId = this._notification.connect('done-displaying',
|
||||||
Lang.bind(this, this._escapeTray));
|
Lang.bind(this, this._escapeTray));
|
||||||
this._notificationBin.child = this._notification.actor;
|
this._notificationBin.child = this._notification.actor;
|
||||||
@@ -2186,6 +2217,13 @@ const MessageTray = new Lang.Class({
|
|||||||
Lang.bind(this, this._notificationTimeout));
|
Lang.bind(this, this._notificationTimeout));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_unsetSummaryTimeout: function(timeout) {
|
||||||
|
if (this._summaryTimeoutId) {
|
||||||
|
Mainloop.source_remove(this._summaryTimeoutId);
|
||||||
|
this._summaryTimeoutId = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_notificationTimeout: function() {
|
_notificationTimeout: function() {
|
||||||
let [x, y, mods] = global.get_pointer();
|
let [x, y, mods] = global.get_pointer();
|
||||||
if (y > this._lastSeenMouseY + 10 && !this.actor.hover) {
|
if (y > this._lastSeenMouseY + 10 && !this.actor.hover) {
|
||||||
@@ -2269,6 +2307,7 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_showSummary: function(timeout) {
|
_showSummary: function(timeout) {
|
||||||
|
this._updateSeenSummaryItems();
|
||||||
this._summaryBin.opacity = 0;
|
this._summaryBin.opacity = 0;
|
||||||
this._summaryBin.y = this.actor.height;
|
this._summaryBin.y = this.actor.height;
|
||||||
this._tween(this._summaryBin, '_summaryState', State.SHOWN,
|
this._tween(this._summaryBin, '_summaryState', State.SHOWN,
|
||||||
@@ -2283,8 +2322,6 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_showSummaryCompleted: function(timeout) {
|
_showSummaryCompleted: function(timeout) {
|
||||||
this._newSummaryItems = [];
|
|
||||||
|
|
||||||
if (timeout != 0) {
|
if (timeout != 0) {
|
||||||
this._summaryTimeoutId =
|
this._summaryTimeoutId =
|
||||||
Mainloop.timeout_add(timeout * 1000,
|
Mainloop.timeout_add(timeout * 1000,
|
||||||
@@ -2299,6 +2336,7 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_hideSummary: function() {
|
_hideSummary: function() {
|
||||||
|
this._updateSeenSummaryItems();
|
||||||
this._tween(this._summaryBin, '_summaryState', State.HIDDEN,
|
this._tween(this._summaryBin, '_summaryState', State.HIDDEN,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
@@ -2306,13 +2344,20 @@ const MessageTray = new Lang.Class({
|
|||||||
onComplete: this._hideSummaryCompleted,
|
onComplete: this._hideSummaryCompleted,
|
||||||
onCompleteScope: this,
|
onCompleteScope: this,
|
||||||
});
|
});
|
||||||
this._newSummaryItems = [];
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideSummaryCompleted: function() {
|
_hideSummaryCompleted: function() {
|
||||||
this._setExpandedSummaryItem(null);
|
this._setExpandedSummaryItem(null);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateSeenSummaryItems: function() {
|
||||||
|
if (this._backFromAway) {
|
||||||
|
this._backFromAway = false;
|
||||||
|
this._unseenNotifications = [];
|
||||||
|
}
|
||||||
|
this._newSummaryItems = [];
|
||||||
|
},
|
||||||
|
|
||||||
_showSummaryBoxPointer: function() {
|
_showSummaryBoxPointer: function() {
|
||||||
this._summaryBoxPointerItem = this._clickedSummaryItem;
|
this._summaryBoxPointerItem = this._clickedSummaryItem;
|
||||||
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const Pango = imports.gi.Pango;
|
|||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
@@ -40,9 +41,10 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._hasModal = false;
|
this._hasModal = false;
|
||||||
this._shellReactive = params.shellReactive;
|
this._shellReactive = params.shellReactive;
|
||||||
|
|
||||||
this._group = new St.Group({ visible: false,
|
this._group = new St.Widget({ visible: false,
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0 });
|
y: 0,
|
||||||
|
accessible_role: Atk.Role.DIALOG });
|
||||||
Main.uiGroup.add_actor(this._group);
|
Main.uiGroup.add_actor(this._group);
|
||||||
|
|
||||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||||
@@ -87,6 +89,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
||||||
|
visible: false,
|
||||||
vertical: false });
|
vertical: false });
|
||||||
this._dialogLayout.add(this._buttonLayout,
|
this._dialogLayout.add(this._buttonLayout,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@@ -95,6 +98,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
|
|
||||||
global.focus_manager.add_group(this._dialogLayout);
|
global.focus_manager.add_group(this._dialogLayout);
|
||||||
this._initialKeyFocus = this._dialogLayout;
|
this._initialKeyFocus = this._dialogLayout;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -108,6 +112,8 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._buttonLayout.destroy_all_children();
|
this._buttonLayout.destroy_all_children();
|
||||||
this._actionKeys = {};
|
this._actionKeys = {};
|
||||||
|
|
||||||
|
this._buttonLayout.visible = (buttons.length > 0);
|
||||||
|
|
||||||
for (let i = 0; i < buttons.length; i++) {
|
for (let i = 0; i < buttons.length; i++) {
|
||||||
let buttonInfo = buttons[i];
|
let buttonInfo = buttons[i];
|
||||||
let label = buttonInfo['label'];
|
let label = buttonInfo['label'];
|
||||||
@@ -129,8 +135,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
else
|
else
|
||||||
x_alignment = St.Align.MIDDLE;
|
x_alignment = St.Align.MIDDLE;
|
||||||
|
|
||||||
if (this._initialKeyFocus == this._dialogLayout ||
|
if (!this._initialKeyFocusDestroyId)
|
||||||
this._buttonLayout.contains(this._initialKeyFocus))
|
|
||||||
this._initialKeyFocus = buttonInfo.button;
|
this._initialKeyFocus = buttonInfo.button;
|
||||||
this._buttonLayout.add(buttonInfo.button,
|
this._buttonLayout.add(buttonInfo.button,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@@ -200,7 +205,15 @@ const ModalDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setInitialKeyFocus: function(actor) {
|
setInitialKeyFocus: function(actor) {
|
||||||
|
if (this._initialKeyFocusDestroyId)
|
||||||
|
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||||
|
|
||||||
this._initialKeyFocus = actor;
|
this._initialKeyFocus = actor;
|
||||||
|
|
||||||
|
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
|
||||||
|
this._initialKeyFocus = this._dialogLayout;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function(timestamp) {
|
open: function(timestamp) {
|
||||||
|
|||||||
@@ -531,7 +531,8 @@ const VPNRequestHandler = new Lang.Class({
|
|||||||
let contentOverride;
|
let contentOverride;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
keyfile.load_from_data(this._dataStdout.peek_buffer(), -1,
|
let data = this._dataStdout.peek_buffer();
|
||||||
|
keyfile.load_from_data(data.toString(), data.length,
|
||||||
GLib.KeyFileFlags.NONE);
|
GLib.KeyFileFlags.NONE);
|
||||||
|
|
||||||
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)
|
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)
|
||||||
|
|||||||
@@ -578,11 +578,27 @@ const Source = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getApp: function() {
|
||||||
|
let app;
|
||||||
|
|
||||||
|
app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
|
||||||
|
if (app != null)
|
||||||
|
return app;
|
||||||
|
|
||||||
|
if (this.trayIcon) {
|
||||||
|
app = Shell.AppSystem.get_default().lookup_wmclass(this.trayIcon.wmclass);
|
||||||
|
if (app != null)
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
_setApp: function() {
|
_setApp: function() {
|
||||||
if (this.app)
|
if (this.app)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
|
this.app = this._getApp();
|
||||||
if (!this.app)
|
if (!this.app)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -126,8 +126,11 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
this._spacing = 0;
|
this._spacing = 0;
|
||||||
|
|
||||||
this._group = new St.Group({ name: 'overview',
|
/* Translators: This is the main view to select
|
||||||
reactive: true });
|
activities. See also note for "Activities" string. */
|
||||||
|
this._group = new St.Widget({ name: 'overview',
|
||||||
|
accessible_name: _("Overview"),
|
||||||
|
reactive: true });
|
||||||
this._group._delegate = this;
|
this._group._delegate = this;
|
||||||
this._group.connect('style-changed',
|
this._group.connect('style-changed',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
@@ -357,7 +360,7 @@ const Overview = new Lang.Class({
|
|||||||
let direction;
|
let direction;
|
||||||
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
||||||
direction = stageX > this._dragStartX ? -1 : 1;
|
direction = stageX > this._dragStartX ? -1 : 1;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
direction *= -1;
|
direction *= -1;
|
||||||
} else {
|
} else {
|
||||||
direction = stageY > this._dragStartY ? -1 : 1;
|
direction = stageY > this._dragStartY ? -1 : 1;
|
||||||
@@ -449,7 +452,7 @@ const Overview = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size;
|
this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size;
|
||||||
else
|
else
|
||||||
this._scrollAdjustment.value += (dx / primary.width) * this._scrollAdjustment.page_size;
|
this._scrollAdjustment.value += (dx / primary.width) * this._scrollAdjustment.page_size;
|
||||||
@@ -490,7 +493,7 @@ const Overview = new Lang.Class({
|
|||||||
this.hide();
|
this.hide();
|
||||||
|
|
||||||
let primary = Main.layoutManager.primaryMonitor;
|
let primary = Main.layoutManager.primaryMonitor;
|
||||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||||
|
|
||||||
let contentY = Main.panel.actor.height;
|
let contentY = Main.panel.actor.height;
|
||||||
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
|
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
|
||||||
|
|||||||
108
js/ui/panel.js
108
js/ui/panel.js
@@ -4,12 +4,15 @@ const Cairo = imports.cairo;
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const Pango = imports.gi.Pango;
|
const Pango = imports.gi.Pango;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||||
@@ -34,7 +37,7 @@ const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
|
|||||||
'a11y': imports.ui.status.accessibility.ATIndicator,
|
'a11y': imports.ui.status.accessibility.ATIndicator,
|
||||||
'volume': imports.ui.status.volume.Indicator,
|
'volume': imports.ui.status.volume.Indicator,
|
||||||
'battery': imports.ui.status.power.Indicator,
|
'battery': imports.ui.status.power.Indicator,
|
||||||
'keyboard': imports.ui.status.keyboard.XKBIndicator,
|
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||||
'userMenu': imports.ui.userMenu.UserMenuButton
|
'userMenu': imports.ui.userMenu.UserMenuButton
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,7 +55,7 @@ const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = {
|
|||||||
'a11y': imports.ui.status.accessibility.ATIndicator,
|
'a11y': imports.ui.status.accessibility.ATIndicator,
|
||||||
'volume': imports.ui.status.volume.Indicator,
|
'volume': imports.ui.status.volume.Indicator,
|
||||||
'battery': imports.ui.status.power.Indicator,
|
'battery': imports.ui.status.power.Indicator,
|
||||||
'keyboard': imports.ui.status.keyboard.XKBIndicator,
|
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||||
'powerMenu': imports.gdm.powerMenu.PowerMenuButton
|
'powerMenu': imports.gdm.powerMenu.PowerMenuButton
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -249,6 +252,8 @@ const AppMenuButton = new Lang.Class({
|
|||||||
_init: function(menuManager) {
|
_init: function(menuManager) {
|
||||||
this.parent(0.0, null, true);
|
this.parent(0.0, null, true);
|
||||||
|
|
||||||
|
this.actor.accessible_role = Atk.Role.MENU;
|
||||||
|
|
||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
this._menuManager = menuManager;
|
this._menuManager = menuManager;
|
||||||
@@ -299,7 +304,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
let appSys = Shell.AppSystem.get_default();
|
let appSys = Shell.AppSystem.get_default();
|
||||||
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
|
tracker.connect('notify::focus-app', Lang.bind(this, this._focusAppChanged));
|
||||||
appSys.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
|
appSys.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
|
||||||
|
|
||||||
global.window_manager.connect('switch-workspace', Lang.bind(this, this._sync));
|
global.window_manager.connect('switch-workspace', Lang.bind(this, this._sync));
|
||||||
@@ -313,11 +318,12 @@ const AppMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
this._visible = true;
|
this._visible = true;
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
this.actor.reactive = true;
|
|
||||||
|
|
||||||
if (!this._targetIsCurrent)
|
if (!this._targetIsCurrent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this.actor.reactive = true;
|
||||||
|
|
||||||
Tweener.removeTweens(this.actor);
|
Tweener.removeTweens(this.actor);
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
@@ -412,12 +418,12 @@ const AppMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._iconBox.get_preferred_size();
|
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._iconBox.get_preferred_size();
|
||||||
|
|
||||||
let direction = this.actor.get_direction();
|
let direction = this.actor.get_text_direction();
|
||||||
|
|
||||||
let yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
|
let yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
|
||||||
childBox.y1 = yPadding;
|
childBox.y1 = yPadding;
|
||||||
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
childBox.x1 = 0;
|
childBox.x1 = 0;
|
||||||
childBox.x2 = childBox.x1 + Math.min(naturalWidth, allocWidth);
|
childBox.x2 = childBox.x1 + Math.min(naturalWidth, allocWidth);
|
||||||
} else {
|
} else {
|
||||||
@@ -434,7 +440,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
childBox.y1 = yPadding;
|
childBox.y1 = yPadding;
|
||||||
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
childBox.x1 = Math.floor(iconWidth / 2);
|
childBox.x1 = Math.floor(iconWidth / 2);
|
||||||
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
|
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
|
||||||
} else {
|
} else {
|
||||||
@@ -443,7 +449,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._label.actor.allocate(childBox, flags);
|
this._label.actor.allocate(childBox, flags);
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
|
childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
|
||||||
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
||||||
childBox.y1 = box.y1;
|
childBox.y1 = box.y1;
|
||||||
@@ -474,16 +480,9 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._sync();
|
this._sync();
|
||||||
},
|
},
|
||||||
|
|
||||||
_sync: function() {
|
_focusAppChanged: function() {
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
let lastStartedApp = null;
|
|
||||||
let workspace = global.screen.get_active_workspace();
|
|
||||||
for (let i = 0; i < this._startingApps.length; i++)
|
|
||||||
if (this._startingApps[i].is_on_workspace(workspace))
|
|
||||||
lastStartedApp = this._startingApps[i];
|
|
||||||
|
|
||||||
let focusedApp = tracker.focus_app;
|
let focusedApp = tracker.focus_app;
|
||||||
|
|
||||||
if (!focusedApp) {
|
if (!focusedApp) {
|
||||||
// If the app has just lost focus to the panel, pretend
|
// If the app has just lost focus to the panel, pretend
|
||||||
// nothing happened; otherwise you can't keynav to the
|
// nothing happened; otherwise you can't keynav to the
|
||||||
@@ -491,6 +490,17 @@ const AppMenuButton = new Lang.Class({
|
|||||||
if (global.stage_input_mode == Shell.StageInputMode.FOCUSED)
|
if (global.stage_input_mode == Shell.StageInputMode.FOCUSED)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
this._sync();
|
||||||
|
},
|
||||||
|
|
||||||
|
_sync: function() {
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
let focusedApp = tracker.focus_app;
|
||||||
|
let lastStartedApp = null;
|
||||||
|
let workspace = global.screen.get_active_workspace();
|
||||||
|
for (let i = 0; i < this._startingApps.length; i++)
|
||||||
|
if (this._startingApps[i].is_on_workspace(workspace))
|
||||||
|
lastStartedApp = this._startingApps[i];
|
||||||
|
|
||||||
let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
|
let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
|
||||||
|
|
||||||
@@ -600,6 +610,7 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(0.0);
|
this.parent(0.0);
|
||||||
|
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||||
|
|
||||||
let container = new Shell.GenericContainer();
|
let container = new Shell.GenericContainer();
|
||||||
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||||
@@ -613,6 +624,8 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
this._label = new St.Label({ text: _("Activities") });
|
this._label = new St.Label({ text: _("Activities") });
|
||||||
container.add_actor(this._label);
|
container.add_actor(this._label);
|
||||||
|
|
||||||
|
this.actor.label_actor = this._label;
|
||||||
|
|
||||||
this._hotCorner = new Layout.HotCorner();
|
this._hotCorner = new Layout.HotCorner();
|
||||||
container.add_actor(this._hotCorner.actor);
|
container.add_actor(this._hotCorner.actor);
|
||||||
|
|
||||||
@@ -628,10 +641,12 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
this.actor.add_style_pseudo_class('overview');
|
this.actor.add_style_pseudo_class('overview');
|
||||||
this._escapeMenuGrab();
|
this._escapeMenuGrab();
|
||||||
|
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||||
}));
|
}));
|
||||||
Main.overview.connect('hiding', Lang.bind(this, function() {
|
Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||||
this.actor.remove_style_pseudo_class('overview');
|
this.actor.remove_style_pseudo_class('overview');
|
||||||
this._escapeMenuGrab();
|
this._escapeMenuGrab();
|
||||||
|
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._xdndTimeOut = 0;
|
this._xdndTimeOut = 0;
|
||||||
@@ -653,7 +668,7 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
let primary = Main.layoutManager.primaryMonitor;
|
let primary = Main.layoutManager.primaryMonitor;
|
||||||
let hotBox = new Clutter.ActorBox();
|
let hotBox = new Clutter.ActorBox();
|
||||||
let ok, x, y;
|
let ok, x, y;
|
||||||
if (actor.get_direction() == St.TextDirection.LTR) {
|
if (actor.get_text_direction() == Clutter.TextDirection.LTR) {
|
||||||
[ok, x, y] = actor.transform_stage_point(primary.x, primary.y)
|
[ok, x, y] = actor.transform_stage_point(primary.x, primary.y)
|
||||||
} else {
|
} else {
|
||||||
[ok, x, y] = actor.transform_stage_point(primary.x + primary.width, primary.y);
|
[ok, x, y] = actor.transform_stage_point(primary.x + primary.width, primary.y);
|
||||||
@@ -807,7 +822,7 @@ const PanelCorner = new Lang.Class({
|
|||||||
|
|
||||||
let rtlAwareContainer = this._box instanceof St.BoxLayout;
|
let rtlAwareContainer = this._box instanceof St.BoxLayout;
|
||||||
if (rtlAwareContainer &&
|
if (rtlAwareContainer &&
|
||||||
this._box.get_direction() == St.TextDirection.RTL) {
|
this._box.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
if (this._side == St.Side.LEFT)
|
if (this._side == St.Side.LEFT)
|
||||||
side = St.Side.RIGHT;
|
side = St.Side.RIGHT;
|
||||||
else if (this._side == St.Side.RIGHT)
|
else if (this._side == St.Side.RIGHT)
|
||||||
@@ -928,14 +943,14 @@ const Panel = new Lang.Class({
|
|||||||
this._rightBox = new St.BoxLayout({ name: 'panelRight' });
|
this._rightBox = new St.BoxLayout({ name: 'panelRight' });
|
||||||
this.actor.add_actor(this._rightBox);
|
this.actor.add_actor(this._rightBox);
|
||||||
|
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL)
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||||
this._leftCorner = new PanelCorner(this._rightBox, St.Side.LEFT);
|
this._leftCorner = new PanelCorner(this._rightBox, St.Side.LEFT);
|
||||||
else
|
else
|
||||||
this._leftCorner = new PanelCorner(this._leftBox, St.Side.LEFT);
|
this._leftCorner = new PanelCorner(this._leftBox, St.Side.LEFT);
|
||||||
|
|
||||||
this.actor.add_actor(this._leftCorner.actor);
|
this.actor.add_actor(this._leftCorner.actor);
|
||||||
|
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL)
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||||
this._rightCorner = new PanelCorner(this._leftBox, St.Side.RIGHT);
|
this._rightCorner = new PanelCorner(this._leftBox, St.Side.RIGHT);
|
||||||
else
|
else
|
||||||
this._rightCorner = new PanelCorner(this._rightBox, St.Side.RIGHT);
|
this._rightCorner = new PanelCorner(this._rightBox, St.Side.RIGHT);
|
||||||
@@ -944,6 +959,7 @@ const Panel = new Lang.Class({
|
|||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
|
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||||
|
|
||||||
/* Button on the left side of the panel. */
|
/* Button on the left side of the panel. */
|
||||||
if (global.session_type == Shell.SessionType.USER) {
|
if (global.session_type == Shell.SessionType.USER) {
|
||||||
@@ -1011,7 +1027,7 @@ const Panel = new Lang.Class({
|
|||||||
|
|
||||||
childBox.y1 = 0;
|
childBox.y1 = 0;
|
||||||
childBox.y2 = allocHeight;
|
childBox.y2 = allocHeight;
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
|
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
|
||||||
leftNaturalWidth);
|
leftNaturalWidth);
|
||||||
childBox.x2 = allocWidth;
|
childBox.x2 = allocWidth;
|
||||||
@@ -1030,7 +1046,7 @@ const Panel = new Lang.Class({
|
|||||||
|
|
||||||
childBox.y1 = 0;
|
childBox.y1 = 0;
|
||||||
childBox.y2 = allocHeight;
|
childBox.y2 = allocHeight;
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
childBox.x1 = 0;
|
childBox.x1 = 0;
|
||||||
childBox.x2 = Math.min(Math.floor(sideWidth),
|
childBox.x2 = Math.min(Math.floor(sideWidth),
|
||||||
rightNaturalWidth);
|
rightNaturalWidth);
|
||||||
@@ -1058,6 +1074,54 @@ const Panel = new Lang.Class({
|
|||||||
this._rightCorner.actor.allocate(childBox, flags);
|
this._rightCorner.actor.allocate(childBox, flags);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onButtonPress: function(actor, event) {
|
||||||
|
if (event.get_source() != actor)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let button = event.get_button();
|
||||||
|
if (button != 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let focusWindow = global.display.focus_window;
|
||||||
|
if (!focusWindow)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let dragWindow = focusWindow.is_attached_dialog() ? focusWindow.get_transient_for()
|
||||||
|
: focusWindow;
|
||||||
|
if (!dragWindow)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let rect = dragWindow.get_outer_rect();
|
||||||
|
let [stageX, stageY] = event.get_coords();
|
||||||
|
|
||||||
|
let allowDrag = dragWindow.maximized_vertically &&
|
||||||
|
stageX > rect.x && stageX < rect.x + rect.width;
|
||||||
|
|
||||||
|
if (!allowDrag)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
global.display.begin_grab_op(global.screen,
|
||||||
|
dragWindow,
|
||||||
|
Meta.GrabOp.MOVING,
|
||||||
|
false, /* pointer grab */
|
||||||
|
true, /* frame action */
|
||||||
|
button,
|
||||||
|
event.get_state(),
|
||||||
|
event.get_time(),
|
||||||
|
stageX, stageY);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
openAppMenu: function() {
|
||||||
|
let menu = this._appMenu.menu;
|
||||||
|
if (Main.overview.visible || menu.isOpen)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu.open();
|
||||||
|
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
},
|
||||||
|
|
||||||
startStatusArea: function() {
|
startStatusArea: function() {
|
||||||
for (let i = 0; i < this._status_area_order.length; i++) {
|
for (let i = 0; i < this._status_area_order.length; i++) {
|
||||||
let role = this._status_area_order[i];
|
let role = this._status_area_order[i];
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const Lang = imports.lang;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
@@ -99,7 +100,8 @@ const Button = new Lang.Class({
|
|||||||
_init: function(menuAlignment, nameText, dontCreateMenu) {
|
_init: function(menuAlignment, nameText, dontCreateMenu) {
|
||||||
this.parent({ reactive: true,
|
this.parent({ reactive: true,
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
track_hover: true });
|
track_hover: true,
|
||||||
|
accessible_role: Atk.Role.MENU });
|
||||||
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
||||||
@@ -147,15 +149,6 @@ const Button = new Lang.Class({
|
|||||||
if (!this.menu)
|
if (!this.menu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this.menu.isOpen) {
|
|
||||||
// Setting the max-height won't do any good if the minimum height of the
|
|
||||||
// menu is higher then the screen; it's useful if part of the menu is
|
|
||||||
// scrollable so the minimum height is smaller than the natural height
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
this.menu.actor.style = ('max-height: ' +
|
|
||||||
Math.round(monitor.height - Main.panel.actor.height) +
|
|
||||||
'px;');
|
|
||||||
}
|
|
||||||
this.menu.toggle();
|
this.menu.toggle();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -198,6 +191,14 @@ const Button = new Lang.Class({
|
|||||||
this.actor.add_style_pseudo_class('active');
|
this.actor.add_style_pseudo_class('active');
|
||||||
else
|
else
|
||||||
this.actor.remove_style_pseudo_class('active');
|
this.actor.remove_style_pseudo_class('active');
|
||||||
|
|
||||||
|
// Setting the max-height won't do any good if the minimum height of the
|
||||||
|
// menu is higher then the screen; it's useful if part of the menu is
|
||||||
|
// scrollable so the minimum height is smaller than the natural height
|
||||||
|
let monitor = Main.layoutManager.primaryMonitor;
|
||||||
|
this.menu.actor.style = ('max-height: ' +
|
||||||
|
Math.round(monitor.height - Main.panel.actor.height) +
|
||||||
|
'px;');
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const Lang = imports.lang;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const BoxPointer = imports.ui.boxpointer;
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -41,7 +42,8 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
this.actor = new Shell.GenericContainer({ style_class: 'popup-menu-item',
|
this.actor = new Shell.GenericContainer({ style_class: 'popup-menu-item',
|
||||||
reactive: params.reactive,
|
reactive: params.reactive,
|
||||||
track_hover: params.reactive,
|
track_hover: params.reactive,
|
||||||
can_focus: params.reactive });
|
can_focus: params.reactive,
|
||||||
|
accessible_role: Atk.Role.MENU_ITEM});
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
@@ -273,7 +275,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
let height = box.y2 - box.y1;
|
let height = box.y2 - box.y1;
|
||||||
let direction = this.actor.get_direction();
|
let direction = this.actor.get_text_direction();
|
||||||
|
|
||||||
if (this._dot) {
|
if (this._dot) {
|
||||||
// The dot is placed outside box
|
// The dot is placed outside box
|
||||||
@@ -283,7 +285,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
let dotBox = new Clutter.ActorBox();
|
let dotBox = new Clutter.ActorBox();
|
||||||
let dotWidth = Math.round(box.x1 / 2);
|
let dotWidth = Math.round(box.x1 / 2);
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
dotBox.x1 = Math.round(box.x1 / 4);
|
dotBox.x1 = Math.round(box.x1 / 4);
|
||||||
dotBox.x2 = dotBox.x1 + dotWidth;
|
dotBox.x2 = dotBox.x1 + dotWidth;
|
||||||
} else {
|
} else {
|
||||||
@@ -296,7 +298,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let x;
|
let x;
|
||||||
if (direction == St.TextDirection.LTR)
|
if (direction == Clutter.TextDirection.LTR)
|
||||||
x = box.x1;
|
x = box.x1;
|
||||||
else
|
else
|
||||||
x = box.x2;
|
x = box.x2;
|
||||||
@@ -311,7 +313,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
let availWidth, extraWidth;
|
let availWidth, extraWidth;
|
||||||
if (this._columnWidths) {
|
if (this._columnWidths) {
|
||||||
if (child.span == -1) {
|
if (child.span == -1) {
|
||||||
if (direction == St.TextDirection.LTR)
|
if (direction == Clutter.TextDirection.LTR)
|
||||||
availWidth = box.x2 - x;
|
availWidth = box.x2 - x;
|
||||||
else
|
else
|
||||||
availWidth = x - box.x1;
|
availWidth = x - box.x1;
|
||||||
@@ -323,7 +325,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
extraWidth = availWidth - naturalWidth;
|
extraWidth = availWidth - naturalWidth;
|
||||||
} else {
|
} else {
|
||||||
if (child.span == -1) {
|
if (child.span == -1) {
|
||||||
if (direction == St.TextDirection.LTR)
|
if (direction == Clutter.TextDirection.LTR)
|
||||||
availWidth = box.x2 - x;
|
availWidth = box.x2 - x;
|
||||||
else
|
else
|
||||||
availWidth = x - box.x1;
|
availWidth = x - box.x1;
|
||||||
@@ -333,7 +335,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
extraWidth = 0;
|
extraWidth = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == Clutter.TextDirection.LTR) {
|
||||||
if (child.expand) {
|
if (child.expand) {
|
||||||
childBox.x1 = x;
|
childBox.x1 = x;
|
||||||
childBox.x2 = x + availWidth;
|
childBox.x2 = x + availWidth;
|
||||||
@@ -371,7 +373,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
child.actor.allocate(childBox, flags);
|
child.actor.allocate(childBox, flags);
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR)
|
if (direction == Clutter.TextDirection.LTR)
|
||||||
x += availWidth + this._spacing;
|
x += availWidth + this._spacing;
|
||||||
else
|
else
|
||||||
x -= availWidth + this._spacing;
|
x -= availWidth + this._spacing;
|
||||||
@@ -444,6 +446,7 @@ const PopupAlternatingMenuItem = new Lang.Class({
|
|||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.state = PopupAlternatingMenuItemState.DEFAULT;
|
this.state = PopupAlternatingMenuItemState.DEFAULT;
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
|
||||||
this.actor.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
this.actor.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
||||||
},
|
},
|
||||||
@@ -543,6 +546,10 @@ const PopupSliderMenuItem = new Lang.Class({
|
|||||||
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
|
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
|
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
|
||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
||||||
|
this.actor.connect('notify::mapped', Lang.bind(this, function() {
|
||||||
|
if (!this.actor.mapped)
|
||||||
|
this._endDragging();
|
||||||
|
}));
|
||||||
|
|
||||||
this._releaseId = this._motionId = 0;
|
this._releaseId = this._motionId = 0;
|
||||||
this._dragging = false;
|
this._dragging = false;
|
||||||
@@ -711,7 +718,8 @@ const Switch = new Lang.Class({
|
|||||||
Name: 'Switch',
|
Name: 'Switch',
|
||||||
|
|
||||||
_init: function(state) {
|
_init: function(state) {
|
||||||
this.actor = new St.Bin({ style_class: 'toggle-switch' });
|
this.actor = new St.Bin({ style_class: 'toggle-switch',
|
||||||
|
accessible_role: Atk.Role.CHECK_BOX});
|
||||||
// Translators: this MUST be either "toggle-switch-us"
|
// Translators: this MUST be either "toggle-switch-us"
|
||||||
// (for toggle switches containing the English words
|
// (for toggle switches containing the English words
|
||||||
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
@@ -744,6 +752,10 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this._switch = new Switch(active);
|
this._switch = new Switch(active);
|
||||||
|
|
||||||
|
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||||
|
this.checkAccessibleState();
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
|
|
||||||
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
||||||
@@ -762,11 +774,14 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
this._statusBin.child = this._statusLabel;
|
this._statusBin.child = this._statusLabel;
|
||||||
this.actor.reactive = false;
|
this.actor.reactive = false;
|
||||||
this.actor.can_focus = false;
|
this.actor.can_focus = false;
|
||||||
|
this.actor.accessible_role = Atk.Role.MENU_ITEM;
|
||||||
} else {
|
} else {
|
||||||
this._statusBin.child = this._switch.actor;
|
this._statusBin.child = this._switch.actor;
|
||||||
this.actor.reactive = true;
|
this.actor.reactive = true;
|
||||||
this.actor.can_focus = true;
|
this.actor.can_focus = true;
|
||||||
|
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||||
}
|
}
|
||||||
|
this.checkAccessibleState();
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
@@ -786,6 +801,7 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
toggle: function() {
|
toggle: function() {
|
||||||
this._switch.toggle();
|
this._switch.toggle();
|
||||||
this.emit('toggled', this._switch.state);
|
this.emit('toggled', this._switch.state);
|
||||||
|
this.checkAccessibleState();
|
||||||
},
|
},
|
||||||
|
|
||||||
get state() {
|
get state() {
|
||||||
@@ -794,6 +810,20 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
setToggleState: function(state) {
|
setToggleState: function(state) {
|
||||||
this._switch.setToggleState(state);
|
this._switch.setToggleState(state);
|
||||||
|
this.checkAccessibleState();
|
||||||
|
},
|
||||||
|
|
||||||
|
checkAccessibleState: function() {
|
||||||
|
switch (this.actor.accessible_role) {
|
||||||
|
case Atk.Role.CHECK_MENU_ITEM:
|
||||||
|
if (this._switch.state)
|
||||||
|
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||||
|
else
|
||||||
|
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1594,6 +1624,10 @@ const PopupComboMenu = new Lang.Class({
|
|||||||
this._activeItemPos = position;
|
this._activeItemPos = position;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getActiveItem: function() {
|
||||||
|
return this._getMenuItems()[this._activeItemPos];
|
||||||
|
},
|
||||||
|
|
||||||
setItemVisible: function(position, visible) {
|
setItemVisible: function(position, visible) {
|
||||||
if (!visible && position == this._activeItemPos) {
|
if (!visible && position == this._activeItemPos) {
|
||||||
log('Trying to hide the active menu item.');
|
log('Trying to hide the active menu item.');
|
||||||
@@ -1615,6 +1649,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
|||||||
_init: function (params) {
|
_init: function (params) {
|
||||||
this.parent(params);
|
this.parent(params);
|
||||||
|
|
||||||
|
this.actor.accessible_role = Atk.Role.COMBO_BOX;
|
||||||
|
|
||||||
this._itemBox = new Shell.Stack();
|
this._itemBox = new Shell.Stack();
|
||||||
this.addActor(this._itemBox);
|
this.addActor(this._itemBox);
|
||||||
|
|
||||||
@@ -1711,6 +1747,11 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
|||||||
Lang.bind(this, this._itemActivated, position));
|
Lang.bind(this, this._itemActivated, position));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
checkAccessibleLabel: function() {
|
||||||
|
let activeItem = this._menu.getActiveItem();
|
||||||
|
this.actor.label_actor = activeItem.label;
|
||||||
|
},
|
||||||
|
|
||||||
setActiveItem: function(position) {
|
setActiveItem: function(position) {
|
||||||
let item = this._items[position];
|
let item = this._items[position];
|
||||||
if (!item)
|
if (!item)
|
||||||
@@ -1721,6 +1762,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
|||||||
this._activeItemPos = position;
|
this._activeItemPos = position;
|
||||||
for (let i = 0; i < this._items.length; i++)
|
for (let i = 0; i < this._items.length; i++)
|
||||||
this._items[i].visible = (i == this._activeItemPos);
|
this._items[i].visible = (i == this._activeItemPos);
|
||||||
|
|
||||||
|
this.checkAccessibleLabel();
|
||||||
},
|
},
|
||||||
|
|
||||||
setItemVisible: function(position, visible) {
|
setItemVisible: function(position, visible) {
|
||||||
|
|||||||
@@ -59,13 +59,13 @@ function loadRemoteSearchProvidersFromDir(dir, addProviderCallback) {
|
|||||||
if (!keyfile.has_group(KEY_FILE_GROUP))
|
if (!keyfile.has_group(KEY_FILE_GROUP))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let remoteProvider;
|
let remoteProvider, title;
|
||||||
try {
|
try {
|
||||||
let group = KEY_FILE_GROUP;
|
let group = KEY_FILE_GROUP;
|
||||||
let title = keyfile.get_locale_string(group, 'Title', null);
|
|
||||||
let icon = keyfile.get_string(group, 'Icon');
|
let icon = keyfile.get_string(group, 'Icon');
|
||||||
let busName = keyfile.get_string(group, 'BusName');
|
let busName = keyfile.get_string(group, 'BusName');
|
||||||
let objectPath = keyfile.get_string(group, 'ObjectPath');
|
let objectPath = keyfile.get_string(group, 'ObjectPath');
|
||||||
|
title = keyfile.get_locale_string(group, 'Title', null);
|
||||||
|
|
||||||
remoteProvider = new RemoteSearchProvider(title,
|
remoteProvider = new RemoteSearchProvider(title,
|
||||||
icon,
|
icon,
|
||||||
|
|||||||
@@ -209,6 +209,8 @@ const RunDialog = new Lang.Class({
|
|||||||
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
|
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
|
||||||
ShellEntry.addContextMenu(entry);
|
ShellEntry.addContextMenu(entry);
|
||||||
|
|
||||||
|
entry.label_actor = label;
|
||||||
|
|
||||||
this._entryText = entry.clutter_text;
|
this._entryText = entry.clutter_text;
|
||||||
this.contentLayout.add(entry, { y_align: St.Align.START });
|
this.contentLayout.add(entry, { y_align: St.Align.START });
|
||||||
this.setInitialKeyFocus(this._entryText);
|
this.setInitialKeyFocus(this._entryText);
|
||||||
@@ -242,7 +244,7 @@ const RunDialog = new Lang.Class({
|
|||||||
let symbol = e.get_key_symbol();
|
let symbol = e.get_key_symbol();
|
||||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||||
this.popModal();
|
this.popModal();
|
||||||
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
|
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
|
||||||
this._run(o.get_text(), true);
|
this._run(o.get_text(), true);
|
||||||
else
|
else
|
||||||
this._run(o.get_text(), false);
|
this._run(o.get_text(), false);
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ const SearchResultDisplay = new Lang.Class({
|
|||||||
_init: function(provider) {
|
_init: function(provider) {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
this.selectionIndex = -1;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -51,20 +50,10 @@ const SearchResultDisplay = new Lang.Class({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* clear:
|
* clear:
|
||||||
* Remove all results from this display and reset the selection index.
|
* Remove all results from this display.
|
||||||
*/
|
*/
|
||||||
clear: function() {
|
clear: function() {
|
||||||
this.actor.get_children().forEach(function (actor) { actor.destroy(); });
|
this.actor.get_children().forEach(function (actor) { actor.destroy(); });
|
||||||
this.selectionIndex = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getSelectionIndex:
|
|
||||||
*
|
|
||||||
* Returns the index of the selected actor, or -1 if none.
|
|
||||||
*/
|
|
||||||
getSelectionIndex: function() {
|
|
||||||
return this.selectionIndex;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,25 +64,6 @@ const SearchResultDisplay = new Lang.Class({
|
|||||||
getVisibleResultCount: function() {
|
getVisibleResultCount: function() {
|
||||||
throw new Error('Not implemented');
|
throw new Error('Not implemented');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* selectIndex:
|
|
||||||
* @index: Integer index
|
|
||||||
*
|
|
||||||
* Move selection to the given index.
|
|
||||||
* Return true if successful, false if no more results
|
|
||||||
* available.
|
|
||||||
*/
|
|
||||||
selectIndex: function() {
|
|
||||||
throw new Error('Not implemented');
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Activate the currently selected search result.
|
|
||||||
*/
|
|
||||||
activateSelected: function() {
|
|
||||||
throw new Error('Not implemented');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const SearchResult = new Lang.Class({
|
|||||||
if (content == null) {
|
if (content == null) {
|
||||||
content = new St.Bin({ style_class: 'search-result-content',
|
content = new St.Bin({ style_class: 'search-result-content',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
|
can_focus: true,
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
|
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
|
||||||
{ createIcon: this.metaInfo['createIcon'] });
|
{ createIcon: this.metaInfo['createIcon'] });
|
||||||
@@ -110,7 +111,6 @@ const GridSearchResults = new Lang.Class({
|
|||||||
this.actor = new St.Bin({ x_align: St.Align.START });
|
this.actor = new St.Bin({ x_align: St.Align.START });
|
||||||
|
|
||||||
this.actor.set_child(this._grid.actor);
|
this.actor.set_child(this._grid.actor);
|
||||||
this.selectionIndex = -1;
|
|
||||||
this._width = 0;
|
this._width = 0;
|
||||||
this.actor.connect('notify::width', Lang.bind(this, function() {
|
this.actor.connect('notify::width', Lang.bind(this, function() {
|
||||||
this._width = this.actor.width;
|
this._width = this.actor.width;
|
||||||
@@ -163,32 +163,14 @@ const GridSearchResults = new Lang.Class({
|
|||||||
|
|
||||||
clear: function () {
|
clear: function () {
|
||||||
this._grid.removeAll();
|
this._grid.removeAll();
|
||||||
this.selectionIndex = -1;
|
|
||||||
this._pendingClear = false;
|
this._pendingClear = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
selectIndex: function (index) {
|
getFirstResult: function() {
|
||||||
let nVisible = this.getVisibleResultCount();
|
if (this.getVisibleResultCount() > 0)
|
||||||
if (this.selectionIndex >= 0) {
|
return this._grid.getItemAtIndex(0)._delegate;
|
||||||
let prevActor = this._grid.getItemAtIndex(this.selectionIndex);
|
else
|
||||||
prevActor._delegate.setSelected(false);
|
return null;
|
||||||
}
|
|
||||||
this.selectionIndex = -1;
|
|
||||||
if (index >= nVisible)
|
|
||||||
return false;
|
|
||||||
else if (index < 0)
|
|
||||||
return false;
|
|
||||||
let targetActor = this._grid.getItemAtIndex(index);
|
|
||||||
targetActor._delegate.setSelected(true);
|
|
||||||
this.selectionIndex = index;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
activateSelected: function() {
|
|
||||||
if (this.selectionIndex < 0)
|
|
||||||
return;
|
|
||||||
let targetActor = this._grid.getItemAtIndex(this.selectionIndex);
|
|
||||||
targetActor._delegate.activate();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -230,7 +212,6 @@ const SearchResults = new Lang.Class({
|
|||||||
|
|
||||||
this._statusText = new St.Label({ style_class: 'search-statustext' });
|
this._statusText = new St.Label({ style_class: 'search-statustext' });
|
||||||
this._content.add(this._statusText);
|
this._content.add(this._statusText);
|
||||||
this._selectedProvider = -1;
|
|
||||||
this._providers = this._searchSystem.getProviders();
|
this._providers = this._searchSystem.getProviders();
|
||||||
this._providerMeta = [];
|
this._providerMeta = [];
|
||||||
this._providerMetaResults = {};
|
this._providerMetaResults = {};
|
||||||
@@ -244,10 +225,12 @@ const SearchResults = new Lang.Class({
|
|||||||
this._openSearchProviders = [];
|
this._openSearchProviders = [];
|
||||||
this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons));
|
this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons));
|
||||||
this._updateOpenSearchProviderButtons();
|
this._updateOpenSearchProviderButtons();
|
||||||
|
|
||||||
|
this._highlightDefault = false;
|
||||||
|
this._defaultResult = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateOpenSearchProviderButtons: function() {
|
_updateOpenSearchProviderButtons: function() {
|
||||||
this._selectedOpenSearchButton = -1;
|
|
||||||
for (let i = 0; i < this._openSearchProviders.length; i++)
|
for (let i = 0; i < this._openSearchProviders.length; i++)
|
||||||
this._openSearchProviders[i].actor.destroy();
|
this._openSearchProviders[i].actor.destroy();
|
||||||
this._openSearchProviders = this._openSearchSystem.getProviders();
|
this._openSearchProviders = this._openSearchSystem.getProviders();
|
||||||
@@ -255,18 +238,10 @@ const SearchResults = new Lang.Class({
|
|||||||
this._createOpenSearchProviderButton(this._openSearchProviders[i]);
|
this._createOpenSearchProviderButton(this._openSearchProviders[i]);
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateOpenSearchButtonState: function() {
|
|
||||||
for (let i = 0; i < this._openSearchProviders.length; i++) {
|
|
||||||
if (i == this._selectedOpenSearchButton)
|
|
||||||
this._openSearchProviders[i].actor.add_style_pseudo_class('selected');
|
|
||||||
else
|
|
||||||
this._openSearchProviders[i].actor.remove_style_pseudo_class('selected');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_createOpenSearchProviderButton: function(provider) {
|
_createOpenSearchProviderButton: function(provider) {
|
||||||
let button = new St.Button({ style_class: 'dash-search-button',
|
let button = new St.Button({ style_class: 'dash-search-button',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
|
can_focus: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
y_align: St.Align.MIDDLE });
|
y_align: St.Align.MIDDLE });
|
||||||
let bin = new St.Bin({ x_fill: false,
|
let bin = new St.Bin({ x_fill: false,
|
||||||
@@ -282,6 +257,17 @@ const SearchResults = new Lang.Class({
|
|||||||
button.set_child(bin);
|
button.set_child(bin);
|
||||||
provider.actor = button;
|
provider.actor = button;
|
||||||
|
|
||||||
|
button.setSelected = function(selected) {
|
||||||
|
if (selected)
|
||||||
|
button.add_style_pseudo_class('selected');
|
||||||
|
else
|
||||||
|
button.remove_style_pseudo_class('selected');
|
||||||
|
};
|
||||||
|
button.activate = Lang.bind(this, function() {
|
||||||
|
this._openSearchSystem.activateResult(provider.id);
|
||||||
|
});
|
||||||
|
button.actor = button;
|
||||||
|
|
||||||
this._searchProvidersBox.add(button);
|
this._searchProvidersBox.add(button);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -321,7 +307,6 @@ const SearchResults = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_clearDisplay: function() {
|
_clearDisplay: function() {
|
||||||
this._selectedProvider = -1;
|
|
||||||
this._visibleResultsCount = 0;
|
this._visibleResultsCount = 0;
|
||||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||||
let meta = this._providerMeta[i];
|
let meta = this._providerMeta[i];
|
||||||
@@ -340,8 +325,6 @@ const SearchResults = new Lang.Class({
|
|||||||
this._searchSystem.reset();
|
this._searchSystem.reset();
|
||||||
this._statusText.hide();
|
this._statusText.hide();
|
||||||
this._clearDisplay();
|
this._clearDisplay();
|
||||||
this._selectedOpenSearchButton = -1;
|
|
||||||
this._updateOpenSearchButtonState();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
startingSearch: function() {
|
startingSearch: function() {
|
||||||
@@ -359,20 +342,34 @@ const SearchResults = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_maybeSetInitialSelection: function() {
|
_maybeSetInitialSelection: function() {
|
||||||
if (this._selectedOpenSearchButton > -1 || this._selectedProvider > -1)
|
let newDefaultResult = null;
|
||||||
return;
|
|
||||||
|
|
||||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||||
let meta = this._providerMeta[i];
|
let meta = this._providerMeta[i];
|
||||||
if (meta.hasPendingResults)
|
if (meta.hasPendingResults)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (meta.actor.visible)
|
if (!meta.actor.visible)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let firstResult = meta.resultDisplay.getFirstResult();
|
||||||
|
if (firstResult) {
|
||||||
|
newDefaultResult = firstResult;
|
||||||
break; // select this one!
|
break; // select this one!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.selectDown(false);
|
if (!newDefaultResult)
|
||||||
this._initialSelectionSet = true;
|
newDefaultResult = this._searchProvidersBox.get_first_child();
|
||||||
|
|
||||||
|
if (newDefaultResult != this._defaultResult) {
|
||||||
|
if (this._defaultResult)
|
||||||
|
this._defaultResult.setSelected(false);
|
||||||
|
if (newDefaultResult)
|
||||||
|
newDefaultResult.setSelected(this._highlightDefault);
|
||||||
|
|
||||||
|
this._defaultResult = newDefaultResult;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateCurrentResults: function(searchSystem, results) {
|
_updateCurrentResults: function(searchSystem, results) {
|
||||||
@@ -398,10 +395,17 @@ const SearchResults = new Lang.Class({
|
|||||||
function(metas) {
|
function(metas) {
|
||||||
this._clearDisplayForProvider(provider);
|
this._clearDisplayForProvider(provider);
|
||||||
meta.actor.show();
|
meta.actor.show();
|
||||||
|
|
||||||
|
// Hinding drops the key focus if we have it
|
||||||
|
let focus = global.stage.get_key_focus();
|
||||||
this._content.hide();
|
this._content.hide();
|
||||||
|
|
||||||
meta.resultDisplay.renderResults(metas);
|
meta.resultDisplay.renderResults(metas);
|
||||||
this._maybeSetInitialSelection();
|
this._maybeSetInitialSelection();
|
||||||
|
|
||||||
this._content.show();
|
this._content.show();
|
||||||
|
if (this._content.contains(focus))
|
||||||
|
global.stage.set_key_focus(focus);
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
let metas = provider.getResultMetas(results);
|
let metas = provider.getResultMetas(results);
|
||||||
@@ -410,6 +414,7 @@ const SearchResults = new Lang.Class({
|
|||||||
meta.resultDisplay.renderResults(metas);
|
meta.resultDisplay.renderResults(metas);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this._maybeSetInitialSelection();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateResults: function(searchSystem, results) {
|
_updateResults: function(searchSystem, results) {
|
||||||
@@ -417,20 +422,15 @@ const SearchResults = new Lang.Class({
|
|||||||
this._statusText.set_text(_("No matching results."));
|
this._statusText.set_text(_("No matching results."));
|
||||||
this._statusText.show();
|
this._statusText.show();
|
||||||
} else {
|
} else {
|
||||||
this._selectedOpenSearchButton = -1;
|
|
||||||
this._updateOpenSearchButtonState();
|
|
||||||
this._selectedProvider = -1;
|
|
||||||
this._statusText.hide();
|
this._statusText.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
let terms = searchSystem.getTerms();
|
let terms = searchSystem.getTerms();
|
||||||
this._openSearchSystem.setSearchTerms(terms);
|
this._openSearchSystem.setSearchTerms(terms);
|
||||||
|
|
||||||
// To avoid CSS transitions causing flickering
|
// To avoid CSS transitions causing flickering when the first search
|
||||||
// of the selection when the first search result
|
// result stays the same, we hide the content while filling in the
|
||||||
// stays the same, we hide the content while
|
// results.
|
||||||
// filling in the results and setting the initial
|
|
||||||
// selection.
|
|
||||||
this._content.hide();
|
this._content.hide();
|
||||||
|
|
||||||
for (let i = 0; i < results.length; i++) {
|
for (let i = 0; i < results.length; i++) {
|
||||||
@@ -441,97 +441,38 @@ const SearchResults = new Lang.Class({
|
|||||||
this._updateProviderResults(provider, providerResults, terms);
|
this._updateProviderResults(provider, providerResults, terms);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._maybeSetInitialSelection();
|
|
||||||
this._content.show();
|
this._content.show();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_modifyActorSelection: function(resultDisplay, up) {
|
activateDefault: function() {
|
||||||
let success;
|
if (this._defaultResult)
|
||||||
let index = resultDisplay.getSelectionIndex();
|
this._defaultResult.activate();
|
||||||
if (up && index == -1)
|
|
||||||
index = resultDisplay.getVisibleResultCount() - 1;
|
|
||||||
else if (up)
|
|
||||||
index = index - 1;
|
|
||||||
else
|
|
||||||
index = index + 1;
|
|
||||||
return resultDisplay.selectIndex(index);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
selectUp: function(recursing) {
|
highlightDefault: function(highlight) {
|
||||||
if (this._selectedOpenSearchButton == -1) {
|
this._highlightDefault = highlight;
|
||||||
for (let i = this._selectedProvider; i >= 0; i--) {
|
if (this._defaultResult)
|
||||||
let meta = this._providerMeta[i];
|
this._defaultResult.setSelected(highlight);
|
||||||
if (!meta.actor.visible)
|
|
||||||
continue;
|
|
||||||
let success = this._modifyActorSelection(meta.resultDisplay, true);
|
|
||||||
if (success) {
|
|
||||||
this._selectedProvider = i;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._selectedOpenSearchButton == -1)
|
|
||||||
this._selectedOpenSearchButton = this._openSearchProviders.length;
|
|
||||||
this._selectedOpenSearchButton--;
|
|
||||||
this._updateOpenSearchButtonState();
|
|
||||||
if (this._selectedOpenSearchButton >= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this._providerMeta.length > 0 && !recursing) {
|
|
||||||
this._selectedProvider = this._providerMeta.length - 1;
|
|
||||||
this.selectUp(true);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
selectDown: function(recursing) {
|
navigateFocus: function(direction) {
|
||||||
let current = this._selectedProvider;
|
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
|
||||||
if (this._selectedOpenSearchButton == -1) {
|
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
|
||||||
if (current == -1)
|
direction == (rtl ? Gtk.DirectionType.RIGHT
|
||||||
current = 0;
|
: Gtk.DirectionType.LEFT) ||
|
||||||
for (let i = current; i < this._providerMeta.length; i++) {
|
direction == Gtk.DirectionType.UP) {
|
||||||
let meta = this._providerMeta[i];
|
this.actor.navigate_focus(null, direction, false);
|
||||||
if (!meta.actor.visible)
|
|
||||||
continue;
|
|
||||||
let success = this._modifyActorSelection(meta.resultDisplay, false);
|
|
||||||
if (success) {
|
|
||||||
this._selectedProvider = i;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._selectedOpenSearchButton++;
|
|
||||||
|
|
||||||
if (this._selectedOpenSearchButton < this._openSearchProviders.length) {
|
|
||||||
this._updateOpenSearchButtonState();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._selectedOpenSearchButton = -1;
|
let from = this._defaultResult ? this._defaultResult.actor : null;
|
||||||
this._updateOpenSearchButtonState();
|
this.actor.navigate_focus(from, direction, false);
|
||||||
|
if (this._defaultResult) {
|
||||||
if (this._providerMeta.length > 0 && !recursing) {
|
// The default result appears focused, so navigate directly to the
|
||||||
this._selectedProvider = 0;
|
// next result.
|
||||||
this.selectDown(true);
|
this.actor.navigate_focus(global.stage.key_focus, direction, false);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
activateSelected: function() {
|
|
||||||
if (this._selectedOpenSearchButton != -1) {
|
|
||||||
let provider = this._openSearchProviders[this._selectedOpenSearchButton];
|
|
||||||
this._openSearchSystem.activateResult(provider.id);
|
|
||||||
Main.overview.hide();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let current = this._selectedProvider;
|
|
||||||
if (current < 0)
|
|
||||||
return;
|
|
||||||
let meta = this._providerMeta[current];
|
|
||||||
let resultDisplay = meta.resultDisplay;
|
|
||||||
resultDisplay.activateSelected();
|
|
||||||
Main.overview.hide();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -106,10 +106,7 @@ const Indicator = new Lang.Class({
|
|||||||
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
|
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
|
||||||
this._killswitch.setStatus(_("hardware disabled"));
|
this._killswitch.setStatus(_("hardware disabled"));
|
||||||
|
|
||||||
if (has_adapter)
|
this.actor.visible = has_adapter;
|
||||||
this.actor.show();
|
|
||||||
else
|
|
||||||
this.actor.hide();
|
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
this._discoverable.actor.show();
|
this._discoverable.actor.show();
|
||||||
@@ -181,7 +178,7 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
// update connected property
|
// update connected property
|
||||||
if (device.can_connect)
|
if (device.can_connect)
|
||||||
item._connectedMenuitem.setToggleState(device.connected);
|
item._connectedMenuItem.setToggleState(device.connected);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createDeviceItem: function(device) {
|
_createDeviceItem: function(device) {
|
||||||
|
|||||||
584
js/ui/status/candidatePanel.js
Normal file
584
js/ui/status/candidatePanel.js
Normal file
@@ -0,0 +1,584 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
/*
|
||||||
|
* Copyright 2012 Red Hat, Inc.
|
||||||
|
* Copyright 2012 Peng Huang <shawn.p.huang@gmail.com>
|
||||||
|
* Copyright 2012 Takao Fujiwara <tfujiwar@redhat.com>
|
||||||
|
* Copyright 2012 Tiger Soldier <tigersoldi@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope it will be useful, but WITHOUT ANY
|
||||||
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const St = imports.gi.St;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const IBus = imports.gi.IBus;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
|
const ORIENTATION_HORIZONTAL = 0;
|
||||||
|
const ORIENTATION_VERTICAL = 1;
|
||||||
|
const ORIENTATION_SYSTEM = 2;
|
||||||
|
|
||||||
|
const StCandidateArea = new Lang.Class({
|
||||||
|
Name: 'StCandidateArea',
|
||||||
|
|
||||||
|
_init: function(orientation) {
|
||||||
|
this.actor = new St.BoxLayout({ style_class: 'candidate-area' });
|
||||||
|
this._orientation = orientation;
|
||||||
|
this._labels = [];
|
||||||
|
this._labelBoxes = [];
|
||||||
|
this._createUI();
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeOldWidgets: function() {
|
||||||
|
this.actor.destroy_all_children();
|
||||||
|
this._labels = [];
|
||||||
|
this._labelBoxes = [];
|
||||||
|
},
|
||||||
|
|
||||||
|
_createUI: function() {
|
||||||
|
let vbox = null;
|
||||||
|
let hbox = null;
|
||||||
|
if (this._orientation == ORIENTATION_VERTICAL) {
|
||||||
|
vbox = new St.BoxLayout({ vertical: true,
|
||||||
|
style_class: 'candidate-vertical' });
|
||||||
|
this.actor.add_child(vbox,
|
||||||
|
{ expand: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
hbox = new St.BoxLayout({ vertical: false,
|
||||||
|
style_class: 'candidate-horizontal' });
|
||||||
|
this.actor.add_child(hbox,
|
||||||
|
{ expand: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (let i = 0; i < 16; i++) {
|
||||||
|
let label1 = new St.Label({ text: '1234567890abcdef'.charAt(i) + '.',
|
||||||
|
style_class: 'popup-menu-item',
|
||||||
|
reactive: true });
|
||||||
|
|
||||||
|
let label2 = new St.Label({ text: '' ,
|
||||||
|
style_class: 'popup-menu-item',
|
||||||
|
reactive: true });
|
||||||
|
|
||||||
|
if (this._orientation == ORIENTATION_VERTICAL) {
|
||||||
|
let candidateHBox = new St.BoxLayout({vertical: false});
|
||||||
|
let labelBox = new St.Bin({ style_class: 'candidate-hlabel-content' });
|
||||||
|
labelBox.set_child(label1);
|
||||||
|
labelBox.set_fill(true, true);
|
||||||
|
let textBox = new St.Bin({ style_class: 'candidate-htext-content' });
|
||||||
|
|
||||||
|
textBox.set_child(label2);
|
||||||
|
textBox.set_fill(true, true);
|
||||||
|
candidateHBox.add_child(labelBox,
|
||||||
|
{ expand: false,
|
||||||
|
x_fill: false,
|
||||||
|
y_fill: true
|
||||||
|
});
|
||||||
|
candidateHBox.add_child(textBox,
|
||||||
|
{ expand: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true
|
||||||
|
});
|
||||||
|
vbox.add_child(candidateHBox);
|
||||||
|
this._labelBoxes.push(candidateHBox);
|
||||||
|
} else {
|
||||||
|
let candidateHBox = new St.BoxLayout({ style_class: 'candidate-vcontent',
|
||||||
|
vertical: false });
|
||||||
|
candidateHBox.add_child(label1);
|
||||||
|
candidateHBox.add_child(label2);
|
||||||
|
hbox.add_child(candidateHBox);
|
||||||
|
this._labelBoxes.push(candidateHBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._labels.push([label1, label2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < this._labels.length; i++) {
|
||||||
|
for(let j = 0; j < this._labels[i].length; j++) {
|
||||||
|
let widget = this._labels[i][j];
|
||||||
|
widget.candidateIndex = i;
|
||||||
|
widget.connect('button-press-event',
|
||||||
|
Lang.bind(this, function (widget, event) {
|
||||||
|
this._candidateClickedCB(widget, event);
|
||||||
|
}));
|
||||||
|
widget.connect('enter-event',
|
||||||
|
function(widget, event) {
|
||||||
|
widget.add_style_pseudo_class('hover');
|
||||||
|
});
|
||||||
|
widget.connect('leave-event',
|
||||||
|
function(widget, event) {
|
||||||
|
widget.remove_style_pseudo_class('hover');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_recreateUI: function() {
|
||||||
|
this._removeOldWidgets();
|
||||||
|
this._createUI();
|
||||||
|
},
|
||||||
|
|
||||||
|
_candidateClickedCB: function(widget, event) {
|
||||||
|
this.emit('candidate-clicked',
|
||||||
|
widget.candidateIndex,
|
||||||
|
event.get_button(),
|
||||||
|
event.get_state());
|
||||||
|
},
|
||||||
|
|
||||||
|
setLabels: function(labels) {
|
||||||
|
if (!labels || labels.length == 0) {
|
||||||
|
for (let i = 0; i < 16; i++) {
|
||||||
|
this._labels[i][0].set_text('1234567890abcdef'.charAt(i) + '.');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < labels.length && i < this._labels.length; i++) {
|
||||||
|
/* Use a ClutterActor attribute of Shell's theme instead of
|
||||||
|
* Pango.AttrList for the lookup window GUI and
|
||||||
|
* can ignore 'attrs' simply from IBus engines?
|
||||||
|
*/
|
||||||
|
let [text, attrs] = labels[i];
|
||||||
|
this._labels[i][0].set_text(text);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
setCandidates: function(candidates, focusCandidate, showCursor) {
|
||||||
|
if (focusCandidate == undefined) {
|
||||||
|
focusCandidate = 0;
|
||||||
|
}
|
||||||
|
if (showCursor == undefined) {
|
||||||
|
showCursor = true;
|
||||||
|
}
|
||||||
|
if (candidates.length > this._labels.length) {
|
||||||
|
assert();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < candidates.length; i++) {
|
||||||
|
/* Use a ClutterActor attribute of Shell's theme instead of
|
||||||
|
* Pango.AttrList for the lookup window GUI and
|
||||||
|
* can ignore 'attrs' simply from IBus engines?
|
||||||
|
*/
|
||||||
|
let [text, attrs] = candidates[i];
|
||||||
|
if (i == focusCandidate && showCursor) {
|
||||||
|
this._labels[i][1].add_style_pseudo_class('active');
|
||||||
|
} else {
|
||||||
|
this._labels[i][1].remove_style_pseudo_class('active');
|
||||||
|
}
|
||||||
|
this._labels[i][1].set_text(text);
|
||||||
|
this._labelBoxes[i].show();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = this._labelBoxes.length - 1; i >= candidates.length; i--) {
|
||||||
|
this._labelBoxes[i].hide();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
setOrientation: function(orientation) {
|
||||||
|
if (orientation == this._orientation)
|
||||||
|
return;
|
||||||
|
this._orientation = orientation;
|
||||||
|
this._recreateUI();
|
||||||
|
},
|
||||||
|
|
||||||
|
showAll: function() {
|
||||||
|
this.actor.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideAll: function() {
|
||||||
|
this.actor.hide();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(StCandidateArea.prototype);
|
||||||
|
|
||||||
|
const CandidatePanel = new Lang.Class({
|
||||||
|
Name: 'CandidatePanel',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._orientation = ORIENTATION_VERTICAL;
|
||||||
|
this._currentOrientation = this._orientation;
|
||||||
|
this._preeditVisible = false;
|
||||||
|
this._auxStringVisible = false;
|
||||||
|
this._lookupTableVisible = false;
|
||||||
|
this._lookupTable = null;
|
||||||
|
|
||||||
|
this._cursorLocation = [0, 0, 0, 0];
|
||||||
|
this._movedCursorLocation = null;
|
||||||
|
|
||||||
|
this._initSt();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_initSt: function() {
|
||||||
|
this._arrowSide = St.Side.TOP;
|
||||||
|
this._arrowAlignment = 0.0;
|
||||||
|
this._boxPointer = new BoxPointer.BoxPointer(this._arrowSide,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: true,
|
||||||
|
x_align: St.Align.START });
|
||||||
|
this.actor = this._boxPointer.actor;
|
||||||
|
this.actor._delegate = this;
|
||||||
|
this.actor.style_class = 'popup-menu-boxpointer';
|
||||||
|
this.actor.add_style_class_name('popup-menu');
|
||||||
|
this.actor.add_style_class_name('candidate-panel');
|
||||||
|
this._cursorActor = new Shell.GenericContainer();
|
||||||
|
Main.uiGroup.add_actor(this.actor);
|
||||||
|
Main.uiGroup.add_actor(this._cursorActor);
|
||||||
|
|
||||||
|
this._stCandidatePanel = new St.BoxLayout({ style_class: 'candidate-panel',
|
||||||
|
vertical: true });
|
||||||
|
this._boxPointer.bin.set_child(this._stCandidatePanel);
|
||||||
|
|
||||||
|
this._stPreeditLabel = new St.Label({ style_class: 'popup-menu-item',
|
||||||
|
text: '' });
|
||||||
|
if (!this._preeditVisible) {
|
||||||
|
this._stPreeditLabel.hide();
|
||||||
|
}
|
||||||
|
this._stAuxLabel = new St.Label({ style_class: 'popup-menu-item',
|
||||||
|
text: '' });
|
||||||
|
if (!this._auxVisible) {
|
||||||
|
this._stAuxLabel.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._separator = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
|
if (!this._preeditVisible && !this._auxVisible) {
|
||||||
|
this._separator.actor.hide();
|
||||||
|
}
|
||||||
|
// create candidates area
|
||||||
|
this._stCandidateArea = new StCandidateArea(this._currentOrientation);
|
||||||
|
this._stCandidateArea.connect('candidate-clicked',
|
||||||
|
Lang.bind(this, function(x, i, b, s) {
|
||||||
|
this.emit('candidate-clicked', i, b, s);}));
|
||||||
|
this.updateLookupTable(this._lookupTable, this._lookupTableVisible);
|
||||||
|
|
||||||
|
// TODO: page up/down GUI
|
||||||
|
|
||||||
|
this._packAllStWidgets();
|
||||||
|
this._isVisible = true;
|
||||||
|
this.hideAll();
|
||||||
|
this._checkShowStates();
|
||||||
|
},
|
||||||
|
|
||||||
|
_packAllStWidgets: function() {
|
||||||
|
this._stCandidatePanel.add_child(this._stPreeditLabel,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.MIDDLE,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
this._stCandidatePanel.add_child(this._stAuxLabel,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.MIDDLE,
|
||||||
|
y_align: St.Align.MIDDLE });
|
||||||
|
this._stCandidatePanel.add_child(this._separator.actor,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.MIDDLE,
|
||||||
|
y_align: St.Align.MIDDLE });
|
||||||
|
this._stCandidatePanel.add_child(this._stCandidateArea.actor,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.MIDDLE,
|
||||||
|
y_align: St.Align.END });
|
||||||
|
},
|
||||||
|
|
||||||
|
showPreeditText: function() {
|
||||||
|
this._preeditVisible = true;
|
||||||
|
this._stPreeditLabel.show();
|
||||||
|
this._checkShowStates();
|
||||||
|
},
|
||||||
|
|
||||||
|
hidePreeditText: function() {
|
||||||
|
this._preeditVisible = false;
|
||||||
|
this._checkShowStates();
|
||||||
|
this._stPreeditLabel.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
updatePreeditText: function(text, cursorPos, visible) {
|
||||||
|
if (visible) {
|
||||||
|
this.showPreeditText();
|
||||||
|
} else {
|
||||||
|
this.hidePreeditText();
|
||||||
|
}
|
||||||
|
let str = text.get_text();
|
||||||
|
this._stPreeditLabel.set_text(str);
|
||||||
|
|
||||||
|
let attrs = text.get_attributes();
|
||||||
|
for (let i = 0; attrs != null && attrs.get(i) != null; i++) {
|
||||||
|
let attr = attrs.get(i);
|
||||||
|
if (attr.get_attr_type() == IBus.AttrType.BACKGROUND) {
|
||||||
|
let startIndex = attr.get_start_index();
|
||||||
|
let endIndex = attr.get_end_index();
|
||||||
|
let len = GLib.utf8_strlen(str, -1);
|
||||||
|
let markup = '';
|
||||||
|
if (startIndex == 0 &&
|
||||||
|
endIndex == GLib.utf8_strlen(str, -1)) {
|
||||||
|
markup = markup.concat(str);
|
||||||
|
} else {
|
||||||
|
if (startIndex > 0) {
|
||||||
|
markup = markup.concat(GLib.utf8_substring(str,
|
||||||
|
0,
|
||||||
|
startIndex));
|
||||||
|
}
|
||||||
|
if (startIndex != endIndex) {
|
||||||
|
markup = markup.concat('<span background=\"#555555\">');
|
||||||
|
markup = markup.concat(GLib.utf8_substring(str,
|
||||||
|
startIndex,
|
||||||
|
endIndex));
|
||||||
|
markup = markup.concat('</span>');
|
||||||
|
}
|
||||||
|
if (endIndex < len) {
|
||||||
|
markup = markup.concat(GLib.utf8_substring(str,
|
||||||
|
endIndex,
|
||||||
|
len));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let clutter_text = this._stPreeditLabel.get_clutter_text();
|
||||||
|
clutter_text.set_markup(markup);
|
||||||
|
clutter_text.queue_redraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
showAuxiliaryText: function() {
|
||||||
|
this._auxStringVisible = true;
|
||||||
|
this._stAuxLabel.show();
|
||||||
|
this._checkShowStates();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideAuxiliaryText: function() {
|
||||||
|
this._auxStringVisible = false;
|
||||||
|
this._checkShowStates();
|
||||||
|
this._stAuxLabel.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
updateAuxiliaryText: function(text, show) {
|
||||||
|
if (show) {
|
||||||
|
this.showAuxiliaryText();
|
||||||
|
} else {
|
||||||
|
this.hideAuxiliaryText();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._stAuxLabel.set_text(text.get_text());
|
||||||
|
},
|
||||||
|
|
||||||
|
_refreshLabels: function() {
|
||||||
|
let newLabels = [];
|
||||||
|
for (let i = 0; this._lookupTable.get_label(i) != null; i++) {
|
||||||
|
let label = this._lookupTable.get_label(i);
|
||||||
|
newLabels.push([label.get_text(), label.get_attributes()]);
|
||||||
|
}
|
||||||
|
this._stCandidateArea.setLabels(newLabels);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_getCandidatesInCurrentPage: function() {
|
||||||
|
let cursorPos = this._lookupTable.get_cursor_pos();
|
||||||
|
let pageSize = this._lookupTable.get_page_size();
|
||||||
|
let page = ((cursorPos == 0) ? 0 : Math.floor(cursorPos / pageSize));
|
||||||
|
let startIndex = page * pageSize;
|
||||||
|
let endIndex = Math.min((page + 1) * pageSize,
|
||||||
|
this._lookupTable.get_number_of_candidates());
|
||||||
|
let candidates = [];
|
||||||
|
for (let i = startIndex; i < endIndex; i++) {
|
||||||
|
candidates.push(this._lookupTable.get_candidate(i));
|
||||||
|
}
|
||||||
|
return candidates;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getCursorPosInCurrentPage: function() {
|
||||||
|
let cursorPos = this._lookupTable.get_cursor_pos();
|
||||||
|
let pageSize = this._lookupTable.get_page_size();
|
||||||
|
let posInPage = cursorPos % pageSize;
|
||||||
|
return posInPage;
|
||||||
|
},
|
||||||
|
|
||||||
|
_refreshCandidates: function() {
|
||||||
|
let candidates = this._getCandidatesInCurrentPage();
|
||||||
|
let newCandidates = [];
|
||||||
|
for (let i = 0; i < candidates.length; i++) {
|
||||||
|
let candidate = candidates[i];
|
||||||
|
newCandidates.push([candidate.get_text(),
|
||||||
|
candidate.get_attributes()]);
|
||||||
|
}
|
||||||
|
this._stCandidateArea.setCandidates(newCandidates,
|
||||||
|
this._getCursorPosInCurrentPage(),
|
||||||
|
this._lookupTable.is_cursor_visible());
|
||||||
|
},
|
||||||
|
|
||||||
|
updateLookupTable: function(lookupTable, visible) {
|
||||||
|
// hide lookup table
|
||||||
|
if (!visible) {
|
||||||
|
this.hideLookupTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._lookupTable = lookupTable || new IBus.LookupTable();
|
||||||
|
let orientation = this._lookupTable.get_orientation();
|
||||||
|
if (orientation != ORIENTATION_HORIZONTAL &&
|
||||||
|
orientation != ORIENTATION_VERTICAL) {
|
||||||
|
orientation = this._orientation;
|
||||||
|
}
|
||||||
|
this.setCurrentOrientation(orientation);
|
||||||
|
this._refreshCandidates();
|
||||||
|
this._refreshLabels();
|
||||||
|
|
||||||
|
// show lookup table
|
||||||
|
if (visible) {
|
||||||
|
this.showLookupTable();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
showLookupTable: function() {
|
||||||
|
this._lookupTableVisible = true;
|
||||||
|
this._stCandidateArea.showAll();
|
||||||
|
this._checkShowStates();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideLookupTable: function() {
|
||||||
|
this._lookupTableVisible = false;
|
||||||
|
this._checkShowStates();
|
||||||
|
this._stCandidateArea.hideAll();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageUpLookupTable: function() {
|
||||||
|
this._lookupTable.page_up();
|
||||||
|
this._refreshCandidates();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageDownLookup_table: function() {
|
||||||
|
this._lookupTable.page_down();
|
||||||
|
this._refreshCandidates();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorUpLookupTable: function() {
|
||||||
|
this._lookupTable.cursor_up();
|
||||||
|
this._refreshCandidates();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorDownLookupTable: function() {
|
||||||
|
this._lookupTable.cursor_down();
|
||||||
|
this._refreshCandidates();
|
||||||
|
},
|
||||||
|
|
||||||
|
setCursorLocation: function(x, y, w, h) {
|
||||||
|
// if cursor location is changed, we reset the moved cursor location
|
||||||
|
if (this._cursorLocation.join() != [x, y, w, h].join()) {
|
||||||
|
this._cursorLocation = [x, y, w, h];
|
||||||
|
this._movedCursorLocation = null;
|
||||||
|
this._checkPosition();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkShowStates: function() {
|
||||||
|
this._checkSeparatorShowStates();
|
||||||
|
if (this._preeditVisible ||
|
||||||
|
this._auxStringVisible ||
|
||||||
|
this._lookupTableVisible) {
|
||||||
|
this._checkPosition();
|
||||||
|
this.showAll();
|
||||||
|
this.emit('show');
|
||||||
|
} else {
|
||||||
|
this.hideAll();
|
||||||
|
this.emit('hide');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkSeparatorShowStates: function() {
|
||||||
|
if (this._preeditVisible || this._auxStringVisible) {
|
||||||
|
this._separator.actor.show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this._separator.actor.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
let text = IBus.Text.new_from_string('');
|
||||||
|
this.updatePreeditText(text, 0, false);
|
||||||
|
text = IBus.Text.new_from_string('');
|
||||||
|
this.updateAuxiliaryText(text, false);
|
||||||
|
this.updateLookupTable(null, false);
|
||||||
|
this.hideAll();
|
||||||
|
},
|
||||||
|
|
||||||
|
setCurrentOrientation: function(orientation) {
|
||||||
|
if (this._currentOrientation == orientation) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._currentOrientation = orientation;
|
||||||
|
this._stCandidateArea.setOrientation(orientation);
|
||||||
|
},
|
||||||
|
|
||||||
|
setOrientation: function(orientation) {
|
||||||
|
this._orientation = orientation;
|
||||||
|
this.updateLookupTable(this._lookupTable, this._lookupTableVisible);
|
||||||
|
},
|
||||||
|
|
||||||
|
getCurrentOrientation: function() {
|
||||||
|
return this._currentOrientation;
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkPosition: function() {
|
||||||
|
let cursorLocation = this._movedCursorLocation || this._cursorLocation;
|
||||||
|
let [cursorX, cursorY, cursorWidth, cursorHeight] = cursorLocation;
|
||||||
|
|
||||||
|
let windowRight = cursorX + cursorWidth + this.actor.get_width();
|
||||||
|
let windowBottom = cursorY + cursorHeight + this.actor.get_height();
|
||||||
|
|
||||||
|
this._cursorActor.set_position(cursorX, cursorY);
|
||||||
|
this._cursorActor.set_size(cursorWidth, cursorHeight);
|
||||||
|
|
||||||
|
let monitor = Main.layoutManager.findMonitorForActor(this._cursorActor);
|
||||||
|
let [sx, sy] = [monitor.x + monitor.width, monitor.y + monitor.height];
|
||||||
|
|
||||||
|
if (windowBottom > sy) {
|
||||||
|
this._arrowSide = St.Side.BOTTOM;
|
||||||
|
} else {
|
||||||
|
this._arrowSide = St.Side.TOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._boxPointer._arrowSide = this._arrowSide;
|
||||||
|
this._boxPointer.setArrowOrigin(this._arrowSide);
|
||||||
|
this._boxPointer.setPosition(this._cursorActor, this._arrowAlignment);
|
||||||
|
},
|
||||||
|
|
||||||
|
showAll: function() {
|
||||||
|
if (!this._isVisible) {
|
||||||
|
this.actor.opacity = 255;
|
||||||
|
this.actor.show();
|
||||||
|
this._isVisible = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
hideAll: function() {
|
||||||
|
if (this._isVisible) {
|
||||||
|
this.actor.opacity = 0;
|
||||||
|
this.actor.hide();
|
||||||
|
this._isVisible = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
move: function(x, y) {
|
||||||
|
this.actor.set_position(x, y);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(CandidatePanel.prototype);
|
||||||
@@ -2,46 +2,56 @@
|
|||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||||
const Gkbd = imports.gi.Gkbd;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
try {
|
||||||
|
var IBus = imports.gi.IBus;
|
||||||
|
const CandidatePanel = imports.ui.status.candidatePanel;
|
||||||
|
} catch (e) {
|
||||||
|
var IBus = null;
|
||||||
|
}
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
|
const DESKTOP_INPUT_SOURCES_KEYBINDINGS_SCHEMA = 'org.gnome.desktop.input-sources.keybindings';
|
||||||
|
const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
|
||||||
|
const KEY_CURRENT_IS = 'current';
|
||||||
|
const KEY_INPUT_SOURCES = 'sources';
|
||||||
|
|
||||||
const LayoutMenuItem = new Lang.Class({
|
const LayoutMenuItem = new Lang.Class({
|
||||||
Name: 'LayoutMenuItem',
|
Name: 'LayoutMenuItem',
|
||||||
Extends: PopupMenu.PopupBaseMenuItem,
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
_init: function(config, id, indicator, long_name) {
|
_init: function(name, shortName, xkbLayout, xkbVariant, ibusEngine) {
|
||||||
this.parent();
|
this.parent();
|
||||||
|
|
||||||
this._config = config;
|
this.label = new St.Label({ text: name });
|
||||||
this._id = id;
|
this.indicator = new St.Label({ text: shortName });
|
||||||
this.label = new St.Label({ text: long_name });
|
|
||||||
this.indicator = indicator;
|
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
this.addActor(this.indicator);
|
this.addActor(this.indicator);
|
||||||
},
|
|
||||||
|
|
||||||
activate: function(event) {
|
this.sourceName = name;
|
||||||
this.parent(event);
|
this.shortName = shortName;
|
||||||
|
this.xkbLayout = xkbLayout;
|
||||||
this._config.lock_group(this._id);
|
this.xkbVariant = xkbVariant;
|
||||||
|
this.ibusEngine = ibusEngine;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const XKBIndicator = new Lang.Class({
|
const InputSourceIndicator = new Lang.Class({
|
||||||
Name: 'XKBIndicator',
|
Name: 'InputSourceIndicator',
|
||||||
Extends: PanelMenu.Button,
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(0.0);
|
this.parent(0.0, _("Keyboard"));
|
||||||
|
|
||||||
this._container = new Shell.GenericContainer();
|
this._container = new Shell.GenericContainer();
|
||||||
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||||
@@ -50,61 +60,237 @@ const XKBIndicator = new Lang.Class({
|
|||||||
this.actor.add_actor(this._container);
|
this.actor.add_actor(this._container);
|
||||||
this.actor.add_style_class_name('panel-status-button');
|
this.actor.add_style_class_name('panel-status-button');
|
||||||
|
|
||||||
this._iconActor = new St.Icon({ icon_name: 'keyboard', icon_type: St.IconType.SYMBOLIC, style_class: 'system-status-icon' });
|
|
||||||
this._container.add_actor(this._iconActor);
|
|
||||||
this._labelActors = [ ];
|
this._labelActors = [ ];
|
||||||
this._layoutItems = [ ];
|
this._layoutItems = [ ];
|
||||||
|
|
||||||
this._showFlags = false;
|
this._settings = new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_SCHEMA });
|
||||||
this._config = Gkbd.Configuration.get();
|
this._settings.connect('changed::' + KEY_CURRENT_IS, Lang.bind(this, this._currentISChanged));
|
||||||
this._config.connect('changed', Lang.bind(this, this._syncConfig));
|
this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged));
|
||||||
this._config.connect('group-changed', Lang.bind(this, this._syncGroup));
|
|
||||||
this._config.start_listen();
|
|
||||||
|
|
||||||
this._syncConfig();
|
if (IBus)
|
||||||
|
this._ibusInit();
|
||||||
|
|
||||||
|
this._inputSourcesChanged();
|
||||||
|
|
||||||
if (global.session_type == Shell.SessionType.USER) {
|
if (global.session_type == Shell.SessionType.USER) {
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
|
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
|
let description = this._selectedLayout.xkbLayout;
|
||||||
|
if (this._selectedLayout.xkbVariant.length > 0)
|
||||||
|
description = description + '\t' + this._selectedLayout.xkbVariant;
|
||||||
|
Util.spawn(['gkbd-keyboard-display', '-l', description]);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
this.menu.addSettingsAction(_("Region and Language Settings"), 'gnome-region-panel.desktop');
|
this.menu.addSettingsAction(_("Region and Language Settings"), 'gnome-region-panel.desktop');
|
||||||
|
|
||||||
|
global.display.add_keybinding('switch-next',
|
||||||
|
new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Lang.bind(this, this._switchNext));
|
||||||
|
global.display.add_keybinding('switch-previous',
|
||||||
|
new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Lang.bind(this, this._switchPrevious));
|
||||||
},
|
},
|
||||||
|
|
||||||
_adjustGroupNames: function(names) {
|
_ibusInit: function() {
|
||||||
// Disambiguate duplicate names with a subscript
|
IBus.init();
|
||||||
// This is O(N^2) to avoid sorting names
|
this._ibus = new IBus.Bus();
|
||||||
// but N <= 4 so who cares?
|
if (!this._ibus.is_connected()) {
|
||||||
|
log('ibus-daemon is not running');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < names.length; i++) {
|
this._ibus.request_name(IBus.SERVICE_PANEL,
|
||||||
let name = names[i];
|
IBus.BusNameFlag.ALLOW_REPLACEMENT |
|
||||||
let cnt = 0;
|
IBus.BusNameFlag.REPLACE_EXISTING);
|
||||||
for (let j = i + 1; j < names.length; j++) {
|
this._panel = new IBus.PanelService({ connection: this._ibus.get_connection(),
|
||||||
if (names[j] == name) {
|
object_path: IBus.PATH_PANEL });
|
||||||
cnt++;
|
this._ibusInitPanelService();
|
||||||
// U+2081 SUBSCRIPT ONE
|
|
||||||
names[j] = name + String.fromCharCode(0x2081 + cnt);
|
this._candidatePanel = new CandidatePanel.CandidatePanel();
|
||||||
}
|
this._ibusInitCandidatePanel();
|
||||||
|
},
|
||||||
|
|
||||||
|
_ibusInitCandidatePanel: function() {
|
||||||
|
this._candidatePanel.connect('cursor-up',
|
||||||
|
Lang.bind(this, function(widget) {
|
||||||
|
this.cursorUp();
|
||||||
|
}));
|
||||||
|
this._candidatePanel.connect('cursor-down',
|
||||||
|
Lang.bind(this, function(widget) {
|
||||||
|
this.cursorDown();
|
||||||
|
}));
|
||||||
|
this._candidatePanel.connect('page-up',
|
||||||
|
Lang.bind(this, function(widget) {
|
||||||
|
this.pageUp();
|
||||||
|
}));
|
||||||
|
this._candidatePanel.connect('page-down',
|
||||||
|
Lang.bind(this, function(widget) {
|
||||||
|
this.pageDown();
|
||||||
|
}));
|
||||||
|
this._candidatePanel.connect('candidate-clicked',
|
||||||
|
Lang.bind(this, function(widget, index, button, state) {
|
||||||
|
this.candidateClicked(index, button, state);
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_ibusInitPanelService: function() {
|
||||||
|
this._panel.connect('set-cursor-location',
|
||||||
|
Lang.bind(this, this.setCursorLocation));
|
||||||
|
this._panel.connect('update-preedit-text',
|
||||||
|
Lang.bind(this, this.updatePreeditText));
|
||||||
|
this._panel.connect('show-preedit-text',
|
||||||
|
Lang.bind(this, this.showPreeditText));
|
||||||
|
this._panel.connect('hide-preedit-text',
|
||||||
|
Lang.bind(this, this.hidePreeditText));
|
||||||
|
this._panel.connect('update-auxiliary-text',
|
||||||
|
Lang.bind(this, this.updateAuxiliaryText));
|
||||||
|
this._panel.connect('show-auxiliary-text',
|
||||||
|
Lang.bind(this, this.showAuxiliaryText));
|
||||||
|
this._panel.connect('hide-auxiliary-text',
|
||||||
|
Lang.bind(this, this.hideAuxiliaryText));
|
||||||
|
this._panel.connect('update-lookup-table',
|
||||||
|
Lang.bind(this, this.updateLookupTable));
|
||||||
|
this._panel.connect('show-lookup-table',
|
||||||
|
Lang.bind(this, this.showLookupTable));
|
||||||
|
this._panel.connect('hide-lookup-table',
|
||||||
|
Lang.bind(this, this.hideLookupTable));
|
||||||
|
this._panel.connect('page-up-lookup-table',
|
||||||
|
Lang.bind(this, this.pageUpLookupTable));
|
||||||
|
this._panel.connect('page-down-lookup-table',
|
||||||
|
Lang.bind(this, this.pageDownLookupTable));
|
||||||
|
this._panel.connect('cursor-up-lookup-table',
|
||||||
|
Lang.bind(this, this.cursorUpLookupTable));
|
||||||
|
this._panel.connect('cursor-down-lookup-table',
|
||||||
|
Lang.bind(this, this.cursorDownLookupTable));
|
||||||
|
this._panel.connect('focus-in', Lang.bind(this, this.focusIn));
|
||||||
|
this._panel.connect('focus-out', Lang.bind(this, this.focusOut));
|
||||||
|
},
|
||||||
|
|
||||||
|
setCursorLocation: function(panel, x, y, w, h) {
|
||||||
|
this._candidatePanel.setCursorLocation(x, y, w, h);
|
||||||
|
},
|
||||||
|
|
||||||
|
updatePreeditText: function(panel, text, cursorPos, visible) {
|
||||||
|
this._candidatePanel.updatePreeditText(text, cursorPos, visible);
|
||||||
|
},
|
||||||
|
|
||||||
|
showPreeditText: function(panel) {
|
||||||
|
this._candidatePanel.showPreeditText();
|
||||||
|
},
|
||||||
|
|
||||||
|
hidePreeditText: function(panel) {
|
||||||
|
this._candidatePanel.hidePreeditText();
|
||||||
|
},
|
||||||
|
|
||||||
|
updateAuxiliaryText: function(panel, text, visible) {
|
||||||
|
this._candidatePanel.updateAuxiliaryText(text, visible);
|
||||||
|
},
|
||||||
|
|
||||||
|
showAuxiliaryText: function(panel) {
|
||||||
|
this._candidatePanel.showAuxiliaryText();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideAuxiliaryText: function(panel) {
|
||||||
|
this._candidatePanel.hideAuxiliaryText();
|
||||||
|
},
|
||||||
|
|
||||||
|
updateLookupTable: function(panel, lookupTable, visible) {
|
||||||
|
this._candidatePanel.updateLookupTable(lookupTable, visible);
|
||||||
|
},
|
||||||
|
|
||||||
|
showLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.showLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
hideLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.hideLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageUpLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.pageUpLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageDownLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.pageDownLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorUpLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.cursorUpLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorDownLookupTable: function(panel) {
|
||||||
|
this._candidatePanel.cursorDownLookupTable();
|
||||||
|
},
|
||||||
|
|
||||||
|
focusIn: function(panel, path) {
|
||||||
|
},
|
||||||
|
|
||||||
|
focusOut: function(panel, path) {
|
||||||
|
this._candidatePanel.reset();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorUp: function() {
|
||||||
|
this._panel.cursor_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
cursorDown: function() {
|
||||||
|
this._panel.cursor_down();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageUp: function() {
|
||||||
|
this._panel.page_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
pageDown: function() {
|
||||||
|
this._panel.page_down();
|
||||||
|
},
|
||||||
|
|
||||||
|
candidateClicked: function(index, button, state) {
|
||||||
|
this._panel.candidate_clicked(index, button, state);
|
||||||
|
},
|
||||||
|
|
||||||
|
_currentISChanged: function() {
|
||||||
|
let source = this._settings.get_value(KEY_CURRENT_IS);
|
||||||
|
let name = source.get_child_value(0).get_string()[0];
|
||||||
|
|
||||||
|
if (this._selectedLayout) {
|
||||||
|
this._selectedLayout.setShowDot(false);
|
||||||
|
this._selectedLayout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._selectedLabel) {
|
||||||
|
this._container.set_skip_paint(this._selectedLabel, true);
|
||||||
|
this._selectedLabel = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < this._layoutItems.length; ++i) {
|
||||||
|
let item = this._layoutItems[i];
|
||||||
|
if (item.sourceName == name) {
|
||||||
|
item.setShowDot(true);
|
||||||
|
this._selectedLayout = item;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (cnt != 0)
|
|
||||||
names[i] = name + '\u2081';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return names;
|
for (let i = 0; i < this._labelActors.length; ++i) {
|
||||||
|
let actor = this._labelActors[i];
|
||||||
|
if (actor.sourceName == name) {
|
||||||
|
this._selectedLabel = actor;
|
||||||
|
this._container.set_skip_paint(actor, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this._selectedLayout || !this._selectedLabel)
|
||||||
|
this._layoutItems[0].activate();
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncConfig: function() {
|
_inputSourcesChanged: function() {
|
||||||
this._showFlags = this._config.if_flags_shown();
|
let sources = this._settings.get_value(KEY_INPUT_SOURCES);
|
||||||
if (this._showFlags) {
|
if (sources.n_children() > 1) {
|
||||||
this._container.set_skip_paint(this._iconActor, false);
|
|
||||||
} else {
|
|
||||||
this._container.set_skip_paint(this._iconActor, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
let groups = this._config.get_group_names();
|
|
||||||
if (groups.length > 1) {
|
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
} else {
|
} else {
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
@@ -117,55 +303,69 @@ const XKBIndicator = new Lang.Class({
|
|||||||
for (let i = 0; i < this._labelActors.length; i++)
|
for (let i = 0; i < this._labelActors.length; i++)
|
||||||
this._labelActors[i].destroy();
|
this._labelActors[i].destroy();
|
||||||
|
|
||||||
let short_names = this._adjustGroupNames(this._config.get_short_group_names());
|
|
||||||
|
|
||||||
this._selectedLayout = null;
|
this._selectedLayout = null;
|
||||||
this._layoutItems = [ ];
|
this._layoutItems = [ ];
|
||||||
this._selectedLabel = null;
|
this._selectedLabel = null;
|
||||||
this._labelActors = [ ];
|
this._labelActors = [ ];
|
||||||
for (let i = 0; i < groups.length; i++) {
|
|
||||||
let icon_name = this._config.get_group_name(i);
|
for (let i = 0; i < sources.n_children(); ++i) {
|
||||||
let actor;
|
let name = sources.get_child_value(i).get_child_value(0).get_string()[0];
|
||||||
if (this._showFlags)
|
let shortName = sources.get_child_value(i).get_child_value(1).get_string()[0];
|
||||||
actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.SYMBOLIC, style_class: 'popup-menu-icon' });
|
let xkbLayout = sources.get_child_value(i).get_child_value(2).get_string()[0];
|
||||||
else
|
let xkbVariant = sources.get_child_value(i).get_child_value(3).get_string()[0];
|
||||||
actor = new St.Label({ text: short_names[i] });
|
let ibusEngine = sources.get_child_value(i).get_child_value(4).get_string()[0];
|
||||||
let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
|
|
||||||
item._short_group_name = short_names[i];
|
let item = new LayoutMenuItem(name, shortName, xkbLayout, xkbVariant, ibusEngine);
|
||||||
item._icon_name = icon_name;
|
|
||||||
this._layoutItems.push(item);
|
this._layoutItems.push(item);
|
||||||
this.menu.addMenuItem(item, i);
|
this.menu.addMenuItem(item, i);
|
||||||
|
item.connect('activate', Lang.bind(this, function() {
|
||||||
|
if (this._selectedLayout == null || item.sourceName != this._selectedLayout.sourceName) {
|
||||||
|
let name = GLib.Variant.new_string(item.sourceName);
|
||||||
|
let shortName = GLib.Variant.new_string(item.shortName);
|
||||||
|
let xkbLayout = GLib.Variant.new_string(item.xkbLayout);
|
||||||
|
let xkbVariant = GLib.Variant.new_string(item.xkbVariant);
|
||||||
|
let ibusEngine = GLib.Variant.new_string(item.ibusEngine);
|
||||||
|
let tuple = GLib.Variant.new_tuple([name, shortName, xkbLayout, xkbVariant, ibusEngine], 5);
|
||||||
|
this._settings.set_value(KEY_CURRENT_IS, tuple);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
let shortLabel = new St.Label({ text: short_names[i] });
|
let shortLabel = new St.Label({ text: shortName });
|
||||||
|
shortLabel.sourceName = name;
|
||||||
this._labelActors.push(shortLabel);
|
this._labelActors.push(shortLabel);
|
||||||
this._container.add_actor(shortLabel);
|
this._container.add_actor(shortLabel);
|
||||||
this._container.set_skip_paint(shortLabel, true);
|
this._container.set_skip_paint(shortLabel, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._syncGroup();
|
this._currentISChanged();
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncGroup: function() {
|
_switchNext: function() {
|
||||||
let selected = this._config.get_current_group();
|
if (!this._selectedLayout || !this._selectedLabel) {
|
||||||
|
this._layoutItems[0].activate();
|
||||||
if (this._selectedLayout) {
|
return;
|
||||||
this._selectedLayout.setShowDot(false);
|
}
|
||||||
this._selectedLayout = null;
|
for (let i = 0; i < this._layoutItems.length; ++i) {
|
||||||
|
let item = this._layoutItems[i];
|
||||||
|
if (item.sourceName == this._selectedLayout.sourceName) {
|
||||||
|
this._layoutItems[(++i == this._layoutItems.length) ? 0 : i].activate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
if (this._selectedLabel) {
|
_switchPrevious: function() {
|
||||||
this._container.set_skip_paint(this._selectedLabel, true);
|
if (!this._selectedLayout || !this._selectedLabel) {
|
||||||
this._selectedLabel = null;
|
this._layoutItems[0].activate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < this._layoutItems.length; ++i) {
|
||||||
|
let item = this._layoutItems[i];
|
||||||
|
if (item.sourceName == this._selectedLayout.sourceName) {
|
||||||
|
this._layoutItems[(--i == -1) ? (this._layoutItems.length - 1) : i].activate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let item = this._layoutItems[selected];
|
|
||||||
item.setShowDot(true);
|
|
||||||
|
|
||||||
this._iconActor.icon_name = item._icon_name;
|
|
||||||
this._selectedLabel = this._labelActors[selected];
|
|
||||||
this._container.set_skip_paint(this._selectedLabel, this._showFlags);
|
|
||||||
|
|
||||||
this._selectedLayout = item;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_containerGetPreferredWidth: function(container, for_height, alloc) {
|
_containerGetPreferredWidth: function(container, for_height, alloc) {
|
||||||
@@ -173,15 +373,11 @@ const XKBIndicator = new Lang.Class({
|
|||||||
// for the height of all children, but we ignore the results
|
// for the height of all children, but we ignore the results
|
||||||
// for those we don't actually display.
|
// for those we don't actually display.
|
||||||
let max_min_width = 0, max_natural_width = 0;
|
let max_min_width = 0, max_natural_width = 0;
|
||||||
if (this._showFlags)
|
|
||||||
[max_min_width, max_natural_width] = this._iconActor.get_preferred_width(for_height);
|
|
||||||
|
|
||||||
for (let i = 0; i < this._labelActors.length; i++) {
|
for (let i = 0; i < this._labelActors.length; i++) {
|
||||||
let [min_width, natural_width] = this._labelActors[i].get_preferred_width(for_height);
|
let [min_width, natural_width] = this._labelActors[i].get_preferred_width(for_height);
|
||||||
if (!this._showFlags) {
|
max_min_width = Math.max(max_min_width, min_width);
|
||||||
max_min_width = Math.max(max_min_width, min_width);
|
max_natural_width = Math.max(max_natural_width, natural_width);
|
||||||
max_natural_width = Math.max(max_natural_width, natural_width);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc.min_size = max_min_width;
|
alloc.min_size = max_min_width;
|
||||||
@@ -190,15 +386,11 @@ const XKBIndicator = new Lang.Class({
|
|||||||
|
|
||||||
_containerGetPreferredHeight: function(container, for_width, alloc) {
|
_containerGetPreferredHeight: function(container, for_width, alloc) {
|
||||||
let max_min_height = 0, max_natural_height = 0;
|
let max_min_height = 0, max_natural_height = 0;
|
||||||
if (this._showFlags)
|
|
||||||
[max_min_height, max_natural_height] = this._iconActor.get_preferred_height(for_width);
|
|
||||||
|
|
||||||
for (let i = 0; i < this._labelActors.length; i++) {
|
for (let i = 0; i < this._labelActors.length; i++) {
|
||||||
let [min_height, natural_height] = this._labelActors[i].get_preferred_height(for_width);
|
let [min_height, natural_height] = this._labelActors[i].get_preferred_height(for_width);
|
||||||
if (!this._showFlags) {
|
max_min_height = Math.max(max_min_height, min_height);
|
||||||
max_min_height = Math.max(max_min_height, min_height);
|
max_natural_height = Math.max(max_natural_height, natural_height);
|
||||||
max_natural_height = Math.max(max_natural_height, natural_height);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc.min_size = max_min_height;
|
alloc.min_size = max_min_height;
|
||||||
@@ -212,7 +404,6 @@ const XKBIndicator = new Lang.Class({
|
|||||||
box.y2 -= box.y1;
|
box.y2 -= box.y1;
|
||||||
box.y1 = 0;
|
box.y1 = 0;
|
||||||
|
|
||||||
this._iconActor.allocate_align_fill(box, 0.5, 0, false, false, flags);
|
|
||||||
for (let i = 0; i < this._labelActors.length; i++)
|
for (let i = 0; i < this._labelActors.length; i++)
|
||||||
this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags);
|
this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -707,10 +707,7 @@ const NMDeviceWired = new Lang.Class({
|
|||||||
// the device
|
// the device
|
||||||
// we can do it here because addConnection and removeConnection
|
// we can do it here because addConnection and removeConnection
|
||||||
// both call _createSection at some point
|
// both call _createSection at some point
|
||||||
if (this._connections.length <= 1)
|
this.section.actor.visible = this._connections.length > 1;
|
||||||
this.section.actor.hide();
|
|
||||||
else
|
|
||||||
this.section.actor.show();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createAutomaticConnection: function() {
|
_createAutomaticConnection: function() {
|
||||||
@@ -1038,13 +1035,8 @@ const NMDeviceWireless = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setEnabled: function(enabled) {
|
setEnabled: function(enabled) {
|
||||||
if (enabled) {
|
this.statusItem.actor.visible = enabled;
|
||||||
this.statusItem.actor.show();
|
this.section.actor.visible = enabled;
|
||||||
this.section.actor.show();
|
|
||||||
} else {
|
|
||||||
this.statusItem.actor.hide();
|
|
||||||
this.section.actor.hide();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function() {
|
activate: function() {
|
||||||
@@ -1538,7 +1530,7 @@ const NMApplet = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('network-error', _("Network"));
|
this.parent('network-offline', _("Network"));
|
||||||
|
|
||||||
this._client = NMClient.Client.new();
|
this._client = NMClient.Client.new();
|
||||||
|
|
||||||
@@ -1844,7 +1836,7 @@ const NMApplet = new Lang.Class({
|
|||||||
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
|
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
|
||||||
// find a good device to be considered primary
|
// find a good device to be considered primary
|
||||||
a._primaryDevice = null;
|
a._primaryDevice = null;
|
||||||
let devices = a.get_devices();
|
let devices = a.get_devices() || [];
|
||||||
for (let j = 0; j < devices.length; j++) {
|
for (let j = 0; j < devices.length; j++) {
|
||||||
let d = devices[j];
|
let d = devices[j];
|
||||||
if (d._delegate) {
|
if (d._delegate) {
|
||||||
|
|||||||
@@ -149,13 +149,9 @@ const Indicator = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (showInput) {
|
|
||||||
this._inputTitle.actor.show();
|
this._inputTitle.actor.visible = showInput;
|
||||||
this._inputSlider.actor.show();
|
this._inputSlider.actor.visible = showInput;
|
||||||
} else {
|
|
||||||
this._inputTitle.actor.hide();
|
|
||||||
this._inputSlider.actor.hide();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_volumeToIcon: function(volume) {
|
_volumeToIcon: function(volume) {
|
||||||
|
|||||||
@@ -853,6 +853,8 @@ const ChatNotification = new Lang.Class({
|
|||||||
|
|
||||||
this._lastGroupActor.add(body, props.childProps);
|
this._lastGroupActor.add(body, props.childProps);
|
||||||
|
|
||||||
|
this.updated();
|
||||||
|
|
||||||
let timestamp = props.timestamp;
|
let timestamp = props.timestamp;
|
||||||
this._history.unshift({ actor: body, time: timestamp,
|
this._history.unshift({ actor: body, time: timestamp,
|
||||||
realMessage: group != 'meta' });
|
realMessage: group != 'meta' });
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@@ -209,9 +210,14 @@ const ClutterFrameTicker = new Lang.Class({
|
|||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
// We don't have a finite duration; tweener will tell us to stop
|
// We don't have a finite duration; tweener will tell us to stop
|
||||||
// when we need to stop, so use 1000 seconds as "infinity"
|
// when we need to stop, so use 1000 seconds as "infinity", and
|
||||||
|
// set the timeline to loop. Doing this means we have to track
|
||||||
|
// time ourselves, since clutter timeline's time will cycle
|
||||||
|
// instead of strictly increase.
|
||||||
this._timeline = new Clutter.Timeline({ duration: 1000*1000 });
|
this._timeline = new Clutter.Timeline({ duration: 1000*1000 });
|
||||||
|
this._timeline.set_loop(true);
|
||||||
this._startTime = -1;
|
this._startTime = -1;
|
||||||
|
this._currentTime = -1;
|
||||||
|
|
||||||
this._timeline.connect('new-frame', Lang.bind(this,
|
this._timeline.connect('new-frame', Lang.bind(this,
|
||||||
function(timeline, frame) {
|
function(timeline, frame) {
|
||||||
@@ -234,17 +240,18 @@ const ClutterFrameTicker = new Lang.Class({
|
|||||||
// That looks bad, so we always start at the first frame of the
|
// That looks bad, so we always start at the first frame of the
|
||||||
// animation then only do frame dropping from there.
|
// animation then only do frame dropping from there.
|
||||||
if (this._startTime < 0)
|
if (this._startTime < 0)
|
||||||
this._startTime = this._timeline.get_elapsed_time();
|
this._startTime = GLib.get_monotonic_time() / 1000.0;
|
||||||
|
|
||||||
// currentTime is in milliseconds
|
// currentTime is in milliseconds
|
||||||
let perf_log = Shell.PerfLog.get_default();
|
let perf_log = Shell.PerfLog.get_default();
|
||||||
|
this._currentTime = GLib.get_monotonic_time() / 1000.0 - this._startTime;
|
||||||
perf_log.event("tweener.framePrepareStart");
|
perf_log.event("tweener.framePrepareStart");
|
||||||
this.emit('prepare-frame');
|
this.emit('prepare-frame');
|
||||||
perf_log.event("tweener.framePrepareDone");
|
perf_log.event("tweener.framePrepareDone");
|
||||||
},
|
},
|
||||||
|
|
||||||
getTime : function() {
|
getTime : function() {
|
||||||
return this._timeline.get_elapsed_time();
|
return this._currentTime;
|
||||||
},
|
},
|
||||||
|
|
||||||
start : function() {
|
start : function() {
|
||||||
@@ -257,6 +264,7 @@ const ClutterFrameTicker = new Lang.Class({
|
|||||||
stop : function() {
|
stop : function() {
|
||||||
this._timeline.stop();
|
this._timeline.stop();
|
||||||
this._startTime = -1;
|
this._startTime = -1;
|
||||||
|
this._currentTime = -1;
|
||||||
global.end_work();
|
global.end_work();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const Shell = imports.gi.Shell;
|
|||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Tp = imports.gi.TelepathyGLib;
|
const Tp = imports.gi.TelepathyGLib;
|
||||||
const UPowerGlib = imports.gi.UPowerGlib;
|
const UPowerGlib = imports.gi.UPowerGlib;
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const GnomeSession = imports.misc.gnomeSession;
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -56,6 +57,7 @@ const IMStatusItem = new Lang.Class({
|
|||||||
this._icon.icon_name = iconName;
|
this._icon.icon_name = iconName;
|
||||||
|
|
||||||
this.label = new St.Label({ text: label });
|
this.label = new St.Label({ text: label });
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -163,6 +165,8 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
Lang.bind(this, this._IMAccountsChanged));
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
this._accountMgr.connect('account-removed',
|
this._accountMgr.connect('account-removed',
|
||||||
Lang.bind(this, this._IMAccountsChanged));
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
|
this._accountMgr.connect('account-validity-changed',
|
||||||
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
this._accountMgr.prepare_async(null, Lang.bind(this,
|
this._accountMgr.prepare_async(null, Lang.bind(this,
|
||||||
function(mgr) {
|
function(mgr) {
|
||||||
let [presence, status, msg] = mgr.get_most_available_presence();
|
let [presence, status, msg] = mgr.get_most_available_presence();
|
||||||
@@ -388,8 +392,15 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
if (!this._imPresenceRestored)
|
if (!this._imPresenceRestored)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
let savedStatus = global.settings.get_int('saved-session-presence');
|
||||||
if (!this._sessionPresenceRestored) {
|
if (!this._sessionPresenceRestored) {
|
||||||
let savedStatus = global.settings.get_int('saved-session-presence');
|
|
||||||
|
// We should never save/restore a status other than AVAILABLE
|
||||||
|
// or BUSY
|
||||||
|
if (savedStatus != GnomeSession.PresenceStatus.AVAILABLE &&
|
||||||
|
savedStatus != GnomeSession.PresenceStatus.BUSY)
|
||||||
|
savedStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
||||||
|
|
||||||
if (sessionStatus != savedStatus) {
|
if (sessionStatus != savedStatus) {
|
||||||
this._presence.status = savedStatus;
|
this._presence.status = savedStatus;
|
||||||
return;
|
return;
|
||||||
@@ -397,7 +408,10 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
this._sessionPresenceRestored = true;
|
this._sessionPresenceRestored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
global.settings.set_int('saved-session-presence', sessionStatus);
|
if ((sessionStatus == GnomeSession.PresenceStatus.AVAILABLE ||
|
||||||
|
sessionStatus == GnomeSession.PresenceStatus.BUSY) &&
|
||||||
|
savedStatus != sessionStatus)
|
||||||
|
global.settings.set_int('saved-session-presence', sessionStatus);
|
||||||
|
|
||||||
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
|
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
|
||||||
let newPresence, status;
|
let newPresence, status;
|
||||||
@@ -423,6 +437,8 @@ const UserMenuButton = new Lang.Class({
|
|||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(0.0);
|
this.parent(0.0);
|
||||||
|
|
||||||
|
this.actor.accessible_role = Atk.Role.MENU;
|
||||||
|
|
||||||
let box = new St.BoxLayout({ name: 'panelUserMenu' });
|
let box = new St.BoxLayout({ name: 'panelUserMenu' });
|
||||||
this.actor.add_actor(box);
|
this.actor.add_actor(box);
|
||||||
|
|
||||||
@@ -538,18 +554,12 @@ const UserMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_updateLogout: function() {
|
_updateLogout: function() {
|
||||||
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||||
if (allowLogout)
|
this._logoutItem.actor.visible = allowLogout;
|
||||||
this._logoutItem.actor.show();
|
|
||||||
else
|
|
||||||
this._logoutItem.actor.hide();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLockScreen: function() {
|
_updateLockScreen: function() {
|
||||||
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
||||||
if (allowLockScreen)
|
this._logoutItem.actor.visible = allowLockScreen;
|
||||||
this._lockScreenItem.actor.show();
|
|
||||||
else
|
|
||||||
this._lockScreenItem.actor.hide();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveShutdown: function() {
|
_updateHaveShutdown: function() {
|
||||||
@@ -568,10 +578,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
if (!this._suspendOrPowerOffItem)
|
if (!this._suspendOrPowerOffItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this._haveShutdown && !this._haveSuspend)
|
this._suspendOrPowerOffItem.actor.visible = this._haveShutdown || this._haveSuspend;
|
||||||
this._suspendOrPowerOffItem.actor.hide();
|
|
||||||
else
|
|
||||||
this._suspendOrPowerOffItem.actor.show();
|
|
||||||
|
|
||||||
// If we can't suspend show Power Off... instead
|
// If we can't suspend show Power Off... instead
|
||||||
// and disable the alt key
|
// and disable the alt key
|
||||||
@@ -718,8 +725,8 @@ const UserMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
if (this._haveSuspend &&
|
if (this._haveSuspend &&
|
||||||
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||||
// Ensure we only suspend after the screensaver has activated
|
// Ensure we only suspend after locking the screen
|
||||||
this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() {
|
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||||
this._upClient.suspend_sync(null);
|
this._upClient.suspend_sync(null);
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -133,14 +133,14 @@ const SearchTab = new Lang.Class({
|
|||||||
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
|
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
|
||||||
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
|
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
|
||||||
// We can't connect to 'activate' here because search providers
|
// We can't connect to 'activate' here because search providers
|
||||||
// might want to do something with the modifiers in activateSelected.
|
// might want to do something with the modifiers in activateDefault.
|
||||||
let symbol = e.get_key_symbol();
|
let symbol = e.get_key_symbol();
|
||||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||||
if (this._searchTimeoutId > 0) {
|
if (this._searchTimeoutId > 0) {
|
||||||
Mainloop.source_remove(this._searchTimeoutId);
|
Mainloop.source_remove(this._searchTimeoutId);
|
||||||
this._doSearch();
|
this._doSearch();
|
||||||
}
|
}
|
||||||
this._searchResults.activateSelected();
|
this._searchResults.activateDefault();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -148,9 +148,33 @@ const SearchTab = new Lang.Class({
|
|||||||
|
|
||||||
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
||||||
|
|
||||||
global.stage.connect('notify::key-focus', Lang.bind(this, this._updateCursorVisibility));
|
global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));
|
||||||
|
|
||||||
this._capturedEventId = 0;
|
this._capturedEventId = 0;
|
||||||
|
|
||||||
|
this._text.connect('key-focus-in', Lang.bind(this, function() {
|
||||||
|
this._searchResults.highlightDefault(true);
|
||||||
|
}));
|
||||||
|
this._text.connect('key-focus-out', Lang.bind(this, function() {
|
||||||
|
this._searchResults.highlightDefault(false);
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Since the entry isn't inside the results container we install this
|
||||||
|
// dummy widget as the last results container child so that we can
|
||||||
|
// include the entry in the keynav tab path...
|
||||||
|
this._focusTrap = new St.Bin({ can_focus: true });
|
||||||
|
this._focusTrap.connect('key-focus-in', Lang.bind(this, function() {
|
||||||
|
this._entry.grab_key_focus();
|
||||||
|
}));
|
||||||
|
// ... but make it unfocusable using arrow keys keynav by making its
|
||||||
|
// bounding box always contain the possible focus source's bounding
|
||||||
|
// box since StWidget's keynav logic won't ever select it as a target
|
||||||
|
// in that case.
|
||||||
|
this._focusTrap.add_constraint(new Clutter.BindConstraint({ source: this._searchResults.actor,
|
||||||
|
coordinate: Clutter.BindCoordinate.ALL }));
|
||||||
|
this._searchResults.actor.add_actor(this._focusTrap);
|
||||||
|
|
||||||
|
global.focus_manager.add_group(this._searchResults.actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
@@ -163,21 +187,29 @@ const SearchTab = new Lang.Class({
|
|||||||
// incorrectly when we remove focus
|
// incorrectly when we remove focus
|
||||||
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
|
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
|
||||||
if (this._text.text != '')
|
if (this._text.text != '')
|
||||||
this._reset();
|
this.reset();
|
||||||
},
|
},
|
||||||
|
|
||||||
_reset: function () {
|
reset: function () {
|
||||||
this._text.text = '';
|
|
||||||
|
|
||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
|
|
||||||
|
this._entry.text = '';
|
||||||
|
|
||||||
this._text.set_cursor_visible(true);
|
this._text.set_cursor_visible(true);
|
||||||
this._text.set_selection(0, 0);
|
this._text.set_selection(0, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateCursorVisibility: function() {
|
_onStageKeyFocusChanged: function() {
|
||||||
let focus = global.stage.get_key_focus();
|
let focus = global.stage.get_key_focus();
|
||||||
this._text.set_cursor_visible(focus == this._text);
|
let appearFocused = (this._entry.contains(focus) ||
|
||||||
|
this._searchResults.actor.contains(focus));
|
||||||
|
|
||||||
|
this._text.set_cursor_visible(appearFocused);
|
||||||
|
|
||||||
|
if (appearFocused)
|
||||||
|
this._entry.add_style_pseudo_class('focus');
|
||||||
|
else
|
||||||
|
this._entry.remove_style_pseudo_class('focus');
|
||||||
},
|
},
|
||||||
|
|
||||||
_onMapped: function() {
|
_onMapped: function() {
|
||||||
@@ -228,7 +260,7 @@ const SearchTab = new Lang.Class({
|
|||||||
if (this._iconClickedId == 0) {
|
if (this._iconClickedId == 0) {
|
||||||
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._reset();
|
this.reset();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
this._activate();
|
this._activate();
|
||||||
@@ -254,25 +286,37 @@ const SearchTab = new Lang.Class({
|
|||||||
|
|
||||||
_onKeyPress: function(entry, event) {
|
_onKeyPress: function(entry, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.Up) {
|
if (symbol == Clutter.Escape) {
|
||||||
if (!this.active)
|
|
||||||
return true;
|
|
||||||
this._searchResults.selectUp(false);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (symbol == Clutter.Down) {
|
|
||||||
if (!this.active)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
this._searchResults.selectDown(false);
|
|
||||||
return true;
|
|
||||||
} else if (symbol == Clutter.Escape) {
|
|
||||||
if (this._isActivated()) {
|
if (this._isActivated()) {
|
||||||
this._reset();
|
this.reset();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (this.active) {
|
||||||
|
let arrowNext, nextDirection;
|
||||||
|
if (entry.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
|
arrowNext = Clutter.Left;
|
||||||
|
nextDirection = Gtk.DirectionType.LEFT;
|
||||||
|
} else {
|
||||||
|
arrowNext = Clutter.Right;
|
||||||
|
nextDirection = Gtk.DirectionType.RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (symbol == Clutter.Tab) {
|
||||||
|
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_FORWARD);
|
||||||
|
return true;
|
||||||
|
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||||
|
this._focusTrap.can_focus = false;
|
||||||
|
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_BACKWARD);
|
||||||
|
this._focusTrap.can_focus = true;
|
||||||
|
return true;
|
||||||
|
} else if (symbol == Clutter.Down) {
|
||||||
|
this._searchResults.navigateFocus(Gtk.DirectionType.DOWN);
|
||||||
|
return true;
|
||||||
|
} else if (symbol == arrowNext && this._text.position == -1) {
|
||||||
|
this._searchResults.navigateFocus(nextDirection);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -284,7 +328,7 @@ const SearchTab = new Lang.Class({
|
|||||||
// the user clicked outside after activating the entry, but
|
// the user clicked outside after activating the entry, but
|
||||||
// with no search term entered and no keyboard button pressed
|
// with no search term entered and no keyboard button pressed
|
||||||
// - cancel the search
|
// - cancel the search
|
||||||
this._reset();
|
this.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -486,7 +530,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
childBox.y1 = 0;
|
childBox.y1 = 0;
|
||||||
childBox.y2 = allocHeight;
|
childBox.y2 = allocHeight;
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
childBox.x1 = allocWidth - barNatWidth;
|
childBox.x1 = allocWidth - barNatWidth;
|
||||||
childBox.x2 = allocWidth;
|
childBox.x2 = allocWidth;
|
||||||
} else {
|
} else {
|
||||||
@@ -495,7 +539,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._tabBox.allocate(childBox, flags);
|
this._tabBox.allocate(childBox, flags);
|
||||||
|
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
childBox.x1 = 0;
|
childBox.x1 = 0;
|
||||||
childBox.x2 = searchNatWidth;
|
childBox.x2 = searchNatWidth;
|
||||||
} else {
|
} else {
|
||||||
@@ -511,24 +555,34 @@ const ViewSelector = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onStageKeyPress: function(actor, event) {
|
_onStageKeyPress: function(actor, event) {
|
||||||
let modifiers = Shell.get_event_state(event);
|
let modifiers = event.get_state();
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
|
|
||||||
if (symbol == Clutter.Escape) {
|
if (symbol == Clutter.Escape) {
|
||||||
Main.overview.hide();
|
if (this._searchTab.active)
|
||||||
|
this._searchTab.reset();
|
||||||
|
else
|
||||||
|
Main.overview.hide();
|
||||||
return true;
|
return true;
|
||||||
} else if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
|
} else if (Clutter.keysym_to_unicode(symbol) ||
|
||||||
if (symbol == Clutter.Page_Up) {
|
(symbol == Clutter.BackSpace && this._searchTab.active)) {
|
||||||
if (!this._searchTab.active)
|
this._searchTab.startSearch(event);
|
||||||
|
} else if (!this._searchTab.active) {
|
||||||
|
if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
|
||||||
|
if (symbol == Clutter.Page_Up) {
|
||||||
this._prevTab();
|
this._prevTab();
|
||||||
return true;
|
return true;
|
||||||
} else if (symbol == Clutter.Page_Down) {
|
} else if (symbol == Clutter.Page_Down) {
|
||||||
if (!this._searchTab.active)
|
|
||||||
this._nextTab();
|
this._nextTab();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (symbol == Clutter.Tab) {
|
||||||
|
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
return true;
|
||||||
|
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||||
|
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else if (Clutter.keysym_to_unicode(symbol)) {
|
|
||||||
this._searchTab.startSearch(event);
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const FISH_NAME = 'wanda';
|
|||||||
const FISH_SPEED = 300;
|
const FISH_SPEED = 300;
|
||||||
const FISH_COMMAND = 'fortune';
|
const FISH_COMMAND = 'fortune';
|
||||||
|
|
||||||
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/pixmaps';
|
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/fish';
|
||||||
const FISH_GROUP = 'Fish Animation';
|
const FISH_GROUP = 'Fish Animation';
|
||||||
|
|
||||||
const MAGIC_FISH_KEY = 'free the fish';
|
const MAGIC_FISH_KEY = 'free the fish';
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ const WindowAttentionHandler = new Lang.Class({
|
|||||||
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getTitleAndBanner: function(app, window) {
|
||||||
|
let title = app.get_name();
|
||||||
|
let banner = _("'%s' is ready").format(window.get_title());
|
||||||
|
return [title, banner]
|
||||||
|
},
|
||||||
|
|
||||||
_onWindowDemandsAttention : function(display, window) {
|
_onWindowDemandsAttention : function(display, window) {
|
||||||
// We don't want to show the notification when the window is already focused,
|
// We don't want to show the notification when the window is already focused,
|
||||||
// because this is rather pointless.
|
// because this is rather pointless.
|
||||||
@@ -30,16 +36,15 @@ const WindowAttentionHandler = new Lang.Class({
|
|||||||
let source = new Source(app, window);
|
let source = new Source(app, window);
|
||||||
Main.messageTray.add(source);
|
Main.messageTray.add(source);
|
||||||
|
|
||||||
let banner = _("'%s' is ready").format(window.title);
|
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||||
let title = app.get_name();
|
|
||||||
|
|
||||||
let notification = new MessageTray.Notification(source, title, banner);
|
let notification = new MessageTray.Notification(source, title, banner);
|
||||||
source.notify(notification);
|
source.notify(notification);
|
||||||
|
|
||||||
source.signalIDs.push(window.connect('notify::title',
|
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
|
||||||
Lang.bind(this, function() {
|
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||||
notification.update(title, banner);
|
notification.update(title, banner);
|
||||||
})));
|
})));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||||
const WINDOW_ANIMATION_TIME = 0.25;
|
const WINDOW_ANIMATION_TIME = 0.25;
|
||||||
const DIM_TIME = 0.500;
|
const DIM_TIME = 0.500;
|
||||||
const UNDIM_TIME = 0.250;
|
const UNDIM_TIME = 0.250;
|
||||||
@@ -134,6 +135,10 @@ const WindowManager = new Lang.Class({
|
|||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
Meta.keybindings_set_custom_handler('switch-panels',
|
Meta.keybindings_set_custom_handler('switch-panels',
|
||||||
Lang.bind(this, this._startA11ySwitcher));
|
Lang.bind(this, this._startA11ySwitcher));
|
||||||
|
global.display.add_keybinding('open-application-menu',
|
||||||
|
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
|
Meta.KeyBindingFlags.NONE,
|
||||||
|
Lang.bind(this, this._openAppMenu));
|
||||||
|
|
||||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
for (let i = 0; i < this._dimmedWindows.length; i++)
|
for (let i = 0; i < this._dimmedWindows.length; i++)
|
||||||
@@ -186,7 +191,7 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
let primary = Main.layoutManager.primaryMonitor;
|
let primary = Main.layoutManager.primaryMonitor;
|
||||||
let xDest = primary.x;
|
let xDest = primary.x;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||||
xDest += primary.width;
|
xDest += primary.width;
|
||||||
|
|
||||||
Tweener.addTween(actor,
|
Tweener.addTween(actor,
|
||||||
@@ -547,6 +552,10 @@ const WindowManager = new Lang.Class({
|
|||||||
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
|
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_openAppMenu : function(display, screen, window, event, binding) {
|
||||||
|
Main.panel.openAppMenu();
|
||||||
|
},
|
||||||
|
|
||||||
_showWorkspaceSwitcher : function(display, screen, window, binding) {
|
_showWorkspaceSwitcher : function(display, screen, window, binding) {
|
||||||
if (screen.n_workspaces == 1)
|
if (screen.n_workspaces == 1)
|
||||||
return;
|
return;
|
||||||
@@ -567,7 +576,7 @@ const WindowManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
actionMoveWorkspaceLeft: function() {
|
actionMoveWorkspaceLeft: function() {
|
||||||
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||||
let indexToActivate = activeWorkspaceIndex;
|
let indexToActivate = activeWorkspaceIndex;
|
||||||
if (rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
|
if (rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
|
||||||
@@ -583,7 +592,7 @@ const WindowManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
actionMoveWorkspaceRight: function() {
|
actionMoveWorkspaceRight: function() {
|
||||||
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||||
let indexToActivate = activeWorkspaceIndex;
|
let indexToActivate = activeWorkspaceIndex;
|
||||||
if (rtl && activeWorkspaceIndex > 0)
|
if (rtl && activeWorkspaceIndex > 0)
|
||||||
|
|||||||
@@ -528,7 +528,7 @@ const WindowOverlay = new Lang.Class({
|
|||||||
|
|
||||||
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
||||||
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
||||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||||
|
|
||||||
let split = layout.split(":");
|
let split = layout.split(":");
|
||||||
let side;
|
let side;
|
||||||
@@ -1134,7 +1134,6 @@ const Workspace = new Lang.Class({
|
|||||||
_hideAllOverlays: function() {
|
_hideAllOverlays: function() {
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
let clone = this._windows[i];
|
let clone = this._windows[i];
|
||||||
Tweener.removeTweens(clone.actor);
|
|
||||||
let overlay = this._windowOverlays[i];
|
let overlay = this._windowOverlays[i];
|
||||||
if (overlay)
|
if (overlay)
|
||||||
overlay.hide();
|
overlay.hide();
|
||||||
@@ -1252,7 +1251,7 @@ const Workspace = new Lang.Class({
|
|||||||
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let clone = this._addWindowClone(win);
|
let [clone, overlay] = this._addWindowClone(win);
|
||||||
|
|
||||||
if (win._overviewHint) {
|
if (win._overviewHint) {
|
||||||
let x = win._overviewHint.x - this.actor.x;
|
let x = win._overviewHint.x - this.actor.x;
|
||||||
@@ -1262,6 +1261,7 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
clone.actor.set_position (x, y);
|
clone.actor.set_position (x, y);
|
||||||
clone.actor.set_scale (scale, scale);
|
clone.actor.set_scale (scale, scale);
|
||||||
|
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||||
} else {
|
} else {
|
||||||
// Position new windows at the top corner of the workspace rather
|
// Position new windows at the top corner of the workspace rather
|
||||||
// than where they were placed for real to avoid the window
|
// than where they were placed for real to avoid the window
|
||||||
@@ -1321,7 +1321,10 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
this.leavingOverview = true;
|
this.leavingOverview = true;
|
||||||
|
|
||||||
this._hideAllOverlays();
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
|
let clone = this._windows[i];
|
||||||
|
Tweener.removeTweens(clone.actor);
|
||||||
|
}
|
||||||
|
|
||||||
if (this._repositionWindowsId > 0) {
|
if (this._repositionWindowsId > 0) {
|
||||||
Mainloop.source_remove(this._repositionWindowsId);
|
Mainloop.source_remove(this._repositionWindowsId);
|
||||||
@@ -1361,6 +1364,7 @@ const Workspace = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._hideAllOverlays();
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
@@ -1451,7 +1455,7 @@ const Workspace = new Lang.Class({
|
|||||||
this._windows.push(clone);
|
this._windows.push(clone);
|
||||||
this._windowOverlays.push(overlay);
|
this._windowOverlays.push(overlay);
|
||||||
|
|
||||||
return clone;
|
return [clone, overlay];
|
||||||
},
|
},
|
||||||
|
|
||||||
_onShowOverlayClose: function (windowOverlay) {
|
_onShowOverlayClose: function (windowOverlay) {
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ const WorkspaceSwitcherPopup = new Lang.Class({
|
|||||||
Name: 'WorkspaceSwitcherPopup',
|
Name: 'WorkspaceSwitcherPopup',
|
||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new St.Group({ reactive: true,
|
this.actor = new St.Widget({ reactive: true,
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
width: global.screen_width,
|
width: global.screen_width,
|
||||||
height: global.screen_height,
|
height: global.screen_height,
|
||||||
style_class: 'workspace-switcher-group' });
|
style_class: 'workspace-switcher-group' });
|
||||||
Main.uiGroup.add_actor(this.actor);
|
Main.uiGroup.add_actor(this.actor);
|
||||||
|
|
||||||
this._container = new St.BoxLayout({ style_class: 'workspace-switcher-container' });
|
this._container = new St.BoxLayout({ style_class: 'workspace-switcher-container' });
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ const SLIDE_ANIMATION_TIME = 0.2;
|
|||||||
// placeholder exactly.
|
// placeholder exactly.
|
||||||
const WORKSPACE_CUT_SIZE = 10;
|
const WORKSPACE_CUT_SIZE = 10;
|
||||||
|
|
||||||
|
const WORKSPACE_KEEP_ALIVE_TIME = 100;
|
||||||
|
|
||||||
const WindowClone = new Lang.Class({
|
const WindowClone = new Lang.Class({
|
||||||
Name: 'WindowClone',
|
Name: 'WindowClone',
|
||||||
|
|
||||||
@@ -156,24 +158,14 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
|
|
||||||
this._removed = false;
|
this._removed = false;
|
||||||
|
|
||||||
this.actor = new St.Group({ reactive: true,
|
this.actor = new St.Widget({ clip_to_allocation: true,
|
||||||
clip_to_allocation: true,
|
style_class: 'workspace-thumbnail' });
|
||||||
style_class: 'workspace-thumbnail' });
|
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
|
|
||||||
this._contents = new Clutter.Group();
|
this._contents = new Clutter.Group();
|
||||||
this.actor.add_actor(this._contents);
|
this.actor.add_actor(this._contents);
|
||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
this.actor.connect('button-press-event', Lang.bind(this,
|
|
||||||
function(actor, event) {
|
|
||||||
return true;
|
|
||||||
}));
|
|
||||||
this.actor.connect('button-release-event', Lang.bind(this,
|
|
||||||
function(actor, event) {
|
|
||||||
this._activate();
|
|
||||||
return true;
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||||
this._contents.add_actor(this._background);
|
this._contents.add_actor(this._background);
|
||||||
@@ -405,7 +397,9 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
let clone = new WindowClone(win);
|
let clone = new WindowClone(win);
|
||||||
|
|
||||||
clone.connect('selected',
|
clone.connect('selected',
|
||||||
Lang.bind(this, this._activate));
|
Lang.bind(this, function(clone, time) {
|
||||||
|
this.activate(time);
|
||||||
|
}));
|
||||||
clone.connect('drag-begin',
|
clone.connect('drag-begin',
|
||||||
Lang.bind(this, function(clone) {
|
Lang.bind(this, function(clone) {
|
||||||
Main.overview.beginWindowDrag();
|
Main.overview.beginWindowDrag();
|
||||||
@@ -430,7 +424,7 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
return clone;
|
return clone;
|
||||||
},
|
},
|
||||||
|
|
||||||
_activate : function (clone, time) {
|
activate : function (time) {
|
||||||
if (this.state > ThumbnailState.NORMAL)
|
if (this.state > ThumbnailState.NORMAL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -441,8 +435,8 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
this.metaWorkspace.activate(time);
|
this.metaWorkspace.activate(time);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface used only by ThumbnailsBox
|
||||||
handleDragOver : function(source, actor, x, y, time) {
|
handleDragOverInternal : function(source, time) {
|
||||||
if (source == Main.xdndHandler) {
|
if (source == Main.xdndHandler) {
|
||||||
this.metaWorkspace.activate(time);
|
this.metaWorkspace.activate(time);
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@@ -451,11 +445,6 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
if (this.state > ThumbnailState.NORMAL)
|
if (this.state > ThumbnailState.NORMAL)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
let [w, h] = this.actor.get_transformed_size();
|
|
||||||
// Bubble up if we're in the "workspace cut".
|
|
||||||
if (y < WORKSPACE_CUT_SIZE || y > h - WORKSPACE_CUT_SIZE)
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
|
||||||
|
|
||||||
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
if (source.shellWorkspaceLaunch)
|
if (source.shellWorkspaceLaunch)
|
||||||
@@ -464,7 +453,7 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
},
|
},
|
||||||
|
|
||||||
acceptDrop : function(source, actor, x, y, time) {
|
acceptDropInternal : function(source, time) {
|
||||||
if (this.state > ThumbnailState.NORMAL)
|
if (this.state > ThumbnailState.NORMAL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -502,7 +491,8 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
Name: 'ThumbnailsBox',
|
Name: 'ThumbnailsBox',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new Shell.GenericContainer({ style_class: 'workspace-thumbnails',
|
this.actor = new Shell.GenericContainer({ reactive: true,
|
||||||
|
style_class: 'workspace-thumbnails',
|
||||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
@@ -531,6 +521,7 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
this._indicator = indicator;
|
this._indicator = indicator;
|
||||||
this.actor.add_actor(indicator);
|
this.actor.add_actor(indicator);
|
||||||
|
|
||||||
|
this._dropWorkspace = -1;
|
||||||
this._dropPlaceholderPos = -1;
|
this._dropPlaceholderPos = -1;
|
||||||
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
|
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
|
||||||
this.actor.add_actor(this._dropPlaceholder);
|
this.actor.add_actor(this._dropPlaceholder);
|
||||||
@@ -548,6 +539,9 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
|
|
||||||
this._thumbnails = [];
|
this._thumbnails = [];
|
||||||
|
|
||||||
|
this.actor.connect('button-press-event', function() { return true; });
|
||||||
|
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
|
||||||
|
|
||||||
Main.overview.connect('item-drag-begin',
|
Main.overview.connect('item-drag-begin',
|
||||||
Lang.bind(this, this._onDragBegin));
|
Lang.bind(this, this._onDragBegin));
|
||||||
Main.overview.connect('item-drag-end',
|
Main.overview.connect('item-drag-end',
|
||||||
@@ -562,6 +556,22 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
Lang.bind(this, this._onDragCancelled));
|
Lang.bind(this, this._onDragCancelled));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onButtonRelease: function(actor, event) {
|
||||||
|
let [stageX, stageY] = event.get_coords();
|
||||||
|
let [r, x, y] = this.actor.transform_stage_point(stageX, stageY);
|
||||||
|
|
||||||
|
for (let i = 0; i < this._thumbnails.length; i++) {
|
||||||
|
let thumbnail = this._thumbnails[i]
|
||||||
|
let [w, h] = thumbnail.actor.get_transformed_size();
|
||||||
|
if (y >= thumbnail.actor.y && y <= thumbnail.actor.y + h) {
|
||||||
|
thumbnail.activate(event.time);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
_onDragBegin: function() {
|
_onDragBegin: function() {
|
||||||
this._dragCancelled = false;
|
this._dragCancelled = false;
|
||||||
this._dragMonitor = {
|
this._dragMonitor = {
|
||||||
@@ -607,85 +617,108 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface
|
||||||
handleDragOver : function(source, actor, x, y, time) {
|
handleDragOver : function(source, actor, x, y, time) {
|
||||||
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
if (!Meta.prefs_get_dynamic_workspaces())
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
let spacing = this.actor.get_theme_node().get_length('spacing');
|
let spacing = this.actor.get_theme_node().get_length('spacing');
|
||||||
let thumbHeight = this._porthole.height * this._scale;
|
|
||||||
|
|
||||||
let workspace = -1;
|
this._dropWorkspace = -1;
|
||||||
let firstThumbY;
|
let placeholderPos = -1;
|
||||||
|
let targetBase;
|
||||||
if (this._dropPlaceholderPos == 0)
|
if (this._dropPlaceholderPos == 0)
|
||||||
firstThumbY = this._dropPlaceholder.y;
|
targetBase = this._dropPlaceholder.y;
|
||||||
else
|
else
|
||||||
firstThumbY = this._thumbnails[0].actor.y;
|
targetBase = this._thumbnails[0].actor.y;
|
||||||
for (let i = 0; i < this._thumbnails.length; i ++) {
|
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
|
||||||
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
|
let length = this._thumbnails.length;
|
||||||
|
for (let i = 0; i < length; i ++) {
|
||||||
// Allow the reorder target to have a 10px "cut" into
|
// Allow the reorder target to have a 10px "cut" into
|
||||||
// each side of the thumbnail, to make dragging onto the
|
// each side of the thumbnail, to make dragging onto the
|
||||||
// placeholder easier
|
// placeholder easier
|
||||||
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
|
let [w, h] = this._thumbnails[i].actor.get_transformed_size();
|
||||||
let targetBottom = targetBase + WORKSPACE_CUT_SIZE;
|
let targetBottom = targetBase + WORKSPACE_CUT_SIZE;
|
||||||
|
let nextTargetBase = targetBase + h + spacing;
|
||||||
|
let nextTargetTop = nextTargetBase - spacing - ((i == length - 1) ? 0: WORKSPACE_CUT_SIZE);
|
||||||
|
|
||||||
// Expand the target to include the placeholder, if it exists.
|
// Expand the target to include the placeholder, if it exists.
|
||||||
if (i == this._dropPlaceholderPos)
|
if (i == this._dropPlaceholderPos)
|
||||||
targetBottom += this._dropPlaceholder.get_height();
|
targetBottom += this._dropPlaceholder.get_height();
|
||||||
|
|
||||||
if (y > targetTop && y <= targetBottom) {
|
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
|
||||||
workspace = i;
|
placeholderPos = i;
|
||||||
break;
|
break;
|
||||||
|
} else if (y > targetBottom && y <= nextTargetTop) {
|
||||||
|
this._dropWorkspace = i;
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
targetBase = nextTargetBase;
|
||||||
|
targetTop = nextTargetTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._dropPlaceholderPos != workspace) {
|
if (this._dropPlaceholderPos != placeholderPos) {
|
||||||
this._dropPlaceholderPos = workspace;
|
this._dropPlaceholderPos = placeholderPos;
|
||||||
this.actor.queue_relayout();
|
this.actor.queue_relayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (workspace == -1)
|
if (this._dropWorkspace != -1)
|
||||||
|
return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, time);
|
||||||
|
else if (this._dropPlaceholderPos != -1)
|
||||||
|
return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
|
||||||
|
else
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
acceptDrop: function(source, actor, x, y, time) {
|
acceptDrop: function(source, actor, x, y, time) {
|
||||||
if (this._dropPlaceholderPos == -1)
|
if (this._dropWorkspace != -1) {
|
||||||
return false;
|
return this._thumbnails[this._dropWorkspace].acceptDropInternal(source, time);
|
||||||
|
} else if (this._dropPlaceholderPos != -1) {
|
||||||
|
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
let isWindow = !!source.realWindow;
|
||||||
return false;
|
|
||||||
|
|
||||||
let isWindow = !!source.realWindow;
|
// To create a new workspace, we first slide all the windows on workspaces
|
||||||
|
// below us to the next workspace, leaving a blank workspace for us to recycle.
|
||||||
|
let newWorkspaceIndex;
|
||||||
|
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||||
|
|
||||||
// To create a new workspace, we first slide all the windows on workspaces
|
// Nab all the windows below us.
|
||||||
// below us to the next workspace, leaving a blank workspace for us to recycle.
|
let windows = global.get_window_actors().filter(function(win) {
|
||||||
let newWorkspaceIndex;
|
if (isWindow)
|
||||||
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
return win.get_workspace() >= newWorkspaceIndex && win != source;
|
||||||
|
else
|
||||||
|
return win.get_workspace() >= newWorkspaceIndex;
|
||||||
|
});
|
||||||
|
|
||||||
|
// ... move them down one.
|
||||||
|
windows.forEach(function(win) {
|
||||||
|
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
|
||||||
|
true, time);
|
||||||
|
});
|
||||||
|
|
||||||
// Nab all the windows below us.
|
|
||||||
let windows = global.get_window_actors().filter(function(win) {
|
|
||||||
if (isWindow)
|
if (isWindow)
|
||||||
return win.get_workspace() >= newWorkspaceIndex && win != source;
|
// ... and bam, a workspace, good as new.
|
||||||
else
|
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
|
||||||
return win.get_workspace() >= newWorkspaceIndex;
|
true, time);
|
||||||
});
|
else if (source.shellWorkspaceLaunch) {
|
||||||
|
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
||||||
|
timestamp: time });
|
||||||
|
// This new workspace will be automatically removed if the application fails
|
||||||
|
// to open its first window within some time, as tracked by Shell.WindowTracker.
|
||||||
|
// Here, we only add a very brief timeout to avoid the _immediate_ removal of the
|
||||||
|
// workspace while we wait for the startup sequence to load.
|
||||||
|
Main.keepWorkspaceAlive(global.screen.get_workspace_by_index(newWorkspaceIndex),
|
||||||
|
WORKSPACE_KEEP_ALIVE_TIME);
|
||||||
|
}
|
||||||
|
|
||||||
// ... move them down one.
|
return true;
|
||||||
windows.forEach(function(win) {
|
} else {
|
||||||
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
|
return false;
|
||||||
true, time);
|
}
|
||||||
});
|
|
||||||
|
|
||||||
if (isWindow)
|
|
||||||
// ... and bam, a workspace, good as new.
|
|
||||||
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
|
|
||||||
true, time);
|
|
||||||
else if (source.shellWorkspaceLaunch)
|
|
||||||
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
|
||||||
timestamp: time });
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
@@ -952,7 +985,7 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||||
|
|
||||||
// See comment about this._background in _init()
|
// See comment about this._background in _init()
|
||||||
let themeNode = this._background.get_theme_node();
|
let themeNode = this._background.get_theme_node();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ const WorkspacesView = new Lang.Class({
|
|||||||
Name: 'WorkspacesView',
|
Name: 'WorkspacesView',
|
||||||
|
|
||||||
_init: function(workspaces) {
|
_init: function(workspaces) {
|
||||||
this.actor = new St.Group({ style_class: 'workspaces-view' });
|
this.actor = new St.Widget({ style_class: 'workspaces-view' });
|
||||||
|
|
||||||
// The actor itself isn't a drop target, so we don't want to pick on its area
|
// The actor itself isn't a drop target, so we don't want to pick on its area
|
||||||
this.actor.set_size(0, 0);
|
this.actor.set_size(0, 0);
|
||||||
@@ -509,6 +509,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
this._inDrag = false;
|
this._inDrag = false;
|
||||||
this._cancelledDrag = false;
|
this._cancelledDrag = false;
|
||||||
|
|
||||||
|
this._controlsInitiallyHovered = false;
|
||||||
this._alwaysZoomOut = false;
|
this._alwaysZoomOut = false;
|
||||||
this._zoomOut = false;
|
this._zoomOut = false;
|
||||||
this._zoomFraction = 0;
|
this._zoomFraction = 0;
|
||||||
@@ -543,6 +544,19 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
|
if(!this._alwaysZoomOut) {
|
||||||
|
let [mouseX, mouseY] = global.get_pointer();
|
||||||
|
let [x, y] = this._controls.get_transformed_position();
|
||||||
|
let [width, height] = this._controls.get_transformed_size();
|
||||||
|
let visibleWidth = this._controls.get_theme_node().get_length('visible-width');
|
||||||
|
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||||
|
if(rtl)
|
||||||
|
x = x + width - visibleWidth;
|
||||||
|
if(mouseX > x - 0.5 && mouseX < x + visibleWidth + 0.5 &&
|
||||||
|
mouseY > y - 0.5 && mouseY < y + height + 0.5)
|
||||||
|
this._controlsInitiallyHovered = true;
|
||||||
|
}
|
||||||
|
|
||||||
this._zoomOut = this._alwaysZoomOut;
|
this._zoomOut = this._alwaysZoomOut;
|
||||||
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
|
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
|
||||||
this._updateZoom();
|
this._updateZoom();
|
||||||
@@ -591,6 +605,9 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
this._controls.hide();
|
this._controls.hide();
|
||||||
this._thumbnailsBox.hide();
|
this._thumbnailsBox.hide();
|
||||||
|
|
||||||
|
if (!this._alwaysZoomOut)
|
||||||
|
this.zoomFraction = 0;
|
||||||
|
|
||||||
if (this._restackedNotifyId > 0){
|
if (this._restackedNotifyId > 0){
|
||||||
global.screen.disconnect(this._restackedNotifyId);
|
global.screen.disconnect(this._restackedNotifyId);
|
||||||
this._restackedNotifyId = 0;
|
this._restackedNotifyId = 0;
|
||||||
@@ -790,7 +807,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
|
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
|
||||||
let controlsReserved = controlsVisible * (1 - this._zoomFraction) + controlsNatural * this._zoomFraction;
|
let controlsReserved = controlsVisible * (1 - this._zoomFraction) + controlsNatural * this._zoomFraction;
|
||||||
|
|
||||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||||
if (rtl) {
|
if (rtl) {
|
||||||
childBox.x2 = controlsReserved;
|
childBox.x2 = controlsReserved;
|
||||||
childBox.x1 = childBox.x2 - controlsNatural;
|
childBox.x1 = childBox.x2 - controlsNatural;
|
||||||
@@ -827,10 +844,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
if (!primaryView)
|
if (!primaryView)
|
||||||
return;
|
return;
|
||||||
primaryView.actor.opacity = opacity;
|
primaryView.actor.opacity = opacity;
|
||||||
if (opacity == 0)
|
primaryView.actor.visible = opacity != 0;
|
||||||
primaryView.actor.hide();
|
|
||||||
else
|
|
||||||
primaryView.actor.show();
|
|
||||||
}));
|
}));
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
@@ -850,7 +864,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
|
|
||||||
let [x, y] = this.actor.get_transformed_position();
|
let [x, y] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||||
|
|
||||||
let clipWidth = width - controlsVisible;
|
let clipWidth = width - controlsVisible;
|
||||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
||||||
@@ -996,7 +1010,10 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onControlsHoverChanged: function() {
|
_onControlsHoverChanged: function() {
|
||||||
this._updateZoom();
|
if(!this._controls.hover)
|
||||||
|
this._controlsInitiallyHovered = false;
|
||||||
|
if(!this._controlsInitiallyHovered)
|
||||||
|
this._updateZoom();
|
||||||
},
|
},
|
||||||
|
|
||||||
_dragBegin: function() {
|
_dragBegin: function() {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ ko
|
|||||||
ku
|
ku
|
||||||
lt
|
lt
|
||||||
lv
|
lv
|
||||||
|
ml
|
||||||
mk
|
mk
|
||||||
mr
|
mr
|
||||||
ms
|
ms
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ js/ui/dateMenu.js
|
|||||||
js/ui/endSessionDialog.js
|
js/ui/endSessionDialog.js
|
||||||
js/ui/extensionSystem.js
|
js/ui/extensionSystem.js
|
||||||
js/ui/keyboard.js
|
js/ui/keyboard.js
|
||||||
|
js/ui/keyringPrompt.js
|
||||||
js/ui/lookingGlass.js
|
js/ui/lookingGlass.js
|
||||||
|
js/ui/main.js
|
||||||
js/ui/messageTray.js
|
js/ui/messageTray.js
|
||||||
js/ui/networkAgent.js
|
js/ui/networkAgent.js
|
||||||
js/ui/notificationDaemon.js
|
js/ui/notificationDaemon.js
|
||||||
@@ -44,6 +46,7 @@ src/main.c
|
|||||||
src/shell-app.c
|
src/shell-app.c
|
||||||
src/shell-app-system.c
|
src/shell-app-system.c
|
||||||
src/shell-global.c
|
src/shell-global.c
|
||||||
|
src/shell-keyring-prompt.c
|
||||||
src/shell-mobile-providers.c
|
src/shell-mobile-providers.c
|
||||||
src/shell-polkit-authentication-agent.c
|
src/shell-polkit-authentication-agent.c
|
||||||
src/shell-util.c
|
src/shell-util.c
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
data/gnome-shell.desktop.in
|
data/gnome-shell.desktop.in
|
||||||
data/gnome-shell-extension-prefs.desktop.in
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
|
data/org.gnome.shell.evolution.calendar.gschema.xml.in
|
||||||
|
|||||||
1148
po/ca@valencia.po
1148
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
475
po/da.po
475
po/da.po
@@ -16,9 +16,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-02-20 23:16+0100\n"
|
"POT-Creation-Date: 2012-03-22 15:47+0100\n"
|
||||||
"PO-Revision-Date: 2012-02-18 14:59+0100\n"
|
"PO-Revision-Date: 2012-03-22 13:02+0100\n"
|
||||||
"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
|
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||||
"Language: da\n"
|
"Language: da\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -35,15 +35,20 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Vindueshåndtering og åbning af programmer"
|
msgstr "Vindueshåndtering og åbning af programmer"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
|
#: ../js/extensionPrefs/main.js:153
|
||||||
|
msgid "GNOME Shell Extension Preferences"
|
||||||
|
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Konfigurér udvidelsesmoduler til GNOME Shell"
|
msgstr "Konfigurér udvidelsesmoduler til GNOME Shell"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
|
||||||
#: ../js/extensionPrefs/main.js:153
|
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
|
||||||
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
msgstr ""
|
||||||
|
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
@@ -51,20 +56,11 @@ msgstr ""
|
|||||||
"Tillad adgang til interne fejlsøgnings- og overvågningsværktøjer med brug af "
|
"Tillad adgang til interne fejlsøgnings- og overvågningsværktøjer med brug af "
|
||||||
"dialogen Alt-F2."
|
"dialogen Alt-F2."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
|
||||||
msgstr ""
|
|
||||||
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "Filendelse til at gemme skærmoptagelser"
|
msgstr "Uuid'er for udvidelser der aktiveres"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
|
||||||
msgstr "Billedfrekvens brugt til skærmoptagelser."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
@@ -76,43 +72,111 @@ msgstr ""
|
|||||||
"skal være i denne liste. Du kan også redigere denne liste med DBus-metoderne "
|
"skal være i denne liste. Du kan også redigere denne liste med DBus-metoderne "
|
||||||
"EnableExtension og DisableExtension ved org.shell.Shell."
|
"EnableExtension og DisableExtension ved org.shell.Shell."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "Om der skal indsamles statistik om programmers brug"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
|
msgid ""
|
||||||
|
"The shell normally monitors active applications in order to present the most "
|
||||||
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
|
"remove already saved data."
|
||||||
|
msgstr ""
|
||||||
|
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
|
||||||
|
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
|
||||||
|
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
|
||||||
|
"dette, vil det ikke fjerne de allerede gemte data."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
|
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr ""
|
||||||
|
"Programmerne som passer til disse identifikatorer vil blive vist i "
|
||||||
|
"favoritområdet."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
|
msgid "disabled OpenSearch providers"
|
||||||
|
msgstr "deaktiverede OpenSearch-udbydere"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "Historik for kommandodialogen (Alt-F2)"
|
msgstr "Historik for kommandodialogen (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Historik for looking glass-dialogen"
|
msgstr "Historik for looking glass-dialogen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
|
||||||
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
|
||||||
msgid "If true, display seconds in time."
|
|
||||||
msgstr "Hvis sand vises sekunder i klokkeslæt."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
|
||||||
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Brugt internt til at gemme den seneste IM-tilstedeværelse angivet direkte af "
|
||||||
|
"brugeren. Værdien er er fra tællingen TpConnectionPresenceType."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last session presence status for the user. The "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Brugt internt til at gemme den seneste tilstand for sessionstilstedeværelse "
|
||||||
|
"for brugeren. Værdien her er fra tællingen GsmPresenceStatus."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
|
msgstr "Vis ugenummer i kalenderen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
|
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "Hvilket tastatur bruges"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "Tastaturtypen som bruges."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Show time with seconds"
|
||||||
|
msgstr "Vis tid med sekunder"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "If true, display seconds in time."
|
||||||
|
msgstr "Hvis sand vises sekunder i klokkeslæt."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
|
msgid "Show date in clock"
|
||||||
|
msgstr "Vis dato i uret"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
|
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "Billedfrekvens brugt til skærmoptagelser."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
|
msgid ""
|
||||||
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
|
"screencast recorder in frames-per-second."
|
||||||
|
msgstr ""
|
||||||
|
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
|
||||||
|
"skærmoptager i billeder-per-sekund."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
|
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@@ -137,27 +201,11 @@ msgstr ""
|
|||||||
"webmmux\" og optager i WEBM-formatet med VP8-codec'et. %T bruges som "
|
"webmmux\" og optager i WEBM-formatet med VP8-codec'et. %T bruges som "
|
||||||
"pladsholder for et gæt om det optimale trådantal på systemet."
|
"pladsholder for et gæt om det optimale trådantal på systemet."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid "Show date in clock"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Vis dato i uret"
|
msgstr "Filendelse til at gemme skærmoptagelser"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "Show the week date in the calendar"
|
|
||||||
msgstr "Vis ugenummer i kalenderen"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
|
||||||
msgid "Show time with seconds"
|
|
||||||
msgstr "Vis tid med sekunder"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
|
||||||
"favorites area."
|
|
||||||
msgstr ""
|
|
||||||
"Programmerne som passer til disse identifikatorer vil blive vist i "
|
|
||||||
"favoritområdet."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@@ -167,50 +215,6 @@ msgstr ""
|
|||||||
"og bruge denne endelse. Det skal ændres når der optages i et andet "
|
"og bruge denne endelse. Det skal ændres når der optages i et andet "
|
||||||
"containerformat."
|
"containerformat."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
|
||||||
msgid ""
|
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
|
||||||
"screencast recorder in frames-per-second."
|
|
||||||
msgstr ""
|
|
||||||
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
|
|
||||||
"skærmoptager i billeder-per-sekund."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
|
||||||
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
|
||||||
msgid ""
|
|
||||||
"The shell normally monitors active applications in order to present the most "
|
|
||||||
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
|
||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
|
||||||
"remove already saved data."
|
|
||||||
msgstr ""
|
|
||||||
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
|
|
||||||
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
|
|
||||||
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
|
|
||||||
"dette, vil det ikke fjerne de allerede gemte data."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr "Tastaturtypen som bruges."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
|
||||||
msgid "Uuids of extensions to enable"
|
|
||||||
msgstr "Uuid'er for udvidelser der aktiveres"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
|
||||||
msgstr "Om der skal indsamles statistik om programmers brug"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
|
||||||
msgid "Which keyboard to use"
|
|
||||||
msgstr "Hvilket tastatur bruges"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "deaktiverede OpenSearch-udbydere"
|
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:125
|
#: ../js/extensionPrefs/main.js:125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
@@ -247,8 +251,8 @@ msgstr "(eller indlæs fingeraftryk)"
|
|||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ikke listet?"
|
msgstr "Ikke listet?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annullér"
|
msgstr "Annullér"
|
||||||
@@ -262,16 +266,16 @@ msgstr "Log ind"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Indlogningsvindue"
|
msgstr "Indlogningsvindue"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Hviletilstand"
|
msgstr "Hviletilstand"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:157
|
#: ../js/gdm/powerMenu.js:160
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Genstart"
|
msgstr "Genstart"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:162
|
#: ../js/gdm/powerMenu.js:165
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Sluk"
|
msgstr "Sluk"
|
||||||
|
|
||||||
@@ -291,27 +295,27 @@ msgid "Execution of '%s' failed:"
|
|||||||
msgstr "Kørsel af \"%s\" mislykkedes:"
|
msgstr "Kørsel af \"%s\" mislykkedes:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:251
|
#: ../js/ui/appDisplay.js:255
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Alle"
|
msgstr "Alle"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:310
|
#: ../js/ui/appDisplay.js:314
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "PROGRAMMER"
|
msgstr "PROGRAMMER"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:375
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "INDSTILLINGER"
|
msgstr "INDSTILLINGER"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nyt vindue"
|
msgstr "Nyt vindue"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Fjern fra favoritter"
|
msgstr "Fjern fra favoritter"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:684
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Føj til favoritter"
|
msgstr "Føj til favoritter"
|
||||||
|
|
||||||
@@ -484,94 +488,90 @@ msgstr "Denne uge"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Næste uge"
|
msgstr "Næste uge"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukendt"
|
msgstr "Ukendt"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Tilgængelig"
|
msgstr "Tilgængelig"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Ikke tilstede"
|
msgstr "Ikke tilstede"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Optaget"
|
msgstr "Optaget"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:97
|
#: ../js/ui/contactDisplay.js:102
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Offline"
|
msgstr "Offline"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:148
|
#: ../js/ui/contactDisplay.js:153
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTER"
|
msgstr "KONTAKTER"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Fjern"
|
msgstr "Fjern"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:103
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Indstillinger for dato og tid"
|
msgstr "Indstillinger for dato og tid"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:123
|
#: ../js/ui/dateMenu.js:129
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Åbn kalender"
|
msgstr "Åbn kalender"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e. %b, %R:%S"
|
msgstr "%a %e. %b, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:182
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e. %b, %R"
|
msgstr "%a %e. %b, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:192
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:193
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e. %b, %l:%M:%S %p"
|
msgstr "%a %e. %b, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:195
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e. %b, %l:%M %p"
|
msgstr "%a %e. %b, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:200
|
#: ../js/ui/dateMenu.js:206
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:211
|
#: ../js/ui/dateMenu.js:217
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e. %B %Y"
|
msgstr "%A, %e. %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "SENESTE ELEMENTER"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@@ -660,23 +660,31 @@ msgstr[1] "Systemet vil genstarte automatisk om %d sekunder."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Genstarter systemet."
|
msgstr "Genstarter systemet."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:405
|
#: ../js/ui/extensionSystem.js:403
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Installér"
|
msgstr "Installér"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:409
|
#: ../js/ui/extensionSystem.js:407
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
|
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:322
|
#: ../js/ui/keyboard.js:327
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "statusfelt"
|
msgstr "statusfelt"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Adgangskode:"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:101
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "Indtast igen:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/lookingGlass.js:725
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Ingen udvidelser er installeret"
|
msgstr "Ingen udvidelser er installeret"
|
||||||
@@ -725,19 +733,25 @@ msgstr "Vis kilde"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Webside"
|
msgstr "Webside"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:118
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "Skærmoptagelse fra %d %t"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Åbn"
|
msgstr "Åbn"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Slå lyd til"
|
msgstr "Slå lyd til"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Slå lyd fra"
|
msgstr "Slå lyd fra"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2447
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformation"
|
msgstr "Systeminformation"
|
||||||
|
|
||||||
@@ -826,31 +840,35 @@ msgstr "En adgangskode er påkrævet for at forbinde til \"%s\"."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Fortryd"
|
msgstr "Fortryd"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:199
|
#: ../js/ui/overview.js:132
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Oversigt"
|
||||||
|
|
||||||
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Vinduer"
|
msgstr "Vinduer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:231
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Favoritområde"
|
msgstr "Favoritområde"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:582
|
#: ../js/ui/panel.js:591
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Afslut"
|
msgstr "Afslut"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:613
|
#: ../js/ui/panel.js:623
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktiviteter"
|
msgstr "Aktiviteter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:983
|
#: ../js/ui/panel.js:998
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Toppanel"
|
msgstr "Toppanel"
|
||||||
|
|
||||||
@@ -891,16 +909,12 @@ msgstr "Godkend"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
|
msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "Adgangskode:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:720
|
#: ../js/ui/popupMenu.js:724
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -908,11 +922,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Indtast en kommando:"
|
msgstr "Indtast en kommando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Søger..."
|
msgstr "Søger..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:414
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Ingen resultater fundet."
|
msgstr "Ingen resultater fundet."
|
||||||
|
|
||||||
@@ -1070,7 +1084,7 @@ msgstr "Giv altid adgang"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Giv kun lov denne gang"
|
msgstr "Giv kun lov denne gang"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Afvis"
|
msgstr "Afvis"
|
||||||
|
|
||||||
@@ -1347,39 +1361,39 @@ msgid "Invitation"
|
|||||||
msgstr "Invitation"
|
msgstr "Invitation"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:273
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Opkald"
|
msgstr "Opkald"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:289
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Filoverførsel"
|
msgstr "Filoverførsel"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:371
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Godkendelsesforespørgsel"
|
msgstr "Godkendelsesforespørgsel"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:407
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Forbindelsesfejl"
|
msgstr "Forbindelsesfejl"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:665
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s er online."
|
msgstr "%s er online."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:669
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s er offline."
|
msgstr "%s er offline."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:673
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s er ikke til stede."
|
msgstr "%s er ikke til stede."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:676
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s er optaget."
|
msgstr "%s er optaget."
|
||||||
@@ -1387,35 +1401,35 @@ msgstr "%s er optaget."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:889
|
#: ../js/ui/telepathyClient.js:887
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Sendt <b>%A</b> kl. <b>%H:%M</b>"
|
msgstr "Sendt <b>%A</b> kl. <b>%H:%M</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:895
|
#: ../js/ui/telepathyClient.js:893
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>"
|
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:900
|
#: ../js/ui/telepathyClient.js:898
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>, %Y"
|
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:942
|
#: ../js/ui/telepathyClient.js:940
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s kalder sig nu %s"
|
msgstr "%s kalder sig nu %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1044
|
#: ../js/ui/telepathyClient.js:1042
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitation til %s"
|
msgstr "Invitation til %s"
|
||||||
@@ -1423,35 +1437,35 @@ msgstr "Invitation til %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1052
|
#: ../js/ui/telepathyClient.js:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s inviterer dig til at deltage i %s"
|
msgstr "%s inviterer dig til at deltage i %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
||||||
#: ../js/ui/telepathyClient.js:1231
|
#: ../js/ui/telepathyClient.js:1229
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Afvis"
|
msgstr "Afvis"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
||||||
#: ../js/ui/telepathyClient.js:1232
|
#: ../js/ui/telepathyClient.js:1230
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Acceptér"
|
msgstr "Acceptér"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1085
|
#: ../js/ui/telepathyClient.js:1083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videoopkald fra %s"
|
msgstr "Videoopkald fra %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1088
|
#: ../js/ui/telepathyClient.js:1086
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Opkald fra %s"
|
msgstr "Opkald fra %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1095
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Svar"
|
msgstr "Svar"
|
||||||
|
|
||||||
@@ -1460,111 +1474,111 @@ msgstr "Svar"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1127
|
#: ../js/ui/telepathyClient.js:1125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s sender dig %s"
|
msgstr "%s sender dig %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1196
|
#: ../js/ui/telepathyClient.js:1194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s vil gerne have tilladelse til at se, når du er online"
|
msgstr "%s vil gerne have tilladelse til at se, når du er online"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1287
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Netværksfejl"
|
msgstr "Netværksfejl"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Godkendelse mislykkedes"
|
msgstr "Godkendelse mislykkedes"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Krypteringsfejl"
|
msgstr "Krypteringsfejl"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certifikat ikke angivet"
|
msgstr "Certifikat ikke angivet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Utroværdigt certifikat"
|
msgstr "Utroværdigt certifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certifikat udløbet"
|
msgstr "Certifikat udløbet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certifikat ikke aktiveret"
|
msgstr "Certifikat ikke aktiveret"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Certifikat-værtsnavn stemmer ikke"
|
msgstr "Certifikat-værtsnavn stemmer ikke"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Certifikat-fingeraftryk stemmer ikke"
|
msgstr "Certifikat-fingeraftryk stemmer ikke"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certifikat selv-underskrevet"
|
msgstr "Certifikat selv-underskrevet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Status er angivet til offline"
|
msgstr "Status er angivet til offline"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Kryptering er ikke tilgængelig"
|
msgstr "Kryptering er ikke tilgængelig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Ugyldigt certifikat"
|
msgstr "Ugyldigt certifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Forbindelse er blevet afvist"
|
msgstr "Forbindelse er blevet afvist"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Forbindelse kan ikke oprettes"
|
msgstr "Forbindelse kan ikke oprettes"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Forbindelse er mistet"
|
msgstr "Forbindelse er mistet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Denne konto er allerede forbundet til serveren"
|
msgstr "Denne konto er allerede forbundet til serveren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Forbindelsen er blevet erstattet af en ny forbindelse, som bruger samme "
|
"Forbindelsen er blevet erstattet af en ny forbindelse, som bruger samme "
|
||||||
"ressource"
|
"ressource"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Kontoen findes allerede på serveren"
|
msgstr "Kontoen findes allerede på serveren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Serveren er i øjeblikket for travl til at behandle forbindelsen"
|
msgstr "Serveren er i øjeblikket for travl til at behandle forbindelsen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Certifikat er blevet påberåbt"
|
msgstr "Certifikat er blevet påberåbt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Certifikat bruger en usikker cipher-algoritme eller er kryptografisk svag"
|
"Certifikat bruger en usikker cipher-algoritme eller er kryptografisk svag"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@@ -1572,74 +1586,74 @@ msgstr ""
|
|||||||
"Længden på servercertifikatet, eller dybden af servercertifikat-kæden, "
|
"Længden på servercertifikatet, eller dybden af servercertifikat-kæden, "
|
||||||
"overskrider grænsen, som er fastsat af det kryptografiske-programbibliotek"
|
"overskrider grænsen, som er fastsat af det kryptografiske-programbibliotek"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1335
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Intern fejl"
|
msgstr "Intern fejl"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1345
|
#: ../js/ui/telepathyClient.js:1343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Forbindelse til %s mislykkedes"
|
msgstr "Forbindelse til %s mislykkedes"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1354
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Forbind igen"
|
msgstr "Forbind igen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1355
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Redigér konto"
|
msgstr "Redigér konto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1401
|
#: ../js/ui/telepathyClient.js:1399
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Ukendt årsag"
|
msgstr "Ukendt årsag"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:133
|
#: ../js/ui/userMenu.js:135
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "Skjult"
|
msgstr "Skjult"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:141
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Tomgang"
|
msgstr "Tomgang"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:144
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Utilgængelig"
|
msgstr "Utilgængelig"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Sluk..."
|
msgstr "Sluk..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:615
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Beskeder"
|
msgstr "Beskeder"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:623
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Online konti"
|
msgstr "Online konti"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:627
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Systemindstillinger"
|
msgstr "Systemindstillinger"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:634
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lås skærm"
|
msgstr "Lås skærm"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:655
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Skift bruger"
|
msgstr "Skift bruger"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:644
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Log ud..."
|
msgstr "Log ud..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:672
|
#: ../js/ui/userMenu.js:688
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Din chat-status vil blive angivet som optaget"
|
msgstr "Din chat-status vil blive angivet som optaget"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:689
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@@ -1678,7 +1692,7 @@ msgstr "Oraklet %s siger"
|
|||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Dit yndlingspåskeæg"
|
msgstr "Dit yndlingspåskeæg"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "\"%s\" er klar"
|
msgstr "\"%s\" er klar"
|
||||||
@@ -1705,19 +1719,27 @@ msgstr[1] "%u inputs"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemlyde"
|
msgstr "Systemlyde"
|
||||||
|
|
||||||
#: ../src/main.c:262
|
#: ../src/main.c:255
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Udskriv version"
|
msgstr "Udskriv version"
|
||||||
|
|
||||||
#: ../src/main.c:268
|
#: ../src/main.c:261
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Tilstand brugt af GDM til indlogningskærm"
|
msgstr "Tilstand brugt af GDM til indlogningskærm"
|
||||||
|
|
||||||
#: ../src/shell-app.c:617
|
#: ../src/shell-app.c:619
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Kunne ikke køre \"%s\""
|
msgstr "Kunne ikke køre \"%s\""
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "Adgangskoder er ikke ens."
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "Adgangskode må ikke være tom"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "Storbritannien"
|
msgstr "Storbritannien"
|
||||||
@@ -1752,6 +1774,9 @@ msgstr "Filsystem"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "SENESTE ELEMENTER"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||||
|
|||||||
1046
po/en_GB.po
1046
po/en_GB.po
File diff suppressed because it is too large
Load Diff
268
po/es.po
268
po/es.po
@@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-02-20 07:42+0000\n"
|
"POT-Creation-Date: 2012-04-24 15:39+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-20 10:59+0100\n"
|
"PO-Revision-Date: 2012-04-25 12:09+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -29,7 +29,7 @@ msgstr "Gestión de ventanas e inicio de aplicaciones"
|
|||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferencias de las extensiones de GNOME Shell"
|
msgstr "Preferencias de las extensiones de GNOME Shell"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
@@ -133,34 +133,52 @@ msgid "If true, display the ISO week date in the calendar."
|
|||||||
msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario."
|
msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Keybinding to open the application menu"
|
||||||
|
msgstr "Asociación de teclas para abrir el menú de la aplicación"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "Keybinding to open the application menu."
|
||||||
|
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
#| msgid "Keybinding to open the application menu."
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Qué teclado usar"
|
msgstr "Qué teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "El tipo de teclado que usar."
|
msgstr "El tipo de teclado que usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostrar la hora con segundos"
|
msgstr "Mostrar la hora con segundos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Si es cierta, muestra los segundos en la hora."
|
msgstr "Si es cierta, muestra los segundos en la hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostrar la fecha en el reloj"
|
msgstr "Mostrar la fecha en el reloj"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
|
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@@ -168,11 +186,11 @@ msgstr ""
|
|||||||
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
||||||
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@@ -198,11 +216,11 @@ msgstr ""
|
|||||||
"usando el códec VP8. Se usa %T como marcador de posición para el número de "
|
"usando el códec VP8. Se usa %T como marcador de posición para el número de "
|
||||||
"hilos óptimos en el sistema."
|
"hilos óptimos en el sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@@ -226,53 +244,53 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(o pase el dedo)"
|
msgstr "(o pase el dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "¿No está en la lista?"
|
msgstr "¿No está en la lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ventana de inicio de sesión"
|
msgstr "Ventana de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:157
|
#: ../js/gdm/powerMenu.js:160
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:162
|
#: ../js/gdm/powerMenu.js:165
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
@@ -292,27 +310,27 @@ msgid "Execution of '%s' failed:"
|
|||||||
msgstr "Falló la ejecución de «%s»:"
|
msgstr "Falló la ejecución de «%s»:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:251
|
#: ../js/ui/appDisplay.js:255
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todas"
|
msgstr "Todas"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:310
|
#: ../js/ui/appDisplay.js:314
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APLICACIONES"
|
msgstr "APLICACIONES"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:375
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "CONFIGURACIÓN"
|
msgstr "CONFIGURACIÓN"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Ventana nueva"
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Quitar de los favoritos"
|
msgstr "Quitar de los favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:684
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Añadir a los favoritos"
|
msgstr "Añadir a los favoritos"
|
||||||
|
|
||||||
@@ -485,94 +503,90 @@ msgstr "Esta semana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "La semana que viene"
|
msgstr "La semana que viene"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconocido"
|
msgstr "Desconocido"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponible"
|
msgstr "Disponible"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Ausente"
|
msgstr "Ausente"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Ocupado"
|
msgstr "Ocupado"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:97
|
#: ../js/ui/contactDisplay.js:102
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Desconectado"
|
msgstr "Desconectado"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:148
|
#: ../js/ui/contactDisplay.js:153
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTOS"
|
msgstr "CONTACTOS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:103
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Ajustes de hora y fecha"
|
msgstr "Ajustes de hora y fecha"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:123
|
#: ../js/ui/dateMenu.js:129
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Abrir calendario"
|
msgstr "Abrir calendario"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e de %b, %R:%S"
|
msgstr "%a %e de %b, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:182
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e de %b, %R"
|
msgstr "%a %e de %b, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:192
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:193
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e de %b, %l:%M:%S %p"
|
msgstr "%a %e de %b, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:195
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e de %b, %l:%M %p"
|
msgstr "%a %e de %b, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:200
|
#: ../js/ui/dateMenu.js:206
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:211
|
#: ../js/ui/dateMenu.js:217
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e de %B de %Y"
|
msgstr "%A, %e de %B de %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "ELEMENTOS RECIENTES"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@@ -664,84 +678,99 @@ msgstr[1] "El sistema se reiniciará automáticamente en %d segundos."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando el sistema."
|
msgstr "Reiniciando el sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:405
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instalar"
|
msgstr "Instalar"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:409
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:322
|
#: ../js/ui/keyboard.js:327
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "bandeja"
|
msgstr "bandeja"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Contraseña:"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:101
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "Escriba de nuevo:"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "No hay extensiones instaladas"
|
msgstr "No hay extensiones instaladas"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s no ha generado ningún error."
|
msgstr "%s no ha generado ningún error."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Ocultar errores"
|
msgstr "Ocultar errores"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostrar errores"
|
msgstr "Mostrar errores"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activado"
|
msgstr "Activado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Caducado"
|
msgstr "Caducado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Descargando"
|
msgstr "Descargando"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Ver fuente"
|
msgstr "Ver fuente"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:121
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "Screencast desde %d %t"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Dar voz"
|
msgstr "Dar voz"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2447
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
@@ -830,31 +859,35 @@ msgstr "Se requiere una contraseña para conectar a «%s»."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Deshacer"
|
msgstr "Deshacer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:199
|
#: ../js/ui/overview.js:132
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Vista general"
|
||||||
|
|
||||||
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Ventanas"
|
msgstr "Ventanas"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:231
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Tablero"
|
msgstr "Tablero"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:582
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Salir"
|
msgstr "Salir"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:613
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:983
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@@ -895,16 +928,12 @@ msgstr "Autenticar"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Inténtelo de nuevo,"
|
msgstr "Inténtelo de nuevo,"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "Contraseña:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:720
|
#: ../js/ui/popupMenu.js:724
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -912,11 +941,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Introduzca un comando:"
|
msgstr "Introduzca un comando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "No se encontró ningún resultado coincidente."
|
msgstr "No se encontró ningún resultado coincidente."
|
||||||
|
|
||||||
@@ -1351,39 +1380,39 @@ msgid "Invitation"
|
|||||||
msgstr "Invitación"
|
msgstr "Invitación"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:273
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Llamar"
|
msgstr "Llamar"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:289
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Transferencia de archivos"
|
msgstr "Transferencia de archivos"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:371
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Solicitud de suscripción"
|
msgstr "Solicitud de suscripción"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:407
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Error de conexión"
|
msgstr "Error de conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:665
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s está conectado/a."
|
msgstr "%s está conectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:669
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s está desconectado/a."
|
msgstr "%s está desconectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:673
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s está ausente."
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:676
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s está ocupado/a."
|
msgstr "%s está ocupado/a."
|
||||||
@@ -1601,51 +1630,51 @@ msgstr "Editar cuenta"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón desconocida"
|
msgstr "Razón desconocida"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:133
|
#: ../js/ui/userMenu.js:135
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "Oculto"
|
msgstr "Oculto"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:141
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Inactivo"
|
msgstr "Inactivo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:144
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "No disponible"
|
msgstr "No disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Apagar…"
|
msgstr "Apagar…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:615
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificaciones"
|
msgstr "Notificaciones"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:623
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Cuentas en línea"
|
msgstr "Cuentas en línea"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:627
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Configuración del sistema"
|
msgstr "Configuración del sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:634
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Bloquear la pantalla"
|
msgstr "Bloquear la pantalla"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:655
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:644
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Cerrar la sesión…"
|
msgstr "Cerrar la sesión…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:672
|
#: ../js/ui/userMenu.js:688
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:689
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@@ -1684,14 +1713,14 @@ msgstr "%s el oráculo dice"
|
|||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "Su mensaje oculto favorito"
|
msgstr "Su mensaje oculto favorito"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "«%s» está preparado"
|
msgstr "«%s» está preparado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@@ -1700,30 +1729,38 @@ msgstr[1] "%u salidas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
#: ../src/main.c:262
|
#: ../src/main.c:255
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:268
|
#: ../src/main.c:261
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/shell-app.c:617
|
#: ../src/shell-app.c:619
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Falló al lanzar «%s»"
|
msgstr "Falló al lanzar «%s»"
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "Las contraseñas no coinciden."
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "La contraseña no puede estar vacía"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "Reino Unido"
|
msgstr "Reino Unido"
|
||||||
@@ -1758,6 +1795,9 @@ msgstr "Sistema de archivos"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "ELEMENTOS RECIENTES"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||||
|
|||||||
48
po/et.po
48
po/et.po
@@ -13,14 +13,14 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell MASTER\n"
|
"Project-Id-Version: gnome-shell MASTER\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-02-18 00:47+0000\n"
|
"POT-Creation-Date: 2012-03-21 04:50+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-18 02:56+0200\n"
|
"PO-Revision-Date: 2012-03-21 10:34+0200\n"
|
||||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||||
"Language-Team: Estonian <>\n"
|
"Language-Team: Estonian <>\n"
|
||||||
"Language: et\n"
|
"Language: et\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bits\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Poedit-Language: Estonian\n"
|
"X-Poedit-Language: Estonian\n"
|
||||||
"X-Poedit-Country: Estonia\n"
|
"X-Poedit-Country: Estonia\n"
|
||||||
@@ -31,7 +31,7 @@ msgstr "GNOME Shell"
|
|||||||
msgid "Window management and application launching"
|
msgid "Window management and application launching"
|
||||||
msgstr "Aknahaldur ja rakenduste käivitaja"
|
msgstr "Aknahaldur ja rakenduste käivitaja"
|
||||||
|
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "GNOME Shelli laienduste eelistused"
|
msgstr "GNOME Shelli laienduste eelistused"
|
||||||
|
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
@@ -93,6 +93,20 @@ msgstr "Käsudialoogi (Alt-F2) ajalugu"
|
|||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Otsingudialoogi ajalugu"
|
msgstr "Otsingudialoogi ajalugu"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
|
||||||
|
"salvestamiseks. See väärtus pärineb TpConnectionPresenceType nummerdusest."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last session presence status for the user. The "
|
||||||
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
|
||||||
|
"salvestamiseks. See väärtus pärineb GsmPresenceStatus nummerdusest."
|
||||||
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Kalendris näidatakse kuupäeva nädalavormingus"
|
msgstr "Kalendris näidatakse kuupäeva nädalavormingus"
|
||||||
|
|
||||||
@@ -448,9 +462,6 @@ msgstr "%a, %l:%M %p"
|
|||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %d. %B %Y"
|
msgstr "%A, %d. %B %Y"
|
||||||
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "HILJUTISED DOKUMENDID"
|
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
@@ -541,6 +552,12 @@ msgstr "salv"
|
|||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Klaviatuur"
|
msgstr "Klaviatuur"
|
||||||
|
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Parool:"
|
||||||
|
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "Sisesta uuesti:"
|
||||||
|
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Ühtegi laiendust pole paigaldatud"
|
msgstr "Ühtegi laiendust pole paigaldatud"
|
||||||
|
|
||||||
@@ -578,6 +595,11 @@ msgstr "Kuva lähtekoodi"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Veebileht"
|
msgstr "Veebileht"
|
||||||
|
|
||||||
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "Ekraanivideo %d %t"
|
||||||
|
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Ava"
|
msgstr "Ava"
|
||||||
|
|
||||||
@@ -654,6 +676,9 @@ msgstr "'%s' ühenduse loomiseks on vaja parooli."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Võta tagasi"
|
msgstr "Võta tagasi"
|
||||||
|
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Ülevaade"
|
||||||
|
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Aknad"
|
msgstr "Aknad"
|
||||||
|
|
||||||
@@ -705,9 +730,6 @@ msgstr "Autendi"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
|
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
|
||||||
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "Parool:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
@@ -1350,6 +1372,12 @@ msgstr "Sisselogimise kuval kasutatav GDM-i režiim"
|
|||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "'%s' käivitamine nurjus"
|
msgstr "'%s' käivitamine nurjus"
|
||||||
|
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "Paroolid ei kattu."
|
||||||
|
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "Parool ei saa olla tühi"
|
||||||
|
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "Suurbritannia"
|
msgstr "Suurbritannia"
|
||||||
|
|
||||||
|
|||||||
287
po/gl.po
287
po/gl.po
@@ -12,8 +12,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-02-21 11:16+0100\n"
|
"POT-Creation-Date: 2012-04-27 17:06+0200\n"
|
||||||
"PO-Revision-Date: 2012-02-21 11:18+0100\n"
|
"PO-Revision-Date: 2012-04-27 17:07+0200\n"
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
||||||
"Language: gl\n"
|
"Language: gl\n"
|
||||||
@@ -33,8 +33,8 @@ msgstr "Xestor de xanelas e inicio de aplicativos"
|
|||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferencias das extensións de GNOME Shell"
|
msgstr "Preferencias de extensións de GNOME Shell"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
@@ -136,34 +136,51 @@ msgid "If true, display the ISO week date in the calendar."
|
|||||||
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
|
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Keybinding to open the application menu"
|
||||||
|
msgstr "Combinación de teclas para abrir o menú de aplicativo"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "Keybinding to open the application menu."
|
||||||
|
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Combinación de teclas para trocar a gravadora de pantalla"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr ""
|
||||||
|
"Combinación de teclas para iniciar/deter a gravadora de pantalla incrustada."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Que teclado usar"
|
msgstr "Que teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "O tipo de teclado a usar."
|
msgstr "O tipo de teclado a usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostrar a hora con segundos"
|
msgstr "Mostrar a hora con segundos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Se é certa, móstranse os segundos na hora."
|
msgstr "Se é certa, móstranse os segundos na hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostrar a data no reloxo"
|
msgstr "Mostrar a data no reloxo"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
|
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Taxa de marcos usada para gravar «screencast»."
|
msgstr "Taxa de marcos usada para gravar «screencast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@@ -171,11 +188,11 @@ msgstr ""
|
|||||||
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
||||||
"«screencast» de GNOME Shell, en marcos por segundo."
|
"«screencast» de GNOME Shell, en marcos por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@@ -201,11 +218,11 @@ msgstr ""
|
|||||||
"códec VP8. Úsase %T como marcador de posición para o número de fillos "
|
"códec VP8. Úsase %T como marcador de posición para o número de fillos "
|
||||||
"óptimos no sistema."
|
"óptimos no sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@@ -229,53 +246,53 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ou pase o dedo)"
|
msgstr "(ou pase o dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Non está na lista?"
|
msgstr "Non está na lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Xanela de inicio de sesión"
|
msgstr "Xanela de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:157
|
#: ../js/gdm/powerMenu.js:160
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:162
|
#: ../js/gdm/powerMenu.js:165
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
@@ -295,27 +312,27 @@ msgid "Execution of '%s' failed:"
|
|||||||
msgstr "Produciuse un fallo na execución de «%s»:"
|
msgstr "Produciuse un fallo na execución de «%s»:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:251
|
#: ../js/ui/appDisplay.js:255
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todos"
|
msgstr "Todos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:310
|
#: ../js/ui/appDisplay.js:314
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APLICATIVOS"
|
msgstr "APLICATIVOS"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:375
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "CONFIGURACIÓN"
|
msgstr "CONFIGURACIÓN"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Xanela nova"
|
msgstr "Xanela nova"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Eliminar dos favoritos"
|
msgstr "Eliminar dos favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:684
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Engadir aos favoritos"
|
msgstr "Engadir aos favoritos"
|
||||||
|
|
||||||
@@ -488,94 +505,90 @@ msgstr "Esta semana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "A vindeira semana"
|
msgstr "A vindeira semana"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Descoñecido"
|
msgstr "Descoñecido"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Dispoñíbel"
|
msgstr "Dispoñíbel"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Ausente"
|
msgstr "Ausente"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Ocupado"
|
msgstr "Ocupado"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:97
|
#: ../js/ui/contactDisplay.js:102
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Desconectado"
|
msgstr "Desconectado"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:148
|
#: ../js/ui/contactDisplay.js:153
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTOS"
|
msgstr "CONTACTOS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:103
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Opcións de data e hora"
|
msgstr "Preferencias de data e hora"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:123
|
#: ../js/ui/dateMenu.js:129
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Abrir o calendario"
|
msgstr "Abrir o calendario"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e de %b, %R:%S"
|
msgstr "%a %e de %b, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:182
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e de %b, %R"
|
msgstr "%a %e de %b, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:192
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:193
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e de %b, %l:%M:%S"
|
msgstr "%a %e de %b, %l:%M:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:195
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e de %b, %l:%M %p"
|
msgstr "%a %e de %b, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:200
|
#: ../js/ui/dateMenu.js:206
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:211
|
#: ../js/ui/dateMenu.js:217
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a, %e de %B, %Y"
|
msgstr "%a, %e de %B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "ELEMENTOS RECENTES"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@@ -666,84 +679,99 @@ msgstr[1] "O seu computador reiniciarase automaticamente en %d segundos."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando o sistema."
|
msgstr "Reiniciando o sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:405
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instalar"
|
msgstr "Instalar"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:409
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:322
|
#: ../js/ui/keyboard.js:327
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "área de notificación"
|
msgstr "área de notificación"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Contrasinal:"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:101
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "Escriba de novo:"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Non hai ningunha extensión instalada"
|
msgstr "Non hai ningunha extensión instalada"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s non xerou ningún erro."
|
msgstr "%s non xerou ningún erro."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Ocultar erros"
|
msgstr "Ocultar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostrar erros"
|
msgstr "Mostrar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activado"
|
msgstr "Activado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erro"
|
msgstr "Erro"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Caducado"
|
msgstr "Caducado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Descargando"
|
msgstr "Descargando"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Ver fonte"
|
msgstr "Ver fonte"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Páxina web"
|
msgstr "Páxina web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:121
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "Screencast desde %d %t"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Desactivar silencio"
|
msgstr "Desactivar silencio"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2447
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información do sistema"
|
msgstr "Información do sistema"
|
||||||
|
|
||||||
@@ -832,31 +860,35 @@ msgstr "Requírese un contrasinal para conectarse a «%s»."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Desfacer"
|
msgstr "Desfacer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:199
|
#: ../js/ui/overview.js:132
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Vista xeral"
|
||||||
|
|
||||||
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Xanelas"
|
msgstr "Xanelas"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicativos"
|
msgstr "Aplicativos"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:231
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Taboleiro"
|
msgstr "Taboleiro"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:582
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Saír"
|
msgstr "Saír"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:613
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:983
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@@ -897,16 +929,12 @@ msgstr "Autenticar"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "Contrasinal:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:720
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -914,11 +942,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Escriba unha orde:"
|
msgstr "Escriba unha orde:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Non hai resultados que coincidan."
|
msgstr "Non hai resultados que coincidan."
|
||||||
|
|
||||||
@@ -979,7 +1007,7 @@ msgstr "Teclas do rato"
|
|||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:83
|
#: ../js/ui/status/accessibility.js:83
|
||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Opcións de acceso universal"
|
msgstr "Preferencias do acceso universal"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:117
|
#: ../js/ui/status/accessibility.js:117
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
@@ -1010,7 +1038,7 @@ msgstr "Configurar un dispositivo novo…"
|
|||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:87
|
#: ../js/ui/status/bluetooth.js:87
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Opcións de Bluetooth"
|
msgstr "Preferencias do Bluetooth"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||||
@@ -1048,15 +1076,15 @@ msgstr "O dispositivo solicitado non pode explorarse, o erro é «%s»"
|
|||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:268
|
#: ../js/ui/status/bluetooth.js:268
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Opcións do teclado"
|
msgstr "Preferencias do teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:271
|
#: ../js/ui/status/bluetooth.js:271
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Opcións do rato"
|
msgstr "Preferencias do rato"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Opcións do son"
|
msgstr "Preferencias do son"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:372
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1227,7 +1255,7 @@ msgstr "Conexións VPN"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:1602
|
#: ../js/ui/status/network.js:1602
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Opcións da rede"
|
msgstr "Preferencias da rede"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1739
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
@@ -1251,7 +1279,7 @@ msgstr "Batería"
|
|||||||
|
|
||||||
#: ../js/ui/status/power.js:76
|
#: ../js/ui/status/power.js:76
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Opcións de enerxía"
|
msgstr "Preferencias de enerxía"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
@@ -1353,39 +1381,39 @@ msgid "Invitation"
|
|||||||
msgstr "Convite"
|
msgstr "Convite"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:273
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Chamar"
|
msgstr "Chamar"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:289
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Transferencia de ficheiro"
|
msgstr "Transferencia de ficheiro"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:371
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Solicitude de autorización"
|
msgstr "Solicitude de autorización"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:407
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Erro de conexión"
|
msgstr "Erro de conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:665
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s está conectado/a."
|
msgstr "%s está conectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:669
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s está desconectado/a."
|
msgstr "%s está desconectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:673
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s está ausente."
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:676
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s está ocupado/a."
|
msgstr "%s está ocupado/a."
|
||||||
@@ -1603,51 +1631,51 @@ msgstr "Editar conta"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón descoñecida"
|
msgstr "Razón descoñecida"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:133
|
#: ../js/ui/userMenu.js:135
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "Oculto"
|
msgstr "Oculto"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:141
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Inactivo"
|
msgstr "Inactivo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:144
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Non dispoñíbel"
|
msgstr "Non dispoñíbel"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Apagar…"
|
msgstr "Apagar…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:615
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacións"
|
msgstr "Notificacións"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:623
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Contas en liña"
|
msgstr "Contas en liña"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:627
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Opcións do sistema"
|
msgstr "Preferencias do sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:634
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Bloquear a pantalla"
|
msgstr "Bloquear a pantalla"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:655
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:644
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Saír da sesión…"
|
msgstr "Saír da sesión…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:672
|
#: ../js/ui/userMenu.js:688
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "O seu estado do chat estabelecerase a «ocupado»"
|
msgstr "O seu estado do chat estabelecerase a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:689
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@@ -1686,14 +1714,14 @@ msgstr "%s o oráculo dí"
|
|||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "A súa mensaxe oculta favorita"
|
msgstr "A súa mensaxe oculta favorita"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "«%s» está preparado"
|
msgstr "«%s» está preparado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@@ -1702,30 +1730,38 @@ msgstr[1] "%u saídas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons do sistema"
|
msgstr "Sons do sistema"
|
||||||
|
|
||||||
#: ../src/main.c:262
|
#: ../src/main.c:255
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:268
|
#: ../src/main.c:261
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/shell-app.c:617
|
#: ../src/shell-app.c:619
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Produciuse un fallo ao iniciar «%s»"
|
msgstr "Produciuse un fallo ao iniciar «%s»"
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "Os contrasinais non coinciden."
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "O contrasinal non pode estar baleiro"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "Reino Unido"
|
msgstr "Reino Unido"
|
||||||
@@ -1760,6 +1796,9 @@ msgstr "Sistema de ficheiros"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "ELEMENTOS RECENTES"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||||
|
|||||||
435
po/he.po
435
po/he.po
@@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-02-17 15:08+0200\n"
|
"POT-Creation-Date: 2012-04-26 15:30+0300\n"
|
||||||
"PO-Revision-Date: 2012-02-17 15:10+0200\n"
|
"PO-Revision-Date: 2012-04-26 15:30+0200\n"
|
||||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||||
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
@@ -30,115 +30,139 @@ msgid "Window management and application launching"
|
|||||||
msgstr "ניהול חלונות והרצת יישומים"
|
msgstr "ניהול חלונות והרצת יישומים"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
|
#: ../js/extensionPrefs/main.js:153
|
||||||
|
msgid "GNOME Shell Extension Preferences"
|
||||||
|
msgstr "העדפות ההרחבות של GNOME Shell"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "הגדרת הרחבות GNOME Shell"
|
msgstr "הגדרת הרחבות GNOME Shell"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
|
||||||
#: ../js/extensionPrefs/main.js:153
|
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
|
||||||
msgstr "העדפות הרחבות GNOME Shell"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
|
||||||
msgstr "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr "Enable internal tools useful for developers and testers from Alt-F2"
|
msgstr "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
|
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||||
|
msgstr "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "File extension used for storing the screencast"
|
msgstr "Uuids of extensions to enable"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
|
||||||
msgstr "Framerate used for recording screencasts."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
|
||||||
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
msgstr "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "Whether to collect stats about applications usage"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||||
msgstr "History for command (Alt-F2) dialog"
|
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
msgid "History for the looking glass dialog"
|
|
||||||
msgstr "History for the looking glass dialog"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
|
||||||
msgstr "If true, display date in the clock, in addition to time."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
|
||||||
msgid "If true, display seconds in time."
|
|
||||||
msgstr "If true, display seconds in time."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
|
||||||
msgstr "If true, display the ISO week date in the calendar."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "List of desktop file IDs for favorite applications"
|
msgstr "List of desktop file IDs for favorite applications"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
|
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
|
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
|
msgid "disabled OpenSearch providers"
|
||||||
|
msgstr "disabled OpenSearch providers"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
|
msgid "History for command (Alt-F2) dialog"
|
||||||
|
msgstr "History for command (Alt-F2) dialog"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
|
msgid "History for the looking glass dialog"
|
||||||
|
msgstr "History for the looking glass dialog"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
|
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
|
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
|
msgid "Show the week date in the calendar"
|
||||||
|
msgstr "Show the week date in the calendar"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
|
msgstr "If true, display the ISO week date in the calendar."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Keybinding to open the application menu"
|
||||||
|
msgstr "Keybinding to open the application menu"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "Keybinding to open the application menu."
|
||||||
|
msgstr "Keybinding to open the application menu."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Keybinding to toggle the screen recorder"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "באיזו מקלדת להשתמש"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "סוג המקלדת לשימוש."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
|
msgid "Show time with seconds"
|
||||||
|
msgstr "Show time with seconds"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
|
msgid "If true, display seconds in time."
|
||||||
|
msgstr "If true, display seconds in time."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
|
msgid "Show date in clock"
|
||||||
|
msgstr "Show date in clock"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
|
msgstr "If true, display date in the clock, in addition to time."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "Framerate used for recording screencasts."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
|
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||||
|
msgstr "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
|
msgstr "The gstreamer pipeline used to encode the screencast"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "Show date in clock"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Show date in clock"
|
msgstr "File extension used for storing the screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid "Show the week date in the calendar"
|
|
||||||
msgstr "Show the week date in the calendar"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
|
||||||
msgid "Show time with seconds"
|
|
||||||
msgstr "Show time with seconds"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
|
||||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
|
||||||
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
|
||||||
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||||
msgstr "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
msgstr "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
|
||||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
|
||||||
msgstr "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
|
||||||
msgstr "The gstreamer pipeline used to encode the screencast"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
|
||||||
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
|
||||||
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr "סוג המקלדת לשימוש."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
|
||||||
msgid "Uuids of extensions to enable"
|
|
||||||
msgstr "Uuids of extensions to enable"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
|
||||||
msgstr "Whether to collect stats about applications usage"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
|
||||||
msgid "Which keyboard to use"
|
|
||||||
msgstr "באיזו מקלדת להשתמש"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "disabled OpenSearch providers"
|
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:125
|
#: ../js/extensionPrefs/main.js:125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
@@ -152,58 +176,58 @@ msgstr "<b>הרחבה</b>"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
|
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "הפעלה..."
|
msgstr "הפעלה..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "כניסה"
|
msgstr "כניסה"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(או להעביר אצבע)"
|
msgstr "(או להעביר אצבע)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "לא רשום?"
|
msgstr "לא רשום?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020
|
#: ../js/gdm/loginDialog.js:1023
|
||||||
#: ../js/ui/endSessionDialog.js:419
|
#: ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:401
|
#: ../js/ui/extensionSystem.js:400
|
||||||
#: ../js/ui/networkAgent.js:153
|
#: ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||||
#: ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ביטול"
|
msgstr "ביטול"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "כניסה"
|
msgstr "כניסה"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "חלון כניסה"
|
msgstr "חלון כניסה"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:152
|
#: ../js/gdm/powerMenu.js:155
|
||||||
#: ../js/ui/userMenu.js:581
|
#: ../js/ui/userMenu.js:597
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:599
|
||||||
#: ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:668
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "השהיה"
|
msgstr "השהיה"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:157
|
#: ../js/gdm/powerMenu.js:160
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "הפעלה מחדש"
|
msgstr "הפעלה מחדש"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:162
|
#: ../js/gdm/powerMenu.js:165
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "כיבוי"
|
msgstr "כיבוי"
|
||||||
|
|
||||||
@@ -223,27 +247,27 @@ msgid "Execution of '%s' failed:"
|
|||||||
msgstr "ההרצה של '%s' נכשלה:"
|
msgstr "ההרצה של '%s' נכשלה:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:251
|
#: ../js/ui/appDisplay.js:255
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "הכול"
|
msgstr "הכול"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:310
|
#: ../js/ui/appDisplay.js:314
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "יישומים"
|
msgstr "יישומים"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:375
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "הגדרות"
|
msgstr "הגדרות"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "חלון חדש"
|
msgstr "חלון חדש"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "הסרה מהמועדפים"
|
msgstr "הסרה מהמועדפים"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:684
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "הוספה למועדפים"
|
msgstr "הוספה למועדפים"
|
||||||
|
|
||||||
@@ -416,100 +440,96 @@ msgstr "השבוע"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "בשבוע הבא"
|
msgstr "בשבוע הבא"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63
|
#: ../js/ui/contactDisplay.js:66
|
||||||
#: ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215
|
#: ../js/ui/status/power.js:215
|
||||||
#: ../src/shell-app.c:372
|
#: ../src/shell-app.c:374
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "לא ידוע"
|
msgstr "לא ידוע"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84
|
#: ../js/ui/contactDisplay.js:89
|
||||||
#: ../js/ui/userMenu.js:127
|
#: ../js/ui/userMenu.js:129
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "זמין"
|
msgstr "זמין"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89
|
#: ../js/ui/contactDisplay.js:94
|
||||||
#: ../js/ui/userMenu.js:136
|
#: ../js/ui/userMenu.js:138
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "מרוחק"
|
msgstr "מרוחק"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93
|
#: ../js/ui/contactDisplay.js:98
|
||||||
#: ../js/ui/userMenu.js:130
|
#: ../js/ui/userMenu.js:132
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "עסוק"
|
msgstr "עסוק"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:97
|
#: ../js/ui/contactDisplay.js:102
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "מנותק"
|
msgstr "מנותק"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:148
|
#: ../js/ui/contactDisplay.js:153
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "אנשי קשר"
|
msgstr "אנשי קשר"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229
|
#: ../js/ui/dash.js:229
|
||||||
#: ../js/ui/messageTray.js:1204
|
#: ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "הסרה"
|
msgstr "הסרה"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:103
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "הגדרות תאריך ושעה"
|
msgstr "הגדרות תאריך ושעה"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:123
|
#: ../js/ui/dateMenu.js:129
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "פתיחת היומן"
|
msgstr "פתיחת היומן"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %b %e, %R:%S"
|
msgstr "%a %b %e, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:182
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %b %e, %R"
|
msgstr "%a %b %e, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:192
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:193
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %b %e, %l:%M:%S %p"
|
msgstr "%a %b %e, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:195
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %b %e, %l:%M %p"
|
msgstr "%a %b %e, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:200
|
#: ../js/ui/dateMenu.js:206
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:211
|
#: ../js/ui/dateMenu.js:217
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A ה־%e ב%B, %Y"
|
msgstr "%A ה־%e ב%B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "פריטים אחרונים"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@@ -603,87 +623,103 @@ msgstr[2] "המערכת תופעל מחדש בעוד 2 שניות."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "המערכת מופעלת מחדש"
|
msgstr "המערכת מופעלת מחדש"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:405
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "התקנה"
|
msgstr "התקנה"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:409
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "הורדה והתקנה של '%s' מ־extensions.gnome.org?"
|
msgstr "הורדה והתקנה של '%s' מ־extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:322
|
#: ../js/ui/keyboard.js:327
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "מגש מערכת"
|
msgstr "מגש מערכת"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539
|
#: ../js/ui/keyboard.js:544
|
||||||
|
#: ../js/ui/status/keyboard.js:44
|
||||||
#: ../js/ui/status/power.js:203
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "מקלדת"
|
msgstr "מקלדת"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/keyringPrompt.js:85
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "ססמה:"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:101
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "נא להקליד שוב:"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "לא מותקנות הרחבות"
|
msgstr "לא מותקנות הרחבות"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s לא העלה שגיאות כלשהן."
|
msgstr "%s לא העלה שגיאות כלשהן."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "הסתרת השגיאות"
|
msgstr "הסתרת השגיאות"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789
|
#: ../js/ui/lookingGlass.js:796
|
||||||
#: ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "הצגת השגיאות"
|
msgstr "הצגת השגיאות"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "פעיל"
|
msgstr "פעיל"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801
|
#: ../js/ui/lookingGlass.js:808
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1093
|
#: ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "מנוטרל"
|
msgstr "מנוטרל"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "שגיאה"
|
msgstr "שגיאה"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "לא בתוקף"
|
msgstr "לא בתוקף"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "בהורדה"
|
msgstr "בהורדה"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "צפייה במקור"
|
msgstr "צפייה במקור"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "דף אינטרנט"
|
msgstr "דף אינטרנט"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:121
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "צילום מסך מהקובץ %d %t"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "פתיחה"
|
msgstr "פתיחה"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "ביטול ההשתקה"
|
msgstr "ביטול ההשתקה"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "השתקה"
|
msgstr "השתקה"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2446
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "פרטי המערכת"
|
msgstr "פרטי המערכת"
|
||||||
|
|
||||||
@@ -771,31 +807,35 @@ msgstr "נדרשת ססמה כדי להתחבר אל '%s'."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "ביטול"
|
msgstr "ביטול"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:199
|
#: ../js/ui/overview.js:132
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "סקירה"
|
||||||
|
|
||||||
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "חלונות"
|
msgstr "חלונות"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "יישומים"
|
msgstr "יישומים"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:231
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "חלונית"
|
msgstr "חלונית"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:582
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "יציאה"
|
msgstr "יציאה"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:613
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "פעילויות"
|
msgstr "פעילויות"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:983
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "הסרגל העליון"
|
msgstr "הסרגל העליון"
|
||||||
|
|
||||||
@@ -836,16 +876,12 @@ msgstr "אימות"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה."
|
msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "ססמה:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:720
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -853,11 +889,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "נא להזין פקודה:"
|
msgstr "נא להזין פקודה:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "בחיפוש..."
|
msgstr "בחיפוש..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "אין תוצאות תואמות."
|
msgstr "אין תוצאות תואמות."
|
||||||
|
|
||||||
@@ -1311,39 +1347,39 @@ msgid "Invitation"
|
|||||||
msgstr "הזמנה"
|
msgstr "הזמנה"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:273
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "התקשרות"
|
msgstr "התקשרות"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:289
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "העברת קבצים"
|
msgstr "העברת קבצים"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:371
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "בקשת הרשמה"
|
msgstr "בקשת הרשמה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:407
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "שגיאת התחברות"
|
msgstr "שגיאת התחברות"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:665
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s התחבר/ה."
|
msgstr "%s התחבר/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:669
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s התנתק/ה."
|
msgstr "%s התנתק/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:673
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "'%s' מרוחק/ת."
|
msgstr "'%s' מרוחק/ת."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:676
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s עסוק/ה."
|
msgstr "%s עסוק/ה."
|
||||||
@@ -1552,53 +1588,53 @@ msgstr "עריכת חשבון"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "סיבה לא ידועה"
|
msgstr "סיבה לא ידועה"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:133
|
#: ../js/ui/userMenu.js:135
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "מוסתר"
|
msgstr "מוסתר"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:141
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "בהמתנה"
|
msgstr "בהמתנה"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:144
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "לא זמין"
|
msgstr "לא זמין"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579
|
#: ../js/ui/userMenu.js:595
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:599
|
||||||
#: ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:669
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "כיבוי..."
|
msgstr "כיבוי..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:615
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "התרעות"
|
msgstr "התרעות"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:623
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "חשבונות מקוונים"
|
msgstr "חשבונות מקוונים"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:627
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "הגדרות המערכת"
|
msgstr "הגדרות המערכת"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:634
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "נעילת המסך"
|
msgstr "נעילת המסך"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:655
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "החלפת משתמש"
|
msgstr "החלפת משתמש"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:644
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "ניתוק..."
|
msgstr "ניתוק..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:672
|
#: ../js/ui/userMenu.js:688
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
|
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:689
|
||||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||||
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
|
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
|
||||||
|
|
||||||
@@ -1633,14 +1669,14 @@ msgstr "%s, כה אמרה האוראקל"
|
|||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "ביצת הפסחא האהובה עליך"
|
msgstr "ביצת הפסחא האהובה עליך"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "'%s' מוכן"
|
msgstr "'%s' מוכן"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@@ -1650,7 +1686,7 @@ msgstr[2] "2 פלטים"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@@ -1658,23 +1694,31 @@ msgstr[0] "קלט אחד"
|
|||||||
msgstr[1] "%u קלטים"
|
msgstr[1] "%u קלטים"
|
||||||
msgstr[2] "2 קלטים"
|
msgstr[2] "2 קלטים"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "צלילי מערכת"
|
msgstr "צלילי מערכת"
|
||||||
|
|
||||||
#: ../src/main.c:262
|
#: ../src/main.c:255
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Print version"
|
msgstr "Print version"
|
||||||
|
|
||||||
#: ../src/main.c:268
|
#: ../src/main.c:261
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
||||||
|
|
||||||
#: ../src/shell-app.c:617
|
#: ../src/shell-app.c:619
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "אירע כשל בטעינת '%s'"
|
msgstr "אירע כשל בטעינת '%s'"
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "הססמאות אינן תואמות."
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "הססמה לא יכולה להישאר ריקה"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "בריטניה"
|
msgstr "בריטניה"
|
||||||
@@ -1683,7 +1727,7 @@ msgstr "בריטניה"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "בררת מחדל"
|
msgstr "בררת מחדל"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:332
|
#: ../src/shell-polkit-authentication-agent.c:339
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
||||||
|
|
||||||
@@ -1709,6 +1753,9 @@ msgstr "מערכת הקבצים"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "פריטים אחרונים"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||||
|
|||||||
322
po/it.po
322
po/it.po
@@ -10,10 +10,10 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-02-16 01:27+0000\n"
|
"POT-Creation-Date: 2012-04-28 13:41+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-19 15:39+0100\n"
|
"PO-Revision-Date: 2012-04-30 15:32+0200\n"
|
||||||
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
||||||
"Language-Team: Italiano <tp@lists.linux.it>\n"
|
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -30,7 +30,7 @@ msgstr "Gestisce finestre e avvia applicazioni"
|
|||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferenze estensioni di GNOME Shell"
|
msgstr "Preferenze estensioni di GNOME Shell"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
@@ -56,10 +56,6 @@ msgid "Uuids of extensions to enable"
|
|||||||
msgstr "UUID delle estensioni da abilitare"
|
msgstr "UUID delle estensioni da abilitare"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
#| msgid ""
|
|
||||||
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
|
|
||||||
#| "which should not be loaded. This setting overrides enabled-extensions for "
|
|
||||||
#| "extensions that appear in both lists."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
@@ -115,42 +111,67 @@ msgid "History for the looking glass dialog"
|
|||||||
msgstr "Cronologia per il dialogo looking glass"
|
msgstr "Cronologia per il dialogo looking glass"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Usato internamente per memorizzare l'ultimo stato di presenza IM impostato "
|
||||||
|
"esplicitamente dall'utente. Il valore corrisponde alla enumerazione "
|
||||||
|
"TpConnectionPresenceType."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
|
msgid ""
|
||||||
|
"Internally used to store the last session presence status for the user. The "
|
||||||
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr ""
|
||||||
|
"Usato internamente per memorizzare lo stato di presenza dell'ultima sessione "
|
||||||
|
"per l'utente. Il valore corrisponde alla enumerazione GsmPresenceStatus."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Mostra il giorno della settimana nel calendario"
|
msgstr "Mostra il giorno della settimana nel calendario"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Se VERO, mostra il giorno della settimana ISO nel calendario."
|
msgstr "Se VERO, mostra il giorno della settimana ISO nel calendario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Keybinding to open the application menu"
|
||||||
|
msgstr "Associazione tasti per aprire menù applicazioni"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "Keybinding to open the application menu."
|
||||||
|
msgstr "Associazione di tasti per aprire il menù delle applicazioni."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Quale tastiera usare"
|
msgstr "Quale tastiera usare"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Il tipo di tastiera da usare."
|
msgstr "Il tipo di tastiera da usare."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostra l'ora con i secondi"
|
msgstr "Mostra l'ora con i secondi"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Se VERO, mostra i secondi nell'orario."
|
msgstr "Se VERO, mostra i secondi nell'orario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostra la data nell'orologio"
|
msgstr "Mostra la data nell'orologio"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Se VERO, mostra nell'orologio la data, oltre all'orario."
|
msgstr "Se VERO, mostra nell'orologio la data, oltre all'orario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Framerate per la registrazione di screencast."
|
msgstr "Framerate per la registrazione di screencast."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@@ -158,24 +179,12 @@ msgstr ""
|
|||||||
"Il framerate in fotogrammi al secondo dello screencast registrato attraverso "
|
"Il framerate in fotogrammi al secondo dello screencast registrato attraverso "
|
||||||
"il registratore della GNOME Shell."
|
"il registratore della GNOME Shell."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
|
msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
|
||||||
#| "will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 "
|
|
||||||
#| "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T "
|
|
||||||
#| "is used as a placeholder for a guess at the optimal thread count on the "
|
|
||||||
#| "system."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@@ -200,11 +209,11 @@ msgstr ""
|
|||||||
"WEBM usando il codec VP8. %T è usato come un segnaposto per una stima del "
|
"WEBM usando il codec VP8. %T è usato come un segnaposto per una stima del "
|
||||||
"valore di thread ottimale per il sistema in uso."
|
"valore di thread ottimale per il sistema in uso."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Estensione del file utilizzato per salvare lo screencast"
|
msgstr "Estensione del file utilizzato per salvare lo screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@@ -230,53 +239,53 @@ msgstr ""
|
|||||||
"Selezionare una estensione da configurare usando la casella combinata qui "
|
"Selezionare una estensione da configurare usando la casella combinata qui "
|
||||||
"sopra."
|
"sopra."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sessione..."
|
msgstr "Sessione..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Accesso"
|
msgstr "Accesso"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(o passare il dito)"
|
msgstr "(o passare il dito)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Non elencato?"
|
msgstr "Non elencato?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Accedi"
|
msgstr "Accedi"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Finestra di accesso"
|
msgstr "Finestra di accesso"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Sospendi"
|
msgstr "Sospendi"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:157
|
#: ../js/gdm/powerMenu.js:160
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Riavvia"
|
msgstr "Riavvia"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:162
|
#: ../js/gdm/powerMenu.js:165
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Spegni"
|
msgstr "Spegni"
|
||||||
|
|
||||||
@@ -296,27 +305,27 @@ msgid "Execution of '%s' failed:"
|
|||||||
msgstr "Esecuzione di «%s» non riuscita:"
|
msgstr "Esecuzione di «%s» non riuscita:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:251
|
#: ../js/ui/appDisplay.js:255
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Tutte"
|
msgstr "Tutte"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:310
|
#: ../js/ui/appDisplay.js:314
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APPLICAZIONI"
|
msgstr "APPLICAZIONI"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:375
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "IMPOSTAZIONI"
|
msgstr "IMPOSTAZIONI"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nuova finestra"
|
msgstr "Nuova finestra"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Rimuovi dai preferiti"
|
msgstr "Rimuovi dai preferiti"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:684
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Aggiungi ai preferiti"
|
msgstr "Aggiungi ai preferiti"
|
||||||
|
|
||||||
@@ -491,103 +500,97 @@ msgstr "Questa settimana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Prossima settimana"
|
msgstr "Prossima settimana"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Sconosciuto"
|
msgstr "Sconosciuto"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponibile"
|
msgstr "Disponibile"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Assente"
|
msgstr "Assente"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Non disponibile"
|
msgstr "Non disponibile"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:97
|
#: ../js/ui/contactDisplay.js:102
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Fuori rete"
|
msgstr "Fuori rete"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:148
|
#: ../js/ui/contactDisplay.js:153
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTATTI"
|
msgstr "CONTATTI"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Rimuovi"
|
msgstr "Rimuovi"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:103
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Impostazioni data e ora"
|
msgstr "Impostazioni data e ora"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:123
|
#: ../js/ui/dateMenu.js:129
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Apri calendario"
|
msgstr "Apri calendario"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e %b, %k.%M.%S"
|
msgstr "%a %e %b, %k.%M.%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:182
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e %b, %k.%M"
|
msgstr "%a %e %b, %k.%M"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:192
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %k.%M.%S"
|
msgstr "%a %k.%M.%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:193
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %k.%M"
|
msgstr "%a %k.%M"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e %b, %l.%M.%S %P"
|
msgstr "%a %e %b, %l.%M.%S %P"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:195
|
#: ../js/ui/dateMenu.js:201
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e %b, %l.%M %P"
|
msgstr "%a %e %b, %l.%M %P"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l.%M.%S %P"
|
msgstr "%a %l.%M.%S %P"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:200
|
#: ../js/ui/dateMenu.js:206
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l.%M %P"
|
msgstr "%a %l.%M %P"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:211
|
#: ../js/ui/dateMenu.js:217
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a %e %B %Y"
|
msgstr "%a %e %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "ELEMENTI RECENTI"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "Log Out %s"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Termina sessione di %s"
|
msgstr "Termina sessione di %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:62
|
#: ../js/ui/endSessionDialog.js:62
|
||||||
#| msgid "Log Out"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Termina sessione"
|
msgstr "Termina sessione"
|
||||||
@@ -623,7 +626,6 @@ msgid "Log Out"
|
|||||||
msgstr "Termina sessione"
|
msgstr "Termina sessione"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
#| msgid "Power Off"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Spegni"
|
msgstr "Spegni"
|
||||||
@@ -645,19 +647,16 @@ msgid "Powering off the system."
|
|||||||
msgstr "Spegnimento del sistema."
|
msgstr "Spegnimento del sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||||
#| msgid "Restart"
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Riavvia"
|
msgstr "Riavvia"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:92
|
#: ../js/ui/endSessionDialog.js:92
|
||||||
#| msgid "Power Off"
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Spegni"
|
msgstr "Spegni"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
#| msgid "Restart"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Riavvia"
|
msgstr "Riavvia"
|
||||||
@@ -679,11 +678,11 @@ msgstr[1] "Il sistema verrà riavviato automaticamente tra %d secondi."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Riavvio del sistema."
|
msgstr "Riavvio del sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:405
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Installa"
|
msgstr "Installa"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:409
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||||
@@ -691,82 +690,92 @@ msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
|||||||
# FIXME!!!!!!
|
# FIXME!!!!!!
|
||||||
# dai, ma come fai a tradurre un pulsante del genere?!?!?!
|
# dai, ma come fai a tradurre un pulsante del genere?!?!?!
|
||||||
# per ora ho messo nascondi, poi vedremo
|
# per ora ho messo nascondi, poi vedremo
|
||||||
#: ../js/ui/keyboard.js:322
|
#: ../js/ui/keyboard.js:327
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "nascondi"
|
msgstr "nascondi"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastiera"
|
msgstr "Tastiera"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Password:"
|
||||||
|
|
||||||
|
#: ../js/ui/keyringPrompt.js:101
|
||||||
|
msgid "Type again:"
|
||||||
|
msgstr "Inserire di nuovo:"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Nessuna estensione installata"
|
msgstr "Nessuna estensione installata"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s non ha emesso alcun errore."
|
msgstr "%s non ha emesso alcun errore."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
#| msgid "Error"
|
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Nascondi errori"
|
msgstr "Nascondi errori"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
#| msgid "Error"
|
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostra errori"
|
msgstr "Mostra errori"
|
||||||
|
|
||||||
# (ndt) o abilitata?
|
# (ndt) o abilitata?
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Abilitato"
|
msgstr "Abilitato"
|
||||||
|
|
||||||
# (ndt) o disabilitata?
|
# (ndt) o disabilitata?
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabilitato"
|
msgstr "Disabilitato"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Errore"
|
msgstr "Errore"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Non aggiornato"
|
msgstr "Non aggiornato"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Scaricamento"
|
msgstr "Scaricamento"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Visualizza sorgente"
|
msgstr "Visualizza sorgente"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Pagina web"
|
msgstr "Pagina web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:118
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr "Screencast da %d %t"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Apri"
|
msgstr "Apri"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
#| msgid "minute"
|
|
||||||
#| msgid_plural "minutes"
|
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Attiva audio"
|
msgstr "Attiva audio"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1214
|
#: ../js/ui/messageTray.js:1217
|
||||||
#| msgid "Mouse"
|
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Escludi audio"
|
msgstr "Escludi audio"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2446
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informazione di sistema"
|
msgstr "Informazione di sistema"
|
||||||
|
|
||||||
@@ -812,8 +821,8 @@ msgstr "Richiesta autenticazione dalla rete wireless"
|
|||||||
#: ../js/ui/networkAgent.js:330
|
#: ../js/ui/networkAgent.js:330
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network '%"
|
||||||
"'%s'."
|
"s'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"È richiesta una password o una chiave di cifratura per accedere alla rete "
|
"È richiesta una password o una chiave di cifratura per accedere alla rete "
|
||||||
"wireless «%s»."
|
"wireless «%s»."
|
||||||
@@ -855,33 +864,36 @@ msgstr "È richiesta una password per connettersi a «%s»."
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:199
|
#: ../js/ui/overview.js:132
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Panoramica"
|
||||||
|
|
||||||
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Finestre"
|
msgstr "Finestre"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applicazioni"
|
msgstr "Applicazioni"
|
||||||
|
|
||||||
# cruscotto?!?!?!?!?!?!?
|
# cruscotto?!?!?!?!?!?!?
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:231
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Dash"
|
msgstr "Dash"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:582
|
#: ../js/ui/panel.js:592
|
||||||
#| msgid "Quit %s"
|
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Esci"
|
msgstr "Esci"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:613
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Attività"
|
msgstr "Attività"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:983
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superiore"
|
msgstr "Barra superiore"
|
||||||
|
|
||||||
@@ -923,16 +935,12 @@ msgstr "Autentica"
|
|||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Errore nell'autenticazione. Provare di nuovo."
|
msgstr "Errore nell'autenticazione. Provare di nuovo."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
|
||||||
msgid "Password:"
|
|
||||||
msgstr "Password:"
|
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:720
|
#: ../js/ui/popupMenu.js:724
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
@@ -940,11 +948,11 @@ msgstr "toggle-switch-us"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Inserire un comando:"
|
msgstr "Inserire un comando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Ricerca..."
|
msgstr "Ricerca..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Nessun risultato corrispondente."
|
msgstr "Nessun risultato corrispondente."
|
||||||
|
|
||||||
@@ -953,7 +961,6 @@ msgid "Copy"
|
|||||||
msgstr "Copia"
|
msgstr "Copia"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:31
|
#: ../js/ui/shellEntry.js:31
|
||||||
#| msgid "Panel"
|
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "Incolla"
|
msgstr "Incolla"
|
||||||
|
|
||||||
@@ -962,7 +969,6 @@ msgid "Show Text"
|
|||||||
msgstr "Mostra testo"
|
msgstr "Mostra testo"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:79
|
#: ../js/ui/shellEntry.js:79
|
||||||
#| msgid "Large Text"
|
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Nascondi testo"
|
msgstr "Nascondi testo"
|
||||||
|
|
||||||
@@ -972,7 +978,6 @@ msgstr "Password errata, provare di nuovo"
|
|||||||
|
|
||||||
# su Android è Rilevabile :P
|
# su Android è Rilevabile :P
|
||||||
#: ../js/ui/status/accessibility.js:47
|
#: ../js/ui/status/accessibility.js:47
|
||||||
#| msgid "Visibility"
|
|
||||||
msgid "Accessibility"
|
msgid "Accessibility"
|
||||||
msgstr "Accessibilità"
|
msgstr "Accessibilità"
|
||||||
|
|
||||||
@@ -1236,7 +1241,6 @@ msgid "Auto wireless"
|
|||||||
msgstr "Wireless automatica"
|
msgstr "Wireless automatica"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1541
|
#: ../js/ui/status/network.js:1541
|
||||||
#| msgid "Network error"
|
|
||||||
msgid "Network"
|
msgid "Network"
|
||||||
msgstr "Rete"
|
msgstr "Rete"
|
||||||
|
|
||||||
@@ -1390,41 +1394,41 @@ msgstr "Invito"
|
|||||||
|
|
||||||
# A memora del test che ho fatto è "chiamata"... da verificare meglio
|
# A memora del test che ho fatto è "chiamata"... da verificare meglio
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:273
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Chiamata"
|
msgstr "Chiamata"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:289
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Trasferimento file"
|
msgstr "Trasferimento file"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:371
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Richesta sottoscrizione"
|
msgstr "Richesta sottoscrizione"
|
||||||
|
|
||||||
# indica lo stato del device BT, per esempio gli auricolari
|
# indica lo stato del device BT, per esempio gli auricolari
|
||||||
# credo sia meglio l'aggettivo che il sostantivo
|
# credo sia meglio l'aggettivo che il sostantivo
|
||||||
#: ../js/ui/telepathyClient.js:407
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Errore di connessione"
|
msgstr "Errore di connessione"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:665
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s è disponibile."
|
msgstr "%s è disponibile."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:669
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s è fuori rete."
|
msgstr "%s è fuori rete."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:673
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s è assente."
|
msgstr "%s è assente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:676
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s non è disponibile."
|
msgstr "%s non è disponibile."
|
||||||
@@ -1581,7 +1585,6 @@ msgid "Connection has been lost"
|
|||||||
msgstr "Connessione persa"
|
msgstr "Connessione persa"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
#| msgid "This resource is already connected to the server"
|
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Questo account è già connesso al server"
|
msgstr "Questo account è già connesso al server"
|
||||||
|
|
||||||
@@ -1623,7 +1626,6 @@ msgstr ""
|
|||||||
# indica lo stato del device BT, per esempio gli auricolari
|
# indica lo stato del device BT, per esempio gli auricolari
|
||||||
# credo sia meglio l'aggettivo che il sostantivo
|
# credo sia meglio l'aggettivo che il sostantivo
|
||||||
#: ../js/ui/telepathyClient.js:1335
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
#| msgid "Connection error"
|
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Errore interno"
|
msgstr "Errore interno"
|
||||||
|
|
||||||
@@ -1646,52 +1648,52 @@ msgstr "Modifica account"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Motivo sconosciuto"
|
msgstr "Motivo sconosciuto"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:133
|
#: ../js/ui/userMenu.js:135
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "Invisibile"
|
msgstr "Invisibile"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:141
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Inattivo"
|
msgstr "Inattivo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:144
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Non disponibile"
|
msgstr "Non disponibile"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Spegni..."
|
msgstr "Spegni..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:615
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifiche"
|
msgstr "Notifiche"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:623
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Account online"
|
msgstr "Account online"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:627
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Impostazioni di sistema"
|
msgstr "Impostazioni di sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:634
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Blocca schermo"
|
msgstr "Blocca schermo"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:655
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambia utente"
|
msgstr "Cambia utente"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:644
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Termina sessione..."
|
msgstr "Termina sessione..."
|
||||||
|
|
||||||
# accorciato, altrimenti non si legge...
|
# accorciato, altrimenti non si legge...
|
||||||
#: ../js/ui/userMenu.js:672
|
#: ../js/ui/userMenu.js:688
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Stato per chat impostato a non disponibile"
|
msgstr "Stato per chat impostato a non disponibile"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:689
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@@ -1732,14 +1734,14 @@ msgid "Your favorite Easter Egg"
|
|||||||
msgstr "Il vostro Easter Egg preferito"
|
msgstr "Il vostro Easter Egg preferito"
|
||||||
|
|
||||||
# (ndt) dovrebbe essere il nome dell'applicazione
|
# (ndt) dovrebbe essere il nome dell'applicazione
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "«%s» è pronto"
|
msgstr "«%s» è pronto"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@@ -1748,30 +1750,38 @@ msgstr[1] "%u uscite"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u ingresso"
|
msgstr[0] "%u ingresso"
|
||||||
msgstr[1] "%u ingressi"
|
msgstr[1] "%u ingressi"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Audio di sistema"
|
msgstr "Audio di sistema"
|
||||||
|
|
||||||
#: ../src/main.c:262
|
#: ../src/main.c:255
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Stampa la versione"
|
msgstr "Stampa la versione"
|
||||||
|
|
||||||
#: ../src/main.c:268
|
#: ../src/main.c:261
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modalità usata da GDM per la schermata d'accesso"
|
msgstr "Modalità usata da GDM per la schermata d'accesso"
|
||||||
|
|
||||||
#: ../src/shell-app.c:617
|
#: ../src/shell-app.c:619
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Avvio di «%s» non riuscito"
|
msgstr "Avvio di «%s» non riuscito"
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
|
msgid "Passwords do not match."
|
||||||
|
msgstr "Le password non corrispondono."
|
||||||
|
|
||||||
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
|
msgid "Password cannot be blank"
|
||||||
|
msgstr "La password non può essere vuota"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
msgstr "Regno Unito"
|
msgstr "Regno Unito"
|
||||||
@@ -1780,14 +1790,13 @@ msgstr "Regno Unito"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Predefinito"
|
msgstr "Predefinito"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:332
|
#: ../src/shell-polkit-authentication-agent.c:339
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
|
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:97
|
#: ../src/shell-util.c:97
|
||||||
#| msgid "Volume"
|
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Home"
|
msgstr "Home"
|
||||||
|
|
||||||
@@ -1808,6 +1817,9 @@ msgstr "File system"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "ELEMENTI RECENTI"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||||
|
|||||||
435
po/kk.po
435
po/kk.po
@@ -6,10 +6,9 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: master\n"
|
"Project-Id-Version: master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2012-02-26 17:09+0000\n"
|
||||||
"POT-Creation-Date: 2012-02-10 20:26+0000\n"
|
"PO-Revision-Date: 2012-02-27 13:18+0600\n"
|
||||||
"PO-Revision-Date: 2012-02-12 10:42+0600\n"
|
|
||||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -28,9 +27,10 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
|
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:154
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extensions Preferences"
|
#| msgid "GNOME Shell Extensions Preferences"
|
||||||
msgstr "GNOME Shell кеңейтулерінің баптаулары"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
|
msgstr "GNOME Shell кеңейту баптаулары"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
@@ -41,9 +41,7 @@ msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
|
||||||
"dialog."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
@@ -51,11 +49,7 @@ msgid "Uuids of extensions to enable"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid ""
|
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
|
||||||
"list. You can also manipulate this list with the EnableExtension and "
|
|
||||||
"DisableExtension DBus methods on org.gnome.Shell."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
@@ -63,25 +57,15 @@ msgid "Whether to collect stats about applications usage"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid ""
|
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||||
"The shell normally monitors active applications in order to present the most "
|
msgstr "Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
|
||||||
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
|
||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
|
||||||
"remove already saved data."
|
|
||||||
msgstr ""
|
|
||||||
"Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін "
|
|
||||||
"бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, "
|
|
||||||
"қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін "
|
|
||||||
"сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "Таңдамалы қолданбалар үшін desktop файлдары ID-нің тізімі"
|
msgstr "Таңдамалы қолданбалар үшін desktop файлдары ID-нің тізімі"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
msgid ""
|
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
|
||||||
"favorites area."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
@@ -97,87 +81,80 @@ msgid "History for the looking glass dialog"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
|
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
|
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Күнтізбеде апта күнін көрсету"
|
msgstr "Күнтізбеде апта күнін көрсету"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Ақиқат болса, күнтізбеде ISO апта күнін көрсетеді."
|
msgstr "Ақиқат болса, күнтізбеде ISO апта күнін көрсетеді."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Қолданылатын пернетақта"
|
msgstr "Қолданылатын пернетақта"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Қолданылатын пернетақта түрі."
|
msgstr "Қолданылатын пернетақта түрі."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Уақытты секундтармен бірге көрсету"
|
msgstr "Уақытты секундтармен бірге көрсету"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Ақиқат болса, уақытта секундтар көрсетіледі. "
|
msgstr "Ақиқат болса, уақытта секундтар көрсетіледі. "
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Сағатта күнді көрсету"
|
msgstr "Сағатта күнді көрсету"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Ақиқат болса, сағатта уақытқа қоса күн көрсетіледі."
|
msgstr "Ақиқат болса, сағатта уақытқа қоса күн көрсетіледі."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Скринкасттарды жазу үшін қолданылатын кадр/сек баптауы."
|
msgstr "Скринкасттарды жазу үшін қолданылатын кадр/сек баптауы."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid ""
|
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
|
||||||
"screencast recorder in frames-per-second."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
#, no-c-format
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgid ""
|
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
|
||||||
"the recorded video is recorded. It will normally have a unconnected source "
|
|
||||||
"pad; output from that pad will be written into the output file. However the "
|
|
||||||
"pipeline can also take care of its own output - this might be used to send "
|
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
|
||||||
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
|
||||||
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
|
||||||
"thread count on the system."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Скринкастты сақтау үшін қолданылатын файл кеңетуі"
|
msgstr "Скринкастты сақтау үшін қолданылатын файл кеңетуі"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid ""
|
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
|
||||||
"a different container format."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:126
|
#: ../js/extensionPrefs/main.js:125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "%s үшін баптаулар сұхбатын жүктеу кезінде қате орын алды:"
|
msgstr "%s үшін баптаулар сұхбатын жүктеу кезінде қате орын алды:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:166
|
#: ../js/extensionPrefs/main.js:165
|
||||||
msgid "<b>Extension</b>"
|
msgid "<b>Extension</b>"
|
||||||
msgstr "<b>Кеңейту</b>"
|
msgstr "<b>Кеңейту</b>"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:190
|
#: ../js/extensionPrefs/main.js:189
|
||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -203,9 +180,12 @@ msgstr ""
|
|||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Тізімде жоқсыз ба?"
|
msgstr "Тізімде жоқсыз ба?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
#: ../js/gdm/loginDialog.js:1020
|
||||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:145
|
#: ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/extensionSystem.js:401
|
||||||
|
#: ../js/ui/networkAgent.js:153
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||||
|
#: ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Бас тарту"
|
msgstr "Бас тарту"
|
||||||
|
|
||||||
@@ -218,16 +198,18 @@ msgstr "Кіру"
|
|||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Жүйеге кіру терезесі"
|
msgstr "Жүйеге кіру терезесі"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:581
|
#: ../js/gdm/powerMenu.js:152
|
||||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
#: ../js/ui/userMenu.js:581
|
||||||
|
#: ../js/ui/userMenu.js:583
|
||||||
|
#: ../js/ui/userMenu.js:652
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Ұйықтату"
|
msgstr "Ұйықтату"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:118
|
#: ../js/gdm/powerMenu.js:157
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Қайта қосу"
|
msgstr "Қайта қосу"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:123
|
#: ../js/gdm/powerMenu.js:162
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Сөндіру"
|
msgstr "Сөндіру"
|
||||||
|
|
||||||
@@ -255,19 +237,19 @@ msgstr "Барлық"
|
|||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "Қолданбалар"
|
msgstr "Қолданбалар"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:366
|
#: ../js/ui/appDisplay.js:371
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "Баптаулар"
|
msgstr "Баптаулар"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:666
|
#: ../js/ui/appDisplay.js:676
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Жаңа терезе"
|
msgstr "Жаңа терезе"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:669
|
#: ../js/ui/appDisplay.js:679
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Таңдамалылардан өшіру"
|
msgstr "Таңдамалылардан өшіру"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:670
|
#: ../js/ui/appDisplay.js:680
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Таңдамалыларға қосу"
|
msgstr "Таңдамалыларға қосу"
|
||||||
|
|
||||||
@@ -440,20 +422,25 @@ msgstr "Осы аптада"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Келесі аптада"
|
msgstr "Келесі аптада"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:63
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
#: ../js/ui/notificationDaemon.js:486
|
||||||
|
#: ../js/ui/status/power.js:215
|
||||||
|
#: ../src/shell-app.c:372
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Белгісіз"
|
msgstr "Белгісіз"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
#: ../js/ui/contactDisplay.js:84
|
||||||
|
#: ../js/ui/userMenu.js:127
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Қолжетерлік"
|
msgstr "Қолжетерлік"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
#: ../js/ui/contactDisplay.js:89
|
||||||
|
#: ../js/ui/userMenu.js:136
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Кетіп қалған"
|
msgstr "Кетіп қалған"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
#: ../js/ui/contactDisplay.js:93
|
||||||
|
#: ../js/ui/userMenu.js:130
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Бос емес"
|
msgstr "Бос емес"
|
||||||
|
|
||||||
@@ -465,7 +452,8 @@ msgstr "Желіде емес"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "Контакттар"
|
msgstr "Контакттар"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229
|
||||||
|
#: ../js/ui/messageTray.js:1204
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Өшіру"
|
msgstr "Өшіру"
|
||||||
|
|
||||||
@@ -524,10 +512,6 @@ msgstr "%a %l:%M %p"
|
|||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B, %Y"
|
msgstr "%A %e %B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:13
|
|
||||||
msgid "RECENT ITEMS"
|
|
||||||
msgstr "Соңғы нәрселер"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
@@ -583,7 +567,8 @@ msgstr[0] "Жүйе %d секундтан кейін автоматты түрд
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Жүйені сөндіру."
|
msgstr "Жүйені сөндіру."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Қайта қосу"
|
msgstr "Қайта қосу"
|
||||||
@@ -600,8 +585,7 @@ msgstr "Қайта қосу"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:99
|
#: ../js/ui/endSessionDialog.js:99
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr "Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
|
||||||
"Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:101
|
#: ../js/ui/endSessionDialog.js:101
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -626,7 +610,8 @@ msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, ор
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:539
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Пернетақта"
|
msgstr "Пернетақта"
|
||||||
|
|
||||||
@@ -644,7 +629,8 @@ msgstr ""
|
|||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Қателерді жасыру"
|
msgstr "Қателерді жасыру"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:789
|
||||||
|
#: ../js/ui/lookingGlass.js:840
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Қателерді көрсету"
|
msgstr "Қателерді көрсету"
|
||||||
|
|
||||||
@@ -654,7 +640,8 @@ msgstr "Іске қосылған"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:801
|
||||||
|
#: ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Сөндірулі"
|
msgstr "Сөндірулі"
|
||||||
|
|
||||||
@@ -678,6 +665,12 @@ msgstr "Бастапқы кодын қарау"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Веб парағы"
|
msgstr "Веб парағы"
|
||||||
|
|
||||||
|
#. Translators: this is a filename used for screencast recording
|
||||||
|
#: ../js/ui/main.js:115
|
||||||
|
#, no-c-format
|
||||||
|
msgid "Screencast from %d %t"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1197
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Ашу"
|
msgstr "Ашу"
|
||||||
@@ -690,85 +683,86 @@ msgstr "Дыбысты қайтару"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Дыбысын өшіру"
|
msgstr "Дыбысын өшіру"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2446
|
#: ../js/ui/messageTray.js:2447
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Жүйелік ақпарат"
|
msgstr "Жүйелік ақпарат"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:140
|
#: ../js/ui/networkAgent.js:148
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Байланысу"
|
msgstr "Байланысу"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:235 ../js/ui/networkAgent.js:247
|
#: ../js/ui/networkAgent.js:243
|
||||||
#: ../js/ui/networkAgent.js:274 ../js/ui/networkAgent.js:294
|
#: ../js/ui/networkAgent.js:255
|
||||||
#: ../js/ui/networkAgent.js:304
|
#: ../js/ui/networkAgent.js:282
|
||||||
|
#: ../js/ui/networkAgent.js:302
|
||||||
|
#: ../js/ui/networkAgent.js:312
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Пароль:"
|
msgstr "Пароль:"
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:240
|
#: ../js/ui/networkAgent.js:248
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Кілт:"
|
msgstr "Кілт:"
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:272 ../js/ui/networkAgent.js:290
|
#: ../js/ui/networkAgent.js:280
|
||||||
|
#: ../js/ui/networkAgent.js:298
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Пайдаланушы аты:"
|
msgstr "Пайдаланушы аты:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:278
|
#: ../js/ui/networkAgent.js:286
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:280
|
#: ../js/ui/networkAgent.js:288
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Жеке кілт паролі:"
|
msgstr "Жеке кілт паролі:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:292
|
#: ../js/ui/networkAgent.js:300
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Қызмет:"
|
msgstr "Қызмет:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:321
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Сымсыз желісі аутентификацияны талап етеді"
|
msgstr "Сымсыз желісі аутентификацияны талап етеді"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:322
|
#: ../js/ui/networkAgent.js:330
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||||
"Passwords or encryption keys are required to access the wireless network '%"
|
|
||||||
"s'."
|
|
||||||
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
|
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:326
|
#: ../js/ui/networkAgent.js:334
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Сымды 802.1X аутентификациясы"
|
msgstr "Сымды 802.1X аутентификациясы"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:328
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Желі аты:"
|
msgstr "Желі аты:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:333
|
#: ../js/ui/networkAgent.js:341
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL аутентификациясы"
|
msgstr "DSL аутентификациясы"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:340
|
#: ../js/ui/networkAgent.js:348
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "PIN коды керек"
|
msgstr "PIN коды керек"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:349
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
|
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:350
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:356
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Сымсыз кеңжолақты желісінің паролі"
|
msgstr "Сымсыз кеңжолақты желісінің паролі"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:349
|
#: ../js/ui/networkAgent.js:357
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
|
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
|
||||||
@@ -787,21 +781,21 @@ msgstr "Қолданбалар"
|
|||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:226
|
#: ../js/ui/overview.js:228
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/panel.js:572
|
#: ../js/ui/panel.js:582
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Шығу"
|
msgstr "Шығу"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:603
|
#: ../js/ui/panel.js:613
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Көрініс"
|
msgstr "Көрініс"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:971
|
#: ../js/ui/panel.js:983
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Үстідегі панель"
|
msgstr "Үстідегі панель"
|
||||||
|
|
||||||
@@ -859,11 +853,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Команданы енгізіңіз:"
|
msgstr "Команданы енгізіңіз:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:333
|
#: ../js/ui/searchDisplay.js:349
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Іздеуде..."
|
msgstr "Іздеуде..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:356
|
#: ../js/ui/searchDisplay.js:417
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Сәйкес келетін нәтижелер жоқ."
|
msgstr "Сәйкес келетін нәтижелер жоқ."
|
||||||
|
|
||||||
@@ -934,10 +928,14 @@ msgstr "Жоғары контраст"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Үлкен мәтін"
|
msgstr "Үлкен мәтін"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
#: ../js/ui/status/bluetooth.js:31
|
||||||
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
#: ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
#: ../js/ui/status/bluetooth.js:258
|
||||||
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
#: ../js/ui/status/bluetooth.js:341
|
||||||
|
#: ../js/ui/status/bluetooth.js:371
|
||||||
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
|
#: ../js/ui/status/bluetooth.js:436
|
||||||
|
#: ../js/ui/status/network.js:893
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@@ -958,7 +956,8 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "Bluetooth баптаулары"
|
msgstr "Bluetooth баптаулары"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
|
#: ../js/ui/status/network.js:256
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "құрылғы сөндірулі"
|
msgstr "құрылғы сөндірулі"
|
||||||
|
|
||||||
@@ -966,11 +965,13 @@ msgstr "құрылғы сөндірулі"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Байланыс"
|
msgstr "Байланыс"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
#: ../js/ui/status/bluetooth.js:214
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "байланысты үзу..."
|
msgstr "байланысты үзу..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
#: ../js/ui/status/bluetooth.js:227
|
||||||
|
#: ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "байланысты орнату..."
|
msgstr "байланысты орнату..."
|
||||||
|
|
||||||
@@ -999,7 +1000,8 @@ msgstr "Пернетақта баптаулары"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Тышқан баптаулары"
|
msgstr "Тышқан баптаулары"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
#: ../js/ui/status/bluetooth.js:276
|
||||||
|
#: ../js/ui/status/volume.js:59
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Дыбыс баптаулары"
|
msgstr "Дыбыс баптаулары"
|
||||||
|
|
||||||
@@ -1021,7 +1023,8 @@ msgstr "Әрқашан рұқсат ету"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Тек осы ретке рұқсат ету"
|
msgstr "Тек осы ретке рұқсат ету"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
|
#: ../js/ui/status/bluetooth.js:382
|
||||||
|
#: ../js/ui/telepathyClient.js:1091
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Болдырмау"
|
msgstr "Болдырмау"
|
||||||
|
|
||||||
@@ -1030,7 +1033,8 @@ msgstr "Болдырмау"
|
|||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "%s жіберген парлау растауы"
|
msgstr "%s жіберген парлау растауы"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
|
#: ../js/ui/status/bluetooth.js:444
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
|
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
|
||||||
@@ -1110,13 +1114,15 @@ msgstr "қолжетерсіз"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "байланысты орнату сәтсіз"
|
msgstr "байланысты орнату сәтсіз"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
#: ../js/ui/status/network.js:585
|
||||||
|
#: ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Көбірек..."
|
msgstr "Көбірек..."
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
#: ../js/ui/status/network.js:621
|
||||||
|
#: ../js/ui/status/network.js:1440
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Байланысқан (жеке)"
|
msgstr "Байланысқан (жеке)"
|
||||||
|
|
||||||
@@ -1133,7 +1139,8 @@ msgid "Auto dial-up"
|
|||||||
msgstr "Автоматты dial-up"
|
msgstr "Автоматты dial-up"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
#: ../js/ui/status/network.js:879
|
||||||
|
#: ../js/ui/status/network.js:1452
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Автоматты %s"
|
msgstr "Автоматты %s"
|
||||||
@@ -1232,7 +1239,8 @@ msgid "%d minute remaining"
|
|||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d минут қалды"
|
msgstr[0] "%d минут қалды"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:116 ../js/ui/status/power.js:186
|
#: ../js/ui/status/power.js:116
|
||||||
|
#: ../js/ui/status/power.js:186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "percent of battery remaining"
|
msgctxt "percent of battery remaining"
|
||||||
msgid "%d%%"
|
msgid "%d%%"
|
||||||
@@ -1279,7 +1287,8 @@ msgid "Computer"
|
|||||||
msgstr "Компьютер"
|
msgstr "Компьютер"
|
||||||
|
|
||||||
#. Translators: This is the label for audio volume
|
#. Translators: This is the label for audio volume
|
||||||
#: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:39
|
#: ../js/ui/status/volume.js:25
|
||||||
|
#: ../js/ui/status/volume.js:39
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Дыбыс деңгейі"
|
msgstr "Дыбыс деңгейі"
|
||||||
|
|
||||||
@@ -1289,44 +1298,44 @@ msgstr "Микрофон"
|
|||||||
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:225
|
#: ../js/ui/telepathyClient.js:220
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Шақыру"
|
msgstr "Шақыру"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:278
|
#: ../js/ui/telepathyClient.js:271
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Қоңырау"
|
msgstr "Қоңырау"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:294
|
#: ../js/ui/telepathyClient.js:287
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Файлдармен алмасу"
|
msgstr "Файлдармен алмасу"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:376
|
#: ../js/ui/telepathyClient.js:369
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Жазылуға сұраным"
|
msgstr "Жазылуға сұраным"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:412
|
#: ../js/ui/telepathyClient.js:405
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Байланыс орнату қатесі"
|
msgstr "Байланыс орнату қатесі"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:670
|
#: ../js/ui/telepathyClient.js:663
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s желіде."
|
msgstr "%s желіде."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:674
|
#: ../js/ui/telepathyClient.js:667
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s желіде емес."
|
msgstr "%s желіде емес."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:678
|
#: ../js/ui/telepathyClient.js:671
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s кетіп қалған."
|
msgstr "%s кетіп қалған."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:681
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s бос емес."
|
msgstr "%s бос емес."
|
||||||
@@ -1334,35 +1343,35 @@ msgstr "%s бос емес."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:894
|
#: ../js/ui/telepathyClient.js:887
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Жіберілген: <b>%A</b>, уақыты <b>%X</b>"
|
msgstr "Жіберілген: <b>%A</b>, уақыты <b>%X</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:900
|
#: ../js/ui/telepathyClient.js:893
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>"
|
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:905
|
#: ../js/ui/telepathyClient.js:898
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>, %Y"
|
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:947
|
#: ../js/ui/telepathyClient.js:940
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s енді %s ретінде белгілі"
|
msgstr "%s енді %s ретінде белгілі"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1049
|
#: ../js/ui/telepathyClient.js:1042
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s ішіне шақыру"
|
msgstr "%s ішіне шақыру"
|
||||||
@@ -1370,35 +1379,37 @@ msgstr "%s ішіне шақыру"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1057
|
#: ../js/ui/telepathyClient.js:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s сізді %s ішіне қосылуды шақырады"
|
msgstr "%s сізді %s ішіне қосылуды шақырады"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#: ../js/ui/telepathyClient.js:1236
|
#: ../js/ui/telepathyClient.js:1131
|
||||||
|
#: ../js/ui/telepathyClient.js:1229
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Тайдыру"
|
msgstr "Тайдыру"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139
|
#: ../js/ui/telepathyClient.js:1053
|
||||||
#: ../js/ui/telepathyClient.js:1237
|
#: ../js/ui/telepathyClient.js:1132
|
||||||
|
#: ../js/ui/telepathyClient.js:1230
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Қабылдау"
|
msgstr "Қабылдау"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1090
|
#: ../js/ui/telepathyClient.js:1083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Видео қоңырау: %s"
|
msgstr "Видео қоңырау: %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1086
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Қоңырау: %s"
|
msgstr "Қоңырау: %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1100
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Жауап"
|
msgstr "Жауап"
|
||||||
|
|
||||||
@@ -1407,139 +1418,130 @@ msgstr "Жауап"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s сізге %s жіберуде"
|
msgstr "%s сізге %s жіберуде"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1201
|
#: ../js/ui/telepathyClient.js:1194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s сіз қашан желіде болатыныңызды білу құқығын сұрап тұр"
|
msgstr "%s сіз қашан желіде болатыныңызды білу құқығын сұрап тұр"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1294
|
#: ../js/ui/telepathyClient.js:1287
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Желілік қате"
|
msgstr "Желілік қате"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1296
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Аутентификация сәтсіз"
|
msgstr "Аутентификация сәтсіз"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1298
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Шифрлеу қатесі"
|
msgstr "Шифрлеу қатесі"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1300
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Сертификат ұсынылмады"
|
msgstr "Сертификат ұсынылмады"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1302
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Сертификат сенімсіз"
|
msgstr "Сертификат сенімсіз"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1304
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Сертификаттың мерзімі аяқталған"
|
msgstr "Сертификаттың мерзімі аяқталған"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1306
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Сертификат белсендірілмеген"
|
msgstr "Сертификат белсендірілмеген"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1308
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Сертификаттың хост аты сәйкес емес"
|
msgstr "Сертификаттың хост аты сәйкес емес"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1310
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Сертификаттың баспасы сәйкес емес"
|
msgstr "Сертификаттың баспасы сәйкес емес"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1312
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Сертификат өздігінен қолтаңбаланған"
|
msgstr "Сертификат өздігінен қолтаңбаланған"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1314
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Қалып-күй желіде емес етіп орнатылды"
|
msgstr "Қалып-күй желіде емес етіп орнатылды"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1316
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Шифрлеу қолжетерсіз"
|
msgstr "Шифрлеу қолжетерсіз"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1318
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Сертификат дұрыс емес"
|
msgstr "Сертификат дұрыс емес"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1320
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Сертификат тайдырылды"
|
msgstr "Сертификат тайдырылды"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1322
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Байланысты орнату мүмкін емес"
|
msgstr "Байланысты орнату мүмкін емес"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1324
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Байланыс жоғалтылды"
|
msgstr "Байланыс жоғалтылды"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1326
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Бұл тіркелгі серверге байланысқан болып тұр"
|
msgstr "Бұл тіркелгі серверге байланысқан болып тұр"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1328
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid ""
|
msgid "Connection has been replaced by a new connection using the same resource"
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
|
||||||
msgstr "Байланыс дәл сол ресурсты қолданып, жаңа байланыспен алмастырылды"
|
msgstr "Байланыс дәл сол ресурсты қолданып, жаңа байланыспен алмастырылды"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1330
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Бұл тіркелгі серверде бар болып тұр"
|
msgstr "Бұл тіркелгі серверде бар болып тұр"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1332
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Сервер бұл байланысты өңдеу үшін тым бос емес"
|
msgstr "Сервер бұл байланысты өңдеу үшін тым бос емес"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1334
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Сертификат қайта шақырылған"
|
msgstr "Сертификат қайта шақырылған"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1336
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid ""
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgstr "Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы әлсіз"
|
||||||
msgstr ""
|
|
||||||
"Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы "
|
|
||||||
"әлсіз"
|
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1338
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
msgstr "Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы криптографиялық жинақ ұсына алатын шегінен асып тұр"
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
|
||||||
msgstr ""
|
|
||||||
"Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы "
|
|
||||||
"криптографиялық жинақ ұсына алатын шегінен асып тұр"
|
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1340
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Connection error"
|
#| msgid "Connection error"
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Байланыс орнату қатесі"
|
msgstr "Ішкі қате"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1350
|
#: ../js/ui/telepathyClient.js:1343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "%s үшін байланыс орнату сәтсіз"
|
msgstr "%s үшін байланыс орнату сәтсіз"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1359
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Қайта байланысу"
|
msgstr "Қайта байланысу"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1360
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Тіркелгіні түзету"
|
msgstr "Тіркелгіні түзету"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1406
|
#: ../js/ui/telepathyClient.js:1399
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Себебі белгісіз"
|
msgstr "Себебі белгісіз"
|
||||||
|
|
||||||
@@ -1555,7 +1557,9 @@ msgstr "Іссіз"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Қолжетерсіз"
|
msgstr "Қолжетерсіз"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
#: ../js/ui/userMenu.js:579
|
||||||
|
#: ../js/ui/userMenu.js:583
|
||||||
|
#: ../js/ui/userMenu.js:653
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Сөндіру..."
|
msgstr "Сөндіру..."
|
||||||
|
|
||||||
@@ -1588,13 +1592,8 @@ msgid "Your chat status will be set to busy"
|
|||||||
msgstr "Сіздің чат күйіңіз бос емес етіп орнатылады"
|
msgstr "Сіздің чат күйіңіз бос емес етіп орнатылады"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:673
|
#: ../js/ui/userMenu.js:673
|
||||||
msgid ""
|
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
msgstr "Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
|
||||||
msgstr ""
|
|
||||||
"Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік "
|
|
||||||
"қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың "
|
|
||||||
"хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
|
|
||||||
|
|
||||||
#. Translators: this is the text displayed
|
#. Translators: this is the text displayed
|
||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
@@ -1604,7 +1603,8 @@ msgstr ""
|
|||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Іздеу үшін теріңіз..."
|
msgstr "Іздеу үшін теріңіз..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:131 ../src/shell-util.c:244
|
#: ../js/ui/viewSelector.js:131
|
||||||
|
#: ../src/shell-util.c:252
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Іздеу"
|
msgstr "Іздеу"
|
||||||
|
|
||||||
@@ -1670,19 +1670,19 @@ msgstr ""
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Бастапқы"
|
msgstr "Бастапқы"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:332
|
#: ../src/shell-polkit-authentication-agent.c:339
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:89
|
#: ../src/shell-util.c:97
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Үй бумасы"
|
msgstr "Үй бумасы"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:98
|
#: ../src/shell-util.c:106
|
||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Файлдық жүйе"
|
msgstr "Файлдық жүйе"
|
||||||
|
|
||||||
@@ -1691,7 +1691,10 @@ msgstr "Файлдық жүйе"
|
|||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
#. * directory called "some-directory" is in the trash.
|
#. * directory called "some-directory" is in the trash.
|
||||||
#.
|
#.
|
||||||
#: ../src/shell-util.c:294
|
#: ../src/shell-util.c:302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "RECENT ITEMS"
|
||||||
|
#~ msgstr "Соңғы нәрселер"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user