Compare commits

..

1 Commits

Author SHA1 Message Date
d8009fd826 Fix most of the Cogl deprecation warnings 2013-09-11 15:26:44 -04:00
119 changed files with 17937 additions and 16881 deletions

5
.gitignore vendored
View File

@ -19,8 +19,6 @@ 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
@ -73,14 +71,13 @@ 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-prefs
src/gnome-shell-extension-tool
src/gnome-shell-extension-prefs
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
View File

@ -1,81 +1,3 @@
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]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.10.0.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.9.91],[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.10.0
MUTTER_MIN_VERSION=3.9.91
GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3
@ -70,6 +70,7 @@ 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
@ -79,6 +80,7 @@ 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

View File

@ -3,10 +3,6 @@ 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
@ -45,10 +41,8 @@ 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 \
@ -89,7 +83,6 @@ 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) \
@ -99,7 +92,6 @@ EXTRA_DIST = \
CLEANFILES = \
gnome-shell.desktop.in \
gnome-shell-wayland.desktop.in \
gnome-shell-extension-prefs.in \
$(desktop_DATA) \
$(keys_DATA) \

View File

@ -1,15 +0,0 @@
[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

View File

@ -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>

View File

@ -642,7 +642,7 @@ StScrollBar StButton#vhandle:active {
}
.aggregate-menu {
width: 360px;
width: 340px;
}
.aggregate-menu .popup-menu-icon {
@ -918,6 +918,7 @@ StScrollBar StButton#vhandle:active {
}
.app-display {
padding: 8px;
spacing: 20px;
}
@ -941,7 +942,7 @@ StScrollBar StButton#vhandle:active {
}
.page-indicator {
padding: 15px 20px;
padding: 15px 30px;
}
.page-indicator .page-indicator-icon {
@ -950,19 +951,11 @@ StScrollBar StButton#vhandle:active {
background-image: url(page-indicator-inactive.svg);
}
.page-indicator:hover .page-indicator-icon {
background-image: url(page-indicator-hover.svg);
}
.page-indicator:active .page-indicator-icon {
.page-indicator:hover .page-indicator-icon,
.page-indicator:checked .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;

View File

@ -14,7 +14,7 @@
id="svg4703"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-pushed.svg">
sodipodi:docname="page-indicator-active.svg">
<defs
id="defs4705" />
<sodipodi:namedview
@ -24,22 +24,18 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.392433"
inkscape:cx="1.0245308"
inkscape:cy="13.3715"
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="2560"
inkscape:window-height="1374"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6140" />
</sodipodi:namedview>
inkscape:window-maximized="1" />
<metadata
id="metadata4708">
<rdf:RDF>
@ -48,7 +44,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>
@ -58,14 +54,14 @@
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
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"
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:1;stroke:none"
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
sodipodi:type="arc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,67 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,67 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -25,14 +25,14 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="-2.307566"
inkscape:cx="13.381365"
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-width="1920"
inkscape:window-height="1021"
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:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:0.39215686000000000;stroke-dasharray:none"
style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276;stroke-miterlimit:4;stroke-opacity:0.39215686;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

View File

@ -244,7 +244,6 @@ const AuthPrompt = new Lang.Class({
},
_onVerificationFailed: function() {
this._queryingService = null;
this.clear();
this.updateSensitivity(true);

View File

@ -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), GdmUtil.MessageType.HINT);
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), AuthPrompt.MessageType.HINT);
},
_askForUsernameAndBeginVerification: function() {

View File

@ -72,10 +72,8 @@ function versionCompare(required, reference) {
reference = reference.split('.');
for (let i = 0; i < required.length; i++) {
let requiredInt = parseInt(required[i]);
let referenceInt = parseInt(reference[i]);
if (requiredInt != referenceInt)
return requiredInt < referenceInt;
if (required[i] != reference[i])
return required[i] < reference[i];
}
return true;

View File

@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
@ -190,57 +189,28 @@ function insertSorted(array, val, cmp) {
return pos;
}
const CloseButton = new Lang.Class({
Name: 'CloseButton',
Extends: St.Button,
function makeCloseButton() {
let closeButton = new St.Button({ style_class: 'notification-close'});
_init: function(boxpointer) {
this.parent({ style_class: 'notification-close'});
// 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);
// 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);
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
// to respect the alignments.
closeButton.set_x_expand(true);
closeButton.set_y_expand(true);
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
// to respect the alignments.
this.set_x_expand(true);
this.set_y_expand(true);
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');
});
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);
return closeButton;
}
function ensureActorVisibleInScrollView(scrollView, actor) {

View File

@ -39,9 +39,12 @@ const FOLDER_SUBICON_FRACTION = .4;
const MIN_FREQUENT_APPS_COUNT = 3;
const INDICATORS_BASE_TIME = 0.25;
const INDICATORS_ANIMATION_DELAY = 0.125;
const INDICATORS_ANIMATION_MAX_TIME = 0.75;
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;
// Fraction of page height the finger or mouse must reach
// to change page
const PAGE_SWITCH_TRESHOLD = 0.2;
@ -55,13 +58,13 @@ function _loadCategory(dir, view) {
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.ENTRY) {
let entry = iter.get_entry();
let appInfo = entry.get_app_info();
let app = appSystem.lookup_app(entry.get_desktop_file_id());
if (appInfo.should_show())
let app = appSystem.lookup_app_by_tree_entry(entry);
if (!entry.get_app_info().get_nodisplay())
view.addApp(app);
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
let itemDir = iter.get_directory();
_loadCategory(itemDir, view);
if (!itemDir.get_is_nodisplay())
_loadCategory(itemDir, view);
}
}
};
@ -227,23 +230,24 @@ const PageIndicators = new Lang.Class({
if (children.length == 0)
return;
let offset;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
offset = -children[0].width;
else
offset = children[0].width;
let timePerChild = INDICATORS_ANIMATION_TIME / this._nPages;
let delay = INDICATORS_ANIMATION_DELAY_PERCENTAGE / 100 * timePerChild;
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;
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;
else
offset = monitor.x + monitor.width - stageX;
for (let i = 0; i < this._nPages; i++) {
children[i].translation_x = offset;
Tweener.addTween(children[i],
{ translation_x: 0,
time: INDICATORS_BASE_TIME + delay * i,
transition: 'easeInOutQuad'
time: timePerChild,
delay: delay * i,
transition: 'easeOutQuad'
});
}
}
@ -333,19 +337,6 @@ 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() {
@ -353,8 +344,6 @@ 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)
@ -416,13 +405,16 @@ 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)
this.goToPage(this._currentPage - 1);
else if (direction == Clutter.ScrollDirection.DOWN)
this.goToPage(this._currentPage + 1);
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);
}
}
return true;
},
@ -442,9 +434,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)
if (action.get_velocity(0)[2] > 0 && this._currentPage > 0)
this.goToPage(this._currentPage - 1);
else
else if (this._currentPage < this._grid.nPages() - 1)
this.goToPage(this._currentPage + 1);
} else {
this.goToPage(this._currentPage);
@ -452,21 +444,6 @@ 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();
@ -691,7 +668,8 @@ const AppDisplay = new Lang.Class({
Name: 'AppDisplay',
_init: function() {
Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() {
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
Main.queueDeferredWork(this._allAppsWorkId);
}));
Main.overview.connect('showing', Lang.bind(this, function() {
@ -807,8 +785,7 @@ const AppDisplay = new Lang.Class({
view.removeAll();
let tree = new GMenu.Tree({ menu_basename: "applications.menu" });
tree.load_sync();
let tree = this._appSystem.get_tree();
let root = tree.get_root_directory();
let iter = root.iter();
@ -817,6 +794,8 @@ 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);
@ -864,8 +843,8 @@ const AppSearchProvider = new Lang.Class({
getResultMetas: function(apps, callback) {
let metas = [];
for (let i = 0; i < apps.length; i++) {
let app = this._appSys.lookup_app(apps[i]);
metas.push({ 'id': app.get_id(),
let app = apps[i];
metas.push({ 'id': app,
'name': app.get_name(),
'createIcon': function(size) {
return app.create_icon_texture(size);
@ -875,23 +854,15 @@ 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) {
let query = terms.join(' ');
let results = Gio.DesktopAppInfo.search(query, Lang.bind(this, this._compareResults), MAX_COLUMNS);
this.searchSystem.setResults(this, results);
this.searchSystem.setResults(this, this._appSys.initial_search(terms));
},
getSubsearchResultSet: function(previousResults, terms) {
this.getInitialResultSet(terms);
this.searchSystem.setResults(this, this._appSys.subsearch(previousResults, terms));
},
activateResult: function(result) {
let app = this._appSys.lookup_app(result);
activateResult: function(app) {
let event = Clutter.get_current_event();
let modifiers = event ? event.get_state() : 0;
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
@ -911,7 +882,7 @@ const AppSearchProvider = new Lang.Class({
},
createResultObject: function (resultMeta, terms) {
let app = this._appSys.lookup_app(resultMeta['id']);
let app = resultMeta['id'];
return new AppIcon(app);
}
});
@ -1186,7 +1157,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._boxPointer);
this.closeButton = Util.makeCloseButton();
this.closeButton.connect('clicked', Lang.bind(this, this.popdown));
this.actor.add_actor(this.closeButton);

View File

@ -319,9 +319,9 @@ const Background = new Lang.Class({
this._cancellable = new Gio.Cancellable();
this.isLoaded = false;
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._load();
},
@ -362,10 +362,6 @@ 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() {

View File

@ -3,9 +3,8 @@
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@ -62,10 +61,6 @@ 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',
@ -617,8 +612,6 @@ const BoxPointer = new Lang.Class({
this._container.queue_relayout();
return false;
}));
this.emit('arrow-side-changed');
}
},
@ -651,8 +644,6 @@ const BoxPointer = new Lang.Class({
updateArrowSide: function(side) {
this._arrowSide = side;
this._border.queue_repaint();
this.emit('arrow-side-changed');
},
getPadding: function(side) {
@ -663,4 +654,3 @@ const BoxPointer = new Lang.Class({
return this.actor.get_theme_node().get_length('-arrow-rise');
}
});
Signals.addSignalMethods(BoxPointer.prototype);

View File

@ -80,26 +80,23 @@ const KeyringDialog = new Lang.Class({
},
_buildControlTable: function() {
let layout = new Clutter.TableLayout();
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
layout_manager: layout });
layout.hookup_style(table);
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
let row = 0;
if (this.prompt.password_visible) {
let label = new St.Label({ style_class: 'prompt-dialog-password-label' });
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
label.set_text(_("Password:"));
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 });
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 });
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));
layout.pack(this._passwordEntry, 1, row);
table.add(this._passwordEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
row++;
} else {
this._passwordEntry = null;
@ -108,16 +105,17 @@ 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:"));
layout.pack(label, 0, row);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
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 });
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));
layout.pack(this._confirmEntry, 1, row);
table.add(this._confirmEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
row++;
} else {
this._confirmEntry = null;
@ -130,14 +128,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);
layout.pack(choice.actor, 1, row);
table.add(choice.actor, { row: row, col: 1, x_expand: false, x_fill: true, x_align: St.Align.START });
row++;
}
let warning = new St.Label({ style_class: 'prompt-dialog-error-label' });
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
warning.clutter_text.line_wrap = true;
layout.pack(warning, 1, row);
table.add(warning, { row: row, col: 1, x_expand: false, x_fill: false, x_align: St.Align.START });
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
@ -223,50 +221,27 @@ 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', Lang.bind(this,
function() {
let dialog = this._enabled ? new KeyringDialog()
: new KeyringDummyDialog();
return dialog.prompt;
}));
this._prompter.connect('new-prompt', function(prompter) {
let dialog = new KeyringDialog();
return dialog.prompt;
});
this._dbusId = null;
this._registered = false;
this._enabled = false;
},
enable: function() {
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;
this._prompter.register(Gio.DBus.session);
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
},
disable: function() {
this._enabled = false;
this._prompter.unregister(false);
Gio.DBus.session.unown_name(this._dbusId);
}
});

View File

@ -72,18 +72,13 @@ const NetworkSecretDialog = new Lang.Class({
expand: true });
}
let layout = new Clutter.TableLayout();
let secretTable = new St.Widget({ style_class: 'network-dialog-secret-table',
layout_manager: layout });
layout.hookup_style(secretTable);
let secretTable = new St.Table({ style_class: 'network-dialog-secret-table' });
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;
@ -116,10 +111,11 @@ const NetworkSecretDialog = new Lang.Class({
} else
secret.valid = true;
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);
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 });
pos++;
if (secret.password)

