Compare commits

..

1 Commits

Author SHA1 Message Date
Jasper St. Pierre
d8009fd826 Fix most of the Cogl deprecation warnings 2013-09-11 15:26:44 -04:00
76 changed files with 7423 additions and 8047 deletions

5
.gitignore vendored
View File

@@ -19,8 +19,6 @@ configure
data/50-gnome-shell-*.xml data/50-gnome-shell-*.xml
data/gnome-shell.desktop data/gnome-shell.desktop
data/gnome-shell.desktop.in 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
data/gnome-shell-extension-prefs.desktop.in data/gnome-shell-extension-prefs.desktop.in
data/gschemas.compiled data/gschemas.compiled
@@ -73,14 +71,13 @@ src/calendar-server/evolution-calendar.desktop.in
src/calendar-server/org.gnome.Shell.CalendarServer.service src/calendar-server/org.gnome.Shell.CalendarServer.service
src/gnome-shell src/gnome-shell
src/gnome-shell-calendar-server src/gnome-shell-calendar-server
src/gnome-shell-extension-prefs
src/gnome-shell-extension-tool src/gnome-shell-extension-tool
src/gnome-shell-extension-prefs
src/gnome-shell-hotplug-sniffer src/gnome-shell-hotplug-sniffer
src/gnome-shell-jhbuild src/gnome-shell-jhbuild
src/gnome-shell-perf-helper src/gnome-shell-perf-helper
src/gnome-shell-perf-tool src/gnome-shell-perf-tool
src/gnome-shell-real src/gnome-shell-real
src/gnome-shell-wayland
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/run-js-test src/run-js-test
src/test-recorder src/test-recorder

39
NEWS
View File

