Compare commits

...

201 Commits

Author SHA1 Message Date
02f2f694e4 Bump version to 3.10.1
Update NEWS.
2013-10-15 20:27:52 +02:00
d175a588f7 network: being able to use keyboard to connect to a Wireless
https://bugzilla.gnome.org/show_bug.cgi?id=710144
2013-10-15 20:27:05 +02:00
4bb41f2f66 Revert "network: being able to use keyboard to connect to a Wireless"
This reverts commit d581d29198.
2013-10-15 20:14:02 +02:00
088c46c7be Revert "Bump version to 3.10.1"
This reverts commit 4228c40b3d.
2013-10-15 20:14:00 +02:00
4228c40b3d Bump version to 3.10.1
Update NEWS.
2013-10-15 20:06:25 +02:00
d581d29198 network: being able to use keyboard to connect to a Wireless
https://bugzilla.gnome.org/show_bug.cgi?id=710144
2013-10-15 19:10:38 +02:00
5a7e854f9e appDisplay: Remember selected view across sessions
The application picker will always open with the view that was last
selected during the session, but the selection is reset on each
restart. This results in some annoyance for users that use the
ALL view exclusively, as they have to toggle views once each
session - the same would apply to exclusive FREQUENT view users
were the defaults to be changed, so the best solution is to simply
make the selected view persistent by storing it in GSettings.

https://bugzilla.gnome.org/show_bug.cgi?id=710042
2013-10-15 19:06:53 +02:00
6e13823ccc shell-js: fix incorrect G_BEGIN_DECLS in header 2013-10-15 09:21:59 +11:00
5c5f2fdf8f a11y: setting ATK_ROLE_ARROW to object unicodeArrow
https://bugzilla.gnome.org/show_bug.cgi?id=710120
2013-10-14 22:29:09 +02:00
96aa33f4ef messageTray: Don't remove and re-add the focus group on button changes
https://bugzilla.gnome.org/show_bug.cgi?id=710115
2013-10-14 15:24:53 -04:00
25fd23e703 messageTray: Split out the notification's destroy handler
This is complex enough to split out.

https://bugzilla.gnome.org/show_bug.cgi?id=710115
2013-10-14 15:24:53 -04:00
99cf4e5787 messageTray: Only connect to a notification's open/destroy once
If we pushNotification the same notification multiple times, we
won't append it to the array again, but we will attach multiple
handlers needlessly.

https://bugzilla.gnome.org/show_bug.cgi?id=710115
2013-10-14 15:24:53 -04:00
66a4cb5875 messageTray: Move the notification policy classes here
The NotificationDaemon really should be for the hookup of remote
notifications, rather than policies.

https://bugzilla.gnome.org/show_bug.cgi?id=710115
2013-10-14 15:24:53 -04:00
da14e2c349 messageTray: Clean up code that determines if something is clearable
https://bugzilla.gnome.org/show_bug.cgi?id=710115
2013-10-14 15:24:53 -04:00
4cda61a16a gdm: support pre-authenticated logins from oVirt
oVirt is software for managing medium-to-large scale deployments of
virtual machine guests across multiple hosts. It supports a feature
where users can authenticate with a central server and get
transparently connected to a guest system and then automatically get logged
into that guest to an associated user session.

Guests using old versions of GDM support this single-sign-on capability
by means of a greeter plugin, using the old greeter's extension
API.

This commit adds similar support to the gnome-shell based login screen.

How it works:

* The OVirtCredentialsManager singleton listens for

  'org.ovirt.vdsm.Credentials.UserAuthenticated'

  D-Bus signal on the system bus from the

  'org.ovirt.vdsm.Credentials'

  bus name. The service that provides that bus name is called
  the oVirt guest agent. It is also responsible for interacting
  with the the central server to get user credentials.

* This UserAuthenticated signal passes, as a parameter, the a token
  which needs to be passed through to the PAM service that is specifically
  set up to integrate with the oVirt authentication architecture.
  The singleton object keeps the token internally so it can be queried
  later on.

* The OVirtCredentialsManager emits a signal 'user-authenticated' on
  it's object once the dbus signal is triggered

* When the 'user-authenticated' signal is emitted, the login screen
  tells GDM to start user verification using the PAM service. The
  authentication stack of the service includes a PAM module
  provided by oVirt that securely retrieves user credentials
  from the oVirt guest agent. The PAM module then forwards those
  credentials on to other modules in the stack so, e.g.,
  the user's gnome keyring can be automatically unlocked.

* In case of the screen shield being visible, it also will react on that
  'user-authenticated' signal and lift the shield.
  In that case the login screen will check on construction time if
  the signal has already been triggered, and a token is available.
  If a token is available it will immediately trigger the functionality
  as described above.

Signed-off-by: Vinzenz Feenstra <evilissimo@redhat.com>

https://bugzilla.gnome.org/show_bug.cgi?id=702162
2013-10-14 13:54:30 -04:00
002afda503 SearchDisplay: handle certain result IDs specially
Allow the prefix 'special:' applied to result IDs to mark results
that should be always shown, even when they would overflow the
maximum results cap. This will be used by epiphany for the special
"Search the Web" result.

https://bugzilla.gnome.org/show_bug.cgi?id=707055
2013-10-14 18:47:20 +02:00
cb7a2e8c6a shell-global: Use G_VARIANT_TYPE macro for checking 2013-10-14 10:52:45 -04:00
d21ae1dad1 shell-global: Fix an invalid memory botch-up
The value we return is a floating ref, which gjs shouldn't
try to free.

https://bugzilla.gnome.org/show_bug.cgi?id=710104
2013-10-14 09:49:51 -04:00
4548859509 shell-global: Fix a few memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=710104
2013-10-14 09:49:51 -04:00
09c6e6427a Updated Serbian translation 2013-10-14 10:29:57 +02:00
8c34398a15 Updated Slovenian translation 2013-10-13 23:43:34 +02:00
a65b705080 [l10n] Updated Catalan (Valencian) translation 2013-10-13 22:43:34 +02:00
7e28c71074 [l10n] Update Catalan translation 2013-10-13 22:43:31 +02:00
726f4a6715 Updated Lithuanian translation 2013-10-13 20:06:00 +03:00
a444b43548 Updated Portuguese translation 2013-10-13 12:22:54 +01:00
473bb139d1 Updated Latvian translation 2013-10-13 13:35:18 +03:00
d084770cea NetworkMenu: fix regression for VPN connections
Fix regression from e898e29910,
the code was moved from a method to a global function, but one
call site was not updated.

https://bugzilla.gnome.org/show_bug.cgi?id=710019
2013-10-13 02:11:14 +02:00
619389ed20 NotificationDaemon: fix icons for notifications without an app
NotificationDaemon doesn't pass a gicon to the Notification constructor,
because it calls .update() immediately after, so messageTray.js
calls into Source.createIcon(), which returns null and crashes.
Instead, shortcut the Notification constructor by skipping
.update() completely.

https://bugzilla.gnome.org/show_bug.cgi?id=709998
2013-10-13 01:23:18 +02:00
ad043e009e workspaceThumbnail: Drop the _background hack
The _background hack was added because the old way the zooming animation
worked, it set the allocation of the workspaces view and thumbnails box
to the final position and used animations to smoothly animate.

During the 3.6 cycle when we added the new search view, Cosimo changed the
way the zoom animation works so that rather than set the final allocation
and animate, we actually do adjust the allocation of the workspaces view
and thumbnails box.

So, as the hack is no longer necessary, we can drop it.

https://bugzilla.gnome.org/show_bug.cgi?id=694881
2013-10-12 14:38:13 -04:00
89b9d079b1 overviewControls: Don't use the child's preferred size to slide from
In order for the workspace thumbnails box to have the correct size,
we need to constrain the width of the thumbnails box to the height we're
given, instead of assuming an unlimited height.

https://bugzilla.gnome.org/show_bug.cgi?id=694881
2013-10-12 14:38:13 -04:00
58a8845047 overviewControls: Don't try to align something sliding to the right
0 is already the correct value.

https://bugzilla.gnome.org/show_bug.cgi?id=694881
2013-10-12 14:38:13 -04:00
3e6c8e68b4 overviewControls: Clarify some code with a comment
translationX is sort of a bad name, since it confuses with the
actor's translation, which is used for sliding without allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=694881
2013-10-12 14:38:13 -04:00
40cd92f701 overviewControls: Correct the use of x2 in SlidingControl
The x2 here needs to be more than just the width; it needs to
be added onto the x1.

https://bugzilla.gnome.org/show_bug.cgi?id=694881
2013-10-12 14:38:13 -04:00
e216addf7c Updated Dutch translation 2013-10-12 19:59:34 +02:00
9291594330 app-system: remove outdated comment
This parameter was removed before 3.2 but the comment stuck around.
2013-10-12 10:09:36 -05:00
f6010864ea layout: Flush region update in showOverview
We cannot wait for the queued update region to fire when
xdnd is being used because a wrong input shape can result
into a xdnd leave event when the user moves the pointer fast.

https://bugzilla.gnome.org/show_bug.cgi?id=708887
2013-10-11 20:16:44 +02:00
13e6a6def5 Revert "overview: Ignore dragEnd while the animation is still in progress"
This reverts commit 80a3bb85aa.

https://bugzilla.gnome.org/show_bug.cgi?id=708887
2013-10-11 20:16:44 +02:00
575b373cd5 power: Use the icon from the primary device for status
https://bugzilla.gnome.org/show_bug.cgi?id=709925
2013-10-11 13:37:10 -04:00
0892065649 notificationDaemon: Raise the app when clicking on a notification, not the MRU window
https://bugzilla.gnome.org/show_bug.cgi?id=709866
2013-10-11 13:37:10 -04:00
766ef367fb notificationDaemon: Fix the fallback for image-data
The indentation here is wrong, the else actually belongs to the outer
if statement, not the inner if statement.
2013-10-11 13:37:10 -04:00
0c7d9958f5 notificationDaemon: Remove dead code 2013-10-11 13:37:09 -04:00
425b8f6073 Updated Czech translation 2013-10-11 18:28:52 +02:00
63593e45a6 Make dropdown arrows consistent size
Since the agregate menu does 120% of font-size, make this
for all dropdown arrows in gnome-shell and rename the css
class to make clear that it is used in overall gnome-shell

https://bugzilla.gnome.org/show_bug.cgi?id=709564
2013-10-11 17:32:55 +02:00
a6ee9806de Uploaded Ukranian 2013-10-11 15:02:28 +03:00
a6579f4ceb Updated Brazilian Portuguese translation 2013-10-11 07:24:18 -03:00
639622a4fe [l10n] Updated Italian translation. 2013-10-11 09:41:24 +02:00
e28ec2f5ab Updated Indonesian translation 2013-10-11 10:15:14 +07:00
873753c735 Updated Hebrew translation 2013-10-11 01:14:45 +03:00
ff14951be4 Updated Hebrew translation 2013-10-11 01:11:25 +03:00
b47b445558 Updated Polish translation 2013-10-10 23:43:39 +02:00
6e9a2fea89 messageTray: Add 'Notifications' switch to tray menu
According to the designs, the notifications switch was supposed
to move from the user menu to the new message tray menu. However
so far the new system status implementation only removed the old
switch, so add it back in its new place now.

https://bugzilla.gnome.org/show_bug.cgi?id=707073
2013-10-10 23:13:47 +02:00
64d2679b3c Updated Czech translation 2013-10-10 21:09:42 +02:00
3c3d4dfccb Updated Hungarian translation 2013-10-10 13:43:23 +02:00
0ccffed517 Updated Spanish translation 2013-10-10 10:49:53 +02:00
20c18c1fc0 Suppress animation for titles in overview
Because of the animation and collision with relayout, the title of windows in overview may not appear, mainly
the first time we enter in overview

With an animation delay of 0.1s, you'll not see the difference

https://bugzilla.gnome.org/show_bug.cgi?id=709392
2013-10-10 08:51:13 +02:00
a21c0097c2 Tajik translation updated 2013-10-10 11:48:03 +05:00
404d9ef2af [l10n] Updated Italian translation. 2013-10-10 08:37:21 +02:00
503fa1cbce Updated Indonesian translation 2013-10-10 12:59:23 +07:00
63f7991d0f Updated Brazilian Portuguese translation 2013-10-09 23:26:40 -03:00
ae301c1f39 Updated Galician translations 2013-10-09 23:09:57 +02:00
8e911fb719 Updated Galician translations 2013-10-09 23:04:21 +02:00
a0d84e44c5 L10N: Updated Persian translations 2013-10-10 00:28:17 +03:30
81fb7ebb31 Fix some broken GTK-Doc comment blocks 2013-10-09 20:14:57 +02:00
3751211590 shell-global: Fix introspection issues
Remove stray bullet points, and don't actually mark for introspection
since it's private anyway (it starts with a _)
2013-10-09 13:31:00 -04:00
6b4cba09be Updated Polish translation 2013-10-09 19:04:21 +02:00
6a7d184b7b NetworkMenu: make the settings launcher point to the right devices
Tell gnome-control-center to focus on the associated device when
launching it from one of the submenus.

https://bugzilla.gnome.org/show_bug.cgi?id=709246
2013-10-09 18:39:44 +02:00
bde5cfc8bb NetworkMenu/NMDeviceModem: use the operator name when we have it
Instead of the connection name, as the operator name is usually
shorter and more useful.

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-09 18:39:44 +02:00
777c7a952b NetworkMenu/NMDeviceModem: fix status texts for airplane mode
Show "Hardware Disabled" when disabled by HW switch, and
generically "Disabled" when airplane mode is active, as
indicated by v4 mockups.
Note that bluetooth is not affected by NM handling of airplane
mode (and generally the firmware makes the USB bluetooth
adapter disappear when rfkilled), so this is in NMDeviceModem
instead of NMConnectionDevice.

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-09 18:39:44 +02:00
c79bdd9029 NetworkMenu/NMConnectionDevice: fix status text
Be consistent with v4 mockups

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-09 18:39:44 +02:00
6a154efe65 Network: show Not Connected instead of Off when wifi radio is on
When wifi is powered but not connected, show Not Connected instead
of off. This avoids a Off status next to a Turn Off menu item.

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-09 18:39:44 +02:00
627f3ef36b keyring: Cancel active prompts on disable()
Since commit 1242a16265, we will use a fake prompt which
cancels alls requests without dialog when the keyring component
is disabled. However this does only apply to new requests, dialogs
that are already active when the session mode changes are kept
open. This is not quite as expected, so cancel the prompt in that
case.

https://bugzilla.gnome.org/show_bug.cgi?id=708910
2013-10-09 17:58:37 +02:00
3d28836f2c keyring: Remove unused global
https://bugzilla.gnome.org/show_bug.cgi?id=708910
2013-10-09 17:58:37 +02:00
c28bd04958 Finnish translation update 2013-10-09 14:23:48 +03:00
a6fb3acb42 NetworkMenu: hide the "Turn On" item when the rfkill is hardware blocked
If wifi is disabled in hardware, there is nothing we can do at
the sw level, so hide the menu item.

https://bugzilla.gnome.org/show_bug.cgi?id=709635
2013-10-08 22:20:27 +02:00
8a8b3bf96e NetworkMenu: fix wireless-enabled property notifications
The property is on the NMClient, not NMDevice. Also, make sure
we disconnect the signal when the item is destroyed.
Also, connect to wireless-hardware-enabled, which we'll use soon.

https://bugzilla.gnome.org/show_bug.cgi?id=709635
2013-10-08 22:20:27 +02:00
f7624e5f05 network: make the icon visible again when going from ethernet to nothing
https://bugzilla.gnome.org/show_bug.cgi?id=709638
2013-10-08 14:26:38 -04:00
55edfd2e4a notificationDaemon: Focus the new window before destroying the notification
Destroying the notification will make the key focus be reset to NULL, which
means that gnome-shell will try to focus the MRU window, thinking the user is
done interacting and wants to go back to whatever they were doing.

Unfortunately, since we focus two windows at the same time, they will have
the same timestamp, meaning that the window that actually gets focused will
be a race as to whoever responds to their WM_TAKE_FOCUS event last.

If we explicitly set the focus beforehand, then gnome-shell will believe it
got key focus taken away from it, and won't try to focus the MRU when the
key focus drops to NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=703265
2013-10-08 13:05:34 -04:00
91878dd52c Updated Indonesian translation 2013-10-08 17:07:23 +07:00
c132358ec9 Updated Latvian translation 2013-10-07 21:54:39 +03:00
e426f8ac47 BoxPointer: account for border width when requesting size
We must reduce the forWidth in the call to get_preferred_height()
with the border width, otherwise we might request a smaller height
that we actually need and overflow.

https://bugzilla.gnome.org/show_bug.cgi?id=696564
2013-10-07 20:18:48 +02:00
740dca8afc build: Bump gjs requirement
https://bugzilla.gnome.org/show_bug.cgi?id=709543
2013-10-07 09:37:59 +02:00
6ae06d319c [l10n] Updated Catalan (Valencian) translation 2013-10-06 21:58:43 +02:00
30bc2b2f9c [l10n] Update Catalan translation 2013-10-06 21:06:39 +02:00
7dc8e9d657 Updated Russian translation 2013-10-06 12:31:47 +04:00
1ab2fa5bf0 [l10n]Updated Turkish translation 2013-10-06 09:19:37 +03:00
779a1077bf Updated Serbian translation 2013-10-05 20:59:51 +02:00
815bf7a53a L10N: Updated Persian translations 2013-10-05 18:06:59 +03:30
91a382dfb5 Fix Lithuanian calendar translation 2013-10-05 16:51:19 +03:00
2d8d4cd57d Updated Serbian translation 2013-10-05 06:49:07 +02:00
0c5fe2b3bf Updated Serbian translation 2013-10-05 06:08:07 +02:00
56c487347f Updated Belarusian translation. 2013-10-03 23:02:05 +03:00
0a572fce1b Updated Norwegian bokmål translation 2013-10-03 20:38:08 +02:00
e898e29910 NetworkMenu/NMConnectionDevice: grab the connection before using it
If the active connection for the device is not the primary or
activating globally, it won't have the _connection and _primaryDevice
expando properties, so grab them from the settings object.

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-03 16:03:41 +02:00
843f076225 NetworkMenu/NMDeviceWireless: use the device state instead of active connection state
Since we connect to signals for that, we need to sync on that, or
we can miss a notification.

https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-03 16:01:27 +02:00
fdb732c8c2 Bluetooth: fix ngettext call
https://bugzilla.gnome.org/show_bug.cgi?id=709043
2013-10-03 16:01:27 +02:00
33896a4e8f network: fix NMConnectionSection destruction
The patch fixes the following warning, and along with it, the proper
destruction of the NMConnectionSection is performed so that items get
correctly removed from the menu.

(gnome-shell:24528): Gjs-WARNING **: JS ERROR: TypeError:
this.statusItem is undefined
NMConnectionSection<.destroy@/home/aleksander/gnome/install/share/gnome-shell/js/ui/status/network.js:173
wrapper@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:213
_parent@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:175
NMConnectionDevice<.destroy@/home/aleksander/gnome/install/share/gnome-shell/js/ui/status/network.js:292
wrapper@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:213
_parent@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:175
NMDeviceModem<.destroy@/home/aleksander/gnome/install/share/gnome-shell/js/ui/status/network.js:448
wrapper@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:213
NMApplet<._removeDeviceWrapper@/home/aleksander/gnome/install/share/gnome-shell/js/ui/status/network.js:1421
wrapper@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:213
NMApplet<._deviceRemoved@/home/aleksander/gnome/install/share/gnome-shell/js/ui/status/network.js:1416
wrapper@/home/aleksander/gnome/install/share/gjs-1.0/lang.js:213

https://bugzilla.gnome.org/show_bug.cgi?id=709248
2013-10-03 00:50:02 +02:00
51e016a0d6 theme: modify the avatar and user name
Change the avatar and user name border radius, padding
and text size to be consistent with mockups.

https://bugzilla.gnome.org/show_bug.cgi?id=702309
2013-10-02 22:26:30 +02:00
8737b06559 loginDialog: MessageType is now in GdmUtil
https://bugzilla.gnome.org/show_bug.cgi?id=709286
2013-10-02 13:58:09 -04:00
15ab285174 layout: Use monitor index when adding bg managers
Don't assume that this._bgManagers.push() (i.e adding to the end) is always
correct.

On startup we call _createPrimaryBackground which passes in the primary index
which may not be 0.
2013-10-02 15:58:22 +02:00
3a4782cc64 app-system: Fix some enum warnings
https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 09:49:03 -04:00
0256a6d47b app: Use g_variant_lookup instead of dict iteration 2013-10-02 09:49:02 -04:00
8b0e846e0e background: Disconnect settings signal handler on destroy
We connect to the changed signal in _init() but never actually disconnect from
it. The callback has a reference to "this" which results into the background
object not getting garbage collected.

Fix that leaks by disconnecting in _destroy()

https://bugzilla.gnome.org/show_bug.cgi?id=709263
2013-10-02 15:43:30 +02:00
41acb5d3cc Updated Czech translation 2013-10-02 09:56:45 +02:00
a2f9b8ea9b workspacesView: Remove dead code 2013-10-01 18:41:26 -04:00
6237a1c505 workspace: Remove unused leftover constant
from the window zooming days
2013-10-01 18:41:26 -04:00
7c08db0b0f [l10n] Updated Italian translation. 2013-10-01 19:22:11 +02:00
df1270ac49 Updated Danish translation 2013-10-01 19:10:05 +02:00
46edc053d4 overview: Add cover pane directly to overviewGroup
The cover pane is used to block events during transitions, but as
workspaces don't share the same container as other overview elements,
they are currently excempt from the event blocking.
Move the cover pane to the top-level overview container instead.

https://bugzilla.gnome.org/show_bug.cgi?id=709034
2013-10-01 17:16:51 +02:00
908046c31a [l10n] Updated Estonian translation 2013-10-01 17:14:01 +03:00
8380c79875 network: Update the network indicator when the VPN state changes 2013-10-01 10:25:46 -04:00
8a4879a96a Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-30 19:40:48 +08:00
cdf1a77f08 Updated Spanish translation 2013-09-30 12:00:58 +02:00
3f9857ccbd Assamese translation updated 2013-09-30 13:32:07 +05:30
1d65a31420 Updated Lithuanian translation 2013-09-29 20:33:17 +03:00
dafdf0838a Updated Slovak translation 2013-09-29 17:41:47 +01:00
f9cf135f68 update Punjabi Translaiton 2013-09-29 05:26:34 -05:00
a1878e54c9 Updated Norwegian bokmål translation 2013-09-29 11:29:08 +02:00
95e5d899a9 Updated Basque language 2013-09-29 10:53:34 +02:00
ee8321df67 Updated Slovenian translation 2013-09-28 21:49:04 +02:00
4918213e68 Tajik translation updated 2013-09-28 19:39:12 +05:00
ed7f349fc6 Updated Galician translations 2013-09-28 16:25:15 +02:00
2888f22a24 Updated Norwegian bokmål translation 2013-09-28 14:53:19 +02:00
fcb217f681 Updated Brazilian Portuguese translation 2013-09-28 05:16:53 -03:00
9ffa9fe1a8 Updated Galician translations 2013-09-27 21:38:08 +02:00
905020c507 Updated Slovak translation 2013-09-27 17:40:35 +01:00
02f5500641 theme: Make indicators checked&active like checked 2013-09-27 17:06:26 +02:00
465af55d6e theme: Add hover/active states to indicators
Until now we had the same svg for hover, active and checked
states in the pagination indicators. Just differentiate between
them using differents svg.

svg files provided by Jakub Steiner

https://bugzilla.gnome.org/show_bug.cgi?id=708852
2013-09-27 15:50:28 +02:00
80a3bb85aa overview: Ignore dragEnd while the animation is still in progress
Moving the mouse fast enough during xdnd will trigger a xdnd-leave event
because the input shape is not updated until after the animation is done.

So simply ignore the leave events while the animation is in progress.

https://bugzilla.gnome.org/show_bug.cgi?id=708887
2013-09-27 12:54:22 +02:00
ea26bd3003 Updated Latvian translation 2013-09-26 23:30:59 +03:00
508a511d2a Revert "overviewControls: Don't allow appearing controls to "pop in""
This reverts commit e31693bbee.

This doesn't properly adjust the allocation, leading to an unbalanced
overview where things aren't centered properly. Just revert for now,
and we'll rethink this next cycle.
2013-09-26 16:20:06 -04:00
2d80cb71db searchDisplay: Scroll results when the user focuses a provider icon
Otherwise, it seems odd to highlight results the user can't see
simply by pressing down a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=708868
2013-09-26 15:17:29 -04:00
e31693bbee overviewControls: Don't allow appearing controls to "pop in"
When coming back from search or apps, the workspace thumbnails and dash
don't slide in but "pop in". This is because of bad timing: when slideIn
is called, we immediately start the translation animation, and it
completes before by the time we fade the new page in.

Fix this by calling slideIn and slideOut at two different times: we now
slide out when the old page with our controls is fading out, and slide in
when the new page with our controls is fading in.

https://bugzilla.gnome.org/show_bug.cgi?id=708340
2013-09-26 13:39:20 -04:00
fb561f10a7 network: Make sure to set the signal icon at dialog item construction time
We forgot to set it here; it would be updated if there was changes in the
signal, but not when it was created.

https://bugzilla.gnome.org/show_bug.cgi?id=708442
2013-09-26 11:06:42 -04:00
0c57d53e03 Update Esperanto translation 2013-09-26 09:09:37 -04:00
3b1b9f589b SystemMenu: wait for a completed paint before switching VT
Activating the GDM login screen switches VT and causes X to freeze
event processing (because it lost the drm master), so must make
sure to have painted the lock screen at least once before proceeding,
or the user can go back and see the unlocked desktop.

https://bugzilla.gnome.org/show_bug.cgi?id=708051
2013-09-26 10:46:42 +02:00
ac8d39acf4 Updated Lithuanian translation 2013-09-25 23:22:27 +03:00
664e795217 [l10n]Updated Turkish translation 2013-09-25 21:16:28 +03:00
82bf323f63 Updated German translation 2013-09-25 15:25:31 +02:00
547ac85113 Updated Basque language 2013-09-25 11:17:01 +02:00
46e0e4430d Bump version to 3.10.0.1
Update NEWS.
2013-09-24 16:04:57 -04:00
609a31ea46 loginManager: fix versionCompare function
It's important to compare the version components as integers,
not strings, so "10" evaulates as greater than "5"

This fixes the login screen in gnome 3.10.

https://bugzilla.gnome.org/show_bug.cgi?id=708691
2013-09-24 14:22:09 -04:00
3e99eb10d1 Updated Norwegian bokmål translation 2013-09-24 19:38:41 +02:00
b9d935af0c ActivitiesButton: close the dummy menu when activating the button
We need to close the menu to make sure that any grabs held by
the PopupMenuManager are released, and events are properly delivered.

https://bugzilla.gnome.org/show_bug.cgi?id=707852
2013-09-24 16:28:31 +02:00
31d3e82aa8 Updated Czech translation 2013-09-24 16:10:40 +02:00
dfdc17197b Punjabi Translation updated by Aman 2013-09-24 07:54:25 -05:00
62b965b4b7 Updated Spanish translation 2013-09-24 14:39:14 +02:00
ba221abea5 Updated Belarusian translation. 2013-09-24 15:03:09 +03:00
aa026c7134 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-24 19:13:45 +08:00
496cfff97a Assamese translation updated 2013-09-24 14:25:28 +05:30
ccaa7f5f3e Updated Russian translation 2013-09-24 12:18:45 +04:00
f492d21c70 Update Kazakh translation 2013-09-24 06:37:02 +06:00
1983541f8c Bump version to 3.10.0
Update NEWS.
2013-09-23 23:33:14 +02:00
e4cb3672b9 Updated Galician translations 2013-09-23 22:24:36 +02:00
a06a78a9c1 aggregate-menu: Increase width
Add 20px more width to make longer strings (translations) fit better.

https://bugzilla.gnome.org/show_bug.cgi?id=708472
2013-09-23 22:23:46 +02:00
2ba91ad837 Updated Slovenian translation 2013-09-23 21:18:03 +02:00
66eb3ea723 Updated Polish translation 2013-09-23 20:38:24 +02:00
d30e992b20 Updated Polish translation 2013-09-23 20:35:58 +02:00
c6a342563f Updated Danish translation 2013-09-23 19:43:15 +02:00
fd584eda05 l10n: Update Japanese translation 2013-09-24 00:01:51 +09:00
4301506590 Updated Hebrew translation
Signed-off-by: Yosef Or Boczko <yoseforb@gmail.com>
2013-09-23 17:59:51 +03:00
88f7c3a970 Updated Indonesian translation 2013-09-23 21:25:49 +07:00
f21a9f0cc2 [l10n] Updated Italian translation. 2013-09-23 16:21:33 +02:00
2233c2e618 Updated Brazilian Portuguese translation 2013-09-23 10:56:43 -03:00
6264419bd4 Update French translation 2013-09-23 15:48:18 +02:00
b62effb8fa add missing translation markers around string in schema 2013-09-23 15:35:06 +02:00
c8a07dd612 messageTray: Fix condition for adding the tray to CtrlAltTab
With the current condition, we wrongly add the message tray to
CtrlAltTab if we start up locked or as greeter.

https://bugzilla.gnome.org/show_bug.cgi?id=708380
2013-09-23 13:32:17 +02:00
02c99e4b25 authPrompt: Clear _queryingService on verification failure
A conversation is finished after failing, and we are expecting a new
one to be started shortly after. However if we encounter an existing
reference to a previously set _queryingService, we will clear the
password entry, which might already contain a partially typed password
at that point. The behavior does make sense in the case of conflicting
conversations, but in the failure case it is both unexpected and
annoying, so clear _queryingService early to prevent this.

https://bugzilla.gnome.org/show_bug.cgi?id=708186
2013-09-23 13:32:17 +02:00
1242a16265 keyring: Don't unregister the prompt when disabled
gnome-keyring provides a fallback in case our builtin prompt fails
to register, so keyring dialogs may still pop up even when they
are supposed to be disabled.
Instead, keep the prompt registered but cancel requests immediately
while disabled.

https://bugzilla.gnome.org/show_bug.cgi?id=708187
2013-09-23 13:32:17 +02:00
a89fd17b8e shell: Make KeyringPrompt.cancel() callable from signal handlers
gcr/gnome-keyring don't handle the case where prompt_password_async()/
prompt_confirm_async() return their result from within the function
very well (or rather: break badly). Calling gcr_prompt_close() instead
is safe, but to avoid these kind of errors in the future, modify
shell_keyring_prompt_cancel() to work as expected in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=708187
2013-09-23 13:32:17 +02:00
3d5e7bd6f1 Updated Indonesian translation 2013-09-23 09:40:56 +07:00
cefcb89487 Updated Portuguese translation 2013-09-22 23:50:24 +01:00
005272bde9 bluetooth: Actually add the menu item to the bluetooth menu
https://bugzilla.gnome.org/show_bug.cgi?id=708541
2013-09-22 22:22:49 +02:00
491e60e4f2 Updated Galician translations 2013-09-22 19:49:52 +02:00
e5f72fd302 Updated Hebrew translation 2013-09-22 13:58:19 +03:00
5f21b100b8 Updated Ukrainian 2013-09-22 11:28:53 +03:00
1a4c7629c5 Translate 'suspend' as 'pauzestand' for consistency 2013-09-21 23:27:43 +02:00
d21734ee47 Updated Dutch translation 2013-09-21 23:04:37 +02:00
e140e2c367 Updated Latvian translatio 2013-09-21 21:53:36 +03:00
7ced1f5b54 focusCaretTracker: Lower AT-SPI's timeout values
Have AT-SPI calls time out after 250ms, to mitigate the effect of a
deadlock when querying another application that is trying to query
gnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=708387
2013-09-21 04:51:42 -05:00
54b028ee3e Updated Ukrainian 2013-09-21 11:42:12 +03:00
703336e1ea Updated Esperanto translation 2013-09-21 09:54:37 +02:00
9e936252ae Updated Polish translation 2013-09-20 17:44:36 +02:00
fc71a0f081 Updated Polish translation 2013-09-20 17:29:48 +02:00
86c72fa15d Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-20 13:43:49 +08:00
6ba5af1e9e Updated Romanian Translation 2013-09-19 21:54:35 +02:00
33a4f59cfb popupMenu: Center the labels in submenu items
https://bugzilla.gnome.org/show_bug.cgi?id=708330
2013-09-19 12:40:43 -04:00
39134f0d9b networkAgent: Don't allow ellipsization of Password label
We don't want password entries to grow when entering more characters
that fit the available width; as labels' ClutterText ellipsizes by
default, the password labels allow entries to grow by shrinking.
Setting the appropriate ellipsize mode fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=708324
2013-09-19 07:53:57 +02:00
30e7440851 keyring: Don't allow ellipsization of Password label
We don't want the password entry to grow when entering more characters
that fit the available width; as labels' ClutterText ellipsizes by
default, the password label allows the entry to grow by shrinking.
Setting the appropriate ellipsize mode fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=708324
2013-09-19 07:53:57 +02:00
be1a7bac7c networkAgent: Port to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2013-09-19 07:53:57 +02:00
fb52a93a28 keyring: Port to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2013-09-19 07:53:56 +02:00
efdf1ff755 main: Close runDialog as necessary on session mode changes
We already do this for looking glass, but it makes even less sense
for the normal run dialog - if a mode sets runDialog to false, the
intention is to not allow executing aribitrary commands.

https://bugzilla.gnome.org/show_bug.cgi?id=708218
2013-09-19 07:53:56 +02:00
2c00dad211 network: Make sure to resync when the activating connection changes
Otherwise, we may be left with a stale activating connection if a
connection is activating, but doesn't fully activate for whatever
reason.

https://bugzilla.gnome.org/show_bug.cgi?id=708322
2013-09-18 17:15:01 -04:00
c23786c73e St: Fix fade effect
Commit 4095a58eb9 introduced a
regression, since we have to take into account four cases,
top, bottom, right, and left, and that can't be merged into
two like that commit did.
So fix it to make fade effect works again.

https://bugzilla.gnome.org/show_bug.cgi?id=708256
2013-09-18 20:01:49 +02:00
7f1b07b76f Revert "Background: Drop "saturation" related source"
This reverts commit 2f35ad6e65.
2013-09-18 13:54:54 +02:00
2f35ad6e65 Background: Drop "saturation" related source
"saturation" was removed from MetaBackground in mutter with
https://git.gnome.org/browse/mutter/commit/?id=0e589061
2013-09-18 13:49:35 +02:00
159c7d34c7 l10n: Update Japanese translation 2013-09-18 20:41:47 +09:00
fe8e990ed7 Punjabi Translation updated by Aman 2013-09-17 22:08:46 -05:00
1fb9b18cb6 Updated Belarusian translation. 2013-09-17 22:46:22 +03:00
5c2586127b Update gvc
A translator accidentally undid this.
2013-09-17 11:54:44 -04:00
661b266b45 Updated Esperanto translation
Reviewed by Ken Price
2013-09-17 10:11:50 -04:00
98af044196 Updated Romanian Translation 2013-09-17 09:55:18 +02:00
93 changed files with 14431 additions and 17080 deletions

85
NEWS
View File