View File

@ -5,7 +5,6 @@ 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;
@ -28,9 +27,9 @@ const DragMotionResult = {
};
const DRAG_CURSOR_MAP = {
0: Meta.Cursor.DND_UNSUPPORTED_TARGET,
1: Meta.Cursor.DND_COPY,
2: Meta.Cursor.DND_MOVE
0: Shell.Cursor.DND_UNSUPPORTED_TARGET,
1: Shell.Cursor.DND_COPY,
2: Shell.Cursor.DND_MOVE
};
const DragDropResult = {
@ -86,6 +85,11 @@ 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();
@ -101,6 +105,12 @@ 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;
},
@ -186,6 +196,11 @@ 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;
@ -229,7 +244,7 @@ const _Draggable = new Lang.Class({
if (this._onEventId)
this._ungrabActor();
this._grabEvents();
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
this._dragX = this._dragStartX = stageX;
this._dragY = this._dragStartY = stageY;
@ -359,7 +374,7 @@ const _Draggable = new Lang.Class({
if (motionFunc) {
let result = motionFunc(dragEvent);
if (result != DragMotionResult.CONTINUE) {
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
global.set_cursor(DRAG_CURSOR_MAP[result]);
return false;
}
}
@ -377,13 +392,13 @@ const _Draggable = new Lang.Class({
targY,
0);
if (result != DragMotionResult.CONTINUE) {
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
global.set_cursor(DRAG_CURSOR_MAP[result]);
return false;
}
}
target = target.get_parent();
}
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
return false;
},
@ -455,7 +470,7 @@ const _Draggable = new Lang.Class({
}
this._dragInProgress = false;
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
this.emit('drag-end', event.get_time(), true);
this._dragComplete();
return true;
@ -507,7 +522,7 @@ const _Draggable = new Lang.Class({
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
if (this._actorDestroyed) {
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
if (!this._buttonDown)
this._dragComplete();
this.emit('drag-end', eventTime, false);
@ -561,7 +576,7 @@ const _Draggable = new Lang.Class({
} else {
dragActor.destroy();
}
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
this.emit('drag-end', eventTime, false);
this._animationInProgress = false;
@ -569,12 +584,33 @@ 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();
global.sync_pointer();
if (this._firstLeaveActor) {
this._syncHover(this._firstLeaveActor);
this._firstLeaveActor = null;
}
if (this._lastEnterActor) {
this._syncHover(this._lastEnterActor);
this._lastEnterActor = null;
}
if (this._updateHoverId) {
GLib.source_remove(this._updateHoverId);

View File

@ -33,7 +33,6 @@ const FocusCaretTracker = new Lang.Class({
_init: function() {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
},

View File

@ -362,7 +362,7 @@ const LayoutManager = new Lang.Class({
BackgroundMenu.addBackgroundMenu(bgManager.background.actor);
}));
this._bgManagers[monitorIndex] = bgManager;
this._bgManagers.push(bgManager);
return bgManager.background;
},

View File

@ -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.x + (primary.width - myWidth) / 2;
this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
this.actor.x = (primary.width - myWidth) / 2;
this._hiddenY = 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(this.actor.x + Math.floor(myWidth * 0.1),
this._targetY + Math.floor(myHeight * 0.1));
this._objInspector.actor.set_position(primary.x + this.actor.x + Math.floor(myWidth * 0.1),
primary.y + this._targetY + Math.floor(myHeight * 0.1));
},
insertObject: function(obj) {

View File

@ -57,20 +57,6 @@ 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();
@ -86,11 +72,15 @@ const Magnifier = new Lang.Class({
let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
this._zoomRegions.push(aZoomRegion);
this._settingsInitRegion(aZoomRegion);
let showAtLaunch = this._settingsInit(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);
},
/**
@ -98,7 +88,7 @@ const Magnifier = new Lang.Class({
* Show the system mouse pointer.
*/
showSystemCursor: function() {
this._cursorTracker.set_pointer_visible(true);
global.stage.show_cursor();
},
/**
@ -106,7 +96,7 @@ const Magnifier = new Lang.Class({
* Hide the system mouse pointer.
*/
hideSystemCursor: function() {
this._cursorTracker.set_pointer_visible(false);
global.stage.hide_cursor();
},
/**
@ -115,12 +105,6 @@ 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);
});
@ -133,7 +117,7 @@ const Magnifier = new Lang.Class({
// Make sure system mouse pointer is shown when all zoom regions are
// invisible.
if (!activate)
this._cursorTracker.set_pointer_visible(true);
global.stage.show_cursor();
// Notify interested parties of this change
this.emit('active-changed', activate);
@ -448,68 +432,64 @@ const Magnifier = new Lang.Class({
this._mouseSprite.set_anchor_point(xHot, yHot);
},
_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() {
_settingsInit: function(zoomRegion) {
this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
this._appSettings.connect('changed::' + SHOW_KEY, Lang.bind(this, function() {
let active = this._appSettings.get_boolean(SHOW_KEY);
this.setActive(active);
}));
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);
return this._appSettings.get_boolean(SHOW_KEY);
},
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);
}
_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,
@ -573,6 +553,8 @@ 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() {
@ -750,17 +732,14 @@ const ZoomRegion = new Lang.Class({
* @activate: Boolean to show/hide the ZoomRegion.
*/
setActive: function(activate) {
if (activate == this.isActive())
return;
if (activate) {
if (activate && !this.isActive()) {
this._createActors();
if (this._isMouseOverRegion())
this._magnifier.hideSystemCursor();
this._updateMagViewGeometry();
this._updateCloneGeometry();
this._updateMousePosition();
} else {
} else if (!activate && this.isActive()) {
this._destroyActors();
}
},

View File

@ -90,12 +90,8 @@ function _sessionUpdated() {
Shell.KeyBindingMode.OVERVIEW,
sessionMode.hasRunDialog ? openRunDialog : null);
if (!sessionMode.hasRunDialog) {
if (runDialog)
runDialog.close();
if (lookingGlass)
lookingGlass.close();
}
if (!sessionMode.hasRunDialog && lookingGlass)
lookingGlass.close();
}
function start() {

View File

@ -215,10 +215,10 @@ const URLHighlighter = new Lang.Class({
let urlId = this._findUrlAtPos(event);
if (urlId != -1 && !this._cursorChanged) {
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
global.set_cursor(Shell.Cursor.POINTING_HAND);
this._cursorChanged = true;
} else if (urlId == -1) {
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
this._cursorChanged = false;
}
return false;
@ -229,7 +229,7 @@ const URLHighlighter = new Lang.Class({
if (this._cursorChanged) {
this._cursorChanged = false;
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
}
}));
},
@ -1805,9 +1805,8 @@ const MessageTray = new Lang.Class({
},
_sessionUpdated: function() {
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter) {
if (this._inCtrlAltTab)
Main.ctrlAltTabManager.removeGroup(this._summary);
if ((Main.sessionMode.isLocked || Main.sessionMode.isGreeter) && this._inCtrlAltTab) {
Main.ctrlAltTabManager.removeGroup(this._summary);
this._inCtrlAltTab = false;
} else if (!this._inCtrlAltTab) {
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'user-available-symbolic',

View File

@ -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 });
Main.layoutManager.overviewGroup.add_child(this._coverPane);
this._stack.add_actor(this._coverPane);
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return true; }));
this._stack.add_actor(this._overview);
@ -313,9 +313,6 @@ 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

View File

@ -504,17 +504,6 @@ 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',
@ -535,8 +524,7 @@ const ControlsManager = new Lang.Class({
this._indicator = new MessagesIndicator(this.viewSelector);
this.indicatorActor = this._indicator.actor;
let layout = new ControlsLayout();
this.actor = new St.Widget({ layout_manager: layout,
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout(),
reactive: true,
x_expand: true, y_expand: true,
clip_to_allocation: true });
@ -551,7 +539,7 @@ const ControlsManager = new Lang.Class({
expand: true });
this._group.add_actor(this._thumbnailsSlider.actor);
layout.connect('allocation-changed', Lang.bind(this, this._updateWorkspacesGeometry));
this._group.connect('notify::allocation', Lang.bind(this, this._updateWorkspacesGeometry));
Main.overview.connect('showing', Lang.bind(this, this._updateSpacerVisibility));
Main.overview.connect('item-drag-begin', Lang.bind(this,

View File

@ -611,7 +611,6 @@ const ActivitiesButton = new Lang.Class({
_onButtonRelease: function() {
Main.overview.toggle();
this.menu.close();
},
_onKeyRelease: function(actor, event) {
@ -805,7 +804,7 @@ const AggregateMenu = new Lang.Class({
Extends: PanelMenu.Button,
_init: function() {
this.parent(0.0, _("Settings"), false);
this.parent(0.0, _("Settings Menu"), false);
this.menu.actor.add_style_class_name('aggregate-menu');
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });

View File

@ -948,18 +948,14 @@ const PopupSubMenuMenuItem = new Lang.Class({
this.actor.add_child(this.icon);
}
this.label = new St.Label({ text: text,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.label = new St.Label({ text: text });
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',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.status = new St.Label({ style_class: 'popup-status-menu-item' });
this.actor.add_child(this.status);
this._triangle = new St.Label({ text: '\u25B8',
@ -973,7 +969,6 @@ 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));
@ -995,11 +990,9 @@ 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);
}
},

View File

@ -584,7 +584,6 @@ 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) {
@ -954,7 +953,7 @@ const ScreenShield = new Lang.Class({
this._hideLockScreenComplete();
}
this._cursorTracker.set_pointer_visible(true);
global.stage.show_cursor();
},
_ensureUnlockDialog: function(onPrimary, allowCancel) {
@ -1087,15 +1086,15 @@ const ScreenShield = new Lang.Class({
this._checkArrowAnimation();
let motionId = global.stage.connect('captured-event', Lang.bind(this, function(stage, event) {
let motionId = global.stage.connect('captured-event', function(stage, event) {
if (event.type() == Clutter.EventType.MOTION) {
this._cursorTracker.set_pointer_visible(true);
global.stage.show_cursor();
global.stage.disconnect(motionId);
}
return false;
}));
this._cursorTracker.set_pointer_visible(false);
});
global.stage.hide_cursor();
this._lockScreenState = MessageTray.State.SHOWN;
this._lockScreenGroup.fixed_position_set = false;

View File

@ -6,7 +6,6 @@ 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;
@ -168,7 +167,7 @@ const SelectArea = new Lang.Class({
if (!Main.pushModal(this._group) || this._group.visible)
return;
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
global.set_cursor(Shell.Cursor.CROSSHAIR);
this._group.visible = true;
},
@ -239,7 +238,7 @@ const SelectArea = new Lang.Class({
function() {
Main.popModal(this._group);
this._group.destroy();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
global.unset_cursor();
this.emit('finished', geometry);
})

View File

@ -214,8 +214,8 @@ const SearchResultsBase = new Lang.Class({
this.actor.hide();
},
_keyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
_keyFocusIn: function(icon) {
this.emit('key-focus-in', icon);
},
_setMoreIconVisible: function(visible) {
@ -259,7 +259,6 @@ 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);
@ -405,8 +404,8 @@ const SearchResults = new Lang.Class({
return false;
},
_keyFocusIn: function(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
_keyFocusIn: function(provider, icon) {
Util.ensureActorVisibleInScrollView(this._scrollView, icon);
},
createProviderDisplay: function(provider) {

View File

@ -31,7 +31,6 @@ 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));

View File

@ -547,24 +547,18 @@ 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._sync();
this._signalIcon.icon_name = this._getIcon();
},
setActive: function(isActive) {
this._selectedIcon.opacity = isActive ? 255 : 0;
},
_getSignalIcon: function() {
_getIcon: function() {
if (this._ap.mode == NM80211Mode.ADHOC)
return 'network-workgroup-symbolic';
else
@ -1123,7 +1117,6 @@ const NMVPNConnectionItem = new Lang.Class({
this.emit('activation-failed', reason);
}
this.emit('icon-changed');
this.parent();
},
@ -1294,7 +1287,6 @@ 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));

View File

@ -372,11 +372,7 @@ const Indicator = new Lang.Class({
Main.overview.hide();
if (Main.screenShield)
Main.screenShield.lock(false);
Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() {
Gdm.goto_login_session_sync(null);
return false;
});
Gdm.goto_login_session_sync(null);
},
_onQuitSessionActivate: function() {

View File

@ -20,6 +20,8 @@ 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;

View File

@ -62,6 +62,7 @@ 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 });
@ -167,6 +168,14 @@ 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];
@ -424,6 +433,10 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].actor.y += dy;
}
},
_getWorkspaceIndexToRemove: function() {
return global.screen.get_active_workspace_index();
}
});
Signals.addSignalMethods(WorkspacesView.prototype);

View File

@ -3,7 +3,6 @@
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;
@ -21,8 +20,7 @@ const XdndHandler = new Lang.Class({
Main.uiGroup.add_actor(this._dummy);
this._dummy.hide();
if (!Meta.is_wayland_compositor())
global.init_xdnd();
global.init_xdnd();
global.connect('xdnd-enter', Lang.bind(this, this._onEnter));
global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged));

View File

@ -4,7 +4,6 @@
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

488
po/as.po

File diff suppressed because it is too large Load Diff

162
po/be.po
View File

@ -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-23 13:35+0000\n"
"POT-Creation-Date: 2013-09-02 19:28+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,7 +47,6 @@ 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 "Кіраванне вокнамі і пуск праграм"
@ -60,10 +59,6 @@ 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 ""
@ -263,10 +258,6 @@ 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:"
@ -282,10 +273,10 @@ msgstr ""
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
"вышэй."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Скасаваць"
@ -324,8 +315,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Імя карыстальніка: "
@ -346,42 +337,42 @@ msgstr "Памылка ідэнтыфікацыі"
msgid "(or swipe finger)"
msgstr "(або правядзіце пальцам)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Загад не знойдзены"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Не ўдалося разабраць загад:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не ўдалося выканаць \"%s\":"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here"
msgstr "Тут размешчаныя часта ўжываныя праграмы"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:694
msgid "Frequent"
msgstr "Часта"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:701
msgid "All"
msgstr "Усе"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1488
msgid "New Window"
msgstr "Новае акно"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Выдаліць са спіса ўпадабанага"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites"
msgstr "Дадаць у спіс упадабанага"
@ -395,8 +386,7 @@ msgstr "%s дададзены ў ваш спіс упадабанага."
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
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Настройкі"
@ -582,50 +572,50 @@ msgstr "Адкрыць у %s"
msgid "Eject"
msgstr "Выняць"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Паўтарыце пароль:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:127 ../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: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
#: ../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
msgid "Password: "
msgstr "Пароль: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Ключ: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Ідэнтычнасць: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Пароль да прыватнага ключа: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Паслуга: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Для бесправадной сеткі патрэбная ідэнтыфікацыя"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -634,37 +624,37 @@ msgstr ""
"Для доступу да бесправадной сеткі \"%s\" патрэбны пароль або ключы "
"шыфравання."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Правадная ідэнтыфікацыя 802.1X"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Назва сеткі: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL-ідэнтыфікацыя"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "Патрэбны PIN-код"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr ""
"Для прыстасавання для доступу да шырокапалоснай мабільнай сеткі патрэбны PIN-"
"код"
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN-код: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Пароль да шырокапалоснай мабільнай сеткі"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Каб злучыцца з \"%s\", патрэбны пароль."
@ -926,7 +916,7 @@ msgstr "Праглядзець конт"
msgid "Unknown reason"
msgstr "Невядомая прычына"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Вокны"
@ -1078,7 +1068,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Клавіятура"
@ -1154,11 +1144,11 @@ msgstr "Меню трэя"
msgid "No Messages"
msgstr "Апавяшчэнні адсутнічаюць"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Абшар апавяшчэнняў"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2786
msgid "System Information"
msgstr "Сістэмная інфармацыя"
@ -1191,17 +1181,21 @@ msgstr "Агляд"
msgid "Type to search…"
msgstr "Увядзіце тэкст для пошуку..."
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Заняткі"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Меню настроек"
#: ../js/ui/panel.js:892
msgid "Top Bar"
msgstr "Верхняя панэль"
@ -1210,7 +1204,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1240,7 +1234,7 @@ msgstr[2] "%d новых апавяшчэнняў"
msgid "Lock"
msgstr "Заблакіраваць"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME патрабуе блакіравання экрана"
@ -1251,11 +1245,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Не ўдалося заблакіраваць"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Блакіраванне стрымана праграмай"
@ -1337,9 +1331,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1352,7 +1346,7 @@ msgstr "Выключыць"
msgid "Bluetooth Settings"
msgstr "Настройкі Bluetooth"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1360,73 +1354,73 @@ msgstr[0] "%d злучанае прыстасаванне"
msgstr[1] "%d злучаныя прыстасаванні"
msgstr[2] "%d злучаных прыстасаванняў"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Запыт на ўпаўнаважанне ад %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Прыстасаванне %s хоча спарыцца з гэтым камп'ютарам"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Дазволіць"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Адмовіць"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Прыстасаванне %s хоча даступіцца да паслугі \"%s\""
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Заўсёды даваць дазвол"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Даць дазвол аднойчы"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Адмовіць"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Пацвярджэнне спарвання з %s"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Супадае"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Не супадае"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "Запыт на спарванне з %s"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Увядзіце PIN, які паказвае прыстасаванне."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "Добра"
@ -1434,7 +1428,7 @@ msgstr "Добра"
msgid "Brightness"
msgstr "Яркасць"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Паказаць раскладку"
@ -1510,15 +1504,15 @@ msgstr "Уключыць"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Сеткавы кіраўнік"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Не ўдалося злучыцца"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Не ўдалося ўключыць сеткавае злучэнне"
@ -1604,11 +1598,11 @@ msgstr "Увайсці іншым карыстальнікам"
msgid "Unlock Window"
msgstr "Акно блакіравання"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Праграмы"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Пошук"

435
po/cs.po

File diff suppressed because it is too large Load Diff

1501
po/da.po

File diff suppressed because it is too large Load Diff

175
po/de.po
View File

@ -18,17 +18,18 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\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"
"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"
"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: Poedit 1.5.4\n"
"X-Generator: Gtranslator 2.91.6\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -59,7 +60,6 @@ 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,10 +72,6 @@ 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"
@ -281,11 +277,6 @@ 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:"
@ -299,10 +290,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:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Abbrechen"
@ -341,8 +332,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Benutzername:"
@ -363,42 +354,42 @@ msgstr "Legitimationsfehler"
msgid "(or swipe finger)"
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Befehl nicht gefunden"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Befehl konnte nicht verarbeitet werden:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Ausführung von »%s« ist gescheitert:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:573
msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen werden hier erscheinen"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:689
msgid "Frequent"
msgstr "Häufig"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:696
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1491
msgid "New Window"
msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1495
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
@ -412,8 +403,7 @@ 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/panel.js:808
#: ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Einstellungen"
@ -602,50 +592,50 @@ msgstr "Öffnen mit %s"
msgid "Eject"
msgstr "Auswerfen"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passwort:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Erneut eingeben:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:127 ../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: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
#: ../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
msgid "Password: "
msgstr "Passwort:"
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Schlüssel:"
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Identität:"
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Passwort für geheimen Schlüssel:"
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Dienst:"
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Legitimierung für Funknetzwerk wird benötigt"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -654,35 +644,35 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
"zuzugreifen."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Legitimierung"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Netzwerkname:"
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL-Legitimierung"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "PIN-Code ist erforderlich"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
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:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
@ -950,7 +940,7 @@ msgstr "Konto anzeigen"
msgid "Unknown reason"
msgstr "Unbekannter Grund"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Fenster"
@ -1098,7 +1088,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Tastatur"
@ -1174,11 +1164,11 @@ msgstr "Benachrichtigungsfeldmenü"
msgid "No Messages"
msgstr "Keine Nachrichten"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2787
msgid "System Information"
msgstr "Systeminformationen"
@ -1210,17 +1200,21 @@ msgstr "Übersicht"
msgid "Type to search…"
msgstr "Suchbegriff eingeben …"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Aktivitäten"
#: ../js/ui/panel.js:904
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Einstellungsmenü"
#: ../js/ui/panel.js:901
msgid "Top Bar"
msgstr "Oberes Panel"
@ -1229,7 +1223,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1261,7 +1255,7 @@ msgstr[1] "%d neue Benachrichtigungen"
msgid "Lock"
msgstr "Sperren"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME muss den Bildschirm sperren"
@ -1272,11 +1266,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
@ -1358,9 +1352,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1373,56 +1367,56 @@ msgstr "Ausschalten"
msgid "Bluetooth Settings"
msgstr "Bluetooth-Einstellungen"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, 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:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Legitimierungsanfrage von %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, 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:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Erlauben"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Verweigern"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, 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:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Immer Zugriff gewähren"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Nur dieses Mal gewähren"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Abweisen"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Koppelungsbestätigung für %s"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1430,24 +1424,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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Stimmt überein"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Stimmt nicht überein"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "Koppelungsanfrage für %s"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
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:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "OK"
@ -1455,7 +1449,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Helligkeit"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung zeigen"
@ -1531,15 +1525,15 @@ msgstr "Einschalten"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@ -1625,11 +1619,11 @@ msgstr "Als anderer Benutzer anmelden"
msgid "Unlock Window"
msgstr "Fenster entsperren"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Anwendungen"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Suchen"
@ -1735,9 +1729,6 @@ 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."

1606
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2601
po/eo.po

File diff suppressed because it is too large Load Diff

432
po/es.po

File diff suppressed because it is too large Load Diff

1007
po/et.po

File diff suppressed because it is too large Load Diff

1768
po/eu.po

File diff suppressed because it is too large Load Diff

1504
po/fr.po

File diff suppressed because it is too large Load Diff

476
po/gl.po

File diff suppressed because it is too large Load Diff

936
po/he.po

File diff suppressed because it is too large Load Diff

879
po/hu.po

File diff suppressed because it is too large Load Diff

165
po/id.po
View File

@ -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-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 21:24+0700\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-10 13:06+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n"
@ -51,7 +51,6 @@ 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"
@ -64,10 +63,6 @@ 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 ""
@ -270,11 +265,6 @@ 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:"
@ -288,10 +278,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:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Batal"
@ -330,8 +320,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Nama pengguna: "
@ -352,42 +342,42 @@ msgstr "Galat otentikasi"
msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Perintah tidak ditemukan"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Tidak dapat mengurai perintah:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Eksekusi '%s' gagal:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:694
msgid "Frequent"
msgstr "Sering"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:701
msgid "All"
msgstr "Semua"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1488
msgid "New Window"
msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
@ -401,8 +391,7 @@ 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/panel.js:807
#: ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Pengaturan"
@ -588,50 +577,50 @@ msgstr "Buka dengan %s"
msgid "Eject"
msgstr "Keluarkan"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Sandi:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Ketik lagi:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:127 ../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: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
#: ../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
msgid "Password: "
msgstr "Sandi: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Tombol: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Identitas: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Sandi kunci privat: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Layanan: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Otentikasi dibutuhkan oleh jaringan nirkabel"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -640,35 +629,35 @@ msgstr ""
"Sandi atau kunci penyandian diperlukan untuk mengakses jaringan nirkabel "
"'%s'."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Otentikasi 802.1X kabel"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Nama jaringan: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "Otentikasi DSL"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "Perlu kode PIN"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN dibutuhkan untuk perangkat data seluler"
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Sandi jaringan data seluler"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Sebuah kata sandi dibutuhkan untuk menyambung ke '%s'."
@ -933,7 +922,7 @@ msgstr "Tilik akun"
msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Jendela"
@ -1074,7 +1063,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Papan Ketik"
@ -1150,11 +1139,11 @@ msgstr "Menu Baki"
msgid "No Messages"
msgstr "Tiada Pesan"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2786
msgid "System Information"
msgstr "Informasi Sistem"
@ -1185,17 +1174,21 @@ msgstr "Gambaran"
msgid "Type to search…"
msgstr "Ketik untuk mencari…"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Aktivitas"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Menu Pengaturan"
#: ../js/ui/panel.js:892
msgid "Top Bar"
msgstr "Bar Atas"
@ -1205,7 +1198,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1233,7 +1226,7 @@ msgstr[0] "%d pemberitahuan baru"
msgid "Lock"
msgstr "Kunci"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar"
@ -1244,11 +1237,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
@ -1330,9 +1323,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1345,55 +1338,55 @@ msgstr "Matikan"
msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d Perangkat Tersambung"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Permintaan otorisasi dari %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Perangkat %s ingin berpasangan dengan komputer ini"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Ijinkan"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Tolak"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Perangkat %s ingin mengakses layanan '%s'"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Selalu berikan akses"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Hanya untuk saat ini"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Tolak"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Konfirmasi berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1401,24 +1394,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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Cocok"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Tidak cocok"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "Permintaan berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "Oke"
@ -1426,7 +1419,7 @@ msgstr "Oke"
msgid "Brightness"
msgstr "Kecerahan"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Tampilkan Tata Letak Papan Tik"
@ -1502,15 +1495,15 @@ msgstr "Nyalakan"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@ -1596,11 +1589,11 @@ msgstr "Masuk sebagai pengguna lain"
msgid "Unlock Window"
msgstr "Buka Kunci Jendela"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Aplikasi"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Cari"

703
po/it.po

File diff suppressed because it is too large Load Diff

167
po/ja.po
View File

@ -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-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 23:30+0900\n"
"POT-Creation-Date: 2013-09-06 21:55+0000\n"
"PO-Revision-Date: 2013-09-07 22:28+0900\n"
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@ -52,7 +52,6 @@ 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 "ウィンドウ管理とアプリケーションの起動"
@ -65,10 +64,6 @@ 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 から開発・テスト用の内部ツールを利用可能にする"
@ -217,10 +212,6 @@ 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:"
@ -234,10 +225,10 @@ msgstr "拡張機能"
msgid "Select an extension to configure using the combobox above."
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "キャンセル"
@ -276,8 +267,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "ユーザー名: "
@ -298,42 +289,42 @@ msgstr "認証エラー"
msgid "(or swipe finger)"
msgstr "(あるいは指でスワイプする)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "コマンドが見つかりません"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "次のコマンドは解析できません:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s'の実行に失敗しました:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:573
msgid "Frequently used applications will appear here"
msgstr "よく使うアプリケーションがここに表示されます"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:689
msgid "Frequent"
msgstr "常用"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:696
msgid "All"
msgstr "すべて"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1491
msgid "New Window"
msgstr "新しいウィンドウで開く"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "お気に入りから削除"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1495
msgid "Add to Favorites"
msgstr "お気に入りに追加"
@ -347,8 +338,7 @@ msgstr "%s をお気に入りに追加しました。"
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
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "設定"
@ -534,83 +524,83 @@ msgstr "%s で開く"
msgid "Eject"
msgstr "取り出し"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "パスワード:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "再入力:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:127 ../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: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
#: ../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
msgid "Password: "
msgstr "パスワード: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "キー: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "識別子: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "プライベートキーパスワード: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "サービス: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "無線ネットワークでは認証が要求されます"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要です。"
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "有線 802.1X の認証"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "ネットワーク名: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL 認証"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr "モバイルブロードバンドデバイスには PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN 番号: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "モバイルブロードバンドネットワークのパスワード"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' への接続にパスワードが必要です。"
@ -866,7 +856,7 @@ msgstr "アカウントを表示"
msgid "Unknown reason"
msgstr "原因不明"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "ウィンドウ"
@ -1004,7 +994,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "キーボード"
@ -1080,11 +1070,11 @@ msgstr "トレイメニュー"
msgid "No Messages"
msgstr "メッセージなし"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "メッセージトレイ"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2787
msgid "System Information"
msgstr "システム情報"
@ -1115,17 +1105,21 @@ msgstr "アクティビティ画面"
msgid "Type to search…"
msgstr "検索ワードを入力…"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "アクティビティ"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "設定メニュー"
#: ../js/ui/panel.js:901
msgid "Top Bar"
msgstr "トップバー"
@ -1134,7 +1128,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -1162,7 +1156,7 @@ msgstr[0] "%d 件の新しい通知"
msgid "Lock"
msgstr "ロック"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "画面をロックする必要があります"
@ -1173,11 +1167,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "ロックできません"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "アプリケーションによってロックがブロックされました"
@ -1259,9 +1253,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1274,78 +1268,78 @@ msgstr "オフにする"
msgid "Bluetooth Settings"
msgstr "Bluetooth の設定"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "接続デバイス: %d台"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "%s からアクセス許可の要求"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "デバイス %s がこのコンピューターとのペアリングを要求しています"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "拒否"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "デバイス '%s' が サービス '%s' へのアクセスを要求しています"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "今回のみ許可"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "拒否"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s からペアリングの確認"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "一致"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "不一致"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "%s からペアリングの要求"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "デバイスの PIN コードを入力してください。"
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "OK"
@ -1353,7 +1347,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "明るさ"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "キーボードレイアウトの表示"
@ -1429,15 +1423,15 @@ msgstr "オンにする"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "ネットワークマネージャー"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "接続失敗"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "ネットワーク接続を有効にできません"
@ -1523,11 +1517,11 @@ msgstr "他のユーザーでログイン"
msgid "Unlock Window"
msgstr "ロック解除"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "アプリケーション"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "検索"
@ -1628,9 +1622,6 @@ 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
View File

@ -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-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-24 06:33+0600\n"
"POT-Creation-Date: 2013-08-30 14:46+0000\n"
"PO-Revision-Date: 2013-08-31 19:43+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n"
@ -48,7 +48,6 @@ 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 "Терезелерді басқару мен қолданбаларды жөнелту"
@ -61,10 +60,6 @@ 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 ""
@ -90,10 +85,6 @@ 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"
@ -104,8 +95,6 @@ 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"
@ -116,8 +105,6 @@ 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"
@ -136,8 +123,6 @@ 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 ""
@ -153,10 +138,6 @@ 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"
@ -226,13 +207,10 @@ 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 ""
@ -256,8 +234,6 @@ 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"
@ -267,10 +243,6 @@ 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:"
@ -284,10 +256,10 @@ msgstr "Кеңейту"
msgid "Select an extension to configure using the combobox above."
msgstr "Жоғарыдағы ашылмалы тізімнен баптау үшін кеңейтуді таңдаңыз."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:679
msgid "Cancel"
msgstr "Бас тарту"
@ -326,8 +298,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Пайдаланушы аты:"
@ -348,42 +320,38 @@ msgstr "Аутентификация қатесі"
msgid "(or swipe finger)"
msgstr "(немесе саусағыңызды өткізіңіз)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Команда табылмады"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Команданы талдау мүмкін емес:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' жөнелту сәтсіз:"
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:386
msgid "Frequent"
msgstr "Жиі"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:393
msgid "All"
msgstr "Барлық"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:991
msgid "New Window"
msgstr "Жаңа терезе"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:994 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:995
msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу"
@ -397,8 +365,7 @@ msgstr "%s таңдамалыларыңызға қосылды."
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
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Баптаулар"
@ -553,7 +520,7 @@ msgstr "Бүгін"
#: ../js/ui/calendar.js:789
msgid "Tomorrow"
msgstr "Ертең"
msgstr "Ертен"
#: ../js/ui/calendar.js:800
msgid "This week"
@ -584,85 +551,85 @@ msgstr "%s көмегімен ашу"
msgid "Eject"
msgstr "Шығару"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Қайтадан енгізіңіз:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:268 ../js/ui/status/network.js:682
msgid "Connect"
msgstr "Байланысу"
#. Cisco LEAP
#: ../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
#: ../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
msgid "Password: "
msgstr "Пароль:"
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Кілт:"
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Анықтағыш:"
msgstr ""
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Жеке кілт паролі:"
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Қызмет:"
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Сымсыз желісі аутентификацияны талап етеді"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Сымды 802.1X аутентификациясы"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Желі аты:"
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL аутентификациясы"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "PIN коды керек"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Сымсыз кеңжолақты желісінің паролі"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
@ -926,7 +893,7 @@ msgstr "Тіркелгіні қарап шығу"
msgid "Unknown reason"
msgstr "Себебі белгісіз"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Терезелер"
@ -936,7 +903,7 @@ msgstr "Қолданбаларды көрсету"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/dash.js:442
#: ../js/ui/dash.js:439
msgid "Dash"
msgstr "Dash"
@ -1020,12 +987,15 @@ 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."
@ -1067,7 +1037,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Пернетақта"
@ -1143,11 +1113,11 @@ msgstr "Трей мәзірі"
msgid "No Messages"
msgstr "Хабарламалар жоқ"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Жүйелік трей"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2786
msgid "System Information"
msgstr "Жүйелік ақпарат"
@ -1178,17 +1148,21 @@ msgstr "Шолу"
msgid "Type to search…"
msgstr "Іздеу үшін теріңіз..."
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Көрініс"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Баптаулар мәзірі"
#: ../js/ui/panel.js:892
msgid "Top Bar"
msgstr "Үстідегі панель"
@ -1197,7 +1171,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1225,7 +1199,7 @@ msgstr[0] "%d жаңа ескерту"
msgid "Lock"
msgstr "Блоктау"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME экранды блоктау керек"
@ -1236,19 +1210,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Блоктау мүмкін емес"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Блоктауды басқа қолданба болдырмады"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:445
msgid "Searching…"
msgstr "Іздеу..."
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:489
msgid "No results."
msgstr "Нәтижелер жоқ."
@ -1322,14 +1296,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: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
#: ../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
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:1027 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Сөндіру"
@ -1337,79 +1311,79 @@ msgstr "Сөндіру"
msgid "Bluetooth Settings"
msgstr "Bluetooth баптаулары"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d байланысқан құрылғы"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "%s жіберген авторизация сұранымы"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Рұқсат ету"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Тайдыру"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "%s құрылғысы '%s' қызметін қатынағысы кеп тұр"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Әрқашан рұқсат ету"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Тек осы ретке рұқсат ету"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Болдырмау"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s жіберген парлау растауы"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Сәйкес"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Сәйкес емес"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "%s үшін парлау сұранымы"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Құрылғыда көрсетілген PIN кодын енгізіңіз."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "ОК"
@ -1417,7 +1391,7 @@ msgstr "ОК"
msgid "Brightness"
msgstr "Жарықтылығы"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Пернетақта жаймасын көрсету"
@ -1425,83 +1399,83 @@ msgstr "Пернетақта жаймасын көрсету"
msgid "<unknown>"
msgstr "<белгісіз>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:196 ../js/ui/status/network.js:1042
msgid "Off"
msgstr "Сөнд."
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/network.js:269 ../js/ui/status/network.js:948
#: ../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:364
#: ../js/ui/status/network.js:357
msgid "unmanaged"
msgstr "басқарылмайтын"
#: ../js/ui/status/network.js:366
#: ../js/ui/status/network.js:359
msgid "disconnecting..."
msgstr "байланысты үзу..."
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:365 ../js/ui/status/network.js:1093
msgid "connecting..."
msgstr "байланысты орнату..."
#. 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:368 ../js/ui/status/network.js:1096
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:383
#: ../js/ui/status/network.js:376
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:387
#: ../js/ui/status/network.js:380
msgid "unavailable"
msgstr "қолжетерсіз"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:382 ../js/ui/status/network.js:1098
msgid "connection failed"
msgstr "байланысты орнату сәтсіз"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:647
msgid "Wi-Fi Networks"
msgstr "Wi-Fi желілері"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:649
msgid "Select a network"
msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:673
msgid "No Networks"
msgstr "Желілер жоқ"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:942
msgid "Select Network"
msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:1027
msgid "Turn On"
msgstr "Іске қосу"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1160
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1299
msgid "Network Manager"
msgstr "Желілер басқарушысы"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1338
msgid "Connection failed"
msgstr "Байланыс орнату сәтсіз"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1339
msgid "Activation of network connection failed"
msgstr "Желілік байланысты белсендіру сәтсіз"
@ -1587,11 +1561,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
msgid "Unlock Window"
msgstr "Блоктауды алу терезесі"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Қолданбалар"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Іздеу"
@ -1607,7 +1581,7 @@ msgstr ""
#: ../js/ui/wanda.js:81
#, c-format
msgid "%s the Oracle says"
msgstr "Болжаушы айтады: %s"
msgstr ""
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
@ -1691,6 +1665,3 @@ msgstr "Пароль бос болуы мүмкін емес"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация терезесін пайдаланушы тайдырды"
#~ msgid "Settings Menu"
#~ msgstr "Баптаулар мәзірі"

1480
po/ko.po

File diff suppressed because it is too large Load Diff

411
po/lt.po

File diff suppressed because it is too large Load Diff

184
po/lv.po
View File

@ -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-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-26 23:29+0300\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-10 21:28+0300\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n"
@ -50,7 +50,6 @@ 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"
@ -63,10 +62,6 @@ 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 ""
@ -184,10 +179,12 @@ 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."
@ -262,10 +259,6 @@ 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:"
@ -279,10 +272,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:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Atcelt"
@ -301,6 +294,7 @@ msgid "Sign In"
msgstr "Ierakstīties"
#: ../js/gdm/loginDialog.js:294
#| msgid "Switch Session"
msgid "Choose Session"
msgstr "Izvēlieties sesiju"
@ -321,8 +315,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Lietotājvārds: "
@ -343,42 +337,42 @@ msgstr "Autentifikācijas kļūda"
msgid "(or swipe finger)"
msgstr "(vai velciet pirkstu)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Komanda nav atrasta"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Neizdevās apstrādāt komandu:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "“%s” izpilde neizdevās:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here"
msgstr "Šeit parādīsies biežāk izmantotās lietotnes"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:694
msgid "Frequent"
msgstr "Biežāk izmantotās"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:701
msgid "All"
msgstr "Visas"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1488
msgid "New Window"
msgstr "Jauns logs"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Izņemt no izlases"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites"
msgstr "Pievienot izlasei"
@ -392,8 +386,7 @@ 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/panel.js:807
#: ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Iestatījumi"
@ -579,50 +572,50 @@ msgstr "Atvērt ar %s"
msgid "Eject"
msgstr "Izgrūst"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Parole:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Ierakstiet vēlreiz:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:127 ../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: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
#: ../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
msgid "Password: "
msgstr "Parole: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Atslēga: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Identitāte: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Privātās atslēgas parole: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Serviss: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Bezvadu tīkls pieprasa autentifikāciju"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -631,35 +624,35 @@ msgstr ""
"Lai piekļūtu bezvadu tīklam “%s”, ir nepieciešamas paroles vai šifrēšanas "
"atslēgas."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Vadu 802.1X autentifikācija"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Tīkla nosaukums: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL autentifikācija"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "Nepieciešams PIN kods"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
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:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Mobilās platjoslas tīkla parole"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Lai savienotos ar “%s”, ir nepieciešama parole."
@ -925,7 +918,7 @@ msgstr "Skatīt kontu"
msgid "Unknown reason"
msgstr "Nezināms iemesls"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Logi"
@ -1027,12 +1020,15 @@ 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."
@ -1080,7 +1076,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Tastatūra"
@ -1156,11 +1152,11 @@ msgstr "Paplātes izvēlne"
msgid "No Messages"
msgstr "Nav ziņojumu"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Ziņojumu paplāte"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2786
msgid "System Information"
msgstr "Sistēmas informācija"
@ -1193,17 +1189,22 @@ msgstr "Pārskats"
msgid "Type to search…"
msgstr "Rakstiet, lai meklētu…"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Aktivitātes"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
#| msgid "Settings"
msgid "Settings Menu"
msgstr "Iestatījumu izvēlne"
#: ../js/ui/panel.js:892
msgid "Top Bar"
msgstr "Augšējā josla"
@ -1212,7 +1213,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1242,7 +1243,7 @@ msgstr[2] "%d jaunu paziņojumu"
msgid "Lock"
msgstr "Bloķēt"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME vajag bloķēt ekrānu"
@ -1253,11 +1254,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Nevar bloķēt"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Lietotne neļāva bloķēt"
@ -1339,9 +1340,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1354,81 +1355,83 @@ msgstr "Izslēgt"
msgid "Bluetooth Settings"
msgstr "Bluetooth iestatījumi"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, 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:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Autorizācijas pieprasījums no %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, 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:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Atļaut"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Liegt"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Ierīce %s prasa pieeju “%s” servisam"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Vienmēr piešķirt pieeju"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Piešķirt tikai šoreiz"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Noraidīt"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s pārošanas apstiprinājums"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Sakrīt"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Nesakrīt"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "%s pārošanas pieprasījums"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Lūdzu, ievadiet PIN, kas redzams uz ierīces."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "Labi"
@ -1436,7 +1439,7 @@ msgstr "Labi"
msgid "Brightness"
msgstr "Gaišums"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Rādīt tastatūras izkārtojumu"
@ -1445,6 +1448,7 @@ msgid "<unknown>"
msgstr "<nezināms>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#| msgid "Offline"
msgid "Off"
msgstr "Izslēgts"
@ -1489,18 +1493,22 @@ 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"
@ -1512,15 +1520,15 @@ msgstr "Ieslēgt"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Tīkla pārvaldnieks"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Neizdevās savienoties"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Neizdevās tīkla savienojuma aktivēšana"
@ -1563,6 +1571,7 @@ msgid "Airplane Mode"
msgstr "Lidmašīnas režīms"
#: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On"
msgstr "Ieslēgt"
@ -1606,11 +1615,11 @@ msgstr "Ierakstīties kā citam lietotājam"
msgid "Unlock Window"
msgstr "Atbloķēšanas logs"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Lietotnes"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Meklēt"
@ -1641,6 +1650,7 @@ 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"
@ -1717,10 +1727,6 @@ 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
View File

@ -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-29 11:27+0200\n"
"PO-Revision-Date: 2013-09-24 19:38+0200\n"
"POT-Creation-Date: 2013-09-08 11:22+0200\n"
"PO-Revision-Date: 2013-09-08 11:23+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,7 +47,6 @@ 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"
@ -60,10 +59,6 @@ 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"
@ -248,10 +243,6 @@ 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:"
@ -265,10 +256,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:136
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../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:222 ../js/ui/status/network.js:692
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Avbryt"
@ -307,8 +298,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Brukernavn: "
@ -329,42 +320,42 @@ msgstr "Autentiseringsfeil"
msgid "(or swipe finger)"
msgstr "(eller dra finger)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Kommando ikke funnet"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Klarte ikke å lese kommando:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Kjøring av «%s» feilet:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:573
msgid "Frequently used applications will appear here"
msgstr "Ofte brukte programmer vil vises her"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:689
msgid "Frequent"
msgstr "Ofte"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:696
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1491
msgid "New Window"
msgstr "Nytt vindu"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1495
msgid "Add to Favorites"
msgstr "Legg til i favoritter"
@ -378,8 +369,7 @@ 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/panel.js:808
#: ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Innstillinger"
@ -565,50 +555,50 @@ msgstr "Åpne med %s"
msgid "Eject"
msgstr "Løs ut"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passord:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Skriv på nytt:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Koble til"
#. Cisco LEAP
#: ../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
#: ../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
msgid "Password: "
msgstr "Passord: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Nøkkel: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Identitet: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Passord for privat nøkkel: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Tjeneste: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Autentisering kreves av trådløst nettverk"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -617,35 +607,35 @@ msgstr ""
"Passord eller krypteringsnøkler kreves for å koble til trådløst nettverk "
"«%s»."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "802.1X autentisering for trådbundet nettverk"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Navn på nettverk: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "DSL-autentisering"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "PIN-kode kreves"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-kode kreves for mobil bredbåndsenhet"
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Nettverkspassord for mobilt bredbånd"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Et passord kreves for å koble til «%s»."
@ -909,7 +899,7 @@ msgstr "Vis konto"
msgid "Unknown reason"
msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Vinduer"
@ -1057,7 +1047,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:333
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Tastatur"
@ -1133,11 +1123,11 @@ msgstr "Meny for varslingsområde"
msgid "No Messages"
msgstr "Ingen meldinger"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Meldingstrau"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2787
msgid "System Information"
msgstr "Systeminformasjon"
@ -1169,17 +1159,21 @@ msgstr "Oversikt"
msgid "Type to search…"
msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:904
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Meny for innstillinger"
#: ../js/ui/panel.js:901
msgid "Top Bar"
msgstr "Topp-panel"
@ -1188,7 +1182,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1217,7 +1211,7 @@ msgstr[1] "%d nye varslinger"
msgid "Lock"
msgstr "Lås"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME må låse skjermen"
@ -1228,19 +1222,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:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Kan ikke låse"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Låsing ble stoppet av et program"
#: ../js/ui/searchDisplay.js:448
#: ../js/ui/searchDisplay.js:447
msgid "Searching…"
msgstr "Søker …"
#: ../js/ui/searchDisplay.js:492
#: ../js/ui/searchDisplay.js:491
msgid "No results."
msgstr "Ingen resultater."
@ -1314,14 +1308,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Slå av"
@ -1329,80 +1323,80 @@ msgstr "Slå av"
msgid "Bluetooth Settings"
msgstr "Innstillinger for Bluetooth"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, 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:101 ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Forespørsel om autorisering fra %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, 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:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Tillat"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Nekt"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, 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:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Alltid gi tilgang"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Gi tilgang kun denne ene gangen"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Avvis"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Bekreftelse for tilkobling for %s"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Stemmer overens"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Stemmer ikke overens"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "Forespørsel om tilkobling for %s"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "OK"
@ -1410,7 +1404,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Lysstyrke"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Vis tastaturutforming"
@ -1418,11 +1412,11 @@ msgstr "Vis tastaturutforming"
msgid "<unknown>"
msgstr "<ukjent>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
msgid "Off"
msgstr "Av"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Innstillinger for nettverk"
@ -1437,12 +1431,12 @@ msgstr "ikke håndtert"
msgid "disconnecting..."
msgstr "kobler fra …"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
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:1109
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
msgid "authentication required"
msgstr "autentisering kreves"
@ -1458,43 +1452,43 @@ msgstr "fastvare mangler"
msgid "unavailable"
msgstr "ikke tilgjengelig"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
msgid "connection failed"
msgstr "tilkobling feilet"
#: ../js/ui/status/network.js:660
#: ../js/ui/status/network.js:654
msgid "Wi-Fi Networks"
msgstr "Wi-Fi nettverk"
#: ../js/ui/status/network.js:662
#: ../js/ui/status/network.js:656
msgid "Select a network"
msgstr "Velg et nettverk"
#: ../js/ui/status/network.js:686
#: ../js/ui/status/network.js:680
msgid "No Networks"
msgstr "Ingen nettverk"
#: ../js/ui/status/network.js:955
#: ../js/ui/status/network.js:949
msgid "Select Network"
msgstr "Velg nettverk"
#: ../js/ui/status/network.js:1040
#: ../js/ui/status/network.js:1034
msgid "Turn On"
msgstr "Slå på"
#: ../js/ui/status/network.js:1173
#: ../js/ui/status/network.js:1167
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1313
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Nettverkshåndtering"
#: ../js/ui/status/network.js:1352
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Tilkobling feilet"
#: ../js/ui/status/network.js:1353
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Aktivering av nettverkstilkobling feilet"
@ -1580,11 +1574,11 @@ msgstr "Logg inn som en annen bruker"
msgid "Unlock Window"
msgstr "Lås opp vindu"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Programmer"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Søk"
@ -1687,6 +1681,3 @@ 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"

1494
po/nl.po

File diff suppressed because it is too large Load Diff

475
po/pa.po

File diff suppressed because it is too large Load Diff

454
po/pl.po

File diff suppressed because it is too large Load Diff

1629
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2626
po/ro.po

File diff suppressed because it is too large Load Diff

190
po/ru.po
View File

@ -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-23 15:02+0000\n"
"PO-Revision-Date: 2013-09-24 12:18+0300\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-07 23:11+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: Poedit 1.5.7\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"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -54,7 +54,6 @@ 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 "Управление окнами и запуск приложений"
@ -67,10 +66,6 @@ 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 для разработчиков и тестеров"
@ -220,10 +215,6 @@ 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:"
@ -238,12 +229,12 @@ msgid "Select an extension to configure using the combobox above."
msgstr "Выберите расширение из выпадающего списка."
#: ../js/gdm/authPrompt.js:145
#: ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/networkAgent.js:132
#: ../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:222
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Отмена"
@ -286,8 +277,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:259
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
msgid "Username: "
msgstr "Имя пользователя: "
@ -308,43 +299,43 @@ msgstr "Ошибка проверки подлинности"
msgid "(or swipe finger)"
msgstr "(или проведите пальцем по считывающему устройству)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:97
msgid "Command not found"
msgstr "Команда не найдена"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:131
#: ../js/misc/util.js:130
msgid "Could not parse command:"
msgstr "Не удалось разобрать команду:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:138
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не удалось выполнить «%s»:"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here"
msgstr "Здесь появляются часто используемые приложения"
#: ../js/ui/appDisplay.js:712
#: ../js/ui/appDisplay.js:694
msgid "Frequent"
msgstr "Популярные"
#: ../js/ui/appDisplay.js:719
#: ../js/ui/appDisplay.js:701
msgid "All"
msgstr "Все"
#: ../js/ui/appDisplay.js:1514
#: ../js/ui/appDisplay.js:1488
msgid "New Window"
msgstr "Новое окно"
#: ../js/ui/appDisplay.js:1517
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Удалить из избранного"
#: ../js/ui/appDisplay.js:1518
#: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites"
msgstr "Добавить в избранное"
@ -359,7 +350,6 @@ 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 "Параметры"
@ -546,16 +536,16 @@ msgstr "Открыть с помощью %s"
msgid "Eject"
msgstr "Извлечь"
#: ../js/ui/components/keyring.js:91
#: ../js/ui/components/keyring.js:88
#: ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:110
#: ../js/ui/components/keyring.js:107
msgid "Type again:"
msgstr "Введите ещё раз:"
#: ../js/ui/components/networkAgent.js:131
#: ../js/ui/components/networkAgent.js:127
#: ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275
#: ../js/ui/status/network.js:689
@ -563,69 +553,69 @@ msgid "Connect"
msgstr "Соединиться"
#. Cisco LEAP
#: ../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
#: ../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
msgid "Password: "
msgstr "Пароль: "
#. static WEP
#: ../js/ui/components/networkAgent.js:227
#: ../js/ui/components/networkAgent.js:223
msgid "Key: "
msgstr "Ключ: "
#: ../js/ui/components/networkAgent.js:265
#: ../js/ui/components/networkAgent.js:261
msgid "Identity: "
msgstr "Идентичность: "
#: ../js/ui/components/networkAgent.js:267
#: ../js/ui/components/networkAgent.js:263
msgid "Private key password: "
msgstr "Пароль личного ключа: "
#: ../js/ui/components/networkAgent.js:279
#: ../js/ui/components/networkAgent.js:275
msgid "Service: "
msgstr "Служба: "
#: ../js/ui/components/networkAgent.js:308
#: ../js/ui/components/networkAgent.js:304
msgid "Authentication required by wireless network"
msgstr "Беспроводная сеть требует подтверждения подлинности"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:305
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
#: ../js/ui/components/networkAgent.js:313
#: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication"
msgstr "Аутентификация Wired 802.1X"
#: ../js/ui/components/networkAgent.js:315
#: ../js/ui/components/networkAgent.js:311
msgid "Network name: "
msgstr "Название сети: "
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:316
msgid "DSL authentication"
msgstr "Аутентификация DSL"
#: ../js/ui/components/networkAgent.js:327
#: ../js/ui/components/networkAgent.js:323
msgid "PIN code required"
msgstr "Требуется PIN-код"
#: ../js/ui/components/networkAgent.js:328
#: ../js/ui/components/networkAgent.js:324
msgid "PIN code is needed for the mobile broadband device"
msgstr "Для широкополосного мобильного устройства требуется PIN-код "
#: ../js/ui/components/networkAgent.js:329
#: ../js/ui/components/networkAgent.js:325
msgid "PIN: "
msgstr "PIN-код: "
#: ../js/ui/components/networkAgent.js:335
#: ../js/ui/components/networkAgent.js:331
msgid "Mobile broadband network password"
msgstr "Пароль для мобильной широкополосной сети"
#: ../js/ui/components/networkAgent.js:336
#: ../js/ui/components/networkAgent.js:332
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Для подключения к «%s» требуется пароль."
@ -883,7 +873,7 @@ msgid "Unknown reason"
msgstr "Неизвестная причина"
#: ../js/ui/ctrlAltTab.js:29
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:96
msgid "Windows"
msgstr "Окна"
@ -987,12 +977,15 @@ 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 секунду."
@ -1034,7 +1027,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:333
#: ../js/ui/status/keyboard.js:334
msgid "Keyboard"
msgstr "Клавиатура"
@ -1112,11 +1105,11 @@ msgstr "Меню панели"
msgid "No Messages"
msgstr "Нет сообщений"
#: ../js/ui/messageTray.js:1813
#: ../js/ui/messageTray.js:1812
msgid "Message Tray"
msgstr "Панель сообщений"
#: ../js/ui/messageTray.js:2788
#: ../js/ui/messageTray.js:2786
msgid "System Information"
msgstr "Системная информация"
@ -1151,17 +1144,22 @@ msgstr "Обзор"
msgid "Type to search…"
msgstr "Найти…"
#: ../js/ui/panel.js:518
#: ../js/ui/panel.js:516
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:570
#: ../js/ui/panel.js:568
msgid "Activities"
msgstr "Обзор"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:805
#| msgid "Settings"
msgid "Settings Menu"
msgstr "Меню параметров"
#: ../js/ui/panel.js:892
msgid "Top Bar"
msgstr "Верхняя панель"
@ -1170,7 +1168,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:233
#: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1201,7 +1199,7 @@ msgstr[2] "%d новых уведомлений"
msgid "Lock"
msgstr "Заблокировать"
#: ../js/ui/screenShield.js:704
#: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen"
msgstr "GNOME необходимо заблокировать экран"
@ -1212,13 +1210,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:831
#: ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:830
#: ../js/ui/screenShield.js:1296
msgid "Unable to lock"
msgstr "Не удалось заблокировать"
#: ../js/ui/screenShield.js:832
#: ../js/ui/screenShield.js:1298
#: ../js/ui/screenShield.js:831
#: ../js/ui/screenShield.js:1297
msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение"
@ -1301,11 +1299,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: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
#: ../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
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1320,7 +1318,7 @@ msgstr "Выключить"
msgid "Bluetooth Settings"
msgstr "Настроить Bluetooth"
#: ../js/ui/status/bluetooth.js:58
#: ../js/ui/status/bluetooth.js:57
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1328,74 +1326,74 @@ msgstr[0] "Подключено %d устройство"
msgstr[1] "Подключено %d устройства"
msgstr[2] "Подключено %d устройств"
#: ../js/ui/status/bluetooth.js:101
#: ../js/ui/status/bluetooth.js:129
#: ../js/ui/status/bluetooth.js:100
#: ../js/ui/status/bluetooth.js:128
#, c-format
msgid "Authorization request from %s"
msgstr "Запрос авторизации от %s"
#: ../js/ui/status/bluetooth.js:107
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:106
#: ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Устройство %s пытается выполнить сопряжение с этим компьютером"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:108
msgid "Allow"
msgstr "Разрешить"
#: ../js/ui/status/bluetooth.js:110
#: ../js/ui/status/bluetooth.js:109
msgid "Deny"
msgstr "Отклонить"
#: ../js/ui/status/bluetooth.js:135
#: ../js/ui/status/bluetooth.js:134
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Устройство %s пытается получить доступ к службе «%s»"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:136
msgid "Always grant access"
msgstr "Всегда предоставлять доступ"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only"
msgstr "Предоставить единовременно"
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:138
msgid "Reject"
msgstr "Отклонить"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:166
#: ../js/ui/status/bluetooth.js:165
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Подтверждение на сопряжение с %s"
#: ../js/ui/status/bluetooth.js:173
#: ../js/ui/status/bluetooth.js:172
#, 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:176
#: ../js/ui/status/bluetooth.js:175
msgid "Matches"
msgstr "Совпадает"
#: ../js/ui/status/bluetooth.js:177
#: ../js/ui/status/bluetooth.js:176
msgid "Does not match"
msgstr "Не совпадает"
#: ../js/ui/status/bluetooth.js:196
#: ../js/ui/status/bluetooth.js:195
#, c-format
msgid "Pairing request for %s"
msgstr "Запрос на сопряжение c %s"
#: ../js/ui/status/bluetooth.js:204
#: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device."
msgstr "Введите PIN-код указанный на устройстве."
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:220
msgid "OK"
msgstr "OK"
@ -1403,7 +1401,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Яркость"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout"
msgstr "Показать раскладку клавиатуры"
@ -1469,6 +1467,7 @@ msgid "Select a network"
msgstr "Выберите сеть"
#: ../js/ui/status/network.js:680
#| msgid "Wi-Fi Networks"
msgid "No Networks"
msgstr "Сети отсутствуют"
@ -1484,15 +1483,15 @@ msgstr "Включить"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1306
msgid "Network Manager"
msgstr "Диспетчер сети"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1345
msgid "Connection failed"
msgstr "Сбой подключения"
#: ../js/ui/status/network.js:1347
#: ../js/ui/status/network.js:1346
msgid "Activation of network connection failed"
msgstr "Не удалось активировать сетевое подключение"
@ -1519,12 +1518,14 @@ 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%%)"
@ -1536,6 +1537,7 @@ msgid "Airplane Mode"
msgstr "Режим перелёта"
#: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On"
msgstr "Включено"
@ -1579,11 +1581,11 @@ msgstr "Войти от имени другого пользователя"
msgid "Unlock Window"
msgstr "Разблокировать окно"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:100
msgid "Applications"
msgstr "Приложения"
#: ../js/ui/viewSelector.js:108
#: ../js/ui/viewSelector.js:104
msgid "Search"
msgstr "Поиск"
@ -1614,6 +1616,7 @@ msgstr "Хотите сохранить эти параметры дисплея
#. to avoid ellipsizing the labels.
#.
#: ../js/ui/windowManager.js:75
#| msgid "Power Settings"
msgid "Revert Settings"
msgstr "Вернуть параметры"
@ -1690,9 +1693,6 @@ msgstr "Пароль не может быть пустым"
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем"
#~ msgid "Settings Menu"
#~ msgstr "Меню параметров"
#~ msgid "Screenshots"
#~ msgstr "Снимки экрана"

550
po/sk.po

File diff suppressed because it is too large Load Diff

432
po/sl.po

File diff suppressed because it is too large Load Diff

435
po/tg.po

File diff suppressed because it is too large Load Diff

1413
po/tr.po

File diff suppressed because it is too large Load Diff

415
po/uk.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,7 @@
st_cflags = \
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
-I$(top_srcdir)/src \
-DPREFIX=\""$(prefix)"\" \
-DLIBDIR=\""$(libdir)"\" \

View File

@ -68,6 +68,9 @@ 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)\" \

View File

@ -28,14 +28,11 @@
#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"
@ -344,13 +341,8 @@ 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 for XDND
* Pass the event to shell-global
*/
if (_shell_global_check_xdnd_event (shell_plugin->global, xev))
return TRUE;

View File

@ -12,9 +12,9 @@ G_BEGIN_DECLS
ShellApp* _shell_app_new_for_window (MetaWindow *window);
ShellApp* _shell_app_new (GDesktopAppInfo *info);
ShellApp* _shell_app_new (GMenuTreeEntry *entry);
void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info);
void _shell_app_set_entry (ShellApp *app, GMenuTreeEntry *entry);
void _shell_app_handle_startup_sequence (ShellApp *app, SnStartupSequence *sequence);

View File

@ -38,12 +38,18 @@ 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_id;
GHashTable *startup_wm_class_to_app;
GSList *known_vendor_prefixes;
};
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);
@ -71,45 +77,10 @@ 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,
@ -120,11 +91,19 @@ shell_app_system_init (ShellAppSystem *self)
NULL,
(GDestroyNotify)g_object_unref);
priv->startup_wm_class_to_id = g_hash_table_new (g_str_hash, g_str_equal);
/* 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);
monitor = g_app_info_monitor_get ();
g_signal_connect (monitor, "changed", G_CALLBACK (installed_changed), self);
installed_changed (monitor, self);
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);
}
static void
@ -133,13 +112,313 @@ 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->startup_wm_class_to_id);
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_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:
*
@ -167,20 +446,61 @@ ShellApp *
shell_app_system_lookup_app (ShellAppSystem *self,
const char *id)
{
ShellAppSystemPrivate *priv = self->priv;
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;
ShellApp *app;
GDesktopAppInfo *info;
app = g_hash_table_lookup (priv->id_to_app, id);
if (app)
return app;
basename = g_strrstr (desktop_path, "/");
if (basename)
basename += 1;
else
basename = desktop_path;
info = g_desktop_app_info_new (id);
if (!info)
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)
return NULL;
app = _shell_app_new (info);
g_hash_table_insert (priv->id_to_app, (char *) id, app);
return app;
}
@ -200,15 +520,15 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *name)
{
ShellApp *result;
const char *const *prefix;
GSList *prefix;
result = shell_app_system_lookup_app (system, name);
if (result != NULL)
return result;
for (prefix = vendor_prefixes; *prefix != NULL; prefix++)
for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
{
char *tmpid = g_strconcat (*prefix, name, NULL);
char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
result = shell_app_system_lookup_app (system, tmpid);
g_free (tmpid);
if (result != NULL)
@ -283,16 +603,10 @@ ShellApp *
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass)
{
const char *id;
if (wmclass == NULL)
return NULL;
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);
return g_hash_table_lookup (system->priv->startup_wm_class_to_app, wmclass);
}
void
@ -304,7 +618,6 @@ _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:
@ -347,3 +660,136 @@ 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);
}

View File

@ -5,6 +5,8 @@
#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"
@ -37,8 +39,14 @@ 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);
@ -49,4 +57,10 @@ 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__ */

View File

@ -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
* @id_a: ID of first app
* @id_b: ID of second app
* @app_a: First app
* @app_b: Second app
*
* Compare @id_a and @id_b based on frequency of use.
* Compare @app_a and @app_b based on frequency of use.
*
* 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.
* 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.
*/
int
shell_app_usage_compare (ShellAppUsage *self,
const char *context,
const char *id_a,
const char *id_b)
ShellApp *app_a,
ShellApp *app_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, id_a);
usage_b = g_hash_table_lookup (usages, id_b);
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));
if (usage_a == NULL && usage_b == NULL)
return 0;

View File

@ -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,
const char *id_a,
const char *id_b);
ShellApp *app_a,
ShellApp *app_b);
G_END_DECLS

View File

@ -53,7 +53,7 @@ typedef struct {
* SECTION:shell-app
* @short_description: Object representing an application
*
* This object wraps a #GDesktopAppInfo, providing methods and signals
* This object wraps a #GMenuTreeEntry, providing methods and signals
* primarily useful for running applications.
*/
struct _ShellApp
@ -64,7 +64,7 @@ struct _ShellApp
ShellAppState state;
GDesktopAppInfo *info; /* If NULL, this app is backed by one or more
GMenuTreeEntry *entry; /* 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->info)
return g_app_info_get_id (G_APP_INFO (app->info));
if (app->entry)
return gmenu_tree_entry_get_desktop_file_id (app->entry);
return app->window_id_string;
}
static MetaWindow *
window_backed_app_get_window (ShellApp *app)
{
g_assert (app->info == NULL);
g_assert (app->entry == 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->info == NULL)
if (app->entry == NULL)
return window_backed_app_get_icon (app, size);
icon = g_app_info_get_icon (G_APP_INFO (app->info));
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
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 CoglHandle
static CoglTexture *
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;
CoglHandle texture;
CoglTexture *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 (app->info));
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
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 COGL_INVALID_HANDLE;
return NULL;
pixbuf = gtk_icon_info_load_icon (info, NULL);
g_object_unref (info);
if (pixbuf == NULL)
return COGL_INVALID_HANDLE;
return NULL;
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)
{
CoglHandle texture;
CoglTexture *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->info)
if (!app->entry)
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 != COGL_INVALID_HANDLE)
if (texture != NULL)
{
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->info)
return g_app_info_get_name (G_APP_INFO (app->info));
if (app->entry)
return g_app_info_get_name (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
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->info)
return g_app_info_get_description (G_APP_INFO (app->info));
if (app->entry)
return g_app_info_get_description (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
else
return NULL;
}
@ -417,7 +417,7 @@ shell_app_get_description (ShellApp *app)
gboolean
shell_app_is_window_backed (ShellApp *app)
{
return app->info == NULL;
return app->entry == NULL;
}
typedef struct {
@ -653,7 +653,6 @@ 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;
}
@ -670,7 +669,7 @@ void
shell_app_open_new_window (ShellApp *app,
int workspace)
{
g_return_if_fail (app->info != NULL);
g_return_if_fail (app->entry != NULL);
/* Here we just always launch the application again, even if we know
* it was already running. For most applications this
@ -865,24 +864,25 @@ _shell_app_new_for_window (MetaWindow *window)
}
ShellApp *
_shell_app_new (GDesktopAppInfo *info)
_shell_app_new (GMenuTreeEntry *info)
{
ShellApp *app;
app = g_object_new (SHELL_TYPE_APP, NULL);
_shell_app_set_app_info (app, info);
_shell_app_set_entry (app, info);
return app;
}
void
_shell_app_set_app_info (ShellApp *app,
GDesktopAppInfo *info)
_shell_app_set_entry (ShellApp *app,
GMenuTreeEntry *entry)
{
g_clear_object (&app->info);
app->info = g_object_ref (info);
if (app->entry != NULL)
gmenu_tree_item_unref (app->entry);
app->entry = gmenu_tree_item_ref (entry);
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,8 +960,10 @@ application_properties_changed (GDBusConnection *connection,
{
ShellApp *app = user_data;
GVariant *changed_properties;
GVariantIter iter;
gboolean busy = FALSE;
const gchar *interface_name_for_signal;
const gchar *key, *interface_name_for_signal;
GVariant *value;
g_variant_get (parameters,
"(&s@a{sv}as)",
@ -972,7 +974,19 @@ application_properties_changed (GDBusConnection *connection,
if (g_strcmp0 (interface_name_for_signal, "org.gtk.Application") != 0)
return;
g_variant_lookup (changed_properties, "Busy", "b", &busy);
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;
}
if (busy)
shell_app_state_transition (app, SHELL_APP_STATE_BUSY);
@ -1187,6 +1201,7 @@ shell_app_launch (ShellApp *app,
char **startup_id,
GError **error)
{
GDesktopAppInfo *gapp;
GdkAppLaunchContext *context;
gboolean ret;
ShellGlobal *global;
@ -1196,7 +1211,7 @@ shell_app_launch (ShellApp *app,
if (startup_id)
*startup_id = NULL;
if (app->info == NULL)
if (app->entry == NULL)
{
MetaWindow *window = window_backed_app_get_window (app);
/* We can't pass URIs into a window; shouldn't hit this
@ -1222,7 +1237,8 @@ shell_app_launch (ShellApp *app,
gdk_app_launch_context_set_timestamp (context, timestamp);
gdk_app_launch_context_set_desktop (context, workspace);
ret = g_desktop_app_info_launch_uris_as_manager (app->info, uris,
gapp = gmenu_tree_entry_get_app_info (app->entry);
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
G_APP_LAUNCH_CONTEXT (context),
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL,
@ -1242,7 +1258,21 @@ shell_app_launch (ShellApp *app,
GDesktopAppInfo *
shell_app_get_app_info (ShellApp *app)
{
return app->info;
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;
}
static void
@ -1357,22 +1387,24 @@ shell_app_init_search_data (ShellApp *app)
const char *exec;
const char * const *keywords;
char *normalized_exec;
GDesktopAppInfo *appinfo;
name = g_app_info_get_name (G_APP_INFO (app->info));
appinfo = gmenu_tree_entry_get_app_info (app->entry);
name = g_app_info_get_name (G_APP_INFO (appinfo));
app->casefolded_name = shell_util_normalize_casefold_and_unaccent (name);
generic_name = g_desktop_app_info_get_generic_name (app->info);
generic_name = g_desktop_app_info_get_generic_name (appinfo);
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 (app->info));
exec = g_app_info_get_executable (G_APP_INFO (appinfo));
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 (app->info);
keywords = g_desktop_app_info_get_keywords (appinfo);
if (keywords)
{
@ -1493,14 +1525,16 @@ _shell_app_do_match (ShellApp *app,
GSList **substring_results)
{
ShellAppSearchMatch match;
GAppInfo *appinfo;
g_assert (app != NULL);
/* Skip window-backed apps */
if (app->info == NULL)
appinfo = (GAppInfo*)shell_app_get_app_info (app);
if (appinfo == NULL)
return;
/* Skip not-visible apps */
if (!g_app_info_should_show (G_APP_INFO (app->info)))
if (!g_app_info_should_show (appinfo))
return;
match = _shell_app_match_search_terms (app, terms);
@ -1529,7 +1563,11 @@ shell_app_dispose (GObject *object)
{
ShellApp *app = SHELL_APP (object);
g_clear_object (&app->info);
if (app->entry)
{
gmenu_tree_item_unref (app->entry);
app->entry = NULL;
}
if (app->running_state)
{

View File

@ -4,8 +4,9 @@
#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
@ -38,6 +39,7 @@ 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);

View File

@ -27,7 +27,6 @@
#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
@ -52,7 +51,7 @@ struct _ShellGlobal {
ClutterStage *stage;
Window stage_xwindow;
GdkWindow *ibus_window;
GdkWindow *stage_gdk_window;
MetaDisplay *meta_display;
GdkDisplay *gdk_display;
@ -600,6 +599,91 @@ 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
@ -793,9 +877,13 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
{
if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE)
{
ShellGlobal *global = data;
ClutterActor *stage;
Window stage_xwindow;
if (event_gdk->key.window == global->ibus_window)
stage = CLUTTER_ACTOR (data);
stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow)
{
ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager,
@ -805,7 +893,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 (global->stage);
event_clutter->key.stage = CLUTTER_STAGE (stage);
event_clutter->key.source = NULL;
/* This depends on ClutterModifierType and GdkModifierType being
@ -828,16 +916,6 @@ 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)
@ -857,38 +935,9 @@ _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));
#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);
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);
g_signal_connect (global->stage, "notify::width",
G_CALLBACK (global_stage_notify_width), global);
@ -917,7 +966,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, NULL);
gdk_event_handler_set (gnome_shell_gdk_event_handler, global->stage, NULL);
global->focus_manager = st_focus_manager_get_for_stage (global->stage);
}
@ -992,8 +1041,7 @@ void
shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp)
{
if (global->stage_xwindow != None)
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
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.
@ -1243,6 +1291,9 @@ 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,
@ -1250,13 +1301,18 @@ shell_global_get_pointer (ShellGlobal *global,
int *y,
ClutterModifierType *mods)
{
ClutterModifierType raw_mods;
MetaCursorTracker *tracker;
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
GdkScreen *gscreen;
GdkModifierType raw_mods;
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;
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;
}
/**
@ -1271,10 +1327,19 @@ void
shell_global_sync_pointer (ShellGlobal *global)
{
int x, y;
ClutterModifierType mods;
GdkModifierType mods;
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
GdkScreen *gscreen;
ClutterMotionEvent event;
shell_global_get_pointer (global, &x, &y, &mods);
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);
event.type = CLUTTER_MOTION;
event.time = shell_global_get_current_time (global);

View File

@ -50,6 +50,20 @@ 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,

View File

@ -35,8 +35,6 @@
#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>
@ -124,6 +122,7 @@ 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);
@ -133,11 +132,8 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity,
paint_opacity,
paint_opacity);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
cogl_pop_source ();
cogl_framebuffer_draw_rectangle (fb, self->pipeline,
0, 0, self->tex_width, self->tex_height);
}
static void

View File

@ -21,7 +21,6 @@
#ifndef __SHELL_INVERT_LIGHTNESS_EFFECT_H__
#define __SHELL_INVERT_LIGHTNESS_EFFECT_H__
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
G_BEGIN_DECLS

View File

@ -771,6 +771,6 @@ shell_keyring_prompt_cancel (ShellKeyringPrompt *self)
self->async_result = NULL;
self->mode = PROMPTING_NONE;
g_simple_async_result_complete_in_idle (res);
g_simple_async_result_complete (res);
g_object_unref (res);
}

View File

@ -441,15 +441,19 @@ recorder_record_frame (ShellRecorder *recorder)
recorder->last_frame_time = now;
size = recorder->area.width * recorder->area.height * 4;
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);
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;
}
buffer = gst_buffer_new();
gst_buffer_insert_memory (buffer, -1,

View File

@ -1,8 +1,5 @@
/* -*- 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>

View File

@ -97,6 +97,7 @@ 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));
@ -115,18 +116,17 @@ shell_slicer_paint_child (ShellSlicer *self)
child_width = child_box.x2 - child_box.x1;
child_height = child_box.y2 - child_box.y1;
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);
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);
clutter_actor_paint (child);
cogl_clip_pop ();
cogl_pop_matrix ();
cogl_framebuffer_pop_clip (fb);
cogl_framebuffer_pop_matrix (fb);
}
static void

View File

@ -844,7 +844,6 @@ ShellApp *
shell_startup_sequence_get_app (ShellStartupSequence *sequence)
{
const char *appid;
char *basename;
ShellAppSystem *appsys;
ShellApp *app;
@ -852,10 +851,8 @@ 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 (appsys, basename);
g_free (basename);
app = shell_app_system_lookup_app_for_path (appsys, appid);
return app;
}

View File

@ -387,19 +387,20 @@ 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_push_matrix ();
cogl_translate ((int)x, (int)y, 0);
cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
}
st_widget_paint_background (ST_WIDGET (actor));
if (x != 0 || y != 0)
{
cogl_pop_matrix ();
cogl_framebuffer_pop_matrix (fb);
}
if (clutter_actor_get_n_children (actor) == 0)
@ -417,10 +418,11 @@ 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_clip_push_rectangle ((int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
cogl_framebuffer_push_rectangle_clip (fb,
(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;
@ -428,7 +430,7 @@ st_box_layout_paint (ClutterActor *actor)
clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment)
cogl_clip_pop ();
cogl_framebuffer_pop_clip (fb);
}
static void
@ -442,19 +444,20 @@ 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_push_matrix ();
cogl_translate ((int)x, (int)y, 0);
cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
}
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color);
if (x != 0 || y != 0)
{
cogl_pop_matrix ();
cogl_framebuffer_pop_matrix (fb);
}
if (clutter_actor_get_n_children (actor) == 0)
@ -469,10 +472,11 @@ st_box_layout_pick (ClutterActor *actor,
content_box.y2 += y;
if (priv->hadjustment || priv->vadjustment)
cogl_clip_push_rectangle ((int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
cogl_framebuffer_push_rectangle_clip (fb,
(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;
@ -480,7 +484,7 @@ st_box_layout_pick (ClutterActor *actor,
clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment)
cogl_clip_pop ();
cogl_framebuffer_pop_clip (fb);
}
static gboolean

View File

@ -39,8 +39,8 @@
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
struct _StDrawingAreaPrivate {
CoglHandle texture;
CoglHandle material;
CoglTexture *texture;
CoglPipeline *pipeline;
cairo_t *context;
guint needs_repaint : 1;
guint in_repaint : 1;
@ -61,17 +61,8 @@ st_drawing_area_dispose (GObject *object)
StDrawingArea *area = ST_DRAWING_AREA (object);
StDrawingAreaPrivate *priv = area->priv;
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_clear_pointer (&priv->pipeline, cogl_object_unref);
g_clear_pointer (&priv->texture, cogl_object_unref);
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
}
@ -85,8 +76,6 @@ 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);
@ -96,20 +85,25 @@ 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->material == COGL_INVALID_HANDLE)
priv->material = cogl_material_new ();
if (priv->pipeline == NULL)
{
CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
if (priv->texture != COGL_INVALID_HANDLE &&
priv->pipeline = cogl_pipeline_new (ctx);
}
if (priv->texture != NULL &&
(width != cogl_texture_get_width (priv->texture) ||
height != cogl_texture_get_height (priv->texture)))
{
cogl_handle_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE;
cogl_object_unref (priv->texture);
priv->texture = NULL;
}
if (width > 0 && height > 0)
{
if (priv->texture == COGL_INVALID_HANDLE)
if (priv->texture == NULL)
{
priv->texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NONE,
@ -141,19 +135,21 @@ st_drawing_area_paint (ClutterActor *self)
}
}
cogl_material_set_layer (priv->material, 0, priv->texture);
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->texture);
if (priv->texture)
{
paint_opacity = clutter_actor_get_paint_opacity (self);
cogl_color_set_from_4ub (&color,
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_material_set_color (priv->material, &color);
CoglColor color;
guint8 paint_opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
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);
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_framebuffer_draw_rectangle (fb, priv->pipeline,
content_box.x1, content_box.y1,
content_box.x2, content_box.y2);
}
}
@ -195,7 +191,7 @@ st_drawing_area_init (StDrawingArea *area)
{
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
StDrawingAreaPrivate);
area->priv->texture = COGL_INVALID_HANDLE;
area->priv->texture = NULL;
}
/**

View File

@ -65,6 +65,10 @@
#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)
@ -677,28 +681,33 @@ 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)
{
cursor_func (entry, use_ibeam, cursor_func_data);
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);
entry->priv->has_ibeam = use_ibeam;
}

Some files were not shown because too many files have changed in this diff Show More