@@ -1,42 +1,3 @@
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 3.9.91
====== ======
* Improve submenu styling [Jakub; #706037] * Improve submenu styling [Jakub; #706037]

View File

@@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.9.92],[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_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@@ -60,7 +60,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.13.4 CLUTTER_MIN_VERSION=1.13.4
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.35.4 GJS_MIN_VERSION=1.35.4
MUTTER_MIN_VERSION=3.9.92 MUTTER_MIN_VERSION=3.9.91
GTK_MIN_VERSION=3.7.9 GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0 GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3 LIBECAL_MIN_VERSION=3.5.3

View File

@@ -3,10 +3,6 @@ dist_wanda_DATA = wanda.png
desktopdir=$(datadir)/applications desktopdir=$(datadir)/applications
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop 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 # We substitute in bindir so it works as an autostart
# file when built in a non-system prefix # file when built in a non-system prefix
@@ -87,7 +83,6 @@ convert_DATA = gnome-shell-overrides.convert
EXTRA_DIST = \ EXTRA_DIST = \
gnome-shell.desktop.in.in \ gnome-shell.desktop.in.in \
gnome-shell-wayland.desktop.in.in \
gnome-shell-extension-prefs.desktop.in.in \ gnome-shell-extension-prefs.desktop.in.in \
$(introspection_DATA) \ $(introspection_DATA) \
$(menu_DATA) \ $(menu_DATA) \
@@ -97,7 +92,6 @@ EXTRA_DIST = \
CLEANFILES = \ CLEANFILES = \
gnome-shell.desktop.in \ gnome-shell.desktop.in \
gnome-shell-wayland.desktop.in \
gnome-shell-extension-prefs.in \ gnome-shell-extension-prefs.in \
$(desktop_DATA) \ $(desktop_DATA) \
$(keys_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

@@ -918,6 +918,7 @@ StScrollBar StButton#vhandle:active {
} }
.app-display { .app-display {
padding: 8px;
spacing: 20px; spacing: 20px;
} }
@@ -941,7 +942,7 @@ StScrollBar StButton#vhandle:active {
} }
.page-indicator { .page-indicator {
padding: 15px 20px; padding: 15px 30px;
} }
.page-indicator .page-indicator-icon { .page-indicator .page-indicator-icon {

View File

@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -190,57 +189,28 @@ function insertSorted(array, val, cmp) {
return pos; return pos;
} }
const CloseButton = new Lang.Class({ function makeCloseButton() {
Name: 'CloseButton', let closeButton = new St.Button({ style_class: 'notification-close'});
Extends: St.Button,
_init: function(boxpointer) { // This is a bit tricky. St.Bin has its own x-align/y-align properties
this.parent({ style_class: 'notification-close'}); // 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 // XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
// that compete with Clutter's properties. This should be fixed for // to respect the alignments.
// Clutter 2.0. Since St.Bin doesn't define its own setters, the closeButton.set_x_expand(true);
// setters are a workaround to get Clutter's version. closeButton.set_y_expand(true);
this.set_x_align(Clutter.ActorAlign.END);
this.set_y_align(Clutter.ActorAlign.START);
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand closeButton.connect('style-changed', function() {
// to respect the alignments. let themeNode = closeButton.get_theme_node();
this.set_x_expand(true); closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
this.set_y_expand(true); closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
});
this._boxPointer = boxpointer; return closeButton;
if (boxpointer)
this._boxPointer.connect('arrow-side-changed', Lang.bind(this, this._sync));
},
_computeBoxPointerOffset: function() {
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
return 0;
let side = this._boxPointer.arrowSide;
if (side == St.Side.TOP)
return this._boxPointer.getArrowHeight();
else
return 0;
},
_sync: function() {
let themeNode = this.get_theme_node();
let offY = this._computeBoxPointerOffset();
this.translation_x = themeNode.get_length('-shell-close-overlap-x')
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
},
vfunc_style_changed: function() {
this._sync();
this.parent();
},
});
function makeCloseButton(boxpointer) {
return new CloseButton(boxpointer);
} }
function ensureActorVisibleInScrollView(scrollView, actor) { function ensureActorVisibleInScrollView(scrollView, actor) {

View File

@@ -39,9 +39,12 @@ const FOLDER_SUBICON_FRACTION = .4;
const MIN_FREQUENT_APPS_COUNT = 3; const MIN_FREQUENT_APPS_COUNT = 3;
const INDICATORS_BASE_TIME = 0.25; const INDICATORS_ANIMATION_TIME = 0.5;
const INDICATORS_ANIMATION_DELAY = 0.125; // 100% means indicators wait for be animated until the previous one
const INDICATORS_ANIMATION_MAX_TIME = 0.75; // 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 // Fraction of page height the finger or mouse must reach
// to change page // to change page
const PAGE_SWITCH_TRESHOLD = 0.2; const PAGE_SWITCH_TRESHOLD = 0.2;
@@ -227,23 +230,24 @@ const PageIndicators = new Lang.Class({
if (children.length == 0) if (children.length == 0)
return; return;
let offset; let timePerChild = INDICATORS_ANIMATION_TIME / this._nPages;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) let delay = INDICATORS_ANIMATION_DELAY_PERCENTAGE / 100 * timePerChild;
offset = -children[0].width;
else
offset = children[0].width;
let delay = INDICATORS_ANIMATION_DELAY; let [stageX, ] = children[0].get_transformed_position();
let totalAnimationTime = INDICATORS_BASE_TIME + INDICATORS_ANIMATION_DELAY * this._nPages; let offset;
if (totalAnimationTime > INDICATORS_ANIMATION_MAX_TIME) let monitor = Main.layoutManager.primaryMonitor;
delay -= (totalAnimationTime - INDICATORS_ANIMATION_MAX_TIME) / this._nPages; 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++) { for (let i = 0; i < this._nPages; i++) {
children[i].translation_x = offset; children[i].translation_x = offset;
Tweener.addTween(children[i], Tweener.addTween(children[i],
{ translation_x: 0, { translation_x: 0,
time: INDICATORS_BASE_TIME + delay * i, time: timePerChild,
transition: 'easeInOutQuad' delay: delay * i,
transition: 'easeOutQuad'
}); });
} }
} }
@@ -333,19 +337,6 @@ const AllView = new Lang.Class({
function() { function() {
this._displayingPopup = false; 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() { getCurrentPageY: function() {
@@ -353,8 +344,6 @@ const AllView = new Lang.Class({
}, },
goToPage: function(pageNumber) { goToPage: function(pageNumber) {
if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
return;
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup) if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
return; return;
if (this._displayingPopup && this._currentPopup) if (this._displayingPopup && this._currentPopup)
@@ -416,13 +405,16 @@ const AllView = new Lang.Class({
_onScroll: function(actor, event) { _onScroll: function(actor, event) {
if (this._displayingPopup) if (this._displayingPopup)
return true; return true;
let direction = event.get_scroll_direction(); let direction = event.get_scroll_direction();
if (direction == Clutter.ScrollDirection.UP) if (direction == Clutter.ScrollDirection.UP) {
this.goToPage(this._currentPage - 1); if (this._currentPage > 0)
else if (direction == Clutter.ScrollDirection.DOWN) this.goToPage(this._currentPage - 1);
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; return true;
}, },
@@ -442,9 +434,9 @@ const AllView = new Lang.Class({
return; return;
let diffCurrentPage = this._diffToPage(this._currentPage); let diffCurrentPage = this._diffToPage(this._currentPage);
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) { 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); this.goToPage(this._currentPage - 1);
else else if (this._currentPage < this._grid.nPages() - 1)
this.goToPage(this._currentPage + 1); this.goToPage(this._currentPage + 1);
} else { } else {
this.goToPage(this._currentPage); this.goToPage(this._currentPage);
@@ -452,21 +444,6 @@ const AllView = new Lang.Class({
this._panning = false; 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) { _getItemId: function(item) {
if (item instanceof Shell.App) if (item instanceof Shell.App)
return item.get_id(); return item.get_id();
@@ -1180,7 +1157,7 @@ const AppFolderPopup = new Lang.Class({
this.actor.add_actor(this._boxPointer.actor); this.actor.add_actor(this._boxPointer.actor);
this._boxPointer.bin.set_child(this._view.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.closeButton.connect('clicked', Lang.bind(this, this.popdown));
this.actor.add_actor(this.closeButton); this.actor.add_actor(this.closeButton);

View File

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

View File

@@ -5,7 +5,6 @@ const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;
const St = imports.gi.St; const St = imports.gi.St;
const Lang = imports.lang; const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
@@ -28,9 +27,9 @@ const DragMotionResult = {
}; };
const DRAG_CURSOR_MAP = { const DRAG_CURSOR_MAP = {
0: Meta.Cursor.DND_UNSUPPORTED_TARGET, 0: Shell.Cursor.DND_UNSUPPORTED_TARGET,
1: Meta.Cursor.DND_COPY, 1: Shell.Cursor.DND_COPY,
2: Meta.Cursor.DND_MOVE 2: Shell.Cursor.DND_MOVE
}; };
const DragDropResult = { const DragDropResult = {
@@ -86,6 +85,11 @@ const _Draggable = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, function() { this.actor.connect('destroy', Lang.bind(this, function() {
this._actorDestroyed = true; 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) if (this._dragInProgress && this._dragCancellable)
this._cancelDrag(global.get_current_time()); this._cancelDrag(global.get_current_time());
this.disconnectAll(); 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._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; 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; this._eventsGrabbed = false;
}, },
@@ -186,6 +196,11 @@ const _Draggable = new Lang.Class({
this._cancelDrag(event.get_time()); this._cancelDrag(event.get_time());
return true; 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; return false;
@@ -229,7 +244,7 @@ const _Draggable = new Lang.Class({
if (this._onEventId) if (this._onEventId)
this._ungrabActor(); this._ungrabActor();
this._grabEvents(); 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._dragX = this._dragStartX = stageX;
this._dragY = this._dragStartY = stageY; this._dragY = this._dragStartY = stageY;
@@ -359,7 +374,7 @@ const _Draggable = new Lang.Class({
if (motionFunc) { if (motionFunc) {
let result = motionFunc(dragEvent); let result = motionFunc(dragEvent);
if (result != DragMotionResult.CONTINUE) { if (result != DragMotionResult.CONTINUE) {
global.screen.set_cursor(DRAG_CURSOR_MAP[result]); global.set_cursor(DRAG_CURSOR_MAP[result]);
return false; return false;
} }
} }
@@ -377,13 +392,13 @@ const _Draggable = new Lang.Class({
targY, targY,
0); 0);
if (result != DragMotionResult.CONTINUE) { if (result != DragMotionResult.CONTINUE) {
global.screen.set_cursor(DRAG_CURSOR_MAP[result]); global.set_cursor(DRAG_CURSOR_MAP[result]);
return false; return false;
} }
} }
target = target.get_parent(); target = target.get_parent();
} }
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG); global.set_cursor(Shell.Cursor.DND_IN_DRAG);
return false; return false;
}, },
@@ -455,7 +470,7 @@ const _Draggable = new Lang.Class({
} }
this._dragInProgress = false; this._dragInProgress = false;
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
this.emit('drag-end', event.get_time(), true); this.emit('drag-end', event.get_time(), true);
this._dragComplete(); this._dragComplete();
return true; return true;
@@ -507,7 +522,7 @@ const _Draggable = new Lang.Class({
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation(); let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
if (this._actorDestroyed) { if (this._actorDestroyed) {
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
if (!this._buttonDown) if (!this._buttonDown)
this._dragComplete(); this._dragComplete();
this.emit('drag-end', eventTime, false); this.emit('drag-end', eventTime, false);
@@ -561,7 +576,7 @@ const _Draggable = new Lang.Class({
} else { } else {
dragActor.destroy(); dragActor.destroy();
} }
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
this.emit('drag-end', eventTime, false); this.emit('drag-end', eventTime, false);
this._animationInProgress = false; this._animationInProgress = false;
@@ -569,12 +584,33 @@ const _Draggable = new Lang.Class({
this._dragComplete(); 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() { _dragComplete: function() {
if (!this._actorDestroyed) if (!this._actorDestroyed)
Shell.util_set_hidden_from_pick(this._dragActor, false); Shell.util_set_hidden_from_pick(this._dragActor, false);
this._ungrabEvents(); 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) { if (this._updateHoverId) {
GLib.source_remove(this._updateHoverId); GLib.source_remove(this._updateHoverId);

View File

@@ -1072,15 +1072,15 @@ const LookingGlass = new Lang.Class({
let myWidth = primary.width * 0.7; let myWidth = primary.width * 0.7;
let availableHeight = primary.height - Main.layoutManager.keyboardBox.height; let availableHeight = primary.height - Main.layoutManager.keyboardBox.height;
let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9); let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9);
this.actor.x = primary.x + (primary.width - myWidth) / 2; this.actor.x = (primary.width - myWidth) / 2;
this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners this._hiddenY = Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
this._targetY = this._hiddenY + myHeight; this._targetY = this._hiddenY + myHeight;
this.actor.y = this._hiddenY; this.actor.y = this._hiddenY;
this.actor.width = myWidth; this.actor.width = myWidth;
this.actor.height = myHeight; this.actor.height = myHeight;
this._objInspector.actor.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8)); 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._objInspector.actor.set_position(primary.x + this.actor.x + Math.floor(myWidth * 0.1),
this._targetY + Math.floor(myHeight * 0.1)); primary.y + this._targetY + Math.floor(myHeight * 0.1));
}, },
insertObject: function(obj) { insertObject: function(obj) {

View File

@@ -57,20 +57,6 @@ const Magnifier = new Lang.Class({
// Magnifier is a manager of ZoomRegions. // Magnifier is a manager of ZoomRegions.
this._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. // Create small clutter tree for the magnified mouse.
let cursorTracker = Meta.CursorTracker.get_for_screen(global.screen); let cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
this._mouseSprite = new Clutter.Texture(); this._mouseSprite = new Clutter.Texture();
@@ -86,11 +72,15 @@ const Magnifier = new Lang.Class({
let aZoomRegion = new ZoomRegion(this, this._cursorRoot); let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
this._zoomRegions.push(aZoomRegion); this._zoomRegions.push(aZoomRegion);
this._settingsInitRegion(aZoomRegion); let showAtLaunch = this._settingsInit(aZoomRegion);
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse); aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
cursorTracker.connect('cursor-changed', Lang.bind(this, this._updateMouseSprite)); cursorTracker.connect('cursor-changed', Lang.bind(this, this._updateMouseSprite));
this._cursorTracker = cursorTracker; 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. * Show the system mouse pointer.
*/ */
showSystemCursor: function() { 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. * Hide the system mouse pointer.
*/ */
hideSystemCursor: function() { 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. * @activate: Boolean to activate or de-activate the magnifier.
*/ */
setActive: function(activate) { setActive: function(activate) {
if (activate == this.isActive())
return;
if (activate)
this._initialize();
this._zoomRegions.forEach (function(zoomRegion, index, array) { this._zoomRegions.forEach (function(zoomRegion, index, array) {
zoomRegion.setActive(activate); zoomRegion.setActive(activate);
}); });
@@ -133,7 +117,7 @@ const Magnifier = new Lang.Class({
// Make sure system mouse pointer is shown when all zoom regions are // Make sure system mouse pointer is shown when all zoom regions are
// invisible. // invisible.
if (!activate) if (!activate)
this._cursorTracker.set_pointer_visible(true); global.stage.show_cursor();
// Notify interested parties of this change // Notify interested parties of this change
this.emit('active-changed', activate); this.emit('active-changed', activate);
@@ -448,68 +432,64 @@ const Magnifier = new Lang.Class({
this._mouseSprite.set_anchor_point(xHot, yHot); this._mouseSprite.set_anchor_point(xHot, yHot);
}, },
_settingsInitRegion: function(zoomRegion) { _settingsInit: function(zoomRegion) {
// Mag factor is accurate to two decimal places.
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
if (aPref != 0.0)
zoomRegion.setMagFactor(aPref, aPref);
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
if (aPref)
zoomRegion.setScreenPosition(aPref);
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
if (aPref)
zoomRegion.setMouseTrackingMode(aPref);
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
if (aPref)
zoomRegion.setFocusTrackingMode(aPref);
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
if (aPref)
zoomRegion.setCaretTrackingMode(aPref);
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
if (aPref)
zoomRegion.setInvertLightness(aPref);
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
if (aPref)
zoomRegion.setColorSaturation(aPref);
let bc = {};
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
zoomRegion.setBrightness(bc);
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
zoomRegion.setContrast(bc);
},
_settingsInit: function() {
this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA }); this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA }); this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
this._appSettings.connect('changed::' + SHOW_KEY, Lang.bind(this, function() { if (zoomRegion) {
let active = this._appSettings.get_boolean(SHOW_KEY); // Mag factor is accurate to two decimal places.
this.setActive(active); 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); let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
this.addCrosshairs(); this.addCrosshairs();
this.setCrosshairsVisible(showCrosshairs); 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, this._settings.connect('changed::' + SCREEN_POSITION_KEY,
Lang.bind(this, this._updateScreenPosition)); Lang.bind(this, this._updateScreenPosition));
this._settings.connect('changed::' + MAG_FACTOR_KEY, this._settings.connect('changed::' + MAG_FACTOR_KEY,
@@ -573,6 +553,8 @@ const Magnifier = new Lang.Class({
Lang.bind(this, function() { Lang.bind(this, function() {
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY)); this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
})); }));
return this._appSettings.get_boolean(SHOW_KEY);
}, },
_updateScreenPosition: function() { _updateScreenPosition: function() {
@@ -750,17 +732,14 @@ const ZoomRegion = new Lang.Class({
* @activate: Boolean to show/hide the ZoomRegion. * @activate: Boolean to show/hide the ZoomRegion.
*/ */
setActive: function(activate) { setActive: function(activate) {
if (activate == this.isActive()) if (activate && !this.isActive()) {
return;
if (activate) {
this._createActors(); this._createActors();
if (this._isMouseOverRegion()) if (this._isMouseOverRegion())
this._magnifier.hideSystemCursor(); this._magnifier.hideSystemCursor();
this._updateMagViewGeometry(); this._updateMagViewGeometry();
this._updateCloneGeometry(); this._updateCloneGeometry();
this._updateMousePosition(); this._updateMousePosition();
} else { } else if (!activate && this.isActive()) {
this._destroyActors(); this._destroyActors();
} }
}, },

View File

@@ -215,10 +215,10 @@ const URLHighlighter = new Lang.Class({
let urlId = this._findUrlAtPos(event); let urlId = this._findUrlAtPos(event);
if (urlId != -1 && !this._cursorChanged) { if (urlId != -1 && !this._cursorChanged) {
global.screen.set_cursor(Meta.Cursor.POINTING_HAND); global.set_cursor(Shell.Cursor.POINTING_HAND);
this._cursorChanged = true; this._cursorChanged = true;
} else if (urlId == -1) { } else if (urlId == -1) {
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
this._cursorChanged = false; this._cursorChanged = false;
} }
return false; return false;
@@ -229,7 +229,7 @@ const URLHighlighter = new Lang.Class({
if (this._cursorChanged) { if (this._cursorChanged) {
this._cursorChanged = false; this._cursorChanged = false;
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
} }
})); }));
}, },

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

View File

@@ -804,7 +804,7 @@ const AggregateMenu = new Lang.Class({
Extends: PanelMenu.Button, Extends: PanelMenu.Button,
_init: function() { _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.menu.actor.add_style_class_name('aggregate-menu');
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' }); this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });

View File

@@ -969,7 +969,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
this._triangleBin.set_scale(-1.0, 1.0); this._triangleBin.set_scale(-1.0, 1.0);
this.actor.add_child(this._triangleBin); this.actor.add_child(this._triangleBin);
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
this.menu = new PopupSubMenu(this.actor, this._triangle); this.menu = new PopupSubMenu(this.actor, this._triangle);
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged)); this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
@@ -991,11 +990,9 @@ const PopupSubMenuMenuItem = new Lang.Class({
if (open) { if (open) {
this.actor.add_style_pseudo_class('open'); this.actor.add_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(this.menu); this._getTopMenu()._setOpenedSubMenu(this.menu);
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
} else { } else {
this.actor.remove_style_pseudo_class('open'); this.actor.remove_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(null); 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._shortLightbox.connect('shown', Lang.bind(this, this._onShortLightboxShown));
this.idleMonitor = Meta.IdleMonitor.get_core(); this.idleMonitor = Meta.IdleMonitor.get_core();
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
}, },
_createBackground: function(monitorIndex) { _createBackground: function(monitorIndex) {
@@ -954,7 +953,7 @@ const ScreenShield = new Lang.Class({
this._hideLockScreenComplete(); this._hideLockScreenComplete();
} }
this._cursorTracker.set_pointer_visible(true); global.stage.show_cursor();
}, },
_ensureUnlockDialog: function(onPrimary, allowCancel) { _ensureUnlockDialog: function(onPrimary, allowCancel) {
@@ -1087,15 +1086,15 @@ const ScreenShield = new Lang.Class({
this._checkArrowAnimation(); 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) { if (event.type() == Clutter.EventType.MOTION) {
this._cursorTracker.set_pointer_visible(true); global.stage.show_cursor();
global.stage.disconnect(motionId); global.stage.disconnect(motionId);
} }
return false; return false;
})); });
this._cursorTracker.set_pointer_visible(false); global.stage.hide_cursor();
this._lockScreenState = MessageTray.State.SHOWN; this._lockScreenState = MessageTray.State.SHOWN;
this._lockScreenGroup.fixed_position_set = false; this._lockScreenGroup.fixed_position_set = false;

View File

@@ -6,7 +6,6 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;
const Lang = imports.lang; const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
@@ -168,7 +167,7 @@ const SelectArea = new Lang.Class({
if (!Main.pushModal(this._group) || this._group.visible) if (!Main.pushModal(this._group) || this._group.visible)
return; return;
global.screen.set_cursor(Meta.Cursor.CROSSHAIR); global.set_cursor(Shell.Cursor.CROSSHAIR);
this._group.visible = true; this._group.visible = true;
}, },
@@ -239,7 +238,7 @@ const SelectArea = new Lang.Class({
function() { function() {
Main.popModal(this._group); Main.popModal(this._group);
this._group.destroy(); this._group.destroy();
global.screen.set_cursor(Meta.Cursor.DEFAULT); global.unset_cursor();
this.emit('finished', geometry); this.emit('finished', geometry);
}) })

View File

@@ -3,7 +3,6 @@
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
const Main = imports.ui.main; const Main = imports.ui.main;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
@@ -21,8 +20,7 @@ const XdndHandler = new Lang.Class({
Main.uiGroup.add_actor(this._dummy); Main.uiGroup.add_actor(this._dummy);
this._dummy.hide(); 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-enter', Lang.bind(this, this._onEnter));
global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged)); global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged));

View File

@@ -4,7 +4,6 @@
data/50-gnome-shell-system.xml.in data/50-gnome-shell-system.xml.in
data/gnome-shell.desktop.in.in data/gnome-shell.desktop.in.in
data/gnome-shell-extension-prefs.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 data/org.gnome.shell.gschema.xml.in.in
js/extensionPrefs/main.js js/extensionPrefs/main.js
js/gdm/authPrompt.js js/gdm/authPrompt.js

View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-13 15:09+0530\n" "PO-Revision-Date: 2013-09-10 20:47+0530\n"
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n" "Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n" "Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
"Language: as_IN\n" "Language: as_IN\n"
@@ -49,7 +49,6 @@ msgid "GNOME Shell"
msgstr "GNOME শ্বেল" msgstr "GNOME শ্বেল"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "উইন্ডো ব্যৱস্থাপনা আৰু এপ্লিকেচনৰ লঞ্চ" msgstr "উইন্ডো ব্যৱস্থাপনা আৰু এপ্লিকেচনৰ লঞ্চ"
@@ -62,10 +61,6 @@ msgstr "GNOME শ্বেল সম্প্ৰসাৰন পছন্দস
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ সংৰূপণ কৰক" msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ সংৰূপণ কৰক"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME শ্বেল (wayland compositor)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -192,10 +187,12 @@ msgstr ""
"কাৰ্য্যসমূহ অভাৰভিউৰ \"এপ্লিকেচনসমূহ দেখুৱাওক\" দৰ্শন খোলিবলে কি'বাইণ্ডিং।" "কাৰ্য্যসমূহ অভাৰভিউৰ \"এপ্লিকেচনসমূহ দেখুৱাওক\" দৰ্শন খোলিবলে কি'বাইণ্ডিং।"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21 #: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "অভাৰভিউ খোলিবলে কি'বাইণ্ডিং" msgstr "অভাৰভিউ খোলিবলে কি'বাইণ্ডিং"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22 #: ../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." msgid "Keybinding to open the Activities Overview."
msgstr "কাৰ্য্যসমূহ অভাৰভিউ খোলিবলে কি'বাইণ্ডিং" msgstr "কাৰ্য্যসমূহ অভাৰভিউ খোলিবলে কি'বাইণ্ডিং"
@@ -306,6 +303,7 @@ msgid "Sign In"
msgstr "ছাইন ইন কৰক" msgstr "ছাইন ইন কৰক"
#: ../js/gdm/loginDialog.js:294 #: ../js/gdm/loginDialog.js:294
#| msgid "Switch Session"
msgid "Choose Session" msgid "Choose Session"
msgstr "অধিবেশন বাছক" msgstr "অধিবেশন বাছক"
@@ -348,42 +346,42 @@ msgstr "প্ৰমাণীকৰণ ত্ৰুটি"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(অথবা আঙুলি স্বাইপ কৰক)" msgstr "(অথবা আঙুলি স্বাইপ কৰক)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "কমান্ড পোৱা নগল" msgstr "কমান্ড পোৱা নগল"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "কমান্ড বিশ্লেষন কৰিব নোৱাৰি:" msgstr "কমান্ড বিশ্লেষন কৰিব নোৱাৰি:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "'%s' ৰ প্ৰেৰণ ব্যৰ্থ হল:" msgstr "'%s' ৰ প্ৰেৰণ ব্যৰ্থ হল:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব" msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "সঘন" msgstr "সঘন"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "সকলো" msgstr "সকলো"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "নতুন উইন্ডো" msgstr "নতুন উইন্ডো"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "পছন্দৰ পৰা আতৰাওক" msgstr "পছন্দৰ পৰা আতৰাওক"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "পছন্দলে যোগ কৰক" msgstr "পছন্দলে যোগ কৰক"
@@ -928,7 +926,7 @@ msgstr "একাওন্ট দৰ্শন কৰক"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "অজ্ঞাত কাৰণ" msgstr "অজ্ঞাত কাৰণ"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "উইন্ডোসমূহ" msgstr "উইন্ডোসমূহ"
@@ -1026,12 +1024,15 @@ msgstr[0] "চিস্টেম %d ছেকেণ্ডত স্বচাল
msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।" msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
#: ../js/ui/endSessionDialog.js:112 #: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক" msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, c-format #, 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 "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@@ -1076,7 +1077,7 @@ msgstr "ইনস্টল কৰক"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org ৰ পৰা '%s' ক ডাউনল'ড আৰু ইনস্টল কৰিব নে?" 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" msgid "Keyboard"
msgstr "কিবৰ্ড" msgstr "কিবৰ্ড"
@@ -1156,7 +1157,7 @@ msgstr "কোনো বাৰ্তা নাই"
msgid "Message Tray" msgid "Message Tray"
msgstr "বাৰ্তা ট্ৰে" msgstr "বাৰ্তা ট্ৰে"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "চিস্টেম তথ্য" msgstr "চিস্টেম তথ্য"
@@ -1188,21 +1189,22 @@ msgstr "অভাৰভিউ"
msgid "Type to search…" msgid "Type to search…"
msgstr "সন্ধান কৰিবলে টাইপ কৰক…" msgstr "সন্ধান কৰিবলে টাইপ কৰক…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "প্ৰস্থান কৰক" msgstr "প্ৰস্থান কৰক"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "কাৰ্য্যসমূহ" msgstr "কাৰ্য্যসমূহ"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
#| msgid "Settings"
msgid "Settings Menu" msgid "Settings Menu"
msgstr "সংহতিসমূহ মেনু" msgstr "সংহতিসমূহ মেনু"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "উপৰৰ বাৰ" msgstr "উপৰৰ বাৰ"
@@ -1211,7 +1213,7 @@ msgstr "উপৰৰ বাৰ"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
@@ -1240,7 +1242,7 @@ msgstr[1] "%d নতুন অধিসূচনাসমূহ"
msgid "Lock" msgid "Lock"
msgstr "লক কৰক" msgstr "লক কৰক"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব" msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
@@ -1251,11 +1253,11 @@ msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "লক কৰিবলে অক্ষম" 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" msgid "Lock was blocked by an application"
msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল" msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল"
@@ -1354,6 +1356,7 @@ msgstr "ব্লুটুথ সংহতিসমূহ"
#: ../js/ui/status/bluetooth.js:57 #: ../js/ui/status/bluetooth.js:57
#, c-format #, c-format
#| msgid "Connected (private)"
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d সংযুক্ত ডিভাইচ" msgstr[0] "%d সংযুক্ত ডিভাইচ"
@@ -1403,6 +1406,7 @@ msgstr "%s ৰ কাৰণে যোৰ প্ৰতিশ্ৰুতি"
#: ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:172
#, c-format #, c-format
#| msgid "Please confirm whether the PIN '%06d' matches the one on the device."
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "অনুগ্ৰহ কৰি সুনিশ্চিত কৰক যে পাছকি '%06d' ডিভাইচত থকাটোৰ সৈতে মিল খায়।" msgstr "অনুগ্ৰহ কৰি সুনিশ্চিত কৰক যে পাছকি '%06d' ডিভাইচত থকাটোৰ সৈতে মিল খায়।"
@@ -1433,7 +1437,7 @@ msgstr "ঠিক আছে"
msgid "Brightness" msgid "Brightness"
msgstr "উজ্জ্বলতা" msgstr "উজ্জ্বলতা"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক" msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
@@ -1442,6 +1446,7 @@ msgid "<unknown>"
msgstr "<unknown>" msgstr "<unknown>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049 #: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#| msgid "Offline"
msgid "Off" msgid "Off"
msgstr "অফ" msgstr "অফ"
@@ -1486,18 +1491,22 @@ msgid "connection failed"
msgstr "সংযোগ ব্যৰ্থ" msgstr "সংযোগ ব্যৰ্থ"
#: ../js/ui/status/network.js:654 #: ../js/ui/status/network.js:654
#| msgid "Network"
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Wi-Fi নেটৱাৰ্কসমূহ" msgstr "Wi-Fi নেটৱাৰ্কসমূহ"
#: ../js/ui/status/network.js:656 #: ../js/ui/status/network.js:656
#| msgid "Enable networking"
msgid "Select a network" msgid "Select a network"
msgstr "এটা নেটৱাৰ্ক বাছক" msgstr "এটা নেটৱাৰ্ক বাছক"
#: ../js/ui/status/network.js:680 #: ../js/ui/status/network.js:680
#| msgid "Network"
msgid "No Networks" msgid "No Networks"
msgstr "কোনো নেটৱাৰ্ক নাই" msgstr "কোনো নেটৱাৰ্ক নাই"
#: ../js/ui/status/network.js:949 #: ../js/ui/status/network.js:949
#| msgid "Network"
msgid "Select Network" msgid "Select Network"
msgstr "নেটৱাৰ্ক বাছক" msgstr "নেটৱাৰ্ক বাছক"
@@ -1560,6 +1569,7 @@ msgid "Airplane Mode"
msgstr "বিমান অৱস্থা" msgstr "বিমান অৱস্থা"
#: ../js/ui/status/rfkill.js:45 #: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On" msgid "On"
msgstr "অন" msgstr "অন"
@@ -1603,11 +1613,11 @@ msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগ
msgid "Unlock Window" msgid "Unlock Window"
msgstr "উইন্ডো আনলক কৰক" msgstr "উইন্ডো আনলক কৰক"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "এপ্লিকেচনসমূহ" msgstr "এপ্লিকেচনসমূহ"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "সন্ধান কৰক" msgstr "সন্ধান কৰক"
@@ -1638,6 +1648,7 @@ msgstr "আপুনি এই প্ৰদৰ্শন সংহতিসমূ
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: ../js/ui/windowManager.js:75 #: ../js/ui/windowManager.js:75
#| msgid "Power Settings"
msgid "Revert Settings" msgid "Revert Settings"
msgstr "সংহতিসমূহক পূৰ্ব অৱস্থালৈ নিয়ক" msgstr "সংহতিসমূহক পূৰ্ব অৱস্থালৈ নিয়ক"

View File

@@ -12,16 +12,16 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-06 09:50+0000\n"
"PO-Revision-Date: 2013-09-13 08:49+0200\n" "PO-Revision-Date: 2013-08-31 11:54+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Adam Matoušek <adamatousek@gmail.com>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Gtranslator 2.91.6\n" "X-Generator: Poedit 1.5.4\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
@@ -53,7 +53,6 @@ msgid "GNOME Shell"
msgstr "Prostředí GNOME Shell" msgstr "Prostředí GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Správa oken a spouštění aplikací" msgstr "Správa oken a spouštění aplikací"
@@ -66,10 +65,6 @@ msgstr "Předvolby rozšíření GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Nastavit rozšíření GNOME Shell" msgstr "Nastavit rozšíření GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (kompozitor Waylandu)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Povolit přes Alt-F2 vnitřní nástroje určené pro vývojáře a testery" msgstr "Povolit přes Alt-F2 vnitřní nástroje určené pro vývojáře a testery"
@@ -344,17 +339,17 @@ msgstr "Chyba ověření"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(nebo otiskněte prst)" msgstr "(nebo otiskněte prst)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Příkaz nenalezen" msgstr "Příkaz nenalezen"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Nelze analyzovat příkaz:" msgstr "Nelze analyzovat příkaz:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Vykonání „%s“ selhalo:" msgstr "Vykonání „%s“ selhalo:"
@@ -371,15 +366,15 @@ msgstr "Časté"
msgid "All" msgid "All"
msgstr "Všechny" msgstr "Všechny"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1487
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1490 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených" msgstr "Odstranit z oblíbených"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1491
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené" msgstr "Přidat mezi oblíbené"
@@ -923,7 +918,7 @@ msgstr "Zobrazit účet"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámý důvod" msgstr "Neznámý důvod"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@@ -1079,7 +1074,7 @@ msgstr "Instalovat"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?" msgstr "Stáhnout a nainstalovat „%s“ z 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" msgid "Keyboard"
msgstr "Klávesnice" msgstr "Klávesnice"
@@ -1192,21 +1187,21 @@ msgstr "Přehled"
msgid "Type to search…" msgid "Type to search…"
msgstr "Vyhledávejte psaním…" msgstr "Vyhledávejte psaním…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Ukončit" msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Činnosti" msgstr "Činnosti"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Nabídka Nastavení" msgstr "Nabídka Nastavení"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:901
msgid "Top Bar" msgid "Top Bar"
msgstr "Horní lišta" msgstr "Horní lišta"
@@ -1215,7 +1210,7 @@ msgstr "Horní lišta"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1245,7 +1240,7 @@ msgstr[2] "%d nových upozornění"
msgid "Lock" msgid "Lock"
msgstr "Uzamknout" msgstr "Uzamknout"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME potřebuje uzamknout obrazovku" msgstr "GNOME potřebuje uzamknout obrazovku"
@@ -1256,11 +1251,11 @@ msgstr "GNOME potřebuje uzamknout obrazovku"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Nelze uzamknout obrazovku" msgstr "Nelze uzamknout obrazovku"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací" msgstr "Zamknutí bylo zablokováno některou z aplikací"
@@ -1439,7 +1434,7 @@ msgstr "Budiž"
msgid "Brightness" msgid "Brightness"
msgstr "Jas" msgstr "Jas"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Zobrazit rozložení klávesnice" msgstr "Zobrazit rozložení klávesnice"
@@ -1609,11 +1604,11 @@ msgstr "Přihlásit se jako jiný uživatel"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Odemykací okno" msgstr "Odemykací okno"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Aplikace" msgstr "Aplikace"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Hledat" msgstr "Hledat"

1469
po/da.po

File diff suppressed because it is too large Load Diff

View File

@@ -20,16 +20,16 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-07 19:18+0000\n"
"PO-Revision-Date: 2013-09-13 19:29+0100\n" "PO-Revision-Date: 2013-09-08 00:01+0200\n"
"Last-Translator: Benjamin Steinwender <b@stbe.at>\n" "Last-Translator: Tobias Endrigkeit <tobiasendrigkeit@outlook.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de_DE\n" "Language: de_DE\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.7\n" "X-Generator: Gtranslator 2.91.6\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@@ -60,7 +60,6 @@ msgid "GNOME Shell"
msgstr "GNOME-Shell" msgstr "GNOME-Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Fenster verwalten und Anwendungen starten" msgstr "Fenster verwalten und Anwendungen starten"
@@ -73,10 +72,6 @@ msgstr "Einstellungen für Erweiterungen der GNOME-Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Erweiterungen der GNOME-Shell einrichten" 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 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 aktivieren" msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 aktivieren"
@@ -359,17 +354,17 @@ msgstr "Legitimationsfehler"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(oder benutzen Sie den Fingerabdruckleser)" msgstr "(oder benutzen Sie den Fingerabdruckleser)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Befehl nicht gefunden" msgstr "Befehl nicht gefunden"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Befehl konnte nicht verarbeitet werden:" msgstr "Befehl konnte nicht verarbeitet werden:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Ausführung von »%s« ist gescheitert:" msgstr "Ausführung von »%s« ist gescheitert:"
@@ -945,7 +940,7 @@ msgstr "Konto anzeigen"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Unbekannter Grund" 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" msgid "Windows"
msgstr "Fenster" msgstr "Fenster"
@@ -1093,7 +1088,7 @@ msgstr "Installieren"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" 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" msgid "Keyboard"
msgstr "Tastatur" msgstr "Tastatur"
@@ -1205,21 +1200,21 @@ msgstr "Übersicht"
msgid "Type to search…" msgid "Type to search…"
msgstr "Suchbegriff eingeben …" msgstr "Suchbegriff eingeben …"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Aktivitäten" msgstr "Aktivitäten"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Einstellungsmenü" msgstr "Einstellungsmenü"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:901
msgid "Top Bar" msgid "Top Bar"
msgstr "Oberes Panel" msgstr "Oberes Panel"
@@ -1228,7 +1223,7 @@ msgstr "Oberes Panel"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1260,7 +1255,7 @@ msgstr[1] "%d neue Benachrichtigungen"
msgid "Lock" msgid "Lock"
msgstr "Sperren" msgstr "Sperren"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME muss den Bildschirm sperren" msgstr "GNOME muss den Bildschirm sperren"
@@ -1271,11 +1266,11 @@ msgstr "GNOME muss den Bildschirm sperren"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen" 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" msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert" msgstr "Sperrung wurde von einer Anwendung blockiert"
@@ -1454,7 +1449,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Helligkeit" msgstr "Helligkeit"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung zeigen" msgstr "Tastaturbelegung zeigen"
@@ -1624,11 +1619,11 @@ msgstr "Als anderer Benutzer anmelden"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Fenster entsperren" msgstr "Fenster entsperren"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Anwendungen" msgstr "Anwendungen"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Suchen" msgstr "Suchen"

1606
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-13 12:41+0200\n" "PO-Revision-Date: 2013-09-03 16:07+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n" "Language-Team: Español <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@@ -50,7 +50,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Gestión de ventanas e inicio de aplicaciones" msgstr "Gestión de ventanas e inicio de aplicaciones"
@@ -63,10 +62,6 @@ msgstr "Preferencias de las extensiones de GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Configurar las extensiones de GNOME Shell" msgstr "Configurar las extensiones de GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (composición wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -349,42 +344,42 @@ msgstr "Error de autenticación"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(o pase el dedo)" msgstr "(o pase el dedo)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Comando no encontrado" msgstr "Comando no encontrado"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "No se pudo analizar el comando:" msgstr "No se pudo analizar el comando:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Falló la ejecución de «%s»:" msgstr "Falló la ejecución de «%s»:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí" msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "Frecuentes" msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "Ventana nueva" msgstr "Ventana nueva"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Quitar de los favoritos" msgstr "Quitar de los favoritos"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Añadir a los favoritos" msgstr "Añadir a los favoritos"
@@ -931,7 +926,7 @@ msgstr "Ver cuenta"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razón desconocida" msgstr "Razón desconocida"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Ventanas" msgstr "Ventanas"
@@ -1079,7 +1074,7 @@ msgstr "Instalar"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333 #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@@ -1159,7 +1154,7 @@ msgstr "No hay mensajes"
msgid "Message Tray" msgid "Message Tray"
msgstr "Bandeja de mensajes" msgstr "Bandeja de mensajes"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Información del sistema" msgstr "Información del sistema"
@@ -1191,21 +1186,21 @@ msgstr "Vista general"
msgid "Type to search…" msgid "Type to search…"
msgstr "Escribir para buscar…" msgstr "Escribir para buscar…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Salir" msgstr "Salir"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Menú de configuración" msgstr "Menú de configuración"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1214,7 +1209,7 @@ msgstr "Barra superior"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1243,7 +1238,7 @@ msgstr[1] "%d notificaciones nuevas"
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME necesita bloquear la pantalla" msgstr "GNOME necesita bloquear la pantalla"
@@ -1254,11 +1249,11 @@ msgstr "GNOME necesita bloquear la pantalla"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "No se pudo bloquear" msgstr "No se pudo bloquear"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo" msgstr "Una aplicación impidió el bloqueo"
@@ -1437,7 +1432,7 @@ msgstr "Aceptar"
msgid "Brightness" msgid "Brightness"
msgstr "Brillo" msgstr "Brillo"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado" msgstr "Mostrar la distribución del teclado"
@@ -1607,11 +1602,11 @@ msgstr "Iniciar sesión como otro usuario"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desbloquear ventana" msgstr "Desbloquear ventana"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Aplicaciones" msgstr "Aplicaciones"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"

832
po/et.po

File diff suppressed because it is too large Load Diff

1493
po/eu.po

File diff suppressed because it is too large Load Diff

1500
po/fr.po

File diff suppressed because it is too large Load Diff

View File

@@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-13 10:27+0200\n" "POT-Creation-Date: 2013-09-03 12:56+0200\n"
"PO-Revision-Date: 2013-09-13 10:27+0200\n" "PO-Revision-Date: 2013-09-03 12:57+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n" "Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n" "Language: gl\n"
@@ -52,7 +52,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Xestor de xanelas e inicio de aplicativos" msgstr "Xestor de xanelas e inicio de aplicativos"
@@ -65,10 +64,6 @@ msgstr "Preferencias das extensións de GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Configure as extensións de GNOME Shell" msgstr "Configure as extensións de GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (compositor de wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -348,42 +343,42 @@ msgstr "Erro de autenticación"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ou pase o dedo)" msgstr "(ou pase o dedo)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Orde non atopada" msgstr "Orde non atopada"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Non foi posíbel analizar a orde:" msgstr "Non foi posíbel analizar a orde:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Produciuse un fallo na execución de «%s»:" msgstr "Produciuse un fallo na execución de «%s»:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:579
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Os aplicativos usados recentemente aparecerán aquí" msgstr "Os aplicativos usados recentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:695
msgid "Frequent" msgid "Frequent"
msgstr "Frecuentes" msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:702
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1489
msgid "New Window" msgid "New Window"
msgstr "Xanela nova" msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1492 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Retirar dos marcadores" msgstr "Retirar dos marcadores"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1493
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Engadir aos favoritos" msgstr "Engadir aos favoritos"
@@ -930,7 +925,7 @@ msgstr "Ver conta"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razón descoñecida" msgstr "Razón descoñecida"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Xanelas" msgstr "Xanelas"
@@ -1078,7 +1073,7 @@ msgstr "Instalar"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?" msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333 #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@@ -1158,7 +1153,7 @@ msgstr "Non hai mensaxes"
msgid "Message Tray" msgid "Message Tray"
msgstr "Bandexa de mensaxes" msgstr "Bandexa de mensaxes"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Información do sistema" msgstr "Información do sistema"
@@ -1190,21 +1185,21 @@ msgstr "Vista xeral"
msgid "Type to search…" msgid "Type to search…"
msgstr "Escriba para buscar…" msgstr "Escriba para buscar…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Saír" msgstr "Saír"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Menú de preferencias" msgstr "Menú de preferencias"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1213,7 +1208,7 @@ msgstr "Barra superior"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1242,7 +1237,7 @@ msgstr[1] "%d notificacións novas"
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a pantalla" msgstr "GNOME precisa bloquear a pantalla"
@@ -1253,11 +1248,11 @@ msgstr "GNOME precisa bloquear a pantalla"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Non foi posíbel bloquear" msgstr "Non foi posíbel bloquear"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo" msgstr "Un aplicativo impediu o bloqueo"
@@ -1436,7 +1431,7 @@ msgstr "Aceptar"
msgid "Brightness" msgid "Brightness"
msgstr "Brillo" msgstr "Brillo"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostrar a distribución do teclado" msgstr "Mostrar a distribución do teclado"
@@ -1606,11 +1601,11 @@ msgstr "Iniciar sesión como outro usuario"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desbloquear xanela" msgstr "Desbloquear xanela"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Aplicativos" msgstr "Aplicativos"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"

1151
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

342
po/it.po
View File

@@ -8,12 +8,12 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell 3.7.x\n" "Project-Id-Version: gnome-shell 3.9.x\n"
"Report-Msgid-Bugs-To: \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-16 14:29+0200\n" "POT-Creation-Date: 2013-09-06 17:26+0000\n"
"PO-Revision-Date: 2013-09-15 18:48+0200\n" "PO-Revision-Date: 2013-09-06 22:14+0200\n"
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n" "Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n" "Language: it\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -51,7 +51,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Gestisce finestre e avvia applicazioni" msgstr "Gestisce finestre e avvia applicazioni"
@@ -64,10 +63,6 @@ msgstr "Preferenze estensioni di GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Configura le estensioni di GNOME Shell" msgstr "Configura le estensioni di GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (compositor wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -353,42 +348,42 @@ msgstr "Errore di autenticazione"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(o passare il dito)" msgstr "(o passare il dito)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Comando non trovato" msgstr "Comando non trovato"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Impossibile analizzare il comando:" msgstr "Impossibile analizzare il comando:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Esecuzione di «%s» non riuscita:" msgstr "Esecuzione di «%s» non riuscita:"
#: ../js/ui/appDisplay.js:598 #: ../js/ui/appDisplay.js:573
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Qui saranno mostrate le applicazioni usate frequentemente" msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
#: ../js/ui/appDisplay.js:714 #: ../js/ui/appDisplay.js:689
msgid "Frequent" msgid "Frequent"
msgstr "Frequenti" msgstr "Frequenti"
#: ../js/ui/appDisplay.js:721 #: ../js/ui/appDisplay.js:696
msgid "All" msgid "All"
msgstr "Tutte" msgstr "Tutte"
#: ../js/ui/appDisplay.js:1516 #: ../js/ui/appDisplay.js:1487
msgid "New Window" msgid "New Window"
msgstr "Nuova finestra" msgstr "Nuova finestra"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1490 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti" msgstr "Rimuovi dai preferiti"
#: ../js/ui/appDisplay.js:1520 #: ../js/ui/appDisplay.js:1491
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti" msgstr "Aggiungi ai preferiti"
@@ -404,8 +399,7 @@ msgstr "%s è stato aggiunto ai preferiti."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti." msgstr "%s è stato rimosso dai preferiti."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807 #: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Impostazioni" msgstr "Impostazioni"
@@ -434,7 +428,7 @@ msgstr "%H.%M"
#: ../js/ui/calendar.js:77 #: ../js/ui/calendar.js:77
msgctxt "event list time" msgctxt "event list time"
msgid "%l\\u2236%M\\u2009%p" msgid "%l\\u2236%M\\u2009%p"
msgstr "%l.%M\\u2009%p" msgstr "%l.%M\\u2009%p"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
@@ -942,7 +936,7 @@ msgstr "Visualizza account"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Motivo sconosciuto" msgstr "Motivo sconosciuto"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Finestre" msgstr "Finestre"
@@ -1064,7 +1058,7 @@ msgstr "Riavvia e installa"
#: ../js/ui/endSessionDialog.js:271 #: ../js/ui/endSessionDialog.js:271
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
msgstr "Alcune applicazioni risultano occupate o con lavoro non salvato." msgstr ""
#: ../js/ui/endSessionDialog.js:277 #: ../js/ui/endSessionDialog.js:277
msgid "Other users are logged in." msgid "Other users are logged in."
@@ -1091,7 +1085,7 @@ msgstr "Installa"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?" msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333 #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard" msgid "Keyboard"
msgstr "Tastiera" msgstr "Tastiera"
@@ -1205,17 +1199,21 @@ msgstr "Panoramica"
msgid "Type to search…" msgid "Type to search…"
msgstr "Digita per cercare…" msgstr "Digita per cercare…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Esci" msgstr "Esci"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Attività" msgstr "Attività"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Menu impostazioni"
#: ../js/ui/panel.js:901
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superiore" msgstr "Barra superiore"
@@ -1224,7 +1222,7 @@ msgstr "Barra superiore"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
@@ -1253,7 +1251,7 @@ msgstr[1] "%d nuove notifiche"
msgid "Lock" msgid "Lock"
msgstr "Blocca" msgstr "Blocca"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME deve bloccare lo schermo" msgstr "GNOME deve bloccare lo schermo"
@@ -1264,11 +1262,11 @@ msgstr "GNOME deve bloccare lo schermo"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Impossibile bloccare" msgstr "Impossibile bloccare"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Il blocco è stato impedito da un'applicazione." msgstr "Il blocco è stato impedito da un'applicazione."
@@ -1448,7 +1446,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Luminosità" msgstr "Luminosità"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostra disposizione tastiera" msgstr "Mostra disposizione tastiera"
@@ -1560,9 +1558,8 @@ msgstr "In stima…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, c-format #, c-format
msgid "%d\\u2236%02d Remaining (%d%%)" msgid "%d\\u2236%02d Remaining (%d%%)"
msgstr "%d.%02d rimanente (%d%%)" msgstr "%d\\u2236%02d rimanente (%d%%)"
# in stile MacOS sarebbe "al pieno" :P
#. Translators: this is <hours>:<minutes> Until Full (<percentage>) #. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, c-format #, c-format
@@ -1620,11 +1617,11 @@ msgstr "Accedi come altro utente"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Sblocca finestra" msgstr "Sblocca finestra"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Applicazioni" msgstr "Applicazioni"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Cerca" msgstr "Cerca"
@@ -1730,3 +1727,274 @@ msgstr "La password non può essere vuota"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Il dialogo di autenticazione è stato annullato dall'utente" msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
#~ msgid "Screenshots"
#~ msgstr "Schermate"
#~ msgid "Record a screencast"
#~ msgstr "Registra uno screencast"
#~ msgid ""
#~ "Internally used to store the last IM presence explicitly set by the user. "
#~ "The value here is from the TpConnectionPresenceType enumeration."
#~ msgstr ""
#~ "Usato internamente per memorizzare l'ultimo stato di presenza IM "
#~ "impostato esplicitamente dall'utente. Il valore corrisponde alla "
#~ "enumerazione TpConnectionPresenceType."
#~ msgid ""
#~ "Internally used to store the last session presence status for the user. "
#~ "The value here is from the GsmPresenceStatus enumeration."
#~ msgstr ""
#~ "Usato internamente per memorizzare lo stato di presenza dell'ultima "
#~ "sessione per l'utente. Il valore corrisponde alla enumerazione "
#~ "GsmPresenceStatus."
#~ msgid "Keybinding to toggle the screen recorder"
#~ msgstr "Associazione tasti per commutare registrazione schermo"
#~ msgid "Keybinding to start/stop the builtin screen recorder."
#~ msgstr ""
#~ "Associazione di tasti per avviare/fermare il registratore di schermo "
#~ "incorporato."
#~ msgid "Framerate used for recording screencasts."
#~ msgstr "Framerate per la registrazione di screencast."
#~ msgid ""
#~ "The framerate of the resulting screencast recordered by GNOME Shell's "
#~ "screencast recorder in frames-per-second."
#~ msgstr ""
#~ "Il framerate in fotogrammi al secondo dello screencast registrato "
#~ "attraverso il registratore della GNOME Shell."
#~ msgid "The gstreamer pipeline used to encode the screencast"
#~ msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
#~ msgid ""
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the "
#~ "syntax used for gst-launch. The pipeline should have an unconnected sink "
#~ "pad where the recorded video is recorded. It will normally have a "
#~ "unconnected source pad; output from that pad will be written into the "
#~ "output file. However the pipeline can also take care of its own output - "
#~ "this might be used to send the output to an icecast server via shout2send "
#~ "or similar. When unset or set to an empty value, the default pipeline "
#~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 "
#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to "
#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the "
#~ "optimal thread count on the system."
#~ msgstr ""
#~ "Imposta la pipeline di GStreamer utilizzata per codificare le "
#~ "registrazioni, seguendo la sintassi di gst-launch. La pipeline dovrebbe "
#~ "presentare un pad sink scollegato dove il video viene effettivamente "
#~ "registrato. Dispone normalmente di un pad sorgente scollegato: l'output "
#~ "da quel pad viene scritto nel file di uscita. La pipeline può comunque "
#~ "gestire autonomamente il proprio output: questo può essere utile per "
#~ "inviare l'output verso un server icecast attraverso shout2send o simili. "
#~ "Quando non impostata o senza alcun valore, viene usata la pipeline "
#~ "predefinita il cui valore è \"min_quantizer=13 max_quantizer=13 cpu-"
#~ "used=5 deadline=1000000 threads=%T ! queue ! webmmux\" e che registra nel "
#~ "formato WEBM usando il codec VP8. %T è usato come un segnaposto per una "
#~ "stima del valore di thread ottimale per il sistema in uso."
#~ msgid "File extension used for storing the screencast"
#~ msgstr "Estensione del file utilizzato per salvare lo screencast"
#~ msgid ""
#~ "The filename for recorded screencasts will be a unique filename based on "
#~ "the current date, and use this extension. It should be changed when "
#~ "recording to a different container format."
#~ msgstr ""
#~ "Il nome del file degli screencast registrati è un nome unico basato sulla "
#~ "data corrente e utilizza questa estensione. Dovrebbe essere modificato "
#~ "quando si registra utilizzando un diverso formato contenitore."
#~ msgid "Session"
#~ msgstr "Sessione"
#~ msgid "Power"
#~ msgstr "Risparmio energetico"
#~ msgid "Restart"
#~ msgstr "Riavvia"
#~ msgid "Screencast from %d %t"
#~ msgstr "Screencast da %d %t"
# oddio... abbandonare il sistema sembra la nave che affonda... (LF)
#~ msgid "Click Log Out to quit these applications and log out of the system."
#~ msgstr ""
#~ "Fare clic su «Termina sessione» per chiudere queste applicazioni e "
#~ "abbandonare il sistema."
#~ msgid "Logging out of the system."
#~ msgstr "Chiusura della sessione."
#~ msgid "Click Power Off to quit these applications and power off the system."
#~ msgstr ""
#~ "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il "
#~ "sistema."
#~ msgid "Powering off the system."
#~ msgstr "Spegnimento del sistema."
#~ msgid "Click Restart to quit these applications and restart the system."
#~ msgstr ""
#~ "Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il "
#~ "sistema."
#~ msgid "Restarting the system."
#~ msgstr "Riavvio del sistema."
#~ msgid "Universal Access Settings"
#~ msgstr "Impostazioni accesso universale"
# su Android è Rilevabile :P
#~ msgid "Visibility"
#~ msgstr "Visibile"
#~ msgid "Send Files to Device…"
#~ msgstr "Invia file al dispositivo…"
#~ msgid "Set Up a New Device…"
#~ msgstr "Imposta un nuovo dispositivo…"
#~ msgid "hardware disabled"
#~ msgstr "hardware disabilitato"
# indica lo stato del device BT, per esempio gli auricolari
# credo sia meglio l'aggettivo che il sostantivo
#~ msgid "Connection"
#~ msgstr "Collegato"
#~ msgid "Send Files…"
#~ msgstr "Invia file…"
#~ msgid "Keyboard Settings"
#~ msgstr "Impostazioni tastiera"
#~ msgid "Mouse Settings"
#~ msgstr "Impostazioni mouse"
#~ msgid "Sound Settings"
#~ msgstr "Impostazioni audio"
#~ msgid "Region & Language Settings"
#~ msgstr "Impostazioni regione e lingua"
#~ msgid "Volume, network, battery"
#~ msgstr "Volume, rete, batteria"
#~ msgid "Wi-Fi"
#~ msgstr "Wi-Fi"
#~ msgid "disabled"
#~ msgstr "disabilitata"
#~ msgid "More…"
#~ msgstr "Altro…"
#~ msgid "Wired"
#~ msgstr "Via cavo"
#~ msgid "Mobile broadband"
#~ msgstr "Banda larga mobile"
#~ msgid "Networking is disabled"
#~ msgstr "Rete disabilitata"
#~ msgid "%d hour remaining"
#~ msgid_plural "%d hours remaining"
#~ msgstr[0] "%d ora rimanente"
#~ msgstr[1] "%d ore rimanenti"
#~ msgid "%d %s %d %s remaining"
#~ msgstr "%d %s e %d %s rimanenti"
#~ msgid "hour"
#~ msgid_plural "hours"
#~ msgstr[0] "ora"
#~ msgstr[1] "ore"
#~ msgid "minute"
#~ msgid_plural "minutes"
#~ msgstr[0] "minuto"
#~ msgstr[1] "minuti"
#~ msgid "%d minute remaining"
#~ msgid_plural "%d minutes remaining"
#~ msgstr[0] "%d minuto rimanente"
#~ msgstr[1] "%d minuti rimanenti"
#~ msgctxt "percent of battery remaining"
#~ msgid "%d%%"
#~ msgstr "%d%%"
#~ msgid "AC Adapter"
#~ msgstr "Alimentatore di corrente"
#~ msgid "Laptop Battery"
#~ msgstr "Batteria del portatile"
#~ msgid "UPS"
#~ msgstr "UPS"
#~ msgid "Monitor"
#~ msgstr "Monitor"
#~ msgid "Mouse"
#~ msgstr "Mouse"
#~ msgid "PDA"
#~ msgstr "PDS"
# c'era una discussione su tp...
#~ msgid "Cell Phone"
#~ msgstr "Cellulare"
#~ msgid "Media Player"
#~ msgstr "Lettore multimediale"
#~ msgid "Tablet"
#~ msgstr "Tablet"
#~ msgid "Computer"
#~ msgstr "Computer"
#~ msgctxt "device"
#~ msgid "Unknown"
#~ msgstr "Sconosciuto"
#~ msgid "Available"
#~ msgstr "Disponibile"
#~ msgid "Busy"
#~ msgstr "Non disponibile"
#~ msgid "Invisible"
#~ msgstr "Invisibile"
#~ msgid "Away"
#~ msgstr "Assente"
#~ msgid "Idle"
#~ msgstr "Inattivo"
#~ msgid "Notifications"
#~ msgstr "Notifiche"
# accorciato, altrimenti non si legge...
#~ msgid "Your chat status will be set to busy"
#~ msgstr "Stato per chat impostato a non disponibile"
#~ msgid ""
#~ "Notifications are now disabled, including chat messages. Your online "
#~ "status has been adjusted to let others know that you might not see their "
#~ "messages."
#~ msgstr ""
#~ "Le notifiche sono ora disabilitate, inclusi i messaggi di chat. Lo stato "
#~ "online è stato modificato in modo che gli altri sappiano che i loro "
#~ "messaggi potrebbero non essere notati."
#~ msgid "Shutting down might cause them to lose unsaved work."
#~ msgstr "L'arresto potrebbe causare la perdita del loro lavoro non salvato."

143
po/kk.po
View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: master\n" "Project-Id-Version: master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-14 18:10+0000\n" "POT-Creation-Date: 2013-08-30 14:46+0000\n"
"PO-Revision-Date: 2013-09-15 13:44+0600\n" "PO-Revision-Date: 2013-08-31 19:43+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n" "Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n" "Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n" "Language: kk\n"
@@ -48,7 +48,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Терезелерді басқару мен қолданбаларды жөнелту" msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
@@ -61,10 +60,6 @@ msgstr "GNOME Shell кеңейту баптаулары"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell кеңейтулерін баптау" 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 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -90,10 +85,6 @@ msgid ""
"list. You can also manipulate this list with the EnableExtension and " "list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell." "DisableExtension DBus methods on org.gnome.Shell."
msgstr "" msgstr ""
"GNOME Shell кеңейтулерінде uuid қасиеті бар; бұл кілт жүктелетін кеңейтулер "
"тізімін сақтайды. Жүйеге кірген кезде жүктелем дейтін кеңейту осы тізімде "
"болуы тиіс. Бұл тізімді org.gnome.Shell ішіндегі EnableExtension және "
"DisableExtension DBus тәсілдерімен де өзгертуге болады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5 #: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "List of desktop file IDs for favorite applications" 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 " "The applications corresponding to these identifiers will be displayed in the "
"favorites area." "favorites area."
msgstr "" msgstr ""
"Осы анықтағыштарға сәйкес келетін қолданбалар таңдамалылар аймағында "
"көрсетілетін болады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7 #: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of categories that should be displayed as folders" 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 " "Each category name in this list will be represented as folder in the "
"application view, rather than being displayed inline in the main view." "application view, rather than being displayed inline in the main view."
msgstr "" msgstr ""
"Бұл тізімдегі әрбір санат аты басты көріністе қатарынан көрсетілудің орнына "
"қолданбалар көрінісінде бума ретінде көрсетіледі."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9 #: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog" 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-" "This key overrides the automatic hiding of the 'Log out' menuitem in single-"
"user, single-session situations." "user, single-session situations."
msgstr "" msgstr ""
"Бұл кілт бір пайдаланушы, бір сессия бар кезінде 'Жүйеден шығу' "
"мүмкіндігінің автоматты түрде жасыруын алмастырады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13 #: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "" msgid ""
@@ -153,10 +138,6 @@ msgid ""
"'Remember Password' checkbox will be present. This key sets the default " "'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox." "state of the checkbox."
msgstr "" msgstr ""
"Қоршам шифрленген құрылғы немесе қашықтағы файлдық жүйе тіркелген кезде "
"парольді сұрайды. Егер парольді болашақтағы қолданулар үшін сақтау керек "
"болса, 'Парольді еске сақтау' жалаушасые орнатыңыз. Бұл кілт жалаушаның "
"бастапқы күйін орнатады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15 #: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Show the week date in the calendar" msgid "Show the week date in the calendar"
@@ -226,13 +207,10 @@ msgid ""
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'." "only' (shows only the application icon) or 'both'."
msgstr "" msgstr ""
"Терезелер ауыстырғышта қалай көрсетілетінін сипаттайды. Мүмкін мәндері "
"'thumbnail-only' (терезенің кіші көрінісі көрсетіледі), 'app-icon-only' (тек "
"қолданба таңбашасы көрсетіледі) немесе 'both' (екеуі де)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31 #: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Модальды сұхбатты аталық терезесіне жалғау" msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32 #: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "" msgid ""
@@ -256,8 +234,6 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35 #: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске "
"қосу"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36 #: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
@@ -283,7 +259,7 @@ msgstr "Жоғарыдағы ашылмалы тізімнен баптау үш
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132 #: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:679
msgid "Cancel" msgid "Cancel"
msgstr "Бас тарту" msgstr "Бас тарту"
@@ -344,42 +320,38 @@ msgstr "Аутентификация қатесі"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(немесе саусағыңызды өткізіңіз)" msgstr "(немесе саусағыңызды өткізіңіз)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Команда табылмады" msgstr "Команда табылмады"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Команданы талдау мүмкін емес:" msgstr "Команданы талдау мүмкін емес:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "'%s' жөнелту сәтсіз:" msgstr "'%s' жөнелту сәтсіз:"
#: ../js/ui/appDisplay.js:598 #: ../js/ui/appDisplay.js:386
msgid "Frequently used applications will appear here"
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
#: ../js/ui/appDisplay.js:714
msgid "Frequent" msgid "Frequent"
msgstr "Жиі" msgstr "Жиі"
#: ../js/ui/appDisplay.js:721 #: ../js/ui/appDisplay.js:393
msgid "All" msgid "All"
msgstr "Барлық" msgstr "Барлық"
#: ../js/ui/appDisplay.js:1516 #: ../js/ui/appDisplay.js:991
msgid "New Window" msgid "New Window"
msgstr "Жаңа терезе" msgstr "Жаңа терезе"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:994 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру" msgstr "Таңдамалылардан өшіру"
#: ../js/ui/appDisplay.js:1520 #: ../js/ui/appDisplay.js:995
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу" msgstr "Таңдамалыларға қосу"
@@ -393,8 +365,7 @@ msgstr "%s таңдамалыларыңызға қосылды."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s таңдамалыларыңыздан өшірілді." msgstr "%s таңдамалыларыңыздан өшірілді."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807 #: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Баптаулар" msgstr "Баптаулар"
@@ -549,7 +520,7 @@ msgstr "Бүгін"
#: ../js/ui/calendar.js:789 #: ../js/ui/calendar.js:789
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Ертең" msgstr "Ертен"
#: ../js/ui/calendar.js:800 #: ../js/ui/calendar.js:800
msgid "This week" msgid "This week"
@@ -589,7 +560,7 @@ msgid "Type again:"
msgstr "Қайтадан енгізіңіз:" msgstr "Қайтадан енгізіңіз:"
#: ../js/ui/components/networkAgent.js:127 ../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 #: ../js/ui/status/network.js:268 ../js/ui/status/network.js:682
msgid "Connect" msgid "Connect"
msgstr "Байланысу" msgstr "Байланысу"
@@ -609,7 +580,7 @@ msgstr "Кілт:"
#: ../js/ui/components/networkAgent.js:261 #: ../js/ui/components/networkAgent.js:261
msgid "Identity: " msgid "Identity: "
msgstr "Анықтағыш:" msgstr ""
#: ../js/ui/components/networkAgent.js:263 #: ../js/ui/components/networkAgent.js:263
msgid "Private key password: " msgid "Private key password: "
@@ -922,7 +893,7 @@ msgstr "Тіркелгіні қарап шығу"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Себебі белгісіз" msgstr "Себебі белгісіз"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Терезелер" msgstr "Терезелер"
@@ -932,7 +903,7 @@ msgstr "Қолданбаларды көрсету"
#. Translators: this is the name of the dock/favorites area on #. Translators: this is the name of the dock/favorites area on
#. the left of the overview #. the left of the overview
#: ../js/ui/dash.js:442 #: ../js/ui/dash.js:439
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
@@ -1016,12 +987,15 @@ msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады." msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады."
#: ../js/ui/endSessionDialog.js:112 #: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Қайта қосу және жаңартуларды орнату" msgstr "Қайта қосу және жаңартуларды орнату"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, c-format #, 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 "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@@ -1063,7 +1037,7 @@ msgstr "Орнату"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, орнату керек пе?" 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" msgid "Keyboard"
msgstr "Пернетақта" msgstr "Пернетақта"
@@ -1143,7 +1117,7 @@ msgstr "Хабарламалар жоқ"
msgid "Message Tray" msgid "Message Tray"
msgstr "Жүйелік трей" msgstr "Жүйелік трей"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Жүйелік ақпарат" msgstr "Жүйелік ақпарат"
@@ -1174,17 +1148,21 @@ msgstr "Шолу"
msgid "Type to search…" msgid "Type to search…"
msgstr "Іздеу үшін теріңіз..." msgstr "Іздеу үшін теріңіз..."
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Шығу" msgstr "Шығу"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Көрініс" msgstr "Көрініс"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Баптаулар мәзірі"
#: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Үстідегі панель" msgstr "Үстідегі панель"
@@ -1193,7 +1171,7 @@ msgstr "Үстідегі панель"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1221,7 +1199,7 @@ msgstr[0] "%d жаңа ескерту"
msgid "Lock" msgid "Lock"
msgstr "Блоктау" msgstr "Блоктау"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME экранды блоктау керек" msgstr "GNOME экранды блоктау керек"
@@ -1232,19 +1210,19 @@ msgstr "GNOME экранды блоктау керек"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Блоктау мүмкін емес" 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" msgid "Lock was blocked by an application"
msgstr "Блоктауды басқа қолданба болдырмады" msgstr "Блоктауды басқа қолданба болдырмады"
#: ../js/ui/searchDisplay.js:447 #: ../js/ui/searchDisplay.js:445
msgid "Searching…" msgid "Searching…"
msgstr "Іздеу..." msgstr "Іздеу..."
#: ../js/ui/searchDisplay.js:491 #: ../js/ui/searchDisplay.js:489
msgid "No results." msgid "No results."
msgstr "Нәтижелер жоқ." msgstr "Нәтижелер жоқ."
@@ -1325,7 +1303,7 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112 #: ../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" msgid "Turn Off"
msgstr "Сөндіру" msgstr "Сөндіру"
@@ -1413,7 +1391,7 @@ msgstr "ОК"
msgid "Brightness" msgid "Brightness"
msgstr "Жарықтылығы" msgstr "Жарықтылығы"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Пернетақта жаймасын көрсету" msgstr "Пернетақта жаймасын көрсету"
@@ -1421,83 +1399,83 @@ msgstr "Пернетақта жаймасын көрсету"
msgid "<unknown>" msgid "<unknown>"
msgstr "<белгісіз>" 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" msgid "Off"
msgstr "Сөнд." 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 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "Желі баптаулары" msgstr "Желі баптаулары"
#. Translators: this is for network devices that are physically present but are not #. 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) #. 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" msgid "unmanaged"
msgstr "басқарылмайтын" msgstr "басқарылмайтын"
#: ../js/ui/status/network.js:366 #: ../js/ui/status/network.js:359
msgid "disconnecting..." msgid "disconnecting..."
msgstr "байланысты үзу..." 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..." msgid "connecting..."
msgstr "байланысты орнату..." msgstr "байланысты орнату..."
#. Translators: this is for network connections that require some kind of key or password #. 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" msgid "authentication required"
msgstr "аутентификация керек" msgstr "аутентификация керек"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing #. module, which is missing
#: ../js/ui/status/network.js:383 #: ../js/ui/status/network.js:376
msgid "firmware missing" msgid "firmware missing"
msgstr "бинарлы кодтары жоқ" msgstr "бинарлы кодтары жоқ"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:387 #: ../js/ui/status/network.js:380
msgid "unavailable" msgid "unavailable"
msgstr "қолжетерсіз" 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" msgid "connection failed"
msgstr "байланысты орнату сәтсіз" msgstr "байланысты орнату сәтсіз"
#: ../js/ui/status/network.js:654 #: ../js/ui/status/network.js:647
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Wi-Fi желілері" msgstr "Wi-Fi желілері"
#: ../js/ui/status/network.js:656 #: ../js/ui/status/network.js:649
msgid "Select a network" msgid "Select a network"
msgstr "Желіні таңдаңыз" msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:680 #: ../js/ui/status/network.js:673
msgid "No Networks" msgid "No Networks"
msgstr "Желілер жоқ" msgstr "Желілер жоқ"
#: ../js/ui/status/network.js:949 #: ../js/ui/status/network.js:942
msgid "Select Network" msgid "Select Network"
msgstr "Желіні таңдаңыз" msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:1034 #: ../js/ui/status/network.js:1027
msgid "Turn On" msgid "Turn On"
msgstr "Іске қосу" msgstr "Іске қосу"
#: ../js/ui/status/network.js:1167 #: ../js/ui/status/network.js:1160
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1306 #: ../js/ui/status/network.js:1299
msgid "Network Manager" msgid "Network Manager"
msgstr "Желілер басқарушысы" msgstr "Желілер басқарушысы"
#: ../js/ui/status/network.js:1345 #: ../js/ui/status/network.js:1338
msgid "Connection failed" msgid "Connection failed"
msgstr "Байланыс орнату сәтсіз" msgstr "Байланыс орнату сәтсіз"
#: ../js/ui/status/network.js:1346 #: ../js/ui/status/network.js:1339
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Желілік байланысты белсендіру сәтсіз" msgstr "Желілік байланысты белсендіру сәтсіз"
@@ -1583,11 +1561,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Блоктауды алу терезесі" msgstr "Блоктауды алу терезесі"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Қолданбалар" msgstr "Қолданбалар"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Іздеу" msgstr "Іздеу"
@@ -1603,7 +1581,7 @@ msgstr ""
#: ../js/ui/wanda.js:81 #: ../js/ui/wanda.js:81
#, c-format #, c-format
msgid "%s the Oracle says" msgid "%s the Oracle says"
msgstr "Болжаушы айтады: %s" msgstr ""
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, c-format #, c-format
@@ -1687,6 +1665,3 @@ msgstr "Пароль бос болуы мүмкін емес"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация терезесін пайдаланушы тайдырды" msgstr "Аутентификация терезесін пайдаланушы тайдырды"
#~ msgid "Settings Menu"
#~ msgstr "Баптаулар мәзірі"

1480
po/ko.po

File diff suppressed because it is too large Load Diff

View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-12 22:40+0300\n" "PO-Revision-Date: 2013-09-04 00:33+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@@ -53,7 +53,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell aplinka" msgstr "GNOME Shell aplinka"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Langų valdymas ir programų paleidimas" msgstr "Langų valdymas ir programų paleidimas"
@@ -66,10 +65,6 @@ msgstr "GNOME Shell plėtinių nustatymai"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Konfigūruoti GNOME Shell plėtinius" msgstr "Konfigūruoti GNOME Shell plėtinius"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (wayland kompozitorius)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -346,42 +341,42 @@ msgstr "Tapatybės patvirtinimo klaida"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)" msgstr "(arba perbraukite pirštu)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Komanda nerasta" msgstr "Komanda nerasta"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Nepavyko perskaityti komandos:" msgstr "Nepavyko perskaityti komandos:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Nepavyko įvykdyti „%s“:" msgstr "Nepavyko įvykdyti „%s“:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Čia bus matomos dažnai naudojamos programos" msgstr "Čia bus matomos dažnai naudojamos programos"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "Dažnai naudojamos" msgstr "Dažnai naudojamos"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "Visos" msgstr "Visos"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
@@ -925,7 +920,7 @@ msgstr "Rodyti paskyrą"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Nežinoma priežastis" msgstr "Nežinoma priežastis"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Langai" msgstr "Langai"
@@ -1077,7 +1072,7 @@ msgstr "Įdiegti"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?" msgstr "Atsiųsti ir įdiegti „%s“ iš 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" msgid "Keyboard"
msgstr "Klaviatūra" msgstr "Klaviatūra"
@@ -1157,7 +1152,7 @@ msgstr "Nėra pranešimų"
msgid "Message Tray" msgid "Message Tray"
msgstr "Pranešimų juosta" msgstr "Pranešimų juosta"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
@@ -1190,21 +1185,21 @@ msgstr "Apžvalga"
msgid "Type to search…" msgid "Type to search…"
msgstr "Rašykite, ko ieškote…" msgstr "Rašykite, ko ieškote…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Užverti" msgstr "Užverti"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Apžvalga" msgstr "Apžvalga"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Nustatymų meniu" msgstr "Nustatymų meniu"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Viršutinė juosta" msgstr "Viršutinė juosta"
@@ -1213,7 +1208,7 @@ msgstr "Viršutinė juosta"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1243,7 +1238,7 @@ msgstr[2] "%d naujų pranešimų"
msgid "Lock" msgid "Lock"
msgstr "Užrakinti" msgstr "Užrakinti"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME aplinkai reikia užrakinti ekraną" msgstr "GNOME aplinkai reikia užrakinti ekraną"
@@ -1254,11 +1249,11 @@ msgstr "GNOME aplinkai reikia užrakinti ekraną"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Nepavyksta užrakinti" msgstr "Nepavyksta užrakinti"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą" msgstr "Programa užblokavo užrakinimą"
@@ -1437,7 +1432,7 @@ msgstr "Gerai"
msgid "Brightness" msgid "Brightness"
msgstr "Ryškumas" msgstr "Ryškumas"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Rodyti klaviatūros išdėstymą" msgstr "Rodyti klaviatūros išdėstymą"
@@ -1607,11 +1602,11 @@ msgstr "Prisijungti kitu naudotoju"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Atrakinimo langas" msgstr "Atrakinimo langas"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Programos" msgstr "Programos"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Ieškoti" msgstr "Ieškoti"
@@ -1717,3 +1712,4 @@ msgstr "Slaptažodis negali būti tuščias"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą" msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"

View File

@@ -12,8 +12,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-15 01:20+0000\n" "POT-Creation-Date: 2013-09-04 02:07+0200\n"
"PO-Revision-Date: 2013-09-15 01:21+0200\n" "PO-Revision-Date: 2013-09-04 02:08+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n" "Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n" "Language: pl\n"
@@ -54,7 +54,6 @@ msgid "GNOME Shell"
msgstr "Powłoka środowiska GNOME" msgstr "Powłoka środowiska GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Zarządzanie oknami i uruchamianiem programów" msgstr "Zarządzanie oknami i uruchamianiem programów"
@@ -67,10 +66,6 @@ msgstr "Preferencje rozszerzenia powłoki GNOME"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Konfiguracja rozszerzeń powłoki GNOME" msgstr "Konfiguracja rozszerzeń powłoki GNOME"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Powłoka środowiska GNOME (Wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -355,42 +350,42 @@ msgstr "Błąd uwierzytelniania"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(lub przeciągnięcie palca)" msgstr "(lub przeciągnięcie palca)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Nie odnaleziono polecenia" msgstr "Nie odnaleziono polecenia"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Nie można przetworzyć polecenia:" msgstr "Nie można przetworzyć polecenia:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:" msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
#: ../js/ui/appDisplay.js:598 #: ../js/ui/appDisplay.js:580
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "W tym miejscu pojawią się często używane programy" msgstr "W tym miejscu pojawią się często używane programy"
#: ../js/ui/appDisplay.js:714 #: ../js/ui/appDisplay.js:696
msgid "Frequent" msgid "Frequent"
msgstr "Często używane" msgstr "Często używane"
#: ../js/ui/appDisplay.js:721 #: ../js/ui/appDisplay.js:703
msgid "All" msgid "All"
msgstr "Wszystkie" msgstr "Wszystkie"
#: ../js/ui/appDisplay.js:1516 #: ../js/ui/appDisplay.js:1490
msgid "New Window" msgid "New Window"
msgstr "Nowe okno" msgstr "Nowe okno"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1493 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Usuń z ulubionych" msgstr "Usuń z ulubionych"
#: ../js/ui/appDisplay.js:1520 #: ../js/ui/appDisplay.js:1494
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj do ulubionych" msgstr "Dodaj do ulubionych"
@@ -404,8 +399,7 @@ msgstr "Program %s został dodany do ulubionych."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program %s został usunięty z ulubionych." msgstr "Program %s został usunięty z ulubionych."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807 #: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Ustawienia" msgstr "Ustawienia"
@@ -936,7 +930,7 @@ msgstr "Wyświetl konto"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Nieznana przyczyna" msgstr "Nieznana przyczyna"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@@ -1089,7 +1083,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "" msgstr ""
"Pobrać i zainstalować rozszerzenie \"%s\" z witryny extensions.gnome.org?" "Pobrać i zainstalować rozszerzenie \"%s\" z witryny 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" msgid "Keyboard"
msgstr "Klawiatura" msgstr "Klawiatura"
@@ -1169,7 +1163,7 @@ msgstr "Brak wiadomości"
msgid "Message Tray" msgid "Message Tray"
msgstr "Obszar powiadamiania" msgstr "Obszar powiadamiania"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Informacje systemowe" msgstr "Informacje systemowe"
@@ -1202,17 +1196,21 @@ msgstr "Podgląd"
msgid "Type to search…" msgid "Type to search…"
msgstr "Wyszukiwanie…" msgstr "Wyszukiwanie…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Zakończ" msgstr "Zakończ"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Podgląd" msgstr "Podgląd"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Menu ustawień"
#: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Górny pasek" msgstr "Górny pasek"
@@ -1221,7 +1219,7 @@ msgstr "Górny pasek"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1251,7 +1249,7 @@ msgstr[2] "%d nowych powiadomień"
msgid "Lock" msgid "Lock"
msgstr "Zablokuj ekran" msgstr "Zablokuj ekran"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Środowisko GNOME musi zablokować ekran" msgstr "Środowisko GNOME musi zablokować ekran"
@@ -1262,11 +1260,11 @@ msgstr "Środowisko GNOME musi zablokować ekran"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Nie można zablokować" msgstr "Nie można zablokować"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Blokowanie zostało zablokowane przez program" msgstr "Blokowanie zostało zablokowane przez program"
@@ -1445,7 +1443,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Jasność" msgstr "Jasność"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Wyświetl układ klawiatury" msgstr "Wyświetl układ klawiatury"
@@ -1511,7 +1509,7 @@ msgstr "Brak sieci"
#: ../js/ui/status/network.js:949 #: ../js/ui/status/network.js:949
msgid "Select Network" msgid "Select Network"
msgstr "Wybierz sieć" msgstr "Wybór sieci"
#: ../js/ui/status/network.js:1034 #: ../js/ui/status/network.js:1034
msgid "Turn On" msgid "Turn On"
@@ -1543,7 +1541,7 @@ msgstr "Ustawienia zasilania"
#: ../js/ui/status/power.js:63 #: ../js/ui/status/power.js:63
msgid "Fully Charged" msgid "Fully Charged"
msgstr "Naładowany" msgstr "W pełni naładowany"
#. 0 is reported when UPower does not have enough data #. 0 is reported when UPower does not have enough data
#. to estimate battery life #. to estimate battery life
@@ -1562,7 +1560,7 @@ msgstr "Pozostało: %d\\u2236%02d (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, c-format #, c-format
msgid "%d\\u2236%02d Until Full (%d%%)" msgid "%d\\u2236%02d Until Full (%d%%)"
msgstr "Do naładowania: %d\\u2236%02d (%d%%)" msgstr "Do pełnego naładowania: %d\\u2236%02d (%d%%)"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
@@ -1615,11 +1613,11 @@ msgstr "Zaloguj jako inny użytkownik"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Okno odblokowania" msgstr "Okno odblokowania"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Programy" msgstr "Programy"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Wyszukiwanie" msgstr "Wyszukiwanie"

View File

@@ -19,9 +19,9 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:39+0000\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-12 14:59-0300\n" "PO-Revision-Date: 2013-09-02 20:50-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n" "Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -60,7 +60,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Gerenciamento de janelas e lançador de aplicativos" msgstr "Gerenciamento de janelas e lançador de aplicativos"
@@ -73,11 +72,6 @@ msgstr "Preferências de extensões do GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Configurar extensões do GNOME Shell" msgstr "Configurar extensões do GNOME Shell"
# Traduções do Xfce e da Microsoft usam compositor --Enrico
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (compositor wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -361,42 +355,42 @@ msgstr "Erro de autenticação"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ou deslize o dedo)" msgstr "(ou deslize o dedo)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Comando não encontrado" msgstr "Comando não encontrado"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Não foi possível analisar comando:" msgstr "Não foi possível analisar comando:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "A execução de \"%s\" falhou:" msgstr "A execução de \"%s\" falhou:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Aplicativos usados frequentemente vão aparecer aqui" msgstr "Aplicativos usados frequentemente vão aparecer aqui"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "Frequente" msgstr "Frequente"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "Nova janela" msgstr "Nova janela"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Remover dos favoritos" msgstr "Remover dos favoritos"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adicionar aos favoritos" msgstr "Adicionar aos favoritos"
@@ -940,7 +934,7 @@ msgstr "Visualizar conta"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razão desconhecida" msgstr "Razão desconhecida"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Janelas" msgstr "Janelas"
@@ -1089,7 +1083,7 @@ msgstr "Instalar"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?" msgstr "Baixar e instalar \"%s\" de 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" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@@ -1169,7 +1163,7 @@ msgstr "Sem mensagens"
msgid "Message Tray" msgid "Message Tray"
msgstr "Área de notificação" msgstr "Área de notificação"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Informações do sistema" msgstr "Informações do sistema"
@@ -1201,21 +1195,21 @@ msgstr "Panorama"
msgid "Type to search…" msgid "Type to search…"
msgstr "Digite para pesquisar…" msgstr "Digite para pesquisar…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Sair" msgstr "Sair"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Atividades" msgstr "Atividades"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Menu de configurações" msgstr "Menu de configurações"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1224,7 +1218,7 @@ msgstr "Barra superior"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1253,7 +1247,7 @@ msgstr[1] "%d novas notificações"
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a tela" msgstr "GNOME precisa bloquear a tela"
@@ -1264,11 +1258,11 @@ msgstr "GNOME precisa bloquear a tela"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Não foi possível bloquear" msgstr "Não foi possível bloquear"
#: ../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" msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo" msgstr "O bloqueio foi impedido por um aplicativo"
@@ -1448,7 +1442,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Brilho" msgstr "Brilho"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Exibir disposição de teclado" msgstr "Exibir disposição de teclado"
@@ -1618,11 +1612,11 @@ msgstr "Iniciar sessão como outro usuário"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desbloquear janela" msgstr "Desbloquear janela"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Aplicativos" msgstr "Aplicativos"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Pesquisar" msgstr "Pesquisar"

332
po/ru.po
View File

@@ -13,19 +13,17 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"POT-Creation-Date: 2013-09-14 20:54+0200\n" "PO-Revision-Date: 2013-09-07 23:11+0300\n"
"PO-Revision-Date: 2013-09-13 08:43+0600\n" "Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
"Last-Translator: Dmitriy S. Seregin <dseregin@59.ru>\n"
"Language-Team: русский <gnome-cyr@gnome.org>\n" "Language-Team: русский <gnome-cyr@gnome.org>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && 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"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Gtranslator 2.91.6\n"
"X-Generator: Poedit 1.5.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@@ -56,7 +54,6 @@ msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений" msgstr "Управление окнами и запуск приложений"
@@ -69,48 +66,29 @@ msgstr "Параметры расширений GNOME Shell"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Настроить расширения GNOME Shell" 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 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров" msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2 #: ../data/org.gnome.shell.gschema.xml.in.in.h:2
msgid "" msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
"Allows access to internal debugging and monitoring tools using the Alt-F2 " msgstr "Разрешает доступ к внутренней отладке и инструментам наблюдения, используя диалог Alt-F2."
"dialog."
msgstr ""
"Разрешает доступ к внутренней отладке и инструментам наблюдения, используя "
"диалог Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3 #: ../data/org.gnome.shell.gschema.xml.in.in.h:3
msgid "Uuids of extensions to enable" msgid "Uuids of extensions to enable"
msgstr "Uuid включенных расширений" msgstr "Uuid включенных расширений"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4 #: ../data/org.gnome.shell.gschema.xml.in.in.h:4
msgid "" msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
"GNOME Shell extensions have a uuid property; this key lists extensions which " msgstr "У расширений GNOME Shell есть свойство uuid; в этом ключе перечислены расширения, которые должны быть загружены. Этим список также можно управлять через методы DBus EnableExtension и DisableExtension сервиса org.gnome.Shell."
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell."
msgstr ""
"У расширений GNOME Shell есть свойство uuid; в этом ключе перечислены "
"расширения, которые должны быть загружены. Этим список также можно управлять "
"через методы DBus EnableExtension и DisableExtension сервиса org.gnome.Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5 #: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "List of desktop file IDs for favorite applications" msgid "List of desktop file IDs for favorite applications"
msgstr "Список идентификаторов desktop-файлов для избранных приложений" msgstr "Список идентификаторов desktop-файлов для избранных приложений"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6 #: ../data/org.gnome.shell.gschema.xml.in.in.h:6
msgid "" msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
"The applications corresponding to these identifiers will be displayed in the " msgstr "Приложения, соответствующие этих идентификаторам, будут показаны в области избранных приложений."
"favorites area."
msgstr ""
"Приложения, соответствующие этих идентификаторам, будут показаны в области "
"избранных приложений."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7 #: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of categories that should be displayed as folders" msgid "List of categories that should be displayed as folders"
@@ -118,12 +96,8 @@ msgstr "Список категорий, которые должны отобр
# Перевод лучше усечь, так он лучше воспринимается # Перевод лучше усечь, так он лучше воспринимается
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8 #: ../data/org.gnome.shell.gschema.xml.in.in.h:8
msgid "" 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."
"Each category name in this list will be represented as folder in the " msgstr "Каждая категория из этого списка будет представлена в виде папки в режиме просмотра приложений."
"application view, rather than being displayed inline in the main view."
msgstr ""
"Каждая категория из этого списка будет представлена в виде папки в режиме "
"просмотра приложений."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9 #: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog" msgid "History for command (Alt-F2) dialog"
@@ -138,31 +112,16 @@ msgid "Always show the 'Log out' menuitem in the user menu."
msgstr "Всегда показывать в меню пункт «Завершить сеанс»." msgstr "Всегда показывать в меню пункт «Завершить сеанс»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12 #: ../data/org.gnome.shell.gschema.xml.in.in.h:12
msgid "" msgid "This key overrides the automatic hiding of the 'Log out' menuitem in single-user, single-session situations."
"This key overrides the automatic hiding of the 'Log out' menuitem in single-" msgstr "Этот ключ переопределяет автоматическое скрытие пункта «Завершить сеанс» при использовании одиночного сеанса."
"user, single-session situations."
msgstr ""
"Этот ключ переопределяет автоматическое скрытие пункта «Завершить сеанс» при "
"использовании одиночного сеанса."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13 #: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "" msgid "Whether to remember password for mounting encrypted or remote filesystems"
"Whether to remember password for mounting encrypted or remote filesystems" msgstr "Запоминать ли пароль для подключения зашифрованных или удалённых файловых систем"
msgstr ""
"Запоминать ли пароль для подключения зашифрованных или удалённых файловых "
"систем"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid "" msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a 'Remember Password' checkbox will be present. This key sets the default state of the checkbox."
"The shell will request a password when an encrypted device or a remote " msgstr "GNOME Shell запрашивает пароль при подключении зашифрованных или удалённых файловых систем. Если пароль можно сохранить для последующего использования, для этого действия будет доступна соответствующая флаговая кнопка. Этот ключ устанавливает состояние по умолчание для этой флаговой кнопки."
"filesystem is mounted. If the password can be saved for future use a "
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"GNOME Shell запрашивает пароль при подключении зашифрованных или удалённых "
"файловых систем. Если пароль можно сохранить для последующего использования, "
"для этого действия будет доступна соответствующая флаговая кнопка. Этот ключ "
"устанавливает состояние по умолчание для этой флаговой кнопки."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15 #: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Show the week date in the calendar" msgid "Show the week date in the calendar"
@@ -185,8 +144,7 @@ msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Комбинация клавиш для перехода в режим просмотра приложений" msgstr "Комбинация клавиш для перехода в режим просмотра приложений"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20 #: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "" msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Комбинация клавиш для перехода в режим просмотра приложений." msgstr "Комбинация клавиш для перехода в режим просмотра приложений."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21 #: ../data/org.gnome.shell.gschema.xml.in.in.h:21
@@ -226,42 +184,28 @@ msgid "The application icon mode."
msgstr "Режим значка приложения." msgstr "Режим значка приложения."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30 #: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "" msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'."
"Configures how the windows are shown in the switcher. Valid possibilities " msgstr "Управляет способом отображения окон в переключателе. Доступные значения: «thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать только значок приложения), «both» (показывать миниатюру и значок)."
"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 #: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Прикреплять модальное диалоговое окно к родительскому окну" msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32 #: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "" msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
"This key overrides the key in org.gnome.mutter when running GNOME Shell." msgstr "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
msgstr ""
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33 #: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Arrangement of buttons on the titlebar" msgid "Arrangement of buttons on the titlebar"
msgstr "Расположение кнопок в заголовке окна" msgstr "Расположение кнопок в заголовке окна"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34 #: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "" msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell."
"This key overrides the key in org.gnome.desktop.wm.preferences when running " msgstr "Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при запуске GNOME Shell."
"GNOME Shell."
msgstr ""
"Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при запуске "
"GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35 #: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr "Включить автоматическое изменение размеров окон при перемещении окон к краям экрана"
"Включить автоматическое изменение размеров окон при перемещении окон к краям "
"экрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36 #: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
@@ -284,18 +228,24 @@ msgstr "Расширение"
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Выберите расширение из выпадающего списка." msgstr "Выберите расширение из выпадающего списка."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132 #: ../js/gdm/authPrompt.js:145
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/networkAgent.js:132
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/components/polkitAgent.js:161
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686 #: ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195
#: ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/network.js:686
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:167
#: ../js/gdm/authPrompt.js:215
msgid "Next" msgid "Next"
msgstr "Далее" msgstr "Далее"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:211
#: ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Разблокировать" msgstr "Разблокировать"
@@ -326,7 +276,8 @@ msgstr "(например, пользователь или %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255 #: ../js/gdm/loginDialog.js:627
#: ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273 #: ../js/ui/components/networkAgent.js:273
msgid "Username: " msgid "Username: "
msgstr "Имя пользователя: " msgstr "Имя пользователя: "
@@ -348,42 +299,43 @@ msgstr "Ошибка проверки подлинности"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(или проведите пальцем по считывающему устройству)" msgstr "(или проведите пальцем по считывающему устройству)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Команда не найдена" msgstr "Команда не найдена"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Не удалось разобрать команду:" msgstr "Не удалось разобрать команду:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Не удалось выполнить «%s»:" msgstr "Не удалось выполнить «%s»:"
#: ../js/ui/appDisplay.js:598 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Здесь появляются часто используемые приложения" msgstr "Здесь появляются часто используемые приложения"
#: ../js/ui/appDisplay.js:714 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "Популярные" msgstr "Популярные"
#: ../js/ui/appDisplay.js:721 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "Все" msgstr "Все"
#: ../js/ui/appDisplay.js:1516 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "Новое окно" msgstr "Новое окно"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491
#: ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Удалить из избранного" msgstr "Удалить из избранного"
#: ../js/ui/appDisplay.js:1520 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Добавить в избранное" msgstr "Добавить в избранное"
@@ -397,7 +349,7 @@ msgstr "Приложение %s добавлено в избранное."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Приложение %s удалено из избранного." msgstr "Приложение %s удалено из избранного."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807 #: ../js/ui/backgroundMenu.js:19
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Параметры" msgstr "Параметры"
@@ -584,7 +536,8 @@ msgstr "Открыть с помощью %s"
msgid "Eject" msgid "Eject"
msgstr "Извлечь" msgstr "Извлечь"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280 #: ../js/ui/components/keyring.js:88
#: ../js/ui/components/polkitAgent.js:280
msgid "Password:" msgid "Password:"
msgstr "Пароль:" msgstr "Пароль:"
@@ -592,8 +545,10 @@ msgstr "Пароль:"
msgid "Type again:" msgid "Type again:"
msgstr "Введите ещё раз:" msgstr "Введите ещё раз:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112 #: ../js/ui/components/networkAgent.js:127
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689 #: ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275
#: ../js/ui/status/network.js:689
msgid "Connect" msgid "Connect"
msgstr "Соединиться" msgstr "Соединиться"
@@ -629,11 +584,8 @@ msgstr "Беспроводная сеть требует подтвержден
#: ../js/ui/components/networkAgent.js:305 #: ../js/ui/components/networkAgent.js:305
#, c-format #, c-format
msgid "" msgid "Passwords or encryption keys are required to access the wireless network '%s'."
"Passwords or encryption keys are required to access the wireless network " msgstr "Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
"'%s'."
msgstr ""
"Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
#: ../js/ui/components/networkAgent.js:309 #: ../js/ui/components/networkAgent.js:309
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
@@ -684,7 +636,8 @@ msgstr "Подтвердить"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/components/polkitAgent.js:266 ../js/ui/shellMountOperation.js:383 #: ../js/ui/components/polkitAgent.js:266
#: ../js/ui/shellMountOperation.js:383
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Не удалось подтвердить подлинность. Попробуйте снова." msgstr "Не удалось подтвердить подлинность. Попробуйте снова."
@@ -877,8 +830,7 @@ msgid "This account is already connected to the server"
msgstr "Эта учётная запись уже подключена к серверу" msgstr "Эта учётная запись уже подключена к серверу"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1335
msgid "" msgid "Connection has been replaced by a new connection using the same resource"
"Connection has been replaced by a new connection using the same resource"
msgstr "Соединение было заменено новым, используя тот же источник" msgstr "Соединение было заменено новым, используя тот же источник"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1337
@@ -887,27 +839,19 @@ msgstr "Учётная запись уже существует на серве
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1339
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr "Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
"Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1341
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Сертификат аннулирован" msgstr "Сертификат аннулирован"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1343
msgid "" msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
"Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "Сертификат использует небезопасный алгоритм шифрования или он криптографически нестоек"
msgstr ""
"Сертификат использует небезопасный алгоритм шифрования или он "
"криптографически нестоек"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1345
msgid "" msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
"The length of the server certificate, or the depth of the server certificate " msgstr "Длина сертификата сервера, или глубина цепочки сертификатов сервера, превышает пределы, установленные библиотекой криптографии"
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Длина сертификата сервера, или глубина цепочки сертификатов сервера, "
"превышает пределы, установленные библиотекой криптографии"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1347
msgid "Internal error" msgid "Internal error"
@@ -928,11 +872,13 @@ msgstr "Показать учётную запись"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Неизвестная причина" msgstr "Неизвестная причина"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29
#: ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Окна" msgstr "Окна"
#: ../js/ui/dash.js:248 ../js/ui/dash.js:286 #: ../js/ui/dash.js:248
#: ../js/ui/dash.js:286
msgid "Show Applications" msgid "Show Applications"
msgstr "Показать приложения" msgstr "Показать приложения"
@@ -976,10 +922,8 @@ msgstr "Выйти из системы"
#, c-format #, c-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "" msgstr[0] "Сеанс пользователя %s будет автоматически завершён через %d секунду."
"Сеанс пользователя %s будет автоматически завершён через %d секунду." msgstr[1] "Сеанс пользователя %s будет автоматически завершён через %d секунды."
msgstr[1] ""
"Сеанс пользователя %s будет автоматически завершён через %d секунды."
msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд." msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд."
#: ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:70
@@ -1008,7 +952,8 @@ msgstr[0] "Система будет автоматически выключен
msgstr[1] "Система будет автоматически выключена через %d секунды." msgstr[1] "Система будет автоматически выключена через %d секунды."
msgstr[2] "Система будет автоматически выключена через %d секунд." msgstr[2] "Система будет автоматически выключена через %d секунд."
#: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104 #: ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:104
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Перезапустить" msgstr "Перезапустить"
@@ -1032,21 +977,20 @@ msgstr[1] "Система будет автоматически перезапу
msgstr[2] "Система будет автоматически перезапущена через %d секунд." msgstr[2] "Система будет автоматически перезапущена через %d секунд."
#: ../js/ui/endSessionDialog.js:112 #: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Перезапустить и установить обновления" msgstr "Перезапустить и установить обновления"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, c-format #, 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 "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural "The system will automatically restart and install updates in %d seconds."
"The system will automatically restart and install updates in %d seconds." msgstr[0] "Система автоматически перезапустится и установит обновления через %d секунду."
msgstr[0] "" msgstr[1] "Система автоматически перезапустится и установит обновления через %d секунды."
"Система автоматически перезапустится и установит обновления через %d секунду." msgstr[2] "Система автоматически перезапустится и установит обновления через %d секунд."
msgstr[1] ""
"Система автоматически перезапустится и установит обновления через %d секунды."
msgstr[2] ""
"Система автоматически перезапустится и установит обновления через %d секунд."
#: ../js/ui/endSessionDialog.js:119 #: ../js/ui/endSessionDialog.js:119
msgctxt "button" msgctxt "button"
@@ -1082,7 +1026,8 @@ msgstr "Установить"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?" msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333 #: ../js/ui/keyboard.js:619
#: ../js/ui/status/keyboard.js:334
msgid "Keyboard" msgid "Keyboard"
msgstr "Клавиатура" msgstr "Клавиатура"
@@ -1100,7 +1045,8 @@ msgstr "%s не сообщал о каких-либо ошибках."
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Скрыть ошибки" msgstr "Скрыть ошибки"
#: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813 #: ../js/ui/lookingGlass.js:753
#: ../js/ui/lookingGlass.js:813
msgid "Show Errors" msgid "Show Errors"
msgstr "Показать ошибки" msgstr "Показать ошибки"
@@ -1110,7 +1056,8 @@ msgstr "Включено"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/lookingGlass.js:765
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Выключено" msgstr "Выключено"
@@ -1162,16 +1109,18 @@ msgstr "Нет сообщений"
msgid "Message Tray" msgid "Message Tray"
msgstr "Панель сообщений" msgstr "Панель сообщений"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Системная информация" msgstr "Системная информация"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:629
#: ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Неизвестно" msgstr "Неизвестно"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:491
#: ../js/ui/screenShield.js:152
#, c-format #, c-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@@ -1195,17 +1144,22 @@ msgstr "Обзор"
msgid "Type to search…" msgid "Type to search…"
msgstr "Найти…" msgstr "Найти…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Закрыть" msgstr "Закрыть"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Обзор" 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" msgid "Top Bar"
msgstr "Верхняя панель" msgstr "Верхняя панель"
@@ -1214,7 +1168,7 @@ msgstr "Верхняя панель"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1240,11 +1194,12 @@ msgstr[0] "%d новое уведомление"
msgstr[1] "%d новых уведомления" msgstr[1] "%d новых уведомления"
msgstr[2] "%d новых уведомлений" msgstr[2] "%d новых уведомлений"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:477
#: ../js/ui/status/system.js:333
msgid "Lock" msgid "Lock"
msgstr "Заблокировать" msgstr "Заблокировать"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME необходимо заблокировать экран" msgstr "GNOME необходимо заблокировать экран"
@@ -1255,11 +1210,13 @@ msgstr "GNOME необходимо заблокировать экран"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Не удалось заблокировать" 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" msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение" msgstr "Блокировке помешало приложение"
@@ -1341,14 +1298,19 @@ msgstr "Крупный текст"
#. The Bluetooth menu only appears when Bluetooth is in use, #. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item. #. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62 #: ../js/ui/status/bluetooth.js:28
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127 #: ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194 #: ../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" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112 #: ../js/ui/status/bluetooth.js:30
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Выключить" msgstr "Выключить"
@@ -1364,12 +1326,14 @@ msgstr[0] "Подключено %d устройство"
msgstr[1] "Подключено %d устройства" msgstr[1] "Подключено %d устройства"
msgstr[2] "Подключено %d устройств" msgstr[2] "Подключено %d устройств"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:100
#: ../js/ui/status/bluetooth.js:128
#, c-format #, c-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Запрос авторизации от %s" msgstr "Запрос авторизации от %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171 #: ../js/ui/status/bluetooth.js:106
#: ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202 #: ../js/ui/status/bluetooth.js:202
#, c-format #, c-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
@@ -1408,8 +1372,7 @@ msgstr "Подтверждение на сопряжение с %s"
#: ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:172
#, c-format #, c-format
msgid "" msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Подтвердите, совпадает ли ключ доступа «%06d» с кодом на устройстве." msgstr "Подтвердите, совпадает ли ключ доступа «%06d» с кодом на устройстве."
#. Translators: this is the verb, not the noun #. Translators: this is the verb, not the noun
@@ -1438,7 +1401,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Яркость" msgstr "Яркость"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Показать раскладку клавиатуры" msgstr "Показать раскладку клавиатуры"
@@ -1446,11 +1409,13 @@ msgstr "Показать раскладку клавиатуры"
msgid "<unknown>" msgid "<unknown>"
msgstr "<неизвестно>" msgstr "<неизвестно>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049 #: ../js/ui/status/network.js:203
#: ../js/ui/status/network.js:1049
msgid "Off" msgid "Off"
msgstr "Выключена" msgstr "Выключена"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955 #: ../js/ui/status/network.js:276
#: ../js/ui/status/network.js:955
#: ../js/ui/status/rfkill.js:49 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "Настроить сеть" msgstr "Настроить сеть"
@@ -1465,12 +1430,14 @@ msgstr "не управляется"
msgid "disconnecting..." msgid "disconnecting..."
msgstr "отключение…" msgstr "отключение…"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100 #: ../js/ui/status/network.js:372
#: ../js/ui/status/network.js:1100
msgid "connecting..." msgid "connecting..."
msgstr "подключение…" msgstr "подключение…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103 #: ../js/ui/status/network.js:375
#: ../js/ui/status/network.js:1103
msgid "authentication required" msgid "authentication required"
msgstr "требуется подтверждение подлинности" msgstr "требуется подтверждение подлинности"
@@ -1486,7 +1453,8 @@ msgstr "отсутствует прошивка"
msgid "unavailable" msgid "unavailable"
msgstr "недоступное" msgstr "недоступное"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105 #: ../js/ui/status/network.js:389
#: ../js/ui/status/network.js:1105
msgid "connection failed" msgid "connection failed"
msgstr "сбой подключения" msgstr "сбой подключения"
@@ -1499,6 +1467,7 @@ msgid "Select a network"
msgstr "Выберите сеть" msgstr "Выберите сеть"
#: ../js/ui/status/network.js:680 #: ../js/ui/status/network.js:680
#| msgid "Wi-Fi Networks"
msgid "No Networks" msgid "No Networks"
msgstr "Сети отсутствуют" msgstr "Сети отсутствуют"
@@ -1541,19 +1510,22 @@ msgstr "Полностью заряжена"
#. 0 is reported when UPower does not have enough data #. 0 is reported when UPower does not have enough data
#. to estimate battery life #. to estimate battery life
#. state is one of PENDING_CHARGING, PENDING_DISCHARGING #. state is one of PENDING_CHARGING, PENDING_DISCHARGING
#: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86 #: ../js/ui/status/power.js:69
#: ../js/ui/status/power.js:86
msgid "Estimating…" msgid "Estimating…"
msgstr "Выполняется подсчёт…" msgstr "Выполняется подсчёт…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>) #. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, c-format #, c-format
#| msgid "%d\\u2236%d Remaining (%d%%)"
msgid "%d\\u2236%02d Remaining (%d%%)" msgid "%d\\u2236%02d Remaining (%d%%)"
msgstr "Осталось %d\\u2236%02d (%d%%)" msgstr "Осталось %d\\u2236%02d (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>) #. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, c-format #, c-format
#| msgid "%d\\u2236%d Until Full (%d%%)"
msgid "%d\\u2236%02d Until Full (%d%%)" msgid "%d\\u2236%02d Until Full (%d%%)"
msgstr "До полного заряда %d\\u2236%02d (%d%%)" msgstr "До полного заряда %d\\u2236%02d (%d%%)"
@@ -1565,6 +1537,7 @@ msgid "Airplane Mode"
msgstr "Режим перелёта" msgstr "Режим перелёта"
#: ../js/ui/status/rfkill.js:45 #: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On" msgid "On"
msgstr "Включено" msgstr "Включено"
@@ -1608,11 +1581,11 @@ msgstr "Войти от имени другого пользователя"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Разблокировать окно" msgstr "Разблокировать окно"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Приложения" msgstr "Приложения"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Поиск" msgstr "Поиск"
@@ -1643,6 +1616,7 @@ msgstr "Хотите сохранить эти параметры дисплея
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: ../js/ui/windowManager.js:75 #: ../js/ui/windowManager.js:75
#| msgid "Power Settings"
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Вернуть параметры" msgstr "Вернуть параметры"
@@ -1696,8 +1670,7 @@ msgstr "Режим, используемый GDM для окна входа в
#: ../src/main.c:365 #: ../src/main.c:365
msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "" msgstr "Использовать для экрана входа в систему определённый режим, например «gdm»"
"Использовать для экрана входа в систему определённый режим, например «gdm»"
#: ../src/main.c:371 #: ../src/main.c:371
msgid "List possible modes" msgid "List possible modes"
@@ -1720,9 +1693,6 @@ msgstr "Пароль не может быть пустым"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем" msgstr "Аутентификация отклонена пользователем"
#~ msgid "Settings Menu"
#~ msgstr "Меню параметров"
#~ msgid "Screenshots" #~ msgid "Screenshots"
#~ msgstr "Снимки экрана" #~ msgstr "Снимки экрана"
@@ -1932,6 +1902,7 @@ msgstr "Аутентификация отклонена пользователе
#~ msgstr "Сеть отключена" #~ msgstr "Сеть отключена"
#~ msgid "%d hour remaining" #~ msgid "%d hour remaining"
#~ msgid_plural "%d hours remaining" #~ msgid_plural "%d hours remaining"
#~ msgstr[0] "Остался %d час" #~ msgstr[0] "Остался %d час"
#~ msgstr[1] "Осталось %d часа" #~ msgstr[1] "Осталось %d часа"
@@ -1941,24 +1912,27 @@ msgstr "Аутентификация отклонена пользователе
#~ msgstr "Осталось %d %s %d %s" #~ msgstr "Осталось %d %s %d %s"
#~ msgid "hour" #~ msgid "hour"
#~ msgid_plural "hours" #~ msgid_plural "hours"
#~ msgstr[0] "час" #~ msgstr[0] "час"
#~ msgstr[1] "часа" #~ msgstr[1] "часа"
#~ msgstr[2] "часов" #~ msgstr[2] "часов"
#~ msgid "minute" #~ msgid "minute"
#~ msgid_plural "minutes" #~ msgid_plural "minutes"
#~ msgstr[0] "минута" #~ msgstr[0] "минута"
#~ msgstr[1] "минуты" #~ msgstr[1] "минуты"
#~ msgstr[2] "минут" #~ msgstr[2] "минут"
#~ msgid "%d minute remaining" #~ msgid "%d minute remaining"
#~ msgid_plural "%d minutes remaining" #~ msgid_plural "%d minutes remaining"
#~ msgstr[0] "Осталась %d минута" #~ msgstr[0] "Осталась %d минута"
#~ msgstr[1] "Осталось %d минуты" #~ msgstr[1] "Осталось %d минуты"
#~ msgstr[2] "Осталось %d минут" #~ msgstr[2] "Осталось %d минут"
#~ msgctxt "percent of battery remaining" #~ msgctxt "percent of battery remaining"
#~ msgid "%d%%" #~ msgid "%d%%"
#~ msgstr "%d%%" #~ msgstr "%d%%"
@@ -1991,8 +1965,8 @@ msgstr "Аутентификация отклонена пользователе
#~ msgid "Computer" #~ msgid "Computer"
#~ msgstr "Компьютер" #~ msgstr "Компьютер"
#~ msgctxt "device" #~ msgctxt "device"
#~ msgid "Unknown" #~ msgid "Unknown"
#~ msgstr "Неизвестно" #~ msgstr "Неизвестно"

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-15 08:19+0000\n" "POT-Creation-Date: 2013-09-04 09:34+0000\n"
"PO-Revision-Date: 2013-08-29 20:44+0100\n" "PO-Revision-Date: 2013-08-29 20:44+0100\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n" "Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n" "Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
@@ -56,7 +56,6 @@ msgid "GNOME Shell"
msgstr "Shell prostredia GNOME" msgstr "Shell prostredia GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Správa okien a spúšťanie aplikácií" msgstr "Správa okien a spúšťanie aplikácií"
@@ -69,10 +68,6 @@ msgstr "Nastavenia rozšírení pre Shell prostredia GNOME"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Nastavenie rozšírení pre Shell prostredia GNOME" msgstr "Nastavenie rozšírení pre Shell prostredia GNOME"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Shell prostredia GNOME (kompozitor pre wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -360,42 +355,42 @@ msgstr "Chyba pri overovaní totožnosti"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(alebo prejdite prstom)" msgstr "(alebo prejdite prstom)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Príkaz nebol nájdený" msgstr "Príkaz nebol nájdený"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Nepodarilo sa analyzovať príkaz:" msgstr "Nepodarilo sa analyzovať príkaz:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Spustenie „%s“ zlyhalo:" msgstr "Spustenie „%s“ zlyhalo:"
#: ../js/ui/appDisplay.js:598 #: ../js/ui/appDisplay.js:580
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Tu sa objavia často používané aplikácie" msgstr "Tu sa objavia často používané aplikácie"
#: ../js/ui/appDisplay.js:714 #: ../js/ui/appDisplay.js:696
msgid "Frequent" msgid "Frequent"
msgstr "Často používané" msgstr "Často používané"
#: ../js/ui/appDisplay.js:721 #: ../js/ui/appDisplay.js:703
msgid "All" msgid "All"
msgstr "Všetky" msgstr "Všetky"
#: ../js/ui/appDisplay.js:1516 #: ../js/ui/appDisplay.js:1490
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1493 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrániť z obľúbených" msgstr "Odstrániť z obľúbených"
#: ../js/ui/appDisplay.js:1520 #: ../js/ui/appDisplay.js:1494
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridať do obľúbených" msgstr "Pridať do obľúbených"
@@ -409,8 +404,7 @@ msgstr "Program %s bol pridaný medzi obľúbené."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program %s bol odstránený z obľúbených." msgstr "Program %s bol odstránený z obľúbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807 #: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Nastavenia" msgstr "Nastavenia"
@@ -942,7 +936,7 @@ msgstr "Zobraziť účet"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámy dôvod" msgstr "Neznámy dôvod"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Okná" msgstr "Okná"
@@ -1095,7 +1089,7 @@ msgstr "Inštalovať"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Stiahnuť a nainštalovať „%s“ z extensions.gnome.org?" msgstr "Stiahnuť a nainštalovať „%s“ z 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" msgid "Keyboard"
msgstr "Klávesnica" msgstr "Klávesnica"
@@ -1179,7 +1173,7 @@ msgstr "Žiadne správy"
msgid "Message Tray" msgid "Message Tray"
msgstr "Lišta správ" msgstr "Lišta správ"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Informácie o systéme" msgstr "Informácie o systéme"
@@ -1213,17 +1207,21 @@ msgstr "Prehľad"
msgid "Type to search…" msgid "Type to search…"
msgstr "Zadajte text na vyhľadanie…" msgstr "Zadajte text na vyhľadanie…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Ukončiť" msgstr "Ukončiť"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Aktivity" msgstr "Aktivity"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Ponuka nastavení"
#: ../js/ui/panel.js:901
msgid "Top Bar" msgid "Top Bar"
msgstr "Horná lišta" msgstr "Horná lišta"
@@ -1232,7 +1230,7 @@ msgstr "Horná lišta"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1265,7 +1263,7 @@ msgstr[2] "%d nové oznámenia"
msgid "Lock" msgid "Lock"
msgstr "Uzamknúť" msgstr "Uzamknúť"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky" msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky"
@@ -1276,11 +1274,11 @@ msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Nepodarilo sa uzamknúť obrazovku" msgstr "Nepodarilo sa uzamknúť obrazovku"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Uzamknutie bolo zablokované aplikáciou" msgstr "Uzamknutie bolo zablokované aplikáciou"
@@ -1464,7 +1462,7 @@ msgstr "Ok"
msgid "Brightness" msgid "Brightness"
msgstr "Jas" msgstr "Jas"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Zobraziť rozloženie klávesnice" msgstr "Zobraziť rozloženie klávesnice"
@@ -1639,11 +1637,11 @@ msgstr "Prihlásiť ako iný používateľ"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Odomykacie okno" msgstr "Odomykacie okno"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Aplikácie" msgstr "Aplikácie"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Hľadať" msgstr "Hľadať"
@@ -1753,9 +1751,6 @@ msgstr "Heslo nemôže byť prázdne"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom" msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
#~ msgid "Settings Menu"
#~ msgstr "Ponuka nastavení"
#~ msgid "Session" #~ msgid "Session"
#~ msgstr "Relácia" #~ msgstr "Relácia"

View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:39+0000\n" "POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-12 20:25+0100\n" "PO-Revision-Date: 2013-09-02 22:41+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: Slovenian\n" "Language: Slovenian\n"
@@ -51,7 +51,6 @@ msgid "GNOME Shell"
msgstr "Gnome lupina" msgstr "Gnome lupina"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Upravljanje oken in zaganjanje programov" msgstr "Upravljanje oken in zaganjanje programov"
@@ -64,10 +63,6 @@ msgstr "Možnosti razširitev lupine GNOME"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Nastavitve razširitev lupine Gnome" msgstr "Nastavitve razširitev lupine Gnome"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Lupina GNOME (wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -344,42 +339,42 @@ msgstr "Napaka overitve"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ali pa povlecite prst)" msgstr "(ali pa povlecite prst)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Ukaz ni mogoče najti" msgstr "Ukaz ni mogoče najti"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Ukaza ni mogoče razčleniti:" msgstr "Ukaza ni mogoče razčleniti:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Izvedba '%s' je spodletela:" msgstr "Izvedba '%s' je spodletela:"
#: ../js/ui/appDisplay.js:573 #: ../js/ui/appDisplay.js:578
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Pogosto uporabljeni programi bodo prikazani tu" msgstr "Pogosto uporabljeni programi bodo prikazani tu"
#: ../js/ui/appDisplay.js:689 #: ../js/ui/appDisplay.js:694
msgid "Frequent" msgid "Frequent"
msgstr "Pogosto" msgstr "Pogosto"
#: ../js/ui/appDisplay.js:696 #: ../js/ui/appDisplay.js:701
msgid "All" msgid "All"
msgstr "Vse" msgstr "Vse"
#: ../js/ui/appDisplay.js:1491 #: ../js/ui/appDisplay.js:1488
msgid "New Window" msgid "New Window"
msgstr "Novo okno" msgstr "Novo okno"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih" msgstr "Odstrani iz priljubljenih"
#: ../js/ui/appDisplay.js:1495 #: ../js/ui/appDisplay.js:1492
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj med priljubljene" msgstr "Dodaj med priljubljene"
@@ -922,7 +917,7 @@ msgstr "Poglej račun"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznan vzrok" msgstr "Neznan vzrok"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@@ -1082,7 +1077,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "" msgstr ""
"Ali naj se razširitev '%s' namesti preko povezave z extensions.gnome.org?" "Ali naj se razširitev '%s' namesti preko povezave z 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" msgid "Keyboard"
msgstr "Tipkovnica" msgstr "Tipkovnica"
@@ -1162,7 +1157,7 @@ msgstr "Ni sporočil"
msgid "Message Tray" msgid "Message Tray"
msgstr "Sporočilna vrstica" msgstr "Sporočilna vrstica"
#: ../js/ui/messageTray.js:2787 #: ../js/ui/messageTray.js:2786
msgid "System Information" msgid "System Information"
msgstr "Podrobnosti sistema" msgstr "Podrobnosti sistema"
@@ -1196,21 +1191,21 @@ msgstr "Pregled"
msgid "Type to search…" msgid "Type to search…"
msgstr "Vnos niza za iskanje ..." msgstr "Vnos niza za iskanje ..."
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Končaj" msgstr "Končaj"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Dejavnosti" msgstr "Dejavnosti"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Meni nastavitev" msgstr "Meni nastavitev"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:892
msgid "Top Bar" msgid "Top Bar"
msgstr "Vrhnja vrstica" msgstr "Vrhnja vrstica"
@@ -1219,7 +1214,7 @@ msgstr "Vrhnja vrstica"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1250,7 +1245,7 @@ msgstr[3] "%d nova obvestila"
msgid "Lock" msgid "Lock"
msgstr "Zakleni" msgstr "Zakleni"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Zakleniti je treba zaslon" msgstr "Zakleniti je treba zaslon"
@@ -1261,11 +1256,11 @@ msgstr "Zakleniti je treba zaslon"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Zaklep ni mogoč" msgstr "Zaklep ni mogoč"
#: ../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" msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program" msgstr "Zaklep je preprečil program"
@@ -1445,7 +1440,7 @@ msgstr "V redu"
msgid "Brightness" msgid "Brightness"
msgstr "Svetlost" msgstr "Svetlost"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Pokaži razporeditev tipkovnice" msgstr "Pokaži razporeditev tipkovnice"
@@ -1615,11 +1610,11 @@ msgstr "Prijava kot drug uporabnik"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Odkleni okno" msgstr "Odkleni okno"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Programi" msgstr "Programi"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Poišči" msgstr "Poišči"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Tajik Gnome\n" "Project-Id-Version: Tajik Gnome\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n" "POT-Creation-Date: 2013-09-08 10:42+0000\n"
"PO-Revision-Date: 2013-09-13 13:13+0500\n" "PO-Revision-Date: 2013-09-08 15:44+0500\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n" "Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: Tajik\n" "Language: Tajik\n"
@@ -48,7 +48,6 @@ msgid "GNOME Shell"
msgstr "Восити GNOME" msgstr "Восити GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Идоракунии равзанаҳо ва оғозидани барномаҳо" msgstr "Идоракунии равзанаҳо ва оғозидани барномаҳо"
@@ -61,10 +60,6 @@ msgstr "Хусусиятҳои пасвандҳои восити GNOME"
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
msgstr "Танзимоти пасвандҳои восити GNOME" 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 #: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
@@ -350,17 +345,17 @@ msgstr "Хатои санҷиши ҳаққоният"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ё бо ангут ламс кунед)" msgstr "(ё бо ангут ламс кунед)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:97
msgid "Command not found" msgid "Command not found"
msgstr "Фармон ёфт нашудааст" msgstr "Фармон ёфт нашудааст"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:131 #: ../js/misc/util.js:130
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Фармон иҷро нашудааст:" msgstr "Фармон иҷро нашудааст:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:138
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Иҷрокунии '%s' қатъ шудааст:" msgstr "Иҷрокунии '%s' қатъ шудааст:"
@@ -929,7 +924,7 @@ msgstr "Намоиш додани ҳисоб"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Сабаби номаълум" msgstr "Сабаби номаълум"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
msgid "Windows" msgid "Windows"
msgstr "Равзанаҳо" msgstr "Равзанаҳо"
@@ -1077,7 +1072,7 @@ msgstr "Насб кардан"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "\"%s\"-ро аз extensions.gnome.org боргирӣ ва насб мекунед?" msgstr "\"%s\"-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333 #: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
msgid "Keyboard" msgid "Keyboard"
msgstr "Клавиатура" msgstr "Клавиатура"
@@ -1189,21 +1184,21 @@ msgstr "Хулоса"
msgid "Type to search…" msgid "Type to search…"
msgstr "Ҷустуҷӯ кардан..." msgstr "Ҷустуҷӯ кардан..."
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Баромад" msgstr "Баромад"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Фаъолиятҳо" msgstr "Фаъолиятҳо"
#: ../js/ui/panel.js:807 #: ../js/ui/panel.js:805
msgid "Settings Menu" msgid "Settings Menu"
msgstr "Менюи танзимот" msgstr "Менюи танзимот"
#: ../js/ui/panel.js:903 #: ../js/ui/panel.js:901
msgid "Top Bar" msgid "Top Bar"
msgstr "Панели боло" msgstr "Панели боло"
@@ -1212,7 +1207,7 @@ msgstr "Панели боло"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:226
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
@@ -1241,7 +1236,7 @@ msgstr[1] "%d огоҳии нав"
msgid "Lock" msgid "Lock"
msgstr "Қулф кардан" msgstr "Қулф кардан"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:703
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME бояд экранро қулф кунад" msgstr "GNOME бояд экранро қулф кунад"
@@ -1252,11 +1247,11 @@ msgstr "GNOME бояд экранро қулф кунад"
#. #.
#. XXX: another option is to kick the user into the gdm login #. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs #. 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" msgid "Unable to lock"
msgstr "Қулф карда намешавад" 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" msgid "Lock was blocked by an application"
msgstr "Қулф аз тарави барнома баста шудааст" msgstr "Қулф аз тарави барнома баста шудааст"
@@ -1436,7 +1431,7 @@ msgstr "OK"
msgid "Brightness" msgid "Brightness"
msgstr "Дурахшонӣ" msgstr "Дурахшонӣ"
#: ../js/ui/status/keyboard.js:403 #: ../js/ui/status/keyboard.js:404
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Намоиш додани тарҳбандии клавиатура" msgstr "Намоиш додани тарҳбандии клавиатура"
@@ -1606,11 +1601,11 @@ msgstr "Ворид шудан бо корбари дигар"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Кушодани равзана" msgstr "Кушодани равзана"
#: ../js/ui/viewSelector.js:104 #: ../js/ui/viewSelector.js:100
msgid "Applications" msgid "Applications"
msgstr "Барномаҳо" msgstr "Барномаҳо"
#: ../js/ui/viewSelector.js:108 #: ../js/ui/viewSelector.js:104
msgid "Search" msgid "Search"
msgstr "Ҷустуҷӯ" msgstr "Ҷустуҷӯ"

View File

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

View File

@@ -68,6 +68,9 @@ include Makefile-calendar-server.am
include Makefile-hotplug-sniffer.am include Makefile-hotplug-sniffer.am
gnome_shell_cflags = \ gnome_shell_cflags = \
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
$(GNOME_SHELL_CFLAGS) \ $(GNOME_SHELL_CFLAGS) \
-I$(srcdir)/tray \ -I$(srcdir)/tray \
-DVERSION=\"$(VERSION)\" \ -DVERSION=\"$(VERSION)\" \

View File

@@ -28,14 +28,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <clutter/x11/clutter-x11.h> #include <clutter/x11/clutter-x11.h>
#include <gjs/gjs.h> #include <gjs/gjs.h>
#include <meta/display.h> #include <meta/display.h>
#include <meta/meta-plugin.h> #include <meta/meta-plugin.h>
#include <meta/util.h>
#include "shell-global-private.h" #include "shell-global-private.h"
#include "shell-perf-log.h" #include "shell-perf-log.h"
@@ -344,13 +341,8 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
} }
#endif #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)) if (_shell_global_check_xdnd_event (shell_plugin->global, xev))
return TRUE; return TRUE;

View File

@@ -217,7 +217,7 @@ typedef struct {
ClutterTextDirection direction; ClutterTextDirection direction;
} CreateFadedIconData; } CreateFadedIconData;
static CoglHandle static CoglTexture *
shell_app_create_faded_icon_cpu (StTextureCache *cache, shell_app_create_faded_icon_cpu (StTextureCache *cache,
const char *key, const char *key,
void *datap, void *datap,
@@ -227,7 +227,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
ShellApp *app; ShellApp *app;
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
int size; int size;
CoglHandle texture; CoglTexture *texture;
gint width, height, rowstride; gint width, height, rowstride;
guint8 n_channels; guint8 n_channels;
gboolean have_alpha; gboolean have_alpha;
@@ -263,13 +263,13 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
} }
if (info == NULL) if (info == NULL)
return COGL_INVALID_HANDLE; return NULL;
pixbuf = gtk_icon_info_load_icon (info, NULL); pixbuf = gtk_icon_info_load_icon (info, NULL);
g_object_unref (info); g_object_unref (info);
if (pixbuf == NULL) if (pixbuf == NULL)
return COGL_INVALID_HANDLE; return NULL;
width = gdk_pixbuf_get_width (pixbuf); width = gdk_pixbuf_get_width (pixbuf);
height = gdk_pixbuf_get_height (pixbuf); height = gdk_pixbuf_get_height (pixbuf);
@@ -338,7 +338,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
ClutterActor * ClutterActor *
shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection direction) shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection direction)
{ {
CoglHandle texture; CoglTexture *texture;
ClutterActor *result; ClutterActor *result;
char *cache_key; char *cache_key;
CreateFadedIconData data; CreateFadedIconData data;
@@ -367,7 +367,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
NULL); NULL);
g_free (cache_key); g_free (cache_key);
if (texture != COGL_INVALID_HANDLE) if (texture != NULL)
{ {
result = clutter_texture_new (); result = clutter_texture_new ();
clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture); clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture);

View File

@@ -27,7 +27,6 @@
#include <meta/display.h> #include <meta/display.h>
#include <meta/util.h> #include <meta/util.h>
#include <meta/meta-shaped-texture.h> #include <meta/meta-shaped-texture.h>
#include <meta/meta-cursor-tracker.h>
/* Memory report bits */ /* Memory report bits */
#ifdef HAVE_MALLINFO #ifdef HAVE_MALLINFO
@@ -52,7 +51,7 @@ struct _ShellGlobal {
ClutterStage *stage; ClutterStage *stage;
Window stage_xwindow; Window stage_xwindow;
GdkWindow *ibus_window; GdkWindow *stage_gdk_window;
MetaDisplay *meta_display; MetaDisplay *meta_display;
GdkDisplay *gdk_display; GdkDisplay *gdk_display;
@@ -600,6 +599,91 @@ sync_input_region (ShellGlobal *global)
meta_set_stage_input_region (screen, global->input_region); 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: * shell_global_set_stage_input_region:
* @global: the #ShellGlobal * @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) 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 (); ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager, 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); CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE);
event_clutter->key.time = event_gdk->key.time; event_clutter->key.time = event_gdk->key.time;
event_clutter->key.flags = CLUTTER_EVENT_NONE; 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; event_clutter->key.source = NULL;
/* This depends on ClutterModifierType and GdkModifierType being /* 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); 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 void
_shell_global_set_plugin (ShellGlobal *global, _shell_global_set_plugin (ShellGlobal *global,
MetaPlugin *plugin) MetaPlugin *plugin)
@@ -857,38 +935,9 @@ _shell_global_set_plugin (ShellGlobal *global,
meta_screen_get_screen_number (global->meta_screen)); meta_screen_get_screen_number (global->meta_screen));
global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen)); global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen));
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
#ifdef HAVE_WAYLAND global->stage_gdk_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
if (meta_is_wayland_compositor ()) global->stage_xwindow);
{
/* When Mutter is acting as its own display server then the
stage does not have a window, so create a different window
which we use to communicate with IBus, and leave stage_xwindow
as None.
*/
GdkWindowAttr attributes;
attributes.wclass = GDK_INPUT_OUTPUT;
attributes.width = 100;
attributes.height = 100;
attributes.window_type = GDK_WINDOW_TOPLEVEL;
global->ibus_window = gdk_window_new (NULL,
&attributes,
0 /* attributes_mask */);
global->stage_xwindow = None;
}
else
#endif
{
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
global->stage_xwindow);
}
st_im_text_set_event_window (global->ibus_window);
st_entry_set_cursor_func (entry_cursor_func, global);
g_signal_connect (global->stage, "notify::width", g_signal_connect (global->stage, "notify::width",
G_CALLBACK (global_stage_notify_width), global); 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_signal_connect (global->meta_display, "notify::focus-window",
G_CALLBACK (focus_window_changed), global); 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); global->focus_manager = st_focus_manager_get_for_stage (global->stage);
} }
@@ -992,8 +1041,7 @@ void
shell_global_freeze_keyboard (ShellGlobal *global, shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp) 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. /* 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 * @mods: (out): the current set of modifier keys that are pressed down
* *
* Gets the pointer coordinates and current modifier key state. * 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 void
shell_global_get_pointer (ShellGlobal *global, shell_global_get_pointer (ShellGlobal *global,
@@ -1250,13 +1301,18 @@ shell_global_get_pointer (ShellGlobal *global,
int *y, int *y,
ClutterModifierType *mods) ClutterModifierType *mods)
{ {
ClutterModifierType raw_mods; GdkDeviceManager *gmanager;
MetaCursorTracker *tracker; GdkDevice *gdevice;
GdkScreen *gscreen;
GdkModifierType raw_mods;
tracker = meta_cursor_tracker_get_for_screen (global->meta_screen); gmanager = gdk_display_get_device_manager (global->gdk_display);
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods); gdevice = gdk_device_manager_get_client_pointer (gmanager);
gdk_device_get_position (gdevice, &gscreen, x, y);
*mods = raw_mods & CLUTTER_MODIFIER_MASK; 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) shell_global_sync_pointer (ShellGlobal *global)
{ {
int x, y; int x, y;
ClutterModifierType mods; GdkModifierType mods;
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
GdkScreen *gscreen;
ClutterMotionEvent event; 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.type = CLUTTER_MOTION;
event.time = shell_global_get_current_time (global); 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, void shell_global_set_stage_input_region (ShellGlobal *global,
GSList *rectangles); 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, void shell_global_get_pointer (ShellGlobal *global,
int *x, int *x,
int *y, 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_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 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 "shell-invert-lightness-effect.h"
#include <cogl/cogl.h> #include <cogl/cogl.h>
@@ -124,6 +122,7 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect); ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
ClutterActor *actor; ClutterActor *actor;
guint8 paint_opacity; guint8 paint_opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect)); actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
paint_opacity = clutter_actor_get_paint_opacity (actor); 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, paint_opacity,
paint_opacity); paint_opacity);
cogl_push_source (self->pipeline); cogl_framebuffer_draw_rectangle (fb, self->pipeline,
0, 0, self->tex_width, self->tex_height);
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
cogl_pop_source ();
} }
static void static void

View File

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

View File

@@ -441,15 +441,19 @@ recorder_record_frame (ShellRecorder *recorder)
recorder->last_frame_time = now; recorder->last_frame_time = now;
size = recorder->area.width * recorder->area.height * 4; size = recorder->area.width * recorder->area.height * 4;
data = g_malloc (size);
data = g_malloc (recorder->area.width * 4 * recorder->area.height); if (!cogl_framebuffer_read_pixels (cogl_get_draw_framebuffer (),
cogl_read_pixels (recorder->area.x, recorder->area.x,
recorder->area.y, recorder->area.y,
recorder->area.width, recorder->area.width,
recorder->area.height, recorder->area.height,
COGL_READ_PIXELS_COLOR_BUFFER, CLUTTER_CAIRO_FORMAT_ARGB32,
CLUTTER_CAIRO_FORMAT_ARGB32, data))
data); {
g_warning ("Could not retrieve pixel data");
g_free (data);
return;
}
buffer = gst_buffer_new(); buffer = gst_buffer_new();
gst_buffer_insert_memory (buffer, -1, gst_buffer_insert_memory (buffer, -1,

View File

@@ -1,8 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* -*- 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 <clutter/clutter.h>
#include <cogl/cogl.h> #include <cogl/cogl.h>
#include <meta/display.h> #include <meta/display.h>

View File

@@ -97,6 +97,7 @@ shell_slicer_paint_child (ShellSlicer *self)
float width, height, child_width, child_height; float width, height, child_width, child_height;
StAlign x_align, y_align; StAlign x_align, y_align;
double x_align_factor, y_align_factor; double x_align_factor, y_align_factor;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
child = st_bin_get_child (ST_BIN (self)); 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_width = child_box.x2 - child_box.x1;
child_height = child_box.y2 - child_box.y1; child_height = child_box.y2 - child_box.y1;
cogl_push_matrix (); cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_push_rectangle_clip (fb, 0, 0, width, height);
cogl_clip_push_rectangle (0, 0, width, height); cogl_framebuffer_translate (fb,
cogl_translate ((int)(0.5 + x_align_factor * (width - child_width)), (int)(0.5 + x_align_factor * (width - child_width)),
(int)(0.5 + y_align_factor * (height - child_height)), (int)(0.5 + y_align_factor * (height - child_height)),
0); 0);
clutter_actor_paint (child); clutter_actor_paint (child);
cogl_clip_pop (); cogl_framebuffer_pop_clip (fb);
cogl_framebuffer_pop_matrix (fb);
cogl_pop_matrix ();
} }
static void static void

View File

@@ -387,19 +387,20 @@ st_box_layout_paint (ClutterActor *actor)
ClutterActorBox allocation_box; ClutterActorBox allocation_box;
ClutterActorBox content_box; ClutterActorBox content_box;
ClutterActor *child; ClutterActor *child;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
get_border_paint_offsets (self, &x, &y); get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0) if (x != 0 || y != 0)
{ {
cogl_push_matrix (); cogl_framebuffer_push_matrix (fb);
cogl_translate ((int)x, (int)y, 0); cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
} }
st_widget_paint_background (ST_WIDGET (actor)); st_widget_paint_background (ST_WIDGET (actor));
if (x != 0 || y != 0) if (x != 0 || y != 0)
{ {
cogl_pop_matrix (); cogl_framebuffer_pop_matrix (fb);
} }
if (clutter_actor_get_n_children (actor) == 0) 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 * the borders and background stay in place; after drawing the borders and
* background, we clip to the content area */ * background, we clip to the content area */
if (priv->hadjustment || priv->vadjustment) if (priv->hadjustment || priv->vadjustment)
cogl_clip_push_rectangle ((int)content_box.x1, cogl_framebuffer_push_rectangle_clip (fb,
(int)content_box.y1, (int)content_box.x1,
(int)content_box.x2, (int)content_box.y1,
(int)content_box.y2); (int)content_box.x2,
(int)content_box.y2);
for (child = clutter_actor_get_first_child (actor); for (child = clutter_actor_get_first_child (actor);
child != NULL; child != NULL;
@@ -428,7 +430,7 @@ st_box_layout_paint (ClutterActor *actor)
clutter_actor_paint (child); clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment) if (priv->hadjustment || priv->vadjustment)
cogl_clip_pop (); cogl_framebuffer_pop_clip (fb);
} }
static void static void
@@ -442,19 +444,20 @@ st_box_layout_pick (ClutterActor *actor,
ClutterActorBox allocation_box; ClutterActorBox allocation_box;
ClutterActorBox content_box; ClutterActorBox content_box;
ClutterActor *child; ClutterActor *child;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
get_border_paint_offsets (self, &x, &y); get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0) if (x != 0 || y != 0)
{ {
cogl_push_matrix (); cogl_framebuffer_push_matrix (fb);
cogl_translate ((int)x, (int)y, 0); cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
} }
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color); CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color);
if (x != 0 || y != 0) if (x != 0 || y != 0)
{ {
cogl_pop_matrix (); cogl_framebuffer_pop_matrix (fb);
} }
if (clutter_actor_get_n_children (actor) == 0) if (clutter_actor_get_n_children (actor) == 0)
@@ -469,10 +472,11 @@ st_box_layout_pick (ClutterActor *actor,
content_box.y2 += y; content_box.y2 += y;
if (priv->hadjustment || priv->vadjustment) if (priv->hadjustment || priv->vadjustment)
cogl_clip_push_rectangle ((int)content_box.x1, cogl_framebuffer_push_rectangle_clip (fb,
(int)content_box.y1, (int)content_box.x1,
(int)content_box.x2, (int)content_box.y1,
(int)content_box.y2); (int)content_box.x2,
(int)content_box.y2);
for (child = clutter_actor_get_first_child (actor); for (child = clutter_actor_get_first_child (actor);
child != NULL; child != NULL;
@@ -480,7 +484,7 @@ st_box_layout_pick (ClutterActor *actor,
clutter_actor_paint (child); clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment) if (priv->hadjustment || priv->vadjustment)
cogl_clip_pop (); cogl_framebuffer_pop_clip (fb);
} }
static gboolean static gboolean

View File

@@ -39,8 +39,8 @@
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET); G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
struct _StDrawingAreaPrivate { struct _StDrawingAreaPrivate {
CoglHandle texture; CoglTexture *texture;
CoglHandle material; CoglPipeline *pipeline;
cairo_t *context; cairo_t *context;
guint needs_repaint : 1; guint needs_repaint : 1;
guint in_repaint : 1; guint in_repaint : 1;
@@ -61,17 +61,8 @@ st_drawing_area_dispose (GObject *object)
StDrawingArea *area = ST_DRAWING_AREA (object); StDrawingArea *area = ST_DRAWING_AREA (object);
StDrawingAreaPrivate *priv = area->priv; StDrawingAreaPrivate *priv = area->priv;
if (priv->material != COGL_INVALID_HANDLE) g_clear_pointer (&priv->pipeline, cogl_object_unref);
{ g_clear_pointer (&priv->texture, cogl_object_unref);
cogl_handle_unref (priv->material);
priv->material = COGL_INVALID_HANDLE;
}
if (priv->texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE;
}
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object); G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
} }
@@ -85,8 +76,6 @@ st_drawing_area_paint (ClutterActor *self)
ClutterActorBox allocation_box; ClutterActorBox allocation_box;
ClutterActorBox content_box; ClutterActorBox content_box;
int width, height; int width, height;
CoglColor color;
guint8 paint_opacity;
(CLUTTER_ACTOR_CLASS (st_drawing_area_parent_class))->paint (self); (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); width = (int)(0.5 + content_box.x2 - content_box.x1);
height = (int)(0.5 + content_box.y2 - content_box.y1); height = (int)(0.5 + content_box.y2 - content_box.y1);
if (priv->material == COGL_INVALID_HANDLE) if (priv->pipeline == NULL)
priv->material = cogl_material_new (); {
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) || (width != cogl_texture_get_width (priv->texture) ||
height != cogl_texture_get_height (priv->texture))) height != cogl_texture_get_height (priv->texture)))
{ {
cogl_handle_unref (priv->texture); cogl_object_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE; priv->texture = NULL;
} }
if (width > 0 && height > 0) if (width > 0 && height > 0)
{ {
if (priv->texture == COGL_INVALID_HANDLE) if (priv->texture == NULL)
{ {
priv->texture = cogl_texture_new_with_size (width, height, priv->texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NONE, 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) if (priv->texture)
{ {
paint_opacity = clutter_actor_get_paint_opacity (self); CoglColor color;
cogl_color_set_from_4ub (&color, guint8 paint_opacity;
paint_opacity, paint_opacity, paint_opacity, paint_opacity); CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
cogl_material_set_color (priv->material, &color);
cogl_set_source (priv->material); paint_opacity = clutter_actor_get_paint_opacity (self);
cogl_rectangle_with_texture_coords (content_box.x1, content_box.y1, cogl_color_init_from_4ub (&color, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
content_box.x2, content_box.y2, cogl_pipeline_set_color (priv->pipeline, &color);
0.0f, 0.0f, 1.0f, 1.0f);
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, area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
StDrawingAreaPrivate); StDrawingAreaPrivate);
area->priv->texture = COGL_INVALID_HANDLE; area->priv->texture = NULL;
} }
/** /**

View File

@@ -65,6 +65,10 @@
#include "st-clipboard.h" #include "st-clipboard.h"
#include "st-private.h" #include "st-private.h"
#include <clutter/x11/clutter-x11.h>
#include <X11/Xlib.h>
#include <X11/cursorfont.h>
#include "st-widget-accessible.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) #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); 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 static void
st_entry_set_cursor (StEntry *entry, st_entry_set_cursor (StEntry *entry,
gboolean use_ibeam) 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; entry->priv->has_ibeam = use_ibeam;
} }

View File

@@ -86,10 +86,6 @@ void st_entry_set_primary_icon (StEntry *entry,
void st_entry_set_secondary_icon (StEntry *entry, void st_entry_set_secondary_icon (StEntry *entry,
ClutterActor *icon); ClutterActor *icon);
typedef void (*StEntryCursorFunc) (StEntry *entry, gboolean use_ibeam, gpointer data);
void st_entry_set_cursor_func (StEntryCursorFunc func,
gpointer user_data);
G_END_DECLS G_END_DECLS
#endif /* __ST_ENTRY_H__ */ #endif /* __ST_ENTRY_H__ */

View File

@@ -56,7 +56,7 @@ struct _StIconPrivate
gint theme_icon_size; /* icon size from theme node */ gint theme_icon_size; /* icon size from theme node */
gint icon_size; /* icon size we are using */ gint icon_size; /* icon size we are using */
CoglHandle shadow_material; CoglPipeline *shadow_pipeline;
float shadow_width; float shadow_width;
float shadow_height; float shadow_height;
StShadow *shadow_spec; StShadow *shadow_spec;
@@ -141,23 +141,9 @@ st_icon_dispose (GObject *gobject)
priv->pending_texture = NULL; priv->pending_texture = NULL;
} }
if (priv->gicon) g_clear_object (&priv->gicon);
{ g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
g_object_unref (priv->gicon); g_clear_pointer (&priv->shadow_spec, st_shadow_unref);
priv->gicon = NULL;
}
if (priv->shadow_material)
{
cogl_handle_unref (priv->shadow_material);
priv->shadow_material = COGL_INVALID_HANDLE;
}
if (priv->shadow_spec)
{
st_shadow_unref (priv->shadow_spec);
priv->shadow_spec = NULL;
}
G_OBJECT_CLASS (st_icon_parent_class)->dispose (gobject); G_OBJECT_CLASS (st_icon_parent_class)->dispose (gobject);
} }
@@ -241,7 +227,7 @@ st_icon_paint (ClutterActor *actor)
if (priv->icon_texture) if (priv->icon_texture)
{ {
if (priv->shadow_material) if (priv->shadow_pipeline)
{ {
ClutterActorBox allocation; ClutterActorBox allocation;
float width, height; float width, height;
@@ -250,7 +236,8 @@ st_icon_paint (ClutterActor *actor)
clutter_actor_box_get_size (&allocation, &width, &height); clutter_actor_box_get_size (&allocation, &width, &height);
_st_paint_shadow_with_opacity (priv->shadow_spec, _st_paint_shadow_with_opacity (priv->shadow_spec,
priv->shadow_material, priv->shadow_pipeline,
cogl_get_draw_framebuffer (),
&allocation, &allocation,
clutter_actor_get_paint_opacity (priv->icon_texture)); clutter_actor_get_paint_opacity (priv->icon_texture));
} }
@@ -266,17 +253,8 @@ st_icon_style_changed (StWidget *widget)
StThemeNode *theme_node = st_widget_get_theme_node (widget); StThemeNode *theme_node = st_widget_get_theme_node (widget);
StIconPrivate *priv = self->priv; StIconPrivate *priv = self->priv;
if (priv->shadow_spec) g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
{ g_clear_pointer (&priv->shadow_spec, st_shadow_unref);
st_shadow_unref (priv->shadow_spec);
priv->shadow_spec = NULL;
}
if (priv->shadow_material)
{
cogl_handle_unref (priv->shadow_material);
priv->shadow_material = COGL_INVALID_HANDLE;
}
priv->shadow_spec = st_theme_node_get_shadow (theme_node, "icon-shadow"); priv->shadow_spec = st_theme_node_get_shadow (theme_node, "icon-shadow");
@@ -343,33 +321,26 @@ st_icon_init (StIcon *self)
self->priv->icon_size = DEFAULT_ICON_SIZE; self->priv->icon_size = DEFAULT_ICON_SIZE;
self->priv->prop_icon_size = -1; self->priv->prop_icon_size = -1;
self->priv->shadow_material = COGL_INVALID_HANDLE; self->priv->shadow_pipeline = NULL;
self->priv->shadow_width = -1; self->priv->shadow_width = -1;
self->priv->shadow_height = -1; self->priv->shadow_height = -1;
} }
static void static void
st_icon_update_shadow_material (StIcon *icon) st_icon_update_shadow_pipeline (StIcon *icon)
{ {
StIconPrivate *priv = icon->priv; StIconPrivate *priv = icon->priv;
if (priv->shadow_material) g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
{
cogl_handle_unref (priv->shadow_material);
priv->shadow_material = COGL_INVALID_HANDLE;
}
if (priv->shadow_spec) if (priv->shadow_spec)
{ {
CoglHandle material;
gint width, height; gint width, height;
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture), clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
&width, &height); &width, &height);
material = _st_create_shadow_material_from_actor (priv->shadow_spec, priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
priv->icon_texture);
priv->shadow_material = material;
priv->shadow_width = width; priv->shadow_width = width;
priv->shadow_height = height; priv->shadow_height = height;
} }
@@ -379,7 +350,7 @@ static void
on_pixbuf_changed (ClutterTexture *texture, on_pixbuf_changed (ClutterTexture *texture,
StIcon *icon) StIcon *icon)
{ {
st_icon_update_shadow_material (icon); st_icon_update_shadow_pipeline (icon);
} }
static void static void
@@ -402,7 +373,7 @@ st_icon_finish_update (StIcon *icon)
/* Remove the temporary ref we added */ /* Remove the temporary ref we added */
g_object_unref (priv->icon_texture); g_object_unref (priv->icon_texture);
st_icon_update_shadow_material (icon); st_icon_update_shadow_pipeline (icon);
/* "pixbuf-change" is actually a misnomer for "texture-changed" */ /* "pixbuf-change" is actually a misnomer for "texture-changed" */
g_signal_connect_object (priv->icon_texture, "pixbuf-change", g_signal_connect_object (priv->icon_texture, "pixbuf-change",

View File

@@ -41,6 +41,7 @@
#endif #endif
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <clutter/x11/clutter-x11.h>
#include <glib.h> #include <glib.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h> #include <gdk/gdkkeysyms.h>
@@ -202,14 +203,25 @@ st_im_text_get_paint_volume (ClutterActor *self,
return clutter_paint_volume_set_from_allocation (volume, self); return clutter_paint_volume_set_from_allocation (volume, self);
} }
static GdkWindow *event_window; /* Returns a new reference to window */
static GdkWindow *
void window_for_actor (ClutterActor *actor)
st_im_text_set_event_window (GdkWindow *window)
{ {
g_assert (event_window == NULL); GdkDisplay *display = gdk_display_get_default ();
ClutterActor *stage;
Window xwindow;
GdkWindow *window;
event_window = window; stage = clutter_actor_get_stage (actor);
xwindow = clutter_x11_get_stage_window ((ClutterStage *)stage);
window = gdk_x11_window_lookup_for_display (display, xwindow);
if (window)
g_object_ref (window);
else
window = gdk_x11_window_foreign_new_for_display (display, xwindow);
return window;
} }
static void static void
@@ -217,8 +229,7 @@ st_im_text_realize (ClutterActor *actor)
{ {
StIMTextPrivate *priv = ST_IM_TEXT (actor)->priv; StIMTextPrivate *priv = ST_IM_TEXT (actor)->priv;
g_assert (event_window != NULL); priv->window = window_for_actor (actor);
priv->window = g_object_ref (event_window);
gtk_im_context_set_client_window (priv->im_context, priv->window); gtk_im_context_set_client_window (priv->im_context, priv->window);
} }
@@ -280,8 +291,7 @@ key_event_to_gdk (ClutterKeyEvent *event_clutter)
event_gdk = (GdkEventKey *)gdk_event_new ((event_clutter->type == CLUTTER_KEY_PRESS) ? event_gdk = (GdkEventKey *)gdk_event_new ((event_clutter->type == CLUTTER_KEY_PRESS) ?
GDK_KEY_PRESS : GDK_KEY_RELEASE); GDK_KEY_PRESS : GDK_KEY_RELEASE);
g_assert (event_window != NULL); event_gdk->window = window_for_actor ((ClutterActor *)event_clutter->stage);
event_gdk->window = g_object_ref (event_window);
event_gdk->send_event = FALSE; event_gdk->send_event = FALSE;
event_gdk->time = event_clutter->time; event_gdk->time = event_clutter->time;
/* This depends on ClutterModifierType and GdkModifierType being /* This depends on ClutterModifierType and GdkModifierType being

View File

@@ -68,8 +68,6 @@ void st_im_text_set_input_hints (StIMText *imtext,
GtkInputHints hints); GtkInputHints hints);
GtkInputHints st_im_text_get_input_hints (StIMText *imtext); GtkInputHints st_im_text_get_input_hints (StIMText *imtext);
void st_im_text_set_event_window (GdkWindow *window);
G_END_DECLS G_END_DECLS
#endif /* __ST_IM_TEXT_H__ */ #endif /* __ST_IM_TEXT_H__ */

View File

@@ -60,7 +60,7 @@ struct _StLabelPrivate
{ {
ClutterActor *label; ClutterActor *label;
CoglHandle text_shadow_material; CoglPipeline *text_shadow_pipeline;
float shadow_width; float shadow_width;
float shadow_height; float shadow_height;
}; };
@@ -118,11 +118,7 @@ st_label_style_changed (StWidget *self)
{ {
StLabelPrivate *priv = ST_LABEL(self)->priv; StLabelPrivate *priv = ST_LABEL(self)->priv;
if (priv->text_shadow_material != COGL_INVALID_HANDLE) g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
{
cogl_handle_unref (priv->text_shadow_material);
priv->text_shadow_material = COGL_INVALID_HANDLE;
}
_st_set_text_from_style ((ClutterText *)priv->label, st_widget_get_theme_node (self)); _st_set_text_from_style ((ClutterText *)priv->label, st_widget_get_theme_node (self));
@@ -192,11 +188,7 @@ st_label_dispose (GObject *object)
priv->label = NULL; priv->label = NULL;
} }
if (priv->text_shadow_material != COGL_INVALID_HANDLE) g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
{
cogl_handle_unref (priv->text_shadow_material);
priv->text_shadow_material = COGL_INVALID_HANDLE;
}
G_OBJECT_CLASS (st_label_parent_class)->dispose (object); G_OBJECT_CLASS (st_label_parent_class)->dispose (object);
} }
@@ -218,26 +210,21 @@ st_label_paint (ClutterActor *actor)
clutter_actor_get_allocation_box (priv->label, &allocation); clutter_actor_get_allocation_box (priv->label, &allocation);
clutter_actor_box_get_size (&allocation, &width, &height); clutter_actor_box_get_size (&allocation, &width, &height);
if (priv->text_shadow_material == COGL_INVALID_HANDLE || if (priv->text_shadow_pipeline == NULL ||
width != priv->shadow_width || width != priv->shadow_width ||
height != priv->shadow_height) height != priv->shadow_height)
{ {
CoglHandle material; g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
cogl_handle_unref (priv->text_shadow_material);
material = _st_create_shadow_material_from_actor (shadow_spec,
priv->label);
priv->shadow_width = width; priv->shadow_width = width;
priv->shadow_height = height; priv->shadow_height = height;
priv->text_shadow_material = material; priv->text_shadow_pipeline = _st_create_shadow_pipeline_from_actor (shadow_spec, priv->label);
} }
if (priv->text_shadow_material != COGL_INVALID_HANDLE) if (priv->text_shadow_pipeline != NULL)
_st_paint_shadow_with_opacity (shadow_spec, _st_paint_shadow_with_opacity (shadow_spec,
priv->text_shadow_material, priv->text_shadow_pipeline,
cogl_get_draw_framebuffer (),
&allocation, &allocation,
clutter_actor_get_paint_opacity (priv->label)); clutter_actor_get_paint_opacity (priv->label));
} }
@@ -292,7 +279,7 @@ st_label_init (StLabel *label)
label->priv->label = g_object_new (CLUTTER_TYPE_TEXT, label->priv->label = g_object_new (CLUTTER_TYPE_TEXT,
"ellipsize", PANGO_ELLIPSIZE_END, "ellipsize", PANGO_ELLIPSIZE_END,
NULL); NULL);
label->priv->text_shadow_material = COGL_INVALID_HANDLE; label->priv->text_shadow_pipeline = NULL;
label->priv->shadow_width = -1.; label->priv->shadow_width = -1.;
label->priv->shadow_height = -1.; label->priv->shadow_height = -1.;
@@ -357,11 +344,7 @@ st_label_set_text (StLabel *label,
if (clutter_text_get_editable (ctext) || if (clutter_text_get_editable (ctext) ||
g_strcmp0 (clutter_text_get_text (ctext), text) != 0) g_strcmp0 (clutter_text_get_text (ctext), text) != 0)
{ {
if (priv->text_shadow_material != COGL_INVALID_HANDLE) g_clear_pointer (&priv->text_shadow_pipeline, cogl_object_unref);
{
cogl_handle_unref (priv->text_shadow_material);
priv->text_shadow_material = COGL_INVALID_HANDLE;
}
clutter_text_set_text (ctext, text); clutter_text_set_text (ctext, text);

View File

@@ -162,47 +162,41 @@ _st_set_text_from_style (ClutterText *text,
} }
/** /**
* _st_create_texture_material: * _st_create_texture_pipeline:
* @src_texture: The CoglTexture for the material * @src_texture: The CoglTexture for the pipeline
* *
* Creates a simple material which contains the given texture as a * Creates a simple pipeline which contains the given texture as a
* single layer. * single layer.
*/ */
CoglHandle CoglPipeline *
_st_create_texture_material (CoglHandle src_texture) _st_create_texture_pipeline (CoglTexture *src_texture)
{ {
static CoglHandle texture_material_template = COGL_INVALID_HANDLE; static CoglPipeline *texture_pipeline_template = NULL;
CoglHandle material; CoglPipeline *pipeline;
g_return_val_if_fail (src_texture != COGL_INVALID_HANDLE, g_return_val_if_fail (src_texture != NULL, NULL);
COGL_INVALID_HANDLE);
/* We use a material that has a dummy texture as a base for all /* The only state used in the pipeline that would affect the shader
texture materials. The idea is that only the Cogl texture object generation is the texture type on the layer. Therefore we create
would be different in the children so it is likely that Cogl will a template pipeline which sets this state and all texture
be able to share GL programs between all the textures. */ pipelines are created as a copy of this. That way Cogl can find
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE)) the shader state for the pipeline more quickly by looking at the
pipeline ancestry instead of resorting to the shader cache. */
if (G_UNLIKELY (texture_pipeline_template == NULL))
{ {
static const guint8 white_pixel[] = { 0xff, 0xff, 0xff, 0xff }; CoglContext *ctx =
CoglHandle dummy_texture; clutter_backend_get_cogl_context (clutter_get_default_backend ());
dummy_texture = texture_pipeline_template = cogl_pipeline_new (ctx);
cogl_texture_new_from_data (1, 1, cogl_pipeline_set_layer_null_texture (texture_pipeline_template,
COGL_TEXTURE_NONE, 0, /* layer */
COGL_PIXEL_FORMAT_RGBA_8888_PRE, COGL_TEXTURE_TYPE_2D);
COGL_PIXEL_FORMAT_ANY,
4, white_pixel);
texture_material_template = cogl_material_new ();
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
cogl_handle_unref (dummy_texture);
} }
material = cogl_material_copy (texture_material_template); pipeline = cogl_pipeline_copy (texture_pipeline_template);
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
cogl_material_set_layer (material, 0, src_texture); return pipeline;
return material;
} }
/***** /*****
@@ -345,21 +339,20 @@ blur_pixels (guchar *pixels_in,
return pixels_out; return pixels_out;
} }
CoglHandle CoglPipeline *
_st_create_shadow_material (StShadow *shadow_spec, _st_create_shadow_pipeline (StShadow *shadow_spec,
CoglHandle src_texture) CoglTexture *src_texture)
{ {
static CoglHandle shadow_material_template = COGL_INVALID_HANDLE; static CoglPipeline *shadow_pipeline_template = NULL;
CoglHandle material; CoglPipeline *pipeline;
CoglHandle texture; CoglTexture *texture;
guchar *pixels_in, *pixels_out; guchar *pixels_in, *pixels_out;
gint width_in, height_in, rowstride_in; gint width_in, height_in, rowstride_in;
gint width_out, height_out, rowstride_out; gint width_out, height_out, rowstride_out;
g_return_val_if_fail (shadow_spec != NULL, COGL_INVALID_HANDLE); g_return_val_if_fail (shadow_spec != NULL, NULL);
g_return_val_if_fail (src_texture != COGL_INVALID_HANDLE, g_return_val_if_fail (src_texture != NULL, NULL);
COGL_INVALID_HANDLE);
width_in = cogl_texture_get_width (src_texture); width_in = cogl_texture_get_width (src_texture);
height_in = cogl_texture_get_height (src_texture); height_in = cogl_texture_get_height (src_texture);
@@ -385,84 +378,99 @@ _st_create_shadow_material (StShadow *shadow_spec,
g_free (pixels_out); g_free (pixels_out);
if (G_UNLIKELY (shadow_material_template == COGL_INVALID_HANDLE)) if (G_UNLIKELY (shadow_pipeline_template == NULL))
{ {
shadow_material_template = cogl_material_new (); CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
/* We set up the material to blend the shadow texture with the combine shadow_pipeline_template = cogl_pipeline_new (ctx);
/* We set up the pipeline to blend the shadow texture with the combine
* constant, but defer setting the latter until painting, so that we can * constant, but defer setting the latter until painting, so that we can
* take the actor's overall opacity into account. */ * take the actor's overall opacity into account. */
cogl_material_set_layer_combine (shadow_material_template, 0, cogl_pipeline_set_layer_combine (shadow_pipeline_template, 0,
"RGBA = MODULATE (CONSTANT, TEXTURE[A])", "RGBA = MODULATE (CONSTANT, TEXTURE[A])",
NULL); NULL);
} }
material = cogl_material_copy (shadow_material_template); pipeline = cogl_pipeline_copy (shadow_pipeline_template);
cogl_pipeline_set_layer_texture (pipeline, 0, texture);
cogl_material_set_layer (material, 0, texture); cogl_object_unref (texture);
return pipeline;
cogl_handle_unref (texture);
return material;
} }
CoglHandle CoglPipeline *
_st_create_shadow_material_from_actor (StShadow *shadow_spec, _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
ClutterActor *actor) ClutterActor *actor)
{ {
CoglHandle shadow_material = COGL_INVALID_HANDLE; CoglPipeline *shadow_pipeline = NULL;
if (CLUTTER_IS_TEXTURE (actor)) if (CLUTTER_IS_TEXTURE (actor))
{ {
CoglHandle texture; CoglTexture *texture;
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor)); texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
shadow_material = _st_create_shadow_material (shadow_spec, texture); shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, texture);
} }
else else
{ {
CoglHandle buffer, offscreen; CoglTexture *buffer;
CoglOffscreen *offscreen;
CoglFramebuffer *fb;
ClutterActorBox box; ClutterActorBox box;
CoglColor clear_color; CoglColor clear_color;
float width, height; float width, height;
CoglError *catch_error = NULL;
clutter_actor_get_allocation_box (actor, &box); clutter_actor_get_allocation_box (actor, &box);
clutter_actor_box_get_size (&box, &width, &height); clutter_actor_box_get_size (&box, &width, &height);
if (width == 0 || height == 0) if (width == 0 || height == 0)
return COGL_INVALID_HANDLE; return NULL;
buffer = cogl_texture_new_with_size (width, buffer = cogl_texture_new_with_size (width,
height, height,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
if (buffer == COGL_INVALID_HANDLE) if (buffer == NULL)
return COGL_INVALID_HANDLE; return NULL;
offscreen = cogl_offscreen_new_to_texture (buffer); offscreen = cogl_offscreen_new_with_texture (buffer);
fb = COGL_FRAMEBUFFER (offscreen);
if (offscreen == COGL_INVALID_HANDLE) if (!cogl_framebuffer_allocate (fb, &catch_error))
{ {
cogl_handle_unref (buffer); cogl_error_free (catch_error);
return COGL_INVALID_HANDLE; cogl_object_unref (buffer);
return NULL;
} }
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0); cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
cogl_push_framebuffer (offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR); /* XXX: There's no way to render a ClutterActor to an offscreen
cogl_translate (-box.x1, -box.y1, 0); * as it uses the implicit API. */
cogl_ortho (0, width, height, 0, 0, 1.0); G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
cogl_push_framebuffer (fb);
G_GNUC_END_IGNORE_DEPRECATIONS;
cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
cogl_framebuffer_translate (fb, -box.x1, -box.y1, 0);
cogl_framebuffer_orthographic (fb, 0, width, height, 0, 0, 1.0);
clutter_actor_paint (actor); clutter_actor_paint (actor);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
cogl_pop_framebuffer (); cogl_pop_framebuffer ();
cogl_handle_unref (offscreen); G_GNUC_END_IGNORE_DEPRECATIONS;
shadow_material = _st_create_shadow_material (shadow_spec, buffer); cogl_object_unref (fb);
cogl_handle_unref (buffer); shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, buffer);
cogl_object_unref (buffer);
} }
return shadow_material; return shadow_pipeline;
} }
/** /**
@@ -610,29 +618,27 @@ _st_create_shadow_cairo_pattern (StShadow *shadow_spec,
void void
_st_paint_shadow_with_opacity (StShadow *shadow_spec, _st_paint_shadow_with_opacity (StShadow *shadow_spec,
CoglHandle shadow_material, CoglPipeline *shadow_pipeline,
CoglFramebuffer *fb,
ClutterActorBox *box, ClutterActorBox *box,
guint8 paint_opacity) guint8 paint_opacity)
{ {
ClutterActorBox shadow_box; ClutterActorBox shadow_box;
CoglColor color; CoglColor color;
g_return_if_fail (shadow_spec != NULL); g_return_if_fail (shadow_spec != NULL);
g_return_if_fail (shadow_material != COGL_INVALID_HANDLE); g_return_if_fail (shadow_pipeline != NULL);
st_shadow_get_box (shadow_spec, box, &shadow_box); st_shadow_get_box (shadow_spec, box, &shadow_box);
cogl_color_set_from_4ub (&color, cogl_color_init_from_4ub (&color,
shadow_spec->color.red * paint_opacity / 255, shadow_spec->color.red * paint_opacity / 255,
shadow_spec->color.green * paint_opacity / 255, shadow_spec->color.green * paint_opacity / 255,
shadow_spec->color.blue * paint_opacity / 255, shadow_spec->color.blue * paint_opacity / 255,
shadow_spec->color.alpha * paint_opacity / 255); shadow_spec->color.alpha * paint_opacity / 255);
cogl_color_premultiply (&color); cogl_color_premultiply (&color);
cogl_pipeline_set_layer_combine_constant (shadow_pipeline, 0, &color);
cogl_material_set_layer_combine_constant (shadow_material, 0, &color); cogl_framebuffer_draw_rectangle (fb, shadow_pipeline,
shadow_box.x1, shadow_box.y1,
cogl_set_source (shadow_material); shadow_box.x2, shadow_box.y2);
cogl_rectangle_with_texture_coords (shadow_box.x1, shadow_box.y1,
shadow_box.x2, shadow_box.y2,
0, 0, 1, 1);
} }

View File

@@ -59,18 +59,19 @@ void _st_actor_get_preferred_height (ClutterActor *actor,
void _st_set_text_from_style (ClutterText *text, void _st_set_text_from_style (ClutterText *text,
StThemeNode *theme_node); StThemeNode *theme_node);
CoglHandle _st_create_texture_material (CoglHandle src_texture); CoglPipeline * _st_create_texture_pipeline (CoglTexture *src_texture);
/* Helper for widgets which need to draw additional shadows */ /* Helper for widgets which need to draw additional shadows */
CoglHandle _st_create_shadow_material (StShadow *shadow_spec, CoglPipeline * _st_create_shadow_pipeline (StShadow *shadow_spec,
CoglHandle src_texture); CoglTexture *src_texture);
CoglHandle _st_create_shadow_material_from_actor (StShadow *shadow_spec, CoglPipeline * _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
ClutterActor *actor); ClutterActor *actor);
cairo_pattern_t *_st_create_shadow_cairo_pattern (StShadow *shadow_spec, cairo_pattern_t *_st_create_shadow_cairo_pattern (StShadow *shadow_spec,
cairo_pattern_t *src_pattern); cairo_pattern_t *src_pattern);
void _st_paint_shadow_with_opacity (StShadow *shadow_spec, void _st_paint_shadow_with_opacity (StShadow *shadow_spec,
CoglHandle shadow_material, CoglPipeline *shadow_pipeline,
CoglFramebuffer *fb,
ClutterActorBox *box, ClutterActorBox *box,
guint8 paint_opacity); guint8 paint_opacity);

View File

@@ -142,17 +142,18 @@ st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect)
st_adjustment_get_values (self->vadjustment, &value, &lower, &upper, NULL, NULL, &page_size); st_adjustment_get_values (self->vadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
value = (value - lower) / (upper - page_size - lower); value = (value - lower) / (upper - page_size - lower);
clutter_shader_effect_set_uniform (shader, "fade_edges_v", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0); clutter_shader_effect_set_uniform (shader, "vvalue", G_TYPE_FLOAT, 1, value);
st_adjustment_get_values (self->hadjustment, &value, &lower, &upper, NULL, NULL, &page_size); st_adjustment_get_values (self->hadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
value = (value - lower) / (upper - page_size - lower); value = (value - lower) / (upper - page_size - lower);
clutter_shader_effect_set_uniform (shader, "fade_edges_h", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0); clutter_shader_effect_set_uniform (shader, "hvalue", G_TYPE_FLOAT, 1, value);
clutter_shader_effect_set_uniform (shader, "vfade_offset", G_TYPE_FLOAT, 1, self->vfade_offset); clutter_shader_effect_set_uniform (shader, "vfade_offset", G_TYPE_FLOAT, 1, self->vfade_offset);
clutter_shader_effect_set_uniform (shader, "hfade_offset", G_TYPE_FLOAT, 1, self->hfade_offset); clutter_shader_effect_set_uniform (shader, "hfade_offset", G_TYPE_FLOAT, 1, self->hfade_offset);
clutter_shader_effect_set_uniform (shader, "tex", G_TYPE_INT, 1, 0); clutter_shader_effect_set_uniform (shader, "tex", G_TYPE_INT, 1, 0);
clutter_shader_effect_set_uniform (shader, "height", G_TYPE_FLOAT, 1, clutter_actor_get_height (self->actor)); clutter_shader_effect_set_uniform (shader, "height", G_TYPE_FLOAT, 1, clutter_actor_get_height (self->actor));
clutter_shader_effect_set_uniform (shader, "width", G_TYPE_FLOAT, 1, clutter_actor_get_width (self->actor)); clutter_shader_effect_set_uniform (shader, "width", G_TYPE_FLOAT, 1, clutter_actor_get_width (self->actor));
clutter_shader_effect_set_uniform (shader, "fade_edges", G_TYPE_INT, 1, self->fade_edges);
clutter_shader_effect_set_uniform (shader, "fade_area_topleft", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_topleft); clutter_shader_effect_set_uniform (shader, "fade_area_topleft", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_topleft);
clutter_shader_effect_set_uniform (shader, "fade_area_bottomright", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_bottomright); clutter_shader_effect_set_uniform (shader, "fade_area_bottomright", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_bottomright);

View File

@@ -22,8 +22,9 @@ uniform float height;
uniform float width; uniform float width;
uniform float vfade_offset; uniform float vfade_offset;
uniform float hfade_offset; uniform float hfade_offset;
uniform bool fade_edges_h; uniform float vvalue;
uniform bool fade_edges_v; uniform float hvalue;
uniform bool fade_edges;
uniform vec2 fade_area_topleft; uniform vec2 fade_area_topleft;
uniform vec2 fade_area_bottomright; uniform vec2 fade_area_bottomright;
@@ -44,10 +45,14 @@ void main ()
float ratio = 1.0; float ratio = 1.0;
float fade_bottom_start = fade_area_bottomright[1] - vfade_offset; float fade_bottom_start = fade_area_bottomright[1] - vfade_offset;
float fade_right_start = fade_area_bottomright[0] - hfade_offset; float fade_right_start = fade_area_bottomright[0] - hfade_offset;
bool fade_top = y < vfade_offset && fade_edges_v; bool fade_top = y < vfade_offset && (fade_edges ? vvalue >= 0.0
bool fade_bottom = y > fade_bottom_start && fade_edges_v; : vvalue > 0.0);
bool fade_left = x < hfade_offset && fade_edges_h; bool fade_bottom = y > fade_bottom_start && (fade_edges ? vvalue <= 1.0
bool fade_right = x > fade_right_start && fade_edges_h; : vvalue < 1.0);
bool fade_left = x < hfade_offset && (fade_edges ? hvalue >= 0.0
: hvalue > 0.0);
bool fade_right = x > fade_right_start && (fade_edges ? hvalue <= 1.0
: hvalue < 1.0);
float vfade_scale = height / vfade_offset; float vfade_scale = height / vfade_offset;
if (fade_top) { if (fade_top) {

View File

@@ -190,7 +190,7 @@ st_shadow_get_box (StShadow *shadow,
struct _StShadowHelper { struct _StShadowHelper {
StShadow *shadow; StShadow *shadow;
CoglMaterial *material; CoglPipeline *pipeline;
gfloat width; gfloat width;
gfloat height; gfloat height;
@@ -224,14 +224,14 @@ st_shadow_helper_update (StShadowHelper *helper,
clutter_actor_get_size (source, &width, &height); clutter_actor_get_size (source, &width, &height);
if (helper->material == NULL || if (helper->pipeline == NULL ||
helper->width != width || helper->width != width ||
helper->height != height) helper->height != height)
{ {
if (helper->material) if (helper->pipeline)
cogl_object_unref (helper->material); cogl_object_unref (helper->pipeline);
helper->material = _st_create_shadow_material_from_actor (helper->shadow, source); helper->pipeline = _st_create_shadow_pipeline_from_actor (helper->shadow, source);
helper->width = width; helper->width = width;
helper->height = height; helper->height = height;
} }
@@ -250,8 +250,8 @@ st_shadow_helper_copy (StShadowHelper *helper)
copy = g_slice_new (StShadowHelper); copy = g_slice_new (StShadowHelper);
*copy = *helper; *copy = *helper;
if (copy->material) if (copy->pipeline)
cogl_object_ref (copy->material); cogl_object_ref (copy->pipeline);
st_shadow_ref (copy->shadow); st_shadow_ref (copy->shadow);
return copy; return copy;
@@ -266,8 +266,8 @@ st_shadow_helper_copy (StShadowHelper *helper)
void void
st_shadow_helper_free (StShadowHelper *helper) st_shadow_helper_free (StShadowHelper *helper)
{ {
if (helper->material) if (helper->pipeline)
cogl_object_unref (helper->material); cogl_object_unref (helper->pipeline);
st_shadow_unref (helper->shadow); st_shadow_unref (helper->shadow);
g_slice_free (StShadowHelper, helper); g_slice_free (StShadowHelper, helper);
@@ -293,7 +293,8 @@ st_shadow_helper_paint (StShadowHelper *helper,
clutter_actor_box_get_size (actor_box, &width, &height); clutter_actor_box_get_size (actor_box, &width, &height);
_st_paint_shadow_with_opacity (helper->shadow, _st_paint_shadow_with_opacity (helper->shadow,
helper->material, helper->pipeline,
cogl_get_draw_framebuffer (),
&allocation, &allocation,
paint_opacity); paint_opacity);
} }

View File

@@ -60,7 +60,7 @@ static guint signals[LAST_SIGNAL] = { 0, };
G_DEFINE_TYPE(StTextureCache, st_texture_cache, G_TYPE_OBJECT); G_DEFINE_TYPE(StTextureCache, st_texture_cache, G_TYPE_OBJECT);
/* We want to preserve the aspect ratio by default, also the default /* We want to preserve the aspect ratio by default, also the default
* material for an empty texture is full opacity white, which we * pipeline for an empty texture is full opacity white, which we
* definitely don't want. Skip that by setting 0 opacity. * definitely don't want. Skip that by setting 0 opacity.
*/ */
static ClutterTexture * static ClutterTexture *
@@ -73,7 +73,7 @@ create_default_texture (void)
/* Reverse the opacity we added while loading */ /* Reverse the opacity we added while loading */
static void static void
set_texture_cogl_texture (ClutterTexture *clutter_texture, CoglHandle cogl_texture) set_texture_cogl_texture (ClutterTexture *clutter_texture, CoglTexture *cogl_texture)
{ {
clutter_texture_set_cogl_texture (clutter_texture, cogl_texture); clutter_texture_set_cogl_texture (clutter_texture, cogl_texture);
g_object_set (clutter_texture, "opacity", 255, NULL); g_object_set (clutter_texture, "opacity", 255, NULL);
@@ -144,7 +144,7 @@ st_texture_cache_init (StTextureCache *self)
G_CALLBACK (on_icon_theme_changed), self); G_CALLBACK (on_icon_theme_changed), self);
self->priv->keyed_cache = g_hash_table_new_full (g_str_hash, g_str_equal, self->priv->keyed_cache = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, cogl_handle_unref); g_free, cogl_object_unref);
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal, self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, NULL); g_free, NULL);
self->priv->file_monitors = g_hash_table_new_full (g_str_hash, g_str_equal, self->priv->file_monitors = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -516,16 +516,15 @@ load_pixbuf_async_finish (StTextureCache *cache, GAsyncResult *result, GError **
return g_simple_async_result_get_op_res_gpointer (simple); return g_simple_async_result_get_op_res_gpointer (simple);
} }
static CoglHandle static CoglTexture *
data_to_cogl_handle (const guchar *data, data_to_cogl_texture (const guchar *data,
gboolean has_alpha, gboolean has_alpha,
int width, int width,
int height, int height,
int rowstride, int rowstride,
gboolean add_padding) gboolean add_padding)
{ {
CoglHandle texture, offscreen; CoglTexture *texture;
CoglColor clear_color;
guint size; guint size;
size = MAX (width, height); size = MAX (width, height);
@@ -543,13 +542,6 @@ data_to_cogl_handle (const guchar *data,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
offscreen = cogl_offscreen_new_to_texture (texture);
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
cogl_push_framebuffer (offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
cogl_pop_framebuffer ();
cogl_handle_unref (offscreen);
cogl_texture_set_region (texture, cogl_texture_set_region (texture,
0, 0, 0, 0,
(size - width) / 2, (size - height) / 2, (size - width) / 2, (size - height) / 2,
@@ -561,16 +553,16 @@ data_to_cogl_handle (const guchar *data,
return texture; return texture;
} }
static CoglHandle static CoglTexture *
pixbuf_to_cogl_handle (GdkPixbuf *pixbuf, pixbuf_to_cogl_texture (GdkPixbuf *pixbuf,
gboolean add_padding) gboolean add_padding)
{ {
return data_to_cogl_handle (gdk_pixbuf_get_pixels (pixbuf), return data_to_cogl_texture (gdk_pixbuf_get_pixels (pixbuf),
gdk_pixbuf_get_has_alpha (pixbuf), gdk_pixbuf_get_has_alpha (pixbuf),
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_width (pixbuf),
gdk_pixbuf_get_height (pixbuf), gdk_pixbuf_get_height (pixbuf),
gdk_pixbuf_get_rowstride (pixbuf), gdk_pixbuf_get_rowstride (pixbuf),
add_padding); add_padding);
} }
static cairo_surface_t * static cairo_surface_t *
@@ -600,7 +592,7 @@ finish_texture_load (AsyncTextureLoadData *data,
{ {
GSList *iter; GSList *iter;
StTextureCache *cache; StTextureCache *cache;
CoglHandle texdata = NULL; CoglTexture *texdata = NULL;
cache = data->cache; cache = data->cache;
@@ -609,7 +601,7 @@ finish_texture_load (AsyncTextureLoadData *data,
if (pixbuf == NULL) if (pixbuf == NULL)
goto out; goto out;
texdata = pixbuf_to_cogl_handle (pixbuf, data->enforced_square); texdata = pixbuf_to_cogl_texture (pixbuf, data->enforced_square);
if (data->policy != ST_TEXTURE_CACHE_POLICY_NONE) if (data->policy != ST_TEXTURE_CACHE_POLICY_NONE)
{ {
@@ -618,7 +610,7 @@ finish_texture_load (AsyncTextureLoadData *data,
if (!g_hash_table_lookup_extended (cache->priv->keyed_cache, data->key, if (!g_hash_table_lookup_extended (cache->priv->keyed_cache, data->key,
&orig_key, &value)) &orig_key, &value))
{ {
cogl_handle_ref (texdata); cogl_object_ref (texdata);
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (data->key), g_hash_table_insert (cache->priv->keyed_cache, g_strdup (data->key),
texdata); texdata);
} }
@@ -632,7 +624,7 @@ finish_texture_load (AsyncTextureLoadData *data,
out: out:
if (texdata) if (texdata)
cogl_handle_unref (texdata); cogl_object_unref (texdata);
texture_load_data_free (data); texture_load_data_free (data);
} }
@@ -723,7 +715,7 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
const char *propname) const char *propname)
{ {
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
CoglHandle texdata; CoglTexture *texdata;
g_object_get (bind->source, propname, &pixbuf, NULL); g_object_get (bind->source, propname, &pixbuf, NULL);
@@ -731,11 +723,11 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
if (pixbuf != NULL) if (pixbuf != NULL)
{ {
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE); texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
g_object_unref (pixbuf); g_object_unref (pixbuf);
clutter_texture_set_cogl_texture (bind->texture, texdata); clutter_texture_set_cogl_texture (bind->texture, texdata);
cogl_handle_unref (texdata); cogl_object_unref (texdata);
clutter_actor_set_opacity (CLUTTER_ACTOR (bind->texture), 255); clutter_actor_set_opacity (CLUTTER_ACTOR (bind->texture), 255);
} }
@@ -778,7 +770,7 @@ st_texture_cache_free_bind (gpointer data)
* *
* Create a #ClutterTexture which tracks the #GdkPixbuf value of a GObject property * Create a #ClutterTexture which tracks the #GdkPixbuf value of a GObject property
* named by @property_name. Unlike other methods in StTextureCache, the underlying * named by @property_name. Unlike other methods in StTextureCache, the underlying
* CoglHandle is not shared by default with other invocations to this method. * #CoglTexture is not shared by default with other invocations to this method.
* *
* If the source object is destroyed, the texture will continue to show the last * If the source object is destroyed, the texture will continue to show the last
* value of the property. * value of the property.
@@ -829,7 +821,7 @@ st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
* *
* Returns: (transfer full): A newly-referenced handle to the texture * Returns: (transfer full): A newly-referenced handle to the texture
*/ */
CoglHandle CoglTexture *
st_texture_cache_load (StTextureCache *cache, st_texture_cache_load (StTextureCache *cache,
const char *key, const char *key,
StTextureCachePolicy policy, StTextureCachePolicy policy,
@@ -837,7 +829,7 @@ st_texture_cache_load (StTextureCache *cache,
void *data, void *data,
GError **error) GError **error)
{ {
CoglHandle texture; CoglTexture *texture;
texture = g_hash_table_lookup (cache->priv->keyed_cache, key); texture = g_hash_table_lookup (cache->priv->keyed_cache, key);
if (!texture) if (!texture)
@@ -846,9 +838,10 @@ st_texture_cache_load (StTextureCache *cache,
if (texture) if (texture)
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texture); g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texture);
else else
return COGL_INVALID_HANDLE; return NULL;
} }
cogl_handle_ref (texture);
cogl_object_ref (texture);
return texture; return texture;
} }
@@ -873,7 +866,7 @@ ensure_request (StTextureCache *cache,
AsyncTextureLoadData **request, AsyncTextureLoadData **request,
ClutterActor *texture) ClutterActor *texture)
{ {
CoglHandle texdata; CoglTexture *texdata;
AsyncTextureLoadData *pending; AsyncTextureLoadData *pending;
gboolean had_pending; gboolean had_pending;
@@ -1005,7 +998,7 @@ static ClutterActor *
load_from_pixbuf (GdkPixbuf *pixbuf) load_from_pixbuf (GdkPixbuf *pixbuf)
{ {
ClutterTexture *texture; ClutterTexture *texture;
CoglHandle texdata; CoglTexture *texdata;
int width = gdk_pixbuf_get_width (pixbuf); int width = gdk_pixbuf_get_width (pixbuf);
int height = gdk_pixbuf_get_height (pixbuf); int height = gdk_pixbuf_get_height (pixbuf);
@@ -1013,11 +1006,11 @@ load_from_pixbuf (GdkPixbuf *pixbuf)
clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height); clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height);
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE); texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
set_texture_cogl_texture (texture, texdata); set_texture_cogl_texture (texture, texdata);
cogl_handle_unref (texdata); cogl_object_unref (texdata);
return CLUTTER_ACTOR (texture); return CLUTTER_ACTOR (texture);
} }
@@ -1256,7 +1249,7 @@ st_texture_cache_load_uri_async (StTextureCache *cache,
return CLUTTER_ACTOR (texture); return CLUTTER_ACTOR (texture);
} }
static CoglHandle static CoglTexture *
st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache, st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
StTextureCachePolicy policy, StTextureCachePolicy policy,
const gchar *uri, const gchar *uri,
@@ -1264,7 +1257,7 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
int available_height, int available_height,
GError **error) GError **error)
{ {
CoglHandle texdata; CoglTexture *texdata;
GdkPixbuf *pixbuf; GdkPixbuf *pixbuf;
char *key; char *key;
@@ -1278,17 +1271,17 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
if (!pixbuf) if (!pixbuf)
goto out; goto out;
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE); texdata = pixbuf_to_cogl_texture (pixbuf, FALSE);
g_object_unref (pixbuf); g_object_unref (pixbuf);
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER) if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
{ {
cogl_handle_ref (texdata); cogl_object_ref (texdata);
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texdata); g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texdata);
} }
} }
else else
cogl_handle_ref (texdata); cogl_object_ref (texdata);
ensure_monitor_for_uri (cache, uri); ensure_monitor_for_uri (cache, uri);
@@ -1339,21 +1332,21 @@ out:
} }
/** /**
* st_texture_cache_load_file_to_cogl_texture: * st_texture_cache_load_file_to_cogl_texture: (skip)
* @cache: A #StTextureCache * @cache: A #StTextureCache
* @file_path: Path to a file in supported image format * @file_path: Path to a file in supported image format
* *
* This function synchronously loads the given file path * This function synchronously loads the given file path
* into a COGL texture. On error, a warning is emitted * into a COGL texture. On error, a warning is emitted
* and %COGL_INVALID_HANDLE is returned. * and %NULL is returned.
* *
* Returns: (transfer full): a new #CoglHandle * Returns: (transfer full): a new #CoglTexture
*/ */
CoglHandle CoglTexture *
st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache, st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
const gchar *file_path) const gchar *file_path)
{ {
CoglHandle texture; CoglTexture *texture;
GFile *file; GFile *file;
char *uri; char *uri;
GError *error = NULL; GError *error = NULL;
@@ -1370,7 +1363,7 @@ st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
{ {
g_warning ("Failed to load %s: %s", file_path, error->message); g_warning ("Failed to load %s: %s", file_path, error->message);
g_clear_error (&error); g_clear_error (&error);
return COGL_INVALID_HANDLE; return NULL;
} }
return texture; return texture;
} }

