Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
719a8908a6 | |||
fed007ecae | |||
990443465f | |||
1f183b8a4e | |||
96556eb959 | |||
3ffeeac577 | |||
d7929a2340 | |||
667019a8c1 | |||
d9b46b4782 | |||
e249218a9d | |||
a2b1946b01 | |||
96a80f7ba0 | |||
9955fbf4f8 | |||
14966b0cd0 | |||
6e1a8f16a8 | |||
d106191e6a | |||
418cf6281e | |||
bdeb7d86b6 | |||
a0e0cc1038 | |||
78f6dec73b | |||
f6458f215f | |||
c7e0d547c4 | |||
fa54cfa0c3 | |||
31ea3f737c | |||
2a8a8065a8 | |||
d3ba002313 | |||
f18fd8d959 | |||
d54f7b13fb | |||
9c8b75206c | |||
15273c7f22 | |||
0ea8217c55 | |||
1735f28f5a | |||
8de4070f7f | |||
45e64f453f | |||
62dc5f2ac6 | |||
86c85a752e | |||
3de0ebf7fd | |||
1496ba0bbd | |||
f5974f6793 | |||
928ea3bb01 | |||
b7acb1d488 | |||
360d94dd67 | |||
671a813135 | |||
c005417f9b | |||
b5ec68bda3 | |||
b4ed29094d | |||
284ab031b8 | |||
6ad5064c09 | |||
3a8e723a36 | |||
dd3484b93f |
30
NEWS
30
NEWS
@ -1,3 +1,33 @@
|
||||
3.7.1
|
||||
=====
|
||||
* Add shortcut to open application view directly [Jeremy; #685738]
|
||||
* Expose '<Super>F10' shortcut in System Settings [Florian; #672909]
|
||||
* Clean up timestamp format in chat notifications [Carlos; #680989]
|
||||
* loginScreen: Add support for 'disable-restart-buttons' [Florian; #686247]
|
||||
* Update textures automatically on file changes [Florian; #679268]
|
||||
* Implement org.gnome.ScreenSaver.GetActiveTime [Giovanni; #686064]
|
||||
* Add missing translations for GSetting schema [Giovanni; #686413]
|
||||
* Hide workspace switcher completely when it's not necessary [Seif; #686483]
|
||||
* Explicitly load gnome-screensaver when not running GDM [Tim; #683060]
|
||||
* Port to GnomeIdleMonitor [Jasper; #682224]
|
||||
* Set Empathy as preferred handler when delegating channels [Xavier; #686296]
|
||||
* Allow testing GDM login dialog from the session [Giovanni; #683725]
|
||||
* Use all available space for windows in window picker [Jasper, Pierre-Eric;
|
||||
#582650]
|
||||
* Use logind for suspend if available [Florian; #686482]
|
||||
* Misc. fixes and cleanups [Jasper, Florian, Adel, Rui; #677426, #680426,
|
||||
#686233, #686241, #686318, #686240, #686484, #686002, #684650, #686487]
|
||||
|
||||
Contributors:
|
||||
Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Adel Gadllah, Seif Lotfy,
|
||||
Tim Lunn, Rui Matos, Florian Müllner, Pierre-Eric Pelloux-Prayer,
|
||||
Carlos Soriano, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Andika Triwidada [id], Matej Urbančič [sl], Ihar Hrachyshka [be],
|
||||
Daniel Mustieles [es], Fran Diéguez [gl], Takayuki KUSANO [ja],
|
||||
Мирослав Николић [sr, sr@latin], Dušan Kazik [sk], Tom Tryfonidis [el]
|
||||
|
||||
3.6.1
|
||||
=====
|
||||
* dash: Make padding even on the top/bottom of the dash [Jasper; #684619]
|
||||
|
@ -153,8 +153,6 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
||||
/* global initialization routine, called once when plugin
|
||||
is loaded */
|
||||
|
||||
g_type_init ();
|
||||
|
||||
g_debug ("plugin loaded");
|
||||
|
||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||
|
10
configure.ac
10
configure.ac
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.6.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.7.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -63,9 +63,9 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
CLUTTER_MIN_VERSION=1.11.11
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.33.2
|
||||
MUTTER_MIN_VERSION=3.6.1
|
||||
MUTTER_MIN_VERSION=3.7.1
|
||||
GTK_MIN_VERSION=3.3.9
|
||||
GIO_MIN_VERSION=2.31.6
|
||||
GIO_MIN_VERSION=2.35.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
LIBEDATASERVER_MIN_VERSION=3.5.3
|
||||
LIBEDATASERVERUI_MIN_VERSION=3.5.3
|
||||
@ -74,7 +74,7 @@ TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||
POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
GCR_MIN_VERSION=3.3.90
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.7.1
|
||||
GNOME_MENUS_REQUIRED_VERSION=3.5.3
|
||||
|
||||
# Collect more than 20 libraries for a prize!
|
||||
@ -120,7 +120,7 @@ CFLAGS=$saved_CFLAGS
|
||||
LIBS=$saved_LIBS
|
||||
|
||||
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 x11)
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
|
||||
|
@ -8,5 +8,11 @@
|
||||
<KeyListEntry name="toggle-message-tray"
|
||||
_description="Show the message tray"/>
|
||||
|
||||
<KeyListEntry name="toggle-application-view"
|
||||
_description="Show all applications"/>
|
||||
|
||||
<KeyListEntry name="open-application-menu"
|
||||
_description="Open the application menu"/>
|
||||
|
||||
</KeyListEntries>
|
||||
|
||||
|
@ -83,6 +83,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
Keybinding to open the application menu.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="toggle-application-view" type="as">
|
||||
<default>["<Super>a"]</default>
|
||||
<_summary>Keybinding to open the "Show Applications" view</_summary>
|
||||
<_description>
|
||||
Keybinding to open the "Show Applications" view of the Activities
|
||||
Overview.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="toggle-message-tray" type="as">
|
||||
<default>["<Super>m"]</default>
|
||||
<_summary>Keybinding to toggle the visibility of the message tray</_summary>
|
||||
@ -148,47 +156,48 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/">
|
||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="attach-modal-dialogs" type="b">
|
||||
<default>true</default>
|
||||
<summary>Attach modal dialog to the parent window</summary>
|
||||
<description>
|
||||
<_summary>Attach modal dialog to the parent window</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running
|
||||
GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="button-layout" type="s">
|
||||
<default>":close"</default>
|
||||
<summary>Arrangement of buttons on the titlebar</summary>
|
||||
<description>
|
||||
<_summary>Arrangement of buttons on the titlebar</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.desktop.wm.preferences when
|
||||
running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="edge-tiling" type="b">
|
||||
<default>true</default>
|
||||
<summary>Enable edge tiling when dropping windows on screen edges</summary>
|
||||
<description>
|
||||
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="dynamic-workspaces" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces are managed dynamically</summary>
|
||||
<description>
|
||||
<_summary>Workspaces are managed dynamically</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="workspaces-only-on-primary" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces only on primary monitor</summary>
|
||||
<description>
|
||||
<_summary>Workspaces only on primary monitor</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="focus-change-on-pointer-rest" type="b">
|
||||
|
@ -569,7 +569,7 @@ StScrollBar StButton#vhandle:active {
|
||||
/* Overview */
|
||||
|
||||
#overview {
|
||||
spacing: 12px;
|
||||
spacing: 40px;
|
||||
}
|
||||
|
||||
.window-caption {
|
||||
@ -633,13 +633,18 @@ StScrollBar StButton#vhandle:active {
|
||||
* adjust down 8px */
|
||||
|
||||
-shell-close-overlap-x: 15px;
|
||||
-shell-close-overlap-y: 12px;
|
||||
-shell-close-overlap-y: -12px;
|
||||
}
|
||||
|
||||
.window-close:rtl {
|
||||
-st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.window-picker {
|
||||
-horizontal-spacing: 40px;
|
||||
-vertical-spacing: 40px;
|
||||
}
|
||||
|
||||
/* Dash */
|
||||
|
||||
#dash {
|
||||
|
@ -638,6 +638,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._userManager = AccountsService.UserManager.get_default()
|
||||
this._greeterClient = new Gdm.Client();
|
||||
|
||||
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
||||
this._greeter = this._greeterClient.get_greeter_sync(null);
|
||||
|
||||
this._greeter.connect('default-session-name-changed',
|
||||
@ -647,6 +648,7 @@ const LoginDialog = new Lang.Class({
|
||||
Lang.bind(this, this._onSessionOpened));
|
||||
this._greeter.connect('timed-login-requested',
|
||||
Lang.bind(this, this._onTimedLoginRequested));
|
||||
}
|
||||
|
||||
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
|
||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
|
||||
|
@ -18,11 +18,12 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
|
||||
const GdmUtil = imports.gdm.util;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
@ -33,15 +34,14 @@ const PowerMenuButton = new Lang.Class({
|
||||
_init: function() {
|
||||
/* Translators: accessible name of the power menu in the login screen */
|
||||
this.parent('system-shutdown-symbolic', _("Power"));
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
|
||||
this._createSubMenu();
|
||||
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||
this._settings.connect('changed::disable-restart-buttons',
|
||||
Lang.bind(this, this._updateVisibility));
|
||||
|
||||
this._upClient.connect('notify::can-suspend',
|
||||
Lang.bind(this, this._updateHaveSuspend));
|
||||
this._updateHaveSuspend();
|
||||
this._createSubMenu();
|
||||
|
||||
// ConsoleKit doesn't send notifications when shutdown/reboot
|
||||
// are disabled, so we update the menu item each time the menu opens
|
||||
@ -50,15 +50,17 @@ const PowerMenuButton = new Lang.Class({
|
||||
if (open) {
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveRestart();
|
||||
this._updateHaveSuspend();
|
||||
}
|
||||
}));
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveRestart();
|
||||
this._updateHaveSuspend();
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
||||
this.actor.visible = shouldBeVisible;
|
||||
this.actor.visible = shouldBeVisible && !this._settings.get_boolean('disable-restart-buttons');
|
||||
},
|
||||
|
||||
_updateHaveShutdown: function() {
|
||||
@ -78,9 +80,11 @@ const PowerMenuButton = new Lang.Class({
|
||||
},
|
||||
|
||||
_updateHaveSuspend: function() {
|
||||
this._haveSuspend = this._upClient.get_can_suspend();
|
||||
this._loginManager.canSuspend(Lang.bind(this, function(result) {
|
||||
this._haveSuspend = result;
|
||||
this._suspendItem.actor.visible = this._haveSuspend;
|
||||
this._updateVisibility();
|
||||
}));
|
||||
},
|
||||
|
||||
_createSubMenu: function() {
|
||||
@ -103,8 +107,10 @@ const PowerMenuButton = new Lang.Class({
|
||||
},
|
||||
|
||||
_onActivateSuspend: function() {
|
||||
if (this._haveSuspend)
|
||||
this._upClient.suspend_sync(null);
|
||||
if (!this._haveSuspend)
|
||||
return;
|
||||
|
||||
this._loginManager.suspend();
|
||||
},
|
||||
|
||||
_onActivateRestart: function() {
|
||||
|
@ -3,7 +3,9 @@
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
|
||||
const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
|
||||
<method name='PowerOff'>
|
||||
@ -12,12 +14,18 @@ const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager
|
||||
<method name='Reboot'>
|
||||
<arg type='b' direction='in'/>
|
||||
</method>
|
||||
<method name='Suspend'>
|
||||
<arg type='b' direction='in'/>
|
||||
</method>
|
||||
<method name='CanPowerOff'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
<method name='CanReboot'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
<method name='CanSuspend'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
</interface>;
|
||||
|
||||
const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
|
||||
@ -123,12 +131,25 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
this._proxy.CanSuspendRemote(function(result, error) {
|
||||
if (error)
|
||||
asyncCallback(false);
|
||||
else
|
||||
asyncCallback(result[0] != 'no');
|
||||
});
|
||||
},
|
||||
|
||||
powerOff: function() {
|
||||
this._proxy.PowerOffRemote(true);
|
||||
},
|
||||
|
||||
reboot: function() {
|
||||
this._proxy.RebootRemote(true);
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
this._proxy.SuspendRemote(true);
|
||||
}
|
||||
});
|
||||
|
||||
@ -139,6 +160,7 @@ const LoginManagerConsoleKit = new Lang.Class({
|
||||
this._proxy = new ConsoleKitManager(Gio.DBus.system,
|
||||
'org.freedesktop.ConsoleKit',
|
||||
'/org/freedesktop/ConsoleKit/Manager');
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
},
|
||||
|
||||
// Having this function is a bit of a hack since the Systemd and ConsoleKit
|
||||
@ -186,12 +208,22 @@ const LoginManagerConsoleKit = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
Mainloop.idle_add(Lang.bind(this, function() {
|
||||
asyncCallback(this._upClient.get_can_suspend());
|
||||
return false;
|
||||
}));
|
||||
},
|
||||
|
||||
powerOff: function() {
|
||||
this._proxy.StopRemote();
|
||||
},
|
||||
|
||||
reboot: function() {
|
||||
this._proxy.RestartRemote();
|
||||
}
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
this._upClient.suspend_sync(null);
|
||||
}
|
||||
});
|
||||
|
@ -45,14 +45,12 @@ function isMountRootHidden(root) {
|
||||
}
|
||||
|
||||
function isMountNonLocal(mount) {
|
||||
// If the mount doesn't have an associated volume, that means it could
|
||||
// be a remote filesystem. For certain kinds of local filesystems,
|
||||
// like digital cameras and music players, there's no associated
|
||||
// gvfs volume, so err on the side of caution and assume it's a local
|
||||
// filesystem to allow the prompt.
|
||||
// If the mount doesn't have an associated volume, that means it's
|
||||
// an uninteresting filesystem. Most devices that we care about will
|
||||
// have a mount, like media players and USB sticks.
|
||||
let volume = mount.get_volume();
|
||||
if (volume == null)
|
||||
return false;
|
||||
return true;
|
||||
|
||||
return (volume.get_identifier("class") == "network");
|
||||
}
|
||||
@ -546,9 +544,8 @@ const AutorunTransientSource = new Lang.Class({
|
||||
this.notify(this._notification);
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ gicon: this.mount.get_icon(),
|
||||
icon_size: size });
|
||||
getIcon: function() {
|
||||
return this.mount.get_icon();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -509,51 +509,42 @@ const ChatSource = new Lang.Class({
|
||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
this._iconBox = new St.Bin({ style_class: 'avatar-box' });
|
||||
this._iconBox._size = size;
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
getIcon: function() {
|
||||
let file = this._contact.get_avatar_file();
|
||||
|
||||
if (file) {
|
||||
let uri = file.get_uri();
|
||||
this._iconBox.child = textureCache.load_uri_async(uri, this._iconBox._size, this._iconBox._size);
|
||||
return new Gio.FileIcon({ file: file });
|
||||
} else {
|
||||
this._iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||
icon_size: this._iconBox._size });
|
||||
return new Gio.ThemedIcon({ name: 'avatar-default' });
|
||||
}
|
||||
|
||||
return this._iconBox;
|
||||
},
|
||||
|
||||
createSecondaryIcon: function() {
|
||||
let iconBox = new St.Bin();
|
||||
iconBox.child = new St.Icon({ style_class: 'secondary-icon' });
|
||||
getSecondaryIcon: function() {
|
||||
let iconName;
|
||||
let presenceType = this._contact.get_presence_type();
|
||||
|
||||
switch (presenceType) {
|
||||
case Tp.ConnectionPresenceType.AVAILABLE:
|
||||
iconBox.child.icon_name = 'user-available';
|
||||
iconName = 'user-available';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.BUSY:
|
||||
iconBox.child.icon_name = 'user-busy';
|
||||
iconName = 'user-busy';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.OFFLINE:
|
||||
iconBox.child.icon_name = 'user-offline';
|
||||
iconName = 'user-offline';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.HIDDEN:
|
||||
iconBox.child.icon_name = 'user-invisible';
|
||||
iconName = 'user-invisible';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.AWAY:
|
||||
iconBox.child.icon_name = 'user-away';
|
||||
iconName = 'user-away';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.EXTENDED_AWAY:
|
||||
iconBox.child.icon_name = 'user-idle';
|
||||
iconName = 'user-idle';
|
||||
break;
|
||||
default:
|
||||
iconBox.child.icon_name = 'user-offline';
|
||||
iconName = 'user-offline';
|
||||
}
|
||||
return iconBox;
|
||||
return new Gio.ThemedIcon({ name: iconName });
|
||||
},
|
||||
|
||||
_updateAvatarIcon: function() {
|
||||
@ -564,7 +555,9 @@ const ChatSource = new Lang.Class({
|
||||
open: function(notification) {
|
||||
if (this._client.is_handling_channel(this._channel)) {
|
||||
// We are handling the channel, try to pass it to Empathy
|
||||
this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null);
|
||||
this._client.delegate_channels_async([this._channel],
|
||||
global.get_current_time(),
|
||||
'org.freedesktop.Telepathy.Client.Empathy.Chat', null);
|
||||
}
|
||||
else {
|
||||
// We are not the handler, just ask to present the channel
|
||||
@ -733,7 +726,7 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
title = GLib.markup_escape_text(this.title, -1);
|
||||
|
||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryIcon: this.createSecondaryIcon() });
|
||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
|
||||
|
||||
if (message)
|
||||
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||
@ -761,7 +754,7 @@ const ChatNotification = new Lang.Class({
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source) {
|
||||
this.parent(source, source.title, null, { customContent: true, secondaryIcon: source.createSecondaryIcon() });
|
||||
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
|
||||
this.setResident(true);
|
||||
|
||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||
@ -939,24 +932,32 @@ const ChatNotification = new Lang.Class({
|
||||
|
||||
let format;
|
||||
|
||||
// Show a week day and time if date is in the last week
|
||||
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
|
||||
/* Translators: this is a time format string followed by a date.
|
||||
If applicable, replace %X with a strftime format valid for your
|
||||
locale, without seconds. */
|
||||
// Show only the hour if date is on today
|
||||
if(daysAgo < 1){
|
||||
format = "<b>%H:%M</b>";
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is a time format string followed by the word "Yesterday". i.e. "14:30 on Yesterday"*/
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent at <b>%X</b> on <b>%A</b>");
|
||||
format = _("<b>%H:%M</b> on Yesterday");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is a time format string followed by a week day name. i.e. "14:30 on Monday*/
|
||||
// xgettext:no-c-format
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>");
|
||||
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
shown when you get a chat message in the same year. */
|
||||
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25",
|
||||
shown when you get a chat message in the same year */
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>");
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>");
|
||||
} else {
|
||||
/* Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||
shown when you get a chat message in a different year. */
|
||||
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25, 2012",
|
||||
shown when you get a chat message in a different year */
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>, %Y");
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>, %Y");
|
||||
}
|
||||
|
||||
return date.toLocaleFormat(format);
|
||||
@ -969,8 +970,7 @@ const ChatNotification = new Lang.Class({
|
||||
let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
|
||||
group: 'meta',
|
||||
styles: ['chat-meta-message'],
|
||||
childProps: { expand: true, x_fill: false,
|
||||
x_align: St.Align.END },
|
||||
childProps: { expand: true, x_fill: false },
|
||||
noTimestamp: true,
|
||||
timestamp: lastMessageTime });
|
||||
|
||||
@ -1071,9 +1071,8 @@ const ApproverSource = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ gicon: this._gicon,
|
||||
icon_size: size });
|
||||
getIcon: function() {
|
||||
return this._gicon;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Atk = imports.gi.Atk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
@ -35,8 +36,6 @@ const LONGER_SUMMARY_TIMEOUT = 4;
|
||||
const HIDE_TIMEOUT = 0.2;
|
||||
const LONGER_HIDE_TIMEOUT = 0.6;
|
||||
|
||||
const NOTIFICATION_ICON_SIZE = 24;
|
||||
|
||||
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
|
||||
// range from the point where it left the tray.
|
||||
const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
|
||||
@ -143,14 +142,9 @@ const URLHighlighter = new Lang.Class({
|
||||
let url = this._urls[urlId].url;
|
||||
if (url.indexOf(':') == -1)
|
||||
url = 'http://' + url;
|
||||
try {
|
||||
|
||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
|
||||
return true;
|
||||
} catch (e) {
|
||||
// TODO: remove this after gnome 3 release
|
||||
Util.spawn(['gvfs-open', url]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
@ -243,9 +237,7 @@ function makeCloseButton() {
|
||||
closeButton.connect('style-changed', function() {
|
||||
let themeNode = closeButton.get_theme_node();
|
||||
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
|
||||
// libcroco doesn't support negative units
|
||||
closeButton.translation_y = -themeNode.get_length('-shell-close-overlap-y');
|
||||
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
|
||||
});
|
||||
|
||||
return closeButton;
|
||||
@ -291,9 +283,12 @@ function makeCloseButton() {
|
||||
// If @params contains a 'body' parameter, then that text will be added to
|
||||
// the content area (as with addBody()).
|
||||
//
|
||||
// By default, the icon shown is created by calling
|
||||
// source.createIcon(). However, if @params contains an 'icon'
|
||||
// parameter, the passed in icon will be used.
|
||||
// By default, the icon shown is the same as the source's.
|
||||
// However, if @params contains a 'gicon' parameter, the passed in gicon
|
||||
// will be used.
|
||||
//
|
||||
// You can add a secondary icon to the banner with 'secondaryGIcon'. There
|
||||
// is no fallback for this icon.
|
||||
//
|
||||
// If @params contains a 'titleMarkup', 'bannerMarkup', or
|
||||
// 'bodyMarkup' parameter with the value %true, then the corresponding
|
||||
@ -308,6 +303,8 @@ function makeCloseButton() {
|
||||
const Notification = new Lang.Class({
|
||||
Name: 'Notification',
|
||||
|
||||
ICON_SIZE: 24,
|
||||
|
||||
IMAGE_SIZE: 125,
|
||||
|
||||
_init: function(source, title, banner, params) {
|
||||
@ -391,8 +388,8 @@ const Notification = new Lang.Class({
|
||||
update: function(title, banner, params) {
|
||||
params = Params.parse(params, { customContent: false,
|
||||
body: null,
|
||||
icon: null,
|
||||
secondaryIcon: null,
|
||||
gicon: null,
|
||||
secondaryGIcon: null,
|
||||
titleMarkup: false,
|
||||
bannerMarkup: false,
|
||||
bodyMarkup: false,
|
||||
@ -402,12 +399,12 @@ const Notification = new Lang.Class({
|
||||
|
||||
let oldFocus = global.stage.key_focus;
|
||||
|
||||
if (this._icon && (params.icon || params.clear)) {
|
||||
if (this._icon && (params.gicon || params.clear)) {
|
||||
this._icon.destroy();
|
||||
this._icon = null;
|
||||
}
|
||||
|
||||
if (this._secondaryIcon && (params.secondaryIcon || params.clear)) {
|
||||
if (this._secondaryIcon && (params.secondaryGIcon || params.clear)) {
|
||||
this._secondaryIcon.destroy();
|
||||
this._secondaryIcon = null;
|
||||
}
|
||||
@ -437,8 +434,14 @@ const Notification = new Lang.Class({
|
||||
if (!this._scrollArea && !this._actionArea && !this._imageBin)
|
||||
this._table.remove_style_class_name('multi-line-notification');
|
||||
|
||||
if (!this._icon) {
|
||||
this._icon = params.icon || this.source.createIcon(NOTIFICATION_ICON_SIZE);
|
||||
if (params.gicon) {
|
||||
this._icon = new St.Icon({ gicon: params.gicon,
|
||||
icon_size: this.ICON_SIZE });
|
||||
} else {
|
||||
this._icon = this.source.createIcon(this.ICON_SIZE);
|
||||
}
|
||||
|
||||
if (this._icon) {
|
||||
this._table.add(this._icon, { row: 0,
|
||||
col: 0,
|
||||
x_expand: false,
|
||||
@ -447,10 +450,9 @@ const Notification = new Lang.Class({
|
||||
y_align: St.Align.START });
|
||||
}
|
||||
|
||||
if (!this._secondaryIcon) {
|
||||
this._secondaryIcon = params.secondaryIcon;
|
||||
|
||||
if (this._secondaryIcon)
|
||||
if (params.secondaryGIcon) {
|
||||
this._secondaryIcon = new St.Icon({ gicon: params.secondaryGIcon,
|
||||
style_class: 'secondary-icon' });
|
||||
this._bannerBox.add_actor(this._secondaryIcon);
|
||||
}
|
||||
|
||||
@ -1114,10 +1116,14 @@ const Source = new Lang.Class({
|
||||
// Provides a sane default implementation, override if you need
|
||||
// something more fancy.
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ icon_name: this.iconName,
|
||||
return new St.Icon({ gicon: this.getIcon(),
|
||||
icon_size: size });
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
return new Gio.ThemedIcon({ name: this.iconName });
|
||||
},
|
||||
|
||||
_ensureMainIcon: function() {
|
||||
if (this._mainIcon)
|
||||
return;
|
||||
@ -1447,10 +1453,10 @@ const MessageTray = new Lang.Class({
|
||||
this._closeButton.connect('clicked', Lang.bind(this, this._onCloseClicked));
|
||||
this._notificationWidget.add_actor(this._closeButton);
|
||||
|
||||
this._idleMonitorWatchId = 0;
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
this._userActiveWhileNotificationShown = false;
|
||||
|
||||
this.idleMonitor = Shell.IdleMonitor.get();
|
||||
this.idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
|
||||
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
||||
@ -2162,20 +2168,26 @@ const MessageTray = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
|
||||
this._idleMonitorWatchId = 0;
|
||||
if (!userBecameIdle)
|
||||
this._updateNotificationTimeout(2000);
|
||||
_onIdleMonitorBecameActive: function() {
|
||||
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
|
||||
this._userActiveWhileNotificationShown = true;
|
||||
this._updateNotificationTimeout(2000);
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_showNotification: function() {
|
||||
this._notification = this._notificationQueue.shift();
|
||||
this._userActiveWhileNotificationShown = this.idleMonitor.get_idletime() <= IDLE_TIME;
|
||||
this._idleMonitorWatchId = this.idleMonitor.add_watch(IDLE_TIME,
|
||||
Lang.bind(this, this._onIdleMonitorWatch));
|
||||
|
||||
let userIdle = this.idleMonitor.get_idletime() > IDLE_TIME;
|
||||
if (userIdle) {
|
||||
this._userActiveWhileNotificationShown = false;
|
||||
this._idleMonitorBecameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||
} else {
|
||||
this._userActiveWhileNotificationShown = true;
|
||||
}
|
||||
|
||||
this._notificationClickedId = this._notification.connect('done-displaying',
|
||||
Lang.bind(this, this._escapeTray));
|
||||
this._notification.connect('unfocused', Lang.bind(this, function() {
|
||||
@ -2288,6 +2300,11 @@ const MessageTray = new Lang.Class({
|
||||
_hideNotification: function() {
|
||||
this._grabHelper.ungrab({ actor: this._notification.actor });
|
||||
|
||||
if (this._idleMonitorBecameActiveId) {
|
||||
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
}
|
||||
|
||||
if (this._notificationExpandedId) {
|
||||
this._notification.disconnect(this._notificationExpandedId);
|
||||
this._notificationExpandedId = 0;
|
||||
|
@ -20,7 +20,6 @@ const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||
const FADE_IN_BUTTONS_TIME = 0.33;
|
||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||
|
||||
const State = {
|
||||
@ -117,8 +116,6 @@ const ModalDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
setButtons: function(buttons) {
|
||||
let hadChildren = this._buttonLayout.get_children() > 0;
|
||||
|
||||
this._buttonLayout.destroy_all_children();
|
||||
this._actionKeys = {};
|
||||
|
||||
@ -169,21 +166,7 @@ const ModalDialog = new Lang.Class({
|
||||
this._actionKeys[key] = action;
|
||||
}
|
||||
|
||||
// Fade in buttons if there weren't any before
|
||||
if (!hadChildren && buttons.length > 0) {
|
||||
this._buttonLayout.opacity = 0;
|
||||
Tweener.addTween(this._buttonLayout,
|
||||
{ opacity: 255,
|
||||
time: FADE_IN_BUTTONS_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this.emit('buttons-set');
|
||||
})
|
||||
});
|
||||
} else {
|
||||
this.emit('buttons-set');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
_onKeyReleaseEvent: function(object, event) {
|
||||
|
@ -356,12 +356,10 @@ const NotificationDaemon = new Lang.Class({
|
||||
ndata.actions, ndata.hints, ndata.notification];
|
||||
|
||||
let gicon = this._iconForNotificationData(icon, hints);
|
||||
let iconActor = new St.Icon({ gicon: gicon,
|
||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
||||
|
||||
if (notification == null) {
|
||||
notification = new MessageTray.Notification(source, summary, body,
|
||||
{ icon: iconActor,
|
||||
{ gicon: gicon,
|
||||
bannerMarkup: true });
|
||||
ndata.notification = notification;
|
||||
notification.connect('destroy', Lang.bind(this,
|
||||
@ -386,7 +384,7 @@ const NotificationDaemon = new Lang.Class({
|
||||
this._emitActionInvoked(ndata.id, actionId);
|
||||
}));
|
||||
} else {
|
||||
notification.update(summary, body, { icon: iconActor,
|
||||
notification.update(summary, body, { gicon: gicon,
|
||||
bannerMarkup: true,
|
||||
clear: true });
|
||||
}
|
||||
|
@ -23,8 +23,8 @@ const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
// Time for initial animation going into Overview mode
|
||||
const ANIMATION_TIME = 0.25;
|
||||
|
||||
// We split the screen vertically between the dash and the view selector.
|
||||
const DASH_SPLIT_FRACTION = 0.1;
|
||||
// XXX -- grab this automatically. Hard to do.
|
||||
const DASH_MAX_WIDTH = 96;
|
||||
|
||||
const DND_WINDOW_SWITCH_TIMEOUT = 1250;
|
||||
|
||||
@ -502,7 +502,7 @@ const Overview = new Lang.Class({
|
||||
let searchX = (primary.width - searchWidth) / 2;
|
||||
let searchY = contentY + this._spacing;
|
||||
|
||||
let dashWidth = Math.round(DASH_SPLIT_FRACTION * primary.width);
|
||||
let dashWidth = DASH_MAX_WIDTH;
|
||||
let dashY = searchY + searchHeight + this._spacing;
|
||||
let dashX;
|
||||
if (rtl) {
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
// We stop polling if the user is idle for more than this amount of time
|
||||
@ -40,9 +41,9 @@ const PointerWatcher = new Lang.Class({
|
||||
Name: 'PointerWatcher',
|
||||
|
||||
_init: function() {
|
||||
let idleMonitor = Shell.IdleMonitor.get();
|
||||
idleMonitor.add_watch(IDLE_TIME,
|
||||
Lang.bind(this, this._onIdleMonitorWatch));
|
||||
let idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||
idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
|
||||
this._idle = idleMonitor.get_idletime() > IDLE_TIME;
|
||||
this._watches = [];
|
||||
this.pointerX = null;
|
||||
@ -78,11 +79,14 @@ const PointerWatcher = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||
this._idle = userBecameIdle;
|
||||
if (!userBecameIdle)
|
||||
_onIdleMonitorBecameActive: function(monitor) {
|
||||
this._idle = false;
|
||||
this._updatePointer();
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
_onIdleMonitorBecameIdle: function(monitor) {
|
||||
this._idle = true;
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
|
@ -219,7 +219,9 @@ const RunDialog = new Lang.Class({
|
||||
|
||||
this.contentLayout.add(this._errorBox, { expand: true });
|
||||
|
||||
let errorIcon = new St.Icon({ icon_name: 'dialog-error', icon_size: 24, style_class: 'run-dialog-error-icon' });
|
||||
let errorIcon = new St.Icon({ icon_name: 'dialog-error-symbolic',
|
||||
icon_size: 24,
|
||||
style_class: 'run-dialog-error-icon' });
|
||||
|
||||
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
|
||||
|
||||
|
@ -21,6 +21,7 @@ const Overview = imports.ui.overview;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
const ShellDBus = imports.ui.shellDBus;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||
@ -429,6 +430,7 @@ const ScreenShield = new Lang.Class({
|
||||
this._isGreeter = false;
|
||||
this._isActive = false;
|
||||
this._inUnlockAnimation = false;
|
||||
this._activationTime = 0;
|
||||
|
||||
this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
|
||||
{ inhibitEvents: true,
|
||||
@ -556,8 +558,12 @@ const ScreenShield = new Lang.Class({
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
if (!this._isActive)
|
||||
if (!this._isActive) {
|
||||
this._lightbox.show();
|
||||
|
||||
if (this._activationTime == 0)
|
||||
this._activationTime = GLib.get_monotonic_time();
|
||||
}
|
||||
} else {
|
||||
let lightboxWasShown = this._lightbox.shown;
|
||||
this._lightbox.hide();
|
||||
@ -574,13 +580,14 @@ const ScreenShield = new Lang.Class({
|
||||
showDialog: function() {
|
||||
// Ensure that the stage window is mapped, before taking a grab
|
||||
// otherwise X errors out
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||
let actorShownId = 0;
|
||||
actorShownId = this.actor.connect('show', Lang.bind(this, function() {
|
||||
if (!this._isModal) {
|
||||
Main.pushModal(this.actor);
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
return false;
|
||||
this.actor.disconnect(actorShownId);
|
||||
}));
|
||||
|
||||
this.actor.show();
|
||||
@ -774,6 +781,10 @@ const ScreenShield = new Lang.Class({
|
||||
return this._isActive;
|
||||
},
|
||||
|
||||
get activationTime() {
|
||||
return this._activationTime;
|
||||
},
|
||||
|
||||
_tweenUnlocked: function() {
|
||||
this._inUnlockAnimation = true;
|
||||
this.unlock();
|
||||
@ -818,6 +829,7 @@ const ScreenShield = new Lang.Class({
|
||||
if (Main.sessionMode.currentMode == 'unlock-dialog')
|
||||
Main.sessionMode.popMode('unlock-dialog');
|
||||
|
||||
this._activationTime = 0;
|
||||
this._isActive = false;
|
||||
this.emit('lock-status-changed');
|
||||
},
|
||||
@ -828,6 +840,9 @@ const ScreenShield = new Lang.Class({
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
if (this._activationTime == 0)
|
||||
this._activationTime = GLib.get_monotonic_time();
|
||||
|
||||
this.actor.show();
|
||||
|
||||
if (Main.sessionMode.currentMode != 'unlock-dialog' &&
|
||||
@ -852,6 +867,8 @@ const ScreenShieldFallback = new Lang.Class({
|
||||
Name: 'ScreenShieldFallback',
|
||||
|
||||
_init: function() {
|
||||
Util.spawn(['gnome-screensaver']);
|
||||
|
||||
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||
g_name: 'org.gnome.ScreenSaver',
|
||||
g_object_path: '/org/gnome/ScreenSaver',
|
||||
|
@ -59,6 +59,9 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
|
||||
<method name="SetActive">
|
||||
<arg name="value" direction="in" type="b" />
|
||||
</method>
|
||||
<method name="GetActiveTime">
|
||||
<arg name="value" direction="out" type="u" />
|
||||
</method>
|
||||
<signal name="ActiveChanged">
|
||||
<arg name="new_value" type="b" />
|
||||
</signal>
|
||||
@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
|
||||
|
||||
GetActive: function() {
|
||||
return this._screenShield.locked;
|
||||
}
|
||||
},
|
||||
|
||||
GetActiveTime: function() {
|
||||
let started = this._screenShield.activationTime;
|
||||
if (started > 0)
|
||||
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
|
||||
else
|
||||
return 0;
|
||||
},
|
||||
});
|
||||
|
@ -1747,10 +1747,9 @@ const NMApplet = new Lang.Class({
|
||||
or this._source will be cleared */
|
||||
this._ensureSource();
|
||||
|
||||
let icon = new St.Icon({ icon_name: iconName,
|
||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
||||
let gicon = new Gio.ThemedIcon({ name: iconName });
|
||||
device._notification = new MessageTray.Notification(this._source, title, text,
|
||||
{ icon: icon });
|
||||
{ gicon: gicon });
|
||||
device._notification.setUrgency(urgency);
|
||||
device._notification.setTransient(true);
|
||||
device._notification.connect('destroy', function() {
|
||||
|
@ -5,6 +5,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const Gdm = imports.gi.Gdm;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
@ -195,9 +196,7 @@ const UnlockDialog = new Lang.Class({
|
||||
return false;
|
||||
}));
|
||||
|
||||
this._idleMonitor = Shell.IdleMonitor.get();
|
||||
// this dialog is only created after user activity (curtain drag or
|
||||
// escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity
|
||||
this._idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
|
||||
},
|
||||
|
||||
|
@ -9,11 +9,11 @@ const Pango = imports.gi.Pango;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Tp = imports.gi.TelepathyGLib;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const GnomeSession = imports.misc.gnomeSession;
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
@ -73,11 +73,6 @@ const UserAvatarWidget = new Lang.Class({
|
||||
let file = Gio.File.new_for_path(iconFile);
|
||||
this.actor.child = null;
|
||||
this.actor.style = 'background-image: url("%s");'.format(iconFile);
|
||||
|
||||
// AccountsService uses a fixed location for avatar images, so
|
||||
// we need to clear out all cached data to pick up image changes,
|
||||
// see https://bugzilla.gnome.org/show_bug.cgi?id=679268
|
||||
this.actor.clear_background_image();
|
||||
} else {
|
||||
this.actor.style = null;
|
||||
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
|
||||
@ -487,10 +482,11 @@ const UserMenuButton = new Lang.Class({
|
||||
this._presence = new GnomeSession.Presence();
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
this._haveShutdown = true;
|
||||
this._haveSuspend = true;
|
||||
|
||||
this._accountMgr = Tp.AccountManager.dup();
|
||||
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._iconBox = new St.Bin();
|
||||
@ -570,14 +566,15 @@ const UserMenuButton = new Lang.Class({
|
||||
// the lockdown setting changes, which should be close enough.
|
||||
this.menu.connect('open-state-changed', Lang.bind(this,
|
||||
function(menu, open) {
|
||||
if (open)
|
||||
if (!open)
|
||||
return;
|
||||
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveSuspend();
|
||||
}));
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
Lang.bind(this, this._updateHaveShutdown));
|
||||
|
||||
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
this._sessionUpdated();
|
||||
},
|
||||
@ -646,9 +643,15 @@ const UserMenuButton = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSuspendOrPowerOff: function() {
|
||||
this._haveSuspend = this._upClient.get_can_suspend();
|
||||
_updateHaveSuspend: function() {
|
||||
this._loginManager.canSuspend(Lang.bind(this,
|
||||
function(result) {
|
||||
this._haveSuspend = result;
|
||||
this._updateSuspendOrPowerOff();
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSuspendOrPowerOff: function() {
|
||||
if (!this._suspendOrPowerOffItem)
|
||||
return;
|
||||
|
||||
@ -851,12 +854,13 @@ const UserMenuButton = new Lang.Class({
|
||||
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||
Main.screenShield.disconnect(tmpId);
|
||||
|
||||
this._upClient.suspend_sync(null);
|
||||
this._loginManager.suspend();
|
||||
}));
|
||||
|
||||
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||
Main.screenShield.lock(true);
|
||||
} else {
|
||||
this._upClient.suspend_sync(null);
|
||||
this._loginManager.suspend();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
@ -19,6 +20,7 @@ const Tweener = imports.ui.tweener;
|
||||
const Wanda = imports.ui.wanda;
|
||||
const WorkspacesView = imports.ui.workspacesView;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
|
||||
const FocusTrap = new Lang.Class({
|
||||
Name: 'FocusTrap',
|
||||
@ -141,6 +143,16 @@ const ViewSelector = new Lang.Class({
|
||||
// accessing the properties.
|
||||
this.constrainHeight = new Clutter.BindConstraint({ source: this._pageArea,
|
||||
coordinate: Clutter.BindCoordinate.HEIGHT });
|
||||
|
||||
global.display.add_keybinding('toggle-application-view',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Lang.bind(this, this._showWithAppsPage));
|
||||
},
|
||||
|
||||
_showWithAppsPage: function() {
|
||||
Main.overview.show();
|
||||
this._showAppsButton.set_checked(true);
|
||||
},
|
||||
|
||||
show: function() {
|
||||
|
@ -33,21 +33,13 @@ const DRAGGING_WINDOW_OPACITY = 100;
|
||||
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
||||
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||
|
||||
// Define a layout scheme for small window counts. For larger
|
||||
// counts we fall back to an algorithm. We need more schemes here
|
||||
// unless we have a really good algorithm.
|
||||
|
||||
// Each triplet is [xCenter, yCenter, scale] where the scale
|
||||
// is relative to the width of the workspace.
|
||||
const POSITIONS = {
|
||||
1: [[0.5, 0.5, 0.95]],
|
||||
2: [[0.25, 0.5, 0.48], [0.75, 0.5, 0.48]],
|
||||
3: [[0.25, 0.25, 0.48], [0.75, 0.25, 0.48], [0.5, 0.75, 0.48]],
|
||||
4: [[0.25, 0.25, 0.47], [0.75, 0.25, 0.47], [0.75, 0.75, 0.47], [0.25, 0.75, 0.47]],
|
||||
5: [[0.165, 0.25, 0.32], [0.495, 0.25, 0.32], [0.825, 0.25, 0.32], [0.25, 0.75, 0.32], [0.75, 0.75, 0.32]]
|
||||
};
|
||||
// Used in _orderWindowsPermutations, 5! = 120 which is probably the highest we can go
|
||||
const POSITIONING_PERMUTATIONS_MAX = 5;
|
||||
// When calculating a layout, we calculate the scale of windows and the percent
|
||||
// of the available area the new layout uses. If the values for the new layout,
|
||||
// when weighted with the values as below, are worse than the previous layout's,
|
||||
// we stop looking for a new layout and use the previous layout.
|
||||
// Otherwise, we keep looking for a new layout.
|
||||
const LAYOUT_SCALE_WEIGHT = 1;
|
||||
const LAYOUT_SPACE_WEIGHT = 0.1;
|
||||
|
||||
function _interpolate(start, end, step) {
|
||||
return start + (end - start) * step;
|
||||
@ -504,10 +496,6 @@ const WindowOverlay = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
chromeWidth: function () {
|
||||
return this.closeButton.width - this.closeButton._overlap;
|
||||
},
|
||||
|
||||
chromeHeights: function () {
|
||||
return [this.closeButton.height - this.closeButton._overlap,
|
||||
this.title.height + this.title._spacing];
|
||||
@ -668,6 +656,280 @@ const WindowPositionFlags = {
|
||||
ANIMATE: 1 << 1
|
||||
};
|
||||
|
||||
const LayoutStrategy = new Lang.Class({
|
||||
Name: 'LayoutStrategy',
|
||||
Abstract: true,
|
||||
|
||||
_init: function(monitor, rowSpacing, columnSpacing, bottomPadding) {
|
||||
this._monitor = monitor;
|
||||
this._rowSpacing = rowSpacing;
|
||||
this._columnSpacing = columnSpacing;
|
||||
this._bottomPadding = bottomPadding;
|
||||
},
|
||||
|
||||
_newRow: function() {
|
||||
// Row properties:
|
||||
//
|
||||
// * x, y are the position of row, relative to area
|
||||
//
|
||||
// * width, height are the scaled versions of fullWidth, fullHeight
|
||||
//
|
||||
// * width also has the spacing in between windows. It's not in
|
||||
// fullWidth, as the spacing is constant, whereas fullWidth is
|
||||
// meant to be scaled
|
||||
//
|
||||
// * neither height/fullHeight have any sort of spacing or padding
|
||||
//
|
||||
// * if cellWidth is present, all windows in the row will occupy
|
||||
// the space of cellWidth, centered.
|
||||
return { x: 0, y: 0,
|
||||
width: 0, height: 0,
|
||||
fullWidth: 0, fullHeight: 0,
|
||||
cellWidth: 0,
|
||||
windows: [] };
|
||||
},
|
||||
|
||||
// Compute the size and fancy scale for @window using the
|
||||
// base scale, @scale.
|
||||
//
|
||||
// Returns a list structure: [ scaledWidth, scaledHeight, fancyScale ]
|
||||
// where scaledWidth and scaledHeight are the window's
|
||||
// width and height, scaled by fancyScale for convenience.
|
||||
_computeWindowSizeAndScale: function(window, scale) {
|
||||
let width = window.actor.width;
|
||||
let height = window.actor.height;
|
||||
let ratio;
|
||||
|
||||
if (width > height)
|
||||
ratio = width / this._monitor.width;
|
||||
else
|
||||
ratio = height / this._monitor.height;
|
||||
|
||||
let fancyScale = (2 / (1 + ratio)) * scale;
|
||||
return [width * fancyScale, height * fancyScale, fancyScale];
|
||||
},
|
||||
|
||||
// Compute the size of each row, by assigning to the properties
|
||||
// row.width, row.height, row.fullWidth, row.fullHeight, and
|
||||
// (optionally) row.cellWidth, for each row in @layout.rows.
|
||||
// This method is intended to be called by subclasses.
|
||||
_computeRowSizes: function(layout) {
|
||||
throw new Error('_computeRowSizes not implemented');
|
||||
},
|
||||
|
||||
// Compute strategy-specific window slots for each window in
|
||||
// @windows, given the @layout. The strategy may also use @layout
|
||||
// as strategy-specific storage.
|
||||
//
|
||||
// This must calculate:
|
||||
// * maxColumns - The maximum number of columns used by the layout.
|
||||
// * gridWidth - The total width used by the grid, unscaled, unspaced.
|
||||
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
|
||||
// * rows - A list of rows, which should be instantiated by _newRow.
|
||||
computeLayout: function(windows, layout) {
|
||||
throw new Error('computeLayout not implemented');
|
||||
},
|
||||
|
||||
// Given @layout, compute the overall scale and space of the layout.
|
||||
// The scale is the individual, non-fancy scale of each window, and
|
||||
// the space is the percentage of the available area eventually
|
||||
// used by the layout.
|
||||
|
||||
// This method does not return anything, but instead installs
|
||||
// the properties "scale" and "space" on @layout directly.
|
||||
//
|
||||
// Make sure to call this methods before calling computeWindowSlots(),
|
||||
// as it depends on the scale property installed in @layout here.
|
||||
computeScaleAndSpace: function(layout) {
|
||||
let area = layout.area;
|
||||
|
||||
let hspacing = (layout.maxColumns - 1) * this._columnSpacing;
|
||||
let vspacing = (layout.numRows - 1) * this._rowSpacing + this._bottomPadding;
|
||||
|
||||
let spacedWidth = area.width - hspacing;
|
||||
let spacedHeight = area.height - vspacing;
|
||||
|
||||
let horizontalScale = spacedWidth / layout.gridWidth;
|
||||
let verticalScale = spacedHeight / layout.gridHeight;
|
||||
|
||||
// Thumbnails should be less than 70% of the original size
|
||||
let scale = Math.min(horizontalScale, verticalScale, WINDOW_CLONE_MAXIMUM_SCALE);
|
||||
|
||||
let scaledLayoutWidth = layout.gridWidth * scale + hspacing;
|
||||
let scaledLayoutHeight = layout.gridHeight * scale + vspacing;
|
||||
let space = (scaledLayoutWidth * scaledLayoutHeight) / (area.width * area.height);
|
||||
|
||||
layout.scale = scale;
|
||||
layout.space = space;
|
||||
},
|
||||
|
||||
computeWindowSlots: function(layout, area) {
|
||||
this._computeRowSizes(layout);
|
||||
|
||||
let { rows: rows, scale: scale, state: state } = layout;
|
||||
|
||||
let slots = [];
|
||||
|
||||
let y = 0;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.x = area.x + (area.width - row.width) / 2;
|
||||
row.y = area.y + y;
|
||||
y += row.height + this._rowSpacing;
|
||||
}
|
||||
|
||||
let height = y - this._rowSpacing + this._bottomPadding;
|
||||
let baseY = (area.height - height) / 2;
|
||||
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.y += baseY;
|
||||
let baseX = row.x;
|
||||
for (let j = 0; j < row.windows.length; j++) {
|
||||
let window = row.windows[j];
|
||||
|
||||
let [width, height, s] = this._computeWindowSizeAndScale(window, scale);
|
||||
let y = row.y + row.height - height;
|
||||
|
||||
let x = baseX;
|
||||
if (row.cellWidth) {
|
||||
x += (row.cellWidth - width) / 2;
|
||||
width = row.cellWidth;
|
||||
}
|
||||
|
||||
slots.push([x, y, s]);
|
||||
baseX += width + this._columnSpacing;
|
||||
}
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
});
|
||||
|
||||
const UnalignedLayoutStrategy = new Lang.Class({
|
||||
Name: 'UnalignedLayoutStrategy',
|
||||
Extends: LayoutStrategy,
|
||||
|
||||
_computeRowSizes: function(layout) {
|
||||
let { rows: rows, scale: scale } = layout;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing;
|
||||
row.height = row.fullHeight * scale;
|
||||
}
|
||||
},
|
||||
|
||||
_keepSameRow: function(row, window, width, idealRowWidth) {
|
||||
if (row.fullWidth + width <= idealRowWidth)
|
||||
return true;
|
||||
|
||||
let oldRatio = row.fullWidth / idealRowWidth;
|
||||
let newRatio = (row.fullWidth + width) / idealRowWidth;
|
||||
|
||||
if (Math.abs(1 - newRatio) < Math.abs(1 - oldRatio))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
computeLayout: function(windows, layout) {
|
||||
let numRows = layout.numRows;
|
||||
|
||||
let rows = [];
|
||||
let totalWidth = 0;
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
totalWidth += windows[i].actor.width;
|
||||
}
|
||||
|
||||
let idealRowWidth = totalWidth / numRows;
|
||||
let windowIdx = 0;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let col = 0;
|
||||
let row = this._newRow();
|
||||
rows.push(row);
|
||||
|
||||
for (; windowIdx < windows.length; windowIdx++) {
|
||||
let window = windows[windowIdx];
|
||||
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||
row.fullHeight = Math.max(row.fullHeight, height);
|
||||
|
||||
// either new width is < idealWidth or new width is nearer from idealWidth then oldWidth
|
||||
if (this._keepSameRow(row, window, width, idealRowWidth) || (i == numRows - 1)) {
|
||||
row.windows.push(window);
|
||||
row.fullWidth += width;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let gridHeight = 0;
|
||||
let maxRow;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let row = rows[i];
|
||||
if (!maxRow || row.fullWidth > maxRow.fullWidth)
|
||||
maxRow = row;
|
||||
gridHeight += row.fullHeight;
|
||||
}
|
||||
|
||||
layout.rows = rows;
|
||||
layout.maxColumns = maxRow.windows.length;
|
||||
layout.gridWidth = maxRow.fullWidth;
|
||||
layout.gridHeight = gridHeight;
|
||||
}
|
||||
});
|
||||
|
||||
const GridLayoutStrategy = new Lang.Class({
|
||||
Name: 'GridLayoutStrategy',
|
||||
Extends: LayoutStrategy,
|
||||
|
||||
_computeRowSizes: function(layout) {
|
||||
let { rows: rows, scale: scale } = layout;
|
||||
|
||||
let gridWidth = layout.numColumns * layout.maxWindowWidth;
|
||||
let hspacing = (layout.numColumns - 1) * this._columnSpacing;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.fullWidth = layout.gridWidth;
|
||||
row.fullHeight = layout.maxWindowHeight;
|
||||
|
||||
row.width = row.fullWidth * scale + hspacing;
|
||||
row.height = row.fullHeight * scale;
|
||||
row.cellWidth = layout.maxWindowWidth * scale;
|
||||
}
|
||||
},
|
||||
|
||||
computeLayout: function(windows, layout) {
|
||||
let { numRows: numRows, numColumns: numColumns } = layout;
|
||||
let rows = [];
|
||||
let windowIdx = 0;
|
||||
|
||||
let maxWindowWidth = 0;
|
||||
let maxWindowHeight = 0;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let row = this._newRow();
|
||||
rows.push(row);
|
||||
for (; windowIdx < windows.length; windowIdx++) {
|
||||
if (row.windows.length >= numColumns)
|
||||
break;
|
||||
|
||||
let window = windows[windowIdx];
|
||||
row.windows.push(window);
|
||||
|
||||
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||
maxWindowWidth = Math.max(maxWindowWidth, width);
|
||||
maxWindowHeight = Math.max(maxWindowHeight, height);
|
||||
}
|
||||
}
|
||||
|
||||
layout.rows = rows;
|
||||
layout.maxColumns = numColumns;
|
||||
layout.gridWidth = numColumns * maxWindowWidth;
|
||||
layout.gridHeight = numRows * maxWindowHeight;
|
||||
layout.maxWindowWidth = maxWindowWidth;
|
||||
layout.maxWindowHeight = maxWindowHeight;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @metaWorkspace: a #Meta.Workspace, or null
|
||||
*/
|
||||
@ -689,7 +951,7 @@ const Workspace = new Lang.Class({
|
||||
// Without this the drop area will be overlapped.
|
||||
this._windowOverlaysGroup.set_size(0, 0);
|
||||
|
||||
this.actor = new Clutter.Group();
|
||||
this.actor = new St.Widget({ style_class: 'window-picker' });
|
||||
this.actor.set_size(0, 0);
|
||||
|
||||
this._dropRect = new Clutter.Rectangle({ opacity: 0 });
|
||||
@ -729,6 +991,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
this._positionWindowsFlags = 0;
|
||||
this._positionWindowsId = 0;
|
||||
|
||||
this._currentLayout = null;
|
||||
},
|
||||
|
||||
setGeometry: function(x, y, width, height) {
|
||||
@ -763,225 +1027,6 @@ const Workspace = new Lang.Class({
|
||||
return this._windows.length == 0;
|
||||
},
|
||||
|
||||
// Only use this for n <= 20 say
|
||||
_factorial: function(n) {
|
||||
let result = 1;
|
||||
for (let i = 2; i <= n; i++)
|
||||
result *= i;
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* _permutation:
|
||||
* @permutationIndex: An integer from [0, list.length!)
|
||||
* @list: (inout): Array of objects to permute; will be modified in place
|
||||
*
|
||||
* Given an integer between 0 and length of array, re-order the array in-place
|
||||
* into a permutation denoted by the index.
|
||||
*/
|
||||
_permutation: function(permutationIndex, list) {
|
||||
for (let j = 2; j <= list.length; j++) {
|
||||
let firstIndex = (permutationIndex % j);
|
||||
let secondIndex = j - 1;
|
||||
// Swap
|
||||
let tmp = list[firstIndex];
|
||||
list[firstIndex] = list[secondIndex];
|
||||
list[secondIndex] = tmp;
|
||||
permutationIndex = Math.floor(permutationIndex / j);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* _forEachPermutations:
|
||||
* @list: Array
|
||||
* @func: Function which takes a single array argument
|
||||
*
|
||||
* Call @func with each permutation of @list as an argument.
|
||||
*/
|
||||
_forEachPermutations: function(list, func) {
|
||||
let nCombinations = this._factorial(list.length);
|
||||
for (let i = 0; i < nCombinations; i++) {
|
||||
let listCopy = list.concat();
|
||||
this._permutation(i, listCopy);
|
||||
func(listCopy);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* _computeWindowMotion:
|
||||
* @actor: A #WindowClone's #ClutterActor
|
||||
* @slot: An element of #POSITIONS
|
||||
* @slotGeometry: Layout of @slot
|
||||
*
|
||||
* Returns a number corresponding to how much perceived motion
|
||||
* would be involved in moving the window to the given slot.
|
||||
* Currently this is the square of the distance between the
|
||||
* centers.
|
||||
*/
|
||||
_computeWindowMotion: function (actor, slot) {
|
||||
let [xCenter, yCenter, fraction] = slot;
|
||||
let xDelta, yDelta, distanceSquared;
|
||||
let actorWidth, actorHeight;
|
||||
|
||||
let x = actor.x;
|
||||
let y = actor.y;
|
||||
let scale = actor.scale_x;
|
||||
|
||||
if (actor._delegate.inDrag) {
|
||||
x = actor._delegate.dragOrigX;
|
||||
y = actor._delegate.dragOrigY;
|
||||
scale = actor._delegate.dragOrigScale;
|
||||
}
|
||||
|
||||
actorWidth = actor.width * scale;
|
||||
actorHeight = actor.height * scale;
|
||||
xDelta = x + actorWidth / 2.0 - xCenter * this._width - this._x;
|
||||
yDelta = y + actorHeight / 2.0 - yCenter * this._height - this._y;
|
||||
distanceSquared = xDelta * xDelta + yDelta * yDelta;
|
||||
|
||||
return distanceSquared;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsPermutations:
|
||||
*
|
||||
* Iterate over all permutations of the windows, and determine the
|
||||
* permutation which has the least total motion.
|
||||
*/
|
||||
_orderWindowsPermutations: function (clones, slots) {
|
||||
let minimumMotionPermutation = null;
|
||||
let minimumMotion = -1;
|
||||
let permIndex = 0;
|
||||
this._forEachPermutations(clones, Lang.bind(this, function (permutation) {
|
||||
let motion = 0;
|
||||
for (let i = 0; i < permutation.length; i++) {
|
||||
let cloneActor = permutation[i].actor;
|
||||
let slot = slots[i];
|
||||
|
||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
||||
|
||||
motion += delta;
|
||||
|
||||
// Bail out early if we're already larger than the
|
||||
// previous best
|
||||
if (minimumMotionPermutation != null &&
|
||||
motion > minimumMotion)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (minimumMotionPermutation == null || motion < minimumMotion) {
|
||||
minimumMotionPermutation = permutation;
|
||||
minimumMotion = motion;
|
||||
}
|
||||
permIndex++;
|
||||
}));
|
||||
return minimumMotionPermutation;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsGreedy:
|
||||
*
|
||||
* Iterate over available slots in order, placing into each one the window
|
||||
* we find with the smallest motion to that slot.
|
||||
*/
|
||||
_orderWindowsGreedy: function(clones, slots) {
|
||||
let result = [];
|
||||
let slotIndex = 0;
|
||||
// Copy since we mutate below
|
||||
let clonesCopy = clones.concat();
|
||||
for (let i = 0; i < slots.length; i++) {
|
||||
let slot = slots[i];
|
||||
let minimumMotionIndex = -1;
|
||||
let minimumMotion = -1;
|
||||
for (let j = 0; j < clonesCopy.length; j++) {
|
||||
let cloneActor = clonesCopy[j].actor;
|
||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
||||
if (minimumMotionIndex == -1 || delta < minimumMotion) {
|
||||
minimumMotionIndex = j;
|
||||
minimumMotion = delta;
|
||||
}
|
||||
}
|
||||
result.push(clonesCopy[minimumMotionIndex]);
|
||||
clonesCopy.splice(minimumMotionIndex, 1);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsByMotionAndStartup:
|
||||
* @windows: Array of #MetaWindow
|
||||
* @slots: Array of slots
|
||||
*
|
||||
* Returns a copy of @windows, ordered in such a way that they require least motion
|
||||
* to move to the final screen coordinates of @slots. Ties are broken in a stable
|
||||
* fashion by the order in which the windows were created.
|
||||
*/
|
||||
_orderWindowsByMotionAndStartup: function(clones, slots) {
|
||||
clones.sort(function(w1, w2) {
|
||||
return w2.metaWindow.get_stable_sequence() - w1.metaWindow.get_stable_sequence();
|
||||
});
|
||||
if (clones.length <= POSITIONING_PERMUTATIONS_MAX)
|
||||
return this._orderWindowsPermutations(clones, slots);
|
||||
else
|
||||
return this._orderWindowsGreedy(clones, slots);
|
||||
},
|
||||
|
||||
/**
|
||||
* _getSlotGeometry:
|
||||
* @slot: A layout slot
|
||||
*
|
||||
* Returns: the screen-relative [x, y, width, height]
|
||||
* of a given window layout slot.
|
||||
*/
|
||||
_getSlotGeometry: function(slot) {
|
||||
let [xCenter, yCenter, fraction] = slot;
|
||||
|
||||
let width = this._width * fraction;
|
||||
let height = this._height * fraction;
|
||||
|
||||
let x = this._x + xCenter * this._width - width / 2 ;
|
||||
let y = this._y + yCenter * this._height - height / 2;
|
||||
|
||||
return [x, y, width, height];
|
||||
},
|
||||
|
||||
/**
|
||||
* _computeWindowLayout:
|
||||
* @metaWindow: A #MetaWindow
|
||||
* @slot: A layout slot
|
||||
*
|
||||
* Given a window and slot to fit it in, compute its
|
||||
* screen-relative [x, y, scale] where scale applies
|
||||
* to both X and Y directions.
|
||||
*/
|
||||
_computeWindowLayout: function(metaWindow, slot) {
|
||||
let [x, y, width, height] = this._getSlotGeometry(slot);
|
||||
|
||||
let rect = metaWindow.get_outer_rect();
|
||||
let buttonOuterHeight, captionHeight;
|
||||
let buttonOuterWidth = 0;
|
||||
|
||||
if (this._windowOverlays[0]) {
|
||||
[buttonOuterHeight, captionHeight] = this._windowOverlays[0].chromeHeights();
|
||||
buttonOuterWidth = this._windowOverlays[0].chromeWidth();
|
||||
} else
|
||||
[buttonOuterHeight, captionHeight] = [0, 0];
|
||||
|
||||
let scale = Math.min((width - buttonOuterWidth) / rect.width,
|
||||
(height - buttonOuterHeight - captionHeight) / rect.height,
|
||||
WINDOW_CLONE_MAXIMUM_SCALE);
|
||||
|
||||
x = Math.floor(x + (width - scale * rect.width) / 2);
|
||||
|
||||
// We want to center the window in case we have just one
|
||||
if (metaWindow.get_workspace().n_windows == 1)
|
||||
y = Math.floor(y + (height - scale * rect.height) / 2);
|
||||
else
|
||||
y = Math.floor(y + height - rect.height * scale - captionHeight);
|
||||
|
||||
return [x, y, scale];
|
||||
},
|
||||
|
||||
setReservedSlot: function(clone) {
|
||||
if (this._reservedSlot == clone)
|
||||
return;
|
||||
@ -990,6 +1035,7 @@ const Workspace = new Lang.Class({
|
||||
clone = null;
|
||||
|
||||
this._reservedSlot = clone;
|
||||
this._currentLayout = null;
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||
},
|
||||
|
||||
@ -1020,6 +1066,11 @@ const Workspace = new Lang.Class({
|
||||
}
|
||||
|
||||
let clones = this._windows.slice();
|
||||
|
||||
clones.sort(function(a, b) {
|
||||
return a.metaWindow.get_stable_sequence() - b.metaWindow.get_stable_sequence();
|
||||
});
|
||||
|
||||
if (this._reservedSlot)
|
||||
clones.push(this._reservedSlot);
|
||||
|
||||
@ -1027,8 +1078,7 @@ const Workspace = new Lang.Class({
|
||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||
|
||||
// Start the animations
|
||||
let slots = this._computeAllWindowSlots(clones.length);
|
||||
clones = this._orderWindowsByMotionAndStartup(clones, slots);
|
||||
let slots = this._computeAllWindowSlots(clones);
|
||||
|
||||
let currentWorkspace = global.screen.get_active_workspace();
|
||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||
@ -1045,10 +1095,11 @@ const Workspace = new Lang.Class({
|
||||
if (clone.inDrag)
|
||||
continue;
|
||||
|
||||
let [x, y, scale] = this._computeWindowLayout(metaWindow, slot);
|
||||
let [x, y, scale] = slot;
|
||||
|
||||
if (overlay && initialPositioning)
|
||||
overlay.hide();
|
||||
|
||||
if (animate && isOnCurrentWorkspace) {
|
||||
if (!metaWindow.showing_on_its_workspace()) {
|
||||
/* Hidden windows should fade in and grow
|
||||
@ -1072,6 +1123,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
||||
} else {
|
||||
// cancel any active tweens (otherwise they might override our changes)
|
||||
Tweener.removeTweens(clone.actor);
|
||||
clone.actor.set_position(x, y);
|
||||
clone.actor.set_scale(scale, scale);
|
||||
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||
@ -1113,11 +1166,11 @@ const Workspace = new Lang.Class({
|
||||
},
|
||||
|
||||
_updateWindowOverlayPositions: function(clone, overlay, x, y, scale, animate) {
|
||||
if (!overlay)
|
||||
return;
|
||||
|
||||
let [cloneWidth, cloneHeight] = clone.actor.get_size();
|
||||
cloneWidth = scale * cloneWidth;
|
||||
cloneHeight = scale * cloneHeight;
|
||||
if (overlay)
|
||||
overlay.updatePositions(x, y, cloneWidth, cloneHeight, animate);
|
||||
overlay.updatePositions(x, y, cloneWidth * scale, cloneHeight * scale, animate);
|
||||
},
|
||||
|
||||
_showWindowOverlay: function(clone, overlay, fade) {
|
||||
@ -1211,6 +1264,7 @@ const Workspace = new Lang.Class({
|
||||
this._cursorX = x;
|
||||
this._cursorY = y;
|
||||
|
||||
this._currentLayout = null;
|
||||
this._repositionWindowsId = Mainloop.timeout_add(750,
|
||||
Lang.bind(this, this._delayedWindowRepositioning));
|
||||
},
|
||||
@ -1263,6 +1317,7 @@ const Workspace = new Lang.Class({
|
||||
clone.actor.set_position (this._x, this._y);
|
||||
}
|
||||
|
||||
this._currentLayout = null;
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||
},
|
||||
|
||||
@ -1300,6 +1355,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
// Animate the full-screen to Overview transition.
|
||||
zoomToOverview : function() {
|
||||
this._currentLayout = null;
|
||||
|
||||
// Position and scale the windows.
|
||||
if (Main.overview.animationInProgress)
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
|
||||
@ -1464,29 +1521,108 @@ const Workspace = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_computeWindowSlot : function(windowIndex, numberOfWindows) {
|
||||
if (numberOfWindows in POSITIONS)
|
||||
return POSITIONS[numberOfWindows][windowIndex];
|
||||
_isBetterLayout: function(oldLayout, newLayout) {
|
||||
if (oldLayout.scale === undefined)
|
||||
return true;
|
||||
|
||||
// If we don't have a predefined scheme for this window count,
|
||||
// arrange the windows in a grid pattern.
|
||||
let gridWidth = Math.ceil(Math.sqrt(numberOfWindows));
|
||||
let gridHeight = Math.ceil(numberOfWindows / gridWidth);
|
||||
let spacePower = (newLayout.space - oldLayout.space) * LAYOUT_SPACE_WEIGHT;
|
||||
let scalePower = (newLayout.scale - oldLayout.scale) * LAYOUT_SCALE_WEIGHT;
|
||||
|
||||
let fraction = 0.95 * (1. / gridWidth);
|
||||
|
||||
let xCenter = (.5 / gridWidth) + ((windowIndex) % gridWidth) / gridWidth;
|
||||
let yCenter = (.5 / gridHeight) + Math.floor((windowIndex / gridWidth)) / gridHeight;
|
||||
|
||||
return [xCenter, yCenter, fraction];
|
||||
if (newLayout.scale > oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||
// Win win -- better scale and better space
|
||||
return true;
|
||||
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
|
||||
// Keep new layout only if scale gain outweights aspect space loss
|
||||
return scalePower > spacePower;
|
||||
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||
// Keep new layout only if aspect space gain outweights scale loss
|
||||
return spacePower > scalePower;
|
||||
} else {
|
||||
// Lose -- worse scale and space
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
_computeAllWindowSlots: function(totalWindows) {
|
||||
let slots = [];
|
||||
for (let i = 0; i < totalWindows; i++) {
|
||||
slots.push(this._computeWindowSlot(i, totalWindows));
|
||||
_computeLayout: function(windows, area, rowSpacing, columnSpacing, bottomPadding) {
|
||||
// We look for the largest scale that allows us to fit the
|
||||
// largest row/tallest column on the workspace.
|
||||
|
||||
let lastLayout = {};
|
||||
|
||||
for (let numRows = 1; ; numRows++) {
|
||||
let numColumns = Math.ceil(windows.length / numRows);
|
||||
|
||||
// If adding a new row does not change column count just stop
|
||||
// (for instance: 9 windows, with 3 rows -> 3 columns, 4 rows ->
|
||||
// 3 columns as well => just use 3 rows then)
|
||||
if (numColumns == lastLayout.numColumns)
|
||||
break;
|
||||
|
||||
let strategyClass = numRows > 2 ? GridLayoutStrategy : UnalignedLayoutStrategy;
|
||||
let strategy = new strategyClass(this._monitor, rowSpacing, columnSpacing, bottomPadding);
|
||||
|
||||
let layout = { area: area, strategy: strategy, numRows: numRows, numColumns: numColumns };
|
||||
strategy.computeLayout(windows, layout);
|
||||
strategy.computeScaleAndSpace(layout);
|
||||
|
||||
if (!this._isBetterLayout(lastLayout, layout))
|
||||
break;
|
||||
|
||||
lastLayout = layout;
|
||||
}
|
||||
return slots;
|
||||
|
||||
return lastLayout;
|
||||
},
|
||||
|
||||
_rectEqual: function(one, two) {
|
||||
if (one == two)
|
||||
return true;
|
||||
|
||||
return (one.x == two.x &&
|
||||
one.y == two.y &&
|
||||
one.width == two.width &&
|
||||
one.height == two.height);
|
||||
},
|
||||
|
||||
_computeAllWindowSlots: function(windows) {
|
||||
let totalWindows = windows.length;
|
||||
let node = this.actor.get_theme_node();
|
||||
|
||||
// Window grid spacing
|
||||
let columnSpacing = node.get_length('-horizontal-spacing');
|
||||
let rowSpacing = node.get_length('-vertical-spacing');
|
||||
|
||||
if (!totalWindows)
|
||||
return [];
|
||||
|
||||
let closeButtonHeight, captionHeight;
|
||||
if (this._windowOverlays.length) {
|
||||
// All of the overlays have the same chrome sizes,
|
||||
// so just pick the first one.
|
||||
let overlay = this._windowOverlays[0];
|
||||
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
|
||||
} else {
|
||||
[closeButtonHeight, captionHeight] = [0, 0];
|
||||
}
|
||||
|
||||
rowSpacing += captionHeight;
|
||||
|
||||
let area = { x: this._x, y: this._y, width: this._width, height: this._height };
|
||||
area.y += closeButtonHeight;
|
||||
area.height -= closeButtonHeight;
|
||||
|
||||
if (!this._currentLayout)
|
||||
this._currentLayout = this._computeLayout(windows, area, rowSpacing, columnSpacing, captionHeight);
|
||||
|
||||
let layout = this._currentLayout;
|
||||
let strategy = layout.strategy;
|
||||
|
||||
if (!this._rectEqual(area, layout.area)) {
|
||||
layout.area = area;
|
||||
strategy.computeScaleAndSpace(layout);
|
||||
}
|
||||
|
||||
return strategy.computeWindowSlots(layout, area);
|
||||
},
|
||||
|
||||
_onCloneSelected : function (clone, time) {
|
||||
|
@ -51,7 +51,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._clipY = 0;
|
||||
this._clipWidth = 0;
|
||||
this._clipHeight = 0;
|
||||
this._workspaceRatioSpacing = 0;
|
||||
this._spacing = 0;
|
||||
this._animating = false; // tweening
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
@ -72,6 +71,7 @@ const WorkspacesView = new Lang.Class({
|
||||
this._workspaces[w].actor.reparent(this.actor);
|
||||
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
||||
|
||||
this._extraWorkspaces = [];
|
||||
this._updateExtraWorkspaces();
|
||||
|
||||
// Position/scale the desktop windows and their children after the
|
||||
@ -83,8 +83,6 @@ const WorkspacesView = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
for (let w = 0; w < this._workspaces.length; w++)
|
||||
this._workspaces[w].zoomToOverview();
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||
this._extraWorkspaces[w].zoomToOverview();
|
||||
}));
|
||||
@ -124,7 +122,6 @@ const WorkspacesView = new Lang.Class({
|
||||
if (!this._settings.get_boolean('workspaces-only-on-primary'))
|
||||
return;
|
||||
|
||||
this._extraWorkspaces = [];
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (i == Main.layoutManager.primaryIndex)
|
||||
@ -139,23 +136,20 @@ const WorkspacesView = new Lang.Class({
|
||||
},
|
||||
|
||||
_destroyExtraWorkspaces: function() {
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
|
||||
for (let m = 0; m < this._extraWorkspaces.length; m++)
|
||||
this._extraWorkspaces[m].destroy();
|
||||
this._extraWorkspaces = null;
|
||||
this._extraWorkspaces = [];
|
||||
},
|
||||
|
||||
setGeometry: function(x, y, width, height, spacing) {
|
||||
setGeometry: function(x, y, width, height) {
|
||||
if (this._x == x && this._y == y &&
|
||||
this._width == width && this._height == height)
|
||||
return;
|
||||
|
||||
this._width = width;
|
||||
this._height = height;
|
||||
this._x = x;
|
||||
this._y = y;
|
||||
this._workspaceRatioSpacing = spacing;
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setGeometry(x, y, width, height);
|
||||
@ -191,8 +185,6 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
for (let w = 0; w < this._workspaces.length; w++)
|
||||
this._workspaces[w].zoomFromOverview();
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||
this._extraWorkspaces[w].zoomFromOverview();
|
||||
},
|
||||
@ -204,8 +196,6 @@ const WorkspacesView = new Lang.Class({
|
||||
syncStacking: function(stackIndices) {
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].syncStacking(stackIndices);
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].syncStacking(stackIndices);
|
||||
},
|
||||
@ -234,7 +224,7 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
Tweener.removeTweens(workspace.actor);
|
||||
|
||||
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
|
||||
let y = (w - active) * (this._height + this._spacing);
|
||||
|
||||
if (showAnimation) {
|
||||
let params = { y: y,
|
||||
@ -376,9 +366,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._firstDragMotion = false;
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||
if (!this._extraWorkspaces)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||
}
|
||||
@ -392,9 +379,6 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setReservedSlot(null);
|
||||
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].setReservedSlot(null);
|
||||
},
|
||||
@ -541,6 +525,16 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._notifyOpacityId = 0;
|
||||
this._swipeScrollBeginId = 0;
|
||||
this._swipeScrollEndId = 0;
|
||||
|
||||
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
|
||||
this._settings.connect('changed::dynamic-workspaces',
|
||||
Lang.bind(this, this._updateSwitcherVisibility));
|
||||
},
|
||||
|
||||
_updateSwitcherVisibility: function() {
|
||||
this._thumbnailsBox.actor.visible =
|
||||
this._settings.get_boolean('dynamic-workspaces') ||
|
||||
global.screen.n_workspaces > 1;
|
||||
},
|
||||
|
||||
show: function() {
|
||||
@ -563,6 +557,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
|
||||
this._controls.show();
|
||||
this._thumbnailsBox.show();
|
||||
this._updateSwitcherVisibility();
|
||||
|
||||
this._updateWorkspacesViews();
|
||||
|
||||
@ -864,28 +859,23 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
|
||||
let clipWidth = width - controlsVisible;
|
||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
||||
let clipHeight = fullHeight;
|
||||
let clipX = rtl ? x + controlsVisible : x;
|
||||
let clipY = y + (fullHeight - clipHeight) / 2;
|
||||
|
||||
let widthAdjust = this._zoomOut ? controlsNatural : controlsVisible;
|
||||
widthAdjust += Main.overview._spacing;
|
||||
width -= widthAdjust;
|
||||
if (rtl)
|
||||
x += widthAdjust;
|
||||
|
||||
height = (fullHeight / fullWidth) * width;
|
||||
let difference = fullHeight - height;
|
||||
y += difference / 2;
|
||||
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
let m = 0;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (i == this._primaryIndex) {
|
||||
this._workspacesViews[m].setClipRect(clipX, clipY,
|
||||
clipWidth, clipHeight);
|
||||
this._workspacesViews[m].setGeometry(x, y, width, height,
|
||||
difference);
|
||||
this._workspacesViews[m].setGeometry(x, y, width, height);
|
||||
m++;
|
||||
} else if (!this._workspacesOnlyOnPrimary) {
|
||||
this._workspacesViews[m].setClipRect(monitors[i].x,
|
||||
@ -895,7 +885,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._workspacesViews[m].setGeometry(monitors[i].x,
|
||||
monitors[i].y,
|
||||
monitors[i].width,
|
||||
monitors[i].height, 0);
|
||||
monitors[i].height);
|
||||
m++;
|
||||
}
|
||||
}
|
||||
@ -932,16 +922,17 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
let m = 0;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (this._workspacesOnlyOnPrimaryChanged &&
|
||||
if (this._workspacesOnlyOnPrimary &&
|
||||
i != this._primaryIndex)
|
||||
continue;
|
||||
|
||||
// Assume workspaces are only added at the end
|
||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
||||
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
||||
this._workspaces[m++][w] =
|
||||
this._workspaces[m][w] =
|
||||
new Workspace.Workspace(metaWorkspace, i);
|
||||
}
|
||||
m++;
|
||||
}
|
||||
|
||||
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
||||
@ -974,6 +965,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
|
||||
newNumWorkspaces);
|
||||
this._updateSwitcherVisibility();
|
||||
},
|
||||
|
||||
_updateZoom : function() {
|
||||
|
149
po/be.po
149
po/be.po
@ -5,8 +5,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-26 15:06+0300\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
|
||||
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
|
||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||
"Language: be\n"
|
||||
@ -34,6 +34,14 @@ msgstr "Сістэма"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Паказаць абшар апавяшчэнняў"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Паказаць усе праграмы"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Адкрыць праграмнае меню"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Абалонка GNOME"
|
||||
@ -152,34 +160,43 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\" у Аглядзе Заняткаў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Клавіятурны скарот для ўключэння запісу экрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Клавіятурны скарот для запуску/спынення ўбудаванага запісу экрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Ужываная клавіятура"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Від ужыванай клавіятуры."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Частата змены кадраў для запісу скрынкасту."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -187,11 +204,11 @@ msgstr ""
|
||||
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
|
||||
"GNOME (кадраў на секунду)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -217,11 +234,11 @@ msgstr ""
|
||||
"queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка VP8. %T ўжываецца ў "
|
||||
"якасці замены аптымальнай для сістэмы колькасці ніцяў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Пашырэнне файла для захавання скрынкасту"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -246,11 +263,11 @@ msgstr ""
|
||||
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
|
||||
"вышэй."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Сеанс..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Уваход"
|
||||
@ -258,23 +275,23 @@ msgstr "Уваход"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Няма ў спісе?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Скасаваць"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Увайсці"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Акно ўваходу"
|
||||
|
||||
@ -283,8 +300,8 @@ msgstr "Акно ўваходу"
|
||||
msgid "Power"
|
||||
msgstr "Праца сістэмы"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Прыпыніць камп'ютар"
|
||||
|
||||
@ -292,8 +309,8 @@ msgstr "Прыпыніць камп'ютар"
|
||||
msgid "Restart"
|
||||
msgstr "Перазапусціць сістэму"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Выключыць камп'ютар"
|
||||
|
||||
@ -344,7 +361,7 @@ msgstr "НАСТРОЙКІ"
|
||||
msgid "New Window"
|
||||
msgstr "Новае акно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Выдаліць са спіса ўпадабанага"
|
||||
|
||||
@ -508,16 +525,16 @@ msgstr "На гэтым тыдні"
|
||||
msgid "Next week"
|
||||
msgstr "На наступным тыдні"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Зменныя прыстасаванні"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Адкрыць у %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Выняць"
|
||||
|
||||
@ -888,7 +905,7 @@ msgstr "Рэдагаваць конт"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Невядомая прычына"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Паказаць праграмы"
|
||||
|
||||
@ -896,14 +913,14 @@ msgstr "Паказаць праграмы"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Настройкі даты і часу"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Адкрыць каляндар"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B, %Y"
|
||||
|
||||
@ -1014,11 +1031,11 @@ msgstr "Усталяваць"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "трэй"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавіятура"
|
||||
@ -1071,19 +1088,19 @@ msgstr "Паглядзець выточны код"
|
||||
msgid "Web Page"
|
||||
msgstr "Сеціўная старонка"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Адкрыць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Выдаліць"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Абшар апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Сістэмная інфармацыя"
|
||||
|
||||
@ -1147,7 +1164,7 @@ msgstr "Увядзіце загад:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1155,7 +1172,7 @@ msgstr[0] "%d новае паведамленне"
|
||||
msgstr[1] "%d новыя паведамленні"
|
||||
msgstr[2] "%d новых паведамленняў"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1195,7 +1212,7 @@ msgstr "Пароль"
|
||||
msgid "Remember Password"
|
||||
msgstr "Запомніць пароль"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Разблакіраваць"
|
||||
|
||||
@ -1314,7 +1331,7 @@ msgstr "Настройкі клавіятуры"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Настройкі мышы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Настройкі гуку"
|
||||
|
||||
@ -1603,7 +1620,7 @@ msgid "Unknown"
|
||||
msgstr "Невядомае"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Гучнасць"
|
||||
|
||||
@ -1611,7 +1628,7 @@ msgstr "Гучнасць"
|
||||
msgid "Microphone"
|
||||
msgstr "Мікрафон"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Увайсці іншым карыстальнікам"
|
||||
|
||||
@ -1639,39 +1656,35 @@ msgstr "Бяздзейны"
|
||||
msgid "Unavailable"
|
||||
msgstr "Недаступны"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Перамяніць карыстальніка"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Перамяніць сеанс"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Апавяшчэнні"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Сістэмныя настройкі"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Перамяніць карыстальніка"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Выйсці з сеанса"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Заблакіраваць"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Усталяваць абнаўленні і перазагрузіць камп'ютар"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Вам прызначаны стан занятасці для чату"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1680,19 +1693,19 @@ msgstr ""
|
||||
"сеціўны стан абноўлены інфармацыяй аб тым, што вы можаце не ўбачыць чужых "
|
||||
"паведамленняў у час."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Вокны"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Праграмы"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Пошук"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1701,12 +1714,12 @@ msgstr ""
|
||||
"На жаль, на сёння не хапіла мудрасцяў:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Так сказаў Вяшчун %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ваша ўлюбёнае велікоднае яйка"
|
||||
|
||||
@ -1743,19 +1756,19 @@ msgstr[2] "%u уваходаў"
|
||||
msgid "System Sounds"
|
||||
msgstr "Сістэмныя гукі"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Вывесці нумар версіі праграмы"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Ужыць асаблівы рэжым, напрыклад, \"gdm\" для экрана ўваходу"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Вывесці спіс магчымых рэжымаў"
|
||||
|
||||
|
135
po/el.po
135
po/el.po
@ -4,8 +4,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.po.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 11:15+0200\n"
|
||||
"POT-Creation-Date: 2012-10-16 20:41+0000\n"
|
||||
"PO-Revision-Date: 2012-10-23 15:39+0200\n"
|
||||
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
||||
"Language-Team: team@gnome.gr\n"
|
||||
"Language: el\n"
|
||||
@ -23,7 +23,7 @@ msgstr "Στιγμιότυπα οθόνης"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr "Καταγραφή ενός βίντεο παρουσίασης"
|
||||
msgstr "Καταγραφή ενός βίντεο οθόνης"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -182,21 +182,21 @@ msgstr "Ο τύπος του πληκτρολογίου που θα χρησιμ
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr ""
|
||||
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο παρουσίασης."
|
||||
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο οθόνης."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο "
|
||||
"παρουσίασης του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
||||
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο οθόνης "
|
||||
"του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr ""
|
||||
"Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του βίντεο "
|
||||
"παρουσίασης"
|
||||
"οθόνης"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, no-c-format
|
||||
@ -229,8 +229,7 @@ msgstr ""
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr ""
|
||||
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο "
|
||||
"παρουσίασης"
|
||||
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο οθόνης"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
msgid ""
|
||||
@ -238,7 +237,7 @@ msgid ""
|
||||
"current date, and use this extension. It should be changed when recording to "
|
||||
"a different container format."
|
||||
msgstr ""
|
||||
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο παρουσίασης θα είναι μοναδικό, "
|
||||
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο οθόνης θα είναι μοναδικό, "
|
||||
"βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα "
|
||||
"πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη."
|
||||
|
||||
@ -259,11 +258,11 @@ msgstr ""
|
||||
"Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το πλαίσιο "
|
||||
"πολλαπλών επιλογών."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Συνεδρία..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Σύνδεση"
|
||||
@ -271,34 +270,33 @@ msgstr "Σύνδεση"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Δεν είστε στη λίστα;"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Ακύρωση"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Σύνδεση"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Παράθυρο σύνδεσης"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Ενέργεια"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Αναστολή"
|
||||
|
||||
@ -306,10 +304,10 @@ msgstr "Αναστολή"
|
||||
msgid "Restart"
|
||||
msgstr "Επανεκκίνηση"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
msgid "Authentication error"
|
||||
@ -358,7 +356,7 @@ msgstr "ΡΥΘΜΙΣΕΙΣ"
|
||||
msgid "New Window"
|
||||
msgstr "Νέο παράθυρο"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Αφαίρεση από τα αγαπημένα"
|
||||
|
||||
@ -522,16 +520,16 @@ msgstr "Αυτή η εβδομάδα"
|
||||
msgid "Next week"
|
||||
msgstr "Επόμενη εβδομάδα"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Αφαιρούμενες συσκευές"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Άνοιγμα με %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Εξαγωγή"
|
||||
|
||||
@ -651,7 +649,7 @@ msgstr "Συγνώμη, αυτό δεν λειτούργησε. Παρακαλώ
|
||||
#: ../js/ui/components/recorder.js:44
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Βίντεο παρουσίαση από %d %t"
|
||||
msgstr "Βίντεο οθόνης από %d %t"
|
||||
|
||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||
#. system-users for now as Empathy does.
|
||||
@ -905,7 +903,7 @@ msgstr "Επεξεργασία λογαριασμού"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Άγνωστος λόγος"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Προβολή εφαρμογών"
|
||||
|
||||
@ -913,14 +911,14 @@ msgstr "Προβολή εφαρμογών"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ρυθμίσεις ώρας και ημερομηνίας"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Άνοιγμα ημερολογίου"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %B %e, %Y"
|
||||
|
||||
@ -967,13 +965,13 @@ msgstr "Αποσύνδεση"
|
||||
#: ../js/ui/endSessionDialog.js:81
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:82
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr ""
|
||||
"Πατήστε Τερματισμός για να κλείσετε αυτές τις εφαρμογές και να "
|
||||
"απενεργοποιήσετε το σύστημα."
|
||||
"Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να "
|
||||
"τερματίσετε το σύστημα."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:84
|
||||
#, c-format
|
||||
@ -994,7 +992,7 @@ msgstr "Επανεκκίνηση"
|
||||
#: ../js/ui/endSessionDialog.js:92
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:98
|
||||
msgctxt "title"
|
||||
@ -1027,11 +1025,11 @@ msgstr "Εγκατάσταση"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Λήψη και εγκατάσταση '%s' από το extensions.gnome.org ;"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "περιοχή"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Πληκτρολόγιο"
|
||||
@ -1084,19 +1082,19 @@ msgstr "Προβολή πηγής"
|
||||
msgid "Web Page"
|
||||
msgstr "Ιστοσελίδα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Άνοιγμα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Αφαίρεση"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Περιοχή ειδοποιήσεων"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Πληροφορίες συστήματος"
|
||||
|
||||
@ -1160,14 +1158,14 @@ msgstr "Παρακαλώ πληκτρολογήστε μία εντολή:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d νέο μήνυμα"
|
||||
msgstr[1] "%d νέα μηνύματα"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1206,7 +1204,7 @@ msgstr "Κωδικός"
|
||||
msgid "Remember Password"
|
||||
msgstr "Απομνημόνευση κωδικού"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Ξεκλείδωμα"
|
||||
|
||||
@ -1325,7 +1323,7 @@ msgstr "Ρυθμίσεις πληκτρολογίου"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Ρυθμίσεις ποντικιού"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Ρυθμίσεις ήχου"
|
||||
|
||||
@ -1610,7 +1608,7 @@ msgid "Unknown"
|
||||
msgstr "Άγνωστο"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Ένταση ήχου"
|
||||
|
||||
@ -1618,7 +1616,7 @@ msgstr "Ένταση ήχου"
|
||||
msgid "Microphone"
|
||||
msgstr "Μικρόφωνο"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Είσοδος ως άλλος χρήστης"
|
||||
|
||||
@ -1646,39 +1644,35 @@ msgstr "Αδρανής"
|
||||
msgid "Unavailable"
|
||||
msgstr "Μη διαθέσιμος-η"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Αλλαγή συνεδρίας"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Ειδοποιήσεις"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Ρυθμίσεις συστήματος"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Αποσύνδεση"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Κλείδωμα"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1699,7 +1693,7 @@ msgstr "Εφαρμογές"
|
||||
msgid "Search"
|
||||
msgstr "Αναζήτηση"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1708,12 +1702,12 @@ msgstr ""
|
||||
"Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s ο Προφήτης λέει"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Το αγαπημένο σας Easter Egg"
|
||||
|
||||
@ -1748,20 +1742,20 @@ msgstr[1] "%u είσοδοι"
|
||||
msgid "System Sounds"
|
||||
msgstr "Ήχοι συστήματος"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Εκτύπωση έκδοσης"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Λειτουργία που απαιτείται από το GDM για την οθόνη σύνδεσης"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Χρησιμοποιήστε μια συγκεκριμένη λειτουργία, π.χ \"gdm\" για την οθόνη εισόδου"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Λίστα πιθανών λειτουργιών"
|
||||
|
||||
@ -1790,6 +1784,9 @@ msgstr "Προεπιλογή"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Αλλαγή συνεδρίας"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch"
|
||||
|
||||
|
159
po/es.po
159
po/es.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 10:26+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 11:06+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@ -37,6 +37,16 @@ msgstr "Sistema"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Mostrar la bandeja de mensajes"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Mostrar todas las aplicaciones"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Abrir el menú de la aplicación"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -155,34 +165,47 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
|
||||
"de actividades."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Qué teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "El tipo de teclado que usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -190,11 +213,11 @@ msgstr ""
|
||||
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
||||
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -220,11 +243,11 @@ msgstr ""
|
||||
"threads=%T ! queue ! webmmux» y graba en WEBM usando el códec VP8. Se usa %T "
|
||||
"como marcador de posición para el número de hilos óptimos en el sistema."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -248,11 +271,11 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesión…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
@ -260,34 +283,33 @@ msgstr "Iniciar sesión"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "¿No está en la lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Ventana de inicio de sesión"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Energía"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
@ -295,8 +317,8 @@ msgstr "Suspender"
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -347,7 +369,7 @@ msgstr "CONFIGURACIÓN"
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
@ -511,16 +533,16 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "La semana que viene"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbles"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Expulsar"
|
||||
|
||||
@ -894,7 +916,7 @@ msgstr "Editar cuenta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón desconocida"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Mostrar aplicaciones"
|
||||
|
||||
@ -902,14 +924,14 @@ msgstr "Mostrar aplicaciones"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ajustes de hora y fecha"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir calendario"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e de %B de %Y"
|
||||
|
||||
@ -1013,11 +1035,11 @@ msgstr "Instalar"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "bandeja"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
@ -1070,19 +1092,19 @@ msgstr "Ver fuente"
|
||||
msgid "Web Page"
|
||||
msgstr "Página web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandeja de mensajes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@ -1146,14 +1168,14 @@ msgstr "Introduzca un comando:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d mensaje nuevo"
|
||||
msgstr[1] "%d mensajes nuevos"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1192,7 +1214,7 @@ msgstr "Contraseña"
|
||||
msgid "Remember Password"
|
||||
msgstr "Recordar contraseña"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Desbloquear"
|
||||
|
||||
@ -1310,7 +1332,7 @@ msgstr "Configuración del teclado"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Ajustes del ratón…"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Configuración del sonido"
|
||||
|
||||
@ -1595,7 +1617,7 @@ msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volumen"
|
||||
|
||||
@ -1603,7 +1625,7 @@ msgstr "Volumen"
|
||||
msgid "Microphone"
|
||||
msgstr "Micrófono"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Iniciar sesión como otro usuario"
|
||||
|
||||
@ -1631,39 +1653,35 @@ msgstr "Inactivo"
|
||||
msgid "Unavailable"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Cambiar de sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaciones"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Configuración del sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Cerrar la sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instalar actualizaciones y reiniciar"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1672,19 +1690,19 @@ msgstr ""
|
||||
"chat. Su estado en línea se ha ajustado para que otros sepan que puede no "
|
||||
"leer sus mensajes."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplicaciones"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1693,12 +1711,12 @@ msgstr ""
|
||||
"Hoy no tiene ningún mensaje:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s el oráculo dice"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Su mensaje oculto favorito"
|
||||
|
||||
@ -1733,21 +1751,21 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
||||
"sesión"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar los modos posibles"
|
||||
|
||||
@ -1776,6 +1794,9 @@ msgstr "Predeterminada"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Cambiar de sesión"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "proveedores OpenSearch desactivados"
|
||||
|
||||
|
146
po/gl.po
146
po/gl.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-25 10:47+0200\n"
|
||||
"PO-Revision-Date: 2012-09-25 10:48+0200\n"
|
||||
"POT-Creation-Date: 2012-10-16 13:35+0200\n"
|
||||
"PO-Revision-Date: 2012-10-16 14:22+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||
"Language: gl\n"
|
||||
@ -39,6 +39,14 @@ msgstr "Sistema"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Mostrar a bandexa de mensaxes"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Mostrar todos os aplicativos"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Abrir o menú de aplicativo"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -156,35 +164,46 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Combinación de teclas para abrir a vista «Mostrar aplicativos»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Combinación de teclas para abrir a vista \"Mostrar aplicativos\" da Vista xera "
|
||||
"de Actividades."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Combinación de teclas para trocar a gravadora de pantalla"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr ""
|
||||
"Combinación de teclas para iniciar/deter a gravadora de pantalla incrustada."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Que teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "O tipo de teclado a usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Taxa de marcos usada para gravar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -192,11 +211,11 @@ msgstr ""
|
||||
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
||||
"«screencast» de GNOME Shell, en marcos por segundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -222,11 +241,11 @@ msgstr ""
|
||||
"queue ! webmmux» e grava en WEBM usando o códec VP8. Úsase %T como marcador "
|
||||
"de posición para o número de fillos óptimos no sistema."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -250,11 +269,11 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesión…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
@ -262,23 +281,23 @@ msgstr "Iniciar sesión"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Non está na lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Xanela de inicio de sesión"
|
||||
|
||||
@ -287,8 +306,8 @@ msgstr "Xanela de inicio de sesión"
|
||||
msgid "Power"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
@ -296,8 +315,8 @@ msgstr "Suspender"
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -348,7 +367,7 @@ msgstr "CONFIGURACIÓN"
|
||||
msgid "New Window"
|
||||
msgstr "Xanela nova"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Retirar dos marcadores"
|
||||
|
||||
@ -512,16 +531,16 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "A vindeira semana"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbeis"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Expulsar"
|
||||
|
||||
@ -895,7 +914,7 @@ msgstr "Editar conta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón descoñecida"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Mostrar aplicativos"
|
||||
|
||||
@ -903,14 +922,14 @@ msgstr "Mostrar aplicativos"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Preferencias de data e hora"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir o calendario"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e de %B, %Y"
|
||||
|
||||
@ -1078,11 +1097,11 @@ msgstr "Abrir"
|
||||
msgid "Remove"
|
||||
msgstr "Retirar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandexa de mensaxes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Información do sistema"
|
||||
|
||||
@ -1146,14 +1165,14 @@ msgstr "Escriba unha orde:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d mensaxe nova"
|
||||
msgstr[1] "%d mensaxes novas"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1192,7 +1211,7 @@ msgstr "Contrasinal"
|
||||
msgid "Remember Password"
|
||||
msgstr "Lembrar o contrasinal"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Desbloquear"
|
||||
|
||||
@ -1310,7 +1329,7 @@ msgstr "Preferencias do teclado"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Preferencias do rato"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Preferencias do son"
|
||||
|
||||
@ -1595,7 +1614,7 @@ msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1603,7 +1622,7 @@ msgstr "Volume"
|
||||
msgid "Microphone"
|
||||
msgstr "Micrófono"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Iniciar sesión como outro usuario"
|
||||
|
||||
@ -1631,39 +1650,35 @@ msgstr "Inactivo"
|
||||
msgid "Unavailable"
|
||||
msgstr "Non dispoñíbel"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Cambiar de sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacións"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Preferencias do sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Saír da sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instalar actualizacións e reiniciar"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "O seu estado de conversa definirase como «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1672,19 +1687,19 @@ msgstr ""
|
||||
"conversa. O seu estado de conexión axustouse para que outros saiban que non "
|
||||
"quere ver as súas mensaxes."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Xanelas"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1693,12 +1708,12 @@ msgstr ""
|
||||
"Hoxe non ten ningunha mensaxe:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s o oráculo dí"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "A súa mensaxe oculta favorita"
|
||||
|
||||
@ -1733,21 +1748,21 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons do sistema"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
||||
"sesión"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar os modos posíbeis"
|
||||
|
||||
@ -1776,6 +1791,9 @@ msgstr "Predeterminado"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "O usuario rexeitou o diálogo de autenticación"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Cambiar de sesión"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "fornecedores OpenSearch desactivados"
|
||||
|
||||
|
154
po/id.po
154
po/id.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 09:53+0700\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 07:11+0700\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
||||
"Language: id\n"
|
||||
@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Generator: Poedit 1.5.3\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
@ -38,6 +38,14 @@ msgstr "Sistem"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Tampilkan baki pesan"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Tampilkan semua aplikasi"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Buka menu aplikasi"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -155,34 +163,45 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Kombinasi tombol untuk membuka menu aplikasi."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan "
|
||||
"Aplikasi\"."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Kombinasi tombol untuk perekaman layar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Kombinasi tombol mulai/menghentikan perekam layar bawaan."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Papan tik mana yang akan dipakai"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Jenis papan tik yang akan dipakai."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Laju gambar untuk menyimpan tangkapan layar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -190,11 +209,11 @@ msgstr ""
|
||||
"Laju frame dari hasil screencast yang direkam oleh perekam screencast GNOME "
|
||||
"Shell dalam frame per detik."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Jalur pipa gstreamer yang dipakai untuk mengode screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -220,11 +239,11 @@ msgstr ""
|
||||
"dan merekam ke WEBM memakai kodek VP8. %T digunakan sebagai pewakil untuk "
|
||||
"perkiraan jumlah thread optimal pada sistem."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -247,11 +266,11 @@ msgstr "Ekstensi"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesi..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Masuk"
|
||||
@ -259,34 +278,33 @@ msgstr "Masuk"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Tak masuk daftar?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Masuk"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Jendela Log Masuk"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Daya"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspensi"
|
||||
|
||||
@ -294,8 +312,8 @@ msgstr "Suspensi"
|
||||
msgid "Restart"
|
||||
msgstr "Nyalakan Ulang"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Matikan"
|
||||
|
||||
@ -346,7 +364,7 @@ msgstr "PENGATURAN"
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
@ -510,16 +528,16 @@ msgstr "Minggu ini"
|
||||
msgid "Next week"
|
||||
msgstr "Minggu depan"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Perangkat Yang Dapat Dicabut"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Buka dengan %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Keluarkan"
|
||||
|
||||
@ -891,7 +909,7 @@ msgstr "Sunting Akun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Alasan yang tidak diketahui"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Tampilkan Aplikasi"
|
||||
|
||||
@ -899,14 +917,14 @@ msgstr "Tampilkan Aplikasi"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Pengaturan Waktu dan Tanggal"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Buka Kalender"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
|
||||
@ -1005,11 +1023,11 @@ msgstr "Pasang"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "baki"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Papan Ketik"
|
||||
@ -1062,19 +1080,19 @@ msgstr "Tilik Sumber"
|
||||
msgid "Web Page"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Buka"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Hapus"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Baki Pesan"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1139,13 +1157,13 @@ msgstr "Ketikkan perintah:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d pesan baru"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1183,7 +1201,7 @@ msgstr "Sandi"
|
||||
msgid "Remember Password"
|
||||
msgstr "Ingat Sandi"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Buka Kunci"
|
||||
|
||||
@ -1301,7 +1319,7 @@ msgstr "Pengaturan Papan Ketik"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Pengaturan Tetikus"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Pengaturan Suara"
|
||||
|
||||
@ -1582,7 +1600,7 @@ msgid "Unknown"
|
||||
msgstr "Tak Dikenal"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1590,7 +1608,7 @@ msgstr "Volume"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Masuk sebagai pengguna lain"
|
||||
|
||||
@ -1618,39 +1636,35 @@ msgstr "Menganggur"
|
||||
msgid "Unavailable"
|
||||
msgstr "Tak tersedia"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Ganti Pengguna"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Pindah Sesi"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Pemberitahuan"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Pengaturan Sistem"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Ganti Pengguna"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Keluar"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Kunci"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Pasang Pemutakhiran & Jalankan Ulang"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Status obrolan Anda akan ditata ke sibuk"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1659,19 +1673,19 @@ msgstr ""
|
||||
"telah disesuaikan untuk memberitahu pihak lain bahwa Anda mungkin tak "
|
||||
"melihat pesan mereka."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Jendela"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplikasi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Cari"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1680,12 +1694,12 @@ msgstr ""
|
||||
"Maaf, tidak ada kata-kata bijak bagi Anda hari ini:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s sang Peramal berkata"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Easter Egg kesukaan Anda"
|
||||
|
||||
@ -1718,19 +1732,19 @@ msgstr[0] "%u Masukan"
|
||||
msgid "System Sounds"
|
||||
msgstr "Suara Sistem"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Versi Cetak"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Mode yang dipakai oleh layar log masuk GDM"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Menampilkan mode yang mungkin"
|
||||
|
||||
|
153
po/ja.po
153
po/ja.po
@ -12,9 +12,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 09:10+0900\n"
|
||||
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
|
||||
"POT-Creation-Date: 2012-10-16 12:22+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 10:53+0900\n"
|
||||
"Last-Translator: Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
|
||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -39,6 +39,14 @@ msgstr "システム"
|
||||
msgid "Show the message tray"
|
||||
msgstr "メッセージトレイを表示する"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "すべてのアプリケーションを表示"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "アプリケーションメニューを開く"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -121,51 +129,59 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "アプリケーションメニューを開くためのキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "「アプリケーションの表示」のビューを開くキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "アクティビティで「アプリケーションの表示」のビューを開くキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "メッセージトレイの表示・非表示を切り替えるキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "メッセージトレイを表示したり非表示にしたりするのを切り替えるキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "スクリーンレコーダー切り替えのキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "内蔵のスクリーンレコーダーを起動したり止めたりするキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "使いたいキーボードの種類"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "使いたいキーボードの種類です。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "スクリーンキャスト録画のフレームレート"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒あたりのフレーム数です。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc 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 "録画したものをエンコードするための Gstreamer パイプラインを設定します。構文は gst-launch のものに準拠します。パイプラインは未接続の録画用 sink pad を持つようにしてください。パイプラインは通常未接続の source pad を持ち、ファイルへ出力データを書き込みますが、出力方法については独自に定義することもできます。shout2send プラグインやその類似プラグインを経由して icecast サーバーへ出力データを送信するときは、この方法をとります。値が設定されていないか、空の場合は、既定のパイプライン 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' はシステムの最適スレッド数の推量値を示すプレースホルダーです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "ファイルに保存するスクリーンキャストのファイル拡張子"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "録画したスクリーンキャストをファイルに保存する際は、日付を基にした固有の名前とこの拡張子をファイル名として使用します。異なる形式で録画するときは拡張子を変更する必要があります。"
|
||||
|
||||
@ -182,11 +198,11 @@ msgstr "拡張機能"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "セッション..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "サインイン"
|
||||
@ -194,23 +210,23 @@ msgstr "サインイン"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "アカウントが見つかりませんか?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "サインイン"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "ログインウィンドウ"
|
||||
|
||||
@ -219,8 +235,8 @@ msgstr "ログインウィンドウ"
|
||||
msgid "Power"
|
||||
msgstr "電源"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "サスペンド"
|
||||
|
||||
@ -228,8 +244,8 @@ msgstr "サスペンド"
|
||||
msgid "Restart"
|
||||
msgstr "再起動"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "電源オフ"
|
||||
|
||||
@ -280,7 +296,7 @@ msgstr "設定"
|
||||
msgid "New Window"
|
||||
msgstr "新しいウィンドウで開く"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "お気に入りから削除"
|
||||
|
||||
@ -444,16 +460,16 @@ msgstr "今週"
|
||||
msgid "Next week"
|
||||
msgstr "来週"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "リムーバブルデバイス"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "%s で開く"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "取り出し"
|
||||
|
||||
@ -814,7 +830,7 @@ msgstr "アカウントの編集"
|
||||
msgid "Unknown reason"
|
||||
msgstr "原因不明"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "アプリケーションの表示"
|
||||
|
||||
@ -822,14 +838,14 @@ msgstr "アプリケーションの表示"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "日時の設定"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "カレンダーを開く"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%Y年%B%e日 (%a)"
|
||||
|
||||
@ -926,11 +942,11 @@ msgstr "インストール"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "トレイ"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "キーボード"
|
||||
@ -983,19 +999,19 @@ msgstr "ソースの表示"
|
||||
msgid "Web Page"
|
||||
msgstr "ウェブページ"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "開く"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "削除"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "メッセージトレイ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "システム情報"
|
||||
|
||||
@ -1059,13 +1075,13 @@ msgstr "コマンド:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%B%d日 %A"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d 件の新しいメッセージ"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1103,7 +1119,7 @@ msgstr "パスワード"
|
||||
msgid "Remember Password"
|
||||
msgstr "パスワードを保存"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "ロック解除"
|
||||
|
||||
@ -1221,7 +1237,7 @@ msgstr "キーボードの設定"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "マウスの設定"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "サウンドの設定"
|
||||
|
||||
@ -1502,7 +1518,7 @@ msgid "Unknown"
|
||||
msgstr "不明なデバイス"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "音量"
|
||||
|
||||
@ -1510,7 +1526,7 @@ msgstr "音量"
|
||||
msgid "Microphone"
|
||||
msgstr "マイク"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "他のユーザーでログイン"
|
||||
|
||||
@ -1538,55 +1554,51 @@ msgstr "待機中"
|
||||
msgid "Unavailable"
|
||||
msgstr "オフライン"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "ユーザーの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "セッションの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "通知"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "システム設定"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "ユーザーの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "ログアウト"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "ロック"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "更新のインストールと再起動"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "取り込み中に設定されます"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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 "チャットなどの通知メッセージが表示されなくなります。オンライン状態が変更され、あなたがメッセージに目を通せない状態にあることを、他の人が知ることができます。"
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "ウィンドウ"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "アプリケーション"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "検索"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1595,12 +1607,12 @@ msgstr ""
|
||||
"すまない、今日は賢言がないのだ:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "預言者 %s 曰く"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "あなたの好きなイースターエッグ"
|
||||
|
||||
@ -1633,19 +1645,19 @@ msgstr[0] "入力数: %u"
|
||||
msgid "System Sounds"
|
||||
msgstr "システムのサウンド"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "バージョンを表示"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "ログイン画面で GDM が使用するモード"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "指定したモードを使用する (例: ログイン画面用の \"gdm\")"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "使用可能なモードを一覧表示する"
|
||||
|
||||
@ -1674,6 +1686,9 @@ msgstr "既定"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "認証ダイアログはユーザーに拒否されました"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "セッションの切り替え"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "OpenSearch プロバイダーを無効にする"
|
||||
|
||||
|
150
po/sl.po
150
po/sl.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 06:44+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 08:56+0100\n"
|
||||
"POT-Creation-Date: 2012-10-16 00:16+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 07:53+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: Slovenian\n"
|
||||
@ -37,6 +37,14 @@ msgstr "Sistem"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Pokaži sporočilno vrstico"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Pokaži vse programe"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Odpri meni programov"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Gnome lupina"
|
||||
@ -119,51 +127,59 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Tipkovna bližnjica, ki odpre meni programov."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\" v pregledu dejavnosti."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Tipkovna bližnjica za preklop snemalnika zaslona"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Tipkovna bližnjica za začetek in ustavitev vgrajenega snemalnika zaslona"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Katera tipkovnica naj bo uporabljena?"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Vrsta tipkovnice za uporabo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Hitrost sličic uporabljena za snemanje zaslonskega posnetka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "Hitrost sličic shranjenega končnega zaslonskega posnetka v sličicah na sekundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Uporabljen GStreamer cevovod za kodiranje zaslonskega posnetka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc 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 "Nastavi cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za program gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. Vrednost %T se uporablja kot ročnik za ugibanje najustreznejšega števila niti na sistemu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Pripona datoteke uporabljene za shranjevanje zaslonskih posnetkov"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "Ime datoteke zaslonskega posnetka bo enoznačno ime, kateremu bo dodan datum in določena pripona. Pripona mora ustrezati zapisu zabojnika."
|
||||
|
||||
@ -180,11 +196,11 @@ msgstr "Pripona"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Razširitev za nastavljanje je mogoče izbrati iz spustnega seznama zgoraj."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Seja ..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
@ -192,27 +208,27 @@ msgstr "Prijava"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Ali je ni na seznamu?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895
|
||||
#: ../js/gdm/loginDialog.js:889
|
||||
#: ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162
|
||||
#: ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195
|
||||
#: ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427
|
||||
#: ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Prijavno okno"
|
||||
|
||||
@ -222,9 +238,9 @@ msgid "Power"
|
||||
msgstr "Napajanje"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89
|
||||
#: ../js/ui/userMenu.js:663
|
||||
#: ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/ui/userMenu.js:660
|
||||
#: ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Zaustavi"
|
||||
|
||||
@ -233,9 +249,9 @@ msgid "Restart"
|
||||
msgstr "Zaženi znova"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99
|
||||
#: ../js/ui/userMenu.js:665
|
||||
#: ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Izklop"
|
||||
|
||||
@ -287,7 +303,7 @@ msgid "New Window"
|
||||
msgstr "Novo okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678
|
||||
#: ../js/ui/dash.js:271
|
||||
#: ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrani iz priljubljenih"
|
||||
|
||||
@ -451,16 +467,16 @@ msgstr "Ta teden"
|
||||
msgid "Next week"
|
||||
msgstr "Naslednji teden"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Odstranljive naprave"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Odpri s programom %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Izvrzi"
|
||||
|
||||
@ -821,8 +837,8 @@ msgstr "Uredi račun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznan vzrok"
|
||||
|
||||
#: ../js/ui/dash.js:245
|
||||
#: ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253
|
||||
#: ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Pokaži programe"
|
||||
|
||||
@ -830,14 +846,14 @@ msgstr "Pokaži programe"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Nastavitve časa in datuma"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Odpri koledar"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e. %b., %R"
|
||||
|
||||
@ -1015,11 +1031,11 @@ msgstr "Odpri"
|
||||
msgid "Remove"
|
||||
msgstr "Odstrani"
|
||||
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Vrstica sporočanja"
|
||||
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
@ -1084,7 +1100,7 @@ msgstr "Vnos ukaza:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %m."
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1093,7 +1109,7 @@ msgstr[1] "%d novo sporočilo"
|
||||
msgstr[2] "%d novi sporočili"
|
||||
msgstr[3] "%d nova sporočila"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1135,7 +1151,7 @@ msgid "Remember Password"
|
||||
msgstr "Zapomni si geslo"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400
|
||||
#: ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Odkleni"
|
||||
|
||||
@ -1261,7 +1277,7 @@ msgid "Mouse Settings"
|
||||
msgstr "Nastavitve miške"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269
|
||||
#: ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Nastavitve zvoka"
|
||||
|
||||
@ -1562,7 +1578,7 @@ msgstr "Neznano"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47
|
||||
#: ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Glasnost"
|
||||
|
||||
@ -1570,7 +1586,7 @@ msgstr "Glasnost"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prijava kot drug uporabnik"
|
||||
|
||||
@ -1598,56 +1614,51 @@ msgstr "Nedejavno"
|
||||
msgid "Unavailable"
|
||||
msgstr "Nedostopno"
|
||||
|
||||
#: ../js/ui/userMenu.js:618
|
||||
#: ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Preklopi uporabnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Preklopi sejo"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Obvestila"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Sistemske nastavitve"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Preklopi uporabnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Odjava"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Zakleni"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Namesti posodobitve in ponovno zaženi"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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 "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Poišči"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1656,12 +1667,12 @@ msgstr ""
|
||||
"Za danes ni modrosti:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Riba %s pravi"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Vaše priljubljeno velikonočno jajce"
|
||||
|
||||
@ -1700,19 +1711,19 @@ msgstr[3] "%u dovodi naprave"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemski zvoki"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Izpiši različico"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Način uporabljen v GDM za prijavni naslov"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Uporabi poseben način, npr.: \"gdm\" za prijavni zaslon"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Seznam mogočih načinov"
|
||||
|
||||
@ -1741,6 +1752,9 @@ msgstr "Privzeto"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Uporabnik je zavrnil pogovorno okno overitve"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Preklopi sejo"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "ponudniki OpenSearch so bili onemogočeni"
|
||||
|
||||
|
161
po/sr.po
161
po/sr.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-27 05:24+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
|
||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@ -36,6 +36,16 @@ msgstr "Систем"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Прикажите фиоку порука"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Прикажи све програме"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Отворите изборник програма"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Гномова шкољка"
|
||||
@ -143,41 +153,52 @@ msgstr "Ако је изабрано, приказује ИСО дан у нед
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Свеза тастера за отварање изборника програма"
|
||||
msgstr "Пречица за отварање изборника програма"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Свеза тастера за отварање изборника програма."
|
||||
msgstr "Пречица за отварање изборника програма."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Пречица за отварање прегледа „Прикажи програме“"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Пречица за отварање прегледа „Прикажи програме“ у прегледу активности."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Пречица за окидање видљивости фиоке порука"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Пречица за окидање видљивости фиоке порука."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Пречица за окидање читача екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Пречица за покретање/заустављање уграђеног снимача екрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Која ће тастатура бити коришћена"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Врста тастатуре за употребу."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Учестаност кадрова за видео снимак екрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -185,11 +206,11 @@ msgstr ""
|
||||
"Учестаност кадрова снимка снимљених помоћу Гномове шкољке у кадровима по "
|
||||
"секунди."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Процесни ланац Гстримера коришћен за кодирање видео снимка екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -216,11 +237,11 @@ msgstr ""
|
||||
"ВП8 кодек. „%T“ се користи као носилац за откривање при оптималном прорачуну "
|
||||
"нити на систему."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Проширење датотеке за чување видео снимака екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -243,11 +264,11 @@ msgstr "Проширење"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Изаберите проширење за подешавање користећи прозорче за избор."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Сесија..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Пријавите се"
|
||||
@ -255,34 +276,33 @@ msgstr "Пријавите се"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Није на списку?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Откажи"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Пријави ме"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Прозор за пријављивање"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Угаси"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Обустави"
|
||||
|
||||
@ -290,8 +310,8 @@ msgstr "Обустави"
|
||||
msgid "Restart"
|
||||
msgstr "Поново покрени"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Угаси"
|
||||
|
||||
@ -342,7 +362,7 @@ msgstr "ПОДЕШАВАЊА"
|
||||
msgid "New Window"
|
||||
msgstr "Нови прозор"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Уклони из омиљених"
|
||||
|
||||
@ -506,16 +526,16 @@ msgstr "Ове недеље"
|
||||
msgid "Next week"
|
||||
msgstr "Следеће недеље"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Уклоњиви уређаји"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Отвори програмом %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Избаци"
|
||||
|
||||
@ -884,7 +904,7 @@ msgstr "Уреди налог"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Непознат разлог"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Прикажи програме"
|
||||
|
||||
@ -892,14 +912,14 @@ msgstr "Прикажи програме"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Подешавања датума и времена"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Отвори календар"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %b, %R"
|
||||
|
||||
@ -1012,11 +1032,11 @@ msgstr "Инсталирај"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Да преузмем и да инсталирам „%s“ са extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "фиока"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Тастатура"
|
||||
@ -1069,19 +1089,19 @@ msgstr "Прикажи код"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб страница"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Отвори"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Уклони"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Фиока порука"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Подаци о систему"
|
||||
|
||||
@ -1145,7 +1165,7 @@ msgstr "Унесите наредбу:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1154,7 +1174,7 @@ msgstr[1] "%d нове поруке"
|
||||
msgstr[2] "%d нових порука"
|
||||
msgstr[3] "Једна нова порука"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1195,7 +1215,7 @@ msgstr "Лозинка"
|
||||
msgid "Remember Password"
|
||||
msgstr "Запамти лозинку"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Откључај"
|
||||
|
||||
@ -1313,7 +1333,7 @@ msgstr "Подешавања тастатуре"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Подешавања миша"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Подешавања звука"
|
||||
|
||||
@ -1606,7 +1626,7 @@ msgid "Unknown"
|
||||
msgstr "Непознат"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Јачина звука"
|
||||
|
||||
@ -1614,7 +1634,7 @@ msgstr "Јачина звука"
|
||||
msgid "Microphone"
|
||||
msgstr "Микрофон"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Пријавите се као други корсник"
|
||||
|
||||
@ -1642,39 +1662,35 @@ msgstr "Мирује"
|
||||
msgid "Unavailable"
|
||||
msgstr "Недоступан"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Промени корисника"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Промени сесију"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Обавештења"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Подешавања система"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Промени корисника"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Одјави ме"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Закључај"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Инсталирај ажурирања и поново покрени"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Ваше стање ћаскања ће бити постављено на заузето"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1683,19 +1699,19 @@ msgstr ""
|
||||
"мрежи је подешено тако да ће остали знати да ви не можете видети њихове "
|
||||
"поруке."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Прозори"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Програми"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Тражи"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1704,12 +1720,12 @@ msgstr ""
|
||||
"Извините, данас за вас нема мудрости:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Пророк је рекао %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ваше омиљено ускршње јаје"
|
||||
|
||||
@ -1748,19 +1764,19 @@ msgstr[3] "Један улаз"
|
||||
msgid "System Sounds"
|
||||
msgstr "Системски звуци"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Исписује издање"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Који режим користи ГДМ за екран пријављивања"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Користи нарочит режим, нпр. „gdm“ за екран пријављивања"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Исписује могуће режиме"
|
||||
|
||||
@ -1789,6 +1805,9 @@ msgstr "Основно"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Промени сесију"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "искључени „OpenSearch“ достављачи"
|
||||
|
||||
|
207
po/sr@latin.po
207
po/sr@latin.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-20 20:20+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
|
||||
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@ -29,15 +29,23 @@ msgid "Record a screencast"
|
||||
msgstr "Snimite radni tok ekrana"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Prikažite fioku poruka"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Prikaži sve programe"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Otvorite izbornik programa"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Gnomova školjka"
|
||||
@ -145,41 +153,52 @@ msgstr "Ako je izabrano, prikazuje ISO dan u nedelji u kalendaru."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Sveza tastera za otvaranje izbornika programa"
|
||||
msgstr "Prečica za otvaranje izbornika programa"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Sveza tastera za otvaranje izbornika programa."
|
||||
msgstr "Prečica za otvaranje izbornika programa."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Prečica za otvaranje pregleda „Prikaži programe“"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Prečica za otvaranje pregleda „Prikaži programe“ u pregledu aktivnosti."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Prečica za okidanje vidljivosti fioke poruka"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Prečica za okidanje vidljivosti fioke poruka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Prečica za okidanje čitača ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Prečica za pokretanje/zaustavljanje ugrađenog snimača ekrana."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Koja će tastatura biti korišćena"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Vrsta tastature za upotrebu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Učestanost kadrova za video snimak ekrana."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -187,23 +206,12 @@ msgstr ""
|
||||
"Učestanost kadrova snimka snimljenih pomoću Gnomove školjke u kadrovima po "
|
||||
"sekundi."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Procesni lanac Gstrimera korišćen za kodiranje video snimka ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
#| msgid ""
|
||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
||||
#| "pad where the recorded video is recorded. It will normally have a "
|
||||
#| "unconnected source pad; output from that pad will be written into the "
|
||||
#| "output file. However the pipeline can also take care of its own output - "
|
||||
#| "this might be used to send the output to an icecast server via shout2send "
|
||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
||||
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
|
||||
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
||||
#| "placeholder for a guess at the optimal thread count on the system."
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||
@ -221,19 +229,19 @@ msgstr ""
|
||||
"da ima jedan nepovezani padiljon sinhronizacije za čuvanje snimljenog videa. "
|
||||
"Normalno će imati nepovezan padiljon izvora; izlaz sa ovog padiljona će biti "
|
||||
"zapisivan u izlaznu datoteku. Ipak procesni lanac može da radi sa sopstvenim "
|
||||
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko "
|
||||
"d„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
|
||||
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko d"
|
||||
"„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
|
||||
"postavljena na neku praznu vrednost, biće korišćen podrazumevani procesni "
|
||||
"lanac. A to je trenutno „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 "
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ "
|
||||
"koristeći VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom "
|
||||
"proračunu niti na sistemu."
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ koristeći "
|
||||
"VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom proračunu "
|
||||
"niti na sistemu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Proširenje datoteke za čuvanje video snimaka ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -256,11 +264,11 @@ msgstr "Proširenje"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesija..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijavite se"
|
||||
@ -268,42 +276,46 @@ msgstr "Prijavite se"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Nije na spisku?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Otkaži"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijavi me"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Prozor za prijavljivanje"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Ugasi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Obustavi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Ponovo pokreni"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Ugasi"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Greška potvrđivanja identiteta"
|
||||
|
||||
@ -350,7 +362,7 @@ msgstr "PODEŠAVANJA"
|
||||
msgid "New Window"
|
||||
msgstr "Novi prozor"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Ukloni iz omiljenih"
|
||||
|
||||
@ -514,16 +526,16 @@ msgstr "Ove nedelje"
|
||||
msgid "Next week"
|
||||
msgstr "Sledeće nedelje"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Uklonjivi uređaji"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Otvori programom %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Izbaci"
|
||||
|
||||
@ -892,7 +904,7 @@ msgstr "Uredi nalog"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nepoznat razlog"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Prikaži programe"
|
||||
|
||||
@ -900,14 +912,14 @@ msgstr "Prikaži programe"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Podešavanja datuma i vremena"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Otvori kalendar"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %b, %R"
|
||||
|
||||
@ -1020,11 +1032,11 @@ msgstr "Instaliraj"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Da preuzmem i da instaliram „%s“ sa extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "fioka"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatura"
|
||||
@ -1077,19 +1089,19 @@ msgstr "Prikaži kod"
|
||||
msgid "Web Page"
|
||||
msgstr "Veb stranica"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Otvori"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Ukloni"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Fioka poruka"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Podaci o sistemu"
|
||||
|
||||
@ -1153,7 +1165,7 @@ msgstr "Unesite naredbu:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1162,7 +1174,7 @@ msgstr[1] "%d nove poruke"
|
||||
msgstr[2] "%d novih poruka"
|
||||
msgstr[3] "Jedna nova poruka"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1203,7 +1215,7 @@ msgstr "Lozinka"
|
||||
msgid "Remember Password"
|
||||
msgstr "Zapamti lozinku"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Otključaj"
|
||||
|
||||
@ -1321,7 +1333,7 @@ msgstr "Podešavanja tastature"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Podešavanja miša"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Podešavanja zvuka"
|
||||
|
||||
@ -1379,11 +1391,11 @@ msgstr "Molim unesite PIN naznačen na uređaju."
|
||||
msgid "OK"
|
||||
msgstr "U redu"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Prikaži raspored tastature"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Podešavanja regiona i jezika"
|
||||
|
||||
@ -1614,7 +1626,7 @@ msgid "Unknown"
|
||||
msgstr "Nepoznat"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Jačina zvuka"
|
||||
|
||||
@ -1622,67 +1634,63 @@ msgstr "Jačina zvuka"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prijavite se kao drugi korsnik"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Dostupan"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Zauzet"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Nevidljiv"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Odsutan"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Miruje"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Nedostupan"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Promeni korisnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Promeni sesiju"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Obaveštenja"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Podešavanja sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Promeni korisnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Odjavi me"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Zaključaj"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instaliraj ažuriranja i ponovo pokreni"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Vaše stanje ćaskanja će biti postavljeno na zauzeto"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
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."
|
||||
@ -1691,19 +1699,19 @@ msgstr ""
|
||||
"mreži je podešeno tako da će ostali znati da vi ne možete videti njihove "
|
||||
"poruke."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Prozori"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Traži"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1712,12 +1720,12 @@ msgstr ""
|
||||
"Izvinite, danas za vas nema mudrosti:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Prorok je rekao %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Vaše omiljeno uskršnje jaje"
|
||||
|
||||
@ -1756,19 +1764,19 @@ msgstr[3] "Jedan ulaz"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemski zvuci"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Ispisuje izdanje"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Koji režim koristi GDM za ekran prijavljivanja"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Koristi naročit režim, npr. „gdm“ za ekran prijavljivanja"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Ispisuje moguće režime"
|
||||
|
||||
@ -1797,6 +1805,9 @@ msgstr "Osnovno"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Promeni sesiju"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "isključeni „OpenSearch“ dostavljači"
|
||||
|
||||
|
@ -113,7 +113,6 @@ shell_public_headers_h = \
|
||||
shell-generic-container.h \
|
||||
shell-gtk-embed.h \
|
||||
shell-global.h \
|
||||
shell-idle-monitor.h \
|
||||
shell-invert-lightness-effect.h \
|
||||
shell-mobile-providers.h \
|
||||
shell-mount-operation.h \
|
||||
@ -158,7 +157,6 @@ libgnome_shell_la_SOURCES = \
|
||||
shell-generic-container.c \
|
||||
shell-gtk-embed.c \
|
||||
shell-global.c \
|
||||
shell-idle-monitor.c \
|
||||
shell-invert-lightness-effect.c \
|
||||
shell-keyring-prompt.h \
|
||||
shell-keyring-prompt.c \
|
||||
|
@ -240,8 +240,6 @@ main (int argc,
|
||||
{
|
||||
guint name_owner_id;
|
||||
|
||||
g_type_init ();
|
||||
|
||||
introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
|
||||
g_assert (introspection_data != NULL);
|
||||
|
||||
|
@ -361,8 +361,6 @@ main (int argc, char **argv)
|
||||
int ecode;
|
||||
TpDebugSender *sender;
|
||||
|
||||
g_type_init ();
|
||||
|
||||
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
@ -92,7 +92,6 @@ main(int argc, char **argv)
|
||||
g_error ("option parsing failed: %s", error->message);
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
g_type_init ();
|
||||
|
||||
_shell_global_init (NULL);
|
||||
global = shell_global_get ();
|
||||
|
@ -1,429 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
|
||||
*
|
||||
* Adapted from gnome-session/gnome-session/gs-idle-monitor.c
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: William Jon McCann <mccann@jhu.edu>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/sync.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#include "shell-idle-monitor.h"
|
||||
|
||||
#define SHELL_IDLE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SHELL_TYPE_IDLE_MONITOR, ShellIdleMonitorPrivate))
|
||||
|
||||
struct ShellIdleMonitorPrivate
|
||||
{
|
||||
Display *display;
|
||||
|
||||
GHashTable *watches;
|
||||
int sync_event_base;
|
||||
XSyncCounter counter;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Display *display;
|
||||
guint id;
|
||||
XSyncValue interval;
|
||||
ShellIdleMonitorWatchFunc callback;
|
||||
gpointer user_data;
|
||||
GDestroyNotify notify;
|
||||
XSyncAlarm xalarm_positive;
|
||||
XSyncAlarm xalarm_negative;
|
||||
} ShellIdleMonitorWatch;
|
||||
|
||||
static guint32 watch_serial = 1;
|
||||
|
||||
G_DEFINE_TYPE (ShellIdleMonitor, shell_idle_monitor, G_TYPE_OBJECT)
|
||||
|
||||
static gint64
|
||||
_xsyncvalue_to_int64 (XSyncValue value)
|
||||
{
|
||||
return ((guint64) XSyncValueHigh32 (value)) << 32
|
||||
| (guint64) XSyncValueLow32 (value);
|
||||
}
|
||||
|
||||
static XSyncValue
|
||||
_int64_to_xsyncvalue (gint64 value)
|
||||
{
|
||||
XSyncValue ret;
|
||||
|
||||
XSyncIntsToValue (&ret, value, ((guint64)value) >> 32);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
shell_idle_monitor_dispose (GObject *object)
|
||||
{
|
||||
ShellIdleMonitor *monitor;
|
||||
|
||||
monitor = SHELL_IDLE_MONITOR (object);
|
||||
|
||||
if (monitor->priv->watches != NULL) {
|
||||
g_hash_table_destroy (monitor->priv->watches);
|
||||
monitor->priv->watches = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (shell_idle_monitor_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_find_alarm (gpointer key,
|
||||
ShellIdleMonitorWatch *watch,
|
||||
XSyncAlarm *alarm)
|
||||
{
|
||||
/* g_debug ("Searching for %d in %d,%d", (int)*alarm, (int)watch->xalarm_positive, (int)watch->xalarm_negative); */
|
||||
if (watch->xalarm_positive == *alarm
|
||||
|| watch->xalarm_negative == *alarm) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static ShellIdleMonitorWatch *
|
||||
find_watch_for_alarm (ShellIdleMonitor *monitor,
|
||||
XSyncAlarm alarm)
|
||||
{
|
||||
ShellIdleMonitorWatch *watch;
|
||||
|
||||
watch = g_hash_table_find (monitor->priv->watches,
|
||||
(GHRFunc)_find_alarm,
|
||||
&alarm);
|
||||
return watch;
|
||||
}
|
||||
|
||||
static void
|
||||
handle_alarm_notify_event (ShellIdleMonitor *monitor,
|
||||
XSyncAlarmNotifyEvent *alarm_event)
|
||||
{
|
||||
ShellIdleMonitorWatch *watch;
|
||||
gboolean condition;
|
||||
|
||||
if (alarm_event->state == XSyncAlarmDestroyed) {
|
||||
return;
|
||||
}
|
||||
|
||||
watch = find_watch_for_alarm (monitor, alarm_event->alarm);
|
||||
|
||||
if (watch == NULL) {
|
||||
/* g_debug ("Unable to find watch for alarm %d", (int)alarm_event->alarm); */
|
||||
return;
|
||||
}
|
||||
|
||||
/* g_debug ("Watch %d fired, idle time = %" G_GINT64_FORMAT,
|
||||
watch->id,
|
||||
_xsyncvalue_to_int64 (alarm_event->counter_value)); */
|
||||
|
||||
if (alarm_event->alarm == watch->xalarm_positive) {
|
||||
condition = TRUE;
|
||||
} else {
|
||||
condition = FALSE;
|
||||
}
|
||||
|
||||
if (watch->callback != NULL) {
|
||||
watch->callback (monitor,
|
||||
watch->id,
|
||||
condition,
|
||||
watch->user_data);
|
||||
}
|
||||
}
|
||||
|
||||
static GdkFilterReturn
|
||||
xevent_filter (GdkXEvent *xevent,
|
||||
GdkEvent *event,
|
||||
ShellIdleMonitor *monitor)
|
||||
{
|
||||
XEvent *ev;
|
||||
XSyncAlarmNotifyEvent *alarm_event;
|
||||
|
||||
ev = xevent;
|
||||
if (ev->xany.type != monitor->priv->sync_event_base + XSyncAlarmNotify) {
|
||||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
alarm_event = xevent;
|
||||
|
||||
handle_alarm_notify_event (monitor, alarm_event);
|
||||
|
||||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
init_xsync (ShellIdleMonitor *monitor)
|
||||
{
|
||||
int sync_error_base;
|
||||
int res;
|
||||
int major;
|
||||
int minor;
|
||||
int i;
|
||||
int ncounters;
|
||||
XSyncSystemCounter *counters;
|
||||
|
||||
res = XSyncQueryExtension (monitor->priv->display,
|
||||
&monitor->priv->sync_event_base,
|
||||
&sync_error_base);
|
||||
if (! res) {
|
||||
g_warning ("ShellIdleMonitor: Sync extension not present");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
res = XSyncInitialize (monitor->priv->display, &major, &minor);
|
||||
if (! res) {
|
||||
g_warning ("ShellIdleMonitor: Unable to initialize Sync extension");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
counters = XSyncListSystemCounters (monitor->priv->display, &ncounters);
|
||||
for (i = 0; i < ncounters; i++) {
|
||||
if (counters[i].name != NULL
|
||||
&& strcmp (counters[i].name, "IDLETIME") == 0) {
|
||||
monitor->priv->counter = counters[i].counter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
XSyncFreeSystemCounterList (counters);
|
||||
|
||||
if (monitor->priv->counter == None) {
|
||||
g_warning ("ShellIdleMonitor: IDLETIME counter not found");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gdk_window_add_filter (NULL, (GdkFilterFunc)xevent_filter, monitor);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GObject *
|
||||
shell_idle_monitor_constructor (GType type,
|
||||
guint n_construct_properties,
|
||||
GObjectConstructParam *construct_properties)
|
||||
{
|
||||
ShellIdleMonitor *monitor;
|
||||
|
||||
monitor = SHELL_IDLE_MONITOR (G_OBJECT_CLASS (shell_idle_monitor_parent_class)->constructor (type,
|
||||
n_construct_properties,
|
||||
construct_properties));
|
||||
|
||||
monitor->priv->display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
if (! init_xsync (monitor)) {
|
||||
g_object_unref (monitor);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return G_OBJECT (monitor);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_idle_monitor_class_init (ShellIdleMonitorClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = shell_idle_monitor_dispose;
|
||||
object_class->constructor = shell_idle_monitor_constructor;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (ShellIdleMonitorPrivate));
|
||||
}
|
||||
|
||||
static guint32
|
||||
get_next_watch_serial (void)
|
||||
{
|
||||
guint32 serial;
|
||||
|
||||
serial = watch_serial++;
|
||||
|
||||
if ((gint32)watch_serial < 0) {
|
||||
watch_serial = 1;
|
||||
}
|
||||
|
||||
/* FIXME: make sure it isn't in the hash */
|
||||
|
||||
return serial;
|
||||
}
|
||||
|
||||
static ShellIdleMonitorWatch *
|
||||
idle_monitor_watch_new (guint interval)
|
||||
{
|
||||
ShellIdleMonitorWatch *watch;
|
||||
|
||||
watch = g_slice_new0 (ShellIdleMonitorWatch);
|
||||
watch->interval = _int64_to_xsyncvalue ((gint64)interval);
|
||||
watch->id = get_next_watch_serial ();
|
||||
watch->xalarm_positive = None;
|
||||
watch->xalarm_negative = None;
|
||||
|
||||
return watch;
|
||||
}
|
||||
|
||||
static void
|
||||
idle_monitor_watch_free (ShellIdleMonitorWatch *watch)
|
||||
{
|
||||
if (watch == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (watch->notify != NULL) {
|
||||
watch->notify (watch->user_data);
|
||||
}
|
||||
|
||||
if (watch->xalarm_positive != None) {
|
||||
XSyncDestroyAlarm (watch->display, watch->xalarm_positive);
|
||||
}
|
||||
if (watch->xalarm_negative != None) {
|
||||
XSyncDestroyAlarm (watch->display, watch->xalarm_negative);
|
||||
}
|
||||
g_slice_free (ShellIdleMonitorWatch, watch);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_idle_monitor_init (ShellIdleMonitor *monitor)
|
||||
{
|
||||
monitor->priv = SHELL_IDLE_MONITOR_GET_PRIVATE (monitor);
|
||||
|
||||
monitor->priv->watches = g_hash_table_new_full (NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(GDestroyNotify)idle_monitor_watch_free);
|
||||
|
||||
monitor->priv->counter = None;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_idle_monitor_get:
|
||||
*
|
||||
* Returns: (transfer none): the global #ShellIdleMonitor.
|
||||
*/
|
||||
ShellIdleMonitor *
|
||||
shell_idle_monitor_get (void)
|
||||
{
|
||||
static ShellIdleMonitor *idle_monitor;
|
||||
|
||||
if (G_UNLIKELY (idle_monitor == NULL))
|
||||
idle_monitor = g_object_new (SHELL_TYPE_IDLE_MONITOR,
|
||||
NULL);
|
||||
|
||||
return idle_monitor;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_xsync_alarm_set (ShellIdleMonitor *monitor,
|
||||
ShellIdleMonitorWatch *watch)
|
||||
{
|
||||
XSyncAlarmAttributes attr;
|
||||
XSyncValue delta;
|
||||
guint flags;
|
||||
|
||||
flags = XSyncCACounter
|
||||
| XSyncCAValueType
|
||||
| XSyncCATestType
|
||||
| XSyncCAValue
|
||||
| XSyncCADelta
|
||||
| XSyncCAEvents;
|
||||
|
||||
XSyncIntToValue (&delta, 0);
|
||||
attr.trigger.counter = monitor->priv->counter;
|
||||
attr.trigger.value_type = XSyncAbsolute;
|
||||
attr.trigger.wait_value = watch->interval;
|
||||
attr.delta = delta;
|
||||
attr.events = TRUE;
|
||||
|
||||
attr.trigger.test_type = XSyncPositiveTransition;
|
||||
if (watch->xalarm_positive != None) {
|
||||
/* g_debug ("ShellIdleMonitor: updating alarm for positive transition wait=%" G_GINT64_FORMAT,
|
||||
_xsyncvalue_to_int64 (attr.trigger.wait_value)); */
|
||||
XSyncChangeAlarm (monitor->priv->display, watch->xalarm_positive, flags, &attr);
|
||||
} else {
|
||||
/* g_debug ("ShellIdleMonitor: creating new alarm for positive transition wait=%" G_GINT64_FORMAT,
|
||||
_xsyncvalue_to_int64 (attr.trigger.wait_value)); */
|
||||
watch->xalarm_positive = XSyncCreateAlarm (monitor->priv->display, flags, &attr);
|
||||
}
|
||||
|
||||
attr.trigger.wait_value = _int64_to_xsyncvalue (_xsyncvalue_to_int64 (watch->interval) - 1);
|
||||
attr.trigger.test_type = XSyncNegativeTransition;
|
||||
if (watch->xalarm_negative != None) {
|
||||
/* g_debug ("ShellIdleMonitor: updating alarm for negative transition wait=%" G_GINT64_FORMAT,
|
||||
_xsyncvalue_to_int64 (attr.trigger.wait_value)); */
|
||||
XSyncChangeAlarm (monitor->priv->display, watch->xalarm_negative, flags, &attr);
|
||||
} else {
|
||||
/* g_debug ("ShellIdleMonitor: creating new alarm for negative transition wait=%" G_GINT64_FORMAT,
|
||||
_xsyncvalue_to_int64 (attr.trigger.wait_value)); */
|
||||
watch->xalarm_negative = XSyncCreateAlarm (monitor->priv->display, flags, &attr);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
guint
|
||||
shell_idle_monitor_add_watch (ShellIdleMonitor *monitor,
|
||||
guint interval,
|
||||
ShellIdleMonitorWatchFunc callback,
|
||||
gpointer user_data,
|
||||
GDestroyNotify notify)
|
||||
{
|
||||
ShellIdleMonitorWatch *watch;
|
||||
|
||||
g_return_val_if_fail (SHELL_IS_IDLE_MONITOR (monitor), 0);
|
||||
g_return_val_if_fail (callback != NULL, 0);
|
||||
|
||||
watch = idle_monitor_watch_new (interval);
|
||||
watch->display = monitor->priv->display;
|
||||
watch->callback = callback;
|
||||
watch->user_data = user_data;
|
||||
watch->notify = notify;
|
||||
|
||||
_xsync_alarm_set (monitor, watch);
|
||||
|
||||
g_hash_table_insert (monitor->priv->watches,
|
||||
GUINT_TO_POINTER (watch->id),
|
||||
watch);
|
||||
return watch->id;
|
||||
}
|
||||
|
||||
void
|
||||
shell_idle_monitor_remove_watch (ShellIdleMonitor *monitor,
|
||||
guint id)
|
||||
{
|
||||
g_return_if_fail (SHELL_IS_IDLE_MONITOR (monitor));
|
||||
|
||||
g_hash_table_remove (monitor->priv->watches,
|
||||
GUINT_TO_POINTER (id));
|
||||
}
|
||||
|
||||
gint64
|
||||
shell_idle_monitor_get_idletime (ShellIdleMonitor *monitor)
|
||||
{
|
||||
XSyncValue value;
|
||||
|
||||
if (!XSyncQueryCounter (monitor->priv->display, monitor->priv->counter, &value))
|
||||
return FALSE;
|
||||
|
||||
return _xsyncvalue_to_int64 (value);
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
|
||||
*
|
||||
* Adapted from gnome-session/gnome-session/gs-idle-monitor.h
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: William Jon McCann <mccann@jhu.edu>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SHELL_IDLE_MONITOR_H
|
||||
#define __SHELL_IDLE_MONITOR_H
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define SHELL_TYPE_IDLE_MONITOR (shell_idle_monitor_get_type ())
|
||||
#define SHELL_IDLE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_IDLE_MONITOR, ShellIdleMonitor))
|
||||
#define SHELL_IDLE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SHELL_TYPE_IDLE_MONITOR, ShellIdleMonitorClass))
|
||||
#define SHELL_IS_IDLE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_IDLE_MONITOR))
|
||||
#define SHELL_IS_IDLE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_IDLE_MONITOR))
|
||||
#define SHELL_IDLE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_IDLE_MONITOR, ShellIdleMonitorClass))
|
||||
|
||||
typedef struct ShellIdleMonitorPrivate ShellIdleMonitorPrivate;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GObject parent;
|
||||
ShellIdleMonitorPrivate *priv;
|
||||
} ShellIdleMonitor;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
} ShellIdleMonitorClass;
|
||||
|
||||
typedef void (*ShellIdleMonitorWatchFunc) (ShellIdleMonitor *monitor,
|
||||
guint id,
|
||||
gboolean condition,
|
||||
gpointer user_data);
|
||||
|
||||
GType shell_idle_monitor_get_type (void);
|
||||
|
||||
ShellIdleMonitor * shell_idle_monitor_get (void);
|
||||
|
||||
guint shell_idle_monitor_add_watch (ShellIdleMonitor *monitor,
|
||||
guint interval,
|
||||
ShellIdleMonitorWatchFunc callback,
|
||||
gpointer user_data,
|
||||
GDestroyNotify notify);
|
||||
|
||||
void shell_idle_monitor_remove_watch (ShellIdleMonitor *monitor,
|
||||
guint id);
|
||||
|
||||
gint64 shell_idle_monitor_get_idletime (ShellIdleMonitor *monitor);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __SHELL_IDLE_MONITOR_H */
|
@ -42,6 +42,9 @@ struct _StTextureCachePrivate
|
||||
|
||||
/* Presently this is used to de-duplicate requests for GIcons and async URIs. */
|
||||
GHashTable *outstanding_requests; /* char * -> AsyncTextureLoadData * */
|
||||
|
||||
/* File monitors to evict cache data on changes */
|
||||
GHashTable *file_monitors; /* char * -> GFileMonitor * */
|
||||
};
|
||||
|
||||
static void st_texture_cache_dispose (GObject *object);
|
||||
@ -50,6 +53,7 @@ static void st_texture_cache_finalize (GObject *object);
|
||||
enum
|
||||
{
|
||||
ICON_THEME_CHANGED,
|
||||
TEXTURE_FILE_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
@ -92,33 +96,14 @@ st_texture_cache_class_init (StTextureCacheClass *klass)
|
||||
0, /* no default handler slot */
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* st_texture_cache_clear_uri:
|
||||
* @cache: A #StTextureCache
|
||||
* @uri: URI of cached object
|
||||
*
|
||||
* If the given @uri is known to have been modified
|
||||
* externally, this function may be used to invalidate
|
||||
* the in-memory cache.
|
||||
*/
|
||||
void
|
||||
st_texture_cache_clear_uri (StTextureCache *cache,
|
||||
const char *uri)
|
||||
{
|
||||
char *key;
|
||||
|
||||
g_return_if_fail (ST_IS_TEXTURE_CACHE (cache));
|
||||
g_return_if_fail (uri != NULL);
|
||||
|
||||
key = g_strconcat (CACHE_PREFIX_URI, uri, NULL);
|
||||
g_hash_table_remove (cache->priv->keyed_cache, key);
|
||||
g_free (key);
|
||||
|
||||
key = g_strconcat (CACHE_PREFIX_URI_FOR_CAIRO, uri, NULL);
|
||||
g_hash_table_remove (cache->priv->keyed_cache, key);
|
||||
g_free (key);
|
||||
signals[TEXTURE_FILE_CHANGED] =
|
||||
g_signal_new ("texture-file-changed",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, /* no default handler slot */
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1, G_TYPE_STRING);
|
||||
}
|
||||
|
||||
/* Evicts all cached textures for named icons */
|
||||
@ -164,6 +149,9 @@ st_texture_cache_init (StTextureCache *self)
|
||||
g_free, cogl_handle_unref);
|
||||
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, NULL);
|
||||
self->priv->file_monitors = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_object_unref, g_object_unref);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
@ -179,13 +167,9 @@ st_texture_cache_dispose (GObject *object)
|
||||
self->priv->icon_theme = NULL;
|
||||
}
|
||||
|
||||
if (self->priv->keyed_cache)
|
||||
g_hash_table_destroy (self->priv->keyed_cache);
|
||||
self->priv->keyed_cache = NULL;
|
||||
|
||||
if (self->priv->outstanding_requests)
|
||||
g_hash_table_destroy (self->priv->outstanding_requests);
|
||||
self->priv->outstanding_requests = NULL;
|
||||
g_clear_pointer (&self->priv->keyed_cache, g_hash_table_destroy);
|
||||
g_clear_pointer (&self->priv->outstanding_requests, g_hash_table_destroy);
|
||||
g_clear_pointer (&self->priv->file_monitors, g_hash_table_destroy);
|
||||
|
||||
G_OBJECT_CLASS (st_texture_cache_parent_class)->dispose (object);
|
||||
}
|
||||
@ -1039,6 +1023,52 @@ load_from_pixbuf (GdkPixbuf *pixbuf)
|
||||
return CLUTTER_ACTOR (texture);
|
||||
}
|
||||
|
||||
static void
|
||||
file_changed_cb (GFileMonitor *monitor,
|
||||
GFile *file,
|
||||
GFile *other,
|
||||
GFileMonitorEvent event_type,
|
||||
gpointer user_data)
|
||||
{
|
||||
StTextureCache *cache = user_data;
|
||||
char *uri, *key;
|
||||
|
||||
if (event_type != G_FILE_MONITOR_EVENT_CHANGED)
|
||||
return;
|
||||
|
||||
uri = g_file_get_uri (file);
|
||||
|
||||
key = g_strconcat (CACHE_PREFIX_URI, uri, NULL);
|
||||
g_hash_table_remove (cache->priv->keyed_cache, key);
|
||||
g_free (key);
|
||||
|
||||
key = g_strconcat (CACHE_PREFIX_URI_FOR_CAIRO, uri, NULL);
|
||||
g_hash_table_remove (cache->priv->keyed_cache, key);
|
||||
g_free (key);
|
||||
|
||||
g_signal_emit (cache, signals[TEXTURE_FILE_CHANGED], 0, uri);
|
||||
|
||||
g_free (uri);
|
||||
}
|
||||
|
||||
static void
|
||||
ensure_monitor_for_uri (StTextureCache *cache,
|
||||
const gchar *uri)
|
||||
{
|
||||
StTextureCachePrivate *priv = cache->priv;
|
||||
GFile *file = g_file_new_for_uri (uri);
|
||||
|
||||
if (g_hash_table_lookup (priv->file_monitors, uri) == NULL)
|
||||
{
|
||||
GFileMonitor *monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE,
|
||||
NULL, NULL);
|
||||
g_signal_connect (monitor, "changed",
|
||||
G_CALLBACK (file_changed_cb), cache);
|
||||
g_hash_table_insert (priv->file_monitors, g_strdup (uri), monitor);
|
||||
}
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
gchar *path;
|
||||
gint grid_width, grid_height;
|
||||
@ -1161,41 +1191,6 @@ st_texture_cache_load_sliced_image (StTextureCache *cache,
|
||||
return actor;
|
||||
}
|
||||
|
||||
/**
|
||||
* st_texture_cache_load_icon_name:
|
||||
* @cache: The texture cache instance
|
||||
* @theme_node: (allow-none): a #StThemeNode
|
||||
* @name: Name of a themed icon
|
||||
* @size: Size of themed icon
|
||||
*
|
||||
* Load a themed icon into a texture. The colors used for symbolic
|
||||
* icons are derived from @theme_node.
|
||||
*
|
||||
* Return Value: (transfer none): A new #ClutterTexture for the icon
|
||||
*/
|
||||
ClutterActor *
|
||||
st_texture_cache_load_icon_name (StTextureCache *cache,
|
||||
StThemeNode *theme_node,
|
||||
const char *name,
|
||||
gint size)
|
||||
{
|
||||
ClutterActor *texture;
|
||||
GIcon *themed;
|
||||
|
||||
themed = g_themed_icon_new_with_default_fallbacks (name);
|
||||
texture = load_gicon_with_colors (cache, themed, size,
|
||||
theme_node ? st_theme_node_get_icon_colors (theme_node) : NULL);
|
||||
g_object_unref (themed);
|
||||
|
||||
if (texture == NULL)
|
||||
{
|
||||
texture = (ClutterActor *) create_default_texture ();
|
||||
clutter_actor_set_size (texture, size, size);
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
/**
|
||||
* st_texture_cache_load_uri_async:
|
||||
* @cache: The texture cache instance
|
||||
@ -1246,6 +1241,8 @@ st_texture_cache_load_uri_async (StTextureCache *cache,
|
||||
load_texture_async (cache, request);
|
||||
}
|
||||
|
||||
ensure_monitor_for_uri (cache, uri);
|
||||
|
||||
return CLUTTER_ACTOR (texture);
|
||||
}
|
||||
|
||||
@ -1283,6 +1280,8 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
|
||||
else
|
||||
cogl_handle_ref (texdata);
|
||||
|
||||
ensure_monitor_for_uri (cache, uri);
|
||||
|
||||
out:
|
||||
g_free (key);
|
||||
return texdata;
|
||||
@ -1322,6 +1321,8 @@ st_texture_cache_load_uri_sync_to_cairo_surface (StTextureCache *cache,
|
||||
else
|
||||
cairo_surface_reference (surface);
|
||||
|
||||
ensure_monitor_for_uri (cache, uri);
|
||||
|
||||
out:
|
||||
g_free (key);
|
||||
return surface;
|
||||
|
@ -68,9 +68,6 @@ GType st_texture_cache_get_type (void) G_GNUC_CONST;
|
||||
|
||||
StTextureCache* st_texture_cache_get_default (void);
|
||||
|
||||
void st_texture_cache_clear_uri (StTextureCache *cache,
|
||||
const gchar *uri);
|
||||
|
||||
ClutterActor *
|
||||
st_texture_cache_load_sliced_image (StTextureCache *cache,
|
||||
const gchar *path,
|
||||
@ -81,11 +78,6 @@ ClutterActor *st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
|
||||
GObject *object,
|
||||
const char *property_name);
|
||||
|
||||
ClutterActor *st_texture_cache_load_icon_name (StTextureCache *cache,
|
||||
StThemeNode *theme_node,
|
||||
const char *name,
|
||||
gint size);
|
||||
|
||||
ClutterActor *st_texture_cache_load_gicon (StTextureCache *cache,
|
||||
StThemeNode *theme_node,
|
||||
GIcon *icon,
|
||||
|
@ -1018,6 +1018,7 @@ _st_theme_resolve_url (StTheme *theme,
|
||||
const char *base_filename = NULL;
|
||||
char *dirname;
|
||||
char *filename;
|
||||
char *canonicalized_path;
|
||||
|
||||
/* Handle absolute file:/ URLs */
|
||||
if (g_str_has_prefix (url, "file:") ||
|
||||
@ -1034,7 +1035,7 @@ _st_theme_resolve_url (StTheme *theme,
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return filename;
|
||||
}
|
||||
|
||||
/* Guard against http:/ URLs */
|
||||
@ -1050,7 +1051,19 @@ _st_theme_resolve_url (StTheme *theme,
|
||||
/* Assume anything else is a relative URL, and "resolve" it
|
||||
*/
|
||||
if (url[0] == '/')
|
||||
return g_strdup (url);
|
||||
{
|
||||
canonicalized_path = realpath (url, NULL);
|
||||
if (g_mem_is_system_malloc ())
|
||||
{
|
||||
filename = canonicalized_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = g_strdup (canonicalized_path);
|
||||
free (canonicalized_path);
|
||||
}
|
||||
return filename;
|
||||
}
|
||||
|
||||
base_filename = g_hash_table_lookup (theme->filenames_by_stylesheet, base_stylesheet);
|
||||
|
||||
@ -1062,7 +1075,19 @@ _st_theme_resolve_url (StTheme *theme,
|
||||
|
||||
dirname = g_path_get_dirname (base_filename);
|
||||
filename = g_build_filename (dirname, url, NULL);
|
||||
canonicalized_path = realpath (filename, NULL);
|
||||
g_free (dirname);
|
||||
g_free (filename);
|
||||
|
||||
if (g_mem_is_system_malloc ())
|
||||
{
|
||||
filename = canonicalized_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = g_strdup (canonicalized_path);
|
||||
free (canonicalized_path);
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
@ -269,6 +269,39 @@ st_widget_remove_transition (StWidget *widget)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
st_widget_texture_cache_changed (StTextureCache *cache,
|
||||
const char *uri,
|
||||
gpointer user_data)
|
||||
{
|
||||
StWidget *actor = ST_WIDGET (user_data);
|
||||
StThemeNode *node = actor->priv->theme_node;
|
||||
StBorderImage *border_image;
|
||||
char *path;
|
||||
gboolean changed;
|
||||
|
||||
if (node == NULL)
|
||||
return;
|
||||
|
||||
path = g_filename_from_uri (uri, NULL, NULL);
|
||||
|
||||
changed = g_strcmp0 (st_theme_node_get_background_image (node), path) == 0;
|
||||
|
||||
border_image = st_theme_node_get_border_image (node);
|
||||
if (!changed && border_image)
|
||||
changed = strcmp (st_border_image_get_filename (border_image), path) == 0;
|
||||
|
||||
g_free (path);
|
||||
|
||||
if (!changed)
|
||||
return;
|
||||
|
||||
st_theme_node_invalidate_paint_state (node);
|
||||
|
||||
if (CLUTTER_ACTOR_IS_MAPPED (CLUTTER_ACTOR (actor)))
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (actor));
|
||||
}
|
||||
|
||||
static void
|
||||
st_widget_dispose (GObject *gobject)
|
||||
{
|
||||
@ -302,6 +335,10 @@ st_widget_dispose (GObject *gobject)
|
||||
priv->label_actor = NULL;
|
||||
}
|
||||
|
||||
g_signal_handlers_disconnect_by_func (st_texture_cache_get_default (),
|
||||
st_widget_texture_cache_changed,
|
||||
actor);
|
||||
|
||||
g_clear_object (&priv->prev_first_child);
|
||||
g_clear_object (&priv->prev_last_child);
|
||||
|
||||
@ -1470,6 +1507,8 @@ st_widget_init (StWidget *actor)
|
||||
|
||||
g_signal_connect (actor, "notify::first-child", G_CALLBACK (st_widget_first_child_notify), NULL);
|
||||
g_signal_connect (actor, "notify::last-child", G_CALLBACK (st_widget_last_child_notify), NULL);
|
||||
g_signal_connect (st_texture_cache_get_default (), "texture-file-changed",
|
||||
G_CALLBACK (st_widget_texture_cache_changed), actor);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2760,38 +2799,3 @@ st_widget_get_focus_chain (StWidget *widget)
|
||||
{
|
||||
return ST_WIDGET_GET_CLASS (widget)->get_focus_chain (widget);
|
||||
}
|
||||
|
||||
/**
|
||||
* st_widget_clear_background_image:
|
||||
* @widget: An #StWidget
|
||||
*
|
||||
* Force a reload of the background-image property. Usually properties
|
||||
* are cached heavily to avoid unnecessary work on paint, this method
|
||||
* will force the cache to be recreated.
|
||||
*/
|
||||
void
|
||||
st_widget_clear_background_image (StWidget *actor)
|
||||
{
|
||||
GFile *file;
|
||||
const char *path;
|
||||
char *uri;
|
||||
|
||||
if (actor->priv->theme_node == NULL)
|
||||
return;
|
||||
|
||||
path = st_theme_node_get_background_image (actor->priv->theme_node);
|
||||
if (path == NULL)
|
||||
return;
|
||||
|
||||
file = g_file_new_for_path (path);
|
||||
uri = g_file_get_uri (file);
|
||||
|
||||
st_texture_cache_clear_uri (st_texture_cache_get_default (), uri);
|
||||
st_theme_node_invalidate_paint_state (actor->priv->theme_node);
|
||||
|
||||
if (CLUTTER_ACTOR_IS_MAPPED (CLUTTER_ACTOR (actor)))
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (actor));
|
||||
|
||||
g_object_unref (file);
|
||||
g_free (uri);
|
||||
}
|
||||
|
@ -142,8 +142,6 @@ ClutterActor * st_widget_get_label_actor (StWidget *widg
|
||||
void st_widget_set_label_actor (StWidget *widget,
|
||||
ClutterActor *label);
|
||||
|
||||
void st_widget_clear_background_image (StWidget *widget);
|
||||
|
||||
/* Only to be used by sub-classes of StWidget */
|
||||
void st_widget_style_changed (StWidget *widget);
|
||||
StThemeNode * st_widget_get_theme_node (StWidget *widget);
|
||||
|
Reference in New Issue
Block a user