@ -1,3 +1,88 @@
3.10.1
======
* Make sure lock screen is drawn once before switching user [Giovanni; #708051]
* Fix signal strength indicators in network selector [Jasper; #708442]
* Scroll search results when focusing provider icons [Jasper; #708868]
* Add separate hover/active states to page indicators [Carlos; #708852]
* Tweak appearance of user name and avatar [Yash; #702309]
* Hide "Turn On" in network menu when disabled by hardware [Giovanni; #709635]
* Cancel open keyring prompts when the screen is locked [Florian; #708910]
* Differentiate "Not Connected" and "Off" in network menu [Giovanni; #709043]
* Make network settings items point to the right device [Giovanni; #709246]
* Remove animation of window preview titles [Sebastien; #709392]
* Add 'Notifications' switch to tray menu [Florian; #707073]
* Make dropdown arrows consistent [Carlos; #709564]
* power: Use icon from primary device for status [Jasper; #709925]
* Fix XDND drags to overview [Adel; #708887]
* Fix workspace switcher disappearing with too many workspaces [Jasper; #694881]
* Handle search results with 'special:' prefix specially [Giovanni; #707055]
* gdm: Support pre-authenticated logins from oVirt [Vinzenz; #702162]
* Use ARROW role for labels representing arrows [Alejandro; #710120]
* Make selected view in app picker persistent [Florian; #710042]
* Make network selector navigable by keyboard [Alejandro; #710144]
* Misc bug fixes [Florian, Adel, Jasper, Aleksander, Giovanni, Dan, Michael,
Tim; #709034, #709263, #698486, #709286, #709248, #709543, #696564, #703265,
#709638, #709866, #709998, #710019, #710104, #710115]
Contributors:
Giovanni Campagna, Michael Catanzaro, Vinzenz Feenstra, Adel Gadllah,
Yash Girdhar, Sebastien Lafargue, Tim Lunn, Aleksander Morgado,
Florian Müllner, Alejandro Piñeiro, Carlos Soriano, Jasper St. Pierre,
Dieter Verfaillie, Dan Winship
Translations:
Inaki Larranaga Murgoitio [eu], Christian Kirbach [de], Muhammet Kara [tr],
Aurimas Černius [lt], Ryan Lortie [eo], Rūdolfs Mazurs [lv],
Dušan Kazik [sk], Fran Diéguez [gl], Enrico Nicoletto [pt_BR],
Kjartan Maraas [nb], Victor Ibragimov [tg], Matej Urbančič [sl],
A S Alam [pa], Nilamdyuti Goswami [as], Daniel Mustieles [es],
Cheng-Chia Tseng [zh_HK, zh_TW], Mattias Põldaru [et], Kenneth Nielsen [da],
Milo Casagrande [it], Marek Černocký [cs], Ihar Hrachyshka [be],
Мирослав Николић [sr, sr@latin], Arash Mousavi [fa], Yuri Myasoedov [ru],
Gil Forcada [ca], Carles Ferrando [ca@valencia], Andika Triwidada [id],
Timo Jyrinki [fi], Piotr Drąg [pl], Rafael Ferreira [pt_BR],
Gabor Kelemen [hu], Yosef Or Boczko [he], Daniel Korostil [uk],
Wouter Bolsterlee [nl], António Lima [pt]
3.10.0.1
=========
* Fix login screen [Ray; #708691]
Contributors:
Ray Strode, Giovanni Campagna, Jasper St. Pierree
Translations:
Kjartan Maraas [nb], Marek Černocký [cs], A S Alam [pa], Daniel Mustieles [es],
Ihar Hrachyshka [be], Chao-Hsiung Liao [zh_HK], Nilamdyuti Goswami [as],
Yuri Myasoedov [ru], Baurzhan Muftakhidinov [kk]
3.10.0
======
* Fix fade effect in ScrollViews [Carlos; #708256]
* network: Resync when activating connection changes [Jasper; #708322]
* Close run dialog when the screen locks [Florian; #708218]
* Fix entry growing out of password dialogs [Florian; #708324, #703833]
* Vertically center labels in submenu items [Jasper; #708330]
* https://bugzilla.gnome.org/show_bug.cgi?id=708387 [Mike; #708387]
* Fix bluetooth icon not being added to status menu [Jasper; #708541]
* Fix GNOME 2 keyring dialogs appearing on lock screen [Florian; #708187]
* Fix passwords being cleared twice when authentication fails [Florian; #708186]
* Fix message tray appearing in a11y popup on login screen [Florian; #708380]
* Increase width of aggregate menu popup [Adel; #708472]
Contributors:
Adel Gadllah, Mike Gorse, Ryan Lortie, Florian Müllner, Frédéric Péters,
Carlos Soriano, Jasper St. Pierre, Rico Tzschichholz
Translations:
Daniel Șerbănescu [ro], Ryan Lortie [eo], Ihar Hrachyshka [be],
A S Alam [pa], Jiro Matsuzawa [ja], Chao-Hsiung Liao [zh_HK, zh_TW],
Piotr Drąg [pl], Kristjan SCHMIDT [eo], Daniel Korostil [uk],
Rūdolfs Mazurs [lv], Reinout van Schouwen [nl], Yosef Or Boczko [he],
Fran Diéguez [gl], António Lima [pt], Andika Triwidada [id],
Alexandre Franke [fr], Rafael Ferreira [pt_BR], Milo Casagrande [it],
Kenneth Nielsen [da], Matej Urbančič [sl]
3.9.92
======
* Don't show page indicators if there's only one page [Florian; #707363]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.9.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.10.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])
@ -59,8 +59,8 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.13.4
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.35.4
MUTTER_MIN_VERSION=3.9.92
GJS_MIN_VERSION=1.38.1
MUTTER_MIN_VERSION=3.10.1
GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3

View File

@ -45,8 +45,10 @@ dist_theme_DATA = \
theme/message-tray-background.png \
theme/more-results.svg \
theme/noise-texture.png \
theme/page-indicator-active.svg \
theme/page-indicator-active.svg \
theme/page-indicator-inactive.svg \
theme/page-indicator-checked.svg \
theme/page-indicator-hover.svg \
theme/panel-button-border.svg \
theme/panel-button-highlight-narrow.svg \
theme/panel-button-highlight-wide.svg \

View File

@ -37,6 +37,13 @@
application view, rather than being displayed inline in the main view.
</_description>
</key>
<key name="app-picker-view" type="u">
<default>0</default>
<summary>App Picker View</summary>
<description>
Index of the currently selected view in the application picker.
</description>
</key>
<key name="command-history" type="as">
<default>[]</default>
<_summary>History for command (Alt-F2) dialog</_summary>
@ -216,10 +223,10 @@
<key name="focus-change-on-pointer-rest" type="b">
<default>true</default>
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
<description>
<_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</_description>
</key>
</schema>
</schemalist>

View File

@ -157,7 +157,7 @@ StScrollBar StButton#vhandle:active {
min-width: 200px;
}
.popup-submenu-menu-item-triangle {
.unicode-arrow {
font-size: 120%;
}
@ -642,7 +642,7 @@ StScrollBar StButton#vhandle:active {
}
.aggregate-menu {
width: 340px;
width: 360px;
}
.aggregate-menu .popup-menu-icon {
@ -693,7 +693,9 @@ StScrollBar StButton#vhandle:active {
padding-bottom: 32px;
}
.workspace-thumbnails-background {
.workspace-thumbnails {
spacing: 11px;
visible-width: 32px; /* Amount visible before hovering */
border: 1px solid rgba(128, 128, 128, 0.4);
border-right: 0px;
border-radius: 9px 0px 0px 9px;
@ -701,18 +703,13 @@ StScrollBar StButton#vhandle:active {
padding: 11px 7px 11px 11px;
}
.workspace-thumbnails-background:rtl {
.workspace-thumbnails:rtl {
border-right: 1px;
border-left: 0px;
border-radius: 0px 9px 9px 0px;
padding: 11px 11px 11px 7px;
}
.workspace-thumbnails {
spacing: 11px;
visible-width: 32px; /* Amount visible before hovering */
}
.workspace-thumbnail-indicator {
border: 4px solid rgba(255,255,255,0.7);
border-radius: 4px;
@ -950,11 +947,19 @@ StScrollBar StButton#vhandle:active {
background-image: url(page-indicator-inactive.svg);
}
.page-indicator:hover .page-indicator-icon,
.page-indicator:checked .page-indicator-icon {
.page-indicator:hover .page-indicator-icon {
background-image: url(page-indicator-hover.svg);
}
.page-indicator:active .page-indicator-icon {
background-image: url(page-indicator-active.svg);
}
.page-indicator:checked .page-indicator-icon,
.page-indicator:checked:active .page-indicator-icon {
background-image: url(page-indicator-checked.svg);
}
.no-frequent-applications-label {
font-size: 18pt;
color: #999999;
@ -2268,7 +2273,7 @@ StScrollBar StButton#vhandle:active {
.framed-user-icon {
border: 2px solid #8b8b8b;
border-radius: 5px;
border-radius: 3px;
background-size: contain;
}
@ -2312,7 +2317,7 @@ StScrollBar StButton#vhandle:active {
}
.login-dialog-user-list-item {
border-radius: 10px;
border-radius: 5px;
padding: .2em;
}
@ -2325,19 +2330,20 @@ StScrollBar StButton#vhandle:active {
}
.login-dialog-user-list-item .login-dialog-user-list-item-name {
font-size: 20pt;
padding-left: 9px;
font-size: 20px;
padding-left: 18px;
font-weight: bold;
}
.login-dialog-user-list:expanded .login-dialog-user-list-item {
color: #666666;
color: #bfbfbf;
}
.login-dialog-user-list-item,
.login-dialog-user-list-item:hover .login-dialog-user-list-item-name,
.login-dialog-user-list:expanded .login-dialog-user-list-item:focus .login-dialog-user-list-item-name,
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
color: white;
color: #bfbfbf;
text-shadow: black 0px 2px 2px;
}
@ -2369,7 +2375,7 @@ StScrollBar StButton#vhandle:active {
.login-dialog-user-list-item-icon {
border: 2px solid #8b8b8b;
border-radius: 8px;
border-radius: 3px;
width: 64px;
height: 64px;
}
@ -2486,10 +2492,11 @@ StScrollBar StButton#vhandle:active {
}
.user-widget-label {
font-size: 16pt;
font-size: 20px;
font-weight: bold;
text-align: left;
padding-left: 15px;
padding-left: 18px;
color:white;
text-shadow: black 0px 4px 3px 0px;
}

View File

@ -14,7 +14,7 @@
id="svg4703"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-active.svg">
sodipodi:docname="page-indicator-pushed.svg">
<defs
id="defs4705" />
<sodipodi:namedview
@ -24,18 +24,22 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="2.1522887"
inkscape:cy="16.782904"
inkscape:zoom="31.392433"
inkscape:cx="1.0245308"
inkscape:cy="13.3715"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6140" />
</sodipodi:namedview>
<metadata
id="metadata4708">
<rdf:RDF>
@ -44,7 +48,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -54,14 +58,14 @@
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
transform="matrix(0.54617904,0,0,0.62523128,-1131.9904,-392.39214)"
d="m 2099.9808,638.83099 a 10.985409,9.5964489 0 1 1 -21.9708,0 10.985409,9.5964489 0 1 1 21.9708,0 z"
sodipodi:ry="9.5964489"
sodipodi:rx="10.985409"
sodipodi:cy="638.83099"
sodipodi:cx="2088.9954"
id="path4711"
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
style="fill:#fdffff;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="18"
height="18"
id="svg4703"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-active.svg">
<defs
id="defs4705" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="2.1522887"
inkscape:cy="16.782904"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata4708">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
sodipodi:ry="9.5964489"
sodipodi:rx="10.985409"
sodipodi:cy="638.83099"
sodipodi:cx="2088.9954"
id="path4711"
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
sodipodi:type="arc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="18"
height="18"
id="svg5266"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-inactive.svg">
<defs
id="defs5268" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="-2.307566"
inkscape:cy="17.859535"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata5271">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path5274"
sodipodi:cx="2088.9954"
sodipodi:cy="638.83099"
sodipodi:rx="10.985409"
sodipodi:ry="9.5964489"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
transform="matrix(0.63720887,0,0,0.72943648,-1322.1264,-458.98661)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -25,14 +25,14 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="13.381365"
inkscape:cx="-2.307566"
inkscape:cy="17.859535"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
@ -55,7 +55,7 @@
transform="translate(0,2)">
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276;stroke-miterlimit:4;stroke-opacity:0.39215686;stroke-dasharray:none"
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:0.39215686000000000;stroke-dasharray:none"
id="path5274"
sodipodi:cx="2088.9954"
sodipodi:cy="638.83099"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -21,6 +21,7 @@ nobase_dist_js_DATA = \
gdm/batch.js \
gdm/fingerprint.js \
gdm/loginDialog.js \
gdm/oVirt.js \
gdm/realmd.js \
gdm/util.js \
extensionPrefs/main.js \

View File

@ -59,6 +59,7 @@ const AuthPrompt = new Lang.Class({
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
this._userVerifier.connect('smartcard-status-changed', Lang.bind(this, this._onSmartcardStatusChanged));
this._userVerifier.connect('ovirt-user-authenticated', Lang.bind(this, this._onOVirtUserAuthenticated));
this.smartcardDetected = this._userVerifier.smartcardDetected;
this.connect('next', Lang.bind(this, function() {
@ -219,6 +220,11 @@ const AuthPrompt = new Lang.Class({
this.emit('prompted');
},
_onOVirtUserAuthenticated: function() {
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
this.reset();
},
_onSmartcardStatusChanged: function() {
this.smartcardDetected = this._userVerifier.smartcardDetected;
@ -244,6 +250,7 @@ const AuthPrompt = new Lang.Class({
},
_onVerificationFailed: function() {
this._queryingService = null;
this.clear();
this.updateSensitivity(true);
@ -443,10 +450,11 @@ const AuthPrompt = new Lang.Class({
// The user is constant at the unlock screen, so it will immediately
// respond to the request with the username
beginRequestType = BeginRequestType.PROVIDE_USERNAME;
} else if (this.smartcardDetected &&
this._userVerifier.serviceIsForeground(GdmUtil.SMARTCARD_SERVICE_NAME)) {
} else if (this._userVerifier.serviceIsForeground(GdmUtil.OVIRT_SERVICE_NAME) ||
(this.smartcardDetected &&
this._userVerifier.serviceIsForeground(GdmUtil.SMARTCARD_SERVICE_NAME))) {
// We don't need to know the username if the user preempted the login screen
// with a smartcard.
// with a smartcard or with preauthenticated oVirt credentials
beginRequestType = BeginRequestType.DONT_PROVIDE_USERNAME;
} else {
// In all other cases, we should get the username up front.

View File

@ -619,7 +619,7 @@ const LoginDialog = new Lang.Class({
// Translators: this message is shown below the username entry field
// to clue the user in on how to login to the local network realm
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), AuthPrompt.MessageType.HINT);
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), GdmUtil.MessageType.HINT);
},
_askForUsernameAndBeginVerification: function() {

62
js/gdm/oVirt.js Normal file
View File

@ -0,0 +1,62 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Signals = imports.signals;
const OVirtCredentialsIface = <interface name='org.ovirt.vdsm.Credentials'>
<signal name="UserAuthenticated">
<arg type="s" name="token"/>
</signal>
</interface>;
const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface);
let _oVirtCredentialsManager = null;
function OVirtCredentials() {
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
g_interface_name: OVirtCredentialsInfo.name,
g_interface_info: OVirtCredentialsInfo,
g_name: 'org.ovirt.vdsm.Credentials',
g_object_path: '/org/ovirt/vdsm/Credentials',
g_flags: (Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
self.init(null);
return self;
}
const OVirtCredentialsManager = new Lang.Class({
Name: 'OVirtCredentialsManager',
_init: function() {
this._token = null;
this._credentials = new OVirtCredentials();
this._credentials.connectSignal('UserAuthenticated',
Lang.bind(this, this._onUserAuthenticated));
},
_onUserAuthenticated: function(proxy, sender, [token]) {
this._token = token;
this.emit('user-authenticated', token);
},
hasToken: function() {
return this._token != null;
},
getToken: function() {
return this._token;
},
resetToken: function() {
this._token = null;
}
});
Signals.addSignalMethods(OVirtCredentialsManager.prototype);
function getOVirtCredentialsManager() {
if (!_oVirtCredentialsManager)
_oVirtCredentialsManager = new OVirtCredentialsManager();
return _oVirtCredentialsManager;
}

View File

@ -10,6 +10,7 @@ const St = imports.gi.St;
const Batch = imports.gdm.batch;
const Fprint = imports.gdm.fingerprint;
const OVirt = imports.gdm.oVirt;
const Main = imports.ui.main;
const Params = imports.misc.params;
const ShellEntry = imports.ui.shellEntry;
@ -19,6 +20,7 @@ const Tweener = imports.ui.tweener;
const PASSWORD_SERVICE_NAME = 'gdm-password';
const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
const SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
const OVIRT_SERVICE_NAME = 'gdm-ovirtcred';
const FADE_ANIMATION_TIME = 0.16;
const CLONE_FADE_ANIMATION_TIME = 0.25;
@ -151,6 +153,14 @@ const ShellUserVerifier = new Lang.Class({
this.reauthenticating = false;
this._failCounter = 0;
this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager();
if (this._oVirtCredentialsManager.hasToken())
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
this._oVirtCredentialsManager.connect('user-authenticated',
Lang.bind(this, this._oVirtUserAuthenticated));
},
begin: function(userName, hold) {
@ -277,6 +287,11 @@ const ShellUserVerifier = new Lang.Class({
}));
},
_oVirtUserAuthenticated: function(token) {
this._preemptingService = OVIRT_SERVICE_NAME;
this.emit('ovirt-user-authenticated');
},
_checkForSmartcard: function() {
let smartcardDetected;
@ -455,6 +470,12 @@ const ShellUserVerifier = new Lang.Class({
if (!this.serviceIsForeground(serviceName))
return;
if (serviceName == OVIRT_SERVICE_NAME) {
// The only question asked by this service is "Token?"
this.answerQuery(serviceName, this._oVirtCredentialsManager.getToken());
return;
}
this.emit('ask-question', serviceName, secretQuestion, '\u25cf');
},
@ -515,6 +536,16 @@ const ShellUserVerifier = new Lang.Class({
},
_onConversationStopped: function(client, serviceName) {
// If the login failed with the preauthenticated oVirt credentials
// then discard the credentials and revert to default authentication
// mechanism.
if (this.serviceIsForeground(OVIRT_SERVICE_NAME)) {
this._oVirtCredentialsManager.resetToken();
this._preemptingService = null;
this._verificationFailed(false);
return;
}
// if the password service fails, then cancel everything.
// But if, e.g., fingerprint fails, still give
// password authentication a chance to succeed

View File

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

View File

@ -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 GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
@ -79,6 +80,22 @@ function spawnCommandLine(command_line) {
}
}
// spawnApp:
// @argv: an argv array
//
// Runs @argv as if it was an application, handling startup notification
function spawnApp(argv) {
try {
let app = Gio.AppInfo.create_from_commandline(argv.join(' '), null,
Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
let context = global.create_app_launch_context();
app.launch([], context);
} catch(err) {
_handleSpawnError(argv[0], err);
}
}
// trySpawn:
// @argv: an argv array
//

View File

@ -744,10 +744,15 @@ const AppDisplay = new Lang.Class({
this._views[i].control.connect('clicked', Lang.bind(this,
function(actor) {
this._showView(viewIndex);
global.settings.set_uint('app-picker-view', viewIndex);
}));
}
let initialView = Math.min(global.settings.get_uint('app-picker-view'),
this._views.length - 1);
let frequentUseful = this._views[Views.FREQUENT].view.hasUsefulData();
this._showView(frequentUseful ? Views.FREQUENT : Views.ALL);
if (initialView == Views.FREQUENT && !frequentUseful)
initialView = Views.ALL;
this._showView(initialView);
this._updateFrequentVisibility();
// We need a dummy actor to catch the keyboard focus if the
@ -877,6 +882,10 @@ const AppSearchProvider = new Lang.Class({
callback(metas);
},
filterResults: function(results, maxNumber) {
return results.slice(0, maxNumber);
},
getInitialResultSet: function(terms) {
this.searchSystem.setResults(this, this._appSys.initial_search(terms));
},

View File

@ -319,9 +319,9 @@ const Background = new Lang.Class({
this._cancellable = new Gio.Cancellable();
this.isLoaded = false;
this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._load();
},
@ -362,6 +362,10 @@ const Background = new Lang.Class({
this.actor.disconnect(this._destroySignalId);
this._destroySignalId = 0;
if (this._settingsChangedSignalId != 0)
this._settings.disconnect(this._settingsChangedSignalId);
this._settingsChangedSignalId = 0;
},
_setLoaded: function() {

View File

@ -185,7 +185,9 @@ const BoxPointer = new Lang.Class({
},
_getPreferredHeight: function(actor, forWidth, alloc) {
let [minSize, naturalSize] = this.bin.get_preferred_height(forWidth);
let themeNode = this.actor.get_theme_node();
let borderWidth = themeNode.get_length('-arrow-border-width');
let [minSize, naturalSize] = this.bin.get_preferred_height(forWidth - 2 * borderWidth);
alloc.min_size = minSize;
alloc.natural_size = naturalSize;
this._adjustAllocationForArrow(false, alloc);

View File

@ -13,8 +13,6 @@ const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
const CheckBox = imports.ui.checkBox;
let prompter = null;
const KeyringDialog = new Lang.Class({
Name: 'KeyringDialog',
Extends: ModalDialog.ModalDialog,
@ -80,23 +78,26 @@ const KeyringDialog = new Lang.Class({
},
_buildControlTable: function() {
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
let layout = new Clutter.TableLayout();
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
layout_manager: layout });
layout.hookup_style(table);
let row = 0;
if (this.prompt.password_visible) {
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
let label = new St.Label({ style_class: 'prompt-dialog-password-label' });
label.set_text(_("Password:"));
table.add(label, { row: row, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
layout.pack(label, 0, row);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
can_focus: true});
can_focus: true });
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
table.add(this._passwordEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
layout.pack(this._passwordEntry, 1, row);
row++;
} else {
this._passwordEntry = null;
@ -105,17 +106,16 @@ const KeyringDialog = new Lang.Class({
if (this.prompt.confirm_visible) {
var label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
label.set_text(_("Type again:"));
table.add(label, { row: row, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
layout.pack(label, 0, row);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
can_focus: true});
can_focus: true });
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
table.add(this._confirmEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
layout.pack(this._confirmEntry, 1, row);
row++;
} else {
this._confirmEntry = null;
@ -128,14 +128,14 @@ const KeyringDialog = new Lang.Class({
let choice = new CheckBox.CheckBox();
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
table.add(choice.actor, { row: row, col: 1, x_expand: false, x_fill: true, x_align: St.Align.START });
layout.pack(choice.actor, 1, row);
row++;
}
let warning = new St.Label({ style_class: 'prompt-dialog-error-label' });
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
warning.clutter_text.line_wrap = true;
table.add(warning, { row: row, col: 1, x_expand: false, x_fill: false, x_align: St.Align.START });
layout.pack(warning, 1, row);
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
@ -221,27 +221,56 @@ const KeyringDialog = new Lang.Class({
},
});
const KeyringDummyDialog = new Lang.Class({
Name: 'KeyringDummyDialog',
_init: function() {
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password',
Lang.bind(this, this._cancelPrompt));
this.prompt.connect('show-confirm', Lang.bind(this,
this._cancelPrompt));
},
_cancelPrompt: function() {
this.prompt.cancel();
}
});
const KeyringPrompter = new Lang.Class({
Name: 'KeyringPrompter',
_init: function() {
this._prompter = new Gcr.SystemPrompter();
this._prompter.connect('new-prompt', function(prompter) {
let dialog = new KeyringDialog();
return dialog.prompt;
});
this._prompter.connect('new-prompt', Lang.bind(this,
function() {
let dialog = this._enabled ? new KeyringDialog()
: new KeyringDummyDialog();
this._currentPrompt = dialog.prompt;
return this._currentPrompt;
}));
this._dbusId = null;
this._registered = false;
this._enabled = false;
this._currentPrompt = null;
},
enable: function() {
this._prompter.register(Gio.DBus.session);
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
if (!this._registered) {
this._prompter.register(Gio.DBus.session);
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
this._registered = true;
}
this._enabled = true;
},
disable: function() {
this._prompter.unregister(false);
Gio.DBus.session.unown_name(this._dbusId);
this._enabled = false;
if (this._prompter.prompting)
this._currentPrompt.cancel();
this._currentPrompt = null;
}
});

View File

@ -72,13 +72,18 @@ const NetworkSecretDialog = new Lang.Class({
expand: true });
}
let secretTable = new St.Table({ style_class: 'network-dialog-secret-table' });
let layout = new Clutter.TableLayout();
let secretTable = new St.Widget({ style_class: 'network-dialog-secret-table',
layout_manager: layout });
layout.hookup_style(secretTable);
let initialFocusSet = false;
let pos = 0;
for (let i = 0; i < this._content.secrets.length; i++) {
let secret = this._content.secrets[i];
let label = new St.Label({ style_class: 'prompt-dialog-password-label',
text: secret.label });
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
let reactive = secret.key != null;
@ -111,11 +116,10 @@ const NetworkSecretDialog = new Lang.Class({
} else
secret.valid = true;
secretTable.add(label, { row: pos, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END });
layout.pack(label, 0, pos);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
layout.pack(secret.entry, 1, pos);
pos++;
if (secret.password)

View File

@ -13,7 +13,6 @@ const Tp = imports.gi.TelepathyGLib;
const History = imports.misc.history;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const NotificationDaemon = imports.ui.notificationDaemon;
const Params = imports.misc.params;
const PopupMenu = imports.ui.popupMenu;
@ -416,7 +415,7 @@ const TelepathyClient = new Lang.Class({
_ensureAppSource: function() {
if (this._appSource == null) {
this._appSource = new MessageTray.Source(_("Chat"), 'empathy');
this._appSource.policy = new NotificationDaemon.NotificationApplicationPolicy('empathy');
this._appSource.policy = new MessageTray.NotificationApplicationPolicy('empathy');
Main.messageTray.add(this._appSource);
this._appSource.connect('destroy', Lang.bind(this, function () {
@ -488,7 +487,7 @@ const ChatSource = new Lang.Class({
},
_createPolicy: function() {
return new NotificationDaemon.NotificationApplicationPolicy('empathy');
return new MessageTray.NotificationApplicationPolicy('empathy');
},
_updateAlias: function() {
@ -1061,7 +1060,7 @@ const ApproverSource = new Lang.Class({
},
_createPolicy: function() {
return new NotificationDaemon.NotificationApplicationPolicy('empathy');
return new MessageTray.NotificationApplicationPolicy('empathy');
},
destroy: function() {

View File

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

View File

@ -251,7 +251,7 @@ const LayoutManager = new Lang.Class({
this._inOverview = true;
this._updateVisibility();
this._queueUpdateRegions();
this._updateRegions();
},
hideOverview: function() {
@ -362,7 +362,7 @@ const LayoutManager = new Lang.Class({
BackgroundMenu.addBackgroundMenu(bgManager.background.actor);
}));
this._bgManagers.push(bgManager);
this._bgManagers[monitorIndex] = bgManager;
return bgManager.background;
},

View File

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

View File

@ -310,6 +310,126 @@ const NotificationPolicy = new Lang.Class({
});
Signals.addSignalMethods(NotificationPolicy.prototype);
const NotificationGenericPolicy = new Lang.Class({
Name: 'NotificationGenericPolicy',
Extends: NotificationPolicy,
_init: function() {
// Don't chain to parent, it would try setting
// our properties to the defaults
this.id = 'generic';
this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed));
},
store: function() { },
destroy: function() {
this._masterSettings.run_dispose();
},
_changed: function(settings, key) {
this.emit('policy-changed', key);
},
get enable() {
return true;
},
get enableSound() {
return true;
},
get showBanners() {
return this._masterSettings.get_boolean('show-banners');
},
get forceExpanded() {
return false;
},
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen');
},
get detailsInLockScreen() {
return false;
}
});
const NotificationApplicationPolicy = new Lang.Class({
Name: 'NotificationApplicationPolicy',
Extends: NotificationPolicy,
_init: function(id) {
// Don't chain to parent, it would try setting
// our properties to the defaults
this.id = id;
this._canonicalId = this._canonicalizeId(id);
this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._settings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications.application',
path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed));
this._settings.connect('changed', Lang.bind(this, this._changed));
},
store: function() {
this._settings.set_string('application-id', this.id + '.desktop');
let apps = this._masterSettings.get_strv('application-children');
if (apps.indexOf(this._canonicalId) < 0) {
apps.push(this._canonicalId);
this._masterSettings.set_strv('application-children', apps);
}
},
destroy: function() {
this._masterSettings.run_dispose();
this._settings.run_dispose();
},
_changed: function(settings, key) {
this.emit('policy-changed', key);
},
_canonicalizeId: function(id) {
// Keys are restricted to lowercase alphanumeric characters and dash,
// and two dashes cannot be in succession
return id.toLowerCase().replace(/[^a-z0-9\-]/g, '-').replace(/--+/g, '-');
},
get enable() {
return this._settings.get_boolean('enable');
},
get enableSound() {
return this._settings.get_boolean('enable-sound-alerts');
},
get showBanners() {
return this._masterSettings.get_boolean('show-banners') &&
this._settings.get_boolean('show-banners');
},
get forceExpanded() {
return this._settings.get_boolean('force-expanded');
},
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen') &&
this._settings.get_boolean('show-in-lock-screen');
},
get detailsInLockScreen() {
return this._settings.get_boolean('details-in-lock-screen');
}
});
// Notification:
// @source: the notification's Source
// @title: the title
@ -438,7 +558,12 @@ const Notification = new Lang.Class({
this._bannerLabel = this._bannerUrlHighlighter.actor;
this._bannerBox.add_actor(this._bannerLabel);
this.update(title, banner, params);
// If called with only one argument we assume the caller
// will call .update() later on. This is the case of
// NotificationDaemon, which wants to use the same code
// for new and updated notifications
if (arguments.length != 1)
this.update(title, banner, params);
},
// update:
@ -723,7 +848,6 @@ const Notification = new Lang.Class({
// %action-invoked signal with @id as a parameter
addButton: function(id, label) {
if (!this._buttonBox) {
let box = new St.BoxLayout({ style_class: 'notification-actions' });
this.setActionArea(box, { x_expand: false,
y_expand: false,
@ -731,6 +855,7 @@ const Notification = new Lang.Class({
y_fill: false,
x_align: St.Align.END });
this._buttonBox = box;
global.focus_manager.add_group(this._buttonBox);
}
let button = new St.Button({ can_focus: true });
@ -745,11 +870,7 @@ const Notification = new Lang.Class({
button.label = label;
}
if (this._buttonBox.get_n_children() > 0)
global.focus_manager.remove_group(this._buttonBox);
this._buttonBox.add(button);
global.focus_manager.add_group(this._buttonBox);
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
this.updated();
@ -1206,6 +1327,10 @@ const Source = new Lang.Class({
return this.count > 1;
},
get isClearable() {
return !this.trayIcon && !this.isChat && !this.resident;
},
countUpdated: function() {
this.emit('count-updated');
},
@ -1277,25 +1402,27 @@ const Source = new Lang.Class({
return this._mainIcon.actor;
},
_onNotificationDestroy: function(notification) {
let index = this.notifications.indexOf(notification);
if (index < 0)
return;
this.notifications.splice(index, 1);
if (this.notifications.length == 0)
this._lastNotificationRemoved();
this.countUpdated();
},
pushNotification: function(notification) {
if (this.notifications.indexOf(notification) < 0) {
this.notifications.push(notification);
this.emit('notification-added', notification);
}
if (this.notifications.indexOf(notification) >= 0)
return;
notification.connect('clicked', Lang.bind(this, this.open));
notification.connect('destroy', Lang.bind(this,
function () {
let index = this.notifications.indexOf(notification);
if (index < 0)
return;
notification.connect('destroy', Lang.bind(this, this._onNotificationDestroy));
this.notifications.splice(index, 1);
if (this.notifications.length == 0)
this._lastNotificationRemoved();
this.countUpdated();
}));
this.notifications.push(notification);
this.emit('notification-added', notification);
this.countUpdated();
},
@ -1507,26 +1634,42 @@ const MessageTrayMenu = new Lang.Class({
this._tray = tray;
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
if (error) {
logError(error, 'Error while reading gnome-session presence');
return;
}
this._onStatusChanged(proxy.status);
}));
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
this._onStatusChanged(status);
}));
this._accountManager = Tp.AccountManager.dup();
this._accountManager.connect('most-available-presence-changed',
Lang.bind(this, this._onIMPresenceChanged));
this._accountManager.prepare_async(null, Lang.bind(this, this._onIMPresenceChanged));
this.actor.hide();
Main.layoutManager.addChrome(this.actor);
this._busyItem = new PopupMenu.PopupSwitchMenuItem(_("Notifications"));
this._busyItem.connect('toggled', Lang.bind(this, this._updatePresence));
this.addMenuItem(this._busyItem);
let separator = new PopupMenu.PopupSeparatorMenuItem();
this.addMenuItem(separator);
this._clearItem = this.addAction(_("Clear Messages"), function() {
let toDestroy = [];
let sources = tray.getSources();
for (let i = 0; i < sources.length; i++) {
// We exclude trayIcons, chat and resident sources
if (sources[i].trayIcon ||
sources[i].isChat ||
sources[i].resident)
continue;
toDestroy.push(sources[i]);
}
let toDestroy = tray.getSources().filter(function(source) {
return source.isClearable;
})
for (let i = 0; i < toDestroy.length; i++) {
toDestroy[i].destroy();
}
toDestroy.forEach(function(source) {
source.destroy();
});
toDestroy = null;
tray.close();
});
@ -1541,9 +1684,43 @@ const MessageTrayMenu = new Lang.Class({
settingsItem.connect('activate', function() { tray.close(); });
},
_onStatusChanged: function(status) {
this._sessionStatus = status;
this._busyItem.setToggleState(status != GnomeSession.PresenceStatus.BUSY);
},
_onIMPresenceChanged: function(am, type) {
if (type == Tp.ConnectionPresenceType.AVAILABLE &&
this._sessionStatus == GnomeSession.PresenceStatus.BUSY)
this._presence.SetStatusRemote(GnomeSession.PresenceStatus.AVAILABLE);
},
_updateClearSensitivity: function() {
this._clearItem.setSensitive(this._tray.clearableCount > 0);
},
_updatePresence: function(item, state) {
let status = state ? GnomeSession.PresenceStatus.AVAILABLE
: GnomeSession.PresenceStatus.BUSY;
this._presence.SetStatusRemote(status);
let [type, s ,msg] = this._accountManager.get_most_available_presence();
let newType = 0;
let newStatus;
if (status == GnomeSession.PresenceStatus.BUSY &&
type == Tp.ConnectionPresenceType.AVAILABLE) {
newType = Tp.ConnectionPresenceType.BUSY;
newStatus = 'busy';
} else if (status == GnomeSession.PresenceStatus.AVAILABLE &&
type == Tp.ConnectionPresenceType.BUSY) {
newType = Tp.ConnectionPresenceType.AVAILABLE;
newStatus = 'available';
}
if (newType > 0)
this._accountManager.set_all_requested_presences(newType,
newStatus, msg);
}
});
const MessageTrayMenuButton = new Lang.Class({
@ -1805,8 +1982,9 @@ const MessageTray = new Lang.Class({
},
_sessionUpdated: function() {
if ((Main.sessionMode.isLocked || Main.sessionMode.isGreeter) && this._inCtrlAltTab) {
Main.ctrlAltTabManager.removeGroup(this._summary);
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter) {
if (this._inCtrlAltTab)
Main.ctrlAltTabManager.removeGroup(this._summary);
this._inCtrlAltTab = false;
} else if (!this._inCtrlAltTab) {
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'user-available-symbolic',
@ -1925,7 +2103,7 @@ const MessageTray = new Lang.Class({
this._summary.insert_child_at_index(summaryItem.actor, this._chatSummaryItemsCount);
}
if (!source.trayIcon && !source.isChat && !source.resident)
if (source.isClearable)
this.clearableCount++;
this._sources.set(source, obj);
@ -1969,7 +2147,7 @@ const MessageTray = new Lang.Class({
if (source.isChat)
this._chatSummaryItemsCount--;
if (!source.trayIcon && !source.isChat && !source.resident)
if (source.isClearable)
this.clearableCount--;
source.disconnect(obj.notifyId);

View File

@ -103,126 +103,6 @@ const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
'ibus-ui-gtk': 'keyboard'
};
const NotificationGenericPolicy = new Lang.Class({
Name: 'NotificationGenericPolicy',
Extends: MessageTray.NotificationPolicy,
_init: function() {
// Don't chain to parent, it would try setting
// our properties to the defaults
this.id = 'generic';
this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed));
},
store: function() { },
destroy: function() {
this._masterSettings.run_dispose();
},
_changed: function(settings, key) {
this.emit('policy-changed', key);
},
get enable() {
return true;
},
get enableSound() {
return true;
},
get showBanners() {
return this._masterSettings.get_boolean('show-banners');
},
get forceExpanded() {
return false;
},
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen');
},
get detailsInLockScreen() {
return false;
}
});
const NotificationApplicationPolicy = new Lang.Class({
Name: 'NotificationApplicationPolicy',
Extends: MessageTray.NotificationPolicy,
_init: function(id) {
// Don't chain to parent, it would try setting
// our properties to the defaults
this.id = id;
this._canonicalId = this._canonicalizeId(id)
this._masterSettings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications' });
this._settings = new Gio.Settings({ schema: 'org.gnome.desktop.notifications.application',
path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' });
this._masterSettings.connect('changed', Lang.bind(this, this._changed));
this._settings.connect('changed', Lang.bind(this, this._changed));
},
store: function() {
this._settings.set_string('application-id', this.id + '.desktop');
let apps = this._masterSettings.get_strv('application-children');
if (apps.indexOf(this._canonicalId) < 0) {
apps.push(this._canonicalId);
this._masterSettings.set_strv('application-children', apps);
}
},
destroy: function() {
this._masterSettings.run_dispose();
this._settings.run_dispose();
},
_changed: function(settings, key) {
this.emit('policy-changed', key);
},
_canonicalizeId: function(id) {
// Keys are restricted to lowercase alphanumeric characters and dash,
// and two dashes cannot be in succession
return id.toLowerCase().replace(/[^a-z0-9\-]/g, '-').replace(/--+/g, '-');
},
get enable() {
return this._settings.get_boolean('enable');
},
get enableSound() {
return this._settings.get_boolean('enable-sound-alerts');
},
get showBanners() {
return this._masterSettings.get_boolean('show-banners') &&
this._settings.get_boolean('show-banners');
},
get forceExpanded() {
return this._settings.get_boolean('force-expanded');
},
get showInLockScreen() {
return this._masterSettings.get_boolean('show-in-lock-screen') &&
this._settings.get_boolean('show-in-lock-screen');
},
get detailsInLockScreen() {
return this._settings.get_boolean('details-in-lock-screen');
}
});
const NotificationDaemon = new Lang.Class({
Name: 'NotificationDaemon',
@ -396,12 +276,13 @@ const NotificationDaemon = new Lang.Class({
if (!hints['image-path'] && hints['image_path'])
hints['image-path'] = hints['image_path']; // version 1.1 of the spec
if (!hints['image-data'])
if (!hints['image-data']) {
if (hints['image_data'])
hints['image-data'] = hints['image_data']; // version 1.1 of the spec
else if (hints['icon_data'] && !hints['image-path'])
// early versions of the spec; 'icon_data' should only be used if 'image-path' is not available
hints['image-data'] = hints['icon_data'];
}
let ndata = { appName: appName,
icon: icon,
@ -674,9 +555,9 @@ const Source = new Lang.Class({
_createPolicy: function() {
if (this.app) {
let id = this.app.get_id().replace(/\.desktop$/,'');
return new NotificationApplicationPolicy(id);
return new MessageTray.NotificationApplicationPolicy(id);
} else {
return new NotificationGenericPolicy();
return new MessageTray.NotificationGenericPolicy();
}
},
@ -752,22 +633,6 @@ const Source = new Lang.Class({
return null;
},
_setApp: function(appId) {
if (this.app)
return;
this.app = this._getApp(appId);
if (!this.app)
return;
// Only override the icon if we were previously using
// notification-based icons (ie, not a trayicon) or if it was unset before
if (!this.trayIcon) {
this.useNotificationIcon = false;
this.iconUpdated();
}
},
setTitle: function(title) {
// Do nothing if .app is set, we don't want to override the
// app name with whatever is provided through libnotify (usually
@ -779,8 +644,8 @@ const Source = new Lang.Class({
},
open: function(notification) {
this.destroyNonResidentNotifications();
this.openApp();
this.destroyNonResidentNotifications();
},
_lastNotificationRemoved: function() {
@ -792,11 +657,8 @@ const Source = new Lang.Class({
if (this.app == null)
return;
let windows = this.app.get_windows();
if (windows.length > 0) {
let mostRecentWindow = windows[0];
Main.activateWindow(mostRecentWindow);
}
this.app.activate();
Main.overview.hide();
},
destroy: function() {

View File

@ -148,7 +148,7 @@ const Overview = new Lang.Class({
// Dash elements, or mouseover handlers in the workspaces.
this._coverPane = new Clutter.Actor({ opacity: 0,
reactive: true });
this._stack.add_actor(this._coverPane);
Main.layoutManager.overviewGroup.add_child(this._coverPane);
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return true; }));
this._stack.add_actor(this._overview);

View File

@ -55,18 +55,21 @@ const SlideLayout = new Lang.Class({
vfunc_allocate: function(container, box, flags) {
let child = container.get_first_child();
let [, , natWidth, natHeight] = child.get_preferred_size();
let availWidth = Math.round(box.x2 - box.x1);
let availHeight = Math.round(box.y2 - box.y1);
let [, natWidth] = child.get_preferred_width(availHeight);
// Align the actor inside the clipped box, as the actor's alignment
// flags only determine what to do if the allocated box is bigger
// than the actor's box.
let realDirection = getRtlSlideDirection(this._direction, child);
let translationX = (realDirection == SlideDirection.LEFT) ?
(availWidth - natWidth) : (natWidth - availWidth);
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth) : 0;
let actorBox = new Clutter.ActorBox({ x1: translationX,
y1: 0,
x2: child.x_expand ? availWidth : natWidth,
y2: child.y_expand ? availHeight : natHeight });
let actorBox = new Clutter.ActorBox();
actorBox.x1 = alignX;
actorBox.x2 = actorBox.x1 + child.x_expand ? availWidth : natWidth;
actorBox.y1 = 0;
actorBox.y2 = actorBox.y1 + availHeight;
child.allocate(actorBox, flags);
},
@ -236,11 +239,6 @@ const ThumbnailsSlider = new Lang.Class({
this._thumbnailsBox = thumbnailsBox;
// SlideLayout reads the actor's expand flags to decide
// whether to allocate the natural size to its child, or the whole
// available allocation
this._thumbnailsBox.actor.y_expand = true;
this.actor.request_mode = Clutter.RequestMode.WIDTH_FOR_HEIGHT;
this.actor.reactive = true;
this.actor.track_hover = true;
@ -324,7 +322,6 @@ const DashSlider = new Lang.Class({
// whether to allocate the natural size to its child, or the whole
// available allocation
this._dash.actor.x_expand = true;
this._dash.actor.y_expand = true;
this.actor.x_align = Clutter.ActorAlign.START;
this.actor.y_expand = true;

View File

@ -213,9 +213,7 @@ const AppMenuButton = new Lang.Class({
this._label = new TextShadower();
this._label.actor.y_align = Clutter.ActorAlign.CENTER;
this._hbox.add_actor(this._label.actor);
this._arrow = new St.Label({ text: '\u25BE',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this._arrow = PopupMenu.unicodeArrow(St.Side.BOTTOM);
this._hbox.add_actor(this._arrow);
this._iconBottomClip = 0;
@ -611,6 +609,7 @@ const ActivitiesButton = new Lang.Class({
_onButtonRelease: function() {
Main.overview.toggle();
this.menu.close();
},
_onKeyRelease: function(actor, event) {
@ -832,9 +831,7 @@ const AggregateMenu = new Lang.Class({
this._indicators.add_child(this._rfkill.indicators);
this._indicators.add_child(this._volume.indicators);
this._indicators.add_child(this._power.indicators);
this._indicators.add_child(new St.Label({ text: '\u25BE',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER }));
this._indicators.add_child(PopupMenu.unicodeArrow(St.Side.BOTTOM));
this.menu.addMenuItem(this._volume.menu);
this.menu.addMenuItem(this._brightness.menu);

View File

@ -42,6 +42,33 @@ function isPopupMenuItemVisible(child) {
return child.visible;
}
/**
* @side Side to which the arrow points.
*/
function unicodeArrow(side) {
let arrowChar;
switch (side) {
case St.Side.TOP:
arrowChar = '\u25B4';
break;
case St.Side.RIGHT:
arrowChar = '\u25B8';
break;
case St.Side.BOTTOM:
arrowChar = '\u25BE';
break;
case St.Side.LEFT:
arrowChar = '\u25C2';
break;
}
return new St.Label({ text: arrowChar,
style_class: 'unicode-arrow',
accessible_role: Atk.Role.ARROW,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
}
const PopupBaseMenuItem = new Lang.Class({
Name: 'PopupBaseMenuItem',
@ -948,18 +975,21 @@ const PopupSubMenuMenuItem = new Lang.Class({
this.actor.add_child(this.icon);
}
this.label = new St.Label({ text: text });
this.label = new St.Label({ text: text,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_child(this.label);
this.actor.label_actor = this.label;
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
this.actor.add(expander, { expand: true });
this.status = new St.Label({ style_class: 'popup-status-menu-item' });
this.status = new St.Label({ style_class: 'popup-status-menu-item',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_child(this.status);
this._triangle = new St.Label({ text: '\u25B8',
style_class: 'popup-submenu-menu-item-triangle' });
this._triangle = unicodeArrow(St.Side.RIGHT);
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
this._triangleBin = new St.Widget({ y_expand: true,

View File

@ -207,6 +207,16 @@ const RemoteSearchProvider = new Lang.Class({
icon_size: size });
},
filterResults: function(results, maxNumber) {
if (results.length <= maxNumber)
return results;
let regularResults = results.filter(function(r) { return !r.startsWith('special:'); });
let specialResults = results.filter(function(r) { return r.startsWith('special:'); });
return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber));
},
_getResultsFinished: function(results, error) {
if (error)
return;

View File

@ -19,6 +19,7 @@ const Background = imports.ui.background;
const GnomeSession = imports.misc.gnomeSession;
const Hash = imports.misc.hash;
const Layout = imports.ui.layout;
const OVirt = imports.gdm.oVirt;
const LoginManager = imports.misc.loginManager;
const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main;
@ -545,6 +546,13 @@ const ScreenShield = new Lang.Class({
this._liftShield(true, 0);
}));
this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager();
this._oVirtCredentialsManager.connect('user-authenticated',
Lang.bind(this, function() {
if (this._isLocked)
this._liftShield(true, 0);
}));
this._inhibitor = null;
this._aboutToSuspend = false;
this._loginManager = LoginManager.getLoginManager();

View File

@ -214,8 +214,8 @@ const SearchResultsBase = new Lang.Class({
this.actor.hide();
},
_keyFocusIn: function(icon) {
this.emit('key-focus-in', icon);
_keyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
},
_setMoreIconVisible: function(visible) {
@ -230,7 +230,7 @@ const SearchResultsBase = new Lang.Class({
callback();
} else {
let maxResults = this._getMaxDisplayedResults();
let results = providerResults.slice(0, maxResults);
let results = this.provider.filterResults(providerResults, maxResults);
let hasMoreResults = results.length < providerResults.length;
this.provider.getResultMetas(results, Lang.bind(this, function(metas) {
@ -259,6 +259,7 @@ const ListSearchResults = new Lang.Class({
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerIcon = new ProviderIcon(provider);
this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this.providerIcon.connect('clicked', Lang.bind(this,
function() {
provider.launchSearch(this._terms);
@ -404,8 +405,8 @@ const SearchResults = new Lang.Class({
return false;
},
_keyFocusIn: function(provider, icon) {
Util.ensureActorVisibleInScrollView(this._scrollView, icon);
_keyFocusIn: function(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
},
createProviderDisplay: function(provider) {

View File

@ -43,9 +43,7 @@ const ATIndicator = new Lang.Class({
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._hbox.add_child(new St.Icon({ style_class: 'system-status-icon',
icon_name: 'preferences-desktop-accessibility-symbolic' }));
this._hbox.add_child(new St.Label({ text: '\u25BE',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER }));
this._hbox.add_child(PopupMenu.unicodeArrow(St.Side.BOTTOM));
this.actor.add_child(this._hbox);

View File

@ -9,7 +9,6 @@ const St = imports.gi.St;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const NotificationDaemon = imports.ui.notificationDaemon;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
@ -31,6 +30,7 @@ const Indicator = new Lang.Class({
this._applet.killswitch_state = GnomeBluetooth.KillswitchState.SOFT_BLOCKED;
}));
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
this.menu.addMenuItem(this._item);
this._applet = new GnomeBluetoothApplet.Applet();
this._applet.connect('devices-changed', Lang.bind(this, this._sync));
@ -54,13 +54,13 @@ const Indicator = new Lang.Class({
this._item.actor.visible = on;
if (on)
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices").format(nDevices);
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices", nDevices).format(nDevices);
},
_ensureSource: function() {
if (!this._source) {
this._source = new MessageTray.Source(_("Bluetooth"), 'bluetooth-active');
this._source.policy = new NotificationDaemon.NotificationApplicationPolicy('gnome-bluetooth-panel');
this._source.policy = new MessageTray.NotificationApplicationPolicy('gnome-bluetooth-panel');
Main.messageTray.add(this._source);
}
},

View File

@ -339,9 +339,7 @@ const InputSourceIndicator = new Lang.Class({
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._hbox.add_child(this._container);
this._hbox.add_child(new St.Label({ text: '\u25BE',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER }));
this._hbox.add_child(PopupMenu.unicodeArrow(St.Side.BOTTOM));
this.actor.add_child(this._hbox);
this.actor.add_style_class_name('panel-status-button');

View File

@ -16,7 +16,6 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const MessageTray = imports.ui.messageTray;
const NotificationDaemon = imports.ui.notificationDaemon;
const ModalDialog = imports.ui.modalDialog;
const ModemManager = imports.misc.modemManager;
const Util = imports.misc.util;
@ -73,6 +72,27 @@ function ssidToLabel(ssid) {
return label;
}
function ensureActiveConnectionProps(active, settings) {
if (!active._connection) {
active._connection = settings.get_connection_by_path(active.connection);
// This list is guaranteed to have only one device in it.
let device = active.get_devices()[0]._delegate;
active._primaryDevice = device;
}
}
function createSettingsAction(label, device) {
let item = new PopupMenu.PopupMenuItem(label);
item.connect('activate', function() {
Util.spawnApp(['gnome-control-center', 'network', 'show-device',
device.get_path()]);
});
return item;
}
const NMConnectionItem = new Lang.Class({
Name: 'NMConnectionItem',
@ -170,8 +190,7 @@ const NMConnectionSection = new Lang.Class({
},
destroy: function() {
this.statusItem.destroy();
this.section.destroy();
this.item.destroy();
},
_sync: function() {
@ -268,12 +287,12 @@ const NMConnectionDevice = new Lang.Class({
Extends: NMConnectionSection,
Abstract: true,
_init: function(client, device) {
_init: function(client, device, settings) {
this.parent(client);
this._device = device;
this._settings = settings;
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
this._activeConnectionChangedId = this._device.connect('notify::active-connection', Lang.bind(this, this._activeConnectionChanged));
@ -301,6 +320,7 @@ const NMConnectionDevice = new Lang.Class({
this._activeConnection = this._device.active_connection;
if (this._activeConnection) {
ensureActiveConnectionProps(this._activeConnection, this._settings);
let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
item.setActiveConnection(this._activeConnection);
}
@ -356,8 +376,9 @@ const NMConnectionDevice = new Lang.Class({
switch(this._device.state) {
case NetworkManager.DeviceState.DISCONNECTED:
return _("Off");
case NetworkManager.DeviceState.ACTIVATED:
return '';
return this.parent();
case NetworkManager.DeviceState.UNMANAGED:
/* Translators: this is for network devices that are physically present but are not
under NetworkManager's control (and thus cannot be used in the menu) */
@ -399,8 +420,11 @@ const NMDeviceModem = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
_init: function(client, device) {
this.parent(client, device);
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
this._mobileDevice = null;
let capabilities = device.current_capabilities;
@ -414,16 +438,7 @@ const NMDeviceModem = new Lang.Class({
this._mobileDevice = new ModemManager.ModemGsm(device.udi);
if (this._mobileDevice) {
this._operatorNameId = this._mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
if (this._operatorItem) {
let name = this._mobileDevice.operator_name;
if (name) {
this._operatorItem.label.text = name;
this._operatorItem.actor.show();
} else
this._operatorItem.actor.hide();
}
}));
this._operatorNameId = this._mobileDevice.connect('notify::operator-name', Lang.bind(this, this._sync));
this._signalQualityId = this._mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
this.emit('icon-changed');
}));
@ -448,6 +463,20 @@ const NMDeviceModem = new Lang.Class({
this.parent();
},
_getStatus: function() {
if (!this._client.wwan_hardware_enabled)
return _("Hardware Disabled");
else if (!this._client.wwan_enabled)
/* Translators: this is for a network device that cannot be activated
because it's disabled by rfkill (airplane mode) */
return _("Disabled");
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
this._mobileDevice && this._mobileDevice.operator_name)
return this._mobileDevice.operator_name;
else
return this.parent();
},
_getMenuIcon: function() {
if (this._device.active_connection)
return this.getIndicatorIcon();
@ -477,6 +506,12 @@ const NMDeviceBluetooth = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
},
_autoConnect: function() {
// FIXME: DUN devices are configured like modems, so
// We need to spawn the mobile wizard
@ -524,6 +559,8 @@ const NMWirelessDialogItem = new Lang.Class({
this.actor.grab_key_focus();
}));
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
this._content = new St.BoxLayout({ style_class: 'nm-dialog-item-box' });
this.actor.set_child(this._content);
@ -547,22 +584,38 @@ const NMWirelessDialogItem = new Lang.Class({
this._signalIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
this._icons.add_actor(this._signalIcon);
this._sync();
},
_sync: function() {
this._signalIcon.icon_name = this._getSignalIcon();
},
updateBestAP: function(ap) {
this._ap = ap;
this._signalIcon.icon_name = this._getIcon();
this._sync();
},
setActive: function(isActive) {
this._selectedIcon.opacity = isActive ? 255 : 0;
},
_getIcon: function() {
_getSignalIcon: function() {
if (this._ap.mode == NM80211Mode.ADHOC)
return 'network-workgroup-symbolic';
else
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
},
_onKeyPressEvent: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return
|| symbol == Clutter.KEY_KP_Enter) {
this.emit('connect');
return true;
}
return false;
}
});
Signals.addSignalMethods(NMWirelessDialogItem.prototype);
@ -931,6 +984,9 @@ const NMWirelessDialog = new Lang.Class({
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
this._selectNetwork(network);
}));
network.item.connect('connect', Lang.bind(this, function() {
this._connect();
}));
},
});
@ -952,9 +1008,10 @@ const NMDeviceWireless = new Lang.Class({
this._toggleItem.connect('activate', Lang.bind(this, this._toggleWifi));
this.item.menu.addMenuItem(this._toggleItem);
this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this.item.menu.addMenuItem(createSettingsAction(_("Wi-Fi Settings"), device));
this._wirelessEnabledChangedId = this._device.connect('notify::wireless-enabled', Lang.bind(this, this._sync));
this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled', Lang.bind(this, this._sync));
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync));
this._activeApChangedId = this._device.connect('notify::active-access-point', Lang.bind(this, this._activeApChanged));
this._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
@ -974,6 +1031,14 @@ const NMDeviceWireless = new Lang.Class({
this._activeAccessPoint.disconnect(this._strengthChangedId);
this._strengthChangedId = 0;
}
if (this._wirelessEnabledChangedId) {
this._client.disconnect(this._wirelessEnabledChangedId);
this._wirelessEnabledChangedId = 0;
}
if (this._wirelessHwEnabledChangedId) {
this._client.disconnect(this._wirelessHwEnabledChangedId);
this._wirelessHwEnabledChangedId = 0;
}
this.item.destroy();
},
@ -1032,6 +1097,7 @@ const NMDeviceWireless = new Lang.Class({
_sync: function() {
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
this.item.status.text = this._getStatus();
this.item.icon.icon_name = this._getMenuIcon();
@ -1045,10 +1111,17 @@ const NMDeviceWireless = new Lang.Class({
_getStatus: function() {
let ap = this._device.active_access_point;
if (!ap)
return _("Off"); // XXX -- interpret actual status
return ssidToLabel(ap.get_ssid());
if (ap)
return ssidToLabel(ap.get_ssid());
else if (!this._client.wireless_hardware_enabled)
return _("Hardware Disabled");
else if (!this._client.wireless_enabled)
return _("Off");
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
return _("Not Connected");
else
return '';
},
_getMenuIcon: function() {
@ -1059,7 +1132,8 @@ const NMDeviceWireless = new Lang.Class({
},
getIndicatorIcon: function() {
if (this._device.active_connection.state == NetworkManager.ActiveConnectionState.ACTIVATING)
if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
this._device.state < NetworkManager.DeviceState.ACTIVATED)
return 'network-wireless-acquiring-symbolic';
let ap = this._device.active_access_point;
@ -1117,6 +1191,7 @@ const NMVPNConnectionItem = new Lang.Class({
this.emit('activation-failed', reason);
}
this.emit('icon-changed');
this.parent();
},
@ -1287,6 +1362,7 @@ const NMApplet = new Lang.Class({
this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections));
this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
@ -1305,7 +1381,7 @@ const NMApplet = new Lang.Class({
if (!this._source) {
this._source = new MessageTray.Source(_("Network Manager"),
'network-transmit-receive');
this._source.policy = new NotificationDaemon.NotificationApplicationPolicy('gnome-network-panel');
this._source.policy = new MessageTray.NotificationApplicationPolicy('gnome-network-panel');
this._source.connect('destroy', Lang.bind(this, function() {
this._source = null;
@ -1417,28 +1493,18 @@ const NMApplet = new Lang.Class({
devices.splice(pos, 1);
},
_ensureActiveConnectionProps: function(a) {
if (!a._connection) {
a._connection = this._settings.get_connection_by_path(a.connection);
// This list is guaranteed to have only one device in it.
let device = a.get_devices()[0]._delegate;
a._primaryDevice = device;
}
},
_getMainConnection: function() {
let connection;
connection = this._client.get_primary_connection();
if (connection) {
this._ensureActiveConnectionProps(connection);
ensureActiveConnectionProps(connection, this._settings);
return connection;
}
connection = this._client.get_activating_connection();
if (connection) {
this._ensureActiveConnectionProps(connection);
ensureActiveConnectionProps(connection, this._settings);
return connection;
}
@ -1474,7 +1540,7 @@ const NMApplet = new Lang.Class({
return (a instanceof NMClient.VPNConnection);
});
vpnConnections.forEach(Lang.bind(this, function(a) {
this._ensureActiveConnectionProps(a);
ensureActiveConnectionProps(a, this._settings);
}));
this._vpnSection.setActiveConnections(vpnConnections);
@ -1577,6 +1643,7 @@ const NMApplet = new Lang.Class({
_updateIcon: function() {
if (!this._client.networking_enabled || !this._mainConnection) {
this._primaryIndicator.icon_name = 'network-offline-symbolic';
this._primaryIndicator.visible = true;
} else {
let dev = this._mainConnection._primaryDevice;
this._primaryIndicator.visible = (dev != null);

View File

@ -86,38 +86,30 @@ const Indicator = new Lang.Class({
return _("Estimating…");
},
_syncStatusLabel: function() {
this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(result, error) {
if (error) {
this._item.actor.hide();
return;
}
_sync: function() {
function isBattery(result) {
if (!result)
return false;
let [device] = result;
let [device_id, device_type] = device;
if (device_type == UPower.DeviceKind.BATTERY) {
let [, deviceType] = device;
return (deviceType == UPower.DeviceKind.BATTERY);
}
this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(result, error) {
if (isBattery(result)) {
let [device] = result;
let [,, icon] = device;
let gicon = Gio.icon_new_for_string(icon);
this._indicator.gicon = gicon;
this._item.icon.gicon = gicon;
this._item.status.text = this._statusForDevice(device);
this._item.actor.show();
} else {
// If there's no battery, then we use the power icon.
this._indicator.icon_name = 'system-shutdown-symbolic';
this._item.actor.hide();
}
}));
},
_syncIcon: function() {
let icon = this._proxy.Icon;
if (icon) {
let gicon = Gio.icon_new_for_string(icon);
this._indicator.gicon = gicon;
this._item.icon.gicon = gicon;
} else {
// If there's no battery, then we use the power icon.
this._indicator.icon_name = 'system-shutdown-symbolic';
}
},
_sync: function() {
this._syncIcon();
this._syncStatusLabel();
}
});

View File

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

View File

@ -132,6 +132,10 @@ const WandaSearchProvider = new Lang.Class({
}]);
},
filterResults: function(results) {
return results;
},
getInitialResultSet: function(terms) {
if (terms.join(' ') == MAGIC_FISH_KEY) {
this.searchSystem.setResults(this, [ FISH_NAME ]);

View File

@ -20,8 +20,6 @@ const FOCUS_ANIMATION_TIME = 0.15;
const WINDOW_DND_SIZE = 256;
const SCROLL_SCALE_AMOUNT = 100 / 5;
const WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
const LIGHTBOX_FADE_TIME = 0.1;
@ -345,19 +343,6 @@ const WindowOverlay = new Lang.Class({
this._animateVisible();
},
fadeIn: function() {
if (!this._hidden)
return;
this.show();
this.title.opacity = 0;
this._parentActor.raise_top();
Tweener.addTween(this.title,
{ opacity: 255,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeOutQuad' });
},
chromeHeights: function () {
return [Math.max(this.borderSize, this.closeButton.height - this.closeButton._overlap),
this.title.height + this.title._spacing];
@ -374,7 +359,6 @@ const WindowOverlay = new Lang.Class({
let border = this.border;
Tweener.removeTweens(button);
Tweener.removeTweens(title);
Tweener.removeTweens(border);
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
@ -1144,7 +1128,7 @@ const Workspace = new Lang.Class({
clone.actor.set_scale(scale, scale);
clone.actor.set_opacity(255);
clone.overlay.relayout(false);
this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace);
this._showWindowOverlay(clone, overlay);
}
}
},
@ -1174,23 +1158,19 @@ const Workspace = new Lang.Class({
time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this._showWindowOverlay(clone, overlay, true);
this._showWindowOverlay(clone, overlay);
})
});
clone.overlay.relayout(true);
},
_showWindowOverlay: function(clone, overlay, fade) {
_showWindowOverlay: function(clone, overlay) {
if (clone.inDrag)
return;
if (overlay) {
if (fade)
overlay.fadeIn();
else
if (overlay && overlay._hidden)
overlay.show();
}
},
_delayedWindowRepositioning: function() {

View File

@ -536,20 +536,6 @@ const ThumbnailsBox = new Lang.Class({
this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.actor._delegate = this;
// When we animate the scale, we don't animate the requested size of the thumbnails, rather
// we ask for our final size and then animate within that size. This slightly simplifies the
// interaction with the main workspace windows (instead of constantly reallocating them
// to a new size, they get a new size once, then use the standard window animation code
// allocate the windows to their new positions), however it causes problems for drawing
// the background and border wrapped around the thumbnail as we animate - we can't just pack
// the container into a box and set style properties on the box since that box would wrap
// around the final size not the animating size. So instead we fake the background with
// an actor underneath the content and adjust the allocation of our children to leave space
// for the border and padding of the background actor.
this._background = new St.Bin({ style_class: 'workspace-thumbnails-background' });
this.actor.add_actor(this._background);
let indicator = new St.Bin({ style_class: 'workspace-thumbnail-indicator' });
// We don't want the indicator to affect drag-and-drop
@ -1042,9 +1028,6 @@ const ThumbnailsBox = new Lang.Class({
},
_getPreferredHeight: function(actor, forWidth, alloc) {
// See comment about this._background in _init()
let themeNode = this._background.get_theme_node();
// Note that for getPreferredWidth/Height we cheat a bit and skip propagating
// the size request to our children because we know how big they are and know
// that the actors aren't depending on the virtual functions being called.
@ -1052,24 +1035,21 @@ const ThumbnailsBox = new Lang.Class({
if (this._thumbnails.length == 0)
return;
let spacing = this.actor.get_theme_node().get_length('spacing');
let themeNode = this.actor.get_theme_node();
let spacing = themeNode.get_length('spacing');
let nWorkspaces = global.screen.n_workspaces;
let totalSpacing = (nWorkspaces - 1) * spacing;
[alloc.min_size, alloc.natural_size] =
themeNode.adjust_preferred_height(totalSpacing,
totalSpacing + nWorkspaces * this._porthole.height * MAX_THUMBNAIL_SCALE);
alloc.min_size = totalSpacing;
alloc.natural_size = totalSpacing + nWorkspaces * this._porthole.height * MAX_THUMBNAIL_SCALE;
},
_getPreferredWidth: function(actor, forHeight, alloc) {
// See comment about this._background in _init()
let themeNode = this._background.get_theme_node();
if (this._thumbnails.length == 0)
return;
// We don't animate our preferred width, which is always reported according
// to the actual number of current workspaces, we just animate within that
let themeNode = this.actor.get_theme_node();
let spacing = this.actor.get_theme_node().get_length('spacing');
let nWorkspaces = global.screen.n_workspaces;
@ -1081,28 +1061,26 @@ const ThumbnailsBox = new Lang.Class({
scale = Math.min(scale, MAX_THUMBNAIL_SCALE);
let width = Math.round(this._porthole.width * scale);
[alloc.min_size, alloc.natural_size] =
themeNode.adjust_preferred_width(width, width);
alloc.min_size = width;
alloc.natural_size = width;
},
_allocate: function(actor, box, flags) {
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
// See comment about this._background in _init()
let themeNode = this._background.get_theme_node();
let contentBox = themeNode.get_content_box(box);
if (this._thumbnails.length == 0) // not visible
return;
let themeNode = this.actor.get_theme_node();
let portholeWidth = this._porthole.width;
let portholeHeight = this._porthole.height;
let spacing = this.actor.get_theme_node().get_length('spacing');
let spacing = themeNode.get_length('spacing');
// Compute the scale we'll need once everything is updated
let nWorkspaces = global.screen.n_workspaces;
let totalSpacing = (nWorkspaces - 1) * spacing;
let avail = (contentBox.y2 - contentBox.y1) - totalSpacing;
let avail = (box.y2 - box.y1) - totalSpacing;
let newScale = (avail / nWorkspaces) / portholeHeight;
newScale = Math.min(newScale, MAX_THUMBNAIL_SCALE);
@ -1131,21 +1109,6 @@ const ThumbnailsBox = new Lang.Class({
else
slideOffset = thumbnailWidth + themeNode.get_padding(St.Side.RIGHT);
let childBox = new Clutter.ActorBox();
// The background is horizontally restricted to correspond to the current thumbnail size
// but otherwise covers the entire allocation
if (rtl) {
childBox.x1 = box.x1;
childBox.x2 = box.x2 - ((contentBox.x2 - contentBox.x1) - thumbnailWidth);
} else {
childBox.x1 = box.x1 + ((contentBox.x2 - contentBox.x1) - thumbnailWidth);
childBox.x2 = box.x2;
}
childBox.y1 = box.y1;
childBox.y2 = box.y2;
this._background.allocate(childBox, flags);
let indicatorY1 = this._indicatorY;
let indicatorY2;
// when not animating, the workspace position overrides this._indicatorY
@ -1157,7 +1120,7 @@ const ThumbnailsBox = new Lang.Class({
let indicatorLeftFullBorder = indicatorThemeNode.get_padding(St.Side.LEFT) + indicatorThemeNode.get_border_width(St.Side.LEFT);
let indicatorRightFullBorder = indicatorThemeNode.get_padding(St.Side.RIGHT) + indicatorThemeNode.get_border_width(St.Side.RIGHT);
let y = contentBox.y1;
let y = box.y1;
if (this._dropPlaceholderPos == -1) {
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
@ -1165,6 +1128,8 @@ const ThumbnailsBox = new Lang.Class({
}));
}
let childBox = new Clutter.ActorBox();
for (let i = 0; i < this._thumbnails.length; i++) {
let thumbnail = this._thumbnails[i];
@ -1173,10 +1138,10 @@ const ThumbnailsBox = new Lang.Class({
let x1, x2;
if (rtl) {
x1 = contentBox.x1 + slideOffset * thumbnail.slidePosition;
x1 = box.x1 + slideOffset * thumbnail.slidePosition;
x2 = x1 + thumbnailWidth;
} else {
x1 = contentBox.x2 - thumbnailWidth + slideOffset * thumbnail.slidePosition;
x1 = box.x2 - thumbnailWidth + slideOffset * thumbnail.slidePosition;
x2 = x1 + thumbnailWidth;
}
@ -1223,11 +1188,11 @@ const ThumbnailsBox = new Lang.Class({
}
if (rtl) {
childBox.x1 = contentBox.x1;
childBox.x2 = contentBox.x1 + thumbnailWidth;
childBox.x1 = box.x1;
childBox.x2 = box.x1 + thumbnailWidth;
} else {
childBox.x1 = contentBox.x2 - thumbnailWidth;
childBox.x2 = contentBox.x2;
childBox.x1 = box.x2 - thumbnailWidth;
childBox.x2 = box.x2;
}
childBox.x1 -= indicatorLeftFullBorder;
childBox.x2 += indicatorRightFullBorder;

View File

@ -62,7 +62,6 @@ const WorkspacesView = new Lang.Class({
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
this._animatingScroll = false; // programatically updating the adjustment
this._zoomOut = false; // zoom to a larger area
this._inDrag = false; // dragging a window
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
@ -168,14 +167,6 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].setActualGeometry(geom);
},
_lookupWorkspaceForMetaWindow: function (metaWindow) {
for (let i = 0; i < this._workspaces.length; i++) {
if (this._workspaces[i].containsMetaWindow(metaWindow))
return this._workspaces[i];
}
return null;
},
getActiveWorkspace: function() {
let active = global.screen.get_active_workspace_index();
return this._workspaces[active];
@ -433,10 +424,6 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].actor.y += dy;
}
},
_getWorkspaceIndexToRemove: function() {
return global.screen.get_active_workspace_index();
}
});
Signals.addSignalMethods(WorkspacesView.prototype);

443
po/as.po

File diff suppressed because it is too large Load Diff

449
po/be.po

File diff suppressed because it is too large Load Diff

1866
po/ca.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

478
po/cs.po

File diff suppressed because it is too large Load Diff

196
po/da.po
View File

@ -17,8 +17,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-14 15:55+0200\n"
"PO-Revision-Date: 2013-09-14 10:23+0100\n"
"POT-Creation-Date: 2013-10-01 19:10+0200\n"
"PO-Revision-Date: 2013-10-01 19:06+0200\n"
"Last-Translator: Kris Thomsen <mail@kristhomsen.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@ -274,6 +274,12 @@ msgstr "Arbejdsområder er håndteret dynamisk"
msgid "Workspaces only on primary monitor"
msgstr "Arbejdsområder kun på den primære skærm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Forsink fokusændringer i musetilstand indtil pegeren holder op med at bevæge "
"sig"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -288,10 +294,10 @@ msgid "Select an extension to configure using the combobox above."
msgstr ""
"Vælg en udvidelse at konfigurere ved hjælp af kombinationsboksen ovenfor."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692
msgid "Cancel"
msgstr "Annullér"
@ -330,8 +336,8 @@ msgstr "(f.eks. bruger eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Brugernavn: "
@ -367,27 +373,27 @@ msgstr "Kunne ikke fortolke kommando:"
msgid "Execution of '%s' failed:"
msgstr "Kørsel af \"%s\" mislykkedes:"
#: ../js/ui/appDisplay.js:598
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Ofte brugte programmer vil blive vist her"
#: ../js/ui/appDisplay.js:714
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Ofte"
#: ../js/ui/appDisplay.js:721
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1516
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Nyt vindue"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1520
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Føj til favoritter"
@ -401,7 +407,8 @@ msgstr "%s er blevet føjet til dine favoritter."
msgid "%s has been removed from your favorites."
msgstr "%s er blevet fjernet fra dine favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Indstillinger"
@ -587,50 +594,50 @@ msgstr "Åbn med %s"
msgid "Eject"
msgstr "Skub ud"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Adgangskode:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Indtast igen:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695
msgid "Connect"
msgstr "Forbind"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Adgangskode: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Nøgle: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identitet: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Privatnøgle-adgangskode: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Tjeneste: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Godkendelse påkrævet af trådløst netværk"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -639,35 +646,35 @@ msgstr ""
"Adgangskoder eller krypteringsnøgler er påkrævet for at få adgang til det "
"trådløse netværk \"%s\"."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Trådet 802.1X-godkendelse"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Netværksnavn: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-godkendelse"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN-kode påkrævet"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-kode er nødvendig for den mobile bredbåndsenhed"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Adgangskode til mobilt bredbåndsnetværk"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "En adgangskode er påkrævet for at forbinde til \"%s\"."
@ -1155,11 +1162,11 @@ msgstr "Menu for statusfelt"
msgid "No Messages"
msgstr "Ingen beskeder"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Besked-statusfelt"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Systeminformation"
@ -1201,11 +1208,7 @@ msgstr "Afslut"
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:807
msgid "Settings Menu"
msgstr "Menu for indstillinger"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Toppanel"
@ -1262,11 +1265,11 @@ msgstr "Kunne ikke låse"
msgid "Lock was blocked by an application"
msgstr "Lås blev blokeret af et program"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:448
msgid "Searching…"
msgstr "Søger…"
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:492
msgid "No results."
msgstr "Ingen resultater."
@ -1340,14 +1343,14 @@ msgstr "Stor tekst"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Sluk"
@ -1355,56 +1358,56 @@ msgstr "Sluk"
msgid "Bluetooth Settings"
msgstr "Indstillinger for Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d forbundet enhed"
msgstr[1] "%d forbundne enheder"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Godkendelsesforespørgsel fra %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Enheden %s ønsker at blive parret med denne computer"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Tillad"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Nægt"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Enheden %s ønsker adgang til tjenesten \"%s\""
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Giv altid adgang"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Giv kun lov denne gang"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Afvis"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Bekræftelse af parring for %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1413,24 +1416,24 @@ msgstr ""
"enheden."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Stemmer"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Stemmer ikke"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Forespørgsel om parring for %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Indtast PIN-koden nævnt på enheden."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "O.k."
@ -1446,11 +1449,11 @@ msgstr "Vis tastaturlayout"
msgid "<unknown>"
msgstr "<ukendt>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055
msgid "Off"
msgstr "Slukket"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Indstillinger for netværk"
@ -1465,12 +1468,12 @@ msgstr "ikke håndteret"
msgid "disconnecting..."
msgstr "frakobler..."
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106
msgid "connecting..."
msgstr "forbinder..."
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109
msgid "authentication required"
msgstr "godkendelse påkrævet"
@ -1486,43 +1489,43 @@ msgstr "firmware mangler"
msgid "unavailable"
msgstr "utilgængelig"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111
msgid "connection failed"
msgstr "forbindelse mislykkedes"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:660
msgid "Wi-Fi Networks"
msgstr "Trådløse netværk"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:662
msgid "Select a network"
msgstr "Vælg et netværk"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:686
msgid "No Networks"
msgstr "Ingen netværk"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:955
msgid "Select Network"
msgstr "Vælg netværk"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:1040
msgid "Turn On"
msgstr "Tænd"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1174
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1314
msgid "Network Manager"
msgstr "Netværkshåndtering"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1353
msgid "Connection failed"
msgstr "Forbindelse mislykkedes"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1354
msgid "Activation of network connection failed"
msgstr "Aktivering af netværksforbindelse mislykkedes"
@ -1547,15 +1550,15 @@ msgstr "Udregner…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:77
#, c-format
#, fuzzy, c-format
msgid "%d\\u2236%02d Remaining (%d%%)"
msgstr "%d\\u2236%02d tilbage (%d%%)"
msgstr "%d%02d tilbage (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:82
#, c-format
#, fuzzy, c-format
msgid "%d\\u2236%02d Until Full (%d%%)"
msgstr "%d\\u2236%02d indtil fuld (%d%%)"
msgstr "%d%02d indtil fuld (%d%%)"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
@ -1716,6 +1719,31 @@ msgstr "Adgangskode må ikke være tom"
msgid "Authentication dialog was dismissed by the user"
msgstr "Godkendelsesdialogen blev afvist af brugeren"
#~ msgctxt "event list time"
#~ msgid "%H%M"
#~ msgstr "%H%M"
#~ msgctxt "event list time"
#~ msgid "%l%M%p"
#~ msgstr "%l%M%p"
# Dette her er kode for at skrive måned før år jvf. kommentar for samme streng i gtk+:
#
# Translate to calendar:YM if you want years to be displayed
# before months; otherwise translate to calendar:MY.
# Do *not* translate it to anything else, if it
# it isn't calendar:YM or calendar:MY it will not work.
#
# Note that the ordering described here is logical order, which is
# further influenced by BIDI ordering. Thus, if you have a default
# text direction of RTL and specify "calendar:YM", then the year
# will appear to the right of the month.
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"
#~ msgid "Settings Menu"
#~ msgstr "Menu for indstillinger"
#~ msgid "Screenshots"
#~ msgstr "Skærmbilleder"

142
po/de.po
View File

@ -18,18 +18,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-12 17:36+0000\n"
"PO-Revision-Date: 2013-09-13 19:29+0100\n"
"Last-Translator: Benjamin Steinwender <b@stbe.at>\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-25 15:24+0200\n"
"PO-Revision-Date: 2013-09-25 15:25+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.7\n"
"X-Generator: Poedit 1.5.4\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -282,6 +281,11 @@ msgstr "Arbeitsflächen dynamisch verwalten"
msgid "Workspaces only on primary monitor"
msgstr "Arbeitsflächen nur auf dem primären Bildschirm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -295,10 +299,10 @@ msgstr "Erweiterung"
msgid "Select an extension to configure using the combobox above."
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Abbrechen"
@ -337,8 +341,8 @@ msgstr "(z.B. Benutzer oder %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Benutzername:"
@ -374,27 +378,27 @@ msgstr "Befehl konnte nicht verarbeitet werden:"
msgid "Execution of '%s' failed:"
msgstr "Ausführung von »%s« ist gescheitert:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen werden hier erscheinen"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Häufig"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
@ -408,7 +412,8 @@ msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Einstellungen"
@ -597,50 +602,50 @@ msgstr "Öffnen mit %s"
msgid "Eject"
msgstr "Auswerfen"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passwort:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Erneut eingeben:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Verbinden"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Passwort:"
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Schlüssel:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identität:"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Passwort für geheimen Schlüssel:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Dienst:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Legitimierung für Funknetzwerk wird benötigt"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -649,35 +654,35 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
"zuzugreifen."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Legitimierung"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Netzwerkname:"
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-Legitimierung"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN-Code ist erforderlich"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
@ -1169,11 +1174,11 @@ msgstr "Benachrichtigungsfeldmenü"
msgid "No Messages"
msgstr "Keine Nachrichten"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Systeminformationen"
@ -1215,11 +1220,7 @@ msgstr "Beenden"
msgid "Activities"
msgstr "Aktivitäten"
#: ../js/ui/panel.js:807
msgid "Settings Menu"
msgstr "Einstellungsmenü"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Oberes Panel"
@ -1357,9 +1358,9 @@ msgstr "Große Schrift"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1372,56 +1373,56 @@ msgstr "Ausschalten"
msgid "Bluetooth Settings"
msgstr "Bluetooth-Einstellungen"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d Verbundes Gerät"
msgstr[1] "%d Verbundene Geräte"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Legitimierungsanfrage von %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Erlauben"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Verweigern"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Immer Zugriff gewähren"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Nur dieses Mal gewähren"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Abweisen"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Koppelungsbestätigung für %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1429,24 +1430,24 @@ msgstr ""
"Bitte bestätigen Sie, ob die PIN »%06d« mit der des Gerätes übereinstimmt."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Stimmt überein"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Stimmt nicht überein"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Koppelungsanfrage für %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1530,15 +1531,15 @@ msgstr "Einschalten"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@ -1734,6 +1735,9 @@ msgstr "Das Passwort darf nicht leer sein"
msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
#~ msgid "Settings Menu"
#~ msgstr "Einstellungsmenü"
#~ msgid ""
#~ "Internally used to store the last IM presence explicitly set by the user. "
#~ "The value here is from the TpConnectionPresenceType enumeration."

2921
po/eo.po

File diff suppressed because it is too large Load Diff

456
po/es.po

File diff suppressed because it is too large Load Diff

247
po/et.po
View File

@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: gnome-shell MASTER\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-11 19:26+0000\n"
"PO-Revision-Date: 2013-09-11 22:32+0300\n"
"POT-Creation-Date: 2013-09-30 11:41+0000\n"
"PO-Revision-Date: 2013-10-01 16:40+0300\n"
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
"Language-Team: Estonian <>\n"
"Language: et\n"
@ -54,6 +54,9 @@ msgstr "GNOME Shelli laienduste eelistused"
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shelli laienduste seadistamine"
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (waylandi komposiitor)"
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Arendajate ja testijate jaoks sisemiste tööriistade lubamine Alt-F2 alt"
@ -212,12 +215,8 @@ msgstr "Tööalasid hallatakse dünaamiliselt"
msgid "Workspaces only on primary monitor"
msgstr "Tööalad peamisel monitoril"
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s jaoks eelistuste dialoogi laadimisel esines viga:"
msgid "Extension"
msgstr "Laiendus"
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Hiire all asuv aken saab fookuse alles hiire peatumisel"
msgid "Select an extension to configure using the combobox above."
msgstr "Vali seadistatav laiendus kasutades ülemist valikukasti."
@ -238,21 +237,12 @@ msgstr "Logi sisse"
msgid "Choose Session"
msgstr "Seansi valimine"
#. 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.
msgid "Not listed?"
msgstr "Pole loendis?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#, c-format
msgid "(e.g., user or %s)"
msgstr "(nt 'user' või %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
msgid "Username: "
msgstr "Kasutajanimi: "
@ -262,23 +252,15 @@ msgstr "Sisselogimisaken"
msgid "Authentication error"
msgstr "Viga autentimisel"
#. We don't show fingerprint messages directly since it's
#. not the main auth service. Instead we use the messages
#. as a cue to display our own message.
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
msgid "(or swipe finger)"
msgstr "(või libista näpp üle lugeja)"
msgid "Command not found"
msgstr "Käsku ei leitud"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
msgid "Could not parse command:"
msgstr "Käsku pole võimalik analüüsida:"
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' käivitamine nurjus:"
@ -286,7 +268,7 @@ msgid "Frequently used applications will appear here"
msgstr "Siia ilmuvad tihti kasutatud rakendused"
msgid "Frequent"
msgstr "Sage"
msgstr "Tihti"
msgid "All"
msgstr "Kõik"
@ -300,11 +282,9 @@ msgstr "Eemalda lemmikutest"
msgid "Add to Favorites"
msgstr "Lisa lemmikutesse"
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s lisati lemmikutesse."
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s eemaldati lemmikutest."
@ -316,59 +296,59 @@ msgstr "Muuda tausta…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#. */
msgctxt "event list time"
msgid "All Day"
msgstr "Kogu päev"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to :
#. \u2236 is a ratio character, similar to : */
msgctxt "event list time"
msgid "%H\\u2236%M"
msgstr "%H\\u2236%M"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space
#. a thin space */
msgctxt "event list time"
msgid "%l\\u2236%M\\u2009%p"
msgstr "%l\\u2236%M\\u2009%p"
msgid "%l%M%p"
msgstr "%l%M%p"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
#. */
msgctxt "grid sunday"
msgid "S"
msgstr "P"
#. Translators: Calendar grid abbreviation for Monday
#. Translators: Calendar grid abbreviation for Monday */
msgctxt "grid monday"
msgid "M"
msgstr "E"
#. Translators: Calendar grid abbreviation for Tuesday
#. Translators: Calendar grid abbreviation for Tuesday */
msgctxt "grid tuesday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday
#. Translators: Calendar grid abbreviation for Wednesday */
msgctxt "grid wednesday"
msgid "W"
msgstr "K"
#. Translators: Calendar grid abbreviation for Thursday
#. Translators: Calendar grid abbreviation for Thursday */
msgctxt "grid thursday"
msgid "T"
msgstr "N"
#. Translators: Calendar grid abbreviation for Friday
#. Translators: Calendar grid abbreviation for Friday */
msgctxt "grid friday"
msgid "F"
msgstr "R"
#. Translators: Calendar grid abbreviation for Saturday
#. Translators: Calendar grid abbreviation for Saturday */
msgctxt "grid saturday"
msgid "S"
msgstr "L"
@ -378,57 +358,60 @@ msgstr "L"
#. * NOTE: These list abbreviations are normally not shown together
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
#. */
msgctxt "list sunday"
msgid "Su"
msgstr "P"
#. Translators: Event list abbreviation for Monday
#. Translators: Event list abbreviation for Monday */
msgctxt "list monday"
msgid "M"
msgstr "E"
#. Translators: Event list abbreviation for Tuesday
#. Translators: Event list abbreviation for Tuesday */
msgctxt "list tuesday"
msgid "T"
msgstr "T"
#. Translators: Event list abbreviation for Wednesday
#. Translators: Event list abbreviation for Wednesday */
msgctxt "list wednesday"
msgid "W"
msgstr "K"
#. Translators: Event list abbreviation for Thursday
#. Translators: Event list abbreviation for Thursday */
msgctxt "list thursday"
msgid "Th"
msgstr "N"
#. Translators: Event list abbreviation for Friday
#. Translators: Event list abbreviation for Friday */
msgctxt "list friday"
msgid "F"
msgstr "R"
#. Translators: Event list abbreviation for Saturday
#. Translators: Event list abbreviation for Saturday */
msgctxt "list saturday"
msgid "S"
msgstr "L"
msgid "calendar:MY"
msgstr "Minu"
msgid "Previous month"
msgstr "Eelmine kuu"
msgid "Next month"
msgstr "Järgmine kuu"
#. Translators: Text to show if there are no events
#. Translators: Text to show if there are no events */
msgid "Nothing Scheduled"
msgstr "Ühtegi sündmust pole plaanitud"
#. Translators: Shown on calendar heading when selected day occurs on current year
#. Translators: Shown on calendar heading when selected day occurs on current year */
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#. Translators: Shown on calendar heading when selected day occurs on different year */
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d. %B %Y"
@ -454,7 +437,6 @@ msgstr "Väline ketas eemaldati"
msgid "Removable Devices"
msgstr "Eemaldatavad seadmed"
#, c-format
msgid "Open with %s"
msgstr "Ava programmiga %s"
@ -470,11 +452,9 @@ msgstr "Sisesta uuesti:"
msgid "Connect"
msgstr "Ühendu"
#. Cisco LEAP
msgid "Password: "
msgstr "Parool: "
#. static WEP
msgid "Key: "
msgstr "Võti: "
@ -490,7 +470,6 @@ msgstr "Teenus: "
msgid "Authentication required by wireless network"
msgstr "Juhtmeta võrgu jaoks on vajalik autentimine"
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
@ -518,7 +497,6 @@ msgstr "PIN: "
msgid "Mobile broadband network password"
msgstr "Mobiiliühenduse võrgu parool"
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' ühenduse loomiseks on vaja parooli."
@ -534,20 +512,16 @@ msgstr "Autendi"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#. * for instance. */
msgid "Sorry, that didn't work. Please try again."
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
msgid "Invitation"
msgstr "Kutse"
#. We got the TpContact
msgid "Call"
msgstr "Helista"
#. We got the TpContact
msgid "File Transfer"
msgstr "Failiülekanne"
@ -560,42 +534,35 @@ msgstr "Heli peale"
msgid "Mute"
msgstr "Heli maha"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"
#, no-c-format
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Eile</b> <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30
#, no-c-format
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"
#, no-c-format
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d. %B</b>, <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"
#, no-c-format
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d. %B %Y</b>, <b>%H:%M</b>"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#, c-format
#. IM name. */
msgid "%s is now known as %s"
msgstr "%s nimi on nüüd %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#, c-format
#. * room@jabber.org for example. */
msgid "Invitation to %s"
msgstr "Kutse: %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#, c-format
#. * for example. */
msgid "%s is inviting you to join %s"
msgstr "%s kutsub sind liituma: %s"
@ -605,17 +572,15 @@ msgstr "Keeldu"
msgid "Accept"
msgstr "Nõustu"
#. translators: argument is a contact name like Alice for example.
#, c-format
#. translators: argument is a contact name like Alice for example. */
msgid "Video call from %s"
msgstr "%s tahab alustada videokõnet"
#. translators: argument is a contact name like Alice for example.
#, c-format
#. translators: argument is a contact name like Alice for example. */
msgid "Call from %s"
msgstr "%s helistab"
#. translators: this is a button label (verb), not a noun
#. translators: this is a button label (verb), not a noun */
msgid "Answer"
msgstr "Vasta"
@ -623,13 +588,11 @@ msgstr "Vasta"
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#, c-format
#. */
msgid "%s is sending you %s"
msgstr "%s saadab sulle %s"
#. To translators: The parameter is the contact's alias
#, c-format
#. To translators: The parameter is the contact's alias */
msgid "%s would like permission to see when you are online"
msgstr "%s palub sinu luba, et näha, kui sa oled võrgus"
@ -713,8 +676,7 @@ msgid "Internal error"
msgstr "Sisemine viga"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#, c-format
#. * name@jabber.org for example. */
msgid "Unable to connect to %s"
msgstr "Pole võimalik ühenduda võrguga %s"
@ -730,8 +692,6 @@ msgstr "Aknad"
msgid "Show Applications"
msgstr "Rakenduste kuvamine"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
msgid "Dash"
msgstr "Dokk"
@ -746,11 +706,10 @@ msgstr "Kuupäeva ja kella sätted"
#. 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").
#.
#. */
msgid "%A %B %e, %Y"
msgstr "%A, %d. %B %Y"
#, c-format
msgctxt "title"
msgid "Log Out %s"
msgstr "%s väljalogimine"
@ -759,13 +718,11 @@ msgctxt "title"
msgid "Log Out"
msgstr "Väljalogimine"
#, c-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s logitakse %d sekundi pärast automaatselt välja."
msgstr[1] "%s logitakse %d sekundi pärast automaatselt välja."
#, c-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Sind logitakse %d sekundi pärast automaatselt välja."
@ -779,7 +736,6 @@ msgctxt "title"
msgid "Power Off"
msgstr "Väljalülitamine"
#, c-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "%d sekundi pärast lülitub süsteem automaatselt välja."
@ -797,7 +753,6 @@ msgctxt "title"
msgid "Restart"
msgstr "Taaskäivitamine"
#, c-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Süsteem taaskäivitub automaatselt %d sekundi pärast."
@ -807,7 +762,6 @@ msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Taaskäivitamine ja uuenduste paigaldamine"
#, c-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
@ -824,20 +778,17 @@ msgstr "Mõned rakendused on tegevuses või on neis salvestamata asju."
msgid "Other users are logged in."
msgstr "Teised kasutajad on sisse logitud."
#. Translators: Remote here refers to a remote session, like a ssh login
#, c-format
#. Translators: Remote here refers to a remote session, like a ssh login */
msgid "%s (remote)"
msgstr "%s (kaugühendus)"
#. Translators: Console here refers to a tty like a VT console
#, c-format
#. Translators: Console here refers to a tty like a VT console */
msgid "%s (console)"
msgstr "%s (konsool)"
msgid "Install"
msgstr "Paigalda"
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Kas laadida alla ja paigaldada '%s' aadressilt extensions.gnome.org?"
@ -847,8 +798,7 @@ msgstr "Klaviatuur"
msgid "No extensions installed"
msgstr "Ühtegi laiendust pole paigaldatud"
#. Translators: argument is an extension UUID.
#, c-format
#. Translators: argument is an extension UUID. */
msgid "%s has not emitted any errors."
msgstr "%s ei ole väljastanud ühtegi veateadet."
@ -909,7 +859,6 @@ msgctxt "program"
msgid "Unknown"
msgstr "Tundmatu"
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d uus sõnum"
@ -924,7 +873,7 @@ msgstr "Ülevaade"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#. characters. */
msgid "Type to search…"
msgstr "Otsing…"
@ -932,21 +881,13 @@ msgid "Quit"
msgstr "Sulge"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#. in your language, you can use the word for "Overview". */
msgid "Activities"
msgstr "Tegevused"
msgid "Settings Menu"
msgstr "Sätete menüü"
msgid "Top Bar"
msgstr "Ülemine riba"
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -957,11 +898,10 @@ msgid "Close"
msgstr "Sulge"
#. Translators: This is a time format for a date in
#. long format
#. long format */
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d uus märguanne"
@ -973,13 +913,6 @@ msgstr "Lukusta"
msgid "GNOME needs to lock the screen"
msgstr "GNOME peab ekraani lukustama"
#. We could not become modal, so we can't activate the
#. screenshield. The user is probably very upset at this
#. point, but any application using global grabs is broken
#. Just tell him to stop using this app
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
msgid "Unable to lock"
msgstr "Pole võimalik lukustada"
@ -1043,8 +976,6 @@ msgstr "Kõrgkontrastne"
msgid "Large Text"
msgstr "Suur tekst"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1054,17 +985,14 @@ msgstr "Lülita välja"
msgid "Bluetooth Settings"
msgstr "Bluetoothi sätted"
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d ühendatud seade"
msgstr[1] "%d ühendatud seadet"
#, c-format
msgid "Authorization request from %s"
msgstr "Autoriseerimise päring seadmelt %s"
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Seade '%s' tahab selle arvutiga paarduda"
@ -1074,7 +1002,6 @@ msgstr "Luba"
msgid "Deny"
msgstr "Keela"
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Seade %s soovib ligipääsu teenusele '%s'"
@ -1087,24 +1014,21 @@ msgstr "Luba ainult seekord"
msgid "Reject"
msgstr "Lükka tagasi"
#. Translators: argument is the device short name
#, c-format
#. Translators: argument is the device short name */
msgid "Pairing confirmation for %s"
msgstr "Paardumise kinnitus seadmele %s"
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Palun kontrolli, kas parool '%06d' kattub seadme parooliga."
#. Translators: this is the verb, not the noun
#. Translators: this is the verb, not the noun */
msgid "Matches"
msgstr "Kattub"
msgid "Does not match"
msgstr "Ei kattu"
#, c-format
msgid "Pairing request for %s"
msgstr "Seadmega %s paardumise päring"
@ -1117,9 +1041,6 @@ msgstr "Olgu"
msgid "Brightness"
msgstr "Heledus"
msgid "Show Keyboard Layout"
msgstr "Klaviatuuripaigutuse kuvamine"
msgid "<unknown>"
msgstr "<tundmatu>"
@ -1130,7 +1051,7 @@ msgid "Network Settings"
msgstr "Võrgusätted"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu)
#. under NetworkManager's control (and thus cannot be used in the menu) */
msgid "unmanaged"
msgstr "pole hallatud"
@ -1140,17 +1061,17 @@ msgstr "ühenduse katkestamine..."
msgid "connecting..."
msgstr "ühendumine..."
#. Translators: this is for network connections that require some kind of key or password
#. Translators: this is for network connections that require some kind of key or password */
msgid "authentication required"
msgstr "vajalik on autentimine"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#. module, which is missing */
msgid "firmware missing"
msgstr "püsivara puudub"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage
#. is disabled by rfkill, or it has no coverage */
msgid "unavailable"
msgstr "pole saadaval"
@ -1193,25 +1114,15 @@ msgstr "Toitesätted..."
msgid "Fully Charged"
msgstr "Täiesti täis"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#. state is one of PENDING_CHARGING, PENDING_DISCHARGING
msgid "Estimating…"
msgstr "Andmete kogumine…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#, c-format
msgid "%d\\u2236%02d Remaining (%d%%)"
msgstr "%d\\u2236%02d jäänud (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d jäänud (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#, c-format
msgid "%d\\u2236%02d Until Full (%d%%)"
msgstr "%d\\u2236%02d täitumiseni (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d täitumiseni (%d%%)"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
#. changing the menu contents.
msgid "Airplane Mode"
msgstr "Lennukirežiim"
@ -1254,7 +1165,6 @@ msgstr "Rakendused"
msgid "Search"
msgstr "Otsing"
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
@ -1262,11 +1172,9 @@ msgstr ""
"Vabandust, tänaseks tarkuseteri pole:\n"
"%s"
#, c-format
msgid "%s the Oracle says"
msgstr "Oraakel %s ütleb"
#, c-format
msgid "'%s' is ready"
msgstr "'%s' on valmis"
@ -1275,14 +1183,13 @@ msgstr "Kas tahad säilitada need kuvasätted?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#. */
msgid "Revert Settings"
msgstr "Taasta sätted"
msgid "Keep Changes"
msgstr "Säilita muudatused"
#, c-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Sätete muudatused ennistatakse %d sekundi pärast"
@ -1335,6 +1242,26 @@ msgstr "Parool ei saa olla tühi"
msgid "Authentication dialog was dismissed by the user"
msgstr "Kasutaja katkestas autentimisdialoogi"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "%s jaoks eelistuste dialoogi laadimisel esines viga:"
#~ msgid "Extension"
#~ msgstr "Laiendus"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l\\u2236%M\\u2009%p"
#~ msgid "Show Keyboard Layout"
#~ msgstr "Klaviatuuripaigutuse kuvamine"
#~ msgid "Settings Menu"
#~ msgstr "Sätete menüü"
#~ msgid "Screenshots"
#~ msgstr "Ekraanipildid"

461
po/eu.po

File diff suppressed because it is too large Load Diff

1798
po/fa.po

File diff suppressed because it is too large Load Diff

431
po/fi.po

File diff suppressed because it is too large Load Diff

132
po/fr.po
View File

@ -18,8 +18,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-13 20:04+0000\n"
"PO-Revision-Date: 2013-09-14 19:08+0200\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 15:47+0200\n"
"Last-Translator: Mathieu Stumpf <psychoslave@culture-libre.org>\n"
"Language-Team: français <gnomefr@traduc.org>\n"
"Language: \n"
@ -284,6 +284,10 @@ msgstr "Les espaces de travail sont gérés dynamiquement"
msgid "Workspaces only on primary monitor"
msgstr "Les espaces de travail sont uniquement sur l'écran principal"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Retarder les changements de focus en mode souris jusqu'à ce que le pointeur arrête de bouger"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -301,10 +305,10 @@ msgstr ""
"Sélectionnez une extension à configurer en utilisant la boîte combinée ci-"
"dessus."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Annuler"
@ -343,8 +347,8 @@ msgstr "(par ex. utilisateur ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Nom d'utilisateur : "
@ -380,27 +384,27 @@ msgstr "Impossible d'analyser la commande :"
msgid "Execution of '%s' failed:"
msgstr "Exécution de « %s » impossible :"
#: ../js/ui/appDisplay.js:598
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Les applications fréquemment utilisées apparaîtront ici"
#: ../js/ui/appDisplay.js:714
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Fréquemment utilisées"
#: ../js/ui/appDisplay.js:721
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Toutes"
#: ../js/ui/appDisplay.js:1516
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Nouvelle fenêtre"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Enlever des favoris"
#: ../js/ui/appDisplay.js:1520
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Ajouter aux favoris"
@ -414,7 +418,8 @@ msgstr "%s a été ajouté à vos favoris."
msgid "%s has been removed from your favorites."
msgstr "%s a été supprimé de vos favoris."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Paramètres"
@ -621,50 +626,50 @@ msgstr "Ouvrir avec %s"
msgid "Eject"
msgstr "Éjecter"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Mot de passe :"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Saisissez à nouveau :"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Se connecter"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Mot de passe : "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Clé : "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identité : "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Mot de passe de la clé privée : "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Service : "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "L'authentification est requise par le réseau sans fil"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -673,35 +678,35 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Nom du réseau : "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "Authentification DSL"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Code PIN requis"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les téléphones mobiles à large bande"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN : "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Mot de passe du téléphone mobile à large bande"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Un mot de passe est requis pour se connecter à « %s »."
@ -1194,11 +1199,11 @@ msgstr "Menu du tiroir de messagerie"
msgid "No Messages"
msgstr "Aucun message"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Tiroir de messagerie"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Informations du système"
@ -1240,10 +1245,6 @@ msgstr "Quitter"
msgid "Activities"
msgstr "Activités"
#: ../js/ui/panel.js:807
msgid "Settings Menu"
msgstr "Menu des paramètres"
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Barre supérieure"
@ -1379,9 +1380,9 @@ msgstr "Grand texte"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1394,56 +1395,56 @@ msgstr "Éteindre"
msgid "Bluetooth Settings"
msgstr "Paramètres Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d périphérique connecté"
msgstr[1] "%d périphériques connectés"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Demande d'autorisation de « %s »"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Le périphérique « %s » souhaite se connecter à cet ordinateur"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Autoriser"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Refuser"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Le périphérique %s souhaite accéder au service « %s »"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Toujours accorder l'accès"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Accorder l'accès cette fois uniquement"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Refuser"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Confirmation de la demande de liaison pour « %s »"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1452,26 +1453,26 @@ msgstr ""
"du périphérique."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Correspond"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Ne correspond pas"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Demande de liaison pour « %s »"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr ""
"Veuillez saisir le numéro d'identification personnel (PIN) mentionné sur le "
"périphérique."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "Valider"
@ -1555,15 +1556,15 @@ msgstr "Activer"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Gestionnaire de réseau"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Échec de connexion"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "L'activation de la connexion réseau a échoué"
@ -1758,6 +1759,9 @@ msgstr "Le mot de passe ne peut pas être vide"
msgid "Authentication dialog was dismissed by the user"
msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
#~ msgid "Settings Menu"
#~ msgstr "Menu des paramètres"
#~ msgid "Screenshots"
#~ msgstr "Captures d'écran"

494
po/gl.po

File diff suppressed because it is too large Load Diff

285
po/he.po
View File

@ -9,21 +9,21 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-16 21:39+0300\n"
"PO-Revision-Date: 2013-09-16 21:54+0300\n"
"POT-Creation-Date: 2013-10-11 01:13+0300\n"
"PO-Revision-Date: 2013-10-11 01:14+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: עברית <>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 :2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Gtranslator 2.91.6\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
msgstr "מערכת "
msgstr "מערכת"
#: ../data/50-gnome-shell-system.xml.in.h:2
msgid "Show the message tray"
@ -262,14 +262,18 @@ msgstr "Workspaces are managed dynamically"
msgid "Workspaces only on primary monitor"
msgstr "Workspaces only on primary monitor"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728
msgid "Cancel"
msgstr "ביטול"
@ -300,8 +304,8 @@ msgstr "לא רשום?"
msgid "(e.g., user or %s)"
msgstr "(משתמש או %s לדוגמה)"
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "שם משתמש:"
@ -317,15 +321,15 @@ msgstr "שגיאת אימות"
msgid "(or swipe finger)"
msgstr "(או להעביר אצבע)"
#: ../js/misc/util.js:98
#: ../js/misc/util.js:115
msgid "Command not found"
msgstr "הפקודה לא נמצאה"
#: ../js/misc/util.js:131
#: ../js/misc/util.js:148
msgid "Could not parse command:"
msgstr "לא ניתן לפענח את הפקודה:"
#: ../js/misc/util.js:139
#: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:"
msgstr "ההרצה של '%s' נכשלה:"
@ -364,7 +368,7 @@ msgstr "%s נוסף למועדפים שלך."
msgid "%s has been removed from your favorites."
msgstr "%s הוסר מהמועדפים שלך."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "הגדרות"
@ -555,83 +559,83 @@ msgstr "פתיחה באמצעות %s"
msgid "Eject"
msgstr "שליפה"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:89 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "ססמה:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "נא להקליד שוב:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731
msgid "Connect"
msgstr "התחברות"
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "ססמה:"
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "מפתח:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "זהות:"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "ססמת מפתח פרטי:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "שירות:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "הרשת האלחוטית דורשת אימות"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr "ססמאות או מפתחות הצפנה נדרשים כדי לגשת לרשת האלחוטית '%s'."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "אימות Wired 802.1X"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "שם הרשת:"
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "אימות DSL"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "נדרש קוד PIN"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "נדרש קוד PIN עבור התקן החיבור האלחוטי בפס רחב"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "ססמת רשת הפס הרחב הניידת"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'."
msgstr "נדרשת ססמה כדי להתחבר אל '%s'."
@ -931,17 +935,15 @@ msgstr "יציאה"
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "המשתמש %s ייצא אוטומטית בעוד שנייה."
msgstr[0] "המשתמש %s ייצא אוטומטית בעוד %d שנייה."
msgstr[1] "המשתמש %s ייצא אוטומטית בעוד %d שניות."
msgstr[2] "המשתמש %s ייצא אוטומטית בעוד 2 שניות."
#: ../js/ui/endSessionDialog.js:70
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "אתה תצא אוטומטית בעוד שנייה."
msgstr[0] "אתה תצא אוטומטית בעוד %d שנייה."
msgstr[1] "אתה תצא אוטומטית בעוד %d שניות."
msgstr[2] "המערכת תוציא אותך אוטומטית בעוד 2 שניות."
#: ../js/ui/endSessionDialog.js:75
msgctxt "button"
@ -957,9 +959,8 @@ msgstr "כיבוי"
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "המערכת תכבה אוטומטית בעוד שנייה."
msgstr[0] "המערכת תכבה אוטומטית בעוד %d שנייה."
msgstr[1] "המערכת תכבה אוטומטית בעוד %d שניות."
msgstr[2] "המערכת תכבה אוטומטית בעוד 2 שניות."
#: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
msgctxt "button"
@ -980,9 +981,8 @@ msgstr "הפעלה מחדש"
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "המערכת תופעל מחדש בעוד שנייה."
msgstr[0] "המערכת תופעל מחדש בעוד %d שנייה."
msgstr[1] "המערכת תופעל מחדש בעוד %d שניות."
msgstr[2] "המערכת תופעל מחדש בעוד 2 שניות."
#: ../js/ui/endSessionDialog.js:112
msgctxt "title"
@ -994,9 +994,8 @@ msgstr "הפעלה מחדש והתקנת עדכונים"
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] "המערכת תופעל מחדש ותתקין עדכונים בעוד שנייה."
msgstr[0] "המערכת תופעל מחדש ותתקין עדכונים בעוד %d שנייה."
msgstr[1] "המערכת תופעל מחדש ותקין עדכונים בעוד %d שניות."
msgstr[2] "המערכת תופעל מחדש ותתקין עדכונים בעוד 2 שניות."
#: ../js/ui/endSessionDialog.js:119
msgctxt "button"
@ -1058,9 +1057,12 @@ msgstr "הצגת השגיאות"
msgid "Enabled"
msgstr "פעיל"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "מנוטרל"
@ -1092,27 +1094,31 @@ msgstr "פתיחה"
msgid "Remove"
msgstr "הסרה"
#: ../js/ui/messageTray.js:1513
#: ../js/ui/messageTray.js:1530
msgid "Notifications"
msgstr "התרעות"
#: ../js/ui/messageTray.js:1537
msgid "Clear Messages"
msgstr "פינוי ההודעות"
#: ../js/ui/messageTray.js:1540
#: ../js/ui/messageTray.js:1564
msgid "Notification Settings"
msgstr "הגדרות התרעה"
#: ../js/ui/messageTray.js:1559
#: ../js/ui/messageTray.js:1617
msgid "Tray Menu"
msgstr "תפריט מגש"
#: ../js/ui/messageTray.js:1775
#: ../js/ui/messageTray.js:1833
msgid "No Messages"
msgstr "אין הודעות"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1871
msgid "Message Tray"
msgstr "אזור דיווח ההודעות"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2846
msgid "System Information"
msgstr "פרטי המערכת"
@ -1121,13 +1127,13 @@ msgctxt "program"
msgid "Unknown"
msgstr "לא ידוע"
# javascript-format
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "הודעה חדשה אחת"
msgstr[0] "%d הודעה חדשה"
msgstr[1] "%d הודעות חדשות"
msgstr[2] "2 הודעות חדשות"
#: ../js/ui/overview.js:82
msgid "Undo"
@ -1155,7 +1161,7 @@ msgstr "יציאה"
msgid "Activities"
msgstr "פעילויות"
#: ../js/ui/panel.js:903
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "הסרגל העליון"
@ -1177,13 +1183,13 @@ msgstr "סגירה"
msgid "%A, %B %d"
msgstr "%A, ה־%d ב%B"
# javascript-format
#: ../js/ui/screenShield.js:154
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "התרעה חדשה אחת"
msgstr[0] "%d התרעה חדשה"
msgstr[1] "%d התרעות חדשות"
msgstr[2] "2 התרעות חדשות"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333
msgid "Lock"
@ -1201,11 +1207,11 @@ msgstr "לא ניתן לנעול"
msgid "Lock was blocked by an application"
msgstr "הנעילה נחסמה ע״י היישום"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:448
msgid "Searching…"
msgstr "בחיפוש…"
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:492
msgid "No results."
msgstr "אין תוצאות."
@ -1277,14 +1283,14 @@ msgstr "ניגודיות גבוהה"
msgid "Large Text"
msgstr "טקסט גדול"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "כיבוי"
@ -1292,81 +1298,81 @@ msgstr "כיבוי"
msgid "Bluetooth Settings"
msgstr "הגדרות Bluetooth"
#: ../js/ui/status/bluetooth.js:57
# javascript-format
#: ../js/ui/status/bluetooth.js:58
#, javascript-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "התקן אחד מחובר"
msgstr[0] "%d התקן מחובר"
msgstr[1] "%d התקנים מחוברים"
msgstr[2] "2 התקנים מחוברים"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, javascript-format
msgid "Authorization request from %s"
msgstr "בקשת אישור מאת %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, javascript-format
msgid "Device %s wants to pair with this computer"
msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "לאפשר"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "לדחות"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, javascript-format
msgid "Device %s wants access to the service '%s'"
msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "תמיד להעניק גישה"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "הענקת גישה הפעם בלבד"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "סירוב"
#. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, javascript-format
msgid "Pairing confirmation for %s"
msgstr "אישור צימוד עבור %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, javascript-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "נא לאשר האם מילת הצופן '%06d' תואמת את זו שמופיעה בהתקן."
#. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "התאמות"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "אינו תואם"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, javascript-format
msgid "Pairing request for %s"
msgstr "בקשת צימוד עבור %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "אישור"
@ -1378,83 +1384,95 @@ msgstr "בהירות"
msgid "<unknown>"
msgstr "<לא ידוע>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380
#: ../js/ui/status/network.js:1106
msgid "Off"
msgstr "כבוימנותק"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "הגדרות הרשת"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:364
#: ../js/ui/status/network.js:386
msgid "unmanaged"
msgstr "לא מנוהל"
#: ../js/ui/status/network.js:366
#: ../js/ui/status/network.js:388
msgid "disconnecting..."
msgstr "בהליכי ניתוק..."
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160
msgid "connecting..."
msgstr "בהתחברות..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163
msgid "authentication required"
msgstr "נדרש אימות"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:383
#: ../js/ui/status/network.js:405
msgid "firmware missing"
msgstr "הקושחה חסרה"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:387
#: ../js/ui/status/network.js:409
msgid "unavailable"
msgstr "לא זמין"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165
msgid "connection failed"
msgstr "החיבור נכשל"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513
msgid "Mobile Broadband Settings"
msgstr "הגדרות פס־רחב נייד"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104
msgid "Hardware Disabled"
msgstr "מנוטרל חומרתית"
#: ../js/ui/status/network.js:696
msgid "Wi-Fi Networks"
msgstr "רשתות אלחוטיות"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:698
msgid "Select a network"
msgstr "בחירת רשת"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:722
msgid "No Networks"
msgstr "אין רשתות"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:991
msgid "Select Network"
msgstr "בחירת רשת"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:997
msgid "Wi-Fi Settings"
msgstr "הגדרות רשת אלחוטית"
#: ../js/ui/status/network.js:1085
msgid "Turn On"
msgstr "הפעלה"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1108
msgid "Not Connected"
msgstr "לא מחובר"
#: ../js/ui/status/network.js:1228
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1368
msgid "Network Manager"
msgstr "מנהל הרשתות"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1407
msgid "Connection failed"
msgstr "ההתחברות נכשל"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1408
msgid "Activation of network connection failed"
msgstr "הפעלת חיבור הרשת נכשלה"
@ -1477,12 +1495,12 @@ msgstr "מתבצע שערוך…"
#: ../js/ui/status/power.js:77
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d\\u2236%d נותרו (%d%%)"
msgstr "%d\\u2236%02d נותרו (%d%%)"
#: ../js/ui/status/power.js:82
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d\\u2236%d עד לטעינה מלאה (%d%%)"
msgstr "%d\\u2236%02d עד לטעינה מלאה (%d%%)"
#: ../js/ui/status/rfkill.js:43
msgid "Airplane Mode"
@ -1492,6 +1510,10 @@ msgstr "מצב טיסה"
msgid "On"
msgstr "פועל"
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "הגדרות הרשת"
#: ../js/ui/status/system.js:305
msgid "Switch User"
msgstr "החלפת משתמש"
@ -1574,13 +1596,13 @@ msgstr "שחזור הגדרות"
msgid "Keep Changes"
msgstr "שמירת שינויים"
# javascript-format
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "שינויי הגדרות ישוחזרו בעוד שנייה"
msgstr[0] "שינויי הגדרות ישוחזרו בעוד %d שנייה"
msgstr[1] "שינויי הגדרות ישוחזרו בעוד %d שניות"
msgstr[2] "שינויי הגדרות ישוחזרו בעוד 2 שניות"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
@ -1594,7 +1616,6 @@ msgid "%u Output"
msgid_plural "%u Outputs"
msgstr[0] "פלט אחד"
msgstr[1] "%u פלטים"
msgstr[2] "2 פלטים"
#. translators:
#. * The number of sound inputs on a particular device
@ -1604,7 +1625,6 @@ msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "קלט אחד"
msgstr[1] "%u קלטים"
msgstr[2] "2 קלטים"
#: ../src/gvc/gvc-mixer-control.c:2373
msgid "System Sounds"
@ -1643,6 +1663,23 @@ msgstr "הססמה לא יכולה להישאר ריקה"
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "אירעה שגיאה בעת טעינת דו־שיח ההעדפות עבור %s:"
#~ msgid "Extension"
#~ msgstr "הרחבה"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l\\u2236%M\\u2009%p"
#~ msgid "Show Keyboard Layout"
#~ msgstr "הצגת פריסת המקלדת"
#~ msgid "Screenshots"
#~ msgstr "צילומי מסך"
@ -1719,12 +1756,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ "the current date, and use this extension. It should be changed when "
#~ "recording to a different container format."
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "אירעה שגיאה בעת טעינת דו־שיח ההעדפות עבור %s:"
#~ msgid "Extension"
#~ msgstr "הרחבה"
#~ msgid "Session"
#~ msgstr "הפעלה"
@ -1734,14 +1765,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Restart"
#~ msgstr "הפעלה מחדש"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l\\u2236%M\\u2009%p"
#~ msgid "Screencast from %d %t"
#~ msgstr "צילום מסך מהקובץ %d %t"
@ -1763,9 +1786,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Restarting the system."
#~ msgstr "המערכת מופעלת מחדש"
#~ msgid "Show Keyboard Layout"
#~ msgstr "הצגת פריסת המקלדת"
#~ msgid "Volume, network, battery"
#~ msgstr "עצמת שמע, רשת, סוללה"
@ -1798,9 +1818,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Set Up a New Device…"
#~ msgstr "הגדרת התקן חדש…"
#~ msgid "hardware disabled"
#~ msgstr "מנוטרל חומרתית"
#~ msgid "Connection"
#~ msgstr "חיבור"
@ -1834,9 +1851,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Auto Ethernet"
#~ msgstr "אתרנט אוטומטי"
#~ msgid "Mobile broadband"
#~ msgstr "פס־רחב נייד"
#~ msgid "Auto broadband"
#~ msgstr "פס רחב אוטומטי"
@ -1938,9 +1952,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Idle"
#~ msgstr "בהמתנה"
#~ msgid "Notifications"
#~ msgstr "התרעות"
#~ msgid "Your chat status will be set to busy"
#~ msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"

497
po/hu.po

File diff suppressed because it is too large Load Diff

461
po/id.po

File diff suppressed because it is too large Load Diff

452
po/it.po

File diff suppressed because it is too large Load Diff

167
po/ja.po
View File

@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-06 21:55+0000\n"
"PO-Revision-Date: 2013-09-07 22:28+0900\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 23:30+0900\n"
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@ -52,6 +52,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "ウィンドウ管理とアプリケーションの起動"
@ -64,6 +65,10 @@ msgstr "GNOME Shell 拡張機能設定"
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell 拡張機能の設定を行います"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (Wayland コンポジター)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする"
@ -212,6 +217,10 @@ msgstr "ワークスペースを動的に管理する"
msgid "Workspaces only on primary monitor"
msgstr "プライマリモニターのみワークスペースを切り替える"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "マウスモードにおけるフォーカス遷移をポインターが停止するまで遅延させる"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -225,10 +234,10 @@ msgstr "拡張機能"
msgid "Select an extension to configure using the combobox above."
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "キャンセル"
@ -267,8 +276,8 @@ msgstr "(たとえば、user あるいは %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "ユーザー名: "
@ -289,42 +298,42 @@ msgstr "認証エラー"
msgid "(or swipe finger)"
msgstr "(あるいは指でスワイプする)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "コマンドが見つかりません"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "次のコマンドは解析できません:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s'の実行に失敗しました:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "よく使うアプリケーションがここに表示されます"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "常用"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "すべて"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "新しいウィンドウで開く"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "お気に入りから削除"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "お気に入りに追加"
@ -338,7 +347,8 @@ msgstr "%s をお気に入りに追加しました。"
msgid "%s has been removed from your favorites."
msgstr "%s をお気に入りから削除しました。"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "設定"
@ -524,83 +534,83 @@ msgstr "%s で開く"
msgid "Eject"
msgstr "取り出し"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "パスワード:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "再入力:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "接続"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "パスワード: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "キー: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "識別子: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "プライベートキーパスワード: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "サービス: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "無線ネットワークでは認証が要求されます"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要です。"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "有線 802.1X の認証"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "ネットワーク名: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL 認証"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "モバイルブロードバンドデバイスには PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN 番号: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "モバイルブロードバンドネットワークのパスワード"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' への接続にパスワードが必要です。"
@ -856,7 +866,7 @@ msgstr "アカウントを表示"
msgid "Unknown reason"
msgstr "原因不明"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "ウィンドウ"
@ -994,7 +1004,7 @@ msgstr "インストール"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "キーボード"
@ -1070,11 +1080,11 @@ msgstr "トレイメニュー"
msgid "No Messages"
msgstr "メッセージなし"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "メッセージトレイ"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "システム情報"
@ -1105,21 +1115,17 @@ msgstr "アクティビティ画面"
msgid "Type to search…"
msgstr "検索ワードを入力…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "終了"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "アクティビティ"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "設定メニュー"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "トップバー"
@ -1128,7 +1134,7 @@ msgstr "トップバー"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -1156,7 +1162,7 @@ msgstr[0] "%d 件の新しい通知"
msgid "Lock"
msgstr "ロック"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "画面をロックする必要があります"
@ -1167,11 +1173,11 @@ msgstr "画面をロックする必要があります"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "ロックできません"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "アプリケーションによってロックがブロックされました"
@ -1253,9 +1259,9 @@ msgstr "大きな文字"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1268,78 +1274,78 @@ msgstr "オフにする"
msgid "Bluetooth Settings"
msgstr "Bluetooth の設定"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "接続デバイス: %d台"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "%s からアクセス許可の要求"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "デバイス %s がこのコンピューターとのペアリングを要求しています"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "拒否"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "デバイス '%s' が サービス '%s' へのアクセスを要求しています"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "今回のみ許可"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "拒否"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s からペアリングの確認"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "'%06d' がデバイスのパスキーと一致しているか確認してください。"
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "一致"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "不一致"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "%s からペアリングの要求"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "デバイスの PIN コードを入力してください。"
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1347,7 +1353,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "明るさ"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "キーボードレイアウトの表示"
@ -1423,15 +1429,15 @@ msgstr "オンにする"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "ネットワークマネージャー"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "接続失敗"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "ネットワーク接続を有効にできません"
@ -1517,11 +1523,11 @@ msgstr "他のユーザーでログイン"
msgid "Unlock Window"
msgstr "ロック解除"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "アプリケーション"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "検索"
@ -1622,6 +1628,9 @@ msgstr "パスワードを空白にすることはできません。"
msgid "Authentication dialog was dismissed by the user"
msgstr "認証ダイアログはユーザーに拒否されました"
#~ msgid "Settings Menu"
#~ msgstr "設定メニュー"
#~ msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
#~ msgstr "ユーザーにより明示的に設定された最新の IM プレゼンスを保存するのに内部的に使用されます。ここは TpConnectionPresenceType 列挙型の値になります。"

122
po/kk.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-14 18:10+0000\n"
"PO-Revision-Date: 2013-09-15 13:44+0600\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-24 06:33+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n"
@ -267,6 +267,10 @@ msgstr "Жұмыс орындары динамикалы түрде басқар
msgid "Workspaces only on primary monitor"
msgstr "Жұмыс орындар тек біріншілік мониторда"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Тышқан режиміндегі фокусты ауыстыру курсор тоқтағанша дейін кідірту"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -280,10 +284,10 @@ msgstr "Кеңейту"
msgid "Select an extension to configure using the combobox above."
msgstr "Жоғарыдағы ашылмалы тізімнен баптау үшін кеңейтуді таңдаңыз."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Бас тарту"
@ -322,8 +326,8 @@ msgstr "(мыс., пайдаланушы не %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Пайдаланушы аты:"
@ -359,27 +363,27 @@ msgstr "Команданы талдау мүмкін емес:"
msgid "Execution of '%s' failed:"
msgstr "'%s' жөнелту сәтсіз:"
#: ../js/ui/appDisplay.js:598
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
#: ../js/ui/appDisplay.js:714
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Жиі"
#: ../js/ui/appDisplay.js:721
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Барлық"
#: ../js/ui/appDisplay.js:1516
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Жаңа терезе"
#: ../js/ui/appDisplay.js:1519 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру"
#: ../js/ui/appDisplay.js:1520
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу"
@ -580,85 +584,85 @@ msgstr "%s көмегімен ашу"
msgid "Eject"
msgstr "Шығару"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Қайтадан енгізіңіз:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Байланысу"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Пароль:"
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Кілт:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Анықтағыш:"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Жеке кілт паролі:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Қызмет:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Сымсыз желісі аутентификацияны талап етеді"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Сымды 802.1X аутентификациясы"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Желі аты:"
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL аутентификациясы"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN коды керек"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Сымсыз кеңжолақты желісінің паролі"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
@ -1139,11 +1143,11 @@ msgstr "Трей мәзірі"
msgid "No Messages"
msgstr "Хабарламалар жоқ"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Жүйелік трей"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Жүйелік ақпарат"
@ -1318,9 +1322,9 @@ msgstr "Үлкен мәтін"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1333,79 +1337,79 @@ msgstr "Сөндіру"
msgid "Bluetooth Settings"
msgstr "Bluetooth баптаулары"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d байланысқан құрылғы"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "%s жіберген авторизация сұранымы"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Рұқсат ету"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Тайдыру"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "%s құрылғысы '%s' қызметін қатынағысы кеп тұр"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Әрқашан рұқсат ету"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Тек осы ретке рұқсат ету"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Болдырмау"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s жіберген парлау растауы"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "'%06d' кілт коды құрылғыдағы кодымен сәйкес келетінін растаңыз."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Сәйкес"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Сәйкес емес"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "%s үшін парлау сұранымы"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Құрылғыда көрсетілген PIN кодын енгізіңіз."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "ОК"
@ -1489,15 +1493,15 @@ msgstr "Іске қосу"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Желілер басқарушысы"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Байланыс орнату сәтсіз"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Желілік байланысты белсендіру сәтсіз"

442
po/lt.po

File diff suppressed because it is too large Load Diff

548
po/lv.po

File diff suppressed because it is too large Load Diff

207
po/nb.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.9.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-08 11:22+0200\n"
"PO-Revision-Date: 2013-09-08 11:23+0200\n"
"POT-Creation-Date: 2013-10-03 20:38+0200\n"
"PO-Revision-Date: 2013-09-24 19:38+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: \n"
@ -47,6 +47,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Vindushåndtering og oppstart av programmer"
@ -59,6 +60,10 @@ msgstr "Brukervalg for GNOME Shell utvidelser"
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurer utvidelser for GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (wayland kompositør)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Aktiver interne verktøy for utviklere og testere fra Alt-F2"
@ -243,6 +248,10 @@ msgstr "Arbeidsområder håndteres dynamisk"
msgid "Workspaces only on primary monitor"
msgstr "Arbeidsområder vises kun på hovedskjerm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -256,10 +265,10 @@ msgstr "Utvidelse"
msgid "Select an extension to configure using the combobox above."
msgstr "Velg en utvidelse som skal konfigureres med komboboksen over."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:703
msgid "Cancel"
msgstr "Avbryt"
@ -298,8 +307,8 @@ msgstr "(f.eks. bruker eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Brukernavn: "
@ -320,42 +329,42 @@ msgstr "Autentiseringsfeil"
msgid "(or swipe finger)"
msgstr "(eller dra finger)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Kommando ikke funnet"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Klarte ikke å lese kommando:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Kjøring av «%s» feilet:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Ofte brukte programmer vil vises her"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Ofte"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Nytt vindu"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Legg til i favoritter"
@ -369,7 +378,8 @@ msgstr "%s ble lagt til i dine favoritter."
msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra dine favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Innstillinger"
@ -555,50 +565,50 @@ msgstr "Åpne med %s"
msgid "Eject"
msgstr "Løs ut"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passord:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Skriv på nytt:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:122
#: ../js/ui/status/network.js:285 ../js/ui/status/network.js:706
msgid "Connect"
msgstr "Koble til"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Passord: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Nøkkel: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identitet: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Passord for privat nøkkel: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Tjeneste: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Autentisering kreves av trådløst nettverk"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -607,35 +617,35 @@ msgstr ""
"Passord eller krypteringsnøkler kreves for å koble til trådløst nettverk "
"«%s»."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "802.1X autentisering for trådbundet nettverk"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Navn på nettverk: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-autentisering"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN-kode kreves"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-kode kreves for mobil bredbåndsenhet"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Nettverkspassord for mobilt bredbånd"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Et passord kreves for å koble til «%s»."
@ -899,7 +909,7 @@ msgstr "Vis konto"
msgid "Unknown reason"
msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Vinduer"
@ -1047,7 +1057,7 @@ msgstr "Installer"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Tastatur"
@ -1123,11 +1133,11 @@ msgstr "Meny for varslingsområde"
msgid "No Messages"
msgstr "Ingen meldinger"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Meldingstrau"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Systeminformasjon"
@ -1159,21 +1169,17 @@ msgstr "Oversikt"
msgid "Type to search…"
msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Avslutt"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Meny for innstillinger"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Topp-panel"
@ -1182,7 +1188,7 @@ msgstr "Topp-panel"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1211,7 +1217,7 @@ msgstr[1] "%d nye varslinger"
msgid "Lock"
msgstr "Lås"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME må låse skjermen"
@ -1222,19 +1228,19 @@ msgstr "GNOME må låse skjermen"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Kan ikke låse"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Låsing ble stoppet av et program"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:448
msgid "Searching…"
msgstr "Søker …"
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:492
msgid "No results."
msgstr "Ingen resultater."
@ -1308,14 +1314,14 @@ msgstr "Stor tekst"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:122
#: ../js/ui/status/network.js:1051 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Slå av"
@ -1323,80 +1329,80 @@ msgstr "Slå av"
msgid "Bluetooth Settings"
msgstr "Innstillinger for Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d tilkoblet enhet"
msgstr[1] "%d tilkoblede enheter"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Forespørsel om autorisering fra %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Tillat"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Nekt"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Alltid gi tilgang"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Gi tilgang kun denne ene gangen"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Avvis"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Bekreftelse for tilkobling for %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Vennligst bekreft om passord «%06d» er lik den som brukes på enheten."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Stemmer overens"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Stemmer ikke overens"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Forespørsel om tilkobling for %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1404,7 +1410,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Lysstyrke"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Vis tastaturutforming"
@ -1412,83 +1418,83 @@ msgstr "Vis tastaturutforming"
msgid "<unknown>"
msgstr "<ukjent>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:212 ../js/ui/status/network.js:1066
msgid "Off"
msgstr "Av"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/network.js:286 ../js/ui/status/network.js:972
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Innstillinger for nettverk"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu)
#: ../js/ui/status/network.js:364
#: ../js/ui/status/network.js:375
msgid "unmanaged"
msgstr "ikke håndtert"
#: ../js/ui/status/network.js:366
#: ../js/ui/status/network.js:377
msgid "disconnecting..."
msgstr "kobler fra …"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:383 ../js/ui/status/network.js:1118
msgid "connecting..."
msgstr "kobler til …"
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
#: ../js/ui/status/network.js:386 ../js/ui/status/network.js:1121
msgid "authentication required"
msgstr "autentisering kreves"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:383
#: ../js/ui/status/network.js:394
msgid "firmware missing"
msgstr "fastvare mangler"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:387
#: ../js/ui/status/network.js:398
msgid "unavailable"
msgstr "ikke tilgjengelig"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:400 ../js/ui/status/network.js:1123
msgid "connection failed"
msgstr "tilkobling feilet"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:671
msgid "Wi-Fi Networks"
msgstr "Wi-Fi nettverk"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:673
msgid "Select a network"
msgstr "Velg et nettverk"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:697
msgid "No Networks"
msgstr "Ingen nettverk"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:966
msgid "Select Network"
msgstr "Velg nettverk"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:1051
msgid "Turn On"
msgstr "Slå på"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1186
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1326
msgid "Network Manager"
msgstr "Nettverkshåndtering"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1365
msgid "Connection failed"
msgstr "Tilkobling feilet"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1366
msgid "Activation of network connection failed"
msgstr "Aktivering av nettverkstilkobling feilet"
@ -1574,11 +1580,11 @@ msgstr "Logg inn som en annen bruker"
msgid "Unlock Window"
msgstr "Lås opp vindu"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Programmer"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Søk"
@ -1681,3 +1687,6 @@ msgstr "Passordet kan ikke være tomt"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen ble lukket av brukeren"
#~ msgid "Settings Menu"
#~ msgstr "Meny for innstillinger"

1536
po/nl.po

File diff suppressed because it is too large Load Diff

475
po/pa.po

File diff suppressed because it is too large Load Diff

503
po/pl.po

File diff suppressed because it is too large Load Diff

1894
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2678
po/ro.po

File diff suppressed because it is too large Load Diff

408
po/ru.po

File diff suppressed because it is too large Load Diff

519
po/sk.po

File diff suppressed because it is too large Load Diff

503
po/sl.po

File diff suppressed because it is too large Load Diff

571
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

478
po/tg.po

File diff suppressed because it is too large Load Diff

1638
po/tr.po

File diff suppressed because it is too large Load Diff

293
po/uk.po
View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-04 18:06+0300\n"
"PO-Revision-Date: 2013-09-04 18:44+0300\n"
"POT-Creation-Date: 2013-10-11 14:58+0300\n"
"PO-Revision-Date: 2013-10-11 15:01+0300\n"
"Last-Translator: Daniel Korostil <ted.korostiled@gmail.com>\n"
"Language-Team: linux.org.ua\n"
"Language: uk\n"
@ -51,6 +51,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Керування вікнами та запуск програм"
@ -62,6 +63,10 @@ msgstr "Параметри розширень GNOME Shell"
msgid "Configure GNOME Shell Extensions"
msgstr "Налаштувати розширення GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Оболонка GNOME (поверх wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
@ -258,14 +263,18 @@ msgstr "Робочі простори організовуються динам
msgid "Workspaces only on primary monitor"
msgstr "Робочий простір лише на основному моніторі"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Затримувати зміни фокусу миші, поки вказівник не перестане рухатись"
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr "Вибрати розширення для налаштування через список вище."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728
msgid "Cancel"
msgstr "Скасувати"
@ -296,8 +305,8 @@ msgstr "Немає в переліку?"
msgid "(e.g., user or %s)"
msgstr "(наприклад, користувач або %s)"
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Користувач:"
@ -313,40 +322,40 @@ msgstr "Помилка розпізнавання"
msgid "(or swipe finger)"
msgstr "(або проведіть пальцем)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:115
msgid "Command not found"
msgstr "Команди не знайдено"
#: ../js/misc/util.js:130
#: ../js/misc/util.js:148
msgid "Could not parse command:"
msgstr "Неможливо розібрати команду:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:"
msgstr "Не вдалось виконати «%s»:"
#: ../js/ui/appDisplay.js:580
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Часто використовувані програми будуть з'являтись тут"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Частовживане"
#: ../js/ui/appDisplay.js:703
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Усе"
#: ../js/ui/appDisplay.js:1490
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Нове вікно"
#: ../js/ui/appDisplay.js:1493 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Вилучити з улюбленого"
#: ../js/ui/appDisplay.js:1494
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Додати до улюбленого"
@ -360,7 +369,8 @@ msgstr "%s додано до улюбленого."
msgid "%s has been removed from your favorites."
msgstr "%s вилучено з улюбленого."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Параметри"
@ -550,83 +560,83 @@ msgstr "Відкрити через %s"
msgid "Eject"
msgstr "Витягнути"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:89 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:108
msgid "Type again:"
msgstr "Введіть знову:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731
msgid "Connect"
msgstr "З'єднатись"
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Пароль:"
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Ключ:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Тотожність"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Пароль закритого ключа:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Служба:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Потрібна аутентифікація для радіомережі"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr "Потрібно паролі або зашифровані ключі для доступу до радіомережі «%s»."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Дротова аутентифікація 802.1X"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Назва мережні: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "Аутентифікація DSL"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Потрібен код PIN"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Потрібен код PIN для мобільних широкосмугових пристроїв"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "пароль до мобільної широкосмугової радіомережі"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'."
msgstr "Пароль потрібен для з'єднання з «%s»."
@ -882,7 +892,7 @@ msgstr "Переглянути обліковий запис"
msgid "Unknown reason"
msgstr "Невідома причина"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Вікна"
@ -992,11 +1002,9 @@ msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] ""
"Система автоматично перезапуститься та встановить оновлення через %d "
"секунду."
"Система автоматично перезапуститься та встановить оновлення через %d секунду."
msgstr[1] ""
"Система автоматично перезапуститься та встановить оновлення через %d "
"секунди."
"Система автоматично перезапуститься та встановить оновлення через %d секунди."
msgstr[2] ""
"Система автоматично перезапуститься та встановить оновлення через %d секунд."
@ -1060,9 +1068,12 @@ msgstr "Показати помилки"
msgid "Enabled"
msgstr "Увімкнено"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Вимкнено"
@ -1094,27 +1105,31 @@ msgstr "Відкрити"
msgid "Remove"
msgstr "Вилучити"
#: ../js/ui/messageTray.js:1513
#: ../js/ui/messageTray.js:1530
msgid "Notifications"
msgstr "Сповіщення"
#: ../js/ui/messageTray.js:1537
msgid "Clear Messages"
msgstr "Очистити повідомлення"
#: ../js/ui/messageTray.js:1540
#: ../js/ui/messageTray.js:1564
msgid "Notification Settings"
msgstr "Параметри сповіщення"
#: ../js/ui/messageTray.js:1559
#: ../js/ui/messageTray.js:1617
msgid "Tray Menu"
msgstr "Меню лотка"
#: ../js/ui/messageTray.js:1775
#: ../js/ui/messageTray.js:1833
msgid "No Messages"
msgstr "Немає повідомлень"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1871
msgid "Message Tray"
msgstr "Лоток повідомлень"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2846
msgid "System Information"
msgstr "Інформація про систему"
@ -1147,25 +1162,21 @@ msgstr "Огляд"
msgid "Type to search…"
msgstr "Введіть для пошуку…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Вийти"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Діяльність"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Меню параметрів"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Верхня панель"
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1195,23 +1206,23 @@ msgstr[2] "%d нових сповіщень"
msgid "Lock"
msgstr "Заблокувати"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME потребує заблокувати екран"
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Неможливо заблокувати"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Блокування заборонено програмою"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:448
msgid "Searching…"
msgstr "Пошуки…"
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:492
msgid "No results."
msgstr "Безрезультатно."
@ -1283,14 +1294,14 @@ msgstr "Висока контрастність"
msgid "Large Text"
msgstr "Більший текст"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Вимкнути"
@ -1298,7 +1309,7 @@ msgstr "Вимкнути"
msgid "Bluetooth Settings"
msgstr "Параметри Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, javascript-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1306,73 +1317,73 @@ msgstr[0] "Під'єднано %d пристрій"
msgstr[1] "Під'єднано %d пристрої"
msgstr[2] "Під'єднано %d пристроїв"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, javascript-format
msgid "Authorization request from %s"
msgstr "Запит про авторизацію від %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, javascript-format
msgid "Device %s wants to pair with this computer"
msgstr "Пристрій %s потребує прив'язання до цього комп'ютера"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Дозволити"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Заборонити"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, javascript-format
msgid "Device %s wants access to the service '%s'"
msgstr "Пристрій %s потребує доступ до служби «%s»"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Завжди надавати доступ"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Надати лише цього разу"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Відмовити"
#. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, javascript-format
msgid "Pairing confirmation for %s"
msgstr "Сполучення підтвердження для %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, javascript-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Підвердьте, чи ключ «%06d» збігається з ключем на пристрої."
#. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Збігається"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Не збігається"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, javascript-format
msgid "Pairing request for %s"
msgstr "Запит на сполучення для %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Будь ласка, введіть PIN, згаданий на пристрої."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "Гаразд"
@ -1384,83 +1395,95 @@ msgstr "Яскравість"
msgid "<unknown>"
msgstr "<невідомо>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380
#: ../js/ui/status/network.js:1106
msgid "Off"
msgstr "Вимкнено"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Налаштування мережі"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:364
#: ../js/ui/status/network.js:386
msgid "unmanaged"
msgstr "некерований"
#: ../js/ui/status/network.js:366
#: ../js/ui/status/network.js:388
msgid "disconnecting..."
msgstr "від'єднання…"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160
msgid "connecting..."
msgstr "з'єднання…"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163
msgid "authentication required"
msgstr "Потрібна аутентифікація"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:383
#: ../js/ui/status/network.js:405
msgid "firmware missing"
msgstr "Бракує мікропрограми"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:387
#: ../js/ui/status/network.js:409
msgid "unavailable"
msgstr "недоступний"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165
msgid "connection failed"
msgstr "не вдалось з'єднатись"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513
msgid "Mobile Broadband Settings"
msgstr "параметри мобільної радіомережі"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104
msgid "Hardware Disabled"
msgstr "Пристрій вимкнено"
#: ../js/ui/status/network.js:696
msgid "Wi-Fi Networks"
msgstr "Мережі Wi-Fi"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:698
msgid "Select a network"
msgstr "Вибрати мережу"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:722
msgid "No Networks"
msgstr "Немає мереж"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:991
msgid "Select Network"
msgstr "Виберіть мережу"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:997
msgid "Wi-Fi Settings"
msgstr "Параметри Wi-Fi"
#: ../js/ui/status/network.js:1085
msgid "Turn On"
msgstr "Увімкнути"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1108
msgid "Not Connected"
msgstr "Роз'єднано"
#: ../js/ui/status/network.js:1228
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1368
msgid "Network Manager"
msgstr "Керування мережею"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1407
msgid "Connection failed"
msgstr "Не вдалось з'єднатись"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1408
msgid "Activation of network connection failed"
msgstr "Не вдалось увімкнути мережеве з'єднання"
@ -1498,6 +1521,10 @@ msgstr "У літаку"
msgid "On"
msgstr "Увімкнено"
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Налаштування мережі"
#: ../js/ui/status/system.js:305
msgid "Switch User"
msgstr "Змінити користувача"
@ -1538,11 +1565,11 @@ msgstr "Увійти як інший користувач"
msgid "Unlock Window"
msgstr "Розблокувати вікно"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Програми"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Пошук"
@ -1649,6 +1676,26 @@ msgstr "Пароль не може бути порожнім"
msgid "Authentication dialog was dismissed by the user"
msgstr "Вікно авторизації відхилено користувачем"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "Помилка завантаження вікна параметрів для %s:"
#~ msgid "Extension"
#~ msgstr "Розширення"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l\\u2236%M\\u2009%p"
#~ msgid "Show Keyboard Layout"
#~ msgstr "Показати розкладку клавіатури"
#~ msgid "Settings Menu"
#~ msgstr "Меню параметрів"
#~ msgid "Screenshots"
#~ msgstr "Знімки"
@ -1742,12 +1789,6 @@ msgstr "Вікно авторизації відхилено користува
#~ "на даті, та буде використовувати це розширення. Слід змінити це, коли "
#~ "записуєте в різні формати контейнера. "
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "Помилка завантаження вікна параметрів для %s:"
#~ msgid "Extension"
#~ msgstr "Розширення"
#~ msgid "Session…"
#~ msgstr "Сеанс…"
@ -1757,14 +1798,6 @@ msgstr "Вікно авторизації відхилено користува
#~ msgid "Restart"
#~ msgstr "Перезапустити"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l\\u2236%M\\u2009%p"
#~ msgid "Screencast from %d %t"
#~ msgstr "Трансляція з екрана від %d %t"
@ -1800,9 +1833,6 @@ msgstr "Вікно авторизації відхилено користува
#~ msgid "Set Up a New Device…"
#~ msgstr "Налаштувати новий пристрій…"
#~ msgid "hardware disabled"
#~ msgstr "пристрій вимкнено"
#~ msgid "Connection"
#~ msgstr "З'єднання"
@ -1818,9 +1848,6 @@ msgstr "Вікно авторизації відхилено користува
#~ msgid "Sound Settings"
#~ msgstr "Параметри звуку"
#~ msgid "Show Keyboard Layout"
#~ msgstr "Показати розкладку клавіатури"
#~ msgid "Region & Language Settings"
#~ msgstr "Параметри регіону та мови"
@ -1842,9 +1869,6 @@ msgstr "Вікно авторизації відхилено користува
#~ msgid "Auto Ethernet"
#~ msgstr "Автоматично Ethernet"
#~ msgid "Mobile broadband"
#~ msgstr "Мобільна радіомережа"
#~ msgid "Auto broadband"
#~ msgstr "Автоматично радіомережа"
@ -1946,9 +1970,6 @@ msgstr "Вікно авторизації відхилено користува
#~ msgid "Idle"
#~ msgstr "Бездіяльний"
#~ msgid "Notifications"
#~ msgstr "Сповіщення"
#~ msgid "Your chat status will be set to busy"
#~ msgstr "Ваш стан балачки буде змінено на «зайнятий»"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -618,6 +618,7 @@ _shell_app_system_notify_app_state_changed (ShellAppSystem *self,
switch (state)
{
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL);
break;
case SHELL_APP_STATE_STARTING:
@ -759,9 +760,8 @@ shell_app_system_initial_search (ShellAppSystem *self,
* @terms: (element-type utf8): List of terms, logical AND
*
* Search through a previous result set; for more information, see
* js/ui/search.js. Note the value of @prefs must be
* the same as passed to shell_app_system_initial_search(). Note that returned
* strings are only valid until a return to the main loop.
* js/ui/search.js. Note that returned strings are only valid until
* a return to the main loop.
*
* Returns: (transfer container) (element-type ShellApp): List of application identifiers
*/

View File

@ -653,6 +653,7 @@ shell_app_activate_full (ShellApp *app,
case SHELL_APP_STATE_STARTING:
break;
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
shell_app_activate_window (app, NULL, timestamp);
break;
}
@ -960,10 +961,8 @@ application_properties_changed (GDBusConnection *connection,
{
ShellApp *app = user_data;
GVariant *changed_properties;
GVariantIter iter;
gboolean busy = FALSE;
const gchar *key, *interface_name_for_signal;
GVariant *value;
const gchar *interface_name_for_signal;
g_variant_get (parameters,
"(&s@a{sv}as)",
@ -974,19 +973,7 @@ application_properties_changed (GDBusConnection *connection,
if (g_strcmp0 (interface_name_for_signal, "org.gtk.Application") != 0)
return;
g_variant_iter_init (&iter, changed_properties);
while (g_variant_iter_next (&iter, "{&sv}", &key, &value))
{
if (g_strcmp0 (key, "Busy") != 0)
{
g_variant_unref (value);
continue;
}
busy = g_variant_get_boolean (value);
g_variant_unref (value);
break;
}
g_variant_lookup (changed_properties, "Busy", "b", &busy);
if (busy)
shell_app_state_transition (app, SHELL_APP_STATE_BUSY);

View File

@ -470,12 +470,12 @@ shell_global_class_init (ShellGlobalClass *klass)
G_PARAM_READABLE));
}
/**•
* _shell_global_init: (skip)
/*
* _shell_global_init: (skip)
* @first_property_name: the name of the first property
* @...: the value of the first property, followed optionally by more
* name/value pairs, followed by %NULL
*
*
* Initializes the shell global singleton with the construction-time
* properties.
*
@ -1779,6 +1779,8 @@ shell_global_set_runtime_state (ShellGlobal *global,
NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION,
NULL, NULL, NULL);
}
g_object_unref (path);
}
/**
@ -1790,7 +1792,7 @@ shell_global_set_runtime_state (ShellGlobal *global,
* The shell maintains "runtime" state which does not persist across
* logout or reboot.
*
* Returns: The value of a serialized property, or %NULL if none stored
* Returns: (transfer floating): The value of a serialized property, or %NULL if none stored
*/
GVariant *
shell_global_get_runtime_state (ShellGlobal *global,
@ -1817,10 +1819,13 @@ shell_global_get_runtime_state (ShellGlobal *global,
else
{
GBytes *bytes = g_mapped_file_get_bytes (mfile);
res = g_variant_new_from_bytes ((GVariantType*)property_type, bytes, TRUE);
res = g_variant_new_from_bytes (G_VARIANT_TYPE (property_type), bytes, TRUE);
g_bytes_unref (bytes);
g_mapped_file_unref (mfile);
}
g_object_unref (path);
g_free (pathstr);
return res;
}

View File

@ -11,6 +11,6 @@ gboolean shell_js_add_extension_importer (const char *target_object_script,
const char *directory,
GError **error);
G_BEGIN_DECLS
G_END_DECLS
#endif /* __SHELL_JS_H__ */

View File

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

View File

@ -259,6 +259,7 @@ st_adjustment_class_init (StAdjustmentClass *klass)
G_PARAM_CONSTRUCT));
/**
* StAdjustment::changed:
* @self: the #StAdjustment
*
* Emitted when any of the adjustment values have changed
*/

View File

@ -795,6 +795,8 @@ st_entry_class_init (StEntryClass *klass)
/* signals */
/**
* StEntry::primary-icon-clicked:
* @self: the #StEntry
*
*
* Emitted when the primary icon is clicked
*/
@ -807,6 +809,7 @@ st_entry_class_init (StEntryClass *klass)
G_TYPE_NONE, 0);
/**
* StEntry::secondary-icon-clicked:
* @self: the #StEntry
*
* Emitted when the secondary icon is clicked
*/

View File

@ -142,11 +142,13 @@ st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect)
st_adjustment_get_values (self->vadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
value = (value - lower) / (upper - page_size - lower);
clutter_shader_effect_set_uniform (shader, "fade_edges_v", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
clutter_shader_effect_set_uniform (shader, "fade_edges_top", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
clutter_shader_effect_set_uniform (shader, "fade_edges_bottom", G_TYPE_INT, 1, self->fade_edges ? value <= 1.0 : value < 1.0);
st_adjustment_get_values (self->hadjustment, &value, &lower, &upper, NULL, NULL, &page_size);
value = (value - lower) / (upper - page_size - lower);
clutter_shader_effect_set_uniform (shader, "fade_edges_h", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
clutter_shader_effect_set_uniform (shader, "fade_edges_left", G_TYPE_INT, 1, self->fade_edges ? value >= 0.0 : value > 0.0);
clutter_shader_effect_set_uniform (shader, "fade_edges_right", G_TYPE_INT, 1, self->fade_edges ? value <= 1.0 : value < 1.0);
clutter_shader_effect_set_uniform (shader, "vfade_offset", G_TYPE_FLOAT, 1, self->vfade_offset);
clutter_shader_effect_set_uniform (shader, "hfade_offset", G_TYPE_FLOAT, 1, self->hfade_offset);

View File

@ -22,8 +22,10 @@ uniform float height;
uniform float width;
uniform float vfade_offset;
uniform float hfade_offset;
uniform bool fade_edges_h;
uniform bool fade_edges_v;
uniform bool fade_edges_top;
uniform bool fade_edges_right;
uniform bool fade_edges_bottom;
uniform bool fade_edges_left;
uniform vec2 fade_area_topleft;
uniform vec2 fade_area_bottomright;
@ -44,10 +46,10 @@ void main ()
float ratio = 1.0;
float fade_bottom_start = fade_area_bottomright[1] - vfade_offset;
float fade_right_start = fade_area_bottomright[0] - hfade_offset;
bool fade_top = y < vfade_offset && fade_edges_v;
bool fade_bottom = y > fade_bottom_start && fade_edges_v;
bool fade_left = x < hfade_offset && fade_edges_h;
bool fade_right = x > fade_right_start && fade_edges_h;
bool fade_top = y < vfade_offset && fade_edges_top;
bool fade_bottom = y > fade_bottom_start && fade_edges_bottom;
bool fade_left = x < hfade_offset && fade_edges_left;
bool fade_right = x > fade_right_start && fade_edges_right;
float vfade_scale = height / vfade_offset;
if (fade_top) {