View File

@@ -90,8 +90,8 @@ ClutterActor *st_texture_cache_load_uri_async (StTextureCache *cache,
int available_width, int available_width,
int available_height); int available_height);
CoglHandle st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache, CoglTexture *st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache,
const gchar *file_path); const gchar *file_path);
cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *cache, cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *cache,
const gchar *file_path); const gchar *file_path);
@@ -107,13 +107,13 @@ cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *ca
* texture handle for the given key, or set @error. * texture handle for the given key, or set @error.
* *
*/ */
typedef CoglHandle (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error); typedef CoglTexture * (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error);
CoglHandle st_texture_cache_load (StTextureCache *cache, CoglTexture * st_texture_cache_load (StTextureCache *cache,
const char *key, const char *key,
StTextureCachePolicy policy, StTextureCachePolicy policy,
StTextureCacheLoader load, StTextureCacheLoader load,
void *data, void *data,
GError **error); GError **error);
#endif /* __ST_TEXTURE_CACHE_H__ */ #endif /* __ST_TEXTURE_CACHE_H__ */

View File

@@ -66,10 +66,10 @@ elliptical_arc (cairo_t *cr,
cairo_restore (cr); cairo_restore (cr);
} }
static CoglHandle static CoglTexture *
create_corner_material (StCornerSpec *corner) create_corner_texture (StCornerSpec *corner)
{ {
CoglHandle texture; CoglTexture *texture;
cairo_t *cr; cairo_t *cr;
cairo_surface_t *surface; cairo_surface_t *surface;
guint rowstride; guint rowstride;
@@ -173,7 +173,7 @@ create_corner_material (StCornerSpec *corner)
rowstride, rowstride,
data); data);
g_free (data); g_free (data);
g_assert (texture != COGL_INVALID_HANDLE); g_assert (texture != NULL);
return texture; return texture;
} }
@@ -190,13 +190,13 @@ corner_to_string (StCornerSpec *corner)
corner->border_width_2); corner->border_width_2);
} }
static CoglHandle static CoglTexture *
load_corner (StTextureCache *cache, load_corner (StTextureCache *cache,
const char *key, const char *key,
void *datap, void *datap,
GError **error) GError **error)
{ {
return create_corner_material ((StCornerSpec *) datap); return create_corner_texture ((StCornerSpec *) datap);
} }
/* To match the CSS specification, we want the border to look like it was /* To match the CSS specification, we want the border to look like it was
@@ -337,13 +337,14 @@ st_theme_node_get_corner_border_widths (StThemeNode *node,
} }
} }
static CoglHandle static CoglPipeline *
st_theme_node_lookup_corner (StThemeNode *node, st_theme_node_lookup_corner (StThemeNode *node,
float width, float width,
float height, float height,
StCorner corner_id) StCorner corner_id)
{ {
CoglHandle texture, material; CoglTexture *texture;
CoglPipeline *pipeline;
char *key; char *key;
StTextureCache *cache; StTextureCache *cache;
StCornerSpec corner; StCornerSpec corner;
@@ -354,7 +355,7 @@ st_theme_node_lookup_corner (StThemeNode *node,
st_theme_node_reduce_border_radius (node, width, height, radius); st_theme_node_reduce_border_radius (node, width, height, radius);
if (radius[corner_id] == 0) if (radius[corner_id] == 0)
return COGL_INVALID_HANDLE; return NULL;
corner.radius = radius[corner_id]; corner.radius = radius[corner_id];
corner.color = node->background_color; corner.color = node->background_color;
@@ -385,16 +386,16 @@ st_theme_node_lookup_corner (StThemeNode *node,
if (corner.color.alpha == 0 && if (corner.color.alpha == 0 &&
corner.border_color_1.alpha == 0 && corner.border_color_1.alpha == 0 &&
corner.border_color_2.alpha == 0) corner.border_color_2.alpha == 0)
return COGL_INVALID_HANDLE; return NULL;
key = corner_to_string (&corner); key = corner_to_string (&corner);
texture = st_texture_cache_load (cache, key, ST_TEXTURE_CACHE_POLICY_NONE, load_corner, &corner, NULL); texture = st_texture_cache_load (cache, key, ST_TEXTURE_CACHE_POLICY_NONE, load_corner, &corner, NULL);
material = _st_create_texture_material (texture); pipeline = _st_create_texture_pipeline (texture);
cogl_handle_unref (texture); cogl_object_unref (texture);
g_free (key); g_free (key);
return material; return pipeline;
} }
static void static void
@@ -934,13 +935,13 @@ paint_inset_box_shadow_to_cairo_context (StThemeNode *node,
* we need to use cairo. This function is a slow fallback path for those * we need to use cairo. This function is a slow fallback path for those
* cases (gradients, background images, etc). * cases (gradients, background images, etc).
*/ */
static CoglHandle static CoglTexture *
st_theme_node_prerender_background (StThemeNode *node, st_theme_node_prerender_background (StThemeNode *node,
float actor_width, float actor_width,
float actor_height) float actor_height)
{ {
StBorderImage *border_image; StBorderImage *border_image;
CoglHandle texture; CoglTexture *texture;
guint radius[4]; guint radius[4];
int i; int i;
cairo_t *cr; cairo_t *cr;
@@ -1268,30 +1269,17 @@ st_theme_node_prerender_background (StThemeNode *node,
return texture; return texture;
} }
static void st_theme_node_paint_borders (StThemeNodePaintState *state,
const ClutterActorBox *box,
guint8 paint_opacity);
void void
st_theme_node_invalidate_border_image (StThemeNode *node) st_theme_node_invalidate_border_image (StThemeNode *node)
{ {
if (node->border_slices_texture != COGL_INVALID_HANDLE) g_clear_pointer (&node->border_slices_texture, cogl_object_unref);
{ g_clear_pointer (&node->border_slices_pipeline, cogl_object_unref);
cogl_handle_unref (node->border_slices_texture);
node->border_slices_texture = COGL_INVALID_HANDLE;
}
if (node->border_slices_material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (node->border_slices_material);
node->border_slices_material = COGL_INVALID_HANDLE;
}
} }
static gboolean static gboolean
st_theme_node_load_border_image (StThemeNode *node) st_theme_node_load_border_image (StThemeNode *node)
{ {
if (node->border_slices_texture == COGL_INVALID_HANDLE) if (node->border_slices_texture == NULL)
{ {
StBorderImage *border_image; StBorderImage *border_image;
@@ -1303,42 +1291,28 @@ st_theme_node_load_border_image (StThemeNode *node)
filename = st_border_image_get_filename (border_image); filename = st_border_image_get_filename (border_image);
node->border_slices_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (), node->border_slices_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (),
filename); filename);
if (node->border_slices_texture == COGL_INVALID_HANDLE) if (node->border_slices_texture == NULL)
goto out; goto out;
node->border_slices_material = _st_create_texture_material (node->border_slices_texture); node->border_slices_pipeline = _st_create_texture_pipeline (node->border_slices_texture);
} }
out: out:
return node->border_slices_texture != COGL_INVALID_HANDLE; return node->border_slices_pipeline != NULL;
} }
void void
st_theme_node_invalidate_background_image (StThemeNode *node) st_theme_node_invalidate_background_image (StThemeNode *node)
{ {
if (node->background_texture != COGL_INVALID_HANDLE) g_clear_pointer (&node->background_texture, cogl_object_unref);
{ g_clear_pointer (&node->background_pipeline, cogl_object_unref);
cogl_handle_unref (node->background_texture); g_clear_pointer (&node->background_shadow_pipeline, cogl_object_unref);
node->background_texture = COGL_INVALID_HANDLE;
}
if (node->background_material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (node->background_material);
node->background_material = COGL_INVALID_HANDLE;
}
if (node->background_shadow_material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (node->background_shadow_material);
node->background_shadow_material = COGL_INVALID_HANDLE;
}
} }
static gboolean static gboolean
st_theme_node_load_background_image (StThemeNode *node) st_theme_node_load_background_image (StThemeNode *node)
{ {
if (node->background_texture == COGL_INVALID_HANDLE) if (node->background_texture == NULL)
{ {
const char *background_image; const char *background_image;
StShadow *background_image_shadow_spec; StShadow *background_image_shadow_spec;
@@ -1350,27 +1324,38 @@ st_theme_node_load_background_image (StThemeNode *node)
background_image_shadow_spec = st_theme_node_get_background_image_shadow (node); background_image_shadow_spec = st_theme_node_get_background_image_shadow (node);
node->background_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (), node->background_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (),
background_image); background_image);
if (node->background_texture == COGL_INVALID_HANDLE) if (node->background_texture == NULL)
goto out; goto out;
node->background_material = _st_create_texture_material (node->background_texture); node->background_pipeline = _st_create_texture_pipeline (node->background_texture);
if (node->background_repeat) if (node->background_repeat)
cogl_material_set_layer_wrap_mode (node->background_material, 0, COGL_MATERIAL_WRAP_MODE_REPEAT); cogl_pipeline_set_layer_wrap_mode (node->background_pipeline, 0, COGL_PIPELINE_WRAP_MODE_REPEAT);
if (background_image_shadow_spec) if (background_image_shadow_spec)
{ {
node->background_shadow_material = _st_create_shadow_material (background_image_shadow_spec, node->background_shadow_pipeline = _st_create_shadow_pipeline (background_image_shadow_spec,
node->background_texture); node->background_texture);
} }
} }
out: out:
return node->background_texture != COGL_INVALID_HANDLE; return node->background_texture != NULL;
} }
static void st_theme_node_prerender_shadow (StThemeNodePaintState *state); static void st_theme_node_prerender_shadow (StThemeNodePaintState *state);
static CoglPipeline *
get_color_pipeline (guint8 r, guint8 g, guint8 b, guint8 a)
{
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
CoglPipeline *pipeline;
pipeline = cogl_pipeline_new (ctx);
cogl_pipeline_set_color4ub (pipeline, r, g, b, a);
return pipeline;
}
static void static void
st_theme_node_render_resources (StThemeNodePaintState *state, st_theme_node_render_resources (StThemeNodePaintState *state,
StThemeNode *node, StThemeNode *node,
@@ -1438,13 +1423,13 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
} }
} }
state->corner_material[ST_CORNER_TOPLEFT] = state->corner_pipeline[ST_CORNER_TOPLEFT] =
st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPLEFT); st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPLEFT);
state->corner_material[ST_CORNER_TOPRIGHT] = state->corner_pipeline[ST_CORNER_TOPRIGHT] =
st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPRIGHT); st_theme_node_lookup_corner (node, width, height, ST_CORNER_TOPRIGHT);
state->corner_material[ST_CORNER_BOTTOMRIGHT] = state->corner_pipeline[ST_CORNER_BOTTOMRIGHT] =
st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMRIGHT); st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMRIGHT);
state->corner_material[ST_CORNER_BOTTOMLEFT] = state->corner_pipeline[ST_CORNER_BOTTOMLEFT] =
st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMLEFT); st_theme_node_lookup_corner (node, width, height, ST_CORNER_BOTTOMLEFT);
/* Use cairo to prerender the node if there is a gradient, or /* Use cairo to prerender the node if there is a gradient, or
@@ -1463,17 +1448,17 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
state->prerendered_texture = st_theme_node_prerender_background (node, width, height); state->prerendered_texture = st_theme_node_prerender_background (node, width, height);
if (state->prerendered_texture) if (state->prerendered_texture)
state->prerendered_material = _st_create_texture_material (state->prerendered_texture); state->prerendered_pipeline = _st_create_texture_pipeline (state->prerendered_texture);
else else
state->prerendered_material = COGL_INVALID_HANDLE; state->prerendered_pipeline = NULL;
if (box_shadow_spec && !has_inset_box_shadow) if (box_shadow_spec && !has_inset_box_shadow)
{ {
if (st_theme_node_load_border_image (node)) if (st_theme_node_load_border_image (node))
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec, state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
node->border_slices_texture); node->border_slices_texture);
else if (state->prerendered_texture != COGL_INVALID_HANDLE) else if (state->prerendered_texture != NULL)
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec, state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
state->prerendered_texture); state->prerendered_texture);
else if (node->background_color.alpha > 0 || has_border) else if (node->background_color.alpha > 0 || has_border)
st_theme_node_prerender_shadow (state); st_theme_node_prerender_shadow (state);
@@ -1483,7 +1468,7 @@ st_theme_node_render_resources (StThemeNodePaintState *state,
them. */ them. */
if (!node->cached_textures) if (!node->cached_textures)
{ {
if (state->prerendered_material == COGL_INVALID_HANDLE && if (state->prerendered_pipeline == NULL &&
width >= node->box_shadow_min_width && width >= node->box_shadow_min_width &&
height >= node->box_shadow_min_height) height >= node->box_shadow_min_height)
{ {
@@ -1505,23 +1490,23 @@ st_theme_node_update_resources (StThemeNodePaintState *state,
g_return_if_fail (width > 0 && height > 0); g_return_if_fail (width > 0 && height > 0);
/* Free handles we can't reuse */ /* Free objects we can't reuse */
if (state->prerendered_texture != COGL_INVALID_HANDLE) if (state->prerendered_texture != NULL)
{ {
cogl_handle_unref (state->prerendered_texture); cogl_object_unref (state->prerendered_texture);
state->prerendered_texture = COGL_INVALID_HANDLE; state->prerendered_texture = NULL;
had_prerendered_texture = TRUE; had_prerendered_texture = TRUE;
} }
if (state->prerendered_material != COGL_INVALID_HANDLE) if (state->prerendered_pipeline != NULL)
{ {
cogl_handle_unref (state->prerendered_material); cogl_object_unref (state->prerendered_pipeline);
state->prerendered_material = COGL_INVALID_HANDLE; state->prerendered_pipeline = NULL;
if (node->border_slices_texture == COGL_INVALID_HANDLE && if (node->border_slices_texture == NULL &&
state->box_shadow_material != COGL_INVALID_HANDLE) state->box_shadow_pipeline != NULL)
{ {
cogl_handle_unref (state->box_shadow_material); cogl_object_unref (state->box_shadow_pipeline);
state->box_shadow_material = COGL_INVALID_HANDLE; state->box_shadow_pipeline = NULL;
had_box_shadow = TRUE; had_box_shadow = TRUE;
} }
} }
@@ -1535,43 +1520,26 @@ st_theme_node_update_resources (StThemeNodePaintState *state,
if (had_prerendered_texture) if (had_prerendered_texture)
{ {
state->prerendered_texture = st_theme_node_prerender_background (node, width, height); state->prerendered_texture = st_theme_node_prerender_background (node, width, height);
state->prerendered_material = _st_create_texture_material (state->prerendered_texture); state->prerendered_pipeline = _st_create_texture_pipeline (state->prerendered_texture);
} }
else else
{ {
int corner_id; int corner_id;
for (corner_id = 0; corner_id < 4; corner_id++) for (corner_id = 0; corner_id < 4; corner_id++)
if (state->corner_material[corner_id] == COGL_INVALID_HANDLE) if (state->corner_pipeline[corner_id] == NULL)
state->corner_material[corner_id] = state->corner_pipeline[corner_id] =
st_theme_node_lookup_corner (node, width, height, corner_id); st_theme_node_lookup_corner (node, width, height, corner_id);
} }
if (had_box_shadow) if (had_box_shadow)
state->box_shadow_material = _st_create_shadow_material (box_shadow_spec, state->box_shadow_pipeline = _st_create_shadow_pipeline (box_shadow_spec,
state->prerendered_texture); state->prerendered_texture);
} }
static void
paint_material_with_opacity (CoglHandle material,
ClutterActorBox *box,
ClutterActorBox *coords,
guint8 paint_opacity)
{
cogl_material_set_color4ub (material,
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_set_source (material);
if (coords)
cogl_rectangle_with_texture_coords (box->x1, box->y1, box->x2, box->y2,
coords->x1, coords->y1, coords->x2, coords->y2);
else
cogl_rectangle (box->x1, box->y1, box->x2, box->y2);
}
static void static void
st_theme_node_paint_borders (StThemeNodePaintState *state, st_theme_node_paint_borders (StThemeNodePaintState *state,
CoglFramebuffer *fb,
const ClutterActorBox *box, const ClutterActorBox *box,
guint8 paint_opacity) guint8 paint_opacity)
{ {
@@ -1624,10 +1592,7 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
if (alpha > 0) if (alpha > 0)
{ {
cogl_set_source_color4ub (effective_border.red, CoglPipeline *pipeline;
effective_border.green,
effective_border.blue,
alpha);
/* NORTH */ /* NORTH */
skip_corner_1 = border_radius[ST_CORNER_TOPLEFT] > 0; skip_corner_1 = border_radius[ST_CORNER_TOPLEFT] > 0;
@@ -1670,7 +1635,12 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
rects[15] = skip_corner_2 ? height - max_width_radius[ST_CORNER_BOTTOMLEFT] rects[15] = skip_corner_2 ? height - max_width_radius[ST_CORNER_BOTTOMLEFT]
: height - border_width[ST_SIDE_BOTTOM]; : height - border_width[ST_SIDE_BOTTOM];
cogl_rectangles (rects, 4); pipeline = get_color_pipeline (effective_border.red,
effective_border.green,
effective_border.blue,
alpha);
cogl_framebuffer_draw_rectangles (fb, pipeline, rects, 4);
cogl_object_unref (pipeline);
} }
} }
@@ -1679,35 +1649,40 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
{ {
for (corner_id = 0; corner_id < 4; corner_id++) for (corner_id = 0; corner_id < 4; corner_id++)
{ {
if (state->corner_material[corner_id] == COGL_INVALID_HANDLE) CoglPipeline *pipeline = state->corner_pipeline[corner_id];
if (pipeline == NULL)
continue; continue;
cogl_material_set_color4ub (state->corner_material[corner_id], cogl_pipeline_set_color4ub (pipeline,
paint_opacity, paint_opacity, paint_opacity, paint_opacity,
paint_opacity, paint_opacity); paint_opacity, paint_opacity);
cogl_set_source (state->corner_material[corner_id]);
switch (corner_id) switch (corner_id)
{ {
case ST_CORNER_TOPLEFT: case ST_CORNER_TOPLEFT:
cogl_rectangle_with_texture_coords (0, 0, cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT], 0, 0,
0, 0, 0.5, 0.5); max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT],
0, 0, 0.5, 0.5);
break; break;
case ST_CORNER_TOPRIGHT: case ST_CORNER_TOPRIGHT:
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_TOPRIGHT], 0, cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
width, max_width_radius[ST_CORNER_TOPRIGHT], width - max_width_radius[ST_CORNER_TOPRIGHT], 0,
0.5, 0, 1, 0.5); width, max_width_radius[ST_CORNER_TOPRIGHT],
0.5, 0, 1, 0.5);
break; break;
case ST_CORNER_BOTTOMRIGHT: case ST_CORNER_BOTTOMRIGHT:
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_BOTTOMRIGHT], height - max_width_radius[ST_CORNER_BOTTOMRIGHT], cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
width, height, width - max_width_radius[ST_CORNER_BOTTOMRIGHT], height - max_width_radius[ST_CORNER_BOTTOMRIGHT],
0.5, 0.5, 1, 1); width, height,
0.5, 0.5, 1, 1);
break; break;
case ST_CORNER_BOTTOMLEFT: case ST_CORNER_BOTTOMLEFT:
cogl_rectangle_with_texture_coords (0, height - max_width_radius[ST_CORNER_BOTTOMLEFT], cogl_framebuffer_draw_textured_rectangle (fb, pipeline,
max_width_radius[ST_CORNER_BOTTOMLEFT], height, 0, height - max_width_radius[ST_CORNER_BOTTOMLEFT],
0, 0.5, 0.5, 1); max_width_radius[ST_CORNER_BOTTOMLEFT], height,
0, 0.5, 0.5, 1);
break; break;
} }
} }
@@ -1717,10 +1692,12 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
alpha = paint_opacity * node->background_color.alpha / 255; alpha = paint_opacity * node->background_color.alpha / 255;
if (alpha > 0) if (alpha > 0)
{ {
cogl_set_source_color4ub (node->background_color.red, CoglPipeline *pipeline;
node->background_color.green,
node->background_color.blue, pipeline = get_color_pipeline (node->background_color.red,
alpha); node->background_color.green,
node->background_color.blue,
alpha);
/* We add padding to each corner, so that all corners end up as if they /* We add padding to each corner, so that all corners end up as if they
* had a border-radius of max_border_radius, which allows us to treat * had a border-radius of max_border_radius, which allows us to treat
@@ -1803,8 +1780,9 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
verts[7] = height - border_width[ST_SIDE_BOTTOM]; verts[7] = height - border_width[ST_SIDE_BOTTOM];
} }
break; break;
cogl_framebuffer_draw_rectangles (fb, pipeline, verts, 4);
} }
cogl_rectangles (verts, n_rects);
} }
/* Once we've drawn the borders and corners, if the corners are bigger /* Once we've drawn the borders and corners, if the corners are bigger
@@ -1819,25 +1797,31 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
* necessary, then the main rectangle * necessary, then the main rectangle
*/ */
if (max_border_radius > border_width[ST_SIDE_TOP]) if (max_border_radius > border_width[ST_SIDE_TOP])
cogl_rectangle (MAX(max_border_radius, border_width[ST_SIDE_LEFT]), cogl_framebuffer_draw_rectangle (fb, pipeline,
border_width[ST_SIDE_TOP], MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]), border_width[ST_SIDE_TOP],
max_border_radius); width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
max_border_radius);
if (max_border_radius > border_width[ST_SIDE_BOTTOM]) if (max_border_radius > border_width[ST_SIDE_BOTTOM])
cogl_rectangle (MAX(max_border_radius, border_width[ST_SIDE_LEFT]), cogl_framebuffer_draw_rectangle (fb, pipeline,
height - max_border_radius, MAX(max_border_radius, border_width[ST_SIDE_LEFT]),
width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]), height - max_border_radius,
height - border_width[ST_SIDE_BOTTOM]); width - MAX(max_border_radius, border_width[ST_SIDE_RIGHT]),
height - border_width[ST_SIDE_BOTTOM]);
cogl_rectangle (border_width[ST_SIDE_LEFT], cogl_framebuffer_draw_rectangle (fb, pipeline,
MAX(border_width[ST_SIDE_TOP], max_border_radius), border_width[ST_SIDE_LEFT],
width - border_width[ST_SIDE_RIGHT], MAX(border_width[ST_SIDE_TOP], max_border_radius),
height - MAX(border_width[ST_SIDE_BOTTOM], max_border_radius)); width - border_width[ST_SIDE_RIGHT],
height - MAX(border_width[ST_SIDE_BOTTOM], max_border_radius));
cogl_object_unref (pipeline);
} }
} }
static void static void
st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state, st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
CoglFramebuffer *fb,
const ClutterActorBox *box, const ClutterActorBox *box,
guint8 paint_opacity) guint8 paint_opacity)
{ {
@@ -1943,16 +1927,14 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
right += xoffset; right += xoffset;
/* Setup pipeline */ /* Setup pipeline */
cogl_color_set_from_4ub (&color, cogl_color_init_from_4ub (&color,
box_shadow_spec->color.red * paint_opacity / 255, box_shadow_spec->color.red * paint_opacity / 255,
box_shadow_spec->color.green * paint_opacity / 255, box_shadow_spec->color.green * paint_opacity / 255,
box_shadow_spec->color.blue * paint_opacity / 255, box_shadow_spec->color.blue * paint_opacity / 255,
box_shadow_spec->color.alpha * paint_opacity / 255); box_shadow_spec->color.alpha * paint_opacity / 255);
cogl_color_premultiply (&color); cogl_color_premultiply (&color);
cogl_material_set_layer_combine_constant (state->box_shadow_material, 0, &color); cogl_pipeline_set_layer_combine_constant (state->box_shadow_pipeline, 0, &color);
cogl_set_source (state->box_shadow_material);
idx = 0; idx = 0;
@@ -2080,36 +2062,8 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
} }
} }
cogl_rectangles_with_texture_coords (rectangles, idx / 8); cogl_framebuffer_draw_textured_rectangles (fb, state->box_shadow_pipeline,
rectangles, idx / 4);
#if 0
/* Visual feedback on shadow's 9-slice and orignal offscreen buffer,
for debug purposes */
cogl_rectangle (xend, yoffset, xend + shadow_width, yoffset + shadow_height);
cogl_set_source_color4ub (0xff, 0x0, 0x0, 0xff);
cogl_rectangle (xoffset, top, xend, top + 1);
cogl_rectangle (xoffset, bottom, xend, bottom + 1);
cogl_rectangle (left, yoffset, left + 1, yend);
cogl_rectangle (right, yoffset, right + 1, yend);
cogl_rectangle (xend, yoffset, xend + shadow_width, yoffset + 1);
cogl_rectangle (xend, yoffset + shadow_height, xend + shadow_width, yoffset + shadow_height + 1);
cogl_rectangle (xend, yoffset, xend + 1, yoffset + shadow_height);
cogl_rectangle (xend + shadow_width, yoffset, xend + shadow_width + 1, yoffset + shadow_height);
s_top *= shadow_height;
s_bottom *= shadow_height;
s_left *= shadow_width;
s_right *= shadow_width;
cogl_rectangle (xend, yoffset + s_top, xend + shadow_width, yoffset + s_top + 1);
cogl_rectangle (xend, yoffset + s_bottom, xend + shadow_width, yoffset + s_bottom + 1);
cogl_rectangle (xend + s_left, yoffset, xend + s_left + 1, yoffset + shadow_height);
cogl_rectangle (xend + s_right, yoffset, xend + s_right + 1, yoffset + shadow_height);
#endif
} }
static void static void
@@ -2119,7 +2073,8 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
guint border_radius[4]; guint border_radius[4];
int max_borders[4]; int max_borders[4];
int center_radius, corner_id; int center_radius, corner_id;
CoglHandle buffer, offscreen; CoglTexture *buffer;
CoglOffscreen *offscreen;
/* Get infos from the node */ /* Get infos from the node */
if (state->alloc_width < node->box_shadow_min_width || if (state->alloc_width < node->box_shadow_min_width ||
@@ -2160,33 +2115,32 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
state->box_shadow_height, state->box_shadow_height,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
offscreen = cogl_offscreen_new_to_texture (buffer); offscreen = cogl_offscreen_new_with_texture (buffer);
if (offscreen != COGL_INVALID_HANDLE) if (offscreen != NULL)
{ {
CoglFramebuffer *fb = COGL_FRAMEBUFFER (offscreen);
ClutterActorBox box = { 0, 0, state->box_shadow_width, state->box_shadow_height}; ClutterActorBox box = { 0, 0, state->box_shadow_width, state->box_shadow_height};
CoglColor clear_color; CoglColor clear_color;
cogl_push_framebuffer (offscreen); cogl_framebuffer_orthographic (fb, 0, state->box_shadow_width, state->box_shadow_height, 0, 0, 1.0);
cogl_ortho (0, state->box_shadow_width, state->box_shadow_height, 0, 0, 1.0); cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
st_theme_node_paint_borders (state, fb, &box, 0xFF);
cogl_object_unref (offscreen);
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0); state->box_shadow_pipeline = _st_create_shadow_pipeline (st_theme_node_get_box_shadow (node),
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
st_theme_node_paint_borders (state, &box, 0xFF);
cogl_pop_framebuffer ();
cogl_handle_unref (offscreen);
state->box_shadow_material = _st_create_shadow_material (st_theme_node_get_box_shadow (node),
buffer); buffer);
} }
cogl_handle_unref (buffer);
cogl_object_unref (buffer);
} }
static void static void
st_theme_node_paint_sliced_border_image (StThemeNode *node, st_theme_node_paint_sliced_border_image (StThemeNode *node,
float width, float width,
float height, float height,
CoglFramebuffer *fb,
guint8 paint_opacity) guint8 paint_opacity)
{ {
gfloat ex, ey; gfloat ex, ey;
@@ -2194,7 +2148,7 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
gint border_left, border_right, border_top, border_bottom; gint border_left, border_right, border_top, border_bottom;
float img_width, img_height; float img_width, img_height;
StBorderImage *border_image; StBorderImage *border_image;
CoglHandle material; CoglPipeline *pipeline;
border_image = st_theme_node_get_border_image (node); border_image = st_theme_node_get_border_image (node);
g_assert (border_image != NULL); g_assert (border_image != NULL);
@@ -2218,11 +2172,8 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
if (ey < 0) if (ey < 0)
ey = border_bottom; /* FIXME ? */ ey = border_bottom; /* FIXME ? */
material = node->border_slices_material; pipeline = node->border_slices_pipeline;
cogl_material_set_color4ub (material, cogl_pipeline_set_color4ub (pipeline, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_set_source (material);
{ {
float rectangles[] = float rectangles[] =
@@ -2273,12 +2224,14 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
1.0, 1.0 1.0, 1.0
}; };
cogl_rectangles_with_texture_coords (rectangles, 9); cogl_framebuffer_draw_textured_rectangles (fb, pipeline,
rectangles, 9);
} }
} }
static void static void
st_theme_node_paint_outline (StThemeNode *node, st_theme_node_paint_outline (StThemeNode *node,
CoglFramebuffer *fb,
const ClutterActorBox *box, const ClutterActorBox *box,
guint8 paint_opacity) guint8 paint_opacity)
@@ -2287,6 +2240,7 @@ st_theme_node_paint_outline (StThemeNode *node,
int outline_width; int outline_width;
float rects[16]; float rects[16];
ClutterColor outline_color, effective_outline; ClutterColor outline_color, effective_outline;
CoglPipeline *pipeline;
width = box->x2 - box->x1; width = box->x2 - box->x1;
height = box->y2 - box->y1; height = box->y2 - box->y1;
@@ -2298,10 +2252,10 @@ st_theme_node_paint_outline (StThemeNode *node,
st_theme_node_get_outline_color (node, &outline_color); st_theme_node_get_outline_color (node, &outline_color);
over (&outline_color, &node->background_color, &effective_outline); over (&outline_color, &node->background_color, &effective_outline);
cogl_set_source_color4ub (effective_outline.red, pipeline = get_color_pipeline (effective_outline.red,
effective_outline.green, effective_outline.green,
effective_outline.blue, effective_outline.blue,
paint_opacity * effective_outline.alpha / 255); paint_opacity * effective_outline.alpha / 255);
/* The outline is drawn just outside the border, which means just /* The outline is drawn just outside the border, which means just
* outside the allocation box. This means that in some situations * outside the allocation box. This means that in some situations
@@ -2333,7 +2287,8 @@ st_theme_node_paint_outline (StThemeNode *node,
rects[14] = 0; rects[14] = 0;
rects[15] = height; rects[15] = height;
cogl_rectangles (rects, 4); cogl_framebuffer_draw_rectangles (fb, pipeline, rects, 16);
cogl_object_unref (pipeline);
} }
static gboolean static gboolean
@@ -2373,9 +2328,13 @@ st_theme_node_needs_new_box_shadow_for_size (StThemeNodePaintState *state,
return FALSE; return FALSE;
} }
/**
* st_theme_node_paint: (skip)
*/
void void
st_theme_node_paint (StThemeNode *node, st_theme_node_paint (StThemeNode *node,
StThemeNodePaintState *state, StThemeNodePaintState *state,
CoglFramebuffer *fb,
const ClutterActorBox *box, const ClutterActorBox *box,
guint8 paint_opacity) guint8 paint_opacity)
{ {
@@ -2441,24 +2400,26 @@ st_theme_node_paint (StThemeNode *node,
* such that it's aligned to the outside edges) * such that it's aligned to the outside edges)
*/ */
if (state->box_shadow_material) if (state->box_shadow_pipeline)
{ {
if (state->alloc_width < node->box_shadow_min_width || if (state->alloc_width < node->box_shadow_min_width ||
state->alloc_height < node->box_shadow_min_height) state->alloc_height < node->box_shadow_min_height)
_st_paint_shadow_with_opacity (node->box_shadow, _st_paint_shadow_with_opacity (node->box_shadow,
state->box_shadow_material, state->box_shadow_pipeline,
fb,
&allocation, &allocation,
paint_opacity); paint_opacity);
else else
st_theme_node_paint_sliced_shadow (state, st_theme_node_paint_sliced_shadow (state,
fb,
&allocation, &allocation,
paint_opacity); paint_opacity);
} }
if (state->prerendered_material != COGL_INVALID_HANDLE || if (state->prerendered_pipeline != NULL ||
st_theme_node_load_border_image (node)) st_theme_node_load_border_image (node))
{ {
if (state->prerendered_material != COGL_INVALID_HANDLE) if (state->prerendered_pipeline != NULL)
{ {
ClutterActorBox paint_box; ClutterActorBox paint_box;
@@ -2466,23 +2427,24 @@ st_theme_node_paint (StThemeNode *node,
&allocation, &allocation,
&paint_box); &paint_box);
paint_material_with_opacity (state->prerendered_material, cogl_pipeline_set_color4ub (state->prerendered_pipeline,
&paint_box, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
NULL, cogl_framebuffer_draw_rectangle (fb, state->prerendered_pipeline,
paint_opacity); paint_box.x1, paint_box.y1,
paint_box.x2, paint_box.y2);
} }
if (node->border_slices_material != COGL_INVALID_HANDLE) if (node->border_slices_pipeline != NULL)
st_theme_node_paint_sliced_border_image (node, width, height, paint_opacity); st_theme_node_paint_sliced_border_image (node, width, height, fb, paint_opacity);
} }
else else
{ {
st_theme_node_paint_borders (state, box, paint_opacity); st_theme_node_paint_borders (state, fb, box, paint_opacity);
} }
st_theme_node_paint_outline (node, box, paint_opacity); st_theme_node_paint_outline (node, fb, box, paint_opacity);
if (state->prerendered_material == COGL_INVALID_HANDLE && if (state->prerendered_pipeline == NULL &&
st_theme_node_load_background_image (node)) st_theme_node_load_background_image (node))
{ {
ClutterActorBox background_box; ClutterActorBox background_box;
@@ -2498,7 +2460,7 @@ st_theme_node_paint (StThemeNode *node,
get_background_position (node, &allocation, &background_box, &texture_coords); get_background_position (node, &allocation, &background_box, &texture_coords);
if (has_visible_outline || node->background_repeat) if (has_visible_outline || node->background_repeat)
cogl_clip_push_rectangle (allocation.x1, allocation.y1, allocation.x2, allocation.y2); cogl_framebuffer_push_rectangle_clip (fb, allocation.x1, allocation.y1, allocation.x2, allocation.y2);
/* CSS based drop shadows /* CSS based drop shadows
* *
@@ -2513,19 +2475,23 @@ st_theme_node_paint (StThemeNode *node,
* there is nothing (like a border, or the edge of the background color) * there is nothing (like a border, or the edge of the background color)
* to logically confine it. * to logically confine it.
*/ */
if (node->background_shadow_material != COGL_INVALID_HANDLE) if (node->background_shadow_pipeline != NULL)
_st_paint_shadow_with_opacity (node->background_image_shadow, _st_paint_shadow_with_opacity (node->background_image_shadow,
node->background_shadow_material, node->background_shadow_pipeline,
fb,
&background_box, &background_box,
paint_opacity); paint_opacity);
paint_material_with_opacity (node->background_material, cogl_pipeline_set_color4ub (node->background_pipeline,
&background_box, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
&texture_coords, cogl_framebuffer_draw_textured_rectangle (fb, node->background_pipeline,
paint_opacity); background_box.x1, background_box.y1,
background_box.x2, background_box.y2,
texture_coords.x1, texture_coords.x2,
texture_coords.y1, texture_coords.y2);
if (has_visible_outline || node->background_repeat) if (has_visible_outline || node->background_repeat)
cogl_clip_pop (); cogl_framebuffer_pop_clip (fb);
} }
} }
@@ -2535,16 +2501,11 @@ st_theme_node_paint_state_node_free_internal (StThemeNodePaintState *state,
{ {
int corner_id; int corner_id;
if (state->prerendered_texture != COGL_INVALID_HANDLE) g_clear_pointer (&state->prerendered_texture, cogl_object_unref);
cogl_handle_unref (state->prerendered_texture); g_clear_pointer (&state->prerendered_pipeline, cogl_object_unref);
if (state->prerendered_material != COGL_INVALID_HANDLE) g_clear_pointer (&state->box_shadow_pipeline, cogl_object_unref);
cogl_handle_unref (state->prerendered_material);
if (state->box_shadow_material != COGL_INVALID_HANDLE)
cogl_handle_unref (state->box_shadow_material);
for (corner_id = 0; corner_id < 4; corner_id++) for (corner_id = 0; corner_id < 4; corner_id++)
if (state->corner_material[corner_id] != COGL_INVALID_HANDLE) g_clear_pointer (&state->corner_pipeline[corner_id], cogl_object_unref);
cogl_handle_unref (state->corner_material[corner_id]);
if (unref_node) if (unref_node)
st_theme_node_paint_state_set_node (state, NULL); st_theme_node_paint_state_set_node (state, NULL);
@@ -2587,12 +2548,11 @@ st_theme_node_paint_state_init (StThemeNodePaintState *state)
state->alloc_width = 0; state->alloc_width = 0;
state->alloc_height = 0; state->alloc_height = 0;
state->node = NULL; state->node = NULL;
state->box_shadow_material = COGL_INVALID_HANDLE; state->box_shadow_pipeline = NULL;
state->prerendered_texture = COGL_INVALID_HANDLE; state->prerendered_texture = NULL;
state->prerendered_material = COGL_INVALID_HANDLE; state->prerendered_pipeline = NULL;
for (corner_id = 0; corner_id < 4; corner_id++) for (corner_id = 0; corner_id < 4; corner_id++)
state->corner_material[corner_id] = COGL_INVALID_HANDLE; state->corner_pipeline[corner_id] = NULL;
} }
void void
@@ -2613,15 +2573,15 @@ st_theme_node_paint_state_copy (StThemeNodePaintState *state,
state->box_shadow_width = other->box_shadow_width; state->box_shadow_width = other->box_shadow_width;
state->box_shadow_height = other->box_shadow_height; state->box_shadow_height = other->box_shadow_height;
if (other->box_shadow_material) if (other->box_shadow_pipeline)
state->box_shadow_material = cogl_handle_ref (other->box_shadow_material); state->box_shadow_pipeline = cogl_object_ref (other->box_shadow_pipeline);
if (other->prerendered_texture) if (other->prerendered_texture)
state->prerendered_texture = cogl_handle_ref (other->prerendered_texture); state->prerendered_texture = cogl_object_ref (other->prerendered_texture);
if (other->prerendered_material) if (other->prerendered_pipeline)
state->prerendered_material = cogl_handle_ref (other->prerendered_material); state->prerendered_pipeline = cogl_object_ref (other->prerendered_pipeline);
for (corner_id = 0; corner_id < 4; corner_id++) for (corner_id = 0; corner_id < 4; corner_id++)
if (other->corner_material[corner_id]) if (other->corner_pipeline[corner_id])
state->corner_material[corner_id] = cogl_handle_ref (other->corner_material[corner_id]); state->corner_pipeline[corner_id] = cogl_object_ref (other->corner_pipeline[corner_id]);
} }
void void

View File

@@ -105,11 +105,11 @@ struct _StThemeNode {
int box_shadow_min_width; int box_shadow_min_width;
int box_shadow_min_height; int box_shadow_min_height;
CoglHandle border_slices_texture; CoglTexture *border_slices_texture;
CoglHandle border_slices_material; CoglPipeline *border_slices_pipeline;
CoglHandle background_texture; CoglTexture *background_texture;
CoglHandle background_material; CoglPipeline *background_pipeline;
CoglHandle background_shadow_material; CoglPipeline *background_shadow_pipeline;
StThemeNodePaintState cached_state; StThemeNodePaintState cached_state;
}; };

View File

@@ -36,13 +36,13 @@ struct _StThemeNodeTransitionPrivate {
StThemeNodePaintState old_paint_state; StThemeNodePaintState old_paint_state;
StThemeNodePaintState new_paint_state; StThemeNodePaintState new_paint_state;
CoglHandle old_texture; CoglTexture *old_texture;
CoglHandle new_texture; CoglTexture *new_texture;
CoglHandle old_offscreen; CoglOffscreen *old_offscreen;
CoglHandle new_offscreen; CoglOffscreen *new_offscreen;
CoglHandle material; CoglPipeline *pipeline;
ClutterTimeline *timeline; ClutterTimeline *timeline;
@@ -237,9 +237,10 @@ setup_framebuffers (StThemeNodeTransition *transition,
StThemeNodeTransitionPrivate *priv = transition->priv; StThemeNodeTransitionPrivate *priv = transition->priv;
CoglColor clear_color = { 0, 0, 0, 0 }; CoglColor clear_color = { 0, 0, 0, 0 };
guint width, height; guint width, height;
CoglFramebuffer *fb;
/* template material to avoid unnecessary shader compilation */ /* template pipeline to avoid unnecessary shader compilation */
static CoglHandle material_template = COGL_INVALID_HANDLE; static CoglPipeline *pipeline_template = NULL;
width = priv->offscreen_box.x2 - priv->offscreen_box.x1; width = priv->offscreen_box.x2 - priv->offscreen_box.x1;
height = priv->offscreen_box.y2 - priv->offscreen_box.y1; height = priv->offscreen_box.y2 - priv->offscreen_box.y1;
@@ -248,77 +249,72 @@ setup_framebuffers (StThemeNodeTransition *transition,
g_return_val_if_fail (height > 0, FALSE); g_return_val_if_fail (height > 0, FALSE);
if (priv->old_texture) if (priv->old_texture)
cogl_handle_unref (priv->old_texture); cogl_object_unref (priv->old_texture);
priv->old_texture = cogl_texture_new_with_size (width, height, priv->old_texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
if (priv->new_texture) if (priv->new_texture)
cogl_handle_unref (priv->new_texture); cogl_object_unref (priv->new_texture);
priv->new_texture = cogl_texture_new_with_size (width, height, priv->new_texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
g_return_val_if_fail (priv->old_texture != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->old_texture != NULL, FALSE);
g_return_val_if_fail (priv->new_texture != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->new_texture != NULL, FALSE);
if (priv->old_offscreen) if (priv->old_offscreen)
cogl_handle_unref (priv->old_offscreen); cogl_object_unref (priv->old_offscreen);
priv->old_offscreen = cogl_offscreen_new_to_texture (priv->old_texture); priv->old_offscreen = cogl_offscreen_new_with_texture (priv->old_texture);
if (priv->new_offscreen) if (priv->new_offscreen)
cogl_handle_unref (priv->new_offscreen); cogl_object_unref (priv->new_offscreen);
priv->new_offscreen = cogl_offscreen_new_to_texture (priv->new_texture); priv->new_offscreen = cogl_offscreen_new_with_texture (priv->new_texture);
g_return_val_if_fail (priv->old_offscreen != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->old_offscreen != NULL, FALSE);
g_return_val_if_fail (priv->new_offscreen != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->new_offscreen != NULL, FALSE);
if (priv->material == NULL) if (priv->pipeline == NULL)
{ {
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE)) if (G_UNLIKELY (pipeline_template == NULL))
{ {
material_template = cogl_material_new (); CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
cogl_material_set_layer_combine (material_template, 0, pipeline_template = cogl_pipeline_new (ctx);
"RGBA = REPLACE (TEXTURE)",
NULL); cogl_pipeline_set_layer_combine (pipeline_template, 0, "RGBA = REPLACE (TEXTURE)", NULL);
cogl_material_set_layer_combine (material_template, 1, cogl_pipeline_set_layer_combine (pipeline_template, 1, "RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])", NULL);
"RGBA = INTERPOLATE (PREVIOUS, " cogl_pipeline_set_layer_combine (pipeline_template, 2, "RGBA = MODULATE (PREVIOUS, PRIMARY)", NULL);
"TEXTURE, "
"CONSTANT[A])",
NULL);
cogl_material_set_layer_combine (material_template, 2,
"RGBA = MODULATE (PREVIOUS, "
"PRIMARY)",
NULL);
} }
priv->material = cogl_material_copy (material_template); priv->pipeline = cogl_pipeline_copy (pipeline_template);
} }
cogl_material_set_layer (priv->material, 0, priv->new_texture); cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->new_texture);
cogl_material_set_layer (priv->material, 1, priv->old_texture); cogl_pipeline_set_layer_texture (priv->pipeline, 1, priv->old_texture);
cogl_push_framebuffer (priv->old_offscreen); fb = COGL_FRAMEBUFFER (priv->old_offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR); cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2, cogl_framebuffer_orthographic (fb,
priv->offscreen_box.y2, priv->offscreen_box.y1, priv->offscreen_box.x1, priv->offscreen_box.x2,
0.0, 1.0); priv->offscreen_box.y2, priv->offscreen_box.y1,
st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, allocation, 255); 0.0, 1.0);
cogl_pop_framebuffer (); st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, fb, allocation, 255);
cogl_push_framebuffer (priv->new_offscreen); fb = COGL_FRAMEBUFFER (priv->new_offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR); cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2, cogl_framebuffer_orthographic (fb,
priv->offscreen_box.y2, priv->offscreen_box.y1, priv->offscreen_box.x1, priv->offscreen_box.x2,
0.0, 1.0); priv->offscreen_box.y2, priv->offscreen_box.y1,
st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, allocation, 255); 0.0, 1.0);
cogl_pop_framebuffer (); st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, fb, allocation, 255);
return TRUE; return TRUE;
} }
void void
st_theme_node_transition_paint (StThemeNodeTransition *transition, st_theme_node_transition_paint (StThemeNodeTransition *transition,
CoglFramebuffer *fb,
ClutterActorBox *allocation, ClutterActorBox *allocation,
guint8 paint_opacity) guint8 paint_opacity)
{ {
@@ -347,20 +343,20 @@ st_theme_node_transition_paint (StThemeNodeTransition *transition,
return; return;
} }
cogl_color_set_from_4f (&constant, 0., 0., 0., cogl_color_init_from_4f (&constant, 0., 0., 0.,
clutter_timeline_get_progress (priv->timeline)); clutter_timeline_get_progress (priv->timeline));
cogl_material_set_layer_combine_constant (priv->material, 1, &constant); cogl_pipeline_set_layer_combine_constant (priv->pipeline, 1, &constant);
cogl_material_set_color4ub (priv->material, cogl_pipeline_set_color4ub (priv->pipeline,
paint_opacity, paint_opacity, paint_opacity, paint_opacity,
paint_opacity, paint_opacity); paint_opacity, paint_opacity);
cogl_set_source (priv->material); cogl_framebuffer_draw_multitextured_rectangle (fb, priv->pipeline,
cogl_rectangle_with_multitexture_coords (priv->offscreen_box.x1, priv->offscreen_box.x1,
priv->offscreen_box.y1, priv->offscreen_box.y1,
priv->offscreen_box.x2, priv->offscreen_box.x2,
priv->offscreen_box.y2, priv->offscreen_box.y2,
tex_coords, 8); tex_coords, 8);
} }
static void static void
@@ -368,47 +364,16 @@ st_theme_node_transition_dispose (GObject *object)
{ {
StThemeNodeTransitionPrivate *priv = ST_THEME_NODE_TRANSITION (object)->priv; StThemeNodeTransitionPrivate *priv = ST_THEME_NODE_TRANSITION (object)->priv;
if (priv->old_theme_node) g_clear_object (&priv->old_theme_node);
{ g_clear_object (&priv->new_theme_node);
g_object_unref (priv->old_theme_node);
priv->old_theme_node = NULL;
}
if (priv->new_theme_node) g_clear_pointer (&priv->old_texture, cogl_object_unref);
{ g_clear_pointer (&priv->new_texture, cogl_object_unref);
g_object_unref (priv->new_theme_node);
priv->new_theme_node = NULL;
}
if (priv->old_texture) g_clear_pointer (&priv->old_offscreen, cogl_object_unref);
{ g_clear_pointer (&priv->new_offscreen, cogl_object_unref);
cogl_handle_unref (priv->old_texture);
priv->old_texture = NULL;
}
if (priv->new_texture) g_clear_pointer (&priv->pipeline, cogl_object_unref);
{
cogl_handle_unref (priv->new_texture);
priv->new_texture = NULL;
}
if (priv->old_offscreen)
{
cogl_handle_unref (priv->old_offscreen);
priv->old_offscreen = NULL;
}
if (priv->new_offscreen)
{
cogl_handle_unref (priv->new_offscreen);
priv->new_offscreen = NULL;
}
if (priv->material)
{
cogl_handle_unref (priv->material);
priv->material = NULL;
}
if (priv->timeline) if (priv->timeline)
{ {

View File

@@ -63,6 +63,7 @@ void st_theme_node_transition_update (StThemeNodeTransition *transition,
StThemeNode *new_node); StThemeNode *new_node);
void st_theme_node_transition_paint (StThemeNodeTransition *transition, void st_theme_node_transition_paint (StThemeNodeTransition *transition,
CoglFramebuffer *fb,
ClutterActorBox *allocation, ClutterActorBox *allocation,
guint8 paint_opacity); guint8 paint_opacity);

View File

@@ -49,11 +49,6 @@ static void
st_theme_node_init (StThemeNode *node) st_theme_node_init (StThemeNode *node)
{ {
node->transition_duration = -1; node->transition_duration = -1;
node->background_texture = COGL_INVALID_HANDLE;
node->background_material = COGL_INVALID_HANDLE;
node->background_shadow_material = COGL_INVALID_HANDLE;
node->border_slices_texture = COGL_INVALID_HANDLE;
node->border_slices_material = COGL_INVALID_HANDLE;
st_theme_node_paint_state_init (&node->cached_state); st_theme_node_paint_state_init (&node->cached_state);
} }
@@ -160,16 +155,11 @@ st_theme_node_finalize (GObject *object)
if (node->background_image) if (node->background_image)
g_free (node->background_image); g_free (node->background_image);
if (node->background_texture != COGL_INVALID_HANDLE) g_clear_pointer (&node->background_texture, cogl_object_unref);
cogl_handle_unref (node->background_texture); g_clear_pointer (&node->background_pipeline, cogl_object_unref);
if (node->background_material != COGL_INVALID_HANDLE) g_clear_pointer (&node->background_shadow_pipeline, cogl_object_unref);
cogl_handle_unref (node->background_material); g_clear_pointer (&node->border_slices_texture, cogl_object_unref);
if (node->background_shadow_material != COGL_INVALID_HANDLE) g_clear_pointer (&node->border_slices_pipeline, cogl_object_unref);
cogl_handle_unref (node->background_shadow_material);
if (node->border_slices_texture != COGL_INVALID_HANDLE)
cogl_handle_unref (node->border_slices_texture);
if (node->border_slices_material != COGL_INVALID_HANDLE)
cogl_handle_unref (node->border_slices_material);
G_OBJECT_CLASS (st_theme_node_parent_class)->finalize (object); G_OBJECT_CLASS (st_theme_node_parent_class)->finalize (object);
} }

View File

@@ -105,10 +105,10 @@ struct _StThemeNodePaintState {
float box_shadow_width; float box_shadow_width;
float box_shadow_height; float box_shadow_height;
CoglHandle box_shadow_material; CoglPipeline *box_shadow_pipeline;
CoglHandle prerendered_texture; CoglTexture *prerendered_texture;
CoglHandle prerendered_material; CoglPipeline *prerendered_pipeline;
CoglHandle corner_material[4]; CoglPipeline *corner_pipeline[4];
}; };
GType st_theme_node_get_type (void) G_GNUC_CONST; GType st_theme_node_get_type (void) G_GNUC_CONST;
@@ -268,6 +268,7 @@ gboolean st_theme_node_paint_equal (StThemeNode *node,
void st_theme_node_paint (StThemeNode *node, void st_theme_node_paint (StThemeNode *node,
StThemeNodePaintState *state, StThemeNodePaintState *state,
CoglFramebuffer *fb,
const ClutterActorBox *box, const ClutterActorBox *box,
guint8 paint_opacity); guint8 paint_opacity);

View File

@@ -465,6 +465,7 @@ st_widget_paint_background (StWidget *widget)
StThemeNode *theme_node; StThemeNode *theme_node;
ClutterActorBox allocation; ClutterActorBox allocation;
guint8 opacity; guint8 opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
theme_node = st_widget_get_theme_node (widget); theme_node = st_widget_get_theme_node (widget);
@@ -474,11 +475,13 @@ st_widget_paint_background (StWidget *widget)
if (widget->priv->transition_animation) if (widget->priv->transition_animation)
st_theme_node_transition_paint (widget->priv->transition_animation, st_theme_node_transition_paint (widget->priv->transition_animation,
fb,
&allocation, &allocation,
opacity); opacity);
else else
st_theme_node_paint (theme_node, st_theme_node_paint (theme_node,
current_paint_state (widget), current_paint_state (widget),
fb,
&allocation, &allocation,
opacity); opacity);
} }