Compare commits
176 Commits
wip/cogl-d
...
wip/deskto
Author | SHA1 | Date | |
---|---|---|---|
45797a977b | |||
884b94233e | |||
74d3e3139f | |||
77b5385cc3 | |||
d749d646be | |||
fa8224d7b5 | |||
f687197ccc | |||
28a6aefb6c | |||
96c2a90e11 | |||
63cf46e49b | |||
200a9ef1af | |||
6050ca6e0c | |||
8bd7db9227 | |||
982feb85c1 | |||
f165cc23c0 | |||
8737b06559 | |||
15ab285174 | |||
3a4782cc64 | |||
0256a6d47b | |||
8b0e846e0e | |||
41acb5d3cc | |||
a2f9b8ea9b | |||
6237a1c505 | |||
7c08db0b0f | |||
df1270ac49 | |||
46edc053d4 | |||
908046c31a | |||
8380c79875 | |||
8a4879a96a | |||
cdf1a77f08 | |||
3f9857ccbd | |||
1d65a31420 | |||
dafdf0838a | |||
f9cf135f68 | |||
a1878e54c9 | |||
95e5d899a9 | |||
ee8321df67 | |||
4918213e68 | |||
ed7f349fc6 | |||
2888f22a24 | |||
fcb217f681 | |||
9ffa9fe1a8 | |||
905020c507 | |||
02f5500641 | |||
465af55d6e | |||
80a3bb85aa | |||
ea26bd3003 | |||
508a511d2a | |||
2d80cb71db | |||
e31693bbee | |||
fb561f10a7 | |||
0c57d53e03 | |||
3b1b9f589b | |||
ac8d39acf4 | |||
664e795217 | |||
82bf323f63 | |||
547ac85113 | |||
46e0e4430d | |||
609a31ea46 | |||
3e99eb10d1 | |||
b9d935af0c | |||
31d3e82aa8 | |||
dfdc17197b | |||
62b965b4b7 | |||
ba221abea5 | |||
aa026c7134 | |||
496cfff97a | |||
ccaa7f5f3e | |||
f492d21c70 | |||
1983541f8c | |||
e4cb3672b9 | |||
a06a78a9c1 | |||
2ba91ad837 | |||
66eb3ea723 | |||
d30e992b20 | |||
c6a342563f | |||
fd584eda05 | |||
4301506590 | |||
88f7c3a970 | |||
f21a9f0cc2 | |||
2233c2e618 | |||
6264419bd4 | |||
b62effb8fa | |||
c8a07dd612 | |||
02c99e4b25 | |||
1242a16265 | |||
a89fd17b8e | |||
3d5e7bd6f1 | |||
cefcb89487 | |||
005272bde9 | |||
491e60e4f2 | |||
e5f72fd302 | |||
5f21b100b8 | |||
1a4c7629c5 | |||
d21734ee47 | |||
e140e2c367 | |||
7ced1f5b54 | |||
54b028ee3e | |||
703336e1ea | |||
9e936252ae | |||
fc71a0f081 | |||
86c72fa15d | |||
6ba5af1e9e | |||
33a4f59cfb | |||
39134f0d9b | |||
30e7440851 | |||
be1a7bac7c | |||
fb52a93a28 | |||
efdf1ff755 | |||
2c00dad211 | |||
c23786c73e | |||
7f1b07b76f | |||
2f35ad6e65 | |||
159c7d34c7 | |||
fe8e990ed7 | |||
1fb9b18cb6 | |||
5c2586127b | |||
661b266b45 | |||
98af044196 | |||
8006c336f5 | |||
bdf07d2ce8 | |||
efcf858e60 | |||
93d9c16672 | |||
7aaf261f5a | |||
5eb4450012 | |||
49c8cdd8f6 | |||
c860b96a86 | |||
69403bda80 | |||
f5456b66ff | |||
28b4c413cb | |||
5b97250bb1 | |||
5d26c29eaa | |||
613944eccd | |||
8d0e8fc021 | |||
41ee70d414 | |||
3691e8ddd7 | |||
be54e94045 | |||
366ca72342 | |||
fc4e392ac1 | |||
507be35d3a | |||
5c0d62cd0e | |||
7b7c4568b2 | |||
f38091d96b | |||
7c78e1fbf5 | |||
72f0a48fac | |||
193f872ebe | |||
c3f96cf0e8 | |||
df09109d81 | |||
662cb9e2a3 | |||
daa54a3798 | |||
f035a1a0e0 | |||
2688bf3333 | |||
4095a58eb9 | |||
c1b1ebe97e | |||
a47b97d443 | |||
df5d5583eb | |||
79e764d5ec | |||
2fcb04e5b2 | |||
da1e264687 | |||
03975287d2 | |||
50a61b38f7 | |||
1fe072471e | |||
93e840295e | |||
6ab7d640f0 | |||
255cb8edb1 | |||
367fb32493 | |||
ef6d1fd6ce | |||
3e8ab0645b | |||
135727c9f7 | |||
c58448817b | |||
8ae0f1a9dc | |||
ba9c1d98f6 | |||
4db6e70f97 | |||
9d1f789937 | |||
11c2933e23 | |||
fbd4951ea7 |
5
.gitignore
vendored
5
.gitignore
vendored
@ -19,6 +19,8 @@ configure
|
||||
data/50-gnome-shell-*.xml
|
||||
data/gnome-shell.desktop
|
||||
data/gnome-shell.desktop.in
|
||||
data/gnome-shell-wayland.desktop
|
||||
data/gnome-shell-wayland.desktop.in
|
||||
data/gnome-shell-extension-prefs.desktop
|
||||
data/gnome-shell-extension-prefs.desktop.in
|
||||
data/gschemas.compiled
|
||||
@ -71,13 +73,14 @@ src/calendar-server/evolution-calendar.desktop.in
|
||||
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
||||
src/gnome-shell
|
||||
src/gnome-shell-calendar-server
|
||||
src/gnome-shell-extension-tool
|
||||
src/gnome-shell-extension-prefs
|
||||
src/gnome-shell-extension-tool
|
||||
src/gnome-shell-hotplug-sniffer
|
||||
src/gnome-shell-jhbuild
|
||||
src/gnome-shell-perf-helper
|
||||
src/gnome-shell-perf-tool
|
||||
src/gnome-shell-real
|
||||
src/gnome-shell-wayland
|
||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||
src/run-js-test
|
||||
src/test-recorder
|
||||
|
78
NEWS
78
NEWS
@ -1,3 +1,81 @@
|
||||
3.10.0.1
|
||||
=========
|
||||
* Fix login screen [Ray; #708691]
|
||||
|
||||
Contributors:
|
||||
Ray Strode, Giovanni Campagna, Jasper St. Pierree
|
||||
|
||||
Translations:
|
||||
Kjartan Maraas [nb], Marek Černocký [cs], A S Alam [pa], Daniel Mustieles [es],
|
||||
Ihar Hrachyshka [be], Chao-Hsiung Liao [zh_HK], Nilamdyuti Goswami [as],
|
||||
Yuri Myasoedov [ru], Baurzhan Muftakhidinov [kk]
|
||||
|
||||
3.10.0
|
||||
======
|
||||
* Fix fade effect in ScrollViews [Carlos; #708256]
|
||||
* network: Resync when activating connection changes [Jasper; #708322]
|
||||
* Close run dialog when the screen locks [Florian; #708218]
|
||||
* Fix entry growing out of password dialogs [Florian; #708324, #703833]
|
||||
* Vertically center labels in submenu items [Jasper; #708330]
|
||||
* https://bugzilla.gnome.org/show_bug.cgi?id=708387 [Mike; #708387]
|
||||
* Fix bluetooth icon not being added to status menu [Jasper; #708541]
|
||||
* Fix GNOME 2 keyring dialogs appearing on lock screen [Florian; #708187]
|
||||
* Fix passwords being cleared twice when authentication fails [Florian; #708186]
|
||||
* Fix message tray appearing in a11y popup on login screen [Florian; #708380]
|
||||
* Increase width of aggregate menu popup [Adel; #708472]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Mike Gorse, Ryan Lortie, Florian Müllner, Frédéric Péters,
|
||||
Carlos Soriano, Jasper St. Pierre, Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Daniel Șerbănescu [ro], Ryan Lortie [eo], Ihar Hrachyshka [be],
|
||||
A S Alam [pa], Jiro Matsuzawa [ja], Chao-Hsiung Liao [zh_HK, zh_TW],
|
||||
Piotr Drąg [pl], Kristjan SCHMIDT [eo], Daniel Korostil [uk],
|
||||
Rūdolfs Mazurs [lv], Reinout van Schouwen [nl], Yosef Or Boczko [he],
|
||||
Fran Diéguez [gl], António Lima [pt], Andika Triwidada [id],
|
||||
Alexandre Franke [fr], Rafael Ferreira [pt_BR], Milo Casagrande [it],
|
||||
Kenneth Nielsen [da], Matej Urbančič [sl]
|
||||
|
||||
3.9.92
|
||||
======
|
||||
* Don't show page indicators if there's only one page [Florian; #707363]
|
||||
* Make :active style of app and non-app results consistent [Jakub; #704714]
|
||||
* Fade app pages when scrolled [Florian; #707409]
|
||||
* Don't block scrolling on page indicators [Carlos; #707609]
|
||||
* Tweak visual appearance of folder views [Florian; #707662]
|
||||
* Don't put minimized apps at the end of the app switcher [Florian; #707663]
|
||||
* Merge the wayland branch [Giovanni, Neil; #707467]
|
||||
* Make search entry behave better in RTL locales [Matthias, Florian; #705779]
|
||||
* Allow to change app pages with pageUp/pageDown keys [Carlos; #707979]
|
||||
* Set approriate a11y states on expandable menu items [Alejandro; #708038]
|
||||
* Improve page indicator animation [Carlos; #707565]
|
||||
* Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen,
|
||||
Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600,
|
||||
#707614, #707666, #707814, #707806, #707801, #707889, #707892, #707935,
|
||||
#707842, #707940, #707996, #708007, #708009, #708020, #707580, #708080]
|
||||
|
||||
Contributors:
|
||||
Magdalen Berns, Olivier Blin, Giovanni Campagna, Matthias Clasen,
|
||||
Joanmarie Diggs, Adel Gadllah, Florian Müllner, Alejandro Piñeiro,
|
||||
Neil Roberts, Carlos Soriano, Jasper St. Pierre, Jakub Steiner,
|
||||
Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Rafael Ferreira [pt_BR], Fran Diéguez [gl], Daniel Mustieles [es],
|
||||
Aurimas Černius [lt], Luca Ferretti [it], Piotr Drąg [pl],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW], Timo Jyrinki [fi], Daniel Korostil [uk],
|
||||
Dušan Kazik [sk], Adam Matoušek [cs], Marek Černocký [cs],
|
||||
Jiro Matsuzawa [ja], Yuri Myasoedov [ru], Tobias Endrigkeit [de],
|
||||
Kjartan Maraas [nb], Victor Ibragimov [tg], Мирослав Николић [sr, sr@latin],
|
||||
A S Alam [pa], Khaled Hosny [ar], Andika Triwidada [id],
|
||||
Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Rūdolfs Mazurs [lv],
|
||||
Mattias Põldaru [et], Gabor Kelemen [hu], Bruce Cowan [en_GB],
|
||||
Matej Urbančič [sl], Enrico Nicoletto [pt_BR], Benjamin Steinwender [de],
|
||||
Changwoo Ryu [ko], Kris Thomsen [da], Alexandre Franke [fr],
|
||||
Evgeny Bobkin [ru], Baurzhan Muftakhidinov [kk], Peter Mráz [sk],
|
||||
Inaki Larranaga Murgoitio [eu], Yosef Or Boczko [he]
|
||||
|
||||
3.9.91
|
||||
======
|
||||
* Improve submenu styling [Jakub; #706037]
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.9.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.10.0.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -60,7 +60,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
CLUTTER_MIN_VERSION=1.13.4
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.35.4
|
||||
MUTTER_MIN_VERSION=3.9.91
|
||||
MUTTER_MIN_VERSION=3.10.0
|
||||
GTK_MIN_VERSION=3.7.9
|
||||
GIO_MIN_VERSION=2.37.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
@ -70,7 +70,6 @@ POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
GCR_MIN_VERSION=3.7.5
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.7.90
|
||||
GNOME_MENUS_REQUIRED_VERSION=3.5.3
|
||||
NETWORKMANAGER_MIN_VERSION=0.9.8
|
||||
PULSE_MIN_VERS=2.0
|
||||
|
||||
@ -80,7 +79,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||
gtk+-3.0 >= $GTK_MIN_VERSION
|
||||
atk-bridge-2.0
|
||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||
libgnome-menu-3.0 >= $GNOME_MENUS_REQUIRED_VERSION
|
||||
$recorder_modules
|
||||
gdk-x11-3.0 libsoup-2.4
|
||||
xtst
|
||||
|
@ -3,6 +3,10 @@ dist_wanda_DATA = wanda.png
|
||||
|
||||
desktopdir=$(datadir)/applications
|
||||
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
|
||||
if HAVE_MUTTER_WAYLAND
|
||||
desktop_DATA += gnome-shell-wayland.desktop
|
||||
endif HAVE_MUTTER_WAYLAND
|
||||
|
||||
|
||||
# We substitute in bindir so it works as an autostart
|
||||
# file when built in a non-system prefix
|
||||
@ -41,8 +45,10 @@ dist_theme_DATA = \
|
||||
theme/message-tray-background.png \
|
||||
theme/more-results.svg \
|
||||
theme/noise-texture.png \
|
||||
theme/page-indicator-active.svg \
|
||||
theme/page-indicator-active.svg \
|
||||
theme/page-indicator-inactive.svg \
|
||||
theme/page-indicator-checked.svg \
|
||||
theme/page-indicator-hover.svg \
|
||||
theme/panel-button-border.svg \
|
||||
theme/panel-button-highlight-narrow.svg \
|
||||
theme/panel-button-highlight-wide.svg \
|
||||
@ -83,6 +89,7 @@ convert_DATA = gnome-shell-overrides.convert
|
||||
|
||||
EXTRA_DIST = \
|
||||
gnome-shell.desktop.in.in \
|
||||
gnome-shell-wayland.desktop.in.in \
|
||||
gnome-shell-extension-prefs.desktop.in.in \
|
||||
$(introspection_DATA) \
|
||||
$(menu_DATA) \
|
||||
@ -92,6 +99,7 @@ EXTRA_DIST = \
|
||||
|
||||
CLEANFILES = \
|
||||
gnome-shell.desktop.in \
|
||||
gnome-shell-wayland.desktop.in \
|
||||
gnome-shell-extension-prefs.in \
|
||||
$(desktop_DATA) \
|
||||
$(keys_DATA) \
|
||||
|
15
data/gnome-shell-wayland.desktop.in.in
Normal file
15
data/gnome-shell-wayland.desktop.in.in
Normal file
@ -0,0 +1,15 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
_Name=GNOME Shell (wayland compositor)
|
||||
_Comment=Window management and application launching
|
||||
Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland
|
||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||
X-GNOME-Bugzilla-Product=gnome-shell
|
||||
X-GNOME-Bugzilla-Component=general
|
||||
X-GNOME-Bugzilla-Version=@VERSION@
|
||||
Categories=GNOME;GTK;Core;
|
||||
OnlyShowIn=GNOME;
|
||||
NoDisplay=true
|
||||
X-GNOME-Autostart-Phase=DisplayServer
|
||||
X-GNOME-Autostart-Notify=true
|
||||
X-GNOME-AutoRestart=false
|
@ -216,10 +216,10 @@
|
||||
|
||||
<key name="focus-change-on-pointer-rest" type="b">
|
||||
<default>true</default>
|
||||
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
|
||||
<description>
|
||||
<_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
@ -642,7 +642,7 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.aggregate-menu {
|
||||
width: 340px;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.aggregate-menu .popup-menu-icon {
|
||||
@ -918,7 +918,6 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.app-display {
|
||||
padding: 8px;
|
||||
spacing: 20px;
|
||||
}
|
||||
|
||||
@ -942,7 +941,7 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.page-indicator {
|
||||
padding: 15px 30px;
|
||||
padding: 15px 20px;
|
||||
}
|
||||
|
||||
.page-indicator .page-indicator-icon {
|
||||
@ -951,11 +950,19 @@ StScrollBar StButton#vhandle:active {
|
||||
background-image: url(page-indicator-inactive.svg);
|
||||
}
|
||||
|
||||
.page-indicator:hover .page-indicator-icon,
|
||||
.page-indicator:checked .page-indicator-icon {
|
||||
.page-indicator:hover .page-indicator-icon {
|
||||
background-image: url(page-indicator-hover.svg);
|
||||
}
|
||||
|
||||
.page-indicator:active .page-indicator-icon {
|
||||
background-image: url(page-indicator-active.svg);
|
||||
}
|
||||
|
||||
.page-indicator:checked .page-indicator-icon,
|
||||
.page-indicator:checked:active .page-indicator-icon {
|
||||
background-image: url(page-indicator-checked.svg);
|
||||
}
|
||||
|
||||
.no-frequent-applications-label {
|
||||
font-size: 18pt;
|
||||
color: #999999;
|
||||
|
@ -14,7 +14,7 @@
|
||||
id="svg4703"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="page-indicator-active.svg">
|
||||
sodipodi:docname="page-indicator-pushed.svg">
|
||||
<defs
|
||||
id="defs4705" />
|
||||
<sodipodi:namedview
|
||||
@ -24,18 +24,22 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.197802"
|
||||
inkscape:cx="2.1522887"
|
||||
inkscape:cy="16.782904"
|
||||
inkscape:zoom="31.392433"
|
||||
inkscape:cx="1.0245308"
|
||||
inkscape:cy="13.3715"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1021"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1374"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid6140" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4708">
|
||||
<rdf:RDF>
|
||||
@ -44,7 +48,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@ -54,14 +58,14 @@
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,2)">
|
||||
<path
|
||||
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
|
||||
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
|
||||
transform="matrix(0.54617904,0,0,0.62523128,-1131.9904,-392.39214)"
|
||||
d="m 2099.9808,638.83099 a 10.985409,9.5964489 0 1 1 -21.9708,0 10.985409,9.5964489 0 1 1 21.9708,0 z"
|
||||
sodipodi:ry="9.5964489"
|
||||
sodipodi:rx="10.985409"
|
||||
sodipodi:cy="638.83099"
|
||||
sodipodi:cx="2088.9954"
|
||||
id="path4711"
|
||||
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
|
||||
style="fill:#fdffff;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
67
data/theme/page-indicator-checked.svg
Normal file
67
data/theme/page-indicator-checked.svg
Normal file
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="18"
|
||||
height="18"
|
||||
id="svg4703"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="page-indicator-active.svg">
|
||||
<defs
|
||||
id="defs4705" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.197802"
|
||||
inkscape:cx="2.1522887"
|
||||
inkscape:cy="16.782904"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1021"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4708">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,2)">
|
||||
<path
|
||||
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
|
||||
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
|
||||
sodipodi:ry="9.5964489"
|
||||
sodipodi:rx="10.985409"
|
||||
sodipodi:cy="638.83099"
|
||||
sodipodi:cx="2088.9954"
|
||||
id="path4711"
|
||||
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
67
data/theme/page-indicator-hover.svg
Normal file
67
data/theme/page-indicator-hover.svg
Normal file
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="18"
|
||||
height="18"
|
||||
id="svg5266"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="page-indicator-inactive.svg">
|
||||
<defs
|
||||
id="defs5268" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="-2.307566"
|
||||
inkscape:cy="17.859535"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1374"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5271">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,2)">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path5274"
|
||||
sodipodi:cx="2088.9954"
|
||||
sodipodi:cy="638.83099"
|
||||
sodipodi:rx="10.985409"
|
||||
sodipodi:ry="9.5964489"
|
||||
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
|
||||
transform="matrix(0.63720887,0,0,0.72943648,-1322.1264,-458.98661)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
@ -25,14 +25,14 @@
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="13.381365"
|
||||
inkscape:cx="-2.307566"
|
||||
inkscape:cy="17.859535"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1021"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1374"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
@ -55,7 +55,7 @@
|
||||
transform="translate(0,2)">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276;stroke-miterlimit:4;stroke-opacity:0.39215686;stroke-dasharray:none"
|
||||
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:0.39215686000000000;stroke-dasharray:none"
|
||||
id="path5274"
|
||||
sodipodi:cx="2088.9954"
|
||||
sodipodi:cy="638.83099"
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
@ -244,6 +244,7 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
_onVerificationFailed: function() {
|
||||
this._queryingService = null;
|
||||
this.clear();
|
||||
|
||||
this.updateSensitivity(true);
|
||||
|
@ -619,7 +619,7 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
// Translators: this message is shown below the username entry field
|
||||
// to clue the user in on how to login to the local network realm
|
||||
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), AuthPrompt.MessageType.HINT);
|
||||
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), GdmUtil.MessageType.HINT);
|
||||
},
|
||||
|
||||
_askForUsernameAndBeginVerification: function() {
|
||||
|
@ -72,8 +72,10 @@ function versionCompare(required, reference) {
|
||||
reference = reference.split('.');
|
||||
|
||||
for (let i = 0; i < required.length; i++) {
|
||||
if (required[i] != reference[i])
|
||||
return required[i] < reference[i];
|
||||
let requiredInt = parseInt(required[i]);
|
||||
let referenceInt = parseInt(reference[i]);
|
||||
if (requiredInt != referenceInt)
|
||||
return requiredInt < referenceInt;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
@ -189,28 +190,57 @@ function insertSorted(array, val, cmp) {
|
||||
return pos;
|
||||
}
|
||||
|
||||
function makeCloseButton() {
|
||||
let closeButton = new St.Button({ style_class: 'notification-close'});
|
||||
const CloseButton = new Lang.Class({
|
||||
Name: 'CloseButton',
|
||||
Extends: St.Button,
|
||||
|
||||
// This is a bit tricky. St.Bin has its own x-align/y-align properties
|
||||
// that compete with Clutter's properties. This should be fixed for
|
||||
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
|
||||
// setters are a workaround to get Clutter's version.
|
||||
closeButton.set_x_align(Clutter.ActorAlign.END);
|
||||
closeButton.set_y_align(Clutter.ActorAlign.START);
|
||||
_init: function(boxpointer) {
|
||||
this.parent({ style_class: 'notification-close'});
|
||||
|
||||
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
|
||||
// to respect the alignments.
|
||||
closeButton.set_x_expand(true);
|
||||
closeButton.set_y_expand(true);
|
||||
// This is a bit tricky. St.Bin has its own x-align/y-align properties
|
||||
// that compete with Clutter's properties. This should be fixed for
|
||||
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
|
||||
// setters are a workaround to get Clutter's version.
|
||||
this.set_x_align(Clutter.ActorAlign.END);
|
||||
this.set_y_align(Clutter.ActorAlign.START);
|
||||
|
||||
closeButton.connect('style-changed', function() {
|
||||
let themeNode = closeButton.get_theme_node();
|
||||
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
|
||||
});
|
||||
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
|
||||
// to respect the alignments.
|
||||
this.set_x_expand(true);
|
||||
this.set_y_expand(true);
|
||||
|
||||
return closeButton;
|
||||
this._boxPointer = boxpointer;
|
||||
if (boxpointer)
|
||||
this._boxPointer.connect('arrow-side-changed', Lang.bind(this, this._sync));
|
||||
},
|
||||
|
||||
_computeBoxPointerOffset: function() {
|
||||
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
|
||||
return 0;
|
||||
|
||||
let side = this._boxPointer.arrowSide;
|
||||
if (side == St.Side.TOP)
|
||||
return this._boxPointer.getArrowHeight();
|
||||
else
|
||||
return 0;
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
let offY = this._computeBoxPointerOffset();
|
||||
this.translation_x = themeNode.get_length('-shell-close-overlap-x')
|
||||
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
|
||||
},
|
||||
|
||||
vfunc_style_changed: function() {
|
||||
this._sync();
|
||||
this.parent();
|
||||
},
|
||||
});
|
||||
|
||||
function makeCloseButton(boxpointer) {
|
||||
return new CloseButton(boxpointer);
|
||||
}
|
||||
|
||||
function ensureActorVisibleInScrollView(scrollView, actor) {
|
||||
|
@ -39,12 +39,9 @@ const FOLDER_SUBICON_FRACTION = .4;
|
||||
|
||||
const MIN_FREQUENT_APPS_COUNT = 3;
|
||||
|
||||
const INDICATORS_ANIMATION_TIME = 0.5;
|
||||
// 100% means indicators wait for be animated until the previous one
|
||||
// is animated completely. 0% means all animators are animated
|
||||
// at once without delay
|
||||
const INDICATORS_ANIMATION_DELAY_PERCENTAGE = 50;
|
||||
|
||||
const INDICATORS_BASE_TIME = 0.25;
|
||||
const INDICATORS_ANIMATION_DELAY = 0.125;
|
||||
const INDICATORS_ANIMATION_MAX_TIME = 0.75;
|
||||
// Fraction of page height the finger or mouse must reach
|
||||
// to change page
|
||||
const PAGE_SWITCH_TRESHOLD = 0.2;
|
||||
@ -58,13 +55,13 @@ function _loadCategory(dir, view) {
|
||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||
if (nextType == GMenu.TreeItemType.ENTRY) {
|
||||
let entry = iter.get_entry();
|
||||
let app = appSystem.lookup_app_by_tree_entry(entry);
|
||||
if (!entry.get_app_info().get_nodisplay())
|
||||
let appInfo = entry.get_app_info();
|
||||
let app = appSystem.lookup_app(entry.get_desktop_file_id());
|
||||
if (appInfo.should_show())
|
||||
view.addApp(app);
|
||||
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
||||
let itemDir = iter.get_directory();
|
||||
if (!itemDir.get_is_nodisplay())
|
||||
_loadCategory(itemDir, view);
|
||||
_loadCategory(itemDir, view);
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -230,24 +227,23 @@ const PageIndicators = new Lang.Class({
|
||||
if (children.length == 0)
|
||||
return;
|
||||
|
||||
let timePerChild = INDICATORS_ANIMATION_TIME / this._nPages;
|
||||
let delay = INDICATORS_ANIMATION_DELAY_PERCENTAGE / 100 * timePerChild;
|
||||
|
||||
let [stageX, ] = children[0].get_transformed_position();
|
||||
let offset;
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
offset = monitor.x - stageX - children[0].width;
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||
offset = -children[0].width;
|
||||
else
|
||||
offset = monitor.x + monitor.width - stageX;
|
||||
offset = children[0].width;
|
||||
|
||||
let delay = INDICATORS_ANIMATION_DELAY;
|
||||
let totalAnimationTime = INDICATORS_BASE_TIME + INDICATORS_ANIMATION_DELAY * this._nPages;
|
||||
if (totalAnimationTime > INDICATORS_ANIMATION_MAX_TIME)
|
||||
delay -= (totalAnimationTime - INDICATORS_ANIMATION_MAX_TIME) / this._nPages;
|
||||
|
||||
for (let i = 0; i < this._nPages; i++) {
|
||||
children[i].translation_x = offset;
|
||||
Tweener.addTween(children[i],
|
||||
{ translation_x: 0,
|
||||
time: timePerChild,
|
||||
delay: delay * i,
|
||||
transition: 'easeOutQuad'
|
||||
time: INDICATORS_BASE_TIME + delay * i,
|
||||
transition: 'easeInOutQuad'
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -337,6 +333,19 @@ const AllView = new Lang.Class({
|
||||
function() {
|
||||
this._displayingPopup = false;
|
||||
}));
|
||||
|
||||
this.actor.connect('notify::mapped', Lang.bind(this,
|
||||
function() {
|
||||
if (this.actor.mapped) {
|
||||
this._keyPressEventId =
|
||||
global.stage.connect('key-press-event',
|
||||
Lang.bind(this, this._onKeyPressEvent));
|
||||
} else {
|
||||
if (this._keyPressEventId)
|
||||
global.stage.disconnect(this._keyPressEventId);
|
||||
this._keyPressEventId = 0;
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
getCurrentPageY: function() {
|
||||
@ -344,6 +353,8 @@ const AllView = new Lang.Class({
|
||||
},
|
||||
|
||||
goToPage: function(pageNumber) {
|
||||
if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
|
||||
return;
|
||||
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
|
||||
return;
|
||||
if (this._displayingPopup && this._currentPopup)
|
||||
@ -405,16 +416,13 @@ const AllView = new Lang.Class({
|
||||
_onScroll: function(actor, event) {
|
||||
if (this._displayingPopup)
|
||||
return true;
|
||||
|
||||
let direction = event.get_scroll_direction();
|
||||
if (direction == Clutter.ScrollDirection.UP) {
|
||||
if (this._currentPage > 0)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
} else {
|
||||
if (direction == Clutter.ScrollDirection.DOWN) {
|
||||
if (this._currentPage < (this._grid.nPages() - 1))
|
||||
this.goToPage(this._currentPage + 1);
|
||||
}
|
||||
}
|
||||
if (direction == Clutter.ScrollDirection.UP)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
else if (direction == Clutter.ScrollDirection.DOWN)
|
||||
this.goToPage(this._currentPage + 1);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
@ -434,9 +442,9 @@ const AllView = new Lang.Class({
|
||||
return;
|
||||
let diffCurrentPage = this._diffToPage(this._currentPage);
|
||||
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
|
||||
if (action.get_velocity(0)[2] > 0 && this._currentPage > 0)
|
||||
if (action.get_velocity(0)[2] > 0)
|
||||
this.goToPage(this._currentPage - 1);
|
||||
else if (this._currentPage < this._grid.nPages() - 1)
|
||||
else
|
||||
this.goToPage(this._currentPage + 1);
|
||||
} else {
|
||||
this.goToPage(this._currentPage);
|
||||
@ -444,6 +452,21 @@ const AllView = new Lang.Class({
|
||||
this._panning = false;
|
||||
},
|
||||
|
||||
_onKeyPressEvent: function(actor, event) {
|
||||
if (this._displayingPopup)
|
||||
return true;
|
||||
|
||||
if (event.get_key_symbol() == Clutter.Page_Up) {
|
||||
this.goToPage(this._currentPage - 1);
|
||||
return true;
|
||||
} else if (event.get_key_symbol() == Clutter.Page_Down) {
|
||||
this.goToPage(this._currentPage + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_getItemId: function(item) {
|
||||
if (item instanceof Shell.App)
|
||||
return item.get_id();
|
||||
@ -668,8 +691,7 @@ const AppDisplay = new Lang.Class({
|
||||
Name: 'AppDisplay',
|
||||
|
||||
_init: function() {
|
||||
this._appSystem = Shell.AppSystem.get_default();
|
||||
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
|
||||
Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() {
|
||||
Main.queueDeferredWork(this._allAppsWorkId);
|
||||
}));
|
||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||
@ -785,7 +807,8 @@ const AppDisplay = new Lang.Class({
|
||||
|
||||
view.removeAll();
|
||||
|
||||
let tree = this._appSystem.get_tree();
|
||||
let tree = new GMenu.Tree({ menu_basename: "applications.menu" });
|
||||
tree.load_sync();
|
||||
let root = tree.get_root_directory();
|
||||
|
||||
let iter = root.iter();
|
||||
@ -794,8 +817,6 @@ const AppDisplay = new Lang.Class({
|
||||
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
|
||||
if (nextType == GMenu.TreeItemType.DIRECTORY) {
|
||||
let dir = iter.get_directory();
|
||||
if (dir.get_is_nodisplay())
|
||||
continue;
|
||||
|
||||
if (folderCategories.indexOf(dir.get_menu_id()) != -1)
|
||||
view.addFolder(dir);
|
||||
@ -843,8 +864,8 @@ const AppSearchProvider = new Lang.Class({
|
||||
getResultMetas: function(apps, callback) {
|
||||
let metas = [];
|
||||
for (let i = 0; i < apps.length; i++) {
|
||||
let app = apps[i];
|
||||
metas.push({ 'id': app,
|
||||
let app = this._appSys.lookup_app(apps[i]);
|
||||
metas.push({ 'id': app.get_id(),
|
||||
'name': app.get_name(),
|
||||
'createIcon': function(size) {
|
||||
return app.create_icon_texture(size);
|
||||
@ -854,15 +875,23 @@ const AppSearchProvider = new Lang.Class({
|
||||
callback(metas);
|
||||
},
|
||||
|
||||
_compareResults: function(a, b) {
|
||||
let usage = Shell.AppUsage.get_default();
|
||||
return usage.compare('', a, b);
|
||||
},
|
||||
|
||||
getInitialResultSet: function(terms) {
|
||||
this.searchSystem.setResults(this, this._appSys.initial_search(terms));
|
||||
let query = terms.join(' ');
|
||||
let results = Gio.DesktopAppInfo.search(query, Lang.bind(this, this._compareResults), MAX_COLUMNS);
|
||||
this.searchSystem.setResults(this, results);
|
||||
},
|
||||
|
||||
getSubsearchResultSet: function(previousResults, terms) {
|
||||
this.searchSystem.setResults(this, this._appSys.subsearch(previousResults, terms));
|
||||
this.getInitialResultSet(terms);
|
||||
},
|
||||
|
||||
activateResult: function(app) {
|
||||
activateResult: function(result) {
|
||||
let app = this._appSys.lookup_app(result);
|
||||
let event = Clutter.get_current_event();
|
||||
let modifiers = event ? event.get_state() : 0;
|
||||
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
|
||||
@ -882,7 +911,7 @@ const AppSearchProvider = new Lang.Class({
|
||||
},
|
||||
|
||||
createResultObject: function (resultMeta, terms) {
|
||||
let app = resultMeta['id'];
|
||||
let app = this._appSys.lookup_app(resultMeta['id']);
|
||||
return new AppIcon(app);
|
||||
}
|
||||
});
|
||||
@ -1157,7 +1186,7 @@ const AppFolderPopup = new Lang.Class({
|
||||
this.actor.add_actor(this._boxPointer.actor);
|
||||
this._boxPointer.bin.set_child(this._view.actor);
|
||||
|
||||
this.closeButton = Util.makeCloseButton();
|
||||
this.closeButton = Util.makeCloseButton(this._boxPointer);
|
||||
this.closeButton.connect('clicked', Lang.bind(this, this.popdown));
|
||||
this.actor.add_actor(this.closeButton);
|
||||
|
||||
|
@ -319,9 +319,9 @@ const Background = new Lang.Class({
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
this.isLoaded = false;
|
||||
|
||||
this._settings.connect('changed', Lang.bind(this, function() {
|
||||
this.emit('changed');
|
||||
}));
|
||||
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
|
||||
this.emit('changed');
|
||||
}));
|
||||
|
||||
this._load();
|
||||
},
|
||||
@ -362,6 +362,10 @@ const Background = new Lang.Class({
|
||||
|
||||
this.actor.disconnect(this._destroySignalId);
|
||||
this._destroySignalId = 0;
|
||||
|
||||
if (this._settingsChangedSignalId != 0)
|
||||
this._settings.disconnect(this._settingsChangedSignalId);
|
||||
this._settingsChangedSignalId = 0;
|
||||
},
|
||||
|
||||
_setLoaded: function() {
|
||||
|
@ -3,8 +3,9 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@ -61,6 +62,10 @@ const BoxPointer = new Lang.Class({
|
||||
this._muteInput();
|
||||
},
|
||||
|
||||
get arrowSide() {
|
||||
return this._arrowSide;
|
||||
},
|
||||
|
||||
_muteInput: function() {
|
||||
if (this._capturedEventId == 0)
|
||||
this._capturedEventId = this.actor.connect('captured-event',
|
||||
@ -612,6 +617,8 @@ const BoxPointer = new Lang.Class({
|
||||
this._container.queue_relayout();
|
||||
return false;
|
||||
}));
|
||||
|
||||
this.emit('arrow-side-changed');
|
||||
}
|
||||
},
|
||||
|
||||
@ -644,6 +651,8 @@ const BoxPointer = new Lang.Class({
|
||||
updateArrowSide: function(side) {
|
||||
this._arrowSide = side;
|
||||
this._border.queue_repaint();
|
||||
|
||||
this.emit('arrow-side-changed');
|
||||
},
|
||||
|
||||
getPadding: function(side) {
|
||||
@ -654,3 +663,4 @@ const BoxPointer = new Lang.Class({
|
||||
return this.actor.get_theme_node().get_length('-arrow-rise');
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(BoxPointer.prototype);
|
||||
|
@ -80,23 +80,26 @@ const KeyringDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_buildControlTable: function() {
|
||||
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
|
||||
let layout = new Clutter.TableLayout();
|
||||
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
||||
layout_manager: layout });
|
||||
layout.hookup_style(table);
|
||||
let row = 0;
|
||||
|
||||
if (this.prompt.password_visible) {
|
||||
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
|
||||
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,
|
||||
y_fill: false, y_align: St.Align.MIDDLE });
|
||||
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
layout.pack(label, 0, row);
|
||||
layout.child_set(label, { x_expand: false, y_fill: false,
|
||||
x_align: Clutter.TableAlignment.START });
|
||||
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||
text: '',
|
||||
can_focus: true});
|
||||
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 });
|
||||
layout.pack(this._passwordEntry, 1, row);
|
||||
row++;
|
||||
} else {
|
||||
this._passwordEntry = null;
|
||||
@ -105,17 +108,16 @@ const KeyringDialog = new Lang.Class({
|
||||
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,
|
||||
y_fill: false, y_align: St.Align.MIDDLE });
|
||||
layout.pack(label, 0, row);
|
||||
layout.child_set(label, { x_expand: false, y_fill: false,
|
||||
x_align: Clutter.TableAlignment.START });
|
||||
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||
text: '',
|
||||
can_focus: true});
|
||||
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 });
|
||||
layout.pack(this._confirmEntry, 1, row);
|
||||
row++;
|
||||
} else {
|
||||
this._confirmEntry = null;
|
||||
@ -128,14 +130,14 @@ const KeyringDialog = new Lang.Class({
|
||||
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 });
|
||||
layout.pack(choice.actor, 1, row);
|
||||
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 });
|
||||
layout.pack(warning, 1, row);
|
||||
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
@ -221,27 +223,50 @@ const KeyringDialog = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const KeyringDummyDialog = new Lang.Class({
|
||||
Name: 'KeyringDummyDialog',
|
||||
|
||||
_init: function() {
|
||||
this.prompt = new Shell.KeyringPrompt();
|
||||
this.prompt.connect('show-password',
|
||||
Lang.bind(this, this._cancelPrompt));
|
||||
this.prompt.connect('show-confirm', Lang.bind(this,
|
||||
this._cancelPrompt));
|
||||
},
|
||||
|
||||
_cancelPrompt: function() {
|
||||
this.prompt.cancel();
|
||||
}
|
||||
});
|
||||
|
||||
const KeyringPrompter = new Lang.Class({
|
||||
Name: 'KeyringPrompter',
|
||||
|
||||
_init: function() {
|
||||
this._prompter = new Gcr.SystemPrompter();
|
||||
this._prompter.connect('new-prompt', function(prompter) {
|
||||
let dialog = new KeyringDialog();
|
||||
return dialog.prompt;
|
||||
});
|
||||
this._prompter.connect('new-prompt', Lang.bind(this,
|
||||
function() {
|
||||
let dialog = this._enabled ? new KeyringDialog()
|
||||
: new KeyringDummyDialog();
|
||||
return dialog.prompt;
|
||||
}));
|
||||
this._dbusId = null;
|
||||
this._registered = false;
|
||||
this._enabled = false;
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
this._prompter.register(Gio.DBus.session);
|
||||
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
|
||||
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
|
||||
if (!this._registered) {
|
||||
this._prompter.register(Gio.DBus.session);
|
||||
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
|
||||
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
|
||||
this._registered = true;
|
||||
}
|
||||
this._enabled = true;
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
this._prompter.unregister(false);
|
||||
Gio.DBus.session.unown_name(this._dbusId);
|
||||
this._enabled = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -72,13 +72,18 @@ const NetworkSecretDialog = new Lang.Class({
|
||||
expand: true });
|
||||
}
|
||||
|
||||
let secretTable = new St.Table({ style_class: 'network-dialog-secret-table' });
|
||||
let layout = new Clutter.TableLayout();
|
||||
let secretTable = new St.Widget({ style_class: 'network-dialog-secret-table',
|
||||
layout_manager: layout });
|
||||
layout.hookup_style(secretTable);
|
||||
|
||||
let initialFocusSet = false;
|
||||
let pos = 0;
|
||||
for (let i = 0; i < this._content.secrets.length; i++) {
|
||||
let secret = this._content.secrets[i];
|
||||
let label = new St.Label({ style_class: 'prompt-dialog-password-label',
|
||||
text: secret.label });
|
||||
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
|
||||
let reactive = secret.key != null;
|
||||
|
||||
@ -111,11 +116,10 @@ const NetworkSecretDialog = new Lang.Class({
|
||||
} else
|
||||
secret.valid = true;
|
||||
|
||||
secretTable.add(label, { row: pos, col: 0,
|
||||
x_expand: false, x_fill: true,
|
||||
x_align: St.Align.START,
|
||||
y_fill: false, y_align: St.Align.MIDDLE });
|
||||
secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END });
|
||||
layout.pack(label, 0, pos);
|
||||
layout.child_set(label, { x_expand: false, y_fill: false,
|
||||
x_align: Clutter.TableAlignment.START });
|
||||
layout.pack(secret.entry, 1, pos);
|
||||
pos++;
|
||||
|
||||
if (secret.password)
|
||||
|
60
js/ui/dnd.js
60
js/ui/dnd.js
@ -5,6 +5,7 @@ const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const St = imports.gi.St;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@ -27,9 +28,9 @@ const DragMotionResult = {
|
||||
};
|
||||
|
||||
const DRAG_CURSOR_MAP = {
|
||||
0: Shell.Cursor.DND_UNSUPPORTED_TARGET,
|
||||
1: Shell.Cursor.DND_COPY,
|
||||
2: Shell.Cursor.DND_MOVE
|
||||
0: Meta.Cursor.DND_UNSUPPORTED_TARGET,
|
||||
1: Meta.Cursor.DND_COPY,
|
||||
2: Meta.Cursor.DND_MOVE
|
||||
};
|
||||
|
||||
const DragDropResult = {
|
||||
@ -85,11 +86,6 @@ const _Draggable = new Lang.Class({
|
||||
this.actor.connect('destroy', Lang.bind(this, function() {
|
||||
this._actorDestroyed = true;
|
||||
|
||||
// If the drag actor is destroyed and we were going to fix
|
||||
// up its hover state, fix up the parent hover state instead
|
||||
if (this.actor == this._firstLeaveActor)
|
||||
this._firstLeaveActor = this._dragOrigParent;
|
||||
|
||||
if (this._dragInProgress && this._dragCancellable)
|
||||
this._cancelDrag(global.get_current_time());
|
||||
this.disconnectAll();
|
||||
@ -105,12 +101,6 @@ const _Draggable = new Lang.Class({
|
||||
this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).
|
||||
this._dragCancellable = true;
|
||||
|
||||
// During the drag, we eat enter/leave events so that actors don't prelight.
|
||||
// But we remember the actors that we first left/last entered so we can
|
||||
// fix up the hover state after the drag ends.
|
||||
this._firstLeaveActor = null;
|
||||
this._lastEnterActor = null;
|
||||
|
||||
this._eventsGrabbed = false;
|
||||
},
|
||||
|
||||
@ -196,11 +186,6 @@ const _Draggable = new Lang.Class({
|
||||
this._cancelDrag(event.get_time());
|
||||
return true;
|
||||
}
|
||||
} else if (event.type() == Clutter.EventType.LEAVE) {
|
||||
if (this._firstLeaveActor == null)
|
||||
this._firstLeaveActor = event.get_source();
|
||||
} else if (event.type() == Clutter.EventType.ENTER) {
|
||||
this._lastEnterActor = event.get_source();
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -244,7 +229,7 @@ const _Draggable = new Lang.Class({
|
||||
if (this._onEventId)
|
||||
this._ungrabActor();
|
||||
this._grabEvents();
|
||||
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
|
||||
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
||||
|
||||
this._dragX = this._dragStartX = stageX;
|
||||
this._dragY = this._dragStartY = stageY;
|
||||
@ -374,7 +359,7 @@ const _Draggable = new Lang.Class({
|
||||
if (motionFunc) {
|
||||
let result = motionFunc(dragEvent);
|
||||
if (result != DragMotionResult.CONTINUE) {
|
||||
global.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -392,13 +377,13 @@ const _Draggable = new Lang.Class({
|
||||
targY,
|
||||
0);
|
||||
if (result != DragMotionResult.CONTINUE) {
|
||||
global.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
target = target.get_parent();
|
||||
}
|
||||
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
|
||||
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
||||
return false;
|
||||
},
|
||||
|
||||
@ -470,7 +455,7 @@ const _Draggable = new Lang.Class({
|
||||
}
|
||||
|
||||
this._dragInProgress = false;
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this.emit('drag-end', event.get_time(), true);
|
||||
this._dragComplete();
|
||||
return true;
|
||||
@ -522,7 +507,7 @@ const _Draggable = new Lang.Class({
|
||||
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
|
||||
|
||||
if (this._actorDestroyed) {
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
if (!this._buttonDown)
|
||||
this._dragComplete();
|
||||
this.emit('drag-end', eventTime, false);
|
||||
@ -576,7 +561,7 @@ const _Draggable = new Lang.Class({
|
||||
} else {
|
||||
dragActor.destroy();
|
||||
}
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this.emit('drag-end', eventTime, false);
|
||||
|
||||
this._animationInProgress = false;
|
||||
@ -584,33 +569,12 @@ const _Draggable = new Lang.Class({
|
||||
this._dragComplete();
|
||||
},
|
||||
|
||||
// Actor is an actor we have entered or left during the drag; call
|
||||
// st_widget_sync_hover on all StWidget ancestors
|
||||
_syncHover: function(actor) {
|
||||
while (actor) {
|
||||
let parent = actor.get_parent();
|
||||
if (actor instanceof St.Widget)
|
||||
actor.sync_hover();
|
||||
|
||||
actor = parent;
|
||||
}
|
||||
},
|
||||
|
||||
_dragComplete: function() {
|
||||
if (!this._actorDestroyed)
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, false);
|
||||
|
||||
this._ungrabEvents();
|
||||
|
||||
if (this._firstLeaveActor) {
|
||||
this._syncHover(this._firstLeaveActor);
|
||||
this._firstLeaveActor = null;
|
||||
}
|
||||
|
||||
if (this._lastEnterActor) {
|
||||
this._syncHover(this._lastEnterActor);
|
||||
this._lastEnterActor = null;
|
||||
}
|
||||
global.sync_pointer();
|
||||
|
||||
if (this._updateHoverId) {
|
||||
GLib.source_remove(this._updateHoverId);
|
||||
|
@ -33,6 +33,7 @@ const FocusCaretTracker = new Lang.Class({
|
||||
|
||||
_init: function() {
|
||||
Atspi.init();
|
||||
Atspi.set_timeout(250, 250);
|
||||
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
|
||||
},
|
||||
|
||||
|
@ -362,7 +362,7 @@ const LayoutManager = new Lang.Class({
|
||||
BackgroundMenu.addBackgroundMenu(bgManager.background.actor);
|
||||
}));
|
||||
|
||||
this._bgManagers.push(bgManager);
|
||||
this._bgManagers[monitorIndex] = bgManager;
|
||||
|
||||
return bgManager.background;
|
||||
},
|
||||
|
@ -1072,15 +1072,15 @@ const LookingGlass = new Lang.Class({
|
||||
let myWidth = primary.width * 0.7;
|
||||
let availableHeight = primary.height - Main.layoutManager.keyboardBox.height;
|
||||
let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9);
|
||||
this.actor.x = (primary.width - myWidth) / 2;
|
||||
this._hiddenY = Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
|
||||
this.actor.x = primary.x + (primary.width - myWidth) / 2;
|
||||
this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
|
||||
this._targetY = this._hiddenY + myHeight;
|
||||
this.actor.y = this._hiddenY;
|
||||
this.actor.width = myWidth;
|
||||
this.actor.height = myHeight;
|
||||
this._objInspector.actor.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8));
|
||||
this._objInspector.actor.set_position(primary.x + this.actor.x + Math.floor(myWidth * 0.1),
|
||||
primary.y + this._targetY + Math.floor(myHeight * 0.1));
|
||||
this._objInspector.actor.set_position(this.actor.x + Math.floor(myWidth * 0.1),
|
||||
this._targetY + Math.floor(myHeight * 0.1));
|
||||
},
|
||||
|
||||
insertObject: function(obj) {
|
||||
|
@ -57,6 +57,20 @@ const Magnifier = new Lang.Class({
|
||||
// Magnifier is a manager of ZoomRegions.
|
||||
this._zoomRegions = [];
|
||||
|
||||
// Export to dbus.
|
||||
magDBusService = new MagnifierDBus.ShellMagnifier();
|
||||
|
||||
let showAtLaunch = this._settingsInit();
|
||||
this.setActive(showAtLaunch);
|
||||
},
|
||||
|
||||
_initialize: function() {
|
||||
if (this._initialized)
|
||||
return;
|
||||
this._initialized = true;
|
||||
|
||||
this._settingsInitLate();
|
||||
|
||||
// Create small clutter tree for the magnified mouse.
|
||||
let cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||
this._mouseSprite = new Clutter.Texture();
|
||||
@ -72,15 +86,11 @@ const Magnifier = new Lang.Class({
|
||||
|
||||
let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
|
||||
this._zoomRegions.push(aZoomRegion);
|
||||
let showAtLaunch = this._settingsInit(aZoomRegion);
|
||||
this._settingsInitRegion(aZoomRegion);
|
||||
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
|
||||
|
||||
cursorTracker.connect('cursor-changed', Lang.bind(this, this._updateMouseSprite));
|
||||
this._cursorTracker = cursorTracker;
|
||||
|
||||
// Export to dbus.
|
||||
magDBusService = new MagnifierDBus.ShellMagnifier();
|
||||
this.setActive(showAtLaunch);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -88,7 +98,7 @@ const Magnifier = new Lang.Class({
|
||||
* Show the system mouse pointer.
|
||||
*/
|
||||
showSystemCursor: function() {
|
||||
global.stage.show_cursor();
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -96,7 +106,7 @@ const Magnifier = new Lang.Class({
|
||||
* Hide the system mouse pointer.
|
||||
*/
|
||||
hideSystemCursor: function() {
|
||||
global.stage.hide_cursor();
|
||||
this._cursorTracker.set_pointer_visible(false);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -105,6 +115,12 @@ const Magnifier = new Lang.Class({
|
||||
* @activate: Boolean to activate or de-activate the magnifier.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
if (activate == this.isActive())
|
||||
return;
|
||||
|
||||
if (activate)
|
||||
this._initialize();
|
||||
|
||||
this._zoomRegions.forEach (function(zoomRegion, index, array) {
|
||||
zoomRegion.setActive(activate);
|
||||
});
|
||||
@ -117,7 +133,7 @@ const Magnifier = new Lang.Class({
|
||||
// Make sure system mouse pointer is shown when all zoom regions are
|
||||
// invisible.
|
||||
if (!activate)
|
||||
global.stage.show_cursor();
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
|
||||
// Notify interested parties of this change
|
||||
this.emit('active-changed', activate);
|
||||
@ -432,64 +448,68 @@ const Magnifier = new Lang.Class({
|
||||
this._mouseSprite.set_anchor_point(xHot, yHot);
|
||||
},
|
||||
|
||||
_settingsInit: function(zoomRegion) {
|
||||
_settingsInitRegion: function(zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
},
|
||||
|
||||
_settingsInit: function() {
|
||||
this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
|
||||
this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
|
||||
|
||||
if (zoomRegion) {
|
||||
// Mag factor is accurate to two decimal places.
|
||||
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
|
||||
if (aPref != 0.0)
|
||||
zoomRegion.setMagFactor(aPref, aPref);
|
||||
this._appSettings.connect('changed::' + SHOW_KEY, Lang.bind(this, function() {
|
||||
let active = this._appSettings.get_boolean(SHOW_KEY);
|
||||
this.setActive(active);
|
||||
}));
|
||||
|
||||
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setScreenPosition(aPref);
|
||||
|
||||
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
|
||||
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
|
||||
|
||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setMouseTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setFocusTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setCaretTrackingMode(aPref);
|
||||
|
||||
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setInvertLightness(aPref);
|
||||
|
||||
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
|
||||
if (aPref)
|
||||
zoomRegion.setColorSaturation(aPref);
|
||||
|
||||
let bc = {};
|
||||
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
|
||||
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
|
||||
zoomRegion.setBrightness(bc);
|
||||
|
||||
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
|
||||
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
|
||||
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
|
||||
zoomRegion.setContrast(bc);
|
||||
}
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
|
||||
_settingsInitLate: function() {
|
||||
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
|
||||
this.addCrosshairs();
|
||||
this.setCrosshairsVisible(showCrosshairs);
|
||||
|
||||
this._appSettings.connect('changed::' + SHOW_KEY,
|
||||
Lang.bind(this, function() {
|
||||
this.setActive(this._appSettings.get_boolean(SHOW_KEY));
|
||||
}));
|
||||
|
||||
this._settings.connect('changed::' + SCREEN_POSITION_KEY,
|
||||
Lang.bind(this, this._updateScreenPosition));
|
||||
this._settings.connect('changed::' + MAG_FACTOR_KEY,
|
||||
@ -553,8 +573,6 @@ const Magnifier = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
|
||||
}));
|
||||
|
||||
return this._appSettings.get_boolean(SHOW_KEY);
|
||||
},
|
||||
|
||||
_updateScreenPosition: function() {
|
||||
@ -732,14 +750,17 @@ const ZoomRegion = new Lang.Class({
|
||||
* @activate: Boolean to show/hide the ZoomRegion.
|
||||
*/
|
||||
setActive: function(activate) {
|
||||
if (activate && !this.isActive()) {
|
||||
if (activate == this.isActive())
|
||||
return;
|
||||
|
||||
if (activate) {
|
||||
this._createActors();
|
||||
if (this._isMouseOverRegion())
|
||||
this._magnifier.hideSystemCursor();
|
||||
this._updateMagViewGeometry();
|
||||
this._updateCloneGeometry();
|
||||
this._updateMousePosition();
|
||||
} else if (!activate && this.isActive()) {
|
||||
} else {
|
||||
this._destroyActors();
|
||||
}
|
||||
},
|
||||
|
@ -90,8 +90,12 @@ function _sessionUpdated() {
|
||||
Shell.KeyBindingMode.OVERVIEW,
|
||||
sessionMode.hasRunDialog ? openRunDialog : null);
|
||||
|
||||
if (!sessionMode.hasRunDialog && lookingGlass)
|
||||
lookingGlass.close();
|
||||
if (!sessionMode.hasRunDialog) {
|
||||
if (runDialog)
|
||||
runDialog.close();
|
||||
if (lookingGlass)
|
||||
lookingGlass.close();
|
||||
}
|
||||
}
|
||||
|
||||
function start() {
|
||||
|
@ -215,10 +215,10 @@ const URLHighlighter = new Lang.Class({
|
||||
|
||||
let urlId = this._findUrlAtPos(event);
|
||||
if (urlId != -1 && !this._cursorChanged) {
|
||||
global.set_cursor(Shell.Cursor.POINTING_HAND);
|
||||
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
|
||||
this._cursorChanged = true;
|
||||
} else if (urlId == -1) {
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this._cursorChanged = false;
|
||||
}
|
||||
return false;
|
||||
@ -229,7 +229,7 @@ const URLHighlighter = new Lang.Class({
|
||||
|
||||
if (this._cursorChanged) {
|
||||
this._cursorChanged = false;
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
}
|
||||
}));
|
||||
},
|
||||
@ -1805,8 +1805,9 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
if ((Main.sessionMode.isLocked || Main.sessionMode.isGreeter) && this._inCtrlAltTab) {
|
||||
Main.ctrlAltTabManager.removeGroup(this._summary);
|
||||
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter) {
|
||||
if (this._inCtrlAltTab)
|
||||
Main.ctrlAltTabManager.removeGroup(this._summary);
|
||||
this._inCtrlAltTab = false;
|
||||
} else if (!this._inCtrlAltTab) {
|
||||
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'user-available-symbolic',
|
||||
|
@ -148,7 +148,7 @@ const Overview = new Lang.Class({
|
||||
// Dash elements, or mouseover handlers in the workspaces.
|
||||
this._coverPane = new Clutter.Actor({ opacity: 0,
|
||||
reactive: true });
|
||||
this._stack.add_actor(this._coverPane);
|
||||
Main.layoutManager.overviewGroup.add_child(this._coverPane);
|
||||
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return true; }));
|
||||
|
||||
this._stack.add_actor(this._overview);
|
||||
@ -313,6 +313,9 @@ const Overview = new Lang.Class({
|
||||
},
|
||||
|
||||
_onDragEnd: function(time) {
|
||||
if (this.animationInProgress)
|
||||
return;
|
||||
|
||||
this._inXdndDrag = false;
|
||||
|
||||
// In case the drag was canceled while in the overview
|
||||
|
@ -504,6 +504,17 @@ const MessagesIndicator = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const ControlsLayout = new Lang.Class({
|
||||
Name: 'ControlsLayout',
|
||||
Extends: Clutter.BinLayout,
|
||||
Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
|
||||
|
||||
vfunc_allocate: function(container, box, flags) {
|
||||
this.parent(container, box, flags);
|
||||
this.emit('allocation-changed');
|
||||
}
|
||||
});
|
||||
|
||||
const ControlsManager = new Lang.Class({
|
||||
Name: 'ControlsManager',
|
||||
|
||||
@ -524,7 +535,8 @@ const ControlsManager = new Lang.Class({
|
||||
this._indicator = new MessagesIndicator(this.viewSelector);
|
||||
this.indicatorActor = this._indicator.actor;
|
||||
|
||||
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout(),
|
||||
let layout = new ControlsLayout();
|
||||
this.actor = new St.Widget({ layout_manager: layout,
|
||||
reactive: true,
|
||||
x_expand: true, y_expand: true,
|
||||
clip_to_allocation: true });
|
||||
@ -539,7 +551,7 @@ const ControlsManager = new Lang.Class({
|
||||
expand: true });
|
||||
this._group.add_actor(this._thumbnailsSlider.actor);
|
||||
|
||||
this._group.connect('notify::allocation', Lang.bind(this, this._updateWorkspacesGeometry));
|
||||
layout.connect('allocation-changed', Lang.bind(this, this._updateWorkspacesGeometry));
|
||||
|
||||
Main.overview.connect('showing', Lang.bind(this, this._updateSpacerVisibility));
|
||||
Main.overview.connect('item-drag-begin', Lang.bind(this,
|
||||
|
@ -611,6 +611,7 @@ const ActivitiesButton = new Lang.Class({
|
||||
|
||||
_onButtonRelease: function() {
|
||||
Main.overview.toggle();
|
||||
this.menu.close();
|
||||
},
|
||||
|
||||
_onKeyRelease: function(actor, event) {
|
||||
@ -804,7 +805,7 @@ const AggregateMenu = new Lang.Class({
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0, _("Settings Menu"), false);
|
||||
this.parent(0.0, _("Settings"), false);
|
||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||
|
||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||
|
@ -948,14 +948,18 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
this.actor.add_child(this.icon);
|
||||
}
|
||||
|
||||
this.label = new St.Label({ text: text });
|
||||
this.label = new St.Label({ text: text,
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
this.actor.add_child(this.label);
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
||||
this.actor.add(expander, { expand: true });
|
||||
|
||||
this.status = new St.Label({ style_class: 'popup-status-menu-item' });
|
||||
this.status = new St.Label({ style_class: 'popup-status-menu-item',
|
||||
y_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER });
|
||||
this.actor.add_child(this.status);
|
||||
|
||||
this._triangle = new St.Label({ text: '\u25B8',
|
||||
@ -969,6 +973,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
this._triangleBin.set_scale(-1.0, 1.0);
|
||||
|
||||
this.actor.add_child(this._triangleBin);
|
||||
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||
|
||||
this.menu = new PopupSubMenu(this.actor, this._triangle);
|
||||
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
|
||||
@ -990,9 +995,11 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
||||
if (open) {
|
||||
this.actor.add_style_pseudo_class('open');
|
||||
this._getTopMenu()._setOpenedSubMenu(this.menu);
|
||||
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
|
||||
} else {
|
||||
this.actor.remove_style_pseudo_class('open');
|
||||
this._getTopMenu()._setOpenedSubMenu(null);
|
||||
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -584,6 +584,7 @@ const ScreenShield = new Lang.Class({
|
||||
this._shortLightbox.connect('shown', Lang.bind(this, this._onShortLightboxShown));
|
||||
|
||||
this.idleMonitor = Meta.IdleMonitor.get_core();
|
||||
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||
},
|
||||
|
||||
_createBackground: function(monitorIndex) {
|
||||
@ -953,7 +954,7 @@ const ScreenShield = new Lang.Class({
|
||||
this._hideLockScreenComplete();
|
||||
}
|
||||
|
||||
global.stage.show_cursor();
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
},
|
||||
|
||||
_ensureUnlockDialog: function(onPrimary, allowCancel) {
|
||||
@ -1086,15 +1087,15 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
this._checkArrowAnimation();
|
||||
|
||||
let motionId = global.stage.connect('captured-event', function(stage, event) {
|
||||
let motionId = global.stage.connect('captured-event', Lang.bind(this, function(stage, event) {
|
||||
if (event.type() == Clutter.EventType.MOTION) {
|
||||
global.stage.show_cursor();
|
||||
this._cursorTracker.set_pointer_visible(true);
|
||||
global.stage.disconnect(motionId);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
global.stage.hide_cursor();
|
||||
}));
|
||||
this._cursorTracker.set_pointer_visible(false);
|
||||
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
|
@ -6,6 +6,7 @@ const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
@ -167,7 +168,7 @@ const SelectArea = new Lang.Class({
|
||||
if (!Main.pushModal(this._group) || this._group.visible)
|
||||
return;
|
||||
|
||||
global.set_cursor(Shell.Cursor.CROSSHAIR);
|
||||
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||
this._group.visible = true;
|
||||
},
|
||||
|
||||
@ -238,7 +239,7 @@ const SelectArea = new Lang.Class({
|
||||
function() {
|
||||
Main.popModal(this._group);
|
||||
this._group.destroy();
|
||||
global.unset_cursor();
|
||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||
|
||||
this.emit('finished', geometry);
|
||||
})
|
||||
|
@ -214,8 +214,8 @@ const SearchResultsBase = new Lang.Class({
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_keyFocusIn: function(icon) {
|
||||
this.emit('key-focus-in', icon);
|
||||
_keyFocusIn: function(actor) {
|
||||
this.emit('key-focus-in', actor);
|
||||
},
|
||||
|
||||
_setMoreIconVisible: function(visible) {
|
||||
@ -259,6 +259,7 @@ const ListSearchResults = new Lang.Class({
|
||||
|
||||
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
|
||||
this.providerIcon = new ProviderIcon(provider);
|
||||
this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
||||
this.providerIcon.connect('clicked', Lang.bind(this,
|
||||
function() {
|
||||
provider.launchSearch(this._terms);
|
||||
@ -404,8 +405,8 @@ const SearchResults = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_keyFocusIn: function(provider, icon) {
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, icon);
|
||||
_keyFocusIn: function(provider, actor) {
|
||||
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
|
||||
},
|
||||
|
||||
createProviderDisplay: function(provider) {
|
||||
|
@ -31,6 +31,7 @@ const Indicator = new Lang.Class({
|
||||
this._applet.killswitch_state = GnomeBluetooth.KillswitchState.SOFT_BLOCKED;
|
||||
}));
|
||||
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
|
||||
this.menu.addMenuItem(this._item);
|
||||
|
||||
this._applet = new GnomeBluetoothApplet.Applet();
|
||||
this._applet.connect('devices-changed', Lang.bind(this, this._sync));
|
||||
|
@ -547,18 +547,24 @@ const NMWirelessDialogItem = new Lang.Class({
|
||||
|
||||
this._signalIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
|
||||
this._icons.add_actor(this._signalIcon);
|
||||
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
this._signalIcon.icon_name = this._getSignalIcon();
|
||||
},
|
||||
|
||||
updateBestAP: function(ap) {
|
||||
this._ap = ap;
|
||||
this._signalIcon.icon_name = this._getIcon();
|
||||
this._sync();
|
||||
},
|
||||
|
||||
setActive: function(isActive) {
|
||||
this._selectedIcon.opacity = isActive ? 255 : 0;
|
||||
},
|
||||
|
||||
_getIcon: function() {
|
||||
_getSignalIcon: function() {
|
||||
if (this._ap.mode == NM80211Mode.ADHOC)
|
||||
return 'network-workgroup-symbolic';
|
||||
else
|
||||
@ -1117,6 +1123,7 @@ const NMVPNConnectionItem = new Lang.Class({
|
||||
this.emit('activation-failed', reason);
|
||||
}
|
||||
|
||||
this.emit('icon-changed');
|
||||
this.parent();
|
||||
},
|
||||
|
||||
@ -1287,6 +1294,7 @@ const NMApplet = new Lang.Class({
|
||||
this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
|
||||
this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
|
||||
this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection));
|
||||
this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection));
|
||||
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections));
|
||||
this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
|
||||
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
|
||||
|
@ -372,7 +372,11 @@ const Indicator = new Lang.Class({
|
||||
Main.overview.hide();
|
||||
if (Main.screenShield)
|
||||
Main.screenShield.lock(false);
|
||||
Gdm.goto_login_session_sync(null);
|
||||
|
||||
Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() {
|
||||
Gdm.goto_login_session_sync(null);
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
_onQuitSessionActivate: function() {
|
||||
|
@ -20,8 +20,6 @@ const FOCUS_ANIMATION_TIME = 0.15;
|
||||
|
||||
const WINDOW_DND_SIZE = 256;
|
||||
|
||||
const SCROLL_SCALE_AMOUNT = 100 / 5;
|
||||
|
||||
const WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
|
||||
|
||||
const LIGHTBOX_FADE_TIME = 0.1;
|
||||
|
@ -62,7 +62,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._animating = false; // tweening
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
this._animatingScroll = false; // programatically updating the adjustment
|
||||
this._zoomOut = false; // zoom to a larger area
|
||||
this._inDrag = false; // dragging a window
|
||||
|
||||
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
|
||||
@ -168,14 +167,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._workspaces[i].setActualGeometry(geom);
|
||||
},
|
||||
|
||||
_lookupWorkspaceForMetaWindow: function (metaWindow) {
|
||||
for (let i = 0; i < this._workspaces.length; i++) {
|
||||
if (this._workspaces[i].containsMetaWindow(metaWindow))
|
||||
return this._workspaces[i];
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
getActiveWorkspace: function() {
|
||||
let active = global.screen.get_active_workspace_index();
|
||||
return this._workspaces[active];
|
||||
@ -433,10 +424,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._workspaces[i].actor.y += dy;
|
||||
}
|
||||
},
|
||||
|
||||
_getWorkspaceIndexToRemove: function() {
|
||||
return global.screen.get_active_workspace_index();
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(WorkspacesView.prototype);
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const Main = imports.ui.main;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const DND = imports.ui.dnd;
|
||||
@ -20,7 +21,8 @@ const XdndHandler = new Lang.Class({
|
||||
Main.uiGroup.add_actor(this._dummy);
|
||||
this._dummy.hide();
|
||||
|
||||
global.init_xdnd();
|
||||
if (!Meta.is_wayland_compositor())
|
||||
global.init_xdnd();
|
||||
|
||||
global.connect('xdnd-enter', Lang.bind(this, this._onEnter));
|
||||
global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged));
|
||||
|
@ -4,6 +4,7 @@
|
||||
data/50-gnome-shell-system.xml.in
|
||||
data/gnome-shell.desktop.in.in
|
||||
data/gnome-shell-extension-prefs.desktop.in.in
|
||||
data/gnome-shell-wayland.desktop.in.in
|
||||
data/org.gnome.shell.gschema.xml.in.in
|
||||
js/extensionPrefs/main.js
|
||||
js/gdm/authPrompt.js
|
||||
|
162
po/be.po
162
po/be.po
@ -5,7 +5,7 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
|
||||
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
|
||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||
@ -47,6 +47,7 @@ msgid "GNOME Shell"
|
||||
msgstr "Абалонка GNOME"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Кіраванне вокнамі і пуск праграм"
|
||||
|
||||
@ -59,6 +60,10 @@ msgstr "Настройкі пашырэння абалонкі GNOME"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Настройкі пашырэнняў абалонкі GNOME"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "Абалонка GNOME (Wayland-кампазіцыя)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@ -258,6 +263,10 @@ msgstr "Дынамічнае кіраванне прасторамі працы"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Прасторы працы толькі для асноўнага манітора"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Затрымліваць змяненне фокусу ў рэжыме мышы да спынення руху яе паказальніка"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -273,10 +282,10 @@ msgstr ""
|
||||
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
|
||||
"вышэй."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Скасаваць"
|
||||
|
||||
@ -315,8 +324,8 @@ msgstr "(напр., карыстальнік ці %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Імя карыстальніка: "
|
||||
|
||||
@ -337,42 +346,42 @@ msgstr "Памылка ідэнтыфікацыі"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(або правядзіце пальцам)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Загад не знойдзены"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Не ўдалося разабраць загад:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Не ўдалося выканаць \"%s\":"
|
||||
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Тут размешчаныя часта ўжываныя праграмы"
|
||||
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Часта"
|
||||
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Усе"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Новае акно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Выдаліць са спіса ўпадабанага"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Дадаць у спіс упадабанага"
|
||||
|
||||
@ -386,7 +395,8 @@ msgstr "%s дададзены ў ваш спіс упадабанага."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s выдалены з вашага спіса ўпадабанага."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Настройкі"
|
||||
|
||||
@ -572,50 +582,50 @@ msgstr "Адкрыць у %s"
|
||||
msgid "Eject"
|
||||
msgstr "Выняць"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Пароль:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Паўтарыце пароль:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Злучыць"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Пароль: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Ключ: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Ідэнтычнасць: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Пароль да прыватнага ключа: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Паслуга: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Для бесправадной сеткі патрэбная ідэнтыфікацыя"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -624,37 +634,37 @@ msgstr ""
|
||||
"Для доступу да бесправадной сеткі \"%s\" патрэбны пароль або ключы "
|
||||
"шыфравання."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Правадная ідэнтыфікацыя 802.1X"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Назва сеткі: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL-ідэнтыфікацыя"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "Патрэбны PIN-код"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr ""
|
||||
"Для прыстасавання для доступу да шырокапалоснай мабільнай сеткі патрэбны PIN-"
|
||||
"код"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN-код: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Пароль да шырокапалоснай мабільнай сеткі"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Каб злучыцца з \"%s\", патрэбны пароль."
|
||||
@ -916,7 +926,7 @@ msgstr "Праглядзець конт"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Невядомая прычына"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Вокны"
|
||||
|
||||
@ -1068,7 +1078,7 @@ msgstr "Усталяваць"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавіятура"
|
||||
|
||||
@ -1144,11 +1154,11 @@ msgstr "Меню трэя"
|
||||
msgid "No Messages"
|
||||
msgstr "Апавяшчэнні адсутнічаюць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Абшар апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Сістэмная інфармацыя"
|
||||
|
||||
@ -1181,21 +1191,17 @@ msgstr "Агляд"
|
||||
msgid "Type to search…"
|
||||
msgstr "Увядзіце тэкст для пошуку..."
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Выйсці"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Заняткі"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Меню настроек"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "Верхняя панэль"
|
||||
|
||||
@ -1204,7 +1210,7 @@ msgstr "Верхняя панэль"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1234,7 +1240,7 @@ msgstr[2] "%d новых апавяшчэнняў"
|
||||
msgid "Lock"
|
||||
msgstr "Заблакіраваць"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME патрабуе блакіравання экрана"
|
||||
|
||||
@ -1245,11 +1251,11 @@ msgstr "GNOME патрабуе блакіравання экрана"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Не ўдалося заблакіраваць"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блакіраванне стрымана праграмай"
|
||||
|
||||
@ -1331,9 +1337,9 @@ msgstr "Буйны тэкст"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1346,7 +1352,7 @@ msgstr "Выключыць"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Настройкі Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
@ -1354,73 +1360,73 @@ msgstr[0] "%d злучанае прыстасаванне"
|
||||
msgstr[1] "%d злучаныя прыстасаванні"
|
||||
msgstr[2] "%d злучаных прыстасаванняў"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Запыт на ўпаўнаважанне ад %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Прыстасаванне %s хоча спарыцца з гэтым камп'ютарам"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Дазволіць"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Адмовіць"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Прыстасаванне %s хоча даступіцца да паслугі \"%s\""
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Заўсёды даваць дазвол"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Даць дазвол аднойчы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Адмовіць"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Пацвярджэнне спарвання з %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "Праверце, ці супадае пароль \"%06d\" з нумарам на прыстасаванні."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Супадае"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Не супадае"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Запыт на спарванне з %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Увядзіце PIN, які паказвае прыстасаванне."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "Добра"
|
||||
|
||||
@ -1428,7 +1434,7 @@ msgstr "Добра"
|
||||
msgid "Brightness"
|
||||
msgstr "Яркасць"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Паказаць раскладку"
|
||||
|
||||
@ -1504,15 +1510,15 @@ msgstr "Уключыць"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Сеткавы кіраўнік"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Не ўдалося злучыцца"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Не ўдалося ўключыць сеткавае злучэнне"
|
||||
|
||||
@ -1598,11 +1604,11 @@ msgstr "Увайсці іншым карыстальнікам"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Акно блакіравання"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Праграмы"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Пошук"
|
||||
|
||||
|
175
po/de.po
175
po/de.po
@ -18,18 +18,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-07 19:18+0000\n"
|
||||
"PO-Revision-Date: 2013-09-08 00:01+0200\n"
|
||||
"Last-Translator: Tobias Endrigkeit <tobiasendrigkeit@outlook.com>\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-25 15:24+0200\n"
|
||||
"PO-Revision-Date: 2013-09-25 15:25+0100\n"
|
||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -60,6 +59,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME-Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Fenster verwalten und Anwendungen starten"
|
||||
|
||||
@ -72,6 +72,10 @@ msgstr "Einstellungen für Erweiterungen der GNOME-Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Erweiterungen der GNOME-Shell einrichten"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME-Shell (Wayland Composition)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 aktivieren"
|
||||
@ -277,6 +281,11 @@ msgstr "Arbeitsflächen dynamisch verwalten"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Arbeitsflächen nur auf dem primären Bildschirm"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -290,10 +299,10 @@ msgstr "Erweiterung"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
@ -332,8 +341,8 @@ msgstr "(z.B. Benutzer oder %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Benutzername:"
|
||||
|
||||
@ -354,42 +363,42 @@ msgstr "Legitimationsfehler"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Befehl nicht gefunden"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Befehl konnte nicht verarbeitet werden:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Ausführung von »%s« ist gescheitert:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Häufig genutzte Anwendungen werden hier erscheinen"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Häufig"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Neues Fenster"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Aus Favoriten entfernen"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Zu Favoriten hinzufügen"
|
||||
|
||||
@ -403,7 +412,8 @@ msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s wurde aus Ihren Favoriten entfernt"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
@ -592,50 +602,50 @@ msgstr "Öffnen mit %s"
|
||||
msgid "Eject"
|
||||
msgstr "Auswerfen"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Passwort:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Erneut eingeben:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Passwort:"
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Schlüssel:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Identität:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Passwort für geheimen Schlüssel:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Dienst:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Legitimierung für Funknetzwerk wird benötigt"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -644,35 +654,35 @@ msgstr ""
|
||||
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
|
||||
"zuzugreifen."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Kabelgebundene 802.1X-Legitimierung"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Netzwerkname:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL-Legitimierung"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN-Code ist erforderlich"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Passwort der mobilen Breitbandverbindung"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
|
||||
@ -940,7 +950,7 @@ msgstr "Konto anzeigen"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Unbekannter Grund"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Fenster"
|
||||
|
||||
@ -1088,7 +1098,7 @@ msgstr "Installieren"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
|
||||
@ -1164,11 +1174,11 @@ msgstr "Benachrichtigungsfeldmenü"
|
||||
msgid "No Messages"
|
||||
msgstr "Keine Nachrichten"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Benachrichtigungsfeld"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformationen"
|
||||
|
||||
@ -1200,21 +1210,17 @@ msgstr "Übersicht"
|
||||
msgid "Type to search…"
|
||||
msgstr "Suchbegriff eingeben …"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitäten"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Einstellungsmenü"
|
||||
|
||||
#: ../js/ui/panel.js:901
|
||||
#: ../js/ui/panel.js:904
|
||||
msgid "Top Bar"
|
||||
msgstr "Oberes Panel"
|
||||
|
||||
@ -1223,7 +1229,7 @@ msgstr "Oberes Panel"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1255,7 +1261,7 @@ msgstr[1] "%d neue Benachrichtigungen"
|
||||
msgid "Lock"
|
||||
msgstr "Sperren"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME muss den Bildschirm sperren"
|
||||
|
||||
@ -1266,11 +1272,11 @@ msgstr "GNOME muss den Bildschirm sperren"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Sperrung fehlgeschlagen"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
||||
|
||||
@ -1352,9 +1358,9 @@ msgstr "Große Schrift"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1367,56 +1373,56 @@ msgstr "Ausschalten"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth-Einstellungen"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d Verbundes Gerät"
|
||||
msgstr[1] "%d Verbundene Geräte"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Legitimierungsanfrage von %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Erlauben"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Verweigern"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Immer Zugriff gewähren"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Nur dieses Mal gewähren"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Abweisen"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Koppelungsbestätigung für %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
@ -1424,24 +1430,24 @@ msgstr ""
|
||||
"Bitte bestätigen Sie, ob die PIN »%06d« mit der des Gerätes übereinstimmt."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Stimmt überein"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Stimmt nicht überein"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Koppelungsanfrage für %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
@ -1449,7 +1455,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Helligkeit"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Tastaturbelegung zeigen"
|
||||
|
||||
@ -1525,15 +1531,15 @@ msgstr "Einschalten"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Netzwerk-Verwaltung"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Verbindung gescheitert"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
||||
|
||||
@ -1619,11 +1625,11 @@ msgstr "Als anderer Benutzer anmelden"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Fenster entsperren"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Anwendungen"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
@ -1729,6 +1735,9 @@ msgstr "Das Passwort darf nicht leer sein"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Einstellungsmenü"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Internally used to store the last IM presence explicitly set by the user. "
|
||||
#~ "The value here is from the TpConnectionPresenceType enumeration."
|
||||
|
1578
po/en_GB.po
1578
po/en_GB.po
File diff suppressed because it is too large
Load Diff
165
po/id.po
165
po/id.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-10 13:06+0700\n"
|
||||
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
|
||||
"PO-Revision-Date: 2013-09-23 21:24+0700\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
||||
"Language: id\n"
|
||||
@ -51,6 +51,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Manajemen jendela dan peluncuran aplikasi"
|
||||
|
||||
@ -63,6 +64,10 @@ msgstr "Preferensi Ekstensi GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurasi Ekstensi GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (kompositor wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@ -265,6 +270,11 @@ msgstr "Ruang kerja dikelola secara dinamis"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Ruang kerja hanya pada monitor primer"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -278,10 +288,10 @@ msgstr "Ekstensi"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
@ -320,8 +330,8 @@ msgstr "(cth., pengguna dari %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Nama pengguna: "
|
||||
|
||||
@ -342,42 +352,42 @@ msgstr "Galat otentikasi"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(atau gesekkan jari)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Perintah tidak ditemukan"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Tidak dapat mengurai perintah:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Eksekusi '%s' gagal:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
|
||||
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Sering"
|
||||
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Semua"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Tambah ke Favorit"
|
||||
|
||||
@ -391,7 +401,8 @@ msgstr "%s telah ditambahkan ke favorit Anda."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s telah dihapus dari favorit Anda."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Pengaturan"
|
||||
|
||||
@ -577,50 +588,50 @@ msgstr "Buka dengan %s"
|
||||
msgid "Eject"
|
||||
msgstr "Keluarkan"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Sandi:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Ketik lagi:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Sambung"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Sandi: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Tombol: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Identitas: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Sandi kunci privat: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Layanan: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Otentikasi dibutuhkan oleh jaringan nirkabel"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -629,35 +640,35 @@ msgstr ""
|
||||
"Sandi atau kunci penyandian diperlukan untuk mengakses jaringan nirkabel "
|
||||
"'%s'."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Otentikasi 802.1X kabel"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Nama jaringan: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "Otentikasi DSL"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "Perlu kode PIN"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Kode PIN dibutuhkan untuk perangkat data seluler"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Sandi jaringan data seluler"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Sebuah kata sandi dibutuhkan untuk menyambung ke '%s'."
|
||||
@ -922,7 +933,7 @@ msgstr "Tilik akun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Alasan yang tidak diketahui"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Jendela"
|
||||
|
||||
@ -1063,7 +1074,7 @@ msgstr "Pasang"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Papan Ketik"
|
||||
|
||||
@ -1139,11 +1150,11 @@ msgstr "Menu Baki"
|
||||
msgid "No Messages"
|
||||
msgstr "Tiada Pesan"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Baki Pesan"
|
||||
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1174,21 +1185,17 @@ msgstr "Gambaran"
|
||||
msgid "Type to search…"
|
||||
msgstr "Ketik untuk mencari…"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Keluar"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitas"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Menu Pengaturan"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "Bar Atas"
|
||||
|
||||
@ -1198,7 +1205,7 @@ msgstr "Bar Atas"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1226,7 +1233,7 @@ msgstr[0] "%d pemberitahuan baru"
|
||||
msgid "Lock"
|
||||
msgstr "Kunci"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME perlu mengunci layar"
|
||||
|
||||
@ -1237,11 +1244,11 @@ msgstr "GNOME perlu mengunci layar"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Tak bisa mengunci"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Kunci diblokir oleh suatu aplikasi"
|
||||
|
||||
@ -1323,9 +1330,9 @@ msgstr "Teks Besar"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1338,55 +1345,55 @@ msgstr "Matikan"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Pengaturan Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d Perangkat Tersambung"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Permintaan otorisasi dari %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Perangkat %s ingin berpasangan dengan komputer ini"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Ijinkan"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Tolak"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Perangkat %s ingin mengakses layanan '%s'"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Selalu berikan akses"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Hanya untuk saat ini"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Tolak"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Konfirmasi berpasangan untuk %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
@ -1394,24 +1401,24 @@ msgstr ""
|
||||
"Harap konfirmasi apakah Passkey '%06d' sesuai dengan salah satu perangkat."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Cocok"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Tidak cocok"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Permintaan berpasangan untuk %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "Oke"
|
||||
|
||||
@ -1419,7 +1426,7 @@ msgstr "Oke"
|
||||
msgid "Brightness"
|
||||
msgstr "Kecerahan"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Tampilkan Tata Letak Papan Tik"
|
||||
|
||||
@ -1495,15 +1502,15 @@ msgstr "Nyalakan"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Manajer Jaringan"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Koneksi gagal"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivasi koneksi jaringan gagal"
|
||||
|
||||
@ -1589,11 +1596,11 @@ msgstr "Masuk sebagai pengguna lain"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Buka Kunci Jendela"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Aplikasi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Cari"
|
||||
|
||||
|
167
po/ja.po
167
po/ja.po
@ -13,8 +13,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-06 21:55+0000\n"
|
||||
"PO-Revision-Date: 2013-09-07 22:28+0900\n"
|
||||
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
|
||||
"PO-Revision-Date: 2013-09-23 23:30+0900\n"
|
||||
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
|
||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||
"Language: ja\n"
|
||||
@ -52,6 +52,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "ウィンドウ管理とアプリケーションの起動"
|
||||
|
||||
@ -64,6 +65,10 @@ msgstr "GNOME Shell 拡張機能設定"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME Shell 拡張機能の設定を行います"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (Wayland コンポジター)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする"
|
||||
@ -212,6 +217,10 @@ msgstr "ワークスペースを動的に管理する"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "プライマリモニターのみワークスペースを切り替える"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "マウスモードにおけるフォーカス遷移をポインターが停止するまで遅延させる"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -225,10 +234,10 @@ msgstr "拡張機能"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
@ -267,8 +276,8 @@ msgstr "(たとえば、user あるいは %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "ユーザー名: "
|
||||
|
||||
@ -289,42 +298,42 @@ msgstr "認証エラー"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(あるいは指でスワイプする)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "コマンドが見つかりません"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "次のコマンドは解析できません:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "'%s'の実行に失敗しました:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "よく使うアプリケーションがここに表示されます"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "常用"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "すべて"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "新しいウィンドウで開く"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "お気に入りから削除"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "お気に入りに追加"
|
||||
|
||||
@ -338,7 +347,8 @@ msgstr "%s をお気に入りに追加しました。"
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s をお気に入りから削除しました。"
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "設定"
|
||||
|
||||
@ -524,83 +534,83 @@ msgstr "%s で開く"
|
||||
msgid "Eject"
|
||||
msgstr "取り出し"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "パスワード:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "再入力:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "接続"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "パスワード: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "キー: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "識別子: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "プライベートキーパスワード: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "サービス: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "無線ネットワークでは認証が要求されます"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
msgstr "無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要です。"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "有線 802.1X の認証"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "ネットワーク名: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL 認証"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN コードが必要です"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "モバイルブロードバンドデバイスには PIN コードが必要です"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN 番号: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "モバイルブロードバンドネットワークのパスワード"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "'%s' への接続にパスワードが必要です。"
|
||||
@ -856,7 +866,7 @@ msgstr "アカウントを表示"
|
||||
msgid "Unknown reason"
|
||||
msgstr "原因不明"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "ウィンドウ"
|
||||
|
||||
@ -994,7 +1004,7 @@ msgstr "インストール"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "キーボード"
|
||||
|
||||
@ -1070,11 +1080,11 @@ msgstr "トレイメニュー"
|
||||
msgid "No Messages"
|
||||
msgstr "メッセージなし"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "メッセージトレイ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "システム情報"
|
||||
|
||||
@ -1105,21 +1115,17 @@ msgstr "アクティビティ画面"
|
||||
msgid "Type to search…"
|
||||
msgstr "検索ワードを入力…"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "終了"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "アクティビティ"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "設定メニュー"
|
||||
|
||||
#: ../js/ui/panel.js:901
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "トップバー"
|
||||
|
||||
@ -1128,7 +1134,7 @@ msgstr "トップバー"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@ -1156,7 +1162,7 @@ msgstr[0] "%d 件の新しい通知"
|
||||
msgid "Lock"
|
||||
msgstr "ロック"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "画面をロックする必要があります"
|
||||
|
||||
@ -1167,11 +1173,11 @@ msgstr "画面をロックする必要があります"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "ロックできません"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "アプリケーションによってロックがブロックされました"
|
||||
|
||||
@ -1253,9 +1259,9 @@ msgstr "大きな文字"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1268,78 +1274,78 @@ msgstr "オフにする"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth の設定"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "接続デバイス: %d台"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "%s からアクセス許可の要求"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "デバイス %s がこのコンピューターとのペアリングを要求しています"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "許可"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "拒否"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "デバイス '%s' が サービス '%s' へのアクセスを要求しています"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "許可"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "今回のみ許可"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "拒否"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "%s からペアリングの確認"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "'%06d' がデバイスのパスキーと一致しているか確認してください。"
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "一致"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "不一致"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "%s からペアリングの要求"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "デバイスの PIN コードを入力してください。"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
@ -1347,7 +1353,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "明るさ"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "キーボードレイアウトの表示"
|
||||
|
||||
@ -1423,15 +1429,15 @@ msgstr "オンにする"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "ネットワークマネージャー"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "接続失敗"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "ネットワーク接続を有効にできません"
|
||||
|
||||
@ -1517,11 +1523,11 @@ msgstr "他のユーザーでログイン"
|
||||
msgid "Unlock Window"
|
||||
msgstr "ロック解除"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "アプリケーション"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "検索"
|
||||
|
||||
@ -1622,6 +1628,9 @@ msgstr "パスワードを空白にすることはできません。"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "認証ダイアログはユーザーに拒否されました"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "設定メニュー"
|
||||
|
||||
#~ msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||
#~ msgstr "ユーザーにより明示的に設定された最新の IM プレゼンスを保存するのに内部的に使用されます。ここは TpConnectionPresenceType 列挙型の値になります。"
|
||||
|
||||
|
239
po/kk.po
239
po/kk.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-08-30 14:46+0000\n"
|
||||
"PO-Revision-Date: 2013-08-31 19:43+0600\n"
|
||||
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
|
||||
"PO-Revision-Date: 2013-09-24 06:33+0600\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||
"Language: kk\n"
|
||||
@ -48,6 +48,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
|
||||
|
||||
@ -60,6 +61,10 @@ msgstr "GNOME Shell кеңейту баптаулары"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME Shell кеңейтулерін баптау"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (wayland үйлестіргіші)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@ -85,6 +90,10 @@ msgid ""
|
||||
"list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension DBus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"GNOME Shell кеңейтулерінде uuid қасиеті бар; бұл кілт жүктелетін кеңейтулер "
|
||||
"тізімін сақтайды. Жүйеге кірген кезде жүктелем дейтін кеңейту осы тізімде "
|
||||
"болуы тиіс. Бұл тізімді org.gnome.Shell ішіндегі EnableExtension және "
|
||||
"DisableExtension DBus тәсілдерімен де өзгертуге болады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@ -95,6 +104,8 @@ msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Осы анықтағыштарға сәйкес келетін қолданбалар таңдамалылар аймағында "
|
||||
"көрсетілетін болады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of categories that should be displayed as folders"
|
||||
@ -105,6 +116,8 @@ msgid ""
|
||||
"Each category name in this list will be represented as folder in the "
|
||||
"application view, rather than being displayed inline in the main view."
|
||||
msgstr ""
|
||||
"Бұл тізімдегі әрбір санат аты басты көріністе қатарынан көрсетілудің орнына "
|
||||
"қолданбалар көрінісінде бума ретінде көрсетіледі."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@ -123,6 +136,8 @@ msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Бұл кілт бір пайдаланушы, бір сессия бар кезінде 'Жүйеден шығу' "
|
||||
"мүмкіндігінің автоматты түрде жасыруын алмастырады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
@ -138,6 +153,10 @@ msgid ""
|
||||
"'Remember Password' checkbox will be present. This key sets the default "
|
||||
"state of the checkbox."
|
||||
msgstr ""
|
||||
"Қоршам шифрленген құрылғы немесе қашықтағы файлдық жүйе тіркелген кезде "
|
||||
"парольді сұрайды. Егер парольді болашақтағы қолданулар үшін сақтау керек "
|
||||
"болса, 'Парольді еске сақтау' жалаушасые орнатыңыз. Бұл кілт жалаушаның "
|
||||
"бастапқы күйін орнатады."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
@ -207,10 +226,13 @@ msgid ""
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Терезелер ауыстырғышта қалай көрсетілетінін сипаттайды. Мүмкін мәндері "
|
||||
"'thumbnail-only' (терезенің кіші көрінісі көрсетіледі), 'app-icon-only' (тек "
|
||||
"қолданба таңбашасы көрсетіледі) немесе 'both' (екеуі де)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr ""
|
||||
msgstr "Модальды сұхбатты аталық терезесіне жалғау"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
msgid ""
|
||||
@ -234,6 +256,8 @@ msgstr ""
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске "
|
||||
"қосу"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
@ -243,6 +267,10 @@ msgstr "Жұмыс орындары динамикалы түрде басқар
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Жұмыс орындар тек біріншілік мониторда"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Тышқан режиміндегі фокусты ауыстыру курсор тоқтағанша дейін кідірту"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -256,10 +284,10 @@ msgstr "Кеңейту"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Жоғарыдағы ашылмалы тізімнен баптау үшін кеңейтуді таңдаңыз."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:679
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Бас тарту"
|
||||
|
||||
@ -298,8 +326,8 @@ msgstr "(мыс., пайдаланушы не %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Пайдаланушы аты:"
|
||||
|
||||
@ -320,38 +348,42 @@ msgstr "Аутентификация қатесі"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(немесе саусағыңызды өткізіңіз)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Команда табылмады"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Команданы талдау мүмкін емес:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "'%s' жөнелту сәтсіз:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:386
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
|
||||
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Жиі"
|
||||
|
||||
#: ../js/ui/appDisplay.js:393
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Барлық"
|
||||
|
||||
#: ../js/ui/appDisplay.js:991
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Жаңа терезе"
|
||||
|
||||
#: ../js/ui/appDisplay.js:994 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Таңдамалылардан өшіру"
|
||||
|
||||
#: ../js/ui/appDisplay.js:995
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Таңдамалыларға қосу"
|
||||
|
||||
@ -365,7 +397,8 @@ msgstr "%s таңдамалыларыңызға қосылды."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s таңдамалыларыңыздан өшірілді."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Баптаулар"
|
||||
|
||||
@ -520,7 +553,7 @@ msgstr "Бүгін"
|
||||
|
||||
#: ../js/ui/calendar.js:789
|
||||
msgid "Tomorrow"
|
||||
msgstr "Ертен"
|
||||
msgstr "Ертең"
|
||||
|
||||
#: ../js/ui/calendar.js:800
|
||||
msgid "This week"
|
||||
@ -551,85 +584,85 @@ msgstr "%s көмегімен ашу"
|
||||
msgid "Eject"
|
||||
msgstr "Шығару"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Пароль:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Қайтадан енгізіңіз:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:268 ../js/ui/status/network.js:682
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Байланысу"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Пароль:"
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Кілт:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr ""
|
||||
msgstr "Анықтағыш:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Жеке кілт паролі:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Қызмет:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Сымсыз желісі аутентификацияны талап етеді"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Сымды 802.1X аутентификациясы"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Желі аты:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL аутентификациясы"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN коды керек"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Сымсыз кеңжолақты желісінің паролі"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
|
||||
@ -893,7 +926,7 @@ msgstr "Тіркелгіні қарап шығу"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Себебі белгісіз"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Терезелер"
|
||||
|
||||
@ -903,7 +936,7 @@ msgstr "Қолданбаларды көрсету"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/dash.js:439
|
||||
#: ../js/ui/dash.js:442
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
@ -987,15 +1020,12 @@ msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Қайта қосу және жаңартуларды орнату"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
@ -1037,7 +1067,7 @@ msgstr "Орнату"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, орнату керек пе?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Пернетақта"
|
||||
|
||||
@ -1113,11 +1143,11 @@ msgstr "Трей мәзірі"
|
||||
msgid "No Messages"
|
||||
msgstr "Хабарламалар жоқ"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Жүйелік трей"
|
||||
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Жүйелік ақпарат"
|
||||
|
||||
@ -1148,21 +1178,17 @@ msgstr "Шолу"
|
||||
msgid "Type to search…"
|
||||
msgstr "Іздеу үшін теріңіз..."
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Шығу"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Көрініс"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Баптаулар мәзірі"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "Үстідегі панель"
|
||||
|
||||
@ -1171,7 +1197,7 @@ msgstr "Үстідегі панель"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1199,7 +1225,7 @@ msgstr[0] "%d жаңа ескерту"
|
||||
msgid "Lock"
|
||||
msgstr "Блоктау"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME экранды блоктау керек"
|
||||
|
||||
@ -1210,19 +1236,19 @@ msgstr "GNOME экранды блоктау керек"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Блоктау мүмкін емес"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блоктауды басқа қолданба болдырмады"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:445
|
||||
#: ../js/ui/searchDisplay.js:447
|
||||
msgid "Searching…"
|
||||
msgstr "Іздеу..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:489
|
||||
#: ../js/ui/searchDisplay.js:491
|
||||
msgid "No results."
|
||||
msgstr "Нәтижелер жоқ."
|
||||
|
||||
@ -1296,14 +1322,14 @@ msgstr "Үлкен мәтін"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:1027 ../js/ui/status/rfkill.js:46
|
||||
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
|
||||
msgid "Turn Off"
|
||||
msgstr "Сөндіру"
|
||||
|
||||
@ -1311,79 +1337,79 @@ msgstr "Сөндіру"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth баптаулары"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d байланысқан құрылғы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "%s жіберген авторизация сұранымы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Рұқсат ету"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Тайдыру"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "%s құрылғысы '%s' қызметін қатынағысы кеп тұр"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Әрқашан рұқсат ету"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Тек осы ретке рұқсат ету"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Болдырмау"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "%s жіберген парлау растауы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "'%06d' кілт коды құрылғыдағы кодымен сәйкес келетінін растаңыз."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Сәйкес"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Сәйкес емес"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "%s үшін парлау сұранымы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Құрылғыда көрсетілген PIN кодын енгізіңіз."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "ОК"
|
||||
|
||||
@ -1391,7 +1417,7 @@ msgstr "ОК"
|
||||
msgid "Brightness"
|
||||
msgstr "Жарықтылығы"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Пернетақта жаймасын көрсету"
|
||||
|
||||
@ -1399,83 +1425,83 @@ msgstr "Пернетақта жаймасын көрсету"
|
||||
msgid "<unknown>"
|
||||
msgstr "<белгісіз>"
|
||||
|
||||
#: ../js/ui/status/network.js:196 ../js/ui/status/network.js:1042
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
msgid "Off"
|
||||
msgstr "Сөнд."
|
||||
|
||||
#: ../js/ui/status/network.js:269 ../js/ui/status/network.js:948
|
||||
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
|
||||
#: ../js/ui/status/rfkill.js:49
|
||||
msgid "Network Settings"
|
||||
msgstr "Желі баптаулары"
|
||||
|
||||
#. Translators: this is for network devices that are physically present but are not
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||
#: ../js/ui/status/network.js:357
|
||||
#: ../js/ui/status/network.js:364
|
||||
msgid "unmanaged"
|
||||
msgstr "басқарылмайтын"
|
||||
|
||||
#: ../js/ui/status/network.js:359
|
||||
#: ../js/ui/status/network.js:366
|
||||
msgid "disconnecting..."
|
||||
msgstr "байланысты үзу..."
|
||||
|
||||
#: ../js/ui/status/network.js:365 ../js/ui/status/network.js:1093
|
||||
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
|
||||
msgid "connecting..."
|
||||
msgstr "байланысты орнату..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:368 ../js/ui/status/network.js:1096
|
||||
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
|
||||
msgid "authentication required"
|
||||
msgstr "аутентификация керек"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:376
|
||||
#: ../js/ui/status/network.js:383
|
||||
msgid "firmware missing"
|
||||
msgstr "бинарлы кодтары жоқ"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:380
|
||||
#: ../js/ui/status/network.js:387
|
||||
msgid "unavailable"
|
||||
msgstr "қолжетерсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:382 ../js/ui/status/network.js:1098
|
||||
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
|
||||
msgid "connection failed"
|
||||
msgstr "байланысты орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:647
|
||||
#: ../js/ui/status/network.js:654
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wi-Fi желілері"
|
||||
|
||||
#: ../js/ui/status/network.js:649
|
||||
#: ../js/ui/status/network.js:656
|
||||
msgid "Select a network"
|
||||
msgstr "Желіні таңдаңыз"
|
||||
|
||||
#: ../js/ui/status/network.js:673
|
||||
#: ../js/ui/status/network.js:680
|
||||
msgid "No Networks"
|
||||
msgstr "Желілер жоқ"
|
||||
|
||||
#: ../js/ui/status/network.js:942
|
||||
#: ../js/ui/status/network.js:949
|
||||
msgid "Select Network"
|
||||
msgstr "Желіні таңдаңыз"
|
||||
|
||||
#: ../js/ui/status/network.js:1027
|
||||
#: ../js/ui/status/network.js:1034
|
||||
msgid "Turn On"
|
||||
msgstr "Іске қосу"
|
||||
|
||||
#: ../js/ui/status/network.js:1160
|
||||
#: ../js/ui/status/network.js:1167
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1299
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Желілер басқарушысы"
|
||||
|
||||
#: ../js/ui/status/network.js:1338
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Байланыс орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:1339
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Желілік байланысты белсендіру сәтсіз"
|
||||
|
||||
@ -1561,11 +1587,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Блоктауды алу терезесі"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Қолданбалар"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Іздеу"
|
||||
|
||||
@ -1581,7 +1607,7 @@ msgstr ""
|
||||
#: ../js/ui/wanda.js:81
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr ""
|
||||
msgstr "Болжаушы айтады: %s"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
@ -1665,3 +1691,6 @@ msgstr "Пароль бос болуы мүмкін емес"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Аутентификация терезесін пайдаланушы тайдырды"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Баптаулар мәзірі"
|
||||
|
184
po/lv.po
184
po/lv.po
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-10 21:28+0300\n"
|
||||
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
|
||||
"PO-Revision-Date: 2013-09-26 23:29+0300\n"
|
||||
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
|
||||
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
|
||||
"Language: lv\n"
|
||||
@ -50,6 +50,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME čaula"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Logu pārvaldība un lietotņu palaišana"
|
||||
|
||||
@ -62,6 +63,10 @@ msgstr "GNOME Shell paplašinājumu iestatījumi"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurēt GNOME Shell paplašinājumus"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME čaula (wayland kompozitors)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
@ -179,12 +184,10 @@ msgstr ""
|
||||
"Taustiņu sasaiste, kas atver “Rādīt lietotnes” aktivitāšu pārskata skatu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Taustiņu sasaiste, kas atver pārskatu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Taustiņu sasaiste, kas atver aktivitāšu pārskatu."
|
||||
|
||||
@ -259,6 +262,10 @@ msgstr "Darbvirsmas tiek pārvaldītas dinamiski"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Darbvietas tikai uz galvenā monitora"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Peles režīmā aizkavēt fokusa izmaiņas, līdz rādītājs pārstāj kustēties"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -272,10 +279,10 @@ msgstr "Paplašinājums"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Izvēlieties konfigurējamo paplašinājumu no saraksta."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Atcelt"
|
||||
|
||||
@ -294,7 +301,6 @@ msgid "Sign In"
|
||||
msgstr "Ierakstīties"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:294
|
||||
#| msgid "Switch Session"
|
||||
msgid "Choose Session"
|
||||
msgstr "Izvēlieties sesiju"
|
||||
|
||||
@ -315,8 +321,8 @@ msgstr "(piemēram, lietotājs vai %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Lietotājvārds: "
|
||||
|
||||
@ -337,42 +343,42 @@ msgstr "Autentifikācijas kļūda"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(vai velciet pirkstu)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Komanda nav atrasta"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Neizdevās apstrādāt komandu:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "“%s” izpilde neizdevās:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Šeit parādīsies biežāk izmantotās lietotnes"
|
||||
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Biežāk izmantotās"
|
||||
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Visas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Jauns logs"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Izņemt no izlases"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Pievienot izlasei"
|
||||
|
||||
@ -386,7 +392,8 @@ msgstr "%s ir pievienots izlasei."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s ir izņemts no izlases."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Iestatījumi"
|
||||
|
||||
@ -572,50 +579,50 @@ msgstr "Atvērt ar %s"
|
||||
msgid "Eject"
|
||||
msgstr "Izgrūst"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Parole:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Ierakstiet vēlreiz:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
msgid "Connect"
|
||||
msgstr "Savienot"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Parole: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Atslēga: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Identitāte: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Privātās atslēgas parole: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Serviss: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Bezvadu tīkls pieprasa autentifikāciju"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -624,35 +631,35 @@ msgstr ""
|
||||
"Lai piekļūtu bezvadu tīklam “%s”, ir nepieciešamas paroles vai šifrēšanas "
|
||||
"atslēgas."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Vadu 802.1X autentifikācija"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Tīkla nosaukums: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL autentifikācija"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "Nepieciešams PIN kods"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Mobilā platjoslas tīkla ierīcei ir vajadzīgs PIN kods"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Mobilās platjoslas tīkla parole"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Lai savienotos ar “%s”, ir nepieciešama parole."
|
||||
@ -918,7 +925,7 @@ msgstr "Skatīt kontu"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nezināms iemesls"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Logi"
|
||||
|
||||
@ -1020,15 +1027,12 @@ msgstr[1] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm."
|
||||
msgstr[2] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Pārstartēt un instalēt atjauninājumus"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
@ -1076,7 +1080,7 @@ msgstr "Instalēt"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Lejupielādēt un instalēt “%s” no extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatūra"
|
||||
|
||||
@ -1152,11 +1156,11 @@ msgstr "Paplātes izvēlne"
|
||||
msgid "No Messages"
|
||||
msgstr "Nav ziņojumu"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Ziņojumu paplāte"
|
||||
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Sistēmas informācija"
|
||||
|
||||
@ -1189,22 +1193,17 @@ msgstr "Pārskats"
|
||||
msgid "Type to search…"
|
||||
msgstr "Rakstiet, lai meklētu…"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Iziet"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitātes"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
#| msgid "Settings"
|
||||
msgid "Settings Menu"
|
||||
msgstr "Iestatījumu izvēlne"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "Augšējā josla"
|
||||
|
||||
@ -1213,7 +1212,7 @@ msgstr "Augšējā josla"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1243,7 +1242,7 @@ msgstr[2] "%d jaunu paziņojumu"
|
||||
msgid "Lock"
|
||||
msgstr "Bloķēt"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME vajag bloķēt ekrānu"
|
||||
|
||||
@ -1254,11 +1253,11 @@ msgstr "GNOME vajag bloķēt ekrānu"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Nevar bloķēt"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Lietotne neļāva bloķēt"
|
||||
|
||||
@ -1340,9 +1339,9 @@ msgstr "Liels teksts"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1355,83 +1354,81 @@ msgstr "Izslēgt"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth iestatījumi"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
#| msgid "Connected (private)"
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d savienota ierīce"
|
||||
msgstr[1] "%d savienotas ierīces"
|
||||
msgstr[2] "%d savienotu ierīču"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Autorizācijas pieprasījums no %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Ierīce %s prasa sapārošanu ar šo datoru"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Atļaut"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Liegt"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Ierīce %s prasa pieeju “%s” servisam"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Vienmēr piešķirt pieeju"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Piešķirt tikai šoreiz"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Noraidīt"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "%s pārošanas apstiprinājums"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
#| msgid "Please confirm whether the PIN '%06d' matches the one on the device."
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "Lūdzu, pārliecinieties, vai parole “%06d” sakrīt ar ierīces doto."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Sakrīt"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Nesakrīt"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "%s pārošanas pieprasījums"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Lūdzu, ievadiet PIN, kas redzams uz ierīces."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "Labi"
|
||||
|
||||
@ -1439,7 +1436,7 @@ msgstr "Labi"
|
||||
msgid "Brightness"
|
||||
msgstr "Gaišums"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Rādīt tastatūras izkārtojumu"
|
||||
|
||||
@ -1448,7 +1445,6 @@ msgid "<unknown>"
|
||||
msgstr "<nezināms>"
|
||||
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
#| msgid "Offline"
|
||||
msgid "Off"
|
||||
msgstr "Izslēgts"
|
||||
|
||||
@ -1493,22 +1489,18 @@ msgid "connection failed"
|
||||
msgstr "savienojums neizdevās"
|
||||
|
||||
#: ../js/ui/status/network.js:654
|
||||
#| msgid "Network"
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Bezvadu tīkli"
|
||||
|
||||
#: ../js/ui/status/network.js:656
|
||||
#| msgid "Enable networking"
|
||||
msgid "Select a network"
|
||||
msgstr "Izvēlieties tīklu"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#| msgid "Network"
|
||||
msgid "No Networks"
|
||||
msgstr "Nav tīklu"
|
||||
|
||||
#: ../js/ui/status/network.js:949
|
||||
#| msgid "Network"
|
||||
msgid "Select Network"
|
||||
msgstr "Izvēlieties tīklu"
|
||||
|
||||
@ -1520,15 +1512,15 @@ msgstr "Ieslēgt"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Tīkla pārvaldnieks"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Neizdevās savienoties"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Neizdevās tīkla savienojuma aktivēšana"
|
||||
|
||||
@ -1571,7 +1563,6 @@ msgid "Airplane Mode"
|
||||
msgstr "Lidmašīnas režīms"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:45
|
||||
#| msgid "Open"
|
||||
msgid "On"
|
||||
msgstr "Ieslēgt"
|
||||
|
||||
@ -1615,11 +1606,11 @@ msgstr "Ierakstīties kā citam lietotājam"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Atbloķēšanas logs"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Lietotnes"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Meklēt"
|
||||
|
||||
@ -1650,7 +1641,6 @@ msgstr "Vai vēlaties paturēt šos displeja iestatījumus?"
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: ../js/ui/windowManager.js:75
|
||||
#| msgid "Power Settings"
|
||||
msgid "Revert Settings"
|
||||
msgstr "Atgriezt iestatījumus"
|
||||
|
||||
@ -1727,6 +1717,10 @@ msgstr "Parole nevar būt tukša"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu"
|
||||
|
||||
#~| msgid "Settings"
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Iestatījumu izvēlne"
|
||||
|
||||
#~ msgid "Screenshots"
|
||||
#~ msgstr "Ekrānattēli"
|
||||
|
||||
|
197
po/nb.po
197
po/nb.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell 3.9.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-08 11:22+0200\n"
|
||||
"PO-Revision-Date: 2013-09-08 11:23+0200\n"
|
||||
"POT-Creation-Date: 2013-09-29 11:27+0200\n"
|
||||
"PO-Revision-Date: 2013-09-24 19:38+0200\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||
"Language: \n"
|
||||
@ -47,6 +47,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Vindushåndtering og oppstart av programmer"
|
||||
|
||||
@ -59,6 +60,10 @@ msgstr "Brukervalg for GNOME Shell utvidelser"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurer utvidelser for GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (wayland kompositør)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Aktiver interne verktøy for utviklere og testere fra Alt-F2"
|
||||
@ -243,6 +248,10 @@ msgstr "Arbeidsområder håndteres dynamisk"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Arbeidsområder vises kun på hovedskjerm"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -256,10 +265,10 @@ msgstr "Utvidelse"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Velg en utvidelse som skal konfigureres med komboboksen over."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
|
||||
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
@ -298,8 +307,8 @@ msgstr "(f.eks. bruker eller %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Brukernavn: "
|
||||
|
||||
@ -320,42 +329,42 @@ msgstr "Autentiseringsfeil"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(eller dra finger)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Kommando ikke funnet"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Klarte ikke å lese kommando:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Kjøring av «%s» feilet:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:573
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Ofte brukte programmer vil vises her"
|
||||
|
||||
#: ../js/ui/appDisplay.js:689
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Ofte"
|
||||
|
||||
#: ../js/ui/appDisplay.js:696
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Nytt vindu"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
|
||||
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Fjern fra favoritter"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1495
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Legg til i favoritter"
|
||||
|
||||
@ -369,7 +378,8 @@ msgstr "%s ble lagt til i dine favoritter."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s ble fjernet fra dine favoritter."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
@ -555,50 +565,50 @@ msgstr "Åpne med %s"
|
||||
msgid "Eject"
|
||||
msgstr "Løs ut"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
|
||||
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Passord:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Skriv på nytt:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
|
||||
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695
|
||||
msgid "Connect"
|
||||
msgstr "Koble til"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Passord: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Nøkkel: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Identitet: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Passord for privat nøkkel: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Tjeneste: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Autentisering kreves av trådløst nettverk"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -607,35 +617,35 @@ msgstr ""
|
||||
"Passord eller krypteringsnøkler kreves for å koble til trådløst nettverk "
|
||||
"«%s»."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "802.1X autentisering for trådbundet nettverk"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Navn på nettverk: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL-autentisering"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN-kode kreves"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "PIN-kode kreves for mobil bredbåndsenhet"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Nettverkspassord for mobilt bredbånd"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Et passord kreves for å koble til «%s»."
|
||||
@ -899,7 +909,7 @@ msgstr "Vis konto"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Ukjent årsak"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Vinduer"
|
||||
|
||||
@ -1047,7 +1057,7 @@ msgstr "Installer"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
|
||||
@ -1123,11 +1133,11 @@ msgstr "Meny for varslingsområde"
|
||||
msgid "No Messages"
|
||||
msgstr "Ingen meldinger"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Meldingstrau"
|
||||
|
||||
#: ../js/ui/messageTray.js:2787
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformasjon"
|
||||
|
||||
@ -1159,21 +1169,17 @@ msgstr "Oversikt"
|
||||
msgid "Type to search…"
|
||||
msgstr "Skriv for å søke …"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Avslutt"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Aktiviteter"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
msgid "Settings Menu"
|
||||
msgstr "Meny for innstillinger"
|
||||
|
||||
#: ../js/ui/panel.js:901
|
||||
#: ../js/ui/panel.js:904
|
||||
msgid "Top Bar"
|
||||
msgstr "Topp-panel"
|
||||
|
||||
@ -1182,7 +1188,7 @@ msgstr "Topp-panel"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1211,7 +1217,7 @@ msgstr[1] "%d nye varslinger"
|
||||
msgid "Lock"
|
||||
msgstr "Lås"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME må låse skjermen"
|
||||
|
||||
@ -1222,19 +1228,19 @@ msgstr "GNOME må låse skjermen"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Kan ikke låse"
|
||||
|
||||
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Låsing ble stoppet av et program"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:447
|
||||
#: ../js/ui/searchDisplay.js:448
|
||||
msgid "Searching…"
|
||||
msgstr "Søker …"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:491
|
||||
#: ../js/ui/searchDisplay.js:492
|
||||
msgid "No results."
|
||||
msgstr "Ingen resultater."
|
||||
|
||||
@ -1308,14 +1314,14 @@ msgstr "Stor tekst"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
|
||||
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46
|
||||
msgid "Turn Off"
|
||||
msgstr "Slå av"
|
||||
|
||||
@ -1323,80 +1329,80 @@ msgstr "Slå av"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Innstillinger for Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
msgstr[0] "%d tilkoblet enhet"
|
||||
msgstr[1] "%d tilkoblede enheter"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Forespørsel om autorisering fra %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Tillat"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Nekt"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Alltid gi tilgang"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Gi tilgang kun denne ene gangen"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Avvis"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Bekreftelse for tilkobling for %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "Vennligst bekreft om passord «%06d» er lik den som brukes på enheten."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Stemmer overens"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Stemmer ikke overens"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Forespørsel om tilkobling for %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
@ -1404,7 +1410,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Lysstyrke"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Vis tastaturutforming"
|
||||
|
||||
@ -1412,11 +1418,11 @@ msgstr "Vis tastaturutforming"
|
||||
msgid "<unknown>"
|
||||
msgstr "<ukjent>"
|
||||
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
|
||||
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055
|
||||
msgid "Off"
|
||||
msgstr "Av"
|
||||
|
||||
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
|
||||
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
|
||||
#: ../js/ui/status/rfkill.js:49
|
||||
msgid "Network Settings"
|
||||
msgstr "Innstillinger for nettverk"
|
||||
@ -1431,12 +1437,12 @@ msgstr "ikke håndtert"
|
||||
msgid "disconnecting..."
|
||||
msgstr "kobler fra …"
|
||||
|
||||
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
|
||||
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106
|
||||
msgid "connecting..."
|
||||
msgstr "kobler til …"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
|
||||
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109
|
||||
msgid "authentication required"
|
||||
msgstr "autentisering kreves"
|
||||
|
||||
@ -1452,43 +1458,43 @@ msgstr "fastvare mangler"
|
||||
msgid "unavailable"
|
||||
msgstr "ikke tilgjengelig"
|
||||
|
||||
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
|
||||
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111
|
||||
msgid "connection failed"
|
||||
msgstr "tilkobling feilet"
|
||||
|
||||
#: ../js/ui/status/network.js:654
|
||||
#: ../js/ui/status/network.js:660
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "Wi-Fi nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:656
|
||||
#: ../js/ui/status/network.js:662
|
||||
msgid "Select a network"
|
||||
msgstr "Velg et nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#: ../js/ui/status/network.js:686
|
||||
msgid "No Networks"
|
||||
msgstr "Ingen nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:949
|
||||
#: ../js/ui/status/network.js:955
|
||||
msgid "Select Network"
|
||||
msgstr "Velg nettverk"
|
||||
|
||||
#: ../js/ui/status/network.js:1034
|
||||
#: ../js/ui/status/network.js:1040
|
||||
msgid "Turn On"
|
||||
msgstr "Slå på"
|
||||
|
||||
#: ../js/ui/status/network.js:1167
|
||||
#: ../js/ui/status/network.js:1173
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1313
|
||||
msgid "Network Manager"
|
||||
msgstr "Nettverkshåndtering"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1352
|
||||
msgid "Connection failed"
|
||||
msgstr "Tilkobling feilet"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1353
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Aktivering av nettverkstilkobling feilet"
|
||||
|
||||
@ -1574,11 +1580,11 @@ msgstr "Logg inn som en annen bruker"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Lås opp vindu"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Programmer"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Søk"
|
||||
|
||||
@ -1681,3 +1687,6 @@ msgstr "Passordet kan ikke være tomt"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Autentiseringsdialogen ble lukket av brukeren"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Meny for innstillinger"
|
||||
|
473
po/pt_BR.po
473
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
190
po/ru.po
190
po/ru.po
@ -14,16 +14,16 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
|
||||
"PO-Revision-Date: 2013-09-07 23:11+0300\n"
|
||||
"POT-Creation-Date: 2013-09-23 15:02+0000\n"
|
||||
"PO-Revision-Date: 2013-09-24 12:18+0300\n"
|
||||
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
|
||||
"Language-Team: русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 1.5.7\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -54,6 +54,7 @@ msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Управление окнами и запуск приложений"
|
||||
|
||||
@ -66,6 +67,10 @@ msgstr "Параметры расширений GNOME Shell"
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Настроить расширения GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
msgid "GNOME Shell (wayland compositor)"
|
||||
msgstr "GNOME Shell (компоновщик wayland)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров"
|
||||
@ -215,6 +220,10 @@ msgstr "Рабочие места управляются динамически"
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Рабочие места только на основном мониторе"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -229,12 +238,12 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Выберите расширение из выпадающего списка."
|
||||
|
||||
#: ../js/gdm/authPrompt.js:145
|
||||
#: ../js/ui/components/networkAgent.js:132
|
||||
#: ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:161
|
||||
#: ../js/ui/endSessionDialog.js:351
|
||||
#: ../js/ui/extensionDownloader.js:195
|
||||
#: ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
#: ../js/ui/status/bluetooth.js:222
|
||||
#: ../js/ui/status/network.js:686
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
@ -277,8 +286,8 @@ msgstr "(например, пользователь или %s)"
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:627
|
||||
#: ../js/ui/components/networkAgent.js:255
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/ui/components/networkAgent.js:259
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Username: "
|
||||
msgstr "Имя пользователя: "
|
||||
|
||||
@ -299,43 +308,43 @@ msgstr "Ошибка проверки подлинности"
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(или проведите пальцем по считывающему устройству)"
|
||||
|
||||
#: ../js/misc/util.js:97
|
||||
#: ../js/misc/util.js:98
|
||||
msgid "Command not found"
|
||||
msgstr "Команда не найдена"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:130
|
||||
#: ../js/misc/util.js:131
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Не удалось разобрать команду:"
|
||||
|
||||
#: ../js/misc/util.js:138
|
||||
#: ../js/misc/util.js:139
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Не удалось выполнить «%s»:"
|
||||
|
||||
#: ../js/ui/appDisplay.js:578
|
||||
#: ../js/ui/appDisplay.js:596
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Здесь появляются часто используемые приложения"
|
||||
|
||||
#: ../js/ui/appDisplay.js:694
|
||||
#: ../js/ui/appDisplay.js:712
|
||||
msgid "Frequent"
|
||||
msgstr "Популярные"
|
||||
|
||||
#: ../js/ui/appDisplay.js:701
|
||||
#: ../js/ui/appDisplay.js:719
|
||||
msgid "All"
|
||||
msgstr "Все"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1488
|
||||
#: ../js/ui/appDisplay.js:1514
|
||||
msgid "New Window"
|
||||
msgstr "Новое окно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1491
|
||||
#: ../js/ui/appDisplay.js:1517
|
||||
#: ../js/ui/dash.js:284
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Удалить из избранного"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1492
|
||||
#: ../js/ui/appDisplay.js:1518
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Добавить в избранное"
|
||||
|
||||
@ -350,6 +359,7 @@ msgid "%s has been removed from your favorites."
|
||||
msgstr "Приложение %s удалено из избранного."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19
|
||||
#: ../js/ui/panel.js:807
|
||||
#: ../js/ui/status/system.js:325
|
||||
msgid "Settings"
|
||||
msgstr "Параметры"
|
||||
@ -536,16 +546,16 @@ msgstr "Открыть с помощью %s"
|
||||
msgid "Eject"
|
||||
msgstr "Извлечь"
|
||||
|
||||
#: ../js/ui/components/keyring.js:88
|
||||
#: ../js/ui/components/keyring.js:91
|
||||
#: ../js/ui/components/polkitAgent.js:280
|
||||
msgid "Password:"
|
||||
msgstr "Пароль:"
|
||||
|
||||
#: ../js/ui/components/keyring.js:107
|
||||
#: ../js/ui/components/keyring.js:110
|
||||
msgid "Type again:"
|
||||
msgstr "Введите ещё раз:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:127
|
||||
#: ../js/ui/components/networkAgent.js:131
|
||||
#: ../js/ui/status/network.js:112
|
||||
#: ../js/ui/status/network.js:275
|
||||
#: ../js/ui/status/network.js:689
|
||||
@ -553,69 +563,69 @@ msgid "Connect"
|
||||
msgstr "Соединиться"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:218
|
||||
#: ../js/ui/components/networkAgent.js:230
|
||||
#: ../js/ui/components/networkAgent.js:257
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#: ../js/ui/components/networkAgent.js:222
|
||||
#: ../js/ui/components/networkAgent.js:234
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:281
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Password: "
|
||||
msgstr "Пароль: "
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:223
|
||||
#: ../js/ui/components/networkAgent.js:227
|
||||
msgid "Key: "
|
||||
msgstr "Ключ: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:261
|
||||
#: ../js/ui/components/networkAgent.js:265
|
||||
msgid "Identity: "
|
||||
msgstr "Идентичность: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:263
|
||||
#: ../js/ui/components/networkAgent.js:267
|
||||
msgid "Private key password: "
|
||||
msgstr "Пароль личного ключа: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Service: "
|
||||
msgstr "Служба: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:304
|
||||
#: ../js/ui/components/networkAgent.js:308
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Беспроводная сеть требует подтверждения подлинности"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:305
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#, c-format
|
||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
msgstr "Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:309
|
||||
#: ../js/ui/components/networkAgent.js:313
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Аутентификация Wired 802.1X"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:311
|
||||
#: ../js/ui/components/networkAgent.js:315
|
||||
msgid "Network name: "
|
||||
msgstr "Название сети: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
msgid "DSL authentication"
|
||||
msgstr "Аутентификация DSL"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "PIN code required"
|
||||
msgstr "Требуется PIN-код"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:324
|
||||
#: ../js/ui/components/networkAgent.js:328
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Для широкополосного мобильного устройства требуется PIN-код "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:329
|
||||
msgid "PIN: "
|
||||
msgstr "PIN-код: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:331
|
||||
#: ../js/ui/components/networkAgent.js:335
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Пароль для мобильной широкополосной сети"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:336
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "Для подключения к «%s» требуется пароль."
|
||||
@ -873,7 +883,7 @@ msgid "Unknown reason"
|
||||
msgstr "Неизвестная причина"
|
||||
|
||||
#: ../js/ui/ctrlAltTab.js:29
|
||||
#: ../js/ui/viewSelector.js:96
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
msgid "Windows"
|
||||
msgstr "Окна"
|
||||
|
||||
@ -977,15 +987,12 @@ msgstr[1] "Система будет автоматически перезапу
|
||||
msgstr[2] "Система будет автоматически перезапущена через %d секунд."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:112
|
||||
#| msgid "Install Updates & Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Перезапустить и установить обновления"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:114
|
||||
#, c-format
|
||||
#| msgid "The system will restart automatically in %d second."
|
||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] "Система автоматически перезапустится и установит обновления через %d секунду."
|
||||
@ -1027,7 +1034,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:619
|
||||
#: ../js/ui/status/keyboard.js:334
|
||||
#: ../js/ui/status/keyboard.js:333
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
|
||||
@ -1105,11 +1112,11 @@ msgstr "Меню панели"
|
||||
msgid "No Messages"
|
||||
msgstr "Нет сообщений"
|
||||
|
||||
#: ../js/ui/messageTray.js:1812
|
||||
#: ../js/ui/messageTray.js:1813
|
||||
msgid "Message Tray"
|
||||
msgstr "Панель сообщений"
|
||||
|
||||
#: ../js/ui/messageTray.js:2786
|
||||
#: ../js/ui/messageTray.js:2788
|
||||
msgid "System Information"
|
||||
msgstr "Системная информация"
|
||||
|
||||
@ -1144,22 +1151,17 @@ msgstr "Обзор"
|
||||
msgid "Type to search…"
|
||||
msgstr "Найти…"
|
||||
|
||||
#: ../js/ui/panel.js:516
|
||||
#: ../js/ui/panel.js:518
|
||||
msgid "Quit"
|
||||
msgstr "Закрыть"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:568
|
||||
#: ../js/ui/panel.js:570
|
||||
msgid "Activities"
|
||||
msgstr "Обзор"
|
||||
|
||||
#: ../js/ui/panel.js:805
|
||||
#| msgid "Settings"
|
||||
msgid "Settings Menu"
|
||||
msgstr "Меню параметров"
|
||||
|
||||
#: ../js/ui/panel.js:892
|
||||
#: ../js/ui/panel.js:903
|
||||
msgid "Top Bar"
|
||||
msgstr "Верхняя панель"
|
||||
|
||||
@ -1168,7 +1170,7 @@ msgstr "Верхняя панель"
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:226
|
||||
#: ../js/ui/popupMenu.js:233
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1199,7 +1201,7 @@ msgstr[2] "%d новых уведомлений"
|
||||
msgid "Lock"
|
||||
msgstr "Заблокировать"
|
||||
|
||||
#: ../js/ui/screenShield.js:703
|
||||
#: ../js/ui/screenShield.js:704
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "GNOME необходимо заблокировать экран"
|
||||
|
||||
@ -1210,13 +1212,13 @@ msgstr "GNOME необходимо заблокировать экран"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:830
|
||||
#: ../js/ui/screenShield.js:1296
|
||||
#: ../js/ui/screenShield.js:831
|
||||
#: ../js/ui/screenShield.js:1297
|
||||
msgid "Unable to lock"
|
||||
msgstr "Не удалось заблокировать"
|
||||
|
||||
#: ../js/ui/screenShield.js:831
|
||||
#: ../js/ui/screenShield.js:1297
|
||||
#: ../js/ui/screenShield.js:832
|
||||
#: ../js/ui/screenShield.js:1298
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блокировке помешало приложение"
|
||||
|
||||
@ -1299,11 +1301,11 @@ msgstr "Крупный текст"
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:28
|
||||
#: ../js/ui/status/bluetooth.js:62
|
||||
#: ../js/ui/status/bluetooth.js:99
|
||||
#: ../js/ui/status/bluetooth.js:127
|
||||
#: ../js/ui/status/bluetooth.js:163
|
||||
#: ../js/ui/status/bluetooth.js:194
|
||||
#: ../js/ui/status/bluetooth.js:63
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#: ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:164
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1318,7 +1320,7 @@ msgstr "Выключить"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Настроить Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:57
|
||||
#: ../js/ui/status/bluetooth.js:58
|
||||
#, c-format
|
||||
msgid "%d Connected Device"
|
||||
msgid_plural "%d Connected Devices"
|
||||
@ -1326,74 +1328,74 @@ msgstr[0] "Подключено %d устройство"
|
||||
msgstr[1] "Подключено %d устройства"
|
||||
msgstr[2] "Подключено %d устройств"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:100
|
||||
#: ../js/ui/status/bluetooth.js:128
|
||||
#: ../js/ui/status/bluetooth.js:101
|
||||
#: ../js/ui/status/bluetooth.js:129
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Запрос авторизации от %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:106
|
||||
#: ../js/ui/status/bluetooth.js:171
|
||||
#: ../js/ui/status/bluetooth.js:202
|
||||
#: ../js/ui/status/bluetooth.js:107
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Устройство %s пытается выполнить сопряжение с этим компьютером"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:108
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
msgid "Allow"
|
||||
msgstr "Разрешить"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:109
|
||||
#: ../js/ui/status/bluetooth.js:110
|
||||
msgid "Deny"
|
||||
msgstr "Отклонить"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:134
|
||||
#: ../js/ui/status/bluetooth.js:135
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Устройство %s пытается получить доступ к службе «%s»"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:136
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
msgid "Always grant access"
|
||||
msgstr "Всегда предоставлять доступ"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:137
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
msgid "Grant this time only"
|
||||
msgstr "Предоставить единовременно"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:138
|
||||
#: ../js/ui/status/bluetooth.js:139
|
||||
msgid "Reject"
|
||||
msgstr "Отклонить"
|
||||
|
||||
#. Translators: argument is the device short name
|
||||
#: ../js/ui/status/bluetooth.js:165
|
||||
#: ../js/ui/status/bluetooth.js:166
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Подтверждение на сопряжение с %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:172
|
||||
#: ../js/ui/status/bluetooth.js:173
|
||||
#, c-format
|
||||
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
msgstr "Подтвердите, совпадает ли ключ доступа «%06d» с кодом на устройстве."
|
||||
|
||||
#. Translators: this is the verb, not the noun
|
||||
#: ../js/ui/status/bluetooth.js:175
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
msgid "Matches"
|
||||
msgstr "Совпадает"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:176
|
||||
#: ../js/ui/status/bluetooth.js:177
|
||||
msgid "Does not match"
|
||||
msgstr "Не совпадает"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:195
|
||||
#: ../js/ui/status/bluetooth.js:196
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Запрос на сопряжение c %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:203
|
||||
#: ../js/ui/status/bluetooth.js:204
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Введите PIN-код указанный на устройстве."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/bluetooth.js:221
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
@ -1401,7 +1403,7 @@ msgstr "OK"
|
||||
msgid "Brightness"
|
||||
msgstr "Яркость"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:404
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Показать раскладку клавиатуры"
|
||||
|
||||
@ -1467,7 +1469,6 @@ msgid "Select a network"
|
||||
msgstr "Выберите сеть"
|
||||
|
||||
#: ../js/ui/status/network.js:680
|
||||
#| msgid "Wi-Fi Networks"
|
||||
msgid "No Networks"
|
||||
msgstr "Сети отсутствуют"
|
||||
|
||||
@ -1483,15 +1484,15 @@ msgstr "Включить"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1306
|
||||
#: ../js/ui/status/network.js:1307
|
||||
msgid "Network Manager"
|
||||
msgstr "Диспетчер сети"
|
||||
|
||||
#: ../js/ui/status/network.js:1345
|
||||
#: ../js/ui/status/network.js:1346
|
||||
msgid "Connection failed"
|
||||
msgstr "Сбой подключения"
|
||||
|
||||
#: ../js/ui/status/network.js:1346
|
||||
#: ../js/ui/status/network.js:1347
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Не удалось активировать сетевое подключение"
|
||||
|
||||
@ -1518,14 +1519,12 @@ msgstr "Выполняется подсчёт…"
|
||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||
#: ../js/ui/status/power.js:77
|
||||
#, c-format
|
||||
#| msgid "%d\\u2236%d Remaining (%d%%)"
|
||||
msgid "%d\\u2236%02d Remaining (%d%%)"
|
||||
msgstr "Осталось %d\\u2236%02d (%d%%)"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||
#: ../js/ui/status/power.js:82
|
||||
#, c-format
|
||||
#| msgid "%d\\u2236%d Until Full (%d%%)"
|
||||
msgid "%d\\u2236%02d Until Full (%d%%)"
|
||||
msgstr "До полного заряда %d\\u2236%02d (%d%%)"
|
||||
|
||||
@ -1537,7 +1536,6 @@ msgid "Airplane Mode"
|
||||
msgstr "Режим перелёта"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:45
|
||||
#| msgid "Open"
|
||||
msgid "On"
|
||||
msgstr "Включено"
|
||||
|
||||
@ -1581,11 +1579,11 @@ msgstr "Войти от имени другого пользователя"
|
||||
msgid "Unlock Window"
|
||||
msgstr "Разблокировать окно"
|
||||
|
||||
#: ../js/ui/viewSelector.js:100
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
msgid "Applications"
|
||||
msgstr "Приложения"
|
||||
|
||||
#: ../js/ui/viewSelector.js:104
|
||||
#: ../js/ui/viewSelector.js:108
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
@ -1616,7 +1614,6 @@ msgstr "Хотите сохранить эти параметры дисплея
|
||||
#. to avoid ellipsizing the labels.
|
||||
#.
|
||||
#: ../js/ui/windowManager.js:75
|
||||
#| msgid "Power Settings"
|
||||
msgid "Revert Settings"
|
||||
msgstr "Вернуть параметры"
|
||||
|
||||
@ -1693,6 +1690,9 @@ msgstr "Пароль не может быть пустым"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Аутентификация отклонена пользователем"
|
||||
|
||||
#~ msgid "Settings Menu"
|
||||
#~ msgstr "Меню параметров"
|
||||
|
||||
#~ msgid "Screenshots"
|
||||
#~ msgstr "Снимки экрана"
|
||||
|
||||
|
952
po/zh_HK.po
952
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
952
po/zh_TW.po
952
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,4 @@
|
||||
st_cflags = \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||
-I$(top_srcdir)/src \
|
||||
-DPREFIX=\""$(prefix)"\" \
|
||||
-DLIBDIR=\""$(libdir)"\" \
|
||||
|
@ -68,9 +68,6 @@ include Makefile-calendar-server.am
|
||||
include Makefile-hotplug-sniffer.am
|
||||
|
||||
gnome_shell_cflags = \
|
||||
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||
$(GNOME_SHELL_CFLAGS) \
|
||||
-I$(srcdir)/tray \
|
||||
-DVERSION=\"$(VERSION)\" \
|
||||
|
@ -28,11 +28,14 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <clutter/clutter.h>
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#include <gjs/gjs.h>
|
||||
#include <meta/display.h>
|
||||
#include <meta/meta-plugin.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
#include "shell-global-private.h"
|
||||
#include "shell-perf-log.h"
|
||||
@ -341,8 +344,13 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (meta_is_wayland_compositor ())
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Pass the event to shell-global
|
||||
* Pass the event to shell-global for XDND
|
||||
*/
|
||||
if (_shell_global_check_xdnd_event (shell_plugin->global, xev))
|
||||
return TRUE;
|
||||
|
@ -12,9 +12,9 @@ G_BEGIN_DECLS
|
||||
|
||||
ShellApp* _shell_app_new_for_window (MetaWindow *window);
|
||||
|
||||
ShellApp* _shell_app_new (GMenuTreeEntry *entry);
|
||||
ShellApp* _shell_app_new (GDesktopAppInfo *info);
|
||||
|
||||
void _shell_app_set_entry (ShellApp *app, GMenuTreeEntry *entry);
|
||||
void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info);
|
||||
|
||||
void _shell_app_handle_startup_sequence (ShellApp *app, SnStartupSequence *sequence);
|
||||
|
||||
|
@ -38,18 +38,12 @@ enum {
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
struct _ShellAppSystemPrivate {
|
||||
GMenuTree *apps_tree;
|
||||
|
||||
GHashTable *running_apps;
|
||||
GHashTable *visible_id_to_app;
|
||||
GHashTable *id_to_app;
|
||||
GHashTable *startup_wm_class_to_app;
|
||||
|
||||
GSList *known_vendor_prefixes;
|
||||
GHashTable *startup_wm_class_to_id;
|
||||
};
|
||||
|
||||
static void shell_app_system_finalize (GObject *object);
|
||||
static void on_apps_tree_changed_cb (GMenuTree *tree, gpointer user_data);
|
||||
|
||||
G_DEFINE_TYPE(ShellAppSystem, shell_app_system, G_TYPE_OBJECT);
|
||||
|
||||
@ -77,10 +71,45 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
||||
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
scan_startup_wm_class_to_id (ShellAppSystem *self)
|
||||
{
|
||||
ShellAppSystemPrivate *priv = self->priv;
|
||||
GList *apps, *l;
|
||||
|
||||
g_hash_table_remove_all (priv->startup_wm_class_to_id);
|
||||
|
||||
apps = g_app_info_get_all ();
|
||||
for (l = apps; l != NULL; l = l->next)
|
||||
{
|
||||
GAppInfo *info = l->data;
|
||||
const char *startup_wm_class, *id;
|
||||
|
||||
id = g_app_info_get_id (info);
|
||||
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
|
||||
if (startup_wm_class != NULL)
|
||||
g_hash_table_insert (priv->startup_wm_class_to_id, (char *) startup_wm_class, (char *) id);
|
||||
}
|
||||
|
||||
g_list_free_full (apps, g_object_unref);
|
||||
}
|
||||
|
||||
static void
|
||||
installed_changed (GAppInfoMonitor *monitor,
|
||||
gpointer user_data)
|
||||
{
|
||||
ShellAppSystem *self = user_data;
|
||||
|
||||
scan_startup_wm_class_to_id (self);
|
||||
|
||||
g_signal_emit (self, signals[INSTALLED_CHANGED], 0, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_app_system_init (ShellAppSystem *self)
|
||||
{
|
||||
ShellAppSystemPrivate *priv;
|
||||
GAppInfoMonitor *monitor;
|
||||
|
||||
self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
SHELL_TYPE_APP_SYSTEM,
|
||||
@ -91,19 +120,11 @@ shell_app_system_init (ShellAppSystem *self)
|
||||
NULL,
|
||||
(GDestroyNotify)g_object_unref);
|
||||
|
||||
/* All the objects in this hash table are owned by id_to_app */
|
||||
priv->visible_id_to_app = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
priv->startup_wm_class_to_id = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
priv->startup_wm_class_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
NULL,
|
||||
(GDestroyNotify)g_object_unref);
|
||||
|
||||
/* We want to track NoDisplay apps, so we add INCLUDE_NODISPLAY. We'll
|
||||
* filter NoDisplay apps out when showing them to the user. */
|
||||
priv->apps_tree = gmenu_tree_new ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
|
||||
g_signal_connect (priv->apps_tree, "changed", G_CALLBACK (on_apps_tree_changed_cb), self);
|
||||
|
||||
on_apps_tree_changed_cb (priv->apps_tree, self);
|
||||
monitor = g_app_info_monitor_get ();
|
||||
g_signal_connect (monitor, "changed", G_CALLBACK (installed_changed), self);
|
||||
installed_changed (monitor, self);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -112,313 +133,13 @@ shell_app_system_finalize (GObject *object)
|
||||
ShellAppSystem *self = SHELL_APP_SYSTEM (object);
|
||||
ShellAppSystemPrivate *priv = self->priv;
|
||||
|
||||
g_object_unref (priv->apps_tree);
|
||||
|
||||
g_hash_table_destroy (priv->running_apps);
|
||||
g_hash_table_destroy (priv->id_to_app);
|
||||
g_hash_table_destroy (priv->visible_id_to_app);
|
||||
g_hash_table_destroy (priv->startup_wm_class_to_app);
|
||||
|
||||
g_slist_free_full (priv->known_vendor_prefixes, g_free);
|
||||
priv->known_vendor_prefixes = NULL;
|
||||
g_hash_table_destroy (priv->startup_wm_class_to_id);
|
||||
|
||||
G_OBJECT_CLASS (shell_app_system_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static char *
|
||||
get_prefix_for_entry (GMenuTreeEntry *entry)
|
||||
{
|
||||
char *prefix = NULL, *file_prefix = NULL;
|
||||
const char *id;
|
||||
GFile *file;
|
||||
char *name;
|
||||
int i = 0;
|
||||
|
||||
id = gmenu_tree_entry_get_desktop_file_id (entry);
|
||||
file = g_file_new_for_path (gmenu_tree_entry_get_desktop_file_path (entry));
|
||||
name = g_file_get_basename (file);
|
||||
|
||||
if (!name)
|
||||
{
|
||||
g_object_unref (file);
|
||||
return NULL;
|
||||
}
|
||||
for (i = 0; vendor_prefixes[i]; i++)
|
||||
{
|
||||
if (g_str_has_prefix (name, vendor_prefixes[i]))
|
||||
{
|
||||
file_prefix = g_strdup (vendor_prefixes[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
while (strcmp (name, id) != 0)
|
||||
{
|
||||
char *t;
|
||||
char *pname;
|
||||
GFile *parent = g_file_get_parent (file);
|
||||
|
||||
if (!parent)
|
||||
{
|
||||
g_warn_if_reached ();
|
||||
break;
|
||||
}
|
||||
|
||||
pname = g_file_get_basename (parent);
|
||||
if (!pname)
|
||||
{
|
||||
g_object_unref (parent);
|
||||
break;
|
||||
}
|
||||
if (!g_strstr_len (id, -1, pname))
|
||||
{
|
||||
/* handle <LegacyDir prefix="..."> */
|
||||
char *t;
|
||||
size_t name_len = strlen (name);
|
||||
size_t id_len = strlen (id);
|
||||
char *t_id = g_strdup (id);
|
||||
|
||||
t_id[id_len - name_len] = '\0';
|
||||
t = g_strdup(t_id);
|
||||
g_free (prefix);
|
||||
g_free (t_id);
|
||||
g_free (name);
|
||||
name = g_strdup (id);
|
||||
prefix = t;
|
||||
|
||||
g_object_unref (file);
|
||||
file = parent;
|
||||
g_free (pname);
|
||||
g_free (file_prefix);
|
||||
file_prefix = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
t = g_strconcat (pname, "-", name, NULL);
|
||||
g_free (name);
|
||||
name = t;
|
||||
|
||||
t = g_strconcat (pname, "-", prefix, NULL);
|
||||
g_free (prefix);
|
||||
prefix = t;
|
||||
|
||||
g_object_unref (file);
|
||||
file = parent;
|
||||
g_free (pname);
|
||||
}
|
||||
|
||||
if (file)
|
||||
g_object_unref (file);
|
||||
|
||||
if (strcmp (name, id) == 0)
|
||||
{
|
||||
g_free (name);
|
||||
if (file_prefix && !prefix)
|
||||
return file_prefix;
|
||||
if (file_prefix)
|
||||
{
|
||||
char *t = g_strconcat (prefix, "-", file_prefix, NULL);
|
||||
g_free (prefix);
|
||||
g_free (file_prefix);
|
||||
prefix = t;
|
||||
}
|
||||
return prefix;
|
||||
}
|
||||
|
||||
g_free (name);
|
||||
g_free (prefix);
|
||||
g_free (file_prefix);
|
||||
g_return_val_if_reached (NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
get_flattened_entries_recurse (GMenuTreeDirectory *dir,
|
||||
GHashTable *entry_set)
|
||||
{
|
||||
GMenuTreeIter *iter = gmenu_tree_directory_iter (dir);
|
||||
GMenuTreeItemType next_type;
|
||||
|
||||
while ((next_type = gmenu_tree_iter_next (iter)) != GMENU_TREE_ITEM_INVALID)
|
||||
{
|
||||
gpointer item = NULL;
|
||||
|
||||
switch (next_type)
|
||||
{
|
||||
case GMENU_TREE_ITEM_ENTRY:
|
||||
{
|
||||
GMenuTreeEntry *entry;
|
||||
item = entry = gmenu_tree_iter_get_entry (iter);
|
||||
/* Key is owned by entry */
|
||||
g_hash_table_replace (entry_set,
|
||||
(char*)gmenu_tree_entry_get_desktop_file_id (entry),
|
||||
gmenu_tree_item_ref (entry));
|
||||
}
|
||||
break;
|
||||
case GMENU_TREE_ITEM_DIRECTORY:
|
||||
{
|
||||
item = gmenu_tree_iter_get_directory (iter);
|
||||
get_flattened_entries_recurse ((GMenuTreeDirectory*)item, entry_set);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (item != NULL)
|
||||
gmenu_tree_item_unref (item);
|
||||
}
|
||||
|
||||
gmenu_tree_iter_unref (iter);
|
||||
}
|
||||
|
||||
static GHashTable *
|
||||
get_flattened_entries_from_tree (GMenuTree *tree)
|
||||
{
|
||||
GHashTable *table;
|
||||
GMenuTreeDirectory *root;
|
||||
|
||||
table = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
(GDestroyNotify) NULL,
|
||||
(GDestroyNotify) gmenu_tree_item_unref);
|
||||
|
||||
root = gmenu_tree_get_root_directory (tree);
|
||||
|
||||
if (root != NULL)
|
||||
get_flattened_entries_recurse (root, table);
|
||||
|
||||
gmenu_tree_item_unref (root);
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
static void
|
||||
on_apps_tree_changed_cb (GMenuTree *tree,
|
||||
gpointer user_data)
|
||||
{
|
||||
ShellAppSystem *self = SHELL_APP_SYSTEM (user_data);
|
||||
GError *error = NULL;
|
||||
GHashTable *new_apps;
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
|
||||
g_assert (tree == self->priv->apps_tree);
|
||||
|
||||
g_hash_table_remove_all (self->priv->visible_id_to_app);
|
||||
g_slist_free_full (self->priv->known_vendor_prefixes, g_free);
|
||||
self->priv->known_vendor_prefixes = NULL;
|
||||
|
||||
if (!gmenu_tree_load_sync (self->priv->apps_tree, &error))
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
g_warning ("Failed to load apps: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Failed to load apps");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
new_apps = get_flattened_entries_from_tree (self->priv->apps_tree);
|
||||
g_hash_table_iter_init (&iter, new_apps);
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
{
|
||||
const char *id = key;
|
||||
GMenuTreeEntry *entry = value;
|
||||
GMenuTreeEntry *old_entry;
|
||||
char *prefix;
|
||||
ShellApp *app;
|
||||
GDesktopAppInfo *info;
|
||||
const char *startup_wm_class;
|
||||
|
||||
prefix = get_prefix_for_entry (entry);
|
||||
|
||||
if (prefix != NULL
|
||||
&& !g_slist_find_custom (self->priv->known_vendor_prefixes, prefix,
|
||||
(GCompareFunc)g_strcmp0))
|
||||
self->priv->known_vendor_prefixes = g_slist_append (self->priv->known_vendor_prefixes,
|
||||
prefix);
|
||||
else
|
||||
g_free (prefix);
|
||||
|
||||
app = g_hash_table_lookup (self->priv->id_to_app, id);
|
||||
if (app != NULL)
|
||||
{
|
||||
/* We hold a reference to the original entry temporarily,
|
||||
* because otherwise the hash table would be referencing
|
||||
* potentially free'd memory until we replace it below with
|
||||
* the new data.
|
||||
*/
|
||||
old_entry = shell_app_get_tree_entry (app);
|
||||
gmenu_tree_item_ref (old_entry);
|
||||
_shell_app_set_entry (app, entry);
|
||||
g_object_ref (app); /* Extra ref, removed in _replace below */
|
||||
}
|
||||
else
|
||||
{
|
||||
old_entry = NULL;
|
||||
app = _shell_app_new (entry);
|
||||
}
|
||||
/* Note that "id" is owned by app->entry. Since we're always
|
||||
* setting a new entry, even if the app already exists in the
|
||||
* hash table we need to replace the key so that the new id
|
||||
* string is pointed to.
|
||||
*/
|
||||
g_hash_table_replace (self->priv->id_to_app, (char*)id, app);
|
||||
if (!gmenu_tree_entry_get_is_nodisplay_recurse (entry))
|
||||
g_hash_table_replace (self->priv->visible_id_to_app, (char*)id, app);
|
||||
|
||||
if (old_entry)
|
||||
{
|
||||
GDesktopAppInfo *old_info;
|
||||
const gchar *old_startup_wm_class;
|
||||
|
||||
old_info = gmenu_tree_entry_get_app_info (old_entry);
|
||||
old_startup_wm_class = g_desktop_app_info_get_startup_wm_class (old_info);
|
||||
|
||||
if (old_startup_wm_class)
|
||||
g_hash_table_remove (self->priv->startup_wm_class_to_app, old_startup_wm_class);
|
||||
}
|
||||
|
||||
info = gmenu_tree_entry_get_app_info (entry);
|
||||
startup_wm_class = g_desktop_app_info_get_startup_wm_class (info);
|
||||
if (startup_wm_class)
|
||||
g_hash_table_replace (self->priv->startup_wm_class_to_app,
|
||||
(char*)startup_wm_class, g_object_ref (app));
|
||||
|
||||
if (old_entry)
|
||||
gmenu_tree_item_unref (old_entry);
|
||||
}
|
||||
/* Now iterate over the apps again; we need to unreference any apps
|
||||
* which have been removed. The JS code may still be holding a
|
||||
* reference; that's fine.
|
||||
*/
|
||||
g_hash_table_iter_init (&iter, self->priv->id_to_app);
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
{
|
||||
const char *id = key;
|
||||
|
||||
if (!g_hash_table_lookup (new_apps, id))
|
||||
g_hash_table_iter_remove (&iter);
|
||||
}
|
||||
|
||||
g_hash_table_destroy (new_apps);
|
||||
|
||||
g_signal_emit (self, signals[INSTALLED_CHANGED], 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_get_tree:
|
||||
*
|
||||
* Return Value: (transfer none): The #GMenuTree for apps
|
||||
*/
|
||||
GMenuTree *
|
||||
shell_app_system_get_tree (ShellAppSystem *self)
|
||||
{
|
||||
return self->priv->apps_tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_get_default:
|
||||
*
|
||||
@ -446,61 +167,20 @@ ShellApp *
|
||||
shell_app_system_lookup_app (ShellAppSystem *self,
|
||||
const char *id)
|
||||
{
|
||||
return g_hash_table_lookup (self->priv->id_to_app, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_lookup_app_by_tree_entry:
|
||||
* @system: a #ShellAppSystem
|
||||
* @entry: a #GMenuTreeEntry
|
||||
*
|
||||
* Find a #ShellApp corresponding to a #GMenuTreeEntry.
|
||||
*
|
||||
* Return value: (transfer none): The #ShellApp for @entry, or %NULL if none
|
||||
*/
|
||||
ShellApp *
|
||||
shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *self,
|
||||
GMenuTreeEntry *entry)
|
||||
{
|
||||
/* If we looked up directly in ->entry_to_app, we'd lose the
|
||||
* override of running apps. Thus, indirect through the id.
|
||||
*/
|
||||
return shell_app_system_lookup_app (self, gmenu_tree_entry_get_desktop_file_id (entry));
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_lookup_app_for_path:
|
||||
* @system: a #ShellAppSystem
|
||||
* @desktop_path: (type utf8): UTF-8 encoded absolute file name
|
||||
*
|
||||
* Find or create a #ShellApp corresponding to a given absolute file
|
||||
* name which must be in the standard paths (XDG_DATA_DIRS). For
|
||||
* files outside the datadirs, this function returns %NULL.
|
||||
*
|
||||
* Return value: (transfer none): The #ShellApp for id, or %NULL if none
|
||||
*/
|
||||
ShellApp *
|
||||
shell_app_system_lookup_app_for_path (ShellAppSystem *system,
|
||||
const char *desktop_path)
|
||||
{
|
||||
const char *basename;
|
||||
const char *app_path;
|
||||
ShellAppSystemPrivate *priv = self->priv;
|
||||
ShellApp *app;
|
||||
GDesktopAppInfo *info;
|
||||
|
||||
basename = g_strrstr (desktop_path, "/");
|
||||
if (basename)
|
||||
basename += 1;
|
||||
else
|
||||
basename = desktop_path;
|
||||
app = g_hash_table_lookup (priv->id_to_app, id);
|
||||
if (app)
|
||||
return app;
|
||||
|
||||
app = shell_app_system_lookup_app (system, basename);
|
||||
if (!app)
|
||||
return NULL;
|
||||
|
||||
app_path = g_desktop_app_info_get_filename (shell_app_get_app_info (app));
|
||||
if (strcmp (desktop_path, app_path) != 0)
|
||||
info = g_desktop_app_info_new (id);
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
||||
app = _shell_app_new (info);
|
||||
g_hash_table_insert (priv->id_to_app, (char *) id, app);
|
||||
return app;
|
||||
}
|
||||
|
||||
@ -520,15 +200,15 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
||||
const char *name)
|
||||
{
|
||||
ShellApp *result;
|
||||
GSList *prefix;
|
||||
const char *const *prefix;
|
||||
|
||||
result = shell_app_system_lookup_app (system, name);
|
||||
if (result != NULL)
|
||||
return result;
|
||||
|
||||
for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
|
||||
for (prefix = vendor_prefixes; *prefix != NULL; prefix++)
|
||||
{
|
||||
char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
|
||||
char *tmpid = g_strconcat (*prefix, name, NULL);
|
||||
result = shell_app_system_lookup_app (system, tmpid);
|
||||
g_free (tmpid);
|
||||
if (result != NULL)
|
||||
@ -603,10 +283,16 @@ ShellApp *
|
||||
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
|
||||
const char *wmclass)
|
||||
{
|
||||
const char *id;
|
||||
|
||||
if (wmclass == NULL)
|
||||
return NULL;
|
||||
|
||||
return g_hash_table_lookup (system->priv->startup_wm_class_to_app, wmclass);
|
||||
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass);
|
||||
if (id == NULL)
|
||||
return NULL;
|
||||
|
||||
return shell_app_system_lookup_app (system, id);
|
||||
}
|
||||
|
||||
void
|
||||
@ -618,6 +304,7 @@ _shell_app_system_notify_app_state_changed (ShellAppSystem *self,
|
||||
switch (state)
|
||||
{
|
||||
case SHELL_APP_STATE_RUNNING:
|
||||
case SHELL_APP_STATE_BUSY:
|
||||
g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL);
|
||||
break;
|
||||
case SHELL_APP_STATE_STARTING:
|
||||
@ -660,136 +347,3 @@ shell_app_system_get_running (ShellAppSystem *self)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static gint
|
||||
compare_apps_by_usage (gconstpointer a,
|
||||
gconstpointer b,
|
||||
gpointer data)
|
||||
{
|
||||
ShellAppUsage *usage = shell_app_usage_get_default ();
|
||||
|
||||
ShellApp *app_a = (ShellApp*)a;
|
||||
ShellApp *app_b = (ShellApp*)b;
|
||||
|
||||
return shell_app_usage_compare (usage, "", app_a, app_b);
|
||||
}
|
||||
|
||||
static GSList *
|
||||
sort_and_concat_results (ShellAppSystem *system,
|
||||
GSList *prefix_matches,
|
||||
GSList *substring_matches)
|
||||
{
|
||||
prefix_matches = g_slist_sort_with_data (prefix_matches,
|
||||
compare_apps_by_usage,
|
||||
system);
|
||||
substring_matches = g_slist_sort_with_data (substring_matches,
|
||||
compare_apps_by_usage,
|
||||
system);
|
||||
return g_slist_concat (prefix_matches, substring_matches);
|
||||
}
|
||||
|
||||
/**
|
||||
* normalize_terms:
|
||||
* @terms: (element-type utf8): Input search terms
|
||||
*
|
||||
* Returns: (element-type utf8) (transfer full): Unicode-normalized and lowercased terms
|
||||
*/
|
||||
static GSList *
|
||||
normalize_terms (GSList *terms)
|
||||
{
|
||||
GSList *normalized_terms = NULL;
|
||||
GSList *iter;
|
||||
for (iter = terms; iter; iter = iter->next)
|
||||
{
|
||||
const char *term = iter->data;
|
||||
normalized_terms = g_slist_prepend (normalized_terms,
|
||||
shell_util_normalize_casefold_and_unaccent (term));
|
||||
}
|
||||
return normalized_terms;
|
||||
}
|
||||
|
||||
static GSList *
|
||||
search_tree (ShellAppSystem *self,
|
||||
GSList *terms,
|
||||
GHashTable *apps)
|
||||
{
|
||||
GSList *prefix_results = NULL;
|
||||
GSList *substring_results = NULL;
|
||||
GSList *normalized_terms;
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
|
||||
normalized_terms = normalize_terms (terms);
|
||||
|
||||
g_hash_table_iter_init (&iter, apps);
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
{
|
||||
ShellApp *app = value;
|
||||
_shell_app_do_match (app, normalized_terms,
|
||||
&prefix_results,
|
||||
&substring_results);
|
||||
}
|
||||
g_slist_free_full (normalized_terms, g_free);
|
||||
|
||||
return sort_and_concat_results (self, prefix_results, substring_results);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_initial_search:
|
||||
* @system: A #ShellAppSystem
|
||||
* @terms: (element-type utf8): List of terms, logical AND
|
||||
*
|
||||
* Search through applications for the given search terms.
|
||||
*
|
||||
* Returns: (transfer container) (element-type ShellApp): List of applications
|
||||
*/
|
||||
GSList *
|
||||
shell_app_system_initial_search (ShellAppSystem *self,
|
||||
GSList *terms)
|
||||
{
|
||||
return search_tree (self, terms, self->priv->visible_id_to_app);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_subsearch:
|
||||
* @system: A #ShellAppSystem
|
||||
* @previous_results: (element-type ShellApp): List of previous results
|
||||
* @terms: (element-type utf8): List of terms, logical AND
|
||||
*
|
||||
* Search through a previous result set; for more information, see
|
||||
* js/ui/search.js. Note the value of @prefs must be
|
||||
* the same as passed to shell_app_system_initial_search(). Note that returned
|
||||
* strings are only valid until a return to the main loop.
|
||||
*
|
||||
* Returns: (transfer container) (element-type ShellApp): List of application identifiers
|
||||
*/
|
||||
GSList *
|
||||
shell_app_system_subsearch (ShellAppSystem *system,
|
||||
GSList *previous_results,
|
||||
GSList *terms)
|
||||
{
|
||||
GSList *iter;
|
||||
GSList *prefix_results = NULL;
|
||||
GSList *substring_results = NULL;
|
||||
GSList *normalized_terms = normalize_terms (terms);
|
||||
|
||||
previous_results = g_slist_reverse (previous_results);
|
||||
|
||||
for (iter = previous_results; iter; iter = iter->next)
|
||||
{
|
||||
ShellApp *app = iter->data;
|
||||
|
||||
_shell_app_do_match (app, normalized_terms,
|
||||
&prefix_results,
|
||||
&substring_results);
|
||||
}
|
||||
g_slist_free_full (normalized_terms, g_free);
|
||||
|
||||
/* Note that a shorter term might have matched as a prefix, but
|
||||
when extended only as a substring, so we have to redo the
|
||||
sort rather than reusing the existing ordering */
|
||||
return sort_and_concat_results (system, prefix_results, substring_results);
|
||||
}
|
||||
|
||||
|
@ -5,8 +5,6 @@
|
||||
#include <gio/gio.h>
|
||||
#include <clutter/clutter.h>
|
||||
#include <meta/window.h>
|
||||
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
|
||||
#include <gmenu-tree.h>
|
||||
|
||||
#include "shell-app.h"
|
||||
|
||||
@ -39,14 +37,8 @@ struct _ShellAppSystemClass
|
||||
GType shell_app_system_get_type (void) G_GNUC_CONST;
|
||||
ShellAppSystem *shell_app_system_get_default (void);
|
||||
|
||||
GMenuTree *shell_app_system_get_tree (ShellAppSystem *system);
|
||||
|
||||
ShellApp *shell_app_system_lookup_app (ShellAppSystem *system,
|
||||
const char *id);
|
||||
ShellApp *shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *system,
|
||||
GMenuTreeEntry *entry);
|
||||
ShellApp *shell_app_system_lookup_app_for_path (ShellAppSystem *system,
|
||||
const char *desktop_path);
|
||||
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
||||
const char *id);
|
||||
|
||||
@ -57,10 +49,4 @@ ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *s
|
||||
|
||||
GSList *shell_app_system_get_running (ShellAppSystem *self);
|
||||
|
||||
GSList *shell_app_system_initial_search (ShellAppSystem *system,
|
||||
GSList *terms);
|
||||
GSList *shell_app_system_subsearch (ShellAppSystem *system,
|
||||
GSList *previous_results,
|
||||
GSList *terms);
|
||||
|
||||
#endif /* __SHELL_APP_SYSTEM_H__ */
|
||||
|
@ -527,19 +527,19 @@ shell_app_usage_get_most_used (ShellAppUsage *self,
|
||||
* shell_app_usage_compare:
|
||||
* @self: the usage instance to request
|
||||
* @context: Activity identifier
|
||||
* @app_a: First app
|
||||
* @app_b: Second app
|
||||
* @id_a: ID of first app
|
||||
* @id_b: ID of second app
|
||||
*
|
||||
* Compare @app_a and @app_b based on frequency of use.
|
||||
* Compare @id_a and @id_b based on frequency of use.
|
||||
*
|
||||
* Returns: -1 if @app_a ranks higher than @app_b, 1 if @app_b ranks higher
|
||||
* than @app_a, and 0 if both rank equally.
|
||||
* Returns: -1 if @id_a ranks higher than @id_b, 1 if @id_b ranks higher
|
||||
* than @id_a, and 0 if both rank equally.
|
||||
*/
|
||||
int
|
||||
shell_app_usage_compare (ShellAppUsage *self,
|
||||
const char *context,
|
||||
ShellApp *app_a,
|
||||
ShellApp *app_b)
|
||||
const char *id_a,
|
||||
const char *id_b)
|
||||
{
|
||||
GHashTable *usages;
|
||||
UsageData *usage_a, *usage_b;
|
||||
@ -548,8 +548,8 @@ shell_app_usage_compare (ShellAppUsage *self,
|
||||
if (usages == NULL)
|
||||
return 0;
|
||||
|
||||
usage_a = g_hash_table_lookup (usages, shell_app_get_id (app_a));
|
||||
usage_b = g_hash_table_lookup (usages, shell_app_get_id (app_b));
|
||||
usage_a = g_hash_table_lookup (usages, id_a);
|
||||
usage_b = g_hash_table_lookup (usages, id_b);
|
||||
|
||||
if (usage_a == NULL && usage_b == NULL)
|
||||
return 0;
|
||||
|
@ -31,8 +31,8 @@ GSList *shell_app_usage_get_most_used (ShellAppUsage *usage,
|
||||
const char *context);
|
||||
int shell_app_usage_compare (ShellAppUsage *self,
|
||||
const char *context,
|
||||
ShellApp *app_a,
|
||||
ShellApp *app_b);
|
||||
const char *id_a,
|
||||
const char *id_b);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
120
src/shell-app.c
120
src/shell-app.c
@ -53,7 +53,7 @@ typedef struct {
|
||||
* SECTION:shell-app
|
||||
* @short_description: Object representing an application
|
||||
*
|
||||
* This object wraps a #GMenuTreeEntry, providing methods and signals
|
||||
* This object wraps a #GDesktopAppInfo, providing methods and signals
|
||||
* primarily useful for running applications.
|
||||
*/
|
||||
struct _ShellApp
|
||||
@ -64,7 +64,7 @@ struct _ShellApp
|
||||
|
||||
ShellAppState state;
|
||||
|
||||
GMenuTreeEntry *entry; /* If NULL, this app is backed by one or more
|
||||
GDesktopAppInfo *info; /* If NULL, this app is backed by one or more
|
||||
* MetaWindow. For purposes of app title
|
||||
* etc., we use the first window added,
|
||||
* because it's most likely to be what we
|
||||
@ -137,15 +137,15 @@ shell_app_get_property (GObject *gobject,
|
||||
const char *
|
||||
shell_app_get_id (ShellApp *app)
|
||||
{
|
||||
if (app->entry)
|
||||
return gmenu_tree_entry_get_desktop_file_id (app->entry);
|
||||
if (app->info)
|
||||
return g_app_info_get_id (G_APP_INFO (app->info));
|
||||
return app->window_id_string;
|
||||
}
|
||||
|
||||
static MetaWindow *
|
||||
window_backed_app_get_window (ShellApp *app)
|
||||
{
|
||||
g_assert (app->entry == NULL);
|
||||
g_assert (app->info == NULL);
|
||||
g_assert (app->running_state);
|
||||
g_assert (app->running_state->windows);
|
||||
return app->running_state->windows->data;
|
||||
@ -194,10 +194,10 @@ shell_app_create_icon_texture (ShellApp *app,
|
||||
|
||||
ret = NULL;
|
||||
|
||||
if (app->entry == NULL)
|
||||
if (app->info == NULL)
|
||||
return window_backed_app_get_icon (app, size);
|
||||
|
||||
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
|
||||
icon = g_app_info_get_icon (G_APP_INFO (app->info));
|
||||
if (icon != NULL)
|
||||
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size);
|
||||
|
||||
@ -217,7 +217,7 @@ typedef struct {
|
||||
ClutterTextDirection direction;
|
||||
} CreateFadedIconData;
|
||||
|
||||
static CoglTexture *
|
||||
static CoglHandle
|
||||
shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
const char *key,
|
||||
void *datap,
|
||||
@ -227,7 +227,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
ShellApp *app;
|
||||
GdkPixbuf *pixbuf;
|
||||
int size;
|
||||
CoglTexture *texture;
|
||||
CoglHandle texture;
|
||||
gint width, height, rowstride;
|
||||
guint8 n_channels;
|
||||
gboolean have_alpha;
|
||||
@ -245,7 +245,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
|
||||
info = NULL;
|
||||
|
||||
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
|
||||
icon = g_app_info_get_icon (G_APP_INFO (app->info));
|
||||
if (icon != NULL)
|
||||
{
|
||||
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
|
||||
@ -263,13 +263,13 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
}
|
||||
|
||||
if (info == NULL)
|
||||
return NULL;
|
||||
return COGL_INVALID_HANDLE;
|
||||
|
||||
pixbuf = gtk_icon_info_load_icon (info, NULL);
|
||||
g_object_unref (info);
|
||||
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
return COGL_INVALID_HANDLE;
|
||||
|
||||
width = gdk_pixbuf_get_width (pixbuf);
|
||||
height = gdk_pixbuf_get_height (pixbuf);
|
||||
@ -338,7 +338,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
||||
ClutterActor *
|
||||
shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection direction)
|
||||
{
|
||||
CoglTexture *texture;
|
||||
CoglHandle texture;
|
||||
ClutterActor *result;
|
||||
char *cache_key;
|
||||
CreateFadedIconData data;
|
||||
@ -347,7 +347,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
|
||||
* property tracking bits, and this helps us visually distinguish
|
||||
* app-tracked from not.
|
||||
*/
|
||||
if (!app->entry)
|
||||
if (!app->info)
|
||||
return window_backed_app_get_icon (app, size);
|
||||
|
||||
/* Use icon: prefix so that we get evicted from the cache on
|
||||
@ -367,7 +367,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
|
||||
NULL);
|
||||
g_free (cache_key);
|
||||
|
||||
if (texture != NULL)
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
result = clutter_texture_new ();
|
||||
clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture);
|
||||
@ -384,8 +384,8 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
|
||||
const char *
|
||||
shell_app_get_name (ShellApp *app)
|
||||
{
|
||||
if (app->entry)
|
||||
return g_app_info_get_name (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
|
||||
if (app->info)
|
||||
return g_app_info_get_name (G_APP_INFO (app->info));
|
||||
else
|
||||
{
|
||||
MetaWindow *window = window_backed_app_get_window (app);
|
||||
@ -401,8 +401,8 @@ shell_app_get_name (ShellApp *app)
|
||||
const char *
|
||||
shell_app_get_description (ShellApp *app)
|
||||
{
|
||||
if (app->entry)
|
||||
return g_app_info_get_description (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
|
||||
if (app->info)
|
||||
return g_app_info_get_description (G_APP_INFO (app->info));
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
@ -417,7 +417,7 @@ shell_app_get_description (ShellApp *app)
|
||||
gboolean
|
||||
shell_app_is_window_backed (ShellApp *app)
|
||||
{
|
||||
return app->entry == NULL;
|
||||
return app->info == NULL;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
@ -653,6 +653,7 @@ shell_app_activate_full (ShellApp *app,
|
||||
case SHELL_APP_STATE_STARTING:
|
||||
break;
|
||||
case SHELL_APP_STATE_RUNNING:
|
||||
case SHELL_APP_STATE_BUSY:
|
||||
shell_app_activate_window (app, NULL, timestamp);
|
||||
break;
|
||||
}
|
||||
@ -669,7 +670,7 @@ void
|
||||
shell_app_open_new_window (ShellApp *app,
|
||||
int workspace)
|
||||
{
|
||||
g_return_if_fail (app->entry != NULL);
|
||||
g_return_if_fail (app->info != NULL);
|
||||
|
||||
/* Here we just always launch the application again, even if we know
|
||||
* it was already running. For most applications this
|
||||
@ -864,25 +865,24 @@ _shell_app_new_for_window (MetaWindow *window)
|
||||
}
|
||||
|
||||
ShellApp *
|
||||
_shell_app_new (GMenuTreeEntry *info)
|
||||
_shell_app_new (GDesktopAppInfo *info)
|
||||
{
|
||||
ShellApp *app;
|
||||
|
||||
app = g_object_new (SHELL_TYPE_APP, NULL);
|
||||
|
||||
_shell_app_set_entry (app, info);
|
||||
_shell_app_set_app_info (app, info);
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
void
|
||||
_shell_app_set_entry (ShellApp *app,
|
||||
GMenuTreeEntry *entry)
|
||||
_shell_app_set_app_info (ShellApp *app,
|
||||
GDesktopAppInfo *info)
|
||||
{
|
||||
if (app->entry != NULL)
|
||||
gmenu_tree_item_unref (app->entry);
|
||||
app->entry = gmenu_tree_item_ref (entry);
|
||||
|
||||
g_clear_object (&app->info);
|
||||
app->info = g_object_ref (info);
|
||||
|
||||
if (app->name_collation_key != NULL)
|
||||
g_free (app->name_collation_key);
|
||||
app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1);
|
||||
@ -960,10 +960,8 @@ application_properties_changed (GDBusConnection *connection,
|
||||
{
|
||||
ShellApp *app = user_data;
|
||||
GVariant *changed_properties;
|
||||
GVariantIter iter;
|
||||
gboolean busy = FALSE;
|
||||
const gchar *key, *interface_name_for_signal;
|
||||
GVariant *value;
|
||||
const gchar *interface_name_for_signal;
|
||||
|
||||
g_variant_get (parameters,
|
||||
"(&s@a{sv}as)",
|
||||
@ -974,19 +972,7 @@ application_properties_changed (GDBusConnection *connection,
|
||||
if (g_strcmp0 (interface_name_for_signal, "org.gtk.Application") != 0)
|
||||
return;
|
||||
|
||||
g_variant_iter_init (&iter, changed_properties);
|
||||
while (g_variant_iter_next (&iter, "{&sv}", &key, &value))
|
||||
{
|
||||
if (g_strcmp0 (key, "Busy") != 0)
|
||||
{
|
||||
g_variant_unref (value);
|
||||
continue;
|
||||
}
|
||||
|
||||
busy = g_variant_get_boolean (value);
|
||||
g_variant_unref (value);
|
||||
break;
|
||||
}
|
||||
g_variant_lookup (changed_properties, "Busy", "b", &busy);
|
||||
|
||||
if (busy)
|
||||
shell_app_state_transition (app, SHELL_APP_STATE_BUSY);
|
||||
@ -1201,7 +1187,6 @@ shell_app_launch (ShellApp *app,
|
||||
char **startup_id,
|
||||
GError **error)
|
||||
{
|
||||
GDesktopAppInfo *gapp;
|
||||
GdkAppLaunchContext *context;
|
||||
gboolean ret;
|
||||
ShellGlobal *global;
|
||||
@ -1211,7 +1196,7 @@ shell_app_launch (ShellApp *app,
|
||||
if (startup_id)
|
||||
*startup_id = NULL;
|
||||
|
||||
if (app->entry == NULL)
|
||||
if (app->info == NULL)
|
||||
{
|
||||
MetaWindow *window = window_backed_app_get_window (app);
|
||||
/* We can't pass URIs into a window; shouldn't hit this
|
||||
@ -1237,8 +1222,7 @@ shell_app_launch (ShellApp *app,
|
||||
gdk_app_launch_context_set_timestamp (context, timestamp);
|
||||
gdk_app_launch_context_set_desktop (context, workspace);
|
||||
|
||||
gapp = gmenu_tree_entry_get_app_info (app->entry);
|
||||
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
|
||||
ret = g_desktop_app_info_launch_uris_as_manager (app->info, uris,
|
||||
G_APP_LAUNCH_CONTEXT (context),
|
||||
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
NULL, NULL,
|
||||
@ -1258,21 +1242,7 @@ shell_app_launch (ShellApp *app,
|
||||
GDesktopAppInfo *
|
||||
shell_app_get_app_info (ShellApp *app)
|
||||
{
|
||||
if (app->entry)
|
||||
return gmenu_tree_entry_get_app_info (app->entry);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_get_tree_entry:
|
||||
* @app: a #ShellApp
|
||||
*
|
||||
* Returns: (transfer none): The #GMenuTreeEntry for this app, or %NULL if backed by a window
|
||||
*/
|
||||
GMenuTreeEntry *
|
||||
shell_app_get_tree_entry (ShellApp *app)
|
||||
{
|
||||
return app->entry;
|
||||
return app->info;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1387,24 +1357,22 @@ shell_app_init_search_data (ShellApp *app)
|
||||
const char *exec;
|
||||
const char * const *keywords;
|
||||
char *normalized_exec;
|
||||
GDesktopAppInfo *appinfo;
|
||||
|
||||
appinfo = gmenu_tree_entry_get_app_info (app->entry);
|
||||
name = g_app_info_get_name (G_APP_INFO (appinfo));
|
||||
name = g_app_info_get_name (G_APP_INFO (app->info));
|
||||
app->casefolded_name = shell_util_normalize_casefold_and_unaccent (name);
|
||||
|
||||
generic_name = g_desktop_app_info_get_generic_name (appinfo);
|
||||
generic_name = g_desktop_app_info_get_generic_name (app->info);
|
||||
if (generic_name)
|
||||
app->casefolded_generic_name = shell_util_normalize_casefold_and_unaccent (generic_name);
|
||||
else
|
||||
app->casefolded_generic_name = NULL;
|
||||
|
||||
exec = g_app_info_get_executable (G_APP_INFO (appinfo));
|
||||
exec = g_app_info_get_executable (G_APP_INFO (app->info));
|
||||
normalized_exec = shell_util_normalize_casefold_and_unaccent (exec);
|
||||
app->casefolded_exec = trim_exec_line (normalized_exec);
|
||||
g_free (normalized_exec);
|
||||
|
||||
keywords = g_desktop_app_info_get_keywords (appinfo);
|
||||
keywords = g_desktop_app_info_get_keywords (app->info);
|
||||
|
||||
if (keywords)
|
||||
{
|
||||
@ -1525,16 +1493,14 @@ _shell_app_do_match (ShellApp *app,
|
||||
GSList **substring_results)
|
||||
{
|
||||
ShellAppSearchMatch match;
|
||||
GAppInfo *appinfo;
|
||||
|
||||
g_assert (app != NULL);
|
||||
|
||||
/* Skip window-backed apps */
|
||||
appinfo = (GAppInfo*)shell_app_get_app_info (app);
|
||||
if (appinfo == NULL)
|
||||
if (app->info == NULL)
|
||||
return;
|
||||
/* Skip not-visible apps */
|
||||
if (!g_app_info_should_show (appinfo))
|
||||
if (!g_app_info_should_show (G_APP_INFO (app->info)))
|
||||
return;
|
||||
|
||||
match = _shell_app_match_search_terms (app, terms);
|
||||
@ -1563,11 +1529,7 @@ shell_app_dispose (GObject *object)
|
||||
{
|
||||
ShellApp *app = SHELL_APP (object);
|
||||
|
||||
if (app->entry)
|
||||
{
|
||||
gmenu_tree_item_unref (app->entry);
|
||||
app->entry = NULL;
|
||||
}
|
||||
g_clear_object (&app->info);
|
||||
|
||||
if (app->running_state)
|
||||
{
|
||||
|
@ -4,9 +4,8 @@
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <gio/gio.h>
|
||||
#include <gio/gdesktopappinfo.h>
|
||||
#include <meta/window.h>
|
||||
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
|
||||
#include <gmenu-tree.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -39,7 +38,6 @@ GType shell_app_get_type (void) G_GNUC_CONST;
|
||||
|
||||
const char *shell_app_get_id (ShellApp *app);
|
||||
|
||||
GMenuTreeEntry *shell_app_get_tree_entry (ShellApp *app);
|
||||
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);
|
||||
|
||||
ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size);
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <meta/display.h>
|
||||
#include <meta/util.h>
|
||||
#include <meta/meta-shaped-texture.h>
|
||||
#include <meta/meta-cursor-tracker.h>
|
||||
|
||||
/* Memory report bits */
|
||||
#ifdef HAVE_MALLINFO
|
||||
@ -51,7 +52,7 @@ struct _ShellGlobal {
|
||||
|
||||
ClutterStage *stage;
|
||||
Window stage_xwindow;
|
||||
GdkWindow *stage_gdk_window;
|
||||
GdkWindow *ibus_window;
|
||||
|
||||
MetaDisplay *meta_display;
|
||||
GdkDisplay *gdk_display;
|
||||
@ -599,91 +600,6 @@ sync_input_region (ShellGlobal *global)
|
||||
meta_set_stage_input_region (screen, global->input_region);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_set_cursor:
|
||||
* @global: A #ShellGlobal
|
||||
* @type: the type of the cursor
|
||||
*
|
||||
* Set the cursor on the stage window.
|
||||
*/
|
||||
void
|
||||
shell_global_set_cursor (ShellGlobal *global,
|
||||
ShellCursor type)
|
||||
{
|
||||
const char *name;
|
||||
GdkCursor *cursor;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SHELL_CURSOR_DND_IN_DRAG:
|
||||
name = "dnd-none";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_MOVE:
|
||||
name = "dnd-move";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_COPY:
|
||||
name = "dnd-copy";
|
||||
break;
|
||||
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||
name = "dnd-none";
|
||||
break;
|
||||
case SHELL_CURSOR_POINTING_HAND:
|
||||
name = "hand";
|
||||
break;
|
||||
case SHELL_CURSOR_CROSSHAIR:
|
||||
name = "crosshair";
|
||||
break;
|
||||
default:
|
||||
g_return_if_reached ();
|
||||
}
|
||||
|
||||
cursor = gdk_cursor_new_from_name (global->gdk_display, name);
|
||||
if (!cursor)
|
||||
{
|
||||
GdkCursorType cursor_type;
|
||||
switch (type)
|
||||
{
|
||||
case SHELL_CURSOR_DND_IN_DRAG:
|
||||
cursor_type = GDK_FLEUR;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_MOVE:
|
||||
cursor_type = GDK_TARGET;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_COPY:
|
||||
cursor_type = GDK_PLUS;
|
||||
break;
|
||||
case SHELL_CURSOR_POINTING_HAND:
|
||||
cursor_type = GDK_HAND2;
|
||||
break;
|
||||
case SHELL_CURSOR_CROSSHAIR:
|
||||
cursor_type = GDK_CROSSHAIR;
|
||||
break;
|
||||
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||
cursor_type = GDK_X_CURSOR;
|
||||
break;
|
||||
default:
|
||||
g_return_if_reached ();
|
||||
}
|
||||
cursor = gdk_cursor_new (cursor_type);
|
||||
}
|
||||
|
||||
gdk_window_set_cursor (global->stage_gdk_window, cursor);
|
||||
|
||||
g_object_unref (cursor);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_unset_cursor:
|
||||
* @global: A #ShellGlobal
|
||||
*
|
||||
* Unset the cursor on the stage window.
|
||||
*/
|
||||
void
|
||||
shell_global_unset_cursor (ShellGlobal *global)
|
||||
{
|
||||
gdk_window_set_cursor (global->stage_gdk_window, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_set_stage_input_region:
|
||||
* @global: the #ShellGlobal
|
||||
@ -877,13 +793,9 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
{
|
||||
if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE)
|
||||
{
|
||||
ClutterActor *stage;
|
||||
Window stage_xwindow;
|
||||
ShellGlobal *global = data;
|
||||
|
||||
stage = CLUTTER_ACTOR (data);
|
||||
stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
|
||||
|
||||
if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow)
|
||||
if (event_gdk->key.window == global->ibus_window)
|
||||
{
|
||||
ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
|
||||
ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager,
|
||||
@ -893,7 +805,7 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE);
|
||||
event_clutter->key.time = event_gdk->key.time;
|
||||
event_clutter->key.flags = CLUTTER_EVENT_NONE;
|
||||
event_clutter->key.stage = CLUTTER_STAGE (stage);
|
||||
event_clutter->key.stage = CLUTTER_STAGE (global->stage);
|
||||
event_clutter->key.source = NULL;
|
||||
|
||||
/* This depends on ClutterModifierType and GdkModifierType being
|
||||
@ -916,6 +828,16 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
|
||||
gtk_main_do_event (event_gdk);
|
||||
}
|
||||
|
||||
static void
|
||||
entry_cursor_func (StEntry *entry,
|
||||
gboolean use_ibeam,
|
||||
gpointer user_data)
|
||||
{
|
||||
ShellGlobal *global = user_data;
|
||||
|
||||
meta_screen_set_cursor (global->meta_screen, use_ibeam ? META_CURSOR_IBEAM : META_CURSOR_DEFAULT);
|
||||
}
|
||||
|
||||
void
|
||||
_shell_global_set_plugin (ShellGlobal *global,
|
||||
MetaPlugin *plugin)
|
||||
@ -935,9 +857,38 @@ _shell_global_set_plugin (ShellGlobal *global,
|
||||
meta_screen_get_screen_number (global->meta_screen));
|
||||
|
||||
global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen));
|
||||
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
|
||||
global->stage_gdk_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
|
||||
global->stage_xwindow);
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (meta_is_wayland_compositor ())
|
||||
{
|
||||
/* When Mutter is acting as its own display server then the
|
||||
stage does not have a window, so create a different window
|
||||
which we use to communicate with IBus, and leave stage_xwindow
|
||||
as None.
|
||||
*/
|
||||
|
||||
GdkWindowAttr attributes;
|
||||
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
attributes.width = 100;
|
||||
attributes.height = 100;
|
||||
attributes.window_type = GDK_WINDOW_TOPLEVEL;
|
||||
|
||||
global->ibus_window = gdk_window_new (NULL,
|
||||
&attributes,
|
||||
0 /* attributes_mask */);
|
||||
global->stage_xwindow = None;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
|
||||
global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
|
||||
global->stage_xwindow);
|
||||
}
|
||||
|
||||
st_im_text_set_event_window (global->ibus_window);
|
||||
st_entry_set_cursor_func (entry_cursor_func, global);
|
||||
|
||||
g_signal_connect (global->stage, "notify::width",
|
||||
G_CALLBACK (global_stage_notify_width), global);
|
||||
@ -966,7 +917,7 @@ _shell_global_set_plugin (ShellGlobal *global,
|
||||
g_signal_connect (global->meta_display, "notify::focus-window",
|
||||
G_CALLBACK (focus_window_changed), global);
|
||||
|
||||
gdk_event_handler_set (gnome_shell_gdk_event_handler, global->stage, NULL);
|
||||
gdk_event_handler_set (gnome_shell_gdk_event_handler, global, NULL);
|
||||
|
||||
global->focus_manager = st_focus_manager_get_for_stage (global->stage);
|
||||
}
|
||||
@ -1041,7 +992,8 @@ void
|
||||
shell_global_freeze_keyboard (ShellGlobal *global,
|
||||
guint32 timestamp)
|
||||
{
|
||||
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
|
||||
if (global->stage_xwindow != None)
|
||||
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
|
||||
}
|
||||
|
||||
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
|
||||
@ -1291,9 +1243,6 @@ void shell_global_init_xdnd (ShellGlobal *global)
|
||||
* @mods: (out): the current set of modifier keys that are pressed down
|
||||
*
|
||||
* Gets the pointer coordinates and current modifier key state.
|
||||
* This is a wrapper around gdk_display_get_pointer() that strips
|
||||
* out any un-declared modifier flags, to make gjs happy; see
|
||||
* https://bugzilla.gnome.org/show_bug.cgi?id=597292.
|
||||
*/
|
||||
void
|
||||
shell_global_get_pointer (ShellGlobal *global,
|
||||
@ -1301,18 +1250,13 @@ shell_global_get_pointer (ShellGlobal *global,
|
||||
int *y,
|
||||
ClutterModifierType *mods)
|
||||
{
|
||||
GdkDeviceManager *gmanager;
|
||||
GdkDevice *gdevice;
|
||||
GdkScreen *gscreen;
|
||||
GdkModifierType raw_mods;
|
||||
ClutterModifierType raw_mods;
|
||||
MetaCursorTracker *tracker;
|
||||
|
||||
gmanager = gdk_display_get_device_manager (global->gdk_display);
|
||||
gdevice = gdk_device_manager_get_client_pointer (gmanager);
|
||||
gdk_device_get_position (gdevice, &gscreen, x, y);
|
||||
gdk_device_get_state (gdevice,
|
||||
gdk_screen_get_root_window (gscreen),
|
||||
NULL, &raw_mods);
|
||||
*mods = raw_mods & GDK_MODIFIER_MASK;
|
||||
tracker = meta_cursor_tracker_get_for_screen (global->meta_screen);
|
||||
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods);
|
||||
|
||||
*mods = raw_mods & CLUTTER_MODIFIER_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1327,19 +1271,10 @@ void
|
||||
shell_global_sync_pointer (ShellGlobal *global)
|
||||
{
|
||||
int x, y;
|
||||
GdkModifierType mods;
|
||||
GdkDeviceManager *gmanager;
|
||||
GdkDevice *gdevice;
|
||||
GdkScreen *gscreen;
|
||||
ClutterModifierType mods;
|
||||
ClutterMotionEvent event;
|
||||
|
||||
gmanager = gdk_display_get_device_manager (global->gdk_display);
|
||||
gdevice = gdk_device_manager_get_client_pointer (gmanager);
|
||||
|
||||
gdk_device_get_position (gdevice, &gscreen, &x, &y);
|
||||
gdk_device_get_state (gdevice,
|
||||
gdk_screen_get_root_window (gscreen),
|
||||
NULL, &mods);
|
||||
shell_global_get_pointer (global, &x, &y, &mods);
|
||||
|
||||
event.type = CLUTTER_MOTION;
|
||||
event.time = shell_global_get_current_time (global);
|
||||
|
@ -50,20 +50,6 @@ void shell_global_freeze_keyboard (ShellGlobal *global,
|
||||
void shell_global_set_stage_input_region (ShellGlobal *global,
|
||||
GSList *rectangles);
|
||||
|
||||
/* X utilities */
|
||||
typedef enum {
|
||||
SHELL_CURSOR_DND_IN_DRAG,
|
||||
SHELL_CURSOR_DND_UNSUPPORTED_TARGET,
|
||||
SHELL_CURSOR_DND_MOVE,
|
||||
SHELL_CURSOR_DND_COPY,
|
||||
SHELL_CURSOR_POINTING_HAND,
|
||||
SHELL_CURSOR_CROSSHAIR
|
||||
} ShellCursor;
|
||||
|
||||
void shell_global_set_cursor (ShellGlobal *global,
|
||||
ShellCursor type);
|
||||
void shell_global_unset_cursor (ShellGlobal *global);
|
||||
|
||||
void shell_global_get_pointer (ShellGlobal *global,
|
||||
int *x,
|
||||
int *y,
|
||||
|
@ -35,6 +35,8 @@
|
||||
#define SHELL_IS_INVERT_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT))
|
||||
#define SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFEC, ShellInvertLightnessEffectClass))
|
||||
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include "shell-invert-lightness-effect.h"
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
@ -122,7 +124,6 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
||||
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||
ClutterActor *actor;
|
||||
guint8 paint_opacity;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
|
||||
paint_opacity = clutter_actor_get_paint_opacity (actor);
|
||||
@ -132,8 +133,11 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
||||
paint_opacity,
|
||||
paint_opacity,
|
||||
paint_opacity);
|
||||
cogl_framebuffer_draw_rectangle (fb, self->pipeline,
|
||||
0, 0, self->tex_width, self->tex_height);
|
||||
cogl_push_source (self->pipeline);
|
||||
|
||||
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
|
||||
|
||||
cogl_pop_source ();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -21,6 +21,7 @@
|
||||
#ifndef __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||
#define __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
@ -771,6 +771,6 @@ shell_keyring_prompt_cancel (ShellKeyringPrompt *self)
|
||||
self->async_result = NULL;
|
||||
self->mode = PROMPTING_NONE;
|
||||
|
||||
g_simple_async_result_complete (res);
|
||||
g_simple_async_result_complete_in_idle (res);
|
||||
g_object_unref (res);
|
||||
}
|
||||
|
@ -441,19 +441,15 @@ recorder_record_frame (ShellRecorder *recorder)
|
||||
recorder->last_frame_time = now;
|
||||
|
||||
size = recorder->area.width * recorder->area.height * 4;
|
||||
data = g_malloc (size);
|
||||
if (!cogl_framebuffer_read_pixels (cogl_get_draw_framebuffer (),
|
||||
recorder->area.x,
|
||||
recorder->area.y,
|
||||
recorder->area.width,
|
||||
recorder->area.height,
|
||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||
data))
|
||||
{
|
||||
g_warning ("Could not retrieve pixel data");
|
||||
g_free (data);
|
||||
return;
|
||||
}
|
||||
|
||||
data = g_malloc (recorder->area.width * 4 * recorder->area.height);
|
||||
cogl_read_pixels (recorder->area.x,
|
||||
recorder->area.y,
|
||||
recorder->area.width,
|
||||
recorder->area.height,
|
||||
COGL_READ_PIXELS_COLOR_BUFFER,
|
||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||
data);
|
||||
|
||||
buffer = gst_buffer_new();
|
||||
gst_buffer_insert_memory (buffer, -1,
|
||||
|
@ -1,5 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <cogl/cogl.h>
|
||||
#include <meta/display.h>
|
||||
|
@ -97,7 +97,6 @@ shell_slicer_paint_child (ShellSlicer *self)
|
||||
float width, height, child_width, child_height;
|
||||
StAlign x_align, y_align;
|
||||
double x_align_factor, y_align_factor;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
child = st_bin_get_child (ST_BIN (self));
|
||||
|
||||
@ -116,17 +115,18 @@ shell_slicer_paint_child (ShellSlicer *self)
|
||||
child_width = child_box.x2 - child_box.x1;
|
||||
child_height = child_box.y2 - child_box.y1;
|
||||
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_push_rectangle_clip (fb, 0, 0, width, height);
|
||||
cogl_framebuffer_translate (fb,
|
||||
(int)(0.5 + x_align_factor * (width - child_width)),
|
||||
(int)(0.5 + y_align_factor * (height - child_height)),
|
||||
0);
|
||||
cogl_push_matrix ();
|
||||
|
||||
cogl_clip_push_rectangle (0, 0, width, height);
|
||||
cogl_translate ((int)(0.5 + x_align_factor * (width - child_width)),
|
||||
(int)(0.5 + y_align_factor * (height - child_height)),
|
||||
0);
|
||||
|
||||
clutter_actor_paint (child);
|
||||
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
cogl_clip_pop ();
|
||||
|
||||
cogl_pop_matrix ();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -844,6 +844,7 @@ ShellApp *
|
||||
shell_startup_sequence_get_app (ShellStartupSequence *sequence)
|
||||
{
|
||||
const char *appid;
|
||||
char *basename;
|
||||
ShellAppSystem *appsys;
|
||||
ShellApp *app;
|
||||
|
||||
@ -851,8 +852,10 @@ shell_startup_sequence_get_app (ShellStartupSequence *sequence)
|
||||
if (!appid)
|
||||
return NULL;
|
||||
|
||||
basename = g_path_get_basename (appid);
|
||||
appsys = shell_app_system_get_default ();
|
||||
app = shell_app_system_lookup_app_for_path (appsys, appid);
|
||||
app = shell_app_system_lookup_app (appsys, basename);
|
||||
g_free (basename);
|
||||
return app;
|
||||
}
|
||||
|
||||
|
@ -387,20 +387,19 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
ClutterActor *child;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
get_border_paint_offsets (self, &x, &y);
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||
cogl_push_matrix ();
|
||||
cogl_translate ((int)x, (int)y, 0);
|
||||
}
|
||||
|
||||
st_widget_paint_background (ST_WIDGET (actor));
|
||||
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
cogl_pop_matrix ();
|
||||
}
|
||||
|
||||
if (clutter_actor_get_n_children (actor) == 0)
|
||||
@ -418,11 +417,10 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
* the borders and background stay in place; after drawing the borders and
|
||||
* background, we clip to the content area */
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_framebuffer_push_rectangle_clip (fb,
|
||||
(int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
cogl_clip_push_rectangle ((int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
|
||||
for (child = clutter_actor_get_first_child (actor);
|
||||
child != NULL;
|
||||
@ -430,7 +428,7 @@ st_box_layout_paint (ClutterActor *actor)
|
||||
clutter_actor_paint (child);
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
cogl_clip_pop ();
|
||||
}
|
||||
|
||||
static void
|
||||
@ -444,20 +442,19 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
ClutterActor *child;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
get_border_paint_offsets (self, &x, &y);
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_framebuffer_push_matrix (fb);
|
||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||
cogl_push_matrix ();
|
||||
cogl_translate ((int)x, (int)y, 0);
|
||||
}
|
||||
|
||||
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color);
|
||||
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
cogl_framebuffer_pop_matrix (fb);
|
||||
cogl_pop_matrix ();
|
||||
}
|
||||
|
||||
if (clutter_actor_get_n_children (actor) == 0)
|
||||
@ -472,11 +469,10 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
content_box.y2 += y;
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_framebuffer_push_rectangle_clip (fb,
|
||||
(int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
cogl_clip_push_rectangle ((int)content_box.x1,
|
||||
(int)content_box.y1,
|
||||
(int)content_box.x2,
|
||||
(int)content_box.y2);
|
||||
|
||||
for (child = clutter_actor_get_first_child (actor);
|
||||
child != NULL;
|
||||
@ -484,7 +480,7 @@ st_box_layout_pick (ClutterActor *actor,
|
||||
clutter_actor_paint (child);
|
||||
|
||||
if (priv->hadjustment || priv->vadjustment)
|
||||
cogl_framebuffer_pop_clip (fb);
|
||||
cogl_clip_pop ();
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -39,8 +39,8 @@
|
||||
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
|
||||
|
||||
struct _StDrawingAreaPrivate {
|
||||
CoglTexture *texture;
|
||||
CoglPipeline *pipeline;
|
||||
CoglHandle texture;
|
||||
CoglHandle material;
|
||||
cairo_t *context;
|
||||
guint needs_repaint : 1;
|
||||
guint in_repaint : 1;
|
||||
@ -61,8 +61,17 @@ st_drawing_area_dispose (GObject *object)
|
||||
StDrawingArea *area = ST_DRAWING_AREA (object);
|
||||
StDrawingAreaPrivate *priv = area->priv;
|
||||
|
||||
g_clear_pointer (&priv->pipeline, cogl_object_unref);
|
||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->material);
|
||||
priv->material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (priv->texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->texture);
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
|
||||
}
|
||||
@ -76,6 +85,8 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
ClutterActorBox allocation_box;
|
||||
ClutterActorBox content_box;
|
||||
int width, height;
|
||||
CoglColor color;
|
||||
guint8 paint_opacity;
|
||||
|
||||
(CLUTTER_ACTOR_CLASS (st_drawing_area_parent_class))->paint (self);
|
||||
|
||||
@ -85,25 +96,20 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
width = (int)(0.5 + content_box.x2 - content_box.x1);
|
||||
height = (int)(0.5 + content_box.y2 - content_box.y1);
|
||||
|
||||
if (priv->pipeline == NULL)
|
||||
{
|
||||
CoglContext *ctx =
|
||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
if (priv->material == COGL_INVALID_HANDLE)
|
||||
priv->material = cogl_material_new ();
|
||||
|
||||
priv->pipeline = cogl_pipeline_new (ctx);
|
||||
}
|
||||
|
||||
if (priv->texture != NULL &&
|
||||
if (priv->texture != COGL_INVALID_HANDLE &&
|
||||
(width != cogl_texture_get_width (priv->texture) ||
|
||||
height != cogl_texture_get_height (priv->texture)))
|
||||
{
|
||||
cogl_object_unref (priv->texture);
|
||||
priv->texture = NULL;
|
||||
cogl_handle_unref (priv->texture);
|
||||
priv->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (width > 0 && height > 0)
|
||||
{
|
||||
if (priv->texture == NULL)
|
||||
if (priv->texture == COGL_INVALID_HANDLE)
|
||||
{
|
||||
priv->texture = cogl_texture_new_with_size (width, height,
|
||||
COGL_TEXTURE_NONE,
|
||||
@ -135,21 +141,19 @@ st_drawing_area_paint (ClutterActor *self)
|
||||
}
|
||||
}
|
||||
|
||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->texture);
|
||||
cogl_material_set_layer (priv->material, 0, priv->texture);
|
||||
|
||||
if (priv->texture)
|
||||
{
|
||||
CoglColor color;
|
||||
guint8 paint_opacity;
|
||||
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
|
||||
|
||||
paint_opacity = clutter_actor_get_paint_opacity (self);
|
||||
cogl_color_init_from_4ub (&color, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_pipeline_set_color (priv->pipeline, &color);
|
||||
cogl_color_set_from_4ub (&color,
|
||||
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
|
||||
cogl_material_set_color (priv->material, &color);
|
||||
|
||||
cogl_framebuffer_draw_rectangle (fb, priv->pipeline,
|
||||
content_box.x1, content_box.y1,
|
||||
content_box.x2, content_box.y2);
|
||||
cogl_set_source (priv->material);
|
||||
cogl_rectangle_with_texture_coords (content_box.x1, content_box.y1,
|
||||
content_box.x2, content_box.y2,
|
||||
0.0f, 0.0f, 1.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,7 +195,7 @@ st_drawing_area_init (StDrawingArea *area)
|
||||
{
|
||||
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
|
||||
StDrawingAreaPrivate);
|
||||
area->priv->texture = NULL;
|
||||
area->priv->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -65,10 +65,6 @@
|
||||
#include "st-clipboard.h"
|
||||
#include "st-private.h"
|
||||
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
#include "st-widget-accessible.h"
|
||||
|
||||
#define HAS_FOCUS(actor) (clutter_actor_get_stage (actor) && clutter_stage_get_key_focus ((ClutterStage *) clutter_actor_get_stage (actor)) == actor)
|
||||
@ -681,33 +677,28 @@ st_entry_key_focus_in (ClutterActor *actor)
|
||||
clutter_actor_grab_key_focus (priv->entry);
|
||||
}
|
||||
|
||||
static StEntryCursorFunc cursor_func;
|
||||
static gpointer cursor_func_data;
|
||||
|
||||
/**
|
||||
* st_entry_set_cursor_func: (skip)
|
||||
*
|
||||
* This function is for private use by libgnome-shell.
|
||||
* Do not ever use.
|
||||
*/
|
||||
void
|
||||
st_entry_set_cursor_func (StEntryCursorFunc func,
|
||||
gpointer data)
|
||||
{
|
||||
cursor_func = func;
|
||||
cursor_func_data = data;
|
||||
}
|
||||
|
||||
static void
|
||||
st_entry_set_cursor (StEntry *entry,
|
||||
gboolean use_ibeam)
|
||||
{
|
||||
Display *dpy;
|
||||
ClutterActor *stage, *actor = CLUTTER_ACTOR (entry);
|
||||
Window wid;
|
||||
static Cursor ibeam = None;
|
||||
|
||||
dpy = clutter_x11_get_default_display ();
|
||||
stage = clutter_actor_get_stage (actor);
|
||||
|
||||
if (stage == NULL)
|
||||
{
|
||||
g_warn_if_fail (!entry->priv->has_ibeam);
|
||||
return;
|
||||
}
|
||||
|
||||
wid = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
|
||||
|
||||
if (ibeam == None)
|
||||
ibeam = XCreateFontCursor (dpy, XC_xterm);
|
||||
|
||||
if (use_ibeam)
|
||||
XDefineCursor (dpy, wid, ibeam);
|
||||
else
|
||||
XUndefineCursor (dpy, wid);
|
||||
cursor_func (entry, use_ibeam, cursor_func_data);
|
||||
|
||||
entry->priv->has_ibeam = use_ibeam;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user