Compare commits

...

340 Commits

Author SHA1 Message Date
36eb51b594 Bump version to 3.4.2
Updated NEWS
2012-07-20 20:03:44 +02:00
04f03ee7d8 Assamese translation reviewed 2012-07-05 20:28:30 +05:30
d144f5d7df Assamese translation reviewed 2012-07-05 15:33:02 +05:30
aec4c6a388 Assamese translation reviewed 2012-07-04 21:52:41 +05:30
63f6800115 Assamese translation reviewed 2012-07-04 21:40:56 +05:30
f52c5fc4fe mount-operation: fix exceptions when showing password entry
This is a fallout from some changes in MessageTray.Source, which now
requires either defining the iconName/iconType properties on it, or
implementing createNotificationIcon, and we're not doing any of those.
Fix it by storing the gicon of the source object and using a helper
method to create the icon actor on demand, to avoid any case when the
same actor might be added twice to different containers.

https://bugzilla.gnome.org/show_bug.cgi?id=678428
2012-06-20 10:13:18 -04:00
717aedec5d popupMenu: do not overflow the currentItems
Do not overflow currentItems array. If the Menu section is filled
via model items-changed callback the position in the model passed to
the RemoteMenu _modelChanged can be a to be added asynchronously
action-added. Thus the item does not yet exists in the currentItems.

https://bugzilla.gnome.org/show_bug.cgi?id=676447
2012-06-18 10:05:18 +02:00
66fa24c340 popupMenu: bypass changeSignal callback if action is already handled
https://bugzilla.gnome.org/show_bug.cgi?id=676447
2012-06-18 10:05:18 +02:00
7e73a52505 telepathyClient: ignore invalidated channels
There is a race if a channel is invalidated during its preparation: the
'invalidated' signal is already emitted so the Shell will never notice.
We fix this by simply checking if the channel is already invalidated when
receiving it from telepathy-glib.

In the approving case, we reject the full ChannelDispatchOperation as we only
support approving one channel at the time.

https://bugzilla.gnome.org/show_bug.cgi?id=677457
2012-06-18 09:47:18 +02:00
42366ab025 telepathyClient: decline dispatch op when approving unsupported channel type
It shouldn't happen in theory but best to be safe than sorry.

https://bugzilla.gnome.org/show_bug.cgi?id=677457
2012-06-18 09:45:42 +02:00
69a63f208e notificationDaemon: Fix copy-paste typo
Since this line was introduced in 7458d3e, "Approve file transfer channels",
it's quite obvious that the line was meant to filter out transfer channel
notifications.

https://bugzilla.gnome.org/show_bug.cgi?id=676175
2012-06-06 16:28:00 +02:00
98c3f6b3bf add missing _shell_link_to_shell_js() declaration
Fix missing-prototypes warning.

https://bugzilla.gnome.org/show_bug.cgi?id=677441
2012-06-05 09:38:35 +02:00
406db1902c notificationDaemon.js: convert the hints dict at the beginning of the function
It's used right away to discard some Empathy notifications.

This regression has been introduced during the 3.4 cycle when 'hints' has been
turned to a GVariant.

https://bugzilla.gnome.org/show_bug.cgi?id=675370
2012-05-31 11:30:24 +02:00
37c7c04efb Updated Lithuanian translation 2012-05-26 23:13:38 +03:00
af0ec7e089 Updated Korean translation 2012-05-19 22:57:53 +09:00
ae28bf7c25 [l10n] Really update Indonesian translation 2012-05-19 16:31:47 +07:00
29c8add696 [l10n] Updated Indonesian translation 2012-05-19 16:20:51 +07:00
ecb9c881be Prevent the link to libgnome-shell-js.so from being removed
Add a dummy call to shell_js_add_extension_importer() to ensure that the
link to libgnome-shell-js.so is not removed when using -Wl,--as-needed,
which is the default on many distros.

https://bugzilla.gnome.org/show_bug.cgi?id=670477
2012-05-18 18:35:07 -04:00
4cf79088a5 Link the gnome-shell binary to libgnome-shell-js.so
Depending on the exact linker options and versions, rpath's written
into the binary may, or may not, be honored by dlopen(). Work around
this by simply linking the gnome-shell binary to gnome-shell-js, since
then dlopen() doesn't need to search paths.

https://bugzilla.gnome.org/show_bug.cgi?id=670477
2012-05-18 18:35:07 -04:00
05800773bc Updated Japanese translation. 2012-05-15 00:52:42 +09:00
2237f66c44 Updated Marathi Translations 2012-05-10 10:09:59 +05:30
2c51d42acf gdm: don't fail if fprintd unavailable
fingerprint support is optional so we shouldn't try to start
fprintd upfront and croak if it fails.

https://bugzilla.gnome.org/show_bug.cgi?id=675006
(cherry picked from commit e333263fd6)
2012-05-07 15:09:54 -04:00
49809d1e64 l10n: Updated Italian translation 2012-04-30 15:33:44 +02:00
2605e49591 Updated Brazilian Portuguese translation 2012-04-28 10:46:14 -03:00
40abd98840 data: Add Evolution calendar settings gschema to EXTRA_DIST
3d95e7bb11 forgot to add this
gschema file to dist
2012-04-26 08:46:04 +02:00
a64c84395f Mirror Evolution calendar settings into our own schema
Right now, we are hard-depending on the presence of Evolution by
using its settings schemas. This is likely to be unpopular, and
also causes instability if someone happens not to have Evolution
installed, so install a schema that has the same data path as
the Evolution schema, but a different name and install that
for the keys we need.

To avoid a string-freeze break, we rely on the translations in
Evolution - if Evolution isn't installed, the key descriptions
will be untranslated in dconf-editor.

https://bugzilla.gnome.org/show_bug.cgi?id=674424
2012-04-25 14:39:38 -04:00
39d2202521 Updated Korean translation 2012-04-26 01:06:12 +09:00
4edd77cd1f [l10n] Update Japanese translation
Fix a typo
2012-04-21 22:41:26 +09:00
bdfff20ec2 Bump version to 3.4.1
Updated NEWS
2012-04-17 13:20:16 -04:00
bdd05aba3b NEWS: fix language codes 2012-04-17 13:20:06 -04:00
89c2538ff1 Require Mutter 3.4.1
We now require Mutter 3.4.1 for the API change to
meta_display_add_keybinding(). (This is a run-time requirement, not
a build-time requirement, since the usage is from Javascript.)
2012-04-17 13:20:06 -04:00
7680819108 gnome-shell-calendar-server: add missing gtk.h include
6099a5dbc3 introduced this dependency
but didn't add it which lead to build failure with
-Werror=implicit-function-declaration
2012-04-17 08:15:06 +02:00
d79e8b84c9 telepathyClient: call this.updated() when a new message is added to a notification
When receiving another message or responding in a new expanded chat
notification that has no prior chat history, the notification moved down
below the edge of the screen instead of expanding up, making part of it
invisible. Avoid this by making sure the notification's position is updated.

https://bugzilla.gnome.org/show_bug.cgi?id=661944
2012-04-16 23:29:07 -04:00
731317230a windowManager: Adapt to mutter API change
https://bugzilla.gnome.org/show_bug.cgi?id=673014
2012-04-16 20:33:31 -04:00
5046938913 gnome-shell-calendar-server: deal with Evolution's move to GSettings
Evolution now stores its selected calendars and tasks in GSettings, not
in GConf. If we don't look at the new location, then we'll not pick up
newly added and enabled calendars, making the calendar effectively not
work for new installs.

https://bugzilla.gnome.org/show_bug.cgi?id=673610
2012-04-16 12:41:48 -04:00
0e8fd45559 gnome-shell-calender-server: fix debug prints
Several debug prints not normally compiled were referencing enumeration
values that have since been renamed.

https://bugzilla.gnome.org/show_bug.cgi?id=673610
2012-04-16 12:41:48 -04:00
6099a5dbc3 gnome-shell-calendar-server: Initialize GTK+
If evolution-data-server needs to prompt for a password, it will try
to pop up a GTK+ dialog. When GTK+ is not initialized, the result is
a crash. So, initialize GTK+ and run a main loop.

See https://bugzilla.redhat.com/show_bug.cgi?id=809681

The result is ugly since we have a Gnome-shell-calendar-server fallback
application, but I don't think it's worth installing a desktop file
and having a string break, since this is pretty uncommon (only for
manually added calendars without the password stored in gnome-keyring),
and apparently this is being rewritten for 3.5 to have the dialogs come
the e-d-s daemon rather than from the individual application.

https://bugzilla.gnome.org/show_bug.cgi?id=673608
2012-04-16 12:41:48 -04:00
2daa98a694 Update Czech translation 2012-04-16 15:34:20 +02:00
5d2c6496fa update Simplified Chinese (zh_CN) translation 2012-04-16 14:53:09 +08:00
817dbbe73f [l10n] Updated German translation 2012-04-15 17:57:21 +02:00
29c89c82f8 Updated Arabic translation 2012-04-14 19:54:56 +02:00
0b714bd479 Updated Latvian translation. 2012-04-13 22:39:52 +03:00
8c94a5afb9 main: don't use a BindConstraint for uiGroup
A BindConstraint on the size of uiGroup forces full redraws of the scene.
Instead, implement and use get_preferred_width and get_preferred_height.

https://bugzilla.gnome.org/show_bug.cgi?id=670636
2012-04-13 15:18:06 +02:00
aeb117c9d1 Updated British English translation 2012-04-13 13:21:03 +01:00
a2d4f133b7 a11y: Set a name for the keyboard status icon
https://bugzilla.gnome.org/show_bug.cgi?id=672719
2012-04-13 13:31:44 +02:00
b833aff3c8 baseIcon: Always recreate icon texture on style changes
Commit 26580f8f reintroduced an optimization on style changes to avoid
creating icons unconditionally. As this breaks icon theme changes (for
instance when toggling "High Contrast" in the universal access menu),
remove it again.

https://bugzilla.gnome.org/show_bug.cgi?id=672941
2012-04-13 11:12:24 +02:00
6601e4ddba Updated French translation 2012-04-11 14:00:30 +02:00
815da2d0ec Updated Norwegian bokmål translation 2012-04-11 12:50:37 +02:00
ddd35b3653 [l10n]Updated Catalan (Valencian) translation 2012-04-10 23:27:52 +02:00
8a32894c83 [l10n] Fixes on Catalan translation 2012-04-10 23:27:49 +02:00
49d8e6da40 format: move shell_format_int_alternative_output() to ShellJS
gnome-shell-extension-prefs uses format(), but can't pull in Shell
(which is a dependency for the module), since that in turn would pull in
Meta. Fix this by moving the introspected int format function to ShellJS
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=673106
2012-04-10 12:52:33 -04:00
8089f24c81 Updated Hebrew translation. 2012-04-09 22:48:34 +03:00
b6aab53d10 NetworkMenu: fix crash when NetworkManger restarts
nm_active_connection_get_devices() has a (questionable) special case
for the no devices case (which happens if the DBus object is
destroyed because NM went down): it returns null instead of an empty
array. Handle that instead of crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=673043
2012-04-09 20:33:50 +02:00
55a4517cd1 Fix documentation warnings
gobject-introspection now emits many more warnings for malformed
comments, and they fail the build.

https://bugzilla.gnome.org/show_bug.cgi?id=673656
2012-04-09 19:57:51 +02:00
b095319a16 extensionSystem: Make it a non-fatal error to re-load an extension
https://bugzilla.gnome.org/show_bug.cgi?id=673613
2012-04-09 14:02:31 -03:00
5ea5806730 extensionUtils: Load user extensions before system extensions
https://bugzilla.gnome.org/show_bug.cgi?id=673613
2012-04-09 14:02:31 -03:00
bfbf812148 gdm: Skip locked users
Don't show locked (disabled) users in the user list. Those are either
"system" users with a shell or users disabled in the control-center.

https://bugzilla.gnome.org/show_bug.cgi?id=673784
2012-04-09 19:01:20 +02:00
168e9eeac1 searchDisplay: Update the selection for async searches without results
This ensures that the initial selection is always set correctly. We
were missing the empty async search results case.

https://bugzilla.gnome.org/show_bug.cgi?id=673233
2012-04-06 14:09:40 +02:00
dd79c1a79a Updated Telugu Transltion 2012-04-06 09:11:54 +05:30
fe3402589b Updated Belarusian translation. 2012-04-05 15:36:46 +03:00
74dcaff21c Updated Lithuanian translation 2012-04-05 15:15:35 +03:00
0a7968a2e5 st-theme-context: Punt icon theme changes to an idle
Icon theme change signals aren't noticed immediately, they're usually
noticed when trying to load an icon. Since icon theme changes cause a
style change, and most icon widgets try to re-load their texture during
a style change, this means that we get a stack like this:

  st_texture_cache_load_icon
  gtk_icon_theme_lookup_icon
  gtk_icon_theme_changed
  st_widget_style_changed
  st_texture_cache_load_icon

Rather than making every place that uses StTextureCache re-entrant,
punt the notifying of icon theme changes to an idle handler instead.

https://bugzilla.gnome.org/show_bug.cgi?id=673512
2012-04-04 16:26:00 -04:00
00091a2acb st-theme-context: Make icon theme changes a bit more efficient
There's no need to destroy and recreate the root node for an icon theme
change. Just emit the CHANGED signal.

https://bugzilla.gnome.org/show_bug.cgi?id=673512
2012-04-04 16:26:00 -04:00
c5aa834b6a Updated Hungarian translation 2012-04-04 15:46:01 +02:00
b1bde46694 Updated French translation 2012-04-03 20:34:41 +02:00
49e4fa494e Updated Kannada Translation 2012-04-03 17:45:34 +05:30
4622c52b71 Updated Kannada Translation 2012-04-03 17:33:38 +05:30
e9ac5dd5f4 Updated Gujarati Translations 2012-04-03 11:25:14 +05:30
7570c43d11 Updated Kannada Translation 2012-04-02 18:29:42 +05:30
4332e7ec49 Updated Kannada Translation 2012-04-02 18:09:37 +05:30
9f26f1e225 Updated Telugu Translation 2012-04-02 16:38:36 +05:30
0c0319c415 Updated Marathi Translations 2012-04-02 11:46:21 +05:30
c16dbd7607 [l10n] Updated Catalan translation 2012-04-02 00:09:04 +02:00
7b1f10a5fe Updated Spanish translation 2012-04-01 19:37:22 +02:00
dce74749b7 Updated Bulgarian translation 2012-04-01 17:45:03 +03:00
1ba88b8c42 Fixed Russian translation 2012-04-01 14:01:39 +04:00
9c50b57d46 Fixed Russian translation 2012-04-01 14:00:14 +04:00
900bd3ee97 Updated Swedish translation 2012-04-01 09:07:33 +02:00
b4affe00a7 Updated Serbian translation 2012-03-31 11:03:43 +02:00
ca49c84bc1 Updated Polish translation 2012-03-31 04:10:41 +02:00
2cddf60226 Updated Galician translations 2012-03-31 00:08:44 +02:00
d9c3951f02 Updated Slovenian translation 2012-03-30 22:15:52 +02:00
aa5997d975 Updated Persian Translations 2012-03-31 02:13:34 +04:30
c51acf7c2a panel: Add keyboard shortcut to open app menu
With the application menu now being more than a stub, it has
become a much more interesting target, so add a keyboard shortcut
to open it directly.
This should also ease some of the pain for focus-follows-mouse users.

https://bugzilla.gnome.org/show_bug.cgi?id=672909
2012-03-30 19:58:43 +02:00
348044bc8a lookingGlass: Sort introspected property names
https://bugzilla.gnome.org/show_bug.cgi?id=673187
2012-03-30 11:57:45 -04:00
7dbdf2aa07 workspaceThumbnail: set correct cursor when hovering the drop placeholder
Namely, use the the 'copy' cursor for app launchers and the 'move'
cursor for windows.

https://bugzilla.gnome.org/show_bug.cgi?id=672641
2012-03-30 17:44:39 +02:00
c933731ead doap: Add myself as maintainer 2012-03-30 14:39:02 +02:00
e7da715994 svg: Make the OFF toggle widgets be the same width as the ON ones
Since the toggle switches have a 65px size in the CSS file, the
background image size should match it or it will be scaled and look
fuzzy.

https://bugzilla.gnome.org/show_bug.cgi?id=672592
2012-03-30 13:36:23 +02:00
6d82aefad4 format: support %Id conversion characters in format.js
This is needed for languages which translate numbers with an
alternative representation, such as Persian.

https://bugzilla.gnome.org/show_bug.cgi?id=673106
2012-03-29 17:30:02 -04:00
8a11ab7d96 Updated Norwegian bokmål translation 2012-03-29 09:52:55 +02:00
f465086405 Updated Swedish translation 2012-03-29 08:14:20 +02:00
70313a8b79 Updated Hungarian translation 2012-03-29 03:13:16 +02:00
71679c38be [l10n]Updated Catalan (Valencian) translation 2012-03-27 22:34:41 +02:00
addd943074 Typo 2012-03-27 21:32:11 +02:00
0b8470421c Bump version to 3.4.0
Update NEWS
2012-03-26 14:08:33 -04:00
bcf7c0f006 Updated Korean translation 2012-03-27 01:37:10 +09:00
2b87bb015c screenshot: Ensure that ShellScreenshot stays alive until the callback
We've been dangling on the edge of unsafety, unnoticed, for a little while
about the reference count safety of ShellScreenshot. GJS owns the entire
reference count, so as soon as it goes out of scope it could die, causing
GJS to try and fetch the corresponding wrapper object for a stale pointer.
We haven't seen any crashes because of luck -- SpiderMonkey tries to group
together deallocations to limit GC pauses, and there isn't really a lot
of GC pressure in the duration that a screenshot happens, so we tend to
be mostly stable. But in the case that you create a lot of objects while
a screenshot is going on, by hammering the "Print Screen" button, for
example, you can destroy the GObject before the callback finishes.

https://bugzilla.gnome.org/show_bug.cgi?id=672775
2012-03-26 12:54:07 -03:00
07e10fa03e screenshot: Remove harmful empty finalizer
We really should be chaining up in the finalizer, but instead of leaving
an empty finalize, remove it entirely.

https://bugzilla.gnome.org/show_bug.cgi?id=672775
2012-03-26 12:54:07 -03:00
bf992989c7 checkBox: Work around a height-for-width problem
StBoxLayout currently does not handle height-for-width children
correctly under some circumstances. As a work-around, hard-code
a label height of two lines of text, which should work for most
locales in the one place the widget is currently used.

https://bugzilla.gnome.org/show_bug.cgi?id=672543
2012-03-26 14:43:54 +02:00
00400e354d Updated Russian translation 2012-03-25 21:29:58 +04:00
19a49d34ce Updated Latvian translation. 2012-03-25 15:47:50 +03:00
e8badac282 [l10n] Update Japanese translation 2012-03-25 11:09:07 +09:00
282a60fcab Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-03-25 08:19:10 +08:00
e76a28ded5 Updated Belarusian translation. 2012-03-24 20:44:21 +03:00
b22543ab66 Updated Hebrew translation. 2012-03-24 19:10:14 +02:00
d5165cdc08 Uploaded Ukranian 2012-03-24 09:53:40 +02:00
1c0549f468 Review Arabic translation 2012-03-24 04:31:19 +02:00
a7316b0594 Updated Arabic translation
Based on translation by Muhammed Abd-ulaziz Abd-ullah.
2012-03-23 18:03:28 +01:00
634eeaf74c Updated Galician translations
Signed-off-by: Fran Diéguez <fran.dieguez@mabishu.com>
2012-03-22 21:29:18 +01:00
1299e196be Updated Danish translation 2012-03-22 15:47:55 +01:00
92c325230d Updated Czech translation 2012-03-22 11:28:58 +01:00
827a466a5c Updated Hungarian translation 2012-03-22 08:23:52 +01:00
89b38b1361 Updated Vietnamese translation 2012-03-22 10:42:41 +07:00
140de6dd60 po/vi: import from Damned Lies 2012-03-22 10:42:24 +07:00
e64ff5832e Updated Brazilian Portuguese translation 2012-03-21 21:00:18 -03:00
17b1543d44 Updated Russian translation 2012-03-21 22:21:03 +04:00
043e79a570 [l10n] Updated Estonian translation 2012-03-21 19:42:00 +02:00
5d036e3d54 Updated Finnish translation by Jiri Grönroos. 2012-03-21 18:15:51 +02:00
9d2a638988 Updated Bulgarian translation 2012-03-21 06:49:51 +02:00
7943993fcb Updated French translation 2012-03-20 22:46:42 +01:00
026ddc2d9b Bump version to 3.3.92
Updated NEWS
Require Mutter 3.3.92
Require Clutter 1.9.16
2012-03-20 17:08:43 -04:00
384c7e2c17 viewSelector: Allow to start navigating results using arrow keys
We currently require users to tab away from the search entry before
search results can be navigated using arrow keys. For convenience,
support using arrow keys directly from the entry.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-20 18:22:26 +01:00
700f706428 Update Simplified Chinese translation. 2012-03-20 17:20:25 +00:00
0a4deb2a9b Translations Updated with FUEL 2012-03-20 21:04:38 +05:30
5b8abe6809 st-button: treat keypad Enter keypresses like normal Enter events
Not doing this makes some widgets inconsistent, such as the user list in
the GDM login dialog.

https://bugzilla.gnome.org/show_bug.cgi?id=672471
2012-03-20 10:13:56 -04:00
2c5005c1ea Updated Galician translations 2012-03-20 13:58:10 +01:00
c2b3022163 update Punjabi Translation 2012-03-20 18:25:57 +05:30
644abb2dc9 Updated Lithuanian translation 2012-03-20 14:13:41 +02:00
48b53c30f7 Updated Portuguese translation 2012-03-20 09:22:38 +00:00
bf3818eb22 Updated Serbian translation 2012-03-20 09:54:32 +01:00
b3358aeed7 dnd: Improve special-handling of St.Button
To avoid messing up St.Buttons' internal state with a pointer grab,
we wait for the pointer to leave the actor before starting the
drag operation manually. This works generally fine, but makes starting
a drag operation harder than necessary. To fix, enforce a reasonable
button state when starting the drag, rather than special-casing buttons
before the drag.

https://bugzilla.gnome.org/show_bug.cgi?id=637103
2012-03-20 02:41:50 +01:00
a7d4c7d8de st: Add rudimentary support for CLUTTER_SCROLL_SMOOTH events
Currently compilation fails with -Werror, as we don't handle the
(newly introduced) smooth scroll events in switch statements; add
some basic support, which should make the compiler happy.

https://bugzilla.gnome.org/show_bug.cgi?id=672413
2012-03-20 00:40:09 +01:00
369c1b0a41 workspaceThumbnail: move event handling to ThumbnailsBox
Currently, click and drop events are handled by each WorkspaceThumbnail
instance. With the introduction of the workspace cut and the request
to extend the reactive area of the workspace selector to the edge
of the monitor, it becomes more convenient to do all the event handling
inside ThumbnailsBox, even if this requires some manual layout computation.

https://bugzilla.gnome.org/show_bug.cgi?id=643319
2012-03-19 23:22:00 +01:00
21636f3f29 [l10n]Updated Catalan translation 2012-03-19 22:36:52 +01:00
bf428312d7 networkAgent: Fix external-ui dialogs
Two small fixes which made _showNewStyleDialog() err out:
 - g_key_file_load_from_data() expects a string as first
   argument, but g_buffered_input_stream_peek_buffer()
   returns an array of "data"
 - g_key_file_load_from_data() is documented to allow -1 as
   length parameter for \0-terminated strings, but the actual
   type of the parameter is unsigned (d'uh)

https://bugzilla.gnome.org/show_bug.cgi?id=671556
2012-03-19 20:40:40 +01:00
6218209dcb Updated Spanish translation 2012-03-19 19:54:30 +01:00
1b7ead3455 Updated Polish translation 2012-03-19 18:59:46 +01:00
3a252a1b41 Updated Telugu Translation 2012-03-19 20:58:16 +05:30
fc7e6470b5 Assamese translation updated 2012-03-19 20:18:12 +05:30
3813a03117 st-texture-cache: Ensure we return a ClutterTexture, not a plain Actor
Calling code expects to get a ClutterTexture instance, not a
ClutterActor.
2012-03-19 15:35:01 +01:00
e59c29993c Updated Slovenian translation 2012-03-19 15:21:27 +01:00
92d2ebc3f9 a11y: Set an accessible-name to the overview
https://bugzilla.gnome.org/show_bug.cgi?id=671378
2012-03-19 15:07:29 +01:00
67ef448471 a11y: add a property accessible-name on StWidget
https://bugzilla.gnome.org/show_bug.cgi?id=671378
2012-03-19 15:07:26 +01:00
207abe9a2c tweener: make timeline loop indefinitely
Tweener uses a clutter timeline to manage all active animations
running at a given moment.  The timeline is mopped up when no
animations are going any more.

Clutter requires timelines to have a finite duration, but since
animations can happen at any moment, no fixed duration can
accomodate the shell's needs.

To combat this problem, the tweener code picks a relatively
long duration: 1000 seconds. No string of animations should take
that long, so, in theory, that should be good enough.

Unfortunately, this tactic fails, in practice, when the user
suspends their machine, or VT switches.  An animation can take
much longer than 1000 seconds (~16 minutes) to complete in those
cases.  When the user resumes, or VT switches back the timeline
completes immediately (since it's already late) and tweener
never notices that the timeline stops ticking.

This commit changes the tweener timeline to automatically loop
back to 0 after completing, so that despite its fixed duration
property, it effectively never stops. Since the timeline loops,
its concept of elapsed time no longer increases monotonically,
so we now ignore it and track time ourselves with
GLib.get_monotonic_time().

This partially reverts commit
35764fa09e.

https://bugzilla.gnome.org/show_bug.cgi?id=653833
2012-03-18 22:54:51 -04:00
05863227a6 Updated Galician translations 2012-03-19 00:19:08 +01:00
ac05cb323c Updated Galician translations 2012-03-19 00:03:32 +01:00
066d44636a altTab: take into account all windows when computing app icon ordering
https://bugzilla.gnome.org/show_bug.cgi?id=667552
2012-03-18 14:52:29 +01:00
3dbf06420d st-theme-node-drawing: Fix implementation of cover and contain
The math was incorrect for non-square containers

https://bugzilla.gnome.org/show_bug.cgi?id=672321
2012-03-18 09:33:30 -04:00
1983097d3a tests: Refactor background-size test to support non-square containers
https://bugzilla.gnome.org/show_bug.cgi?id=672321
2012-03-18 09:33:30 -04:00
1c60aa58ae tests: Add a cogl rendering option to the background-size test
Right now we only test the cairo rendering path

https://bugzilla.gnome.org/show_bug.cgi?id=672321
2012-03-18 09:33:30 -04:00
1626d9f9a4 tests: Fix font color for tests
Since the GNOME Shell style cleanup, all text is white. Fix that
in the test cases.

https://bugzilla.gnome.org/show_bug.cgi?id=672321
2012-03-18 09:33:29 -04:00
c7182589d2 gdm: Only create the Manager we're going to use
Otherwise gnome-shell crashes when systemd is installed but not in use,
because bus activation of logind fails.

https://bugzilla.gnome.org/show_bug.cgi?id=672240
2012-03-18 11:57:34 +01:00
ceb17dc713 gnome-shell-extension-tool: Fix example extension for 3.3.90 API
insert_actor was replaced with the standard Clutter insert_child_at_index

https://bugzilla.gnome.org/show_bug.cgi?id=672326
2012-03-18 06:42:04 -04:00
46c0360b03 st-texture-cache: Deduplicate async URI requests
More than one outstanding request to the same URI should now be
deduplicated, and the framework is there if we want to cache async loaded
URIs as well

https://bugzilla.gnome.org/show_bug.cgi?id=672273
2012-03-18 06:42:04 -04:00
0ebddfcf50 st-texture-cache: Remove now unused methods
load_uri_sync and load_file_simple are now unused.

https://bugzilla.gnome.org/show_bug.cgi?id=672273
2012-03-18 06:42:04 -04:00
36d20eb1b8 st-entry: Remove unused set_icon_from_file methods
This lets us ditch some methods in the texture cache.

https://bugzilla.gnome.org/show_bug.cgi?id=672273
2012-03-18 06:42:03 -04:00
db4b266874 st-texture-cache: Remove unused fields from AsyncTextureLoadData
https://bugzilla.gnome.org/show_bug.cgi?id=672273
2012-03-18 06:42:03 -04:00
63cf470e07 st-texture-cache: Remove an unused argument from create_default_texture
https://bugzilla.gnome.org/show_bug.cgi?id=672273
2012-03-18 06:42:03 -04:00
1f87eb4157 Environment: don't fail in toString()
Some objects have a resolve hooks that throw exceptions, so just
checking "'actor' in object" can fail. In that case we should catch
the exception and return the standard toString() value, or the
object cannot be inspected from the looking glass.

https://bugzilla.gnome.org/show_bug.cgi?id=671410
2012-03-18 02:35:53 +01:00
9bb9999b46 Don't set the autorestart hint for gnome-session
If the autorestart hint is set, the process is forcefully killed and
restarted everytime it disconnects from XSMP, which break replacing the wm
and breaks alt-f2 r. If instead the hint is not set, the process
is monitored via SIGCHLD and only restarted when it dies by a signal.

https://bugzilla.gnome.org/show_bug.cgi?id=648384
2012-03-18 02:35:14 +01:00
60e6349963 [l10n] Updated German translation 2012-03-18 02:12:30 +01:00
581d1c5db1 shell-app: Evict faded app icons on icon theme change
When a user changes icon themes, we don't want to waste precious memory
with modified textures from the old icon theme.

https://bugzilla.gnome.org/show_bug.cgi?id=672275
2012-03-17 20:39:43 -04:00
cf0b6dda25 userMenu: Consider account-validity for sensitivity
We currently only update the status chooser's sensitivity if accounts
are added, removed or enabled; unfortunately during account creation,
the account may become enabled before it is actually valid, so the
status chooser remains insensitive. Fix by listening to validity changes
as well.

https://bugzilla.gnome.org/show_bug.cgi?id=672265
2012-03-17 17:42:40 +01:00
8a5faa3d2e endSessionDialog: Use lookup_heuristic_basename for vendor prefix lookup
Instead of duplicating the vendor prefix search in the endSessionDialog code,
just use lookup_heuristic_basename, which is used with real app tracking.

https://bugzilla.gnome.org/show_bug.cgi?id=672270
2012-03-17 10:45:56 -04:00
09607787cc endSessionDialog: Fix inhibitor list
gnome-session moved away from using properties over DBus in 2008, which
means that the code in GNOME 3.0 never should have worked -- but it did,
which makes me suspect that it was a quirk of the GJS DBus implementation.

Switch over to the proper inhibitor API, which is based on methods. If
gnome-session eventually gets ported to GDBus, then we can switch back
to properties.

https://bugzilla.gnome.org/show_bug.cgi?id=672270
2012-03-17 10:45:56 -04:00
0aad74a670 st-texture-cache: Don't implicitly return a fallback icon
In the case that we don't have an icon corresponding to the gicon, it's
more than likely that the code calling load_gicon will know more about
what it wants as a fallback than the texture-cache itself. In fact -
we had a whole lot of dead code that would try to fall back, but never
did because we always returned a valid actor.

This was causing certain applications with invalid icons to not get the
fallback icon because an icon couldn't be found. Fix up the one place
where we don't have an explicit fallback icon codepath, and then stop
doing what we were doing.

https://bugzilla.gnome.org/show_bug.cgi?id=671656
2012-03-17 01:47:38 -04:00
985f28bbea AppMenuButton: Check input mode only on application focus changes
Bailing out of _sync() early if the application lost keyboard focus to
the shell can only be done on actual application focus changes. In
particular, doing this check on a switch to an empty workspace while
the keyboard focus is already on the shell prevents the AppMenuButton
from being hidden as it should.

https://bugzilla.gnome.org/show_bug.cgi?id=672011
2012-03-17 01:11:44 +01:00
22e1abbaff AppMenuButton: Don't set the actor reactive if it's not really visible
Reactive means that the actor is reachable from keyboard
navigation. If the target isn't current that means we are not tweening
the actor to be visible so we shouldn't set it reactive either.

https://bugzilla.gnome.org/show_bug.cgi?id=671998
2012-03-17 01:10:40 +01:00
21e8097b9c st-texture-cache: Remove unused St.IconType.APPLICATION/DOCUMENT
No reason to have special handling for fallbacks that we can do (and do do)
in the JS.

https://bugzilla.gnome.org/show_bug.cgi?id=671656
2012-03-16 18:32:57 -04:00
14d267c246 st-widget: Remove some potentially dangerous but dead code
We really shouldn't be dereferencing these pointers before checking
that they're the thing they really are.
2012-03-16 17:31:20 -04:00
9420174477 st-scroll-view: Remove some dead code
This assignment was shadowed by the giant switch above. Since the
switch has a comment or two explaining the logic inside of it,
keep that instead of the assignment.
2012-03-16 17:31:20 -04:00
fb4878bb7c st-widget: Correct annotations for navigate_focus vfunc
Since the invoker for navigate_focus has an extra parameter, annotations
from the invoker aren't applied on the vfunc itself. Fix that by annotating
the vfunc separately.
2012-03-16 17:31:20 -04:00
c856cbb523 Revert "configure: Turn off -Werror by default"
This reverts commit ea061b0f46.
2012-03-16 17:30:35 -04:00
2e42eb6bad Updated Czech translation 2012-03-16 21:58:21 +01:00
4f87e86603 overview: Don't show workspaces when entering the overview
If the user has their mouse over the workspace thumbnails while
entering the overview, it's more likely that it's a coincidence
that their mouse pointer is in the area. Avoid expanding the
thumbnails box in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=651092
2012-03-16 17:19:48 +01:00
3c6737f738 autoWorkspaces: fix creation of new workspaces with application launchers
In the workspace-collecting code we add a check to avoid collecting a
workspace if any startup sequence is running there. Since the sequence
can take some time to load, an helper function is also added which keeps
the (empty) workspace around for a very short time, while waiting for the
sequence to start.

https://bugzilla.gnome.org/show_bug.cgi?id=664202
2012-03-16 16:41:30 +01:00
b2bc73c3fe Malayalam translations updated by Sadiq and me 2012-03-16 18:20:26 +05:30
30ca25e978 messageTray: show the summary with new notifications when the user becomes active
If the user was inactive while a notification was shown, we show the summary
when the user becomes active again. This ensures that we inform the user of
the existance of new notifications that the user might have missed.

When the user comes back from away, the summary is now only shown if it has
new notifications.

https://bugzilla.gnome.org/show_bug.cgi?id=643014
2012-03-16 01:01:57 -04:00
ecdd0875df browser-plugin: Make sure to initialize GType
While most browsers use GTK+ on GNOME in some fashion, Opera and
Konqueror do not. We need to explicitly initialize GType before
the browser plugin works properly.
2012-03-15 18:02:24 -04:00
d05d748fe2 a11y: Setting label_actor and role for Contacts on the overview
https://bugzilla.gnome.org/show_bug.cgi?id=672047
2012-03-15 20:35:11 +01:00
8db193a172 a11y: Setting proper label_actor of dash elements
https://bugzilla.gnome.org/show_bug.cgi?id=644255
2012-03-15 20:23:47 +01:00
c064973c9d a11y: Make DashItemContainer._label public
https://bugzilla.gnome.org/show_bug.cgi?id=644255
2012-03-15 20:22:18 +01:00
01c66eaf0c a11y: set CHECKED state on Activities button 2012-03-15 20:04:50 +01:00
c2fdec188e a11y: adding checked state on the popup menu items
https://bugzilla.gnome.org/show_bug.cgi?id=668366
2012-03-15 20:04:28 +01:00
d7e2b0a771 a11y: added EXPANDABLE and EXPANDED state on Alt+Tab popup menu
https://bugzilla.gnome.org/show_bug.cgi?id=670719
2012-03-15 19:57:32 +01:00
06354a8c9a a11y: userMenu: support for IMStatus combobox and
suspend/power-off label

https://bugzilla.gnome.org/show_bug.cgi?id=671404
2012-03-15 19:04:54 +01:00
7c25dead17 a11y: Setting role on several panel ui elements
https://bugzilla.gnome.org/show_bug.cgi?id=667432
2012-03-15 18:58:44 +01:00
f4d3153e91 Fixed Russian translation 2012-03-15 13:04:38 +04:00
7030d59b2f Updated Gujarati Translations 2012-03-15 14:12:14 +05:30
6eae036ac3 Updated Telugu Translations 2012-03-15 12:46:24 +05:30
b6b6ed0e2f update Punjabi Translation 2012-03-15 07:10:06 +05:30
51b5825665 Updated Latvian translation. 2012-03-14 23:45:12 +02:00
1c2629595e keyboard: Enforce LTR layout for keyboard layout
The onscreen keyboard should not follow the locale's text direction,
but order keys according to the selected keyboard layout. Effectively
this means enforcing LTR on the keyboard actor.

https://bugzilla.gnome.org/show_bug.cgi?id=672024
2012-03-14 20:37:42 +01:00
e91f4e88b5 a11y: Setting LIST_ITEM role for Categories items on Applications view 2012-03-14 12:36:33 +01:00
bdb7dbdd00 a11y: exposing StButton:label as StButton accessible name 2012-03-14 12:36:29 +01:00
7092521253 Updated Danish translation 2012-03-14 10:36:10 +01:00
47f7fcd4fe dash: Fix placeholder jumps while dragging a dash item
We are currently taking "old" placeholders that are still animating
out into account to calculate the new placeholder position - this
causes an annoying bug, where dragging a dash item downwards triggers
quick continous position changes of the placeholder.
Just ignoring old placeholders fixes the issue.

https://bugzilla.gnome.org/show_bug.cgi?id=651842
2012-03-13 23:47:06 +01:00
93a004b016 main: Ignore some modifiers when matching events to keybindings
Some modifiers like NumLock or ScrollLock don't make sense in
keybindings, which is why we ignore them in mutter when matching
events to keybindings; for keybindings in the overview, we do
the matching ourselves, so filter the same modifiers as mutter.

https://bugzilla.gnome.org/show_bug.cgi?id=665215
2012-03-13 19:26:38 +01:00
2fad9d73d4 remoteSearch: fix scope of a variable
'title' is used in the catch() block.
2012-03-13 19:24:02 +01:00
252eb24522 Updated Brazilian Portuguese translation 2012-03-13 11:57:44 -03:00
b7964e9efb Updated British English translation 2012-03-13 14:07:05 +00:00
23e7a9e710 Updated Catalan translation 2012-03-13 00:25:01 +01:00
36804a60c9 boxpointer: Prevent spurious input events while animating
The hide animation causes hover notifications for the actors inside the
boxpointer. PopupBaseMenuItems, in particular, grab the keyboard focus on
hover notifications to enable keyboard navigation on menus. This, in turn,
breaks modal dialogs' keyboard navigation since key focus is taken away from a
just created dialog when the menu is hiding.

Since input events aren't useful while menus are animating we just prevent
them from propagating.

https://bugzilla.gnome.org/show_bug.cgi?id=662493
2012-03-12 20:58:53 +01:00
73270345f5 Updated Norwegian bokmål translation 2012-03-12 18:59:56 +01:00
e1ffe06709 Assamese translation completed 2012-03-12 19:31:34 +05:30
3dd240bdbb Finnish translation update from http://l10n.laxstrom.name/wiki/Gnome_3.4 translation sprint 2012-03-12 11:08:07 +02:00
b58425d7d7 modalDialog: Fix setting the initial key focus after the 1st time
Checking if _buttonLayout contains _initialKeyFocus always fails since we
destroy all children before. Instead, use a signal handler id when explicitly
setting the initial key focus which is zeroed if/when the actor is destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=663437
2012-03-12 00:52:34 +01:00
a197ce6f53 main: Add (hidden) support for static workspaces
The dynamic-workspaces key was introduced to allow us to opt out of
writing the num-workspaces setting (which is ignored with the dynamic
workspace management anyway), but there'll be some expectations that
the setting will have an effect on the UI.
It's actually not very hard to support, so here's to the graybeards ...

https://bugzilla.gnome.org/show_bug.cgi?id=671568
2012-03-11 23:03:44 +01:00
9dcdaf05b5 main: Add override for dynamic-workspaces key
https://bugzilla.gnome.org/show_bug.cgi?id=671568
2012-03-11 23:03:43 +01:00
c827cccdf3 Updated Russian translation 2012-03-11 21:00:13 +04:00
6805f2d71e Malayalam translation updated by Sadiq 2012-03-11 12:26:51 +05:30
0ea690a2f2 calendar-server: use g_warning instead of g_printerr
This way error messages include the process name and PID, so they're
picked up by bug reporting tools that grep ~/.xsession-errors.

https://bugzilla.gnome.org/show_bug.cgi?id=671177
2012-03-10 17:33:05 +01:00
d68ff69c7a calendar-server: update to ECalClient
ECal is deprecated and replaced by ECalClient. This has the
advantage of using e_utils to handle authentication, and should
fix NotOpened errors (that affect in particular webcal calendars
prior to evolution running)

https://bugzilla.gnome.org/show_bug.cgi?id=671177
2012-03-10 17:33:05 +01:00
f1f2bc28a2 Malayalam translation by Anish A 2012-03-10 21:18:09 +05:30
5f0389c07c viewSelector: Tie cursor visibility to :focus style
With the recent keynav changes, the keyboard focus can now move
away from the search entry while a search is active. While we
keep the focus entry style while a search is active, we set the
cursor visibility depending on whether the entry has focus. This
doesn't seem very logical, so always request to show the cursor
when we appear focused.
Note that at least for now we are just expressing intent, as clutter
never draws the cursor for unfocused entries.
2012-03-10 16:26:23 +01:00
c2f304f3bc searchDisplay: Check the provider container for visibility
It's the provider container that might be !visible, not the individual
results.
2012-03-10 16:20:47 +01:00
ce9c1a1f7a css: Make focus style for contacts/overview-icons look like selected
https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
203382e007 viewSelector: While on search results keep the entry styled as focused
This hints the user that even though keynav focus is on the search
results, if there's character input it will update the search string.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
d2ba9eb967 viewSelector: Make the search canceling behavior consistent
When canceling a search pressing Escape while the focus is on the
search entry we clear the entry, set its text to the hint and go back
to the previously selected tab. Make this the behavior also for when
the focus is on search results and not on the entry itself.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
59ebec25f3 search: remove selection mechanism
Now that we are using standard St keyboard navigation we don't need
this specific keynav and selection mechanism for search results.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
b864b03a65 searchDisplay, viewSelector: add default result activation
Adds a way to highlight and activate the first search result when
pressing enter on the search entry.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
c7a37660ce searchDisplay, viewSelector: use St keynav in Applications and Search
https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
02aae631d8 st-widget: Allow diagonal moves for directional keynav
This allows us to do directional keyboard navigation when there's no
actor inside the horizontal or vertical strip extending from the
origin actor but there are other actors to the sides of that strip
that could still be used as targets even if that means the focus would
move diagonally.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
d542f63d3f st-widget: Use absolute coordinates for arrow keys focus navigation
For arrow keys navigation, when moving from a widget which isn't a
descendant of the widget we are going to, it's unexpected that focus
moves to the target's first descendant instead of the closest to the
source widget.

This requires us to use absolute coordinates to compare widgets since
we no longer have the guarantee that the widgets we are comparing are
siblings.

https://bugzilla.gnome.org/show_bug.cgi?id=663901
2012-03-10 15:00:18 +01:00
74694a6e23 Updated Korean translation 2012-03-10 15:54:33 +09:00
a5baeac428 a11y: Setting role and label-actor for runDialog
https://bugzilla.gnome.org/show_bug.cgi?id=670308
2012-03-10 02:27:19 +01:00
e23e04953c a11y: Added a accessible object for StEntry
Exposes internal ClutterText as a child

https://bugzilla.gnome.org/show_bug.cgi?id=670308
2012-03-10 02:24:39 +01:00
fa9f923697 a11y: Proper role for notifications 2012-03-10 02:12:20 +01:00
797e201946 a11y: Add a way to add accessible states to StWidget
https://bugzilla.gnome.org/show_bug.cgi?id=668366
2012-03-10 01:41:17 +01:00
156a642d28 a11y: Add a wrapper method to set the accessible role
https://bugzilla.gnome.org/show_bug.cgi?id=667432
2012-03-10 01:27:23 +01:00
96379b7517 Updated Esperanto translation 2012-03-09 22:05:49 +01:00
9b5bb62aa7 css: Symbolic icons size must actually be specified relative to font size
Commit a277f8e0e1 prevents icons from being
scaled when the global desktop resolution changes which is wrong since
symbolic icons are supposed to be treated like text.

Instead of specifying their size in pixels, go back to em but with a value
adjusted to the new font size that actually yields unscaled symbolic icons for
the default resolution.

https://bugzilla.gnome.org/show_bug.cgi?id=671657
2012-03-09 12:51:40 +01:00
895745ac14 Don't depend on removed MetaPlugin APIs
Several MetaPlugin APIs that were just wrappers around other functions
were removed - switch to using the other functions directly.

https://bugzilla.gnome.org/show_bug.cgi?id=671103
2012-03-08 16:59:31 -05:00
6cde2d8db4 theme - make the modal dialogs match the mockups
Adjust the padding to get the correct subject alignment and add
more whitespace. Change the weight of the button labels.

https://bugzilla.gnome.org/show_bug.cgi?id=670227
2012-03-08 19:35:28 +01:00
a277f8e0e1 css: Specify icon-size in px everywhere
Since scaled icons generally look bad we shouldn't tie their size to the font
size. In particular a recent change in the panel's font size caused status
icons to be scaled and thus look fuzzy.
2012-03-08 14:21:29 +01:00
cf5c5d06e1 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-03-08 16:24:56 +08:00
722f45fa58 Updated Hungarian translation 2012-03-07 11:11:13 +01:00
c97390b9c6 Updated Bulgarian translation 2012-03-07 06:52:50 +02:00
124c461a56 [l10n] Update Japanese translation 2012-03-07 10:51:18 +09:00
4ac352637c dash: Don't allow to remove running apps from favorites
Running apps are always kept in the dash, so removing them from
favorites just moves them to the end of the favorites list. This
behavior is not immediately obvious, so only show the remove target
when dragging a favorites application that is not currently running.

https://bugzilla.gnome.org/show_bug.cgi?id=644853
2012-03-06 15:14:22 +01:00
00cf62acfb update Simplified Chinese (zh_CN) translation 2012-03-06 18:18:02 +08:00
ee0c2a1152 wanda: fix the location of gnome-panel animations
Recent gnome-panel moved the fish keyfile and animations. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=671411
2012-03-05 22:33:07 +01:00
f32ab20267 bluetooth: Fix connectedMenuItem variable case.
This fixes a regression introduced in d856338f86.
2012-03-05 22:05:12 +01:00
1316f93b21 Updated French translation 2012-03-05 20:37:02 +01:00
52d72fe8a1 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-03-05 21:13:31 +08:00
0406aaa591 Updated Basque language 2012-03-05 12:37:45 +01:00
8f56660cfc Updated Dutch translation 2012-03-04 22:03:46 +01:00
402cc6b90c Updated Galician translations 2012-03-04 19:40:58 +01:00
b8c14ad64e Updated Persian Translations 2012-03-04 20:02:13 +03:30
1f9c83d88b userMenu: Fix LockRemote call
Commit 37cbfe29 replace the SetActiveRemote with a LockRemote call but didn't
change the paramters, so remove the incorrect boolean parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=670820
2012-03-03 21:40:40 +01:00
319667a25c Updated Polish translation 2012-03-03 21:36:03 +01:00
b047a37a80 dash: Don't favorite items dropped at their original position
Remove the drag placeholder when the dragged item is outside
the favorites. Dash items can be favorite only if the drag
placeholder exists.

https://bugzilla.gnome.org/show_bug.cgi?id=656333
2012-03-03 17:42:01 +01:00
31af220483 Updated Vietnamese translation 2012-03-03 22:59:45 +07:00
40d51ea59f po/vi: import from Damned Lies 2012-03-03 22:52:34 +07:00
284cf83935 Uploaded Ukranian 2012-03-03 15:48:05 +02:00
5ba04a7478 Uploaded Ukranian 2012-03-03 15:48:05 +02:00
2b87051022 userMenu: Only save session status when necessary
Saving the status to GSettings is pointless if it did not actually
change. If done during login, it is actually harmful, as it causes
dconf-service to be started.

https://bugzilla.gnome.org/show_bug.cgi?id=668214
2012-03-03 11:13:58 +01:00
a901f2dc5d userMenu: Do not save/restore IDLE session status
When restoring the previous sesssion presence, we forcefully set
gnome-session's status. In the case of IDLE, this will trigger the
screensaver, which is clearly unwanted first thing after login. We
should only save and restore statuses that are explicitly set by the
user anyway, so limit presence saving to AVAILABLE and BUSY statuses.

https://bugzilla.gnome.org/show_bug.cgi?id=665701
2012-03-03 10:37:59 +01:00
bd6f1f2c6d Updated Hebrew translation. 2012-03-02 14:22:05 +02:00
ca612872a6 screen-grabber: Fix area screenshots
Our DBus API (and mostly every other API in existence) define an
area as the top-left corner and width/height; glReadPixels on the
other hand uses the bottom-left corner, so we have to transform the
coordinates before passing them to GL.

https://bugzilla.gnome.org/show_bug.cgi?id=670979
2012-03-02 11:49:31 +01:00
feb33a6a28 Updated Belarusian translation. 2012-03-02 12:18:10 +03:00
ff92d962f3 PanelMenuButton: set max-width every time the menu is opened
Previously, PanelMenuButton would only set max width if the user
explicitly clicked the menu button, resulting in submenus without scrollbars
if opened via keyboard navigation or mouse over.

https://bugzilla.gnome.org/show_bug.cgi?id=658946
2012-03-02 01:24:12 +01:00
79ca0d579c Updated Serbian translation 2012-03-01 22:42:22 +01:00
c61ac862ba Updated Slovenian translation 2012-03-01 21:36:01 +01:00
64ce622f83 ExtensionSystem: fix uninstalling from website
uninstall function was still referring to the old state and error
objects, which were removed by the refactoring.

https://bugzilla.gnome.org/show_bug.cgi?id=671134
2012-03-01 20:45:32 +01:00
772638c78e ExtensionSystem: fix installing from website
loadExtension() fails if the extension object is already created,
but the installation dialog was creating a dummy object in the
downloading state. Since nothing requires that (and the object is
not in the correct format anyway), just kill it.

https://bugzilla.gnome.org/show_bug.cgi?id=671134
2012-03-01 20:45:32 +01:00
24badb46fe Updated Spanish translation 2012-03-01 17:39:03 +01:00
87d54b37e4 [l10n] Updated Estonian translation 2012-03-01 17:57:14 +02:00
98aa61e2a4 main: Remove muted_log_handler
Since glib turns off g_debug spew by default, we don't need to mute
it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=671086
2012-03-01 08:08:09 -05:00
bea5c6f4e6 altTab: Fix scrolling
This hack was part of the custom scroll view code that allowed for
proper scrolling when the actor was near the screen edges. Since
the port to St.ScrollView, it's unnecessary and downright wrong,
causing portions of actors to be clipped. Remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=613194
2012-03-01 06:28:57 -05:00
7d29e691a4 messageTray: Make sure to always grab focus
If a widget isn't focusable or none of its children are focusable, then
navigate_focus will return false and the key focus won't be set. We
need to explicitly grab the key focus in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=671001
2012-03-01 02:57:07 -05:00
b0d161faad Updated POTFILES.in 2012-02-29 23:27:22 +01:00
4c74fa81d1 Update gcr dependency to 3.3.90 2012-02-29 21:32:43 +01:00
556a3e08db st-table: Fix copy/paste error in st_table_remove
When porting from st_container_get_children_list to this code, I accidentally
broke StTable by a copy/paste error. This broke notifications that updated,
leaving them with what they think were 0 columns and 0 rows.

https://bugzilla.gnome.org/show_bug.cgi?id=670640
2012-02-29 15:10:49 -05:00
e3fb77c051 Use non-pageable memory for gnome-keyring passwords
* Use a ClutterTextBuffer that allocates non-pageable
   memory to hold passwords for gnome-keyring, ssh, gpg
 * Requires gcr 3.3.5

https://bugzilla.gnome.org/show_bug.cgi?id=652460
2012-02-29 20:24:02 +01:00
3ee07d0e82 Add gnome-keyring prompter
* Add a keyring prompter based on GcrSystemPrompter
 * Adds dependency on gcr version 3.3.5 or higher
 * Not yet using unmerged support for non-pageable memory

https://bugzilla.gnome.org/show_bug.cgi?id=652459
2012-02-29 20:16:14 +01:00
72c486cb3e a11y: using pseudo_class to set a CHECKED state
https://bugzilla.gnome.org/show_bug.cgi?id=668361
2012-02-29 16:40:04 +01:00
e37574510e a11y: setting a proper name for Activities button
https://bugzilla.gnome.org/show_bug.cgi?id=670312
2012-02-29 16:22:55 +01:00
f4b58f35ba panel: Allow to start a drag to restore a window from the panel
The preferred way to unmaximize/untile a window is by using a drag
gesture. Extend the available area to start this gesture into
non-reactive parts of the top bar above the window - with that we
take advantage of the "infinite height" of the screen edge, and the
extra space is particularly useful when the window has its titlebar
hidden.

https://bugzilla.gnome.org/show_bug.cgi?id=666359
2012-02-29 13:49:25 +01:00
01696f19e8 theme - clean up modal dialog text styles
Use the new default text style in the modal dialogs. Also create
a common subject text style to be use in the dialogs.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-29 11:23:47 +01:00
1f5a27d5c5 Add function to CheckBox to get label actor
* Allows caller to change properties of the label directly.

https://bugzilla.gnome.org/show_bug.cgi?id=671034
2012-02-29 12:04:33 +01:00
81476dedcb Updated Serbian translation 2012-02-29 11:55:43 +01:00
90b08acbf1 endSessionDialog: Fix wrong method name s/report_dbus_error/return_dbus_error 2012-02-29 00:55:31 +01:00
f967fd21f8 windowAttentionHandler: Fix updating on title changes
We were supposed to be updating the notification's title when the
window title changes, but we didn't actually bother to re-format
the title and body, effectively leaving the notification unchanged.
2012-02-28 17:23:38 -05:00
8d854d5f1a altTab: Disable mouse scrolling on the new ScrollView
We handle scroll events ourselves, so we don't want the scroll view
to attempt to scroll on it.
2012-02-28 16:54:47 -05:00
fde5932b45 Updated Slovenian translation 2012-02-28 22:10:27 +01:00
eb84227f78 shell-wm: Fix argument number for UNMAXIMIZE signal 2012-02-28 21:09:44 +01:00
550d595034 recorder: Fix memory leak
Don't leak path in recorder_open_outfile when the loop loops.
2012-02-28 21:08:15 +01:00
24cc4b49d6 recorder: Fix compiler warnings
Fix some compiler warnings introduced in e322d988
2012-02-28 20:59:56 +01:00
5f130d1925 [l10n] Updated Estonian translation 2012-02-28 21:17:05 +02:00
4f05787338 [l10n] Updated Estonian translation 2012-02-28 20:38:45 +02:00
a98db33c18 Updated Belarusian translation. 2012-02-28 21:46:09 +03:00
a5d78f2943 theme - create common styles for small text
Create common styles for small and small bold text. Add comments
to delineate the different text styles.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-28 18:41:56 +01:00
46ebe9ffc5 theme - split up contacts and app launcher styles
Put the contact and application launcher styling into separate
sections.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-28 18:41:03 +01:00
e2b80658ca theme - add sections and clean up
Add comments to delineate sections, keep to one style per line.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-28 18:38:12 +01:00
0a586c5c92 theme - set default text style
Setting a default text style helps to keep things consistent and
simplifies the theme css.

The view tabs and search box text size needs to be slightly bigger,
so that needs to be manually specified.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-28 18:38:08 +01:00
aa5d352a06 Remove the shell_get_event_state() wrapper
The bug that this wrapper was working around has been fixed for quite some
time: https://bugzilla.gnome.org/show_bug.cgi?id=650329.
2012-02-28 18:11:36 +01:00
760da64a4c modalDialog: Hide button layout by default
For modal dialogs without buttons, the button group still contributes
padding/spacing. To fix that, hide it by default and only show it
when actually adding buttons.

https://bugzilla.gnome.org/show_bug.cgi?id=668209
2012-02-28 18:07:05 +01:00
714ffc5ef1 altTab: Port to St.ScrollView
The appSwitcher has been using a custom scrolling implementation because
St.ScrollView was buggy when it was written. The bugs have been fixed
so remove the custom implementation and move to St.ScrollView.

https://bugzilla.gnome.org/show_bug.cgi?id=613194
2012-02-28 14:58:33 +01:00
fd4d645687 st-scroll-view-fade: Add horizontal fade support
St-scroll-view-fade only allowed adding a fade effect in the vertical
direction; extend it so it can work horizontally too.

https://bugzilla.gnome.org/show_bug.cgi?id=613194
2012-02-28 14:57:58 +01:00
24ad59ea37 st: Remove _st_allocate_fill
The very similar clutter_actor_allocate_align_fill is close enough
that this is just needless duplication. Additionally, allocate_fill
already inverts the align if the text direction is RTL, so we don't
need to do that here.

https://bugzilla.gnome.org/show_bug.cgi?id=670034
2012-02-28 08:14:06 -05:00
15f881f967 st: Remove custom text direction stuff
Clutter has its own built-in system for managing text directions, like GTK+.
Convert over to use this.

https://bugzilla.gnome.org/show_bug.cgi?id=670034
2012-02-28 08:14:06 -05:00
d5285674ae st: Remove st-container
At this point, StContainer is a dummy class that does nothing, so it's
safe to remove.

https://bugzilla.gnome.org/show_bug.cgi?id=670034
2012-02-28 08:14:06 -05:00
bb862e20c0 st: Remove st-group
Now that ClutterActor/StWidget is concrete, we don't need it.

https://bugzilla.gnome.org/show_bug.cgi?id=670034
2012-02-28 08:14:06 -05:00
be3eb308b9 st: Account for children in StWidget's get_paint_volume
Now that StWidget is a group of sorts, it needs to account for its children
in its paint volume. Unfortunately, this causes havoc for StBoxLayout, so it
needs fixing - it's unknown why it worked when chaining up to near-identical
code in StContainer.

https://bugzilla.gnome.org/show_bug.cgi?id=670034
2012-02-28 08:14:05 -05:00
e7f0b1dc59 Updated Lithuanian translation 2012-02-28 10:32:53 +02:00
336cec8b2a Updated Bulgarian translation 2012-02-28 07:35:46 +02:00
fad0b96f24 calendar-server: Shut up about HUP on stdin 2012-02-27 15:37:37 -05:00
d2aab9d6a6 st-container: Remove st_container_get_children_list
Replace it with the new actor iteration APIs. This fixes a few
unintentional memory leaks - st_container_get_children_list
returns an internal list, and clutter_actor_get_children_list
allocates a new list.

https://bugzilla.gnome.org/show_bug.cgi?id=670034

https://bugzilla.gnome.org/show_bug.cgi?id=670910
2012-02-27 15:15:31 -05:00
4005863e3d st-widget: Fix get_focus_chain()
The get_focus_chain() implementation in StWidget just returns all
children, it should filter for visible children instead. This
breaks keyboard navigation in various places since commit 72dad591
removed the correct implementation in StContainer.

https://bugzilla.gnome.org/show_bug.cgi?id=670904
2012-02-27 20:13:13 +01:00
70cdb67f31 [l10n] Updated Kazakh translation 2012-02-27 14:20:14 +06:00
a9aec6956d updated Tamil translation 2012-02-27 11:50:01 +05:30
d871eda6be updated Tamil translation 2012-02-27 11:32:10 +05:30
49d620a414 Updated Bulgarian translation 2012-02-27 06:34:38 +02:00
2e2e3281da userMenu: Fix comment 2012-02-26 21:23:01 +01:00
37cbfe29cf Fix screen locking on suspend from user menu
Lock the session instead of activating the screensaver

https://bugzilla.gnome.org/show_bug.cgi?id=670820
2012-02-26 21:16:18 +01:00
a1f88fc17f Updated Spanish translation 2012-02-26 20:09:03 +01:00
0065da61bd recorder: Move the dot out of the translateable string
This makes sure translators do not mess up with it.
2012-02-26 18:10:40 +01:00
d2b0706c40 update zh_CN translation 2012-02-27 00:17:56 +08:00
a95e585e39 Updated Galician translations 2012-02-25 13:52:25 +01:00
7d39fa76dd Updated Serbian translation 2012-02-25 08:55:13 +01:00
ddf27c1a84 recorder: change "at" to "from" in recording filenames
It makes more sense, given they're from the past.
2012-02-24 19:16:57 -05:00
87e46f3ff1 st-texture-cache: Remove unused functions
With the recent textures code removed, some code is now
unused and can be scrapped. Others have been unused for
a little while now.

https://bugzilla.gnome.org/show_bug.cgi?id=670771
2012-02-24 19:11:19 -05:00
33a6fda6c3 recorder: Make screencast filename translateable
The screenshot file name can be translate so should the screencast as well.
2012-02-25 00:53:47 +01:00
7cc1bdb35d recorder: Change default output filename
Use "Screencast at 2009-03-11 00:08:15.webm" instead of
"shell-20090311b-2.webm".

https://bugzilla.gnome.org/show_bug.cgi?id=670753
2012-02-25 00:18:03 +01:00
60557f4e0f recorder: Add support for %t in filename pattern
Similar to the %d format for the current date, the new %t format
can be used to use the current time in screencast filenames.

https://bugzilla.gnome.org/show_bug.cgi?id=670753
2012-02-25 00:18:03 +01:00
914441218a recorder: Use locale-dependent format for %d in filename
Currently %d hardcodes a date format of YYYYMMDD, use the preferred
format for the current locale instead.

https://bugzilla.gnome.org/show_bug.cgi?id=670753
2012-02-25 00:18:03 +01:00
e322d98886 recorder: Use XDG video directory rather then home
Save the recorded videos in the XDG user directory rather then in the home directory.

https://bugzilla.gnome.org/show_bug.cgi?id=670749
2012-02-24 23:40:43 +01:00
ba1e5f8f71 Updated Serbian translation 2012-02-23 21:18:38 +01:00
517075c605 jhbuildrc-gnome-shell: remove versioned-xulrunner-directories workaround
Since we require libmozjs185, we no longer have to play tricks with
pkg-config in our jhbuildrc.
2012-02-23 15:14:12 -05:00
540e970170 gnome-shell-build-setup.sh: Fix installing jhbuild
jhbuild now requires autogen.sh to be run, even when not using autotools.

https://bugzilla.gnome.org/show_bug.cgi?id=668440
2012-02-23 15:07:17 -05:00
d0fd5641c1 gnome-shell-build-setup.sh: redo installing dependencies
* Consolidate all dependency information into one place, rather than
  having a comment and per-distribution lists.
* Remove packages that are in the GNOME moduleset;
  jhbuild sysdeps --install will install these when possible.
* Install 'apt-file' and run 'apt-file update' on Debian-based distributions.
* Actually run sudo rather than prompting the user to run it and exiting;
  the exit-and-restart approach doesn't work for 'apt-file update'.
* Run 'jhbuild sysdeps --install'

https://bugzilla.gnome.org/show_bug.cgi?id=668440
2012-02-23 15:07:17 -05:00
caaa21dec0 Update modules, moduleset for jhbuildrc-gnome-shell
We now use the gnome core suite module to build gnome-shell, and the
name of the module we want is now just plain "gnome-shell".

https://bugzilla.gnome.org/show_bug.cgi?id=668440
2012-02-23 15:07:17 -05:00
22c606326f Updated Slovenian translation 2012-02-23 21:06:37 +01:00
00ed2973b2 altTab: Fix thumbnail size calculation for some dual-head setups
The old formula worked only when the primary monitor was positioned at the
top of the virtual desktop.  When that was not the case, the available
space was miscalculated sometimes resulting in negative numbers, which in
the end produced strangely vertically stretched window thumbnails.

https://bugzilla.gnome.org/show_bug.cgi?id=651130
2012-02-23 19:54:16 +01:00
3837fc0a87 Updated Norwegian bokmål translation 2012-02-23 18:47:15 +01:00
07b95d3436 Updated Norwegian bokmål translation 2012-02-23 18:46:49 +01:00
1f5dd9c397 Updated Spanish translation 2012-02-23 10:53:29 +01:00
007736a234 Updated Galician translations 2012-02-23 10:34:46 +01:00
c2a9f7fbb2 autorunManager: Fix fallout from port to systemd
https://bugzilla.gnome.org/show_bug.cgi?id=670076
2012-02-23 03:39:02 -05:00
194 changed files with 27283 additions and 18012 deletions

165
NEWS
View File

@ -1,7 +1,164 @@
3.4.2
=====
* Mirror Evolution calendar settings into our own schema [Owen; #674424]
* gdm: don't fail if fprintd unavailable [Ray; #675006]
* Fix broken extension loading [Owen, Alexandre; #670477]
* Fix filtering of Empathy notifications [Guillaume; #675370]
* telepathyClient: Ignore invalidated channels [Guillaume; #677457]
* popupMenu: Fix freeze when appMenu is not populated in one go [Alban; #676447]
* mount-operation: fix exceptions when showing password entry [Cosimo; #678428]
* Misc. fixes [Guillaume, Jasper, Rico; #677441, #676175]
Contributors:
Alban Browaeys, Cosimo Cecchi, Guillaume Desmottes, Alexandre Rostovtsev,
Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz
Translations:
OKANO Takayoshi [ja], Changwoo Ryu [ko], Jonh Wendell [pt_BR],
Luca Ferretti [it], Sandeep Sheshrao Shedmake [mr], Takanori MATSUURA [ja],
Andika Triwidada [id], Mantas Kriaučiūnas [lt], Nilamdyuti Goswami [as]
3.4.1
=====
* Fix crash that occurred when an icon theme change caused unexpected
reentrancy in the icon loading code [Jasper; #673512]
* Don't show system and other disabled users in the GDM user list
[Adel; #673784]
* Make gnome-shell-calendar-server initialize GTK+ so it can display
password prompts if needed [#673608; Owen, Rico]
* Adapt to Mutter API change for keybinding addition [Florian; #673014]
* Fix crash when an extension was installed as both a user extension
and a system extension [#673613; Jasper]
* Fix bug where chat entry could end up partially offscreen [Joost, 661944]
* Fix problem where icons weren't updating when theme was changed
[#672941; Florian]
* Look for Evolution calendar settings in GSettings, not GConf [#673610; Owen]
* Add <super>F10 for the application menu [#672909; Florian]
* Fix %Id format characters to work in translations [#673106; Cosimo]
(were already used in fa translation)
* Fix error when NetworkManager restarts [#673043; Giovanni]
* Improve efficiency of overview redraws by working around Clutter issue
[Stefano; #670636]
* Misc bug fixes [Florian, Giovanni, Jasper, Rui, Stefano;
#672592, #672641, #672719, #673187, #673233, #673656]
Contributors:
Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos,
Florian Müllner, Jasper St. Pierre, Owen Taylor, Rico Tzschichholz,
Joost Verdoorn
Translations:
Khaled Hosny [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Gil Forcada,
Jordi Serratosa [ca], Petr Kovar [cs], Bruce Cowan [en_GB],
Carles Ferrando [ca@valencia], Wolfgang Stöggl [de], Daniel Mustieles [es],
Arash Mousavi [fa], Bruno Brouard [fr], Fran Diéguez [gl],
Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu],
Shankar Prasad [kn], Žygimantas Beručka [lt], Rudolfs Mazurs [lv],
Sandeep Sheshrao Shedmake [mr], Kjartan Maraas [nb], Piotr Drąg [pl],
Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl],
Miroslav Nikolić [sr], Sasi Bhushan, Praveen Illa [te], Yinghua Wang [zh_CN]
3.4.0
=====
* Don't crash when taking screenshots [Jasper; #672775]
* Fix dialog-resizing problem [Florian; #672543]
Contributors:
Florian Müllner, Jasper St. Pierre
Translations:
Khaled Hosny, Abderrahim Kitouni [ar], Ihar Hrachyshka [be],
Alexander Shopov [bg], Marek Černocký [cs], Jiri Grönroos, Timo Jyrinki [fi],
Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he],
Gabor Kelemen [hu], Jiro Matsuzawa [ja], Kenneth Nielsen [dk],
Mattias Põldaru [et], Changwoo Ryu [ko], Rudolfs Mazurs [lv],
Jonh Wendell [pt_BR], Yuri Myasoedov[ru], Daniel Korostil [uk],
Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW]
3.3.92
======
* Add shell-dialogs for GNOME Keyring prompts [Stef; #652459, #652460, #671034]
* When the user returns from idle, bring up the message tray if there were
messages while they were away [Marina; #643014]
* https://live.gnome.org/EveryDetailMatters
- Make the workspace thumbnails clickable all the way to the edge of the
screen [Stefano; #643319]
- Don't slide out the workspace thumbnails if the mouse is over them when
entering the overview [Joost, #651092]
- Fix placeholder jumps while dragging a dash item [Joost; #651842]
- Don't favorite apps if they are dropped back at the same position
[Jean-Philippe; #656333]
- To avoid confusion, don't allow removing running apps from favorites
[Florian; #644853]
- Fix creation of new workspaces by dragging application launchers
[Stefano; #664202]
- Make it easier to drag dash items without triggering the menu
[Florian; #637103]
* Accessibility [Alejandro]
- Add StWidget API for easily adding accessible states and setting roles,
names [#668366, #667432, #671378]
- Set accessibility information on UI elements
[#644255, #667432, #668361, #672047, #670308, #670312, #670719, #671404]
* Improve key-navigation in the overview [Rui, Florian; #663901]
* Key navigation bug fixes [Rui, Florian; #662493, #663437, #665215, #671998]
* Honor a 'org.gnome.shell.overrides.dynamic-workspaces' setting that
determines whether the workspace count is dynamic and unsaved in GSettings
or static and saved. [Florian; #671568]
* Avoid saving user presence to GSettings when not necessary
[Florian; #665701, #668214]
* Save screencasts in the users Videos/ directory [Adel; #670749]
Use a "human readable" filename [Florian, Adel, Ray; #670753]
* Allow dragging from the empty part of the top panel to unmaximize a window
[Florian; #666359]
* Fix hangs that could occur when switching away to a VT [Ray; #653833]
* Fix problems with installing from extensions.gnome.org [Giovanni; #671134]
* Fix locking the screen when suspending via menu [David, Gert; #670820]
* Fix browser plugin with Konqueror and Opera [Jasper]
* Fix shell restart not to bring up failure screen [Giovanni; #648384]
* Reorganize and clean up CSS theming [Allan; #668209]
* Improve appearance of modal dialogs [Allan, Florian; #670227, #668209]
* Update the calendar code to use ECalClient [Giovanni; #671177]
* Update jhbuild script to use the main moduleset [Owen, Will; #668440]
* StTextureCache: code cleanup, evict unused icons, merge together
simulataneous requests for the same icon [Jasper; #670771, #671656, #672273]
* Clean up St for recent Clutter changes and fix bugs. StContainer and
StGroup are removed [Jasper, Florian; #670034, #670640, #670904]
* Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103]
* Misc bug fixes
[Adel, Colin G, Cosimo, Florian, Giovanni, Jasper, Marius, Rui, Stefano;
#651130, #658946, #667552, #670076, #671001, #670979, #671410, #671411,
#671556, #671656, #671657, #672011, #672024, #672240, #672265, #672270,
#672321, #672326, #672413, #672471]
Contributors:
Jean-Philippe Braun, Giovanni Campagna, Cosimo Cecchi, Allan Day,
Stefano Facchini, David Foerster, Adel Gadllah, Marius Gedminas,
Colin Guthrie, Gert Michael Kulyk, William Lachance, Rui Matos,
Florian Müllner, Alejandro Piñeiro, Jan Alexander Steffens,
Jasper St. Pierre, Ray Strode, Owen Taylor, Joost Verdoorn, Stef Walter,
Marina Zhurakhinskaya
Translations:
Nilamdyuti Goswami [as], Ihar Hrachyshka, Kasia Bondarava [be],
Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cs],
Mario Blättermann [de], Kris Thomsen [dk], Bruce Cowan [en_GB],
Kristjan Schmidt [eo], Daniel Mustieles [es], Mattias Põldaru [et],
Inaki Larranaga Murgoitio [eu], Arash Mousavi [fa], Timo Jyrinki [fi],
Bruno Brouard [fr], Fran Diéguez [gl], Sweta Kothari [gu],
Yaron Shahrabani [he], Gabor Kelemen [hu], Jiro Matsuzawa [ja],
Baurzhan Muftakhidinov [kk], Seong-ho Cho [ko], Žygimantas Beručka [lt],
Anita Reitere [lv], Anish A, Praveen Arimbrathodiyil, Mohammed Sadiq [ml],
fKjartan Maraas [nb], Wouter Bolsterlee [nl], A S Alam [pa], Piotr Drąg [pl],
Duarte Loreto [pt], Jonh Wendell [pt_BR], Yuri Myasoedov [ru],
Matej Urbančič [sl], Miroslav Nikolić [sr], Tirumurti Vasudevan [ta],
Sasi Bhushan, Krishnababu Krothapalli [te], Daniel Korostil [uk],
Nguyễn Thái Ngọc Duy [vi], YunQiang Su, Yinghua Wang [zh_CN],
Chao-Hsiung Liao [zh_HK, zh_TW]
3.3.90
======
* All other applications to implement search providers via D-Bus
* Allow other applications to implement search providers via D-Bus
[Florian; #663125, #670148]
* Remove "Recent Items" search, as replaced by Documents search
[Florian; #663125]
@ -32,7 +189,7 @@ Contributors:
Will Thompson, Stef Walter
Translations:
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cz],
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cs],
Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et],
Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it],
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb],
@ -163,7 +320,7 @@ Contributors:
Marina Zhurakhinskaya
Translations:
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
Petr Kovar [cs], Kris Thomsen [dk], Daniel Mustieles [es],
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
@ -326,7 +483,7 @@ Contributors:
Translations:
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
Petr Kovar [cz], Mario Blättermann [de], Kris Thomsen [dk],
Petr Kovar [cs], Mario Blättermann [de], Kris Thomsen [dk],
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],

View File

@ -153,6 +153,8 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
/* global initialization routine, called once when plugin
is loaded */
g_type_init ();
g_debug ("plugin loaded");
memcpy (&funcs, pfuncs, sizeof (funcs));

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.3.90],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.4.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@ -60,10 +60,10 @@ fi
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.9.11
CLUTTER_MIN_VERSION=1.9.16
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.29.18
MUTTER_MIN_VERSION=3.3.5
MUTTER_MIN_VERSION=3.4.1
FOLKS_MIN_VERSION=0.5.2
GTK_MIN_VERSION=3.3.9
GIO_MIN_VERSION=2.31.6
@ -74,6 +74,7 @@ TELEPATHY_GLIB_MIN_VERSION=0.17.5
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.3.90
# Collect more than 20 libraries for a prize!
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
@ -93,7 +94,8 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
libnm-glib libnm-util gnome-keyring-1)
libnm-glib libnm-util gnome-keyring-1
gcr-3 >= $GCR_MIN_VERSION)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
@ -210,7 +212,7 @@ GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
# minimum/yes/maximum are the same, however.
AC_ARG_ENABLE(compile_warnings,
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
enable_compile_warnings=maximum)
enable_compile_warnings=error)
changequote(,)dnl
if test "$enable_compile_warnings" != no ; then

View File

@ -53,7 +53,7 @@ dist_theme_DATA = \
theme/ws-switch-arrow-up.svg \
theme/ws-switch-arrow-down.svg
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
gsettings_SCHEMAS = org.gnome.shell.gschema.xml org.gnome.shell.evolution.calendar.gschema.xml
@INTLTOOL_XML_NOMERGE_RULE@
@GSETTINGS_RULES@
@ -80,6 +80,7 @@ EXTRA_DIST = \
$(menu_DATA) \
$(shaders_DATA) \
$(convert_DATA) \
org.gnome.shell.evolution.calendar.gschema.xml.in \
org.gnome.shell.gschema.xml.in
CLEANFILES = \

View File

@ -13,4 +13,4 @@ NoDisplay=true
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=panel;windowmanager;
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-GNOME-AutoRestart=false

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- NOTE: This schema is a GNOME 3.4 workaround - it uses the same path
as org.gnome.evolution.calendar, but avoids us requiring Evolution
be installed. In GNOME 3.6 the selected state will become a flag
on the calendar. Because the translations are in Evolution,
this is untranslated and in POTFILES.skip.
-->
<schemalist>
<schema path="/org/gnome/evolution/calendar/" id="org.gnome.shell.evolution.calendar" gettext-domain="evolution">
<key type="as" name="selected-calendars">
<default>[]</default>
<summary>List of selected calendars</summary>
<description>List of calendars to load</description>
</key>
<key type="as" name="selected-tasks">
<default>[]</default>
<summary>List of selected task lists</summary>
<description>List of task lists to load</description>
</key>
</schema>
</schemalist>

View File

@ -64,6 +64,7 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
<child name="clock" schema="org.gnome.shell.clock"/>
<child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="recorder" schema="org.gnome.shell.recorder"/>
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
</schema>
@ -78,6 +79,17 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
</key>
</schema>
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="open-application-menu" type="as">
<default>["&lt;Super&gt;F10"]</default>
<_summary>Keybinding to open the application menu</_summary>
<_description>
Keybinding to open the application menu.
</_description>
</key>
</schema>
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="keyboard-type" type="s">
@ -172,6 +184,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
</description>
</key>
<key name="dynamic-workspaces" type="b">
<default>true</default>
<summary>Workspaces are managed dynamically</summary>
<description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</key>
<key name="workspaces-only-on-primary" type="b">
<default>true</default>
<summary>Workspaces only on primary monitor</summary>

View File

@ -17,10 +17,16 @@
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* Text Styles */
/* default text style */
stage {
font-family: cantarell, sans-serif;
font-size: 11pt;
color: white;
}
/* links */
.shell-link {
color: #0000ff;
text-decoration: underline;
@ -30,10 +36,28 @@ stage {
color: #0000e0;
}
.label-shadow {
color: rgba(0,0,0,0.5);
/* small */
.app-well-menu,
.contact-details-status,
.run-dialog-label,
.run-dialog-error-label {
font-size: 9pt;
}
/* small bold */
.dash-label,
.window-caption,
.switcher-list,
.source-title,
.app-well-app > .overview-icon,
.remove-favorite > .overview-icon,
.search-result-content > .overview-icon {
font-size: 9pt;
font-weight: bold;
}
/* Scroll Bars */
StScrollBar
{
padding: 0px;
@ -44,6 +68,11 @@ StScrollView.vfade
-st-vfade-offset: 68px;
}
StScrollView.hfade
{
-st-hfade-offset: 68px;
}
StScrollView StScrollBar
{
min-width: 16px;
@ -79,6 +108,8 @@ StScrollBar StButton#vhandle:hover
background-color: #292929;
}
/* Check Boxes */
.check-box ShellGenericContainer {
spacing: .8em;
}
@ -113,8 +144,6 @@ StScrollBar StButton#vhandle:hover
}
.popup-menu {
color: #ffffff;
font-size: 10.5pt;
min-width: 200px;
}
@ -153,8 +182,6 @@ StScrollBar StButton#vhandle:hover
.popup-combo-menu {
background-color: rgba(0,0,0,0.9);
padding: 1em 0em;
color: #ffffff;
font-size: 10.5pt;
border: 1px solid #5f5f5f;
border-radius: 9px;
}
@ -224,10 +251,10 @@ StScrollBar StButton#vhandle:hover
}
.popup-menu-icon {
icon-size: 1.14em;
icon-size: 1.09em;
}
/* Switches (to be used in menus) */
/* Switches */
.toggle-switch {
width: 65px;
height: 22px;
@ -255,35 +282,48 @@ StScrollBar StButton#vhandle:hover
spacing: .5em;
}
/* Shared button properties */
/* Buttons */
.dash-search-button, .notification-button, .notification-icon-button,
.hotplug-notification-item, .hotplug-resident-eject-button,
.dash-search-button,
.notification-button,
.notification-icon-button,
.hotplug-notification-item,
.hotplug-resident-eject-button,
.modal-dialog-button {
color: white;
font-weight: bold;
border: 1px solid #8b8b8b;
background-gradient-direction: vertical;
background-gradient-start: rgba(255, 255, 255, 0.2);
background-gradient-end: rgba(255, 255, 255, 0);
}
.dash-search-button:hover, .notification-button:hover,
.notification-icon-button:hover, .hotplug-notification-item:hover,
.hotplug-resident-eject-button:hover, .modal-dialog-button:hover {
.dash-search-button:hover,
.notification-button:hover,
.notification-icon-button:hover,
.hotplug-notification-item:hover,
.hotplug-resident-eject-button:hover,
.modal-dialog-button:hover {
background-gradient-start: rgba(255, 255, 255, 0.3);
background-gradient-end: rgba(255, 255, 255, 0.1);
}
.dash-search-button:selected, .notification-button:focus,
.notification-icon-button:focus, .hotplug-notification-item:focus,
.dash-search-button:selected,
.dash-search-button:focus,
.notification-button:focus,
.notification-icon-button:focus,
.hotplug-notification-item:focus,
.modal-dialog-button:focus {
border: 2px solid #8b8b8b;
}
.dash-search-button:active, .dash-search-button:pressed,
.notification-button:active, .notification-icon-button:active,
.hotplug-notification-item:active, .hotplug-resident-eject-button:active,
.modal-dialog-button:active, .modal-dialog-button:pressed {
.dash-search-button:active,
.dash-search-button:pressed,
.notification-button:active,
.notification-icon-button:active,
.hotplug-notification-item:active,
.hotplug-resident-eject-button:active,
.modal-dialog-button:active,
.modal-dialog-button:pressed {
background-gradient-start: rgba(255, 255, 255, 0);
background-gradient-end: rgba(255, 255, 255, 0.2);
}
@ -291,9 +331,7 @@ StScrollBar StButton#vhandle:hover
/* Panel */
#panel {
color: #ffffff;
background-color: black;
font-size: 10.5pt;
font-weight: bold;
height: 1.86em;
}
@ -335,6 +373,11 @@ StScrollBar StButton#vhandle:hover
spacing: 4px;
}
/* used for the app menu header only */
.label-shadow {
color: rgba(0,0,0,0.5);
}
.panel-button #appMenuIcon {
app-icon-bottom-clip: 1px;
}
@ -388,6 +431,8 @@ StScrollBar StButton#vhandle:hover
-boxpointer-gap: 4px
}
/* User Menu */
#panelUserMenu {
spacing: 4px;
}
@ -427,8 +472,6 @@ StScrollBar StButton#vhandle:hover
padding: .4em 0em;
border-radius: 4px;
border: 1px solid #5f5f5f;
color: #ffffff;
font-size: 10.5pt;
}
.status-chooser-status-item,
@ -437,7 +480,7 @@ StScrollBar StButton#vhandle:hover
}
.system-status-icon {
icon-size: 1.14em;
icon-size: 1.09em;
}
/* Overview */
@ -447,7 +490,6 @@ StScrollBar StButton#vhandle:hover
}
.window-caption {
color: white;
spacing: 25px;
}
@ -481,8 +523,6 @@ StScrollBar StButton#vhandle:hover
.window-caption {
background: rgba(0,0,0,0.5);
border-radius: 8px;
font-size: 9pt;
font-weight: bold;
padding: 4px 12px;
-shell-caption-spacing: 12px;
}
@ -530,13 +570,14 @@ StScrollBar StButton#vhandle:hover
#viewSelector {
spacing: 1em;
font-size: 12pt;
}
#viewSelectorTabBar {
padding: 1em;
}
/* Search Box */
#searchArea {
padding: 0px 24px;
}
@ -544,6 +585,7 @@ StScrollBar StButton#vhandle:hover
#searchEntry {
padding: 4px 12px;
border-radius: 17px;
font-size: 12pt;
color: rgb(128, 128, 128);
border: 2px solid rgba(245,245,245,0.2);
background-gradient-start: rgba(5,5,6,0.1);
@ -580,8 +622,11 @@ StScrollBar StButton#vhandle:hover
color: #8d8f8a;
}
/* View Tabs */
.view-tab-title {
color: #888a85;
font-size: 12pt;
font-weight: bold;
padding: 0px 0.75em;
height: 1.5em;
@ -597,6 +642,8 @@ StScrollBar StButton#vhandle:hover
border-radius: 0.25em;
}
/* Search Results */
#searchResults {
padding: 20px 10px 10px 10px;
spacing: 18px;
@ -621,7 +668,6 @@ StScrollBar StButton#vhandle:hover
}
.search-section-results {
color: #ffffff;
padding: 6px;
}
@ -648,29 +694,22 @@ StScrollBar StButton#vhandle:hover
font-weight: bold;
}
.dash-search-button:focus,
.dash-search-button:selected {
padding-top: 3px;
padding-bottom: 4px;
width: 298px;
}
.dash-search-button-label {
color: white;
font-size: 11pt;
}
.dash-label {
border-radius: 7px;
padding: 4px 12px;
background-color: rgba(0,0,0,0.5);
color: #ffffff;
font-size: 0.9em;
font-weight: bold;
text-align: center;
-x-offset: 8px;
}
/* Apps */
/* Application Launchers and Grid */
.icon-grid {
spacing: 36px;
@ -678,12 +717,6 @@ StScrollBar StButton#vhandle:hover
-shell-grid-vertical-item-size: 118px;
}
.contact-grid {
spacing: 36px;
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
-shell-grid-vertical-item-size: 118px;
}
.icon-grid .overview-icon {
icon-size: 96px;
}
@ -699,7 +732,6 @@ StScrollBar StButton#vhandle:hover
}
.app-filter {
font-size: 10.5pt;
font-weight: bold;
height: 2.85em;
color: #aaa;
@ -744,13 +776,32 @@ StScrollBar StButton#vhandle:hover
border-radius: 4px;
padding: 3px;
border: 1px rgba(0,0,0,0);
font-size: 8pt;
font-weight: bold;
color: white;
transition-duration: 100;
text-align: center;
}
.app-well-app.running > .overview-icon {
text-shadow: black 0px 2px 2px;
background-image: url("running-indicator.svg");
background-size: contain;
}
.app-well-app:hover > .overview-icon,
.remove-favorite:hover > .overview-icon,
.search-result-content:hover > .overview-icon {
background-color: rgba(255,255,255,0.1);
text-shadow: black 0px 2px 2px;
transition-duration: 100;
}
/* Contacts */
.contact-grid {
spacing: 36px;
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
-shell-grid-vertical-item-size: 118px;
}
.contact {
width: 272px; /* Same width as two normal results + spacing */
height: 118px; /* Aspect ratio = 1.75. Normal US business card ratio */
@ -782,10 +833,6 @@ StScrollBar StButton#vhandle:hover
padding-bottom: 8px;
}
.contact-details-status {
font-size: 10pt;
}
.contact-details-status-icon {
padding-right: 4px;
}
@ -795,36 +842,15 @@ StScrollBar StButton#vhandle:hover
transition-duration: 100;
}
.app-well-app.running > .overview-icon {
text-shadow: black 0px 2px 2px;
background-image: url("running-indicator.svg");
background-size: contain;
}
.contact:focus,
.app-well-app:focus > .overview-icon,
.search-result-content:focus > .overview-icon,
.contact:selected,
.app-well-app:selected > .overview-icon,
.search-result-content:selected > .overview-icon {
background-color: rgba(255,255,255,0.33);
}
.app-well-app:hover > .overview-icon,
.remove-favorite:hover > .overview-icon,
.search-result-content:hover > .overview-icon {
background-color: rgba(255,255,255,0.1);
text-shadow: black 0px 2px 2px;
transition-duration: 100;
}
.contact:focus,
.app-well-app:focus > .overview-icon,
.search-result-content:focus > .overview-icon {
border: 1px solid #cccccc;
}
.app-well-menu {
font-size: 9pt;
}
/* LookingGlass */
#LookingGlassDialog
@ -834,8 +860,6 @@ StScrollBar StButton#vhandle:hover
padding: 4px;
border: 2px solid grey;
border-radius: 4px;
color: #ffffff;
}
#LookingGlassDialog > #Toolbar
@ -875,14 +899,8 @@ StScrollBar StButton#vhandle:hover
padding-bottom: 8px;
}
.lg-dialog StLabel
{
color: #ffffff;
}
.lg-dialog StEntry
{
color: #ffffff;
selection-background-color: #bbbbbb;
selected-color: #333333;
}
@ -959,7 +977,6 @@ StScrollBar StButton#vhandle:hover
border: 2px solid grey;
border-radius: 4px;
padding: 6px;
color: #ffffff;
}
/* Calendar popup */
@ -1038,7 +1055,6 @@ StScrollBar StButton#vhandle:hover
.datemenu-date-label {
padding: .4em 1.75em;
font-size: 10.5pt;
color: #cccccc;
font-weight: bold;
}
@ -1185,11 +1201,9 @@ StScrollBar StButton#vhandle:hover
background-gradient-start: rgba(0,0,0,0.01);
background-gradient-end: rgba(0,0,0,0.82);
height: 36px;
color: white;
}
#notification {
font-size: 11pt;
border-radius: 10px 10px 0px 0px;
background: rgba(0,0,0,0.8);
padding: 8px 8px 4px 8px;
@ -1227,7 +1241,6 @@ StScrollBar StButton#vhandle:hover
}
.summary-boxpointer #summary-right-click-menu {
font-size: 10.5pt;
padding-top: 12px;
padding-bottom: 12px;
}
@ -1277,7 +1290,6 @@ StScrollBar StButton#vhandle:hover
.notification-button {
border-radius: 18px;
font-size: 11pt;
padding: 4px 42px 5px;
}
@ -1307,7 +1319,6 @@ StScrollBar StButton#vhandle:hover
.hotplug-notification-item {
padding: 2px 10px;
border-radius: 18px;
font-size: 10.5pt;
}
.hotplug-notification-item:focus {
@ -1450,7 +1461,6 @@ StScrollBar StButton#vhandle:hover
}
.summary-source-button {
color: #fff;
text-shadow: black 0px 2px 2px;
}
@ -1503,8 +1513,6 @@ StScrollBar StButton#vhandle:hover
}
.source-title {
font-size: 9pt;
font-weight: bold;
padding-left: 4px;
}
@ -1524,9 +1532,6 @@ StScrollBar StButton#vhandle:hover
border: 1px solid rgba(128,128,128,0.40);
border-radius: 24px;
padding: 20px;
font-size: 9pt;
color: white;
}
.switcher-list-item-container {
@ -1646,12 +1651,20 @@ StScrollBar StButton#vhandle:hover
}
/* Modal Dialogs */
/* Dialog Subject Text Style */
.show-processes-dialog-subject,
.mount-question-dialog-subject,
.end-session-dialog-subject {
font-size: 14pt;
font-weight: bold;
color: #999999;
}
.modal-dialog {
font-size: 12pt;
border-radius: 24px;
background-color: rgba(0.0, 0.0, 0.0, 0.9);
border: 2px solid #868686;
color: #babdb6;
padding-right: 42px;
padding-left: 42px;
@ -1661,12 +1674,11 @@ StScrollBar StButton#vhandle:hover
.modal-dialog-button-box {
spacing: 21px;
padding-top: 50px;
}
.modal-dialog-button {
border-radius: 18px;
font-size: 11pt;
color: white;
margin-left: 10px;
margin-right: 10px;
@ -1682,15 +1694,6 @@ StScrollBar StButton#vhandle:hover
}
/* Run Dialog */
.run-dialog-label {
font-size: 9pt;
color: white;
}
.run-dialog-error-label {
font-size: 9pt;
color: white;
}
.run-dialog-error-box {
padding-top: 15px;
@ -1698,10 +1701,8 @@ StScrollBar StButton#vhandle:hover
}
.run-dialog-entry {
font-size: 10.5pt;
font-weight: bold;
width: 23em;
color: white;
selection-background-color: white;
selected-color: black;
}
@ -1729,12 +1730,8 @@ StScrollBar StButton#vhandle:hover
}
.end-session-dialog-subject {
font-size: 12pt;
font-weight: bold;
color: #666666;
padding-top: 10px;
padding-left: 17px;
padding-bottom: 30px;
padding-bottom: 20px;
}
.end-session-dialog-subject:rtl {
@ -1743,8 +1740,6 @@ StScrollBar StButton#vhandle:hover
}
.end-session-dialog-description {
font-size: 10pt;
color: white;
padding-left: 17px;
width: 28em;
}
@ -1761,6 +1756,7 @@ StScrollBar StButton#vhandle:hover
}
.end-session-dialog-shutdown-icon {
color: #bebebe;
width: 32px;
height: 32px;
}
@ -1827,9 +1823,6 @@ StScrollBar StButton#vhandle:hover
.show-processes-dialog-subject,
.mount-question-dialog-subject {
font-size: 12pt;
font-weight: bold;
color: #666666;
padding-top: 10px;
padding-left: 17px;
padding-bottom: 6px;
@ -1847,8 +1840,6 @@ StScrollBar StButton#vhandle:hover
.show-processes-dialog-description,
.mount-question-dialog-description {
font-size: 10pt;
color: white;
padding-left: 17px;
width: 28em;
}
@ -1920,11 +1911,6 @@ StScrollBar StButton#vhandle:hover
color: #666666;
}
.prompt-dialog-description {
font-size: 10pt;
color: white;
}
.prompt-dialog-password-label:ltr {
padding-right: 0.5em;
}
@ -1993,6 +1979,10 @@ StScrollBar StButton#vhandle:hover
spacing-rows: 15px;
}
.keyring-dialog-control-table {
spacing-rows: 15px;
}
/* Magnifier */
.magnifier-zoom-region {

View File

@ -9,7 +9,7 @@
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="64"
width="65"
height="22"
id="svg3273"
version="1.1"

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -9,7 +9,7 @@
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="64"
width="65"
height="22"
id="svg3012"
version="1.1"

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -20,7 +20,6 @@
<title>Abstract classes and Interfaces</title>
<xi:include href="xml/st-widget.xml"/>
<xi:include href="xml/st-widget-accessible.xml"/>
<xi:include href="xml/st-container.xml"/>
<xi:include href="xml/st-scrollable.xml"/>
</chapter>
<chapter id="widgets">
@ -35,7 +34,6 @@
<title>Containers</title>
<xi:include href="xml/st-bin.xml"/>
<xi:include href="xml/st-box-layout.xml"/>
<xi:include href="xml/st-group.xml"/>
<xi:include href="xml/st-scroll-view.xml"/>
<xi:include href="xml/st-table.xml"/>
</chapter>

View File

@ -66,4 +66,11 @@ its dependencies to build from tarballs.</description>
<gnome:userid>marinaz</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Florian Müllner</foaf:name>
<foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" />
<gnome:userid>fmuellner</gnome:userid>
</foaf:Person>
</maintainer>
</Project>

View File

@ -56,6 +56,7 @@ nobase_dist_js_DATA = \
ui/flashspot.js \
ui/iconGrid.js \
ui/keyboard.js \
ui/keyringPrompt.js \
ui/layout.js \
ui/lightbox.js \
ui/link.js \

View File

@ -11,10 +11,17 @@ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
</method>
</interface>;
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
function FprintManager() {
return new FprintManagerProxy(Gio.DBus.system,
'net.reactivated.Fprint',
'/net/reactivated/Fprint/Manager');
};
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
g_interface_name: FprintManagerInfo.name,
g_interface_info: FprintManagerInfo,
g_name: 'net.reactivated.Fprint',
g_object_path: '/net/reactivated/Fprint/Manager',
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
self.init(null);
return self;
}

View File

@ -488,6 +488,9 @@ const UserList = new Lang.Class({
if (user.is_system_account())
return;
if (user.locked)
return;
let userName = user.get_user_name();
if (!userName)

View File

@ -33,10 +33,13 @@ const PowerMenuButton = new Lang.Class({
_init: function() {
this.parent('system-shutdown', null);
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
this._systemdLoginManager = new Systemd.SystemdLoginManager();
this._upClient = new UPowerGlib.Client();
if (Systemd.haveSystemd())
this._systemdLoginManager = new Systemd.SystemdLoginManager();
else
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
this._createSubMenu();
this._upClient.connect('notify::can-suspend',

View File

@ -184,11 +184,11 @@ function scanExtensionsInDirectory(callback, dir, type) {
function scanExtensions(callback) {
let systemDataDirs = GLib.get_system_data_dirs();
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
for (let i = 0; i < systemDataDirs.length; i++) {
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
let dir = Gio.file_new_for_path(dirPath);
if (dir.query_exists(null))
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
}
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
}

View File

@ -1,5 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const ShellJS = imports.gi.ShellJS;
/*
* This function is intended to extend the String object and provide
* an String.format API for string formatting.
@ -17,11 +19,16 @@ function format() {
let i = 0;
let args = arguments;
return str.replace(/%([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, widthGroup, precisionGroup, genericGroup) {
return str.replace(/%(I+)?([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, flagsGroup, widthGroup, precisionGroup, genericGroup) {
if (precisionGroup != '' && genericGroup != 'f')
throw new Error("Precision can only be specified for 'f'");
let hasAlternativeIntFlag = (flagsGroup.indexOf('I') != -1);
if (hasAlternativeIntFlag && genericGroup != 'd')
throw new Error("Alternative output digits can only be specfied for 'd'");
let fillChar = (widthGroup[0] == '0') ? '0' : ' ';
let width = parseInt(widthGroup, 10) || 0;
@ -41,7 +48,11 @@ function format() {
s = args[i++].toString();
break;
case 'd':
s = parseInt(args[i++]).toString();
let intV = parseInt(args[i++]);
if (hasAlternativeIntFlag)
s = ShellJS.format_int_alternative_output(intV);
else
s = intV.toString();
break;
case 'x':
s = parseInt(args[i++]).toString(16);

View File

@ -31,12 +31,12 @@ function Presence(initCallback, cancellable) {
// change at runtime (changes always come in the form
// of new inhibitors)
const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
<property name="app_id" type="s" access="read" />
<property name="client_id" type="s" access="read" />
<property name="reason" type="s" access="read" />
<property name="flags" type="u" access="read" />
<property name="toplevel_xid" type="u" access="read" />
<property name="cookie" type="u" access="read" />
<method name="GetAppId">
<arg type="s" direction="out" />
</method>
<method name="GetReason">
<arg type="s" direction="out" />
</method>
</interface>;
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);

View File

@ -2,12 +2,14 @@
const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@ -125,7 +127,7 @@ const AltTabPopup = new Lang.Class({
if (childBox.x2 > primary.x + primary.width - rightPadding)
childBox.x2 = primary.x + primary.width - rightPadding;
childBox.y1 = this._appSwitcher.actor.allocation.y2 + spacing;
this._thumbnails.addClones(primary.height - bottomPadding - childBox.y1);
this._thumbnails.addClones(primary.y + primary.height - bottomPadding - childBox.y1);
let [childMinHeight, childNaturalHeight] = this._thumbnails.actor.get_preferred_height(-1);
childBox.y2 = childBox.y1 + childNaturalHeight;
this._thumbnails.actor.allocate(childBox, flags);
@ -139,7 +141,7 @@ const AltTabPopup = new Lang.Class({
let screen = global.screen;
let display = screen.get_display();
let windows = display.get_tab_list(Meta.TabList.NORMAL, screen,
let windows = display.get_tab_list(Meta.TabList.NORMAL_ALL, screen,
screen.get_active_workspace());
// windows is only the windows on the current workspace. For
@ -264,7 +266,7 @@ const AltTabPopup = new Lang.Class({
_keyPressEvent : function(actor, event) {
let keysym = event.get_key_symbol();
let event_state = Shell.get_event_state(event);
let event_state = event.get_state();
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
@ -517,6 +519,7 @@ const AltTabPopup = new Lang.Class({
})
});
this._thumbnails = null;
this._appSwitcher._items[this._currentApp].remove_accessible_state (Atk.StateType.EXPANDED);
},
_createThumbnails : function() {
@ -537,6 +540,8 @@ const AltTabPopup = new Lang.Class({
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
});
this._appSwitcher._items[this._currentApp].add_accessible_state (Atk.StateType.EXPANDED);
}
});
@ -561,14 +566,14 @@ const SwitcherList = new Lang.Class({
this._list.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this._list.connect('allocate', Lang.bind(this, this._allocate));
this._clipBin = new St.Bin({style_class: 'cbin'});
this._clipBin.child = this._list;
this.actor.add_actor(this._clipBin);
this._scrollView = new St.ScrollView({ style_class: 'hfade',
enable_mouse_scrolling: false });
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER);
this._leftGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-left', vertical: true});
this._rightGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-right', vertical: true});
this.actor.add_actor(this._leftGradient);
this.actor.add_actor(this._rightGradient);
let scrollBox = new St.BoxLayout();
scrollBox.add_actor(this._list);
this._scrollView.add_actor(scrollBox);
this.actor.add_actor(this._scrollView);
// Those arrows indicate whether scrolling in one direction is possible
this._leftArrow = new St.DrawingArea({ style_class: 'switcher-arrow',
@ -599,21 +604,9 @@ const SwitcherList = new Lang.Class({
let childBox = new Clutter.ActorBox();
let scrollable = this._minSize > box.x2 - box.x1;
this._clipBin.allocate(box, flags);
childBox.x1 = 0;
childBox.y1 = 0;
childBox.x2 = this._leftGradient.width;
childBox.y2 = this.actor.height;
this._leftGradient.allocate(childBox, flags);
this._leftGradient.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
childBox.x1 = (this.actor.allocation.x2 - this.actor.allocation.x1) - this._rightGradient.width;
childBox.y1 = 0;
childBox.x2 = childBox.x1 + this._rightGradient.width;
childBox.y2 = this.actor.height;
this._rightGradient.allocate(childBox, flags);
this._rightGradient.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
box.y1 -= this.actor.get_theme_node().get_padding(St.Side.TOP);
box.y2 += this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
this._scrollView.allocate(box, flags);
let arrowWidth = Math.floor(leftPadding / 3);
let arrowHeight = arrowWidth * 2;
@ -622,7 +615,7 @@ const SwitcherList = new Lang.Class({
childBox.x2 = childBox.x1 + arrowWidth;
childBox.y2 = childBox.y1 + arrowHeight;
this._leftArrow.allocate(childBox, flags);
this._leftArrow.opacity = this._leftGradient.opacity;
this._leftArrow.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
arrowWidth = Math.floor(rightPadding / 3);
arrowHeight = arrowWidth * 2;
@ -631,7 +624,7 @@ const SwitcherList = new Lang.Class({
childBox.x2 = childBox.x1 + arrowWidth;
childBox.y2 = childBox.y1 + arrowHeight;
this._rightArrow.allocate(childBox, flags);
this._rightArrow.opacity = this._rightGradient.opacity;
this._rightArrow.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
},
addItem : function(item, label) {
@ -648,6 +641,8 @@ const SwitcherList = new Lang.Class({
bbox.label_actor = label;
this._items.push(bbox);
return bbox;
},
_onItemClicked: function (index) {
@ -679,47 +674,66 @@ const SwitcherList = new Lang.Class({
this._items[this._highlighted].add_style_pseudo_class('selected');
}
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
let [absItemX, absItemY] = this._items[index].get_transformed_position();
let [result, posX, posY] = this.actor.transform_stage_point(absItemX, 0);
let [containerWidth, containerHeight] = this.actor.get_transformed_size();
if (posX + this._items[index].get_width() > containerWidth)
this._scrollToRight();
else if (posX < 0)
else if (this._items[index].allocation.x1 - value < 0)
this._scrollToLeft();
},
_scrollToLeft : function() {
let x = this._items[this._highlighted].allocation.x1;
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
let item = this._items[this._highlighted];
if (item.allocation.x1 < value)
value = Math.min(0, item.allocation.x1);
else if (item.allocation.x2 > value + pageSize)
value = Math.max(upper, item.allocation.x2 - pageSize);
this._scrollableRight = true;
Tweener.addTween(this._list, { anchor_x: x,
time: POPUP_SCROLL_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () {
if (this._highlighted == 0) {
this._scrollableLeft = false;
this.actor.queue_relayout();
}
})
});
Tweener.addTween(adjustment,
{ value: value,
time: POPUP_SCROLL_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () {
if (this._highlighted == 0) {
this._scrollableLeft = false;
this.actor.queue_relayout();
}
})
});
},
_scrollToRight : function() {
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
let item = this._items[this._highlighted];
if (item.allocation.x1 < value)
value = Math.max(0, item.allocation.x1);
else if (item.allocation.x2 > value + pageSize)
value = Math.min(upper, item.allocation.x2 - pageSize);
this._scrollableLeft = true;
let monitor = Main.layoutManager.primaryMonitor;
let padding = this.actor.get_theme_node().get_horizontal_padding();
let parentPadding = this.actor.get_parent().get_theme_node().get_horizontal_padding();
let x = this._items[this._highlighted].allocation.x2 - monitor.width + padding + parentPadding;
Tweener.addTween(this._list, { anchor_x: x,
time: POPUP_SCROLL_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () {
if (this._highlighted == this._items.length - 1) {
this._scrollableRight = false;
this.actor.queue_relayout();
}
})
});
Tweener.addTween(adjustment,
{ value: value,
time: POPUP_SCROLL_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () {
if (this._highlighted == this._items.length - 1) {
this._scrollableRight = false;
this.actor.queue_relayout();
}
})
});
},
_itemActivated: function(n) {
@ -805,14 +819,6 @@ const SwitcherList = new Lang.Class({
let primary = Main.layoutManager.primaryMonitor;
let parentRightPadding = this.actor.get_parent().get_theme_node().get_padding(St.Side.RIGHT);
if (this.actor.allocation.x2 == primary.x + primary.width - parentRightPadding) {
if (this._squareItems)
childWidth = childHeight;
else {
let [childMin, childNat] = children[0].get_preferred_width(childHeight);
childWidth = childMin;
}
}
for (let i = 0; i < children.length; i++) {
if (this._items.indexOf(children[i]) != -1) {
@ -838,14 +844,6 @@ const SwitcherList = new Lang.Class({
// we don't allocate it.
}
}
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
let topPadding = this.actor.get_theme_node().get_padding(St.Side.TOP);
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
// Clip the area for scrolling
this._clipBin.set_clip(0, -topPadding, (this.actor.allocation.x2 - this.actor.allocation.x1) - leftPadding - rightPadding, this.actor.height + bottomPadding);
}
});
@ -1025,7 +1023,7 @@ const AppSwitcher = new Lang.Class({
_addIcon : function(appIcon) {
this.icons.push(appIcon);
this.addItem(appIcon.actor, appIcon.label);
let item = this.addItem(appIcon.actor, appIcon.label);
let n = this._arrows.length;
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
@ -1035,6 +1033,8 @@ const AppSwitcher = new Lang.Class({
if (appIcon.cachedWindows.length == 1)
arrow.hide();
else
item.add_accessible_state (Atk.StateType.EXPANDABLE);
}
});

View File

@ -10,6 +10,7 @@ const Signals = imports.signals;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Atk = imports.gi.Atk;
const AppFavorites = imports.ui.appFavorites;
const DND = imports.ui.dnd;
@ -148,7 +149,9 @@ const ViewByCategories = new Lang.Class({
this._categories = [];
this._apps = null;
this._categoryBox = new St.BoxLayout({ vertical: true, reactive: true });
this._categoryBox = new St.BoxLayout({ vertical: true,
reactive: true,
accessible_role: Atk.Role.LIST });
this._categoryScroll = new St.ScrollView({ x_fill: false,
y_fill: false,
style_class: 'vfade' });
@ -214,7 +217,8 @@ const ViewByCategories = new Lang.Class({
let button = new St.Button({ label: GLib.markup_escape_text (name, -1),
style_class: 'app-filter',
x_align: St.Align.START,
can_focus: true });
can_focus: true ,
accessible_role: Atk.Role.LIST_ITEM });
button.connect('clicked', Lang.bind(this, function() {
this._selectCategory(index);
}));
@ -339,7 +343,7 @@ const AppSearchProvider = new Lang.Class({
timestamp: 0 });
let event = Clutter.get_current_event();
let modifiers = event ? Shell.get_event_state(event) : 0;
let modifiers = event ? event.get_state() : 0;
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
if (openNewWindow)
@ -584,7 +588,7 @@ const AppWellIcon = new Lang.Class({
_onActivate: function (event) {
this.emit('launching');
let modifiers = Shell.get_event_state(event);
let modifiers = event.get_state();
if (this._onActivateOverride) {
this._onActivateOverride(event);
@ -624,7 +628,7 @@ const AppIconMenu = new Lang.Class({
_init: function(source) {
let side = St.Side.LEFT;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
side = St.Side.RIGHT;
this.parent(source.actor, 0.5, side);

View File

@ -129,7 +129,7 @@ const AutomountManager = new Lang.Class({
return false;
},
_sessionActive: function() {
isSessionActive: function() {
// Return whether the current session is active, using the
// right mechanism: either systemd if available or ConsoleKit
// as fallback.
@ -143,7 +143,7 @@ const AutomountManager = new Lang.Class({
_onDriveConnected: function() {
// if we're not in the current ConsoleKit session,
// or screensaver is active, don't play sounds
if (!this._sessionActive())
if (!this.isSessionActive())
return;
if (this._ssProxy.screenSaverActive)
@ -155,7 +155,7 @@ const AutomountManager = new Lang.Class({
_onDriveDisconnected: function() {
// if we're not in the current ConsoleKit session,
// or screensaver is active, don't play sounds
if (!this._sessionActive())
if (!this.isSessionActive())
return;
if (this._ssProxy.screenSaverActive)
@ -167,7 +167,7 @@ const AutomountManager = new Lang.Class({
_onDriveEjectButton: function(monitor, drive) {
// TODO: this code path is not tested, as the GVfs volume monitor
// doesn't emit this signal just yet.
if (!this._sessionActive())
if (!this.isSessionActive())
return;
// we force stop/eject in this case, so we don't have to pass a
@ -206,7 +206,7 @@ const AutomountManager = new Lang.Class({
if (params.checkSession) {
// if we're not in the current ConsoleKit session,
// don't attempt automount
if (!this._sessionActive())
if (!this.isSessionActive())
return;
if (this._ssProxy.screenSaverActive) {

View File

@ -174,7 +174,7 @@ const AutorunManager = new Lang.Class({
_onMountAdded: function(monitor, mount) {
// don't do anything if our session is not the currently
// active one
if (!Main.automountManager.ckListener.sessionActive)
if (!Main.automountManager.isSessionActive())
return;
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,

View File

@ -45,6 +45,21 @@ const BoxPointer = new Lang.Class({
this._xPosition = 0;
this._yPosition = 0;
this._sourceAlignment = 0.5;
this._capturedEventId = 0;
this._muteInput();
},
_muteInput: function() {
if (this._capturedEventId == 0)
this._capturedEventId = this.actor.connect('captured-event',
function() { return true; });
},
_unmuteInput: function() {
if (this._capturedEventId != 0) {
this.actor.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
},
show: function(animate, onComplete) {
@ -75,7 +90,11 @@ const BoxPointer = new Lang.Class({
xOffset: 0,
yOffset: 0,
transition: 'linear',
onComplete: onComplete,
onComplete: Lang.bind(this, function() {
this._unmuteInput();
if (onComplete)
onComplete();
}),
time: POPUP_ANIMATION_TIME });
},
@ -102,6 +121,8 @@ const BoxPointer = new Lang.Class({
}
}
this._muteInput();
Tweener.addTween(this, { opacity: 0,
xOffset: xOffset,
yOffset: yOffset,

View File

@ -42,6 +42,12 @@ const CheckBoxContainer = new Lang.Class({
},
_getPreferredHeight: function(actor, forWidth, alloc) {
/* FIXME: StBoxlayout currently does not handle
height-for-width children correctly, so hard-code
two lines for the label until that problem is fixed.
https://bugzilla.gnome.org/show_bug.cgi?id=672543 */
/*
let [minBoxHeight, natBoxHeight] =
this._box.get_preferred_height(forWidth);
let [minLabelHeight, natLabelHeight] =
@ -49,6 +55,14 @@ const CheckBoxContainer = new Lang.Class({
alloc.min_size = Math.max(minBoxHeight, minLabelHeight);
alloc.natural_size = Math.max(natBoxHeight, natLabelHeight);
*/
let [minBoxHeight, natBoxHeight] =
this._box.get_preferred_height(-1);
let [minLabelHeight, natLabelHeight] =
this.label.get_preferred_height(-1);
alloc.min_size = Math.max(minBoxHeight, 2 * minLabelHeight);
alloc.natural_size = Math.max(natBoxHeight, 2 * natLabelHeight);
},
_allocate: function(actor, box, flags) {
@ -93,5 +107,9 @@ const CheckBox = new Lang.Class({
setLabel: function(label) {
this._container.label.set_text(label);
},
getLabelActor: function() {
return this._container.label;
}
});

View File

@ -5,6 +5,7 @@ const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const Util = imports.misc.util;
const IconGrid = imports.ui.iconGrid;
@ -29,7 +30,9 @@ const Contact = new Lang.Class({
this.actor = new St.Bin({ style_class: 'contact',
reactive: true,
track_hover: true });
can_focus: true,
track_hover: true,
accessible_role: Atk.Role.PUSH_BUTTON });
let content = new St.BoxLayout( { style_class: 'contact-content',
vertical: false });
@ -68,6 +71,8 @@ const Contact = new Lang.Class({
x_align: St.Align.START,
y_align: St.Align.START });
this.actor.label_actor = aliasLabel;
let presence = this._createPresence(this.individual.presence_type);
details.add(presence, { x_fill: false,
y_fill: true,

View File

@ -233,7 +233,7 @@ const CtrlAltTabPopup = new Lang.Class({
_keyPressEvent : function(actor, event) {
let keysym = event.get_key_symbol();
let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK);
let shift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK);
if (shift && keysym == Clutter.KEY_Tab)
keysym = Clutter.ISO_Left_Tab;

View File

@ -36,7 +36,7 @@ const DashItemContainer = new Lang.Class({
Lang.bind(this, this._allocate));
this.actor._delegate = this;
this._label = null;
this.label = null;
this.child = null;
this._childScale = 1;
@ -91,32 +91,32 @@ const DashItemContainer = new Lang.Class({
},
showLabel: function() {
if (this._label == null)
if (this.label == null)
return;
this._label.opacity = 0;
this._label.show();
this.label.opacity = 0;
this.label.show();
let [stageX, stageY] = this.actor.get_transformed_position();
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
let labelHeight = this._label.get_height();
let labelHeight = this.label.get_height();
let yOffset = Math.floor((itemHeight - labelHeight) / 2)
let y = stageY + yOffset;
let node = this._label.get_theme_node();
let node = this.label.get_theme_node();
let xOffset = node.get_length('-x-offset');
let x;
if (St.Widget.get_default_direction () == St.TextDirection.RTL)
x = stageX - this._label.get_width() - xOffset;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
x = stageX - this.label.get_width() - xOffset;
else
x = stageX + this.actor.get_width() + xOffset;
this._label.set_position(x, y);
Tweener.addTween(this._label,
this.label.set_position(x, y);
Tweener.addTween(this.label,
{ opacity: 255,
time: DASH_ITEM_LABEL_SHOW_TIME,
transition: 'easeOutQuad',
@ -124,22 +124,22 @@ const DashItemContainer = new Lang.Class({
},
setLabelText: function(text) {
if (this._label == null)
this._label = new St.Label({ style_class: 'dash-label'});
if (this.label == null)
this.label = new St.Label({ style_class: 'dash-label'});
this._label.set_text(text);
Main.layoutManager.addChrome(this._label);
this._label.hide();
this.label.set_text(text);
Main.layoutManager.addChrome(this.label);
this.label.hide();
},
hideLabel: function () {
this._label.opacity = 255;
Tweener.addTween(this._label,
this.label.opacity = 255;
Tweener.addTween(this.label,
{ opacity: 0,
time: DASH_ITEM_LABEL_HIDE_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this._label.hide();
this.label.hide();
})
});
},
@ -387,6 +387,7 @@ const Dash = new Lang.Class({
let srcIsFavorite = (id in favorites);
if (srcIsFavorite &&
app.get_state() != Shell.AppState.RUNNING &&
dragEvent.source.actor &&
this.actor.contains (dragEvent.source.actor) &&
this._favRemoveTarget == null) {
@ -439,6 +440,9 @@ const Dash = new Lang.Class({
item.setChild(display.actor);
item.setLabelText(app.get_name());
// Override default AppWellIcon label_actor
display.actor.label_actor = item.label;
display.icon.setIconSize(this.iconSize);
display.actor.connect('notify::hover',
@ -743,20 +747,10 @@ const Dash = new Lang.Class({
numChildren--;
}
let pos = Math.round(y * numChildren / boxHeight);
let pos = Math.floor(y * numChildren / boxHeight);
if (pos != this._dragPlaceholderPos && pos <= numFavorites) {
if (this._animatingPlaceholdersCount > 0) {
let appChildren = children.filter(function(actor) {
return actor._delegate &&
actor._delegate.child &&
actor._delegate.child._delegate &&
actor._delegate.child._delegate.app;
});
this._dragPlaceholderPos = children.indexOf(appChildren[pos]);
} else {
this._dragPlaceholderPos = pos;
}
if (pos != this._dragPlaceholderPos && pos <= numFavorites && this._animatingPlaceholdersCount == 0) {
this._dragPlaceholderPos = pos;
// Don't allow positioning before or after self
if (favPos != -1 && (pos == favPos || pos == favPos + 1)) {
@ -793,6 +787,14 @@ const Dash = new Lang.Class({
this._dragPlaceholder.animateIn();
}
// Remove the drag placeholder if we are not in the
// "favorites zone"
if (pos > numFavorites && this._dragPlaceholder) {
this._clearDragPlaceholder();
}
if (!this._dragPlaceholder)
return DND.DragMotionResult.NO_DROP;
let srcIsFavorite = (favPos != -1);
if (srcIsFavorite)
@ -835,6 +837,11 @@ const Dash = new Lang.Class({
favPos++;
}
// No drag placeholder means we don't wan't to favorite the app
// and we are dragging it to its original position
if (!this._dragPlaceholder)
return true;
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
function () {
let appFavorites = AppFavorites.getAppFavorites();

View File

@ -8,6 +8,7 @@ const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const Params = imports.misc.params;
const Util = imports.misc.util;
@ -52,10 +53,15 @@ const DateMenuButton = new Lang.Class({
let vbox;
let menuAlignment = 0.25;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
menuAlignment = 1.0 - menuAlignment;
this.parent(menuAlignment);
// At this moment calendar menu is not keyboard navigable at
// all (so not accessible), so it doesn't make sense to set as
// role ATK_ROLE_MENU like other elements of the panel.
this.actor.accessible_role = Atk.Role.LABEL;
this._clock = new St.Label();
this.actor.add_actor(this._clock);

View File

@ -120,13 +120,7 @@ const _Draggable = new Lang.Class({
return false;
this._buttonDown = true;
// special case St.Button: grabbing the pointer would mess up the
// internal state, so we start the drag manually on hover change
if (this.actor instanceof St.Button)
this.actor.connect('notify::hover',
Lang.bind(this, this._onButtonHoverChanged));
else
this._grabActor();
this._grabActor();
let [stageX, stageY] = event.get_coords();
this._dragStartX = stageX;
@ -135,15 +129,6 @@ const _Draggable = new Lang.Class({
return false;
},
_onButtonHoverChanged: function(button) {
if (button.hover || !button.pressed)
return;
button.fake_release();
this.startDrag(this._dragStartX, this._dragStartY,
global.get_current_time());
},
_grabActor: function() {
Clutter.grab_pointer(this.actor);
this._onEventId = this.actor.connect('event',
@ -232,6 +217,13 @@ const _Draggable = new Lang.Class({
currentDraggable = this;
this._dragInProgress = true;
// Special-case St.Button: the pointer grab messes with the internal
// state, so force a reset to a reasonable state here
if (this.actor instanceof St.Button) {
this.actor.fake_release();
this.actor.hover = false;
}
this.emit('drag-begin', time);
if (this._onEventId)
this._ungrabActor();

View File

@ -116,30 +116,12 @@ const DialogContent = {
};
function findAppFromInhibitor(inhibitor) {
let desktopFile = inhibitor.app_id;
let [desktopFile] = inhibitor.GetAppIdSync();
if (!GLib.str_has_suffix(desktopFile, '.desktop'))
desktopFile += '.desktop';
desktopFile += '.desktop';
let candidateDesktopFiles = [];
candidateDesktopFiles.push(desktopFile);
candidateDesktopFiles.push('gnome-' + desktopFile);
let appSystem = Shell.AppSystem.get_default();
let app = null;
for (let i = 0; i < candidateDesktopFiles.length; i++) {
try {
app = appSystem.lookup_app(candidateDesktopFiles[i]);
if (app)
break;
} catch(e) {
// ignore errors
}
}
return app;
return Shell.AppSystem.get_default().lookup_heuristic_basename(desktopFile);
}
const ListItem = new Lang.Class({
@ -482,7 +464,8 @@ const EndSessionDialog = new Lang.Class({
let app = findAppFromInhibitor(inhibitor);
if (app) {
let item = new ListItem(app, inhibitor.reason);
let [reason] = inhibitor.GetReasonSync();
let item = new ListItem(app, reason);
item.connect('activate',
Lang.bind(this, function() {
this.close(global.get_current_time());
@ -505,7 +488,7 @@ const EndSessionDialog = new Lang.Class({
this._type = type;
if (!(this._type in DialogContent)) {
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
"Unknown dialog type requested");
return;
}
@ -521,7 +504,7 @@ const EndSessionDialog = new Lang.Class({
this._updateButtons();
if (!this.open(timestamp)) {
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
"Cannot grab pointer and keyboard");
return;
}

View File

@ -48,11 +48,6 @@ function init() {
window.C_ = Gettext.pgettext;
window.ngettext = Gettext.ngettext;
// Set the default direction for St widgets (this needs to be done before any use of St)
if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) {
St.Widget.set_default_direction(St.TextDirection.RTL);
}
// Miscellaneous monkeypatching
_patchContainerClass(St.BoxLayout);
_patchContainerClass(St.Table);
@ -64,10 +59,14 @@ function init() {
let origToString = Object.prototype.toString;
Object.prototype.toString = function() {
let base = origToString.call(this);
if ('actor' in this && this.actor instanceof Clutter.Actor)
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
else
try {
if ('actor' in this && this.actor instanceof Clutter.Actor)
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
else
return base;
} catch(e) {
return base;
}
};
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783

View File

@ -103,8 +103,6 @@ function uninstallExtensionFromUUID(uuid) {
_signals.emit('extension-state-changed', extension);
delete ExtensionUtils.extensions[uuid];
delete extensionStateObjs[uuid];
delete errors[uuid];
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
@ -251,7 +249,8 @@ function loadExtension(dir, type, enabled) {
let extension;
if (ExtensionUtils.extensions[uuid] != undefined) {
throw new Error('extension already loaded');
global.logError('Extension "%s" is already loaded'.format(uuid));
return;
}
try {
@ -430,13 +429,11 @@ const InstallExtensionDialog = new Lang.Class({
},
_onInstallButtonPressed: function(button, event) {
let extension = { uuid: this._uuid,
state: ExtensionState.DOWNLOADING,
error: '' };
let state = { uuid: this._uuid,
state: ExtensionState.DOWNLOADING,
error: '' };
ExtensionUtils.extensions[this._uuid] = extension;
_signals.emit('extension-state-changed', extension);
_signals.emit('extension-state-changed', state);
let params = { version_tag: this._version_tag,
shell_version: Config.PACKAGE_VERSION,

View File

@ -146,11 +146,6 @@ const BaseIcon = new Lang.Class({
size = found ? len : ICON_SIZE;
}
// don't create icons unnecessarily
if (size == this.iconSize &&
this._iconBin.child)
return;
this._createIconTexture(size);
}
});
@ -251,7 +246,7 @@ const IconGrid = new Lang.Class({
let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
let childBox = new Clutter.ActorBox();
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
let _x = box.x2 - (x + width);
childBox.x1 = Math.floor(_x - childXSpacing);
} else {

View File

@ -269,6 +269,11 @@ const Keyboard = new Lang.Class({
this._addKeys();
// Keys should be layout according to the group, not the
// locale; as Caribou already provides the expected layout,
// this means enforcing LTR for all locales.
this.actor.text_direction = Clutter.TextDirection.LTR;
this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged));
this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));

207
js/ui/keyringPrompt.js Normal file
View File

@ -0,0 +1,207 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const Pango = imports.gi.Pango;
const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
const Gcr = imports.gi.Gcr;
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,
_init: function() {
this.parent({ styleClass: 'prompt-dialog' });
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', Lang.bind(this, this._onShowPassword));
this.prompt.connect('show-confirm', Lang.bind(this, this._onShowConfirm));
this.prompt.connect('hide-prompt', Lang.bind(this, this._onHidePrompt));
let mainContentBox = new St.BoxLayout({ style_class: 'prompt-dialog-main-layout',
vertical: false });
this.contentLayout.add(mainContentBox);
let icon = new St.Icon({ icon_name: 'dialog-password-symbolic' });
mainContentBox.add(icon,
{ x_fill: true,
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.START });
this._messageBox = new St.BoxLayout({ style_class: 'prompt-dialog-message-layout',
vertical: true });
mainContentBox.add(this._messageBox,
{ y_align: St.Align.START, expand: true, x_fill: true, y_fill: true });
let subject = new St.Label({ style_class: 'prompt-dialog-headline' });
this.prompt.bind_property('message', subject, 'text', GObject.BindingFlags.SYNC_CREATE);
this._messageBox.add(subject,
{ y_fill: false,
y_align: St.Align.START });
let description = new St.Label({ style_class: 'prompt-dialog-description' });
description.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
description.clutter_text.line_wrap = true;
this.prompt.bind_property('description', description, 'text', GObject.BindingFlags.SYNC_CREATE);
this._messageBox.add(description,
{ y_fill: true,
y_align: St.Align.START });
this._controlTable = null;
let buttons = [{ label: '',
action: Lang.bind(this, this._onCancelButton),
key: Clutter.Escape
},
{ label: '',
action: Lang.bind(this, this._onContinueButton)
}]
this.setButtons(buttons);
this._cancelButton = buttons[0].button;
this._continueButton = buttons[1].button;
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
},
_buildControlTable: function() {
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
let row = 0;
if (this.prompt.password_visible) {
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
label.set_text(_("Password:"));
table.add(label, { row: row, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START });
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
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 });
row++;
} else {
this._passwordEntry = null;
}
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 });
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
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 });
row++;
} else {
this._confirmEntry = null;
}
this.prompt.set_password_actor(this._passwordEntry ? this._passwordEntry.clutter_text : null);
this.prompt.set_confirm_actor(this._confirmEntry ? this._confirmEntry.clutter_text : null);
if (this.prompt.choice_visible) {
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 });
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 });
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
if (this._controlTable) {
this._controlTable.destroy_all_children();
this._controlTable.destroy();
}
this._controlTable = table;
this._messageBox.add(table, { x_fill: true, y_fill: true });
},
_ensureOpen: function() {
// NOTE: ModalDialog.open() is safe to call if the dialog is
// already open - it just returns true without side-effects
if (this.open())
return true;
// The above fail if e.g. unable to get input grab
//
// In an ideal world this wouldn't happen (because the
// Shell is in complete control of the session) but that's
// just not how things work right now.
log('keyringPrompt: Failed to show modal dialog.' +
' Dismissing prompt request');
this.prompt.cancel()
return false;
},
_onShowPassword: function(prompt) {
this._buildControlTable();
this._ensureOpen();
this._passwordEntry.grab_key_focus();
},
_onShowConfirm: function(prompt) {
this._buildControlTable();
this._ensureOpen();
this._continueButton.grab_key_focus();
},
_onHidePrompt: function(prompt) {
this.close();
},
_onPasswordActivate: function() {
if (this.prompt.confirm_visible)
this._confirmEntry.grab_key_focus();
else
this._onContinueButton();
},
_onConfirmActivate: function() {
this._onContinueButton();
},
_onContinueButton: function() {
this.prompt.complete()
},
_onCancelButton: function() {
this.prompt.cancel()
},
});
function init() {
prompter = new Gcr.SystemPrompter();
prompter.connect('new-prompt', function(prompter) {
let dialog = new KeyringDialog();
return dialog.prompt;
});
let connection = Gio.DBus.session;
prompter.register(connection);
Gio.bus_own_name_on_connection (connection, 'org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.REPLACE, null, null);
}

View File

@ -22,7 +22,7 @@ const LayoutManager = new Lang.Class({
Name: 'LayoutManager',
_init: function () {
this._rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
this.monitors = [];
this.primaryMonitor = null;
this.primaryIndex = -1;
@ -405,7 +405,7 @@ const HotCorner = new Lang.Class({
this.actor.add_actor(this._corner);
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
this._corner.set_position(this.actor.width - this._corner.width, 0);
this.actor.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
} else {
@ -457,7 +457,7 @@ const HotCorner = new Lang.Class({
ripple._opacity = startOpacity;
if (ripple.get_direction() == St.TextDirection.RTL)
if (ripple.get_text_direction() == Clutter.TextDirection.RTL)
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
ripple.visible = true;

View File

@ -400,7 +400,14 @@ const ObjInspector = new Lang.Class({
button.connect('clicked', Lang.bind(this, this.close));
hbox.add(button);
if (typeof(obj) == typeof({})) {
let properties = [];
for (let propName in obj) {
properties.push(propName);
}
properties.sort();
for (let i = 0; i < properties.length; i++) {
let propName = properties[i];
let valueStr;
let link;
try {
@ -1140,7 +1147,7 @@ const LookingGlass = new Lang.Class({
// Handle key events which are relevant for all tabs of the LookingGlass
_globalKeyPressEvent : function(actor, event) {
let symbol = event.get_key_symbol();
let modifierState = Shell.get_event_state(event);
let modifierState = event.get_state();
if (symbol == Clutter.Escape) {
if (this._objInspector.actor.visible) {
this._objInspector.close();

View File

@ -15,6 +15,7 @@ const AutorunManager = imports.ui.autorunManager;
const CtrlAltTab = imports.ui.ctrlAltTab;
const EndSessionDialog = imports.ui.endSessionDialog;
const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
const KeyringPrompt = imports.ui.keyringPrompt;
const Environment = imports.ui.environment;
const ExtensionSystem = imports.ui.extensionSystem;
const Keyboard = imports.ui.keyboard;
@ -37,6 +38,7 @@ const XdndHandler = imports.ui.xdndHandler;
const StatusIconDispatcher = imports.ui.statusIconDispatcher;
const Util = imports.misc.util;
const OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
const DEFAULT_BACKGROUND_COLOR = new Clutter.Color();
DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
@ -70,6 +72,7 @@ let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _gdmCssStylesheet = null;
let _overridesSettings = null;
let background = null;
@ -110,7 +113,9 @@ function _initRecorder() {
} else {
// read the parameters from GSettings always in case they have changed
recorder.set_framerate(recorderSettings.get_int('framerate'));
recorder.set_filename('shell-%d%u-%c.' + recorderSettings.get_string('file-extension'));
/* Translators: this is a filename used for screencast recording */
// xgettext:no-c-format
recorder.set_filename(_("Screencast from %d %t") + '.' + recorderSettings.get_string('file-extension'));
let pipeline = recorderSettings.get_string('pipeline');
if (!pipeline.match(/^\s*$/))
@ -166,9 +171,11 @@ function start() {
// and recalculate application associations, so to avoid
// races for now we initialize it here. It's better to
// be predictable anyways.
Shell.WindowTracker.get_default();
let tracker = Shell.WindowTracker.get_default();
Shell.AppUsage.get_default();
tracker.connect('startup-sequence-changed', _queueCheckWorkspaces);
// The stage is always covered so Clutter doesn't need to clear it; however
// the color is used as the default contents for the Mutter root background
// actor so set it anyways.
@ -187,9 +194,16 @@ function start() {
for (let i = 0; i < children.length; i++)
children[i].allocate_preferred_size(flags);
});
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.SIZE });
uiGroup.add_constraint(constraint);
uiGroup.connect('get-preferred-width',
function(actor, forHeight, alloc) {
let width = global.stage.width;
[alloc.min_size, alloc.natural_size] = [width, width];
});
uiGroup.connect('get-preferred-height',
function(actor, forWidth, alloc) {
let height = global.stage.height;
[alloc.min_size, alloc.natural_size] = [height, height];
});
global.window_group.reparent(uiGroup);
global.overlay_group.reparent(uiGroup);
global.stage.add_actor(uiGroup);
@ -230,6 +244,9 @@ function start() {
// Attempt to become a PolicyKit authentication agent
PolkitAuthenticationAgent.init()
// Become a prompter for gnome keyring
KeyringPrompt.init();
_startDate = new Date();
global.stage.connect('captured-event', _globalKeyPressHandler);
@ -244,6 +261,9 @@ function start() {
Scripting.runPerfScript(module, perfOutput);
}
_overridesSettings = new Gio.Settings({ schema: OVERRIDES_SCHEMA });
_overridesSettings.connect('changed::dynamic-workspaces', _queueCheckWorkspaces);
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
@ -268,17 +288,30 @@ function _checkWorkspaces() {
let i;
let emptyWorkspaces = [];
if (!Meta.prefs_get_dynamic_workspaces()) {
_checkWorkspacesId = 0;
return false;
}
for (i = 0; i < _workspaces.length; i++) {
let lastRemoved = _workspaces[i]._lastRemovedWindow;
if (lastRemoved &&
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
if ((lastRemoved &&
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG)) ||
_workspaces[i]._keepAliveId)
emptyWorkspaces[i] = false;
else
emptyWorkspaces[i] = true;
}
let sequences = Shell.WindowTracker.get_default().get_startup_sequences();
for (i = 0; i < sequences.length; i++) {
let index = sequences[i].get_workspace();
if (index >= 0 && index <= global.screen.n_workspaces)
emptyWorkspaces[index] = false;
}
let windows = global.get_window_actors();
for (i = 0; i < windows.length; i++) {
let win = windows[i];
@ -326,6 +359,17 @@ function _checkWorkspaces() {
return false;
}
function keepWorkspaceAlive(workspace, duration) {
if (workspace._keepAliveId)
Mainloop.source_remove(workspace._keepAliveId);
workspace._keepAliveId = Mainloop.timeout_add(duration, function() {
workspace._keepAliveId = 0;
_queueCheckWorkspaces();
return false;
});
}
function _windowRemoved(workspace, window) {
workspace._lastRemovedWindow = window;
_queueCheckWorkspaces();
@ -570,7 +614,8 @@ function _globalKeyPressHandler(actor, event) {
let symbol = event.get_key_symbol();
let keyCode = event.get_key_code();
let modifierState = Shell.get_event_state(event);
let ignoredModifiers = global.display.get_ignored_modifier_mask();
let modifierState = event.get_state() & ~ignoredModifiers;
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
let action = global.display.get_keybinding_action(keyCode, modifierState);

View File

@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Atk = imports.gi.Atk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@ -261,7 +262,9 @@ const FocusGrabber = new Lang.Class({
this._hasFocus = true;
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
if (!this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false))
this.actor.grab_key_focus();
this.emit('focus-grabbed');
},
@ -423,7 +426,7 @@ const Notification = new Lang.Class({
this._bannerBodyText = null;
this._bannerBodyMarkup = false;
this._titleFitsInBannerMode = true;
this._titleDirection = St.TextDirection.NONE;
this._titleDirection = Clutter.TextDirection.DEFAULT;
this._spacing = 0;
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
this._imageBin = null;
@ -433,7 +436,7 @@ const Notification = new Lang.Class({
this.destroy(reason);
}));
this.actor = new St.Button();
this.actor = new St.Button({ accessible_role: Atk.Role.NOTIFICATION });
this.actor._delegate = this;
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
@ -544,9 +547,9 @@ const Notification = new Lang.Class({
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
this._titleDirection = St.TextDirection.RTL;
this._titleDirection = Clutter.TextDirection.RTL;
else
this._titleDirection = St.TextDirection.LTR;
this._titleDirection = Clutter.TextDirection.LTR;
// Let the title's text direction control the overall direction
// of the notification - in case where different scripts are used
@ -554,7 +557,7 @@ const Notification = new Lang.Class({
// arguably for action buttons as well. Labels other than the title
// will be allocated at the available width, so that their alignment
// is done correctly automatically.
this._table.set_direction(this._titleDirection);
this._table.set_text_direction(this._titleDirection);
// Unless the notification has custom content, we save this._bannerBodyText
// to add it to the content of the notification if the notification is
@ -574,7 +577,7 @@ const Notification = new Lang.Class({
if (params.body)
this.addBody(params.body, params.bodyMarkup);
this._updated();
this.updated();
},
setIconVisible: function(visible) {
@ -613,7 +616,7 @@ const Notification = new Lang.Class({
}
this._contentArea.add(actor, style ? style : {});
this._updated();
this.updated();
},
// addBody:
@ -676,7 +679,7 @@ const Notification = new Lang.Class({
this._table.add_style_class_name('multi-line-notification');
this._table.add(this._actionArea, props);
this._updateLastColumnSettings();
this._updated();
this.updated();
},
_updateLastColumnSettings: function() {
@ -757,7 +760,7 @@ const Notification = new Lang.Class({
this._buttonFocusManager.add_group(this._buttonBox);
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
this._updated();
this.updated();
},
setUrgency: function(urgency) {
@ -802,7 +805,7 @@ const Notification = new Lang.Class({
let titleBox = new Clutter.ActorBox();
let titleBoxW = Math.min(titleNatW, availWidth);
if (this._titleDirection == St.TextDirection.RTL) {
if (this._titleDirection == Clutter.TextDirection.RTL) {
titleBox.x1 = availWidth - titleBoxW;
titleBox.x2 = availWidth;
} else {
@ -821,7 +824,7 @@ const Notification = new Lang.Class({
} else {
let bannerBox = new Clutter.ActorBox();
if (this._titleDirection == St.TextDirection.RTL) {
if (this._titleDirection == Clutter.TextDirection.RTL) {
bannerBox.x1 = 0;
bannerBox.x2 = titleBox.x1 - this._spacing;
@ -853,7 +856,7 @@ const Notification = new Lang.Class({
if (this._canExpandContent()) {
this._addBannerBody();
this._table.add_style_class_name('multi-line-notification');
this._updated();
this.updated();
}
return false;
}));
@ -864,7 +867,7 @@ const Notification = new Lang.Class({
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
},
_updated: function() {
updated: function() {
if (this.expanded)
this.expand(false);
},
@ -1005,9 +1008,9 @@ const Source = new Lang.Class({
let childBox = new Clutter.ActorBox();
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._counterBin.get_preferred_size();
let direction = this.actor.get_direction();
let direction = this.actor.get_text_direction();
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
// allocate on the right in LTR
childBox.x1 = box.x2 - naturalWidth;
childBox.x2 = box.x2;
@ -1341,16 +1344,14 @@ const MessageTray = new Lang.Class({
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
this._onStatusChanged(proxy.status);
}));
this._userStatus = GnomeSession.PresenceStatus.AVAILABLE;
this._busy = false;
this._backFromAway = false;
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
this._onStatusChanged(status);
}));
this.actor = new St.Group({ name: 'message-tray',
reactive: true,
track_hover: true });
this.actor = new St.Widget({ name: 'message-tray',
reactive: true,
track_hover: true });
this.actor.connect('notify::hover', Lang.bind(this, this._onTrayHoverChanged));
this._notificationBin = new St.Bin();
@ -1389,6 +1390,12 @@ const MessageTray = new Lang.Class({
this._summaryItemTitleWidth = 0;
this._pointerBarrier = 0;
this._unseenNotifications = [];
this._idleMonitorWatchId = 0;
this._backFromAway = false;
this.idleMonitor = new Shell.IdleMonitor();
// To simplify the summary item animation code, we pretend
// that there's an invisible SummaryItem to the left of the
// leftmost real summary item, and that it's expanded when all
@ -1491,7 +1498,7 @@ const MessageTray = new Lang.Class({
this._summaryBin.x = 0;
this._summaryBin.width = monitor.width;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
this._corner.x = 0;
else
this._corner.x = Main.layoutManager.trayBox.width - 1;
@ -1632,6 +1639,10 @@ const MessageTray = new Lang.Class({
},
_onNotificationDestroy: function(notification) {
let unseenNotificationsIndex = this._unseenNotifications.indexOf(notification);
if (unseenNotificationsIndex != -1)
this._unseenNotifications.splice(unseenNotificationsIndex, 1);
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
this._updateNotificationTimeout(0);
this._notificationRemoved = true;
@ -1915,16 +1926,10 @@ const MessageTray = new Lang.Class({
},
_onStatusChanged: function(status) {
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
this._userStatus = status;
if (status == GnomeSession.PresenceStatus.BUSY) {
// remove notification and allow the summary to be closed now
this._updateNotificationTimeout(0);
if (this._summaryTimeoutId) {
Mainloop.source_remove(this._summaryTimeoutId);
this._summaryTimeoutId = 0;
}
this._unsetSummaryTimeout();
this._busy = true;
} else if (status != GnomeSession.PresenceStatus.IDLE) {
// We preserve the previous value of this._busy if the status turns to IDLE
@ -1954,6 +1959,7 @@ const MessageTray = new Lang.Class({
this._pointerInTray = false;
this._pointerInSummary = false;
this._updateNotificationTimeout(0);
this._unsetSummaryTimeout();
this._updateState();
}
return false;
@ -1964,6 +1970,7 @@ const MessageTray = new Lang.Class({
this._pointerInTray = false;
this._pointerInSummary = false;
this._updateNotificationTimeout(0);
this._unsetSummaryTimeout();
this._updateState();
},
@ -2009,15 +2016,13 @@ const MessageTray = new Lang.Class({
|| notificationsVisible;
if (this._summaryState == State.HIDDEN && !mustHideSummary) {
if (this._backFromAway) {
// Immediately set this to false, so that we don't schedule a timeout later
this._backFromAway = false;
if (!this._busy)
this._showSummary(LONGER_SUMMARY_TIMEOUT);
} else if (notificationsDone && this._newSummaryItems.length > 0 && !this._busy) {
this._showSummary(SUMMARY_TIMEOUT);
} else if (summarySummoned) {
if (summarySummoned) {
this._showSummary(0);
} else if (notificationsDone && !this._busy) {
if (this._backFromAway && this._unseenNotifications.length > 0)
this._showSummary(LONGER_SUMMARY_TIMEOUT);
else if (this._newSummaryItems.length > 0)
this._showSummary(SUMMARY_TIMEOUT);
}
} else if (this._summaryState == State.SHOWN) {
if (!summaryPinned || mustHideSummary)
@ -2106,8 +2111,32 @@ const MessageTray = new Lang.Class({
});
},
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
this._idleMonitorWatchId = 0;
if (userBecameIdle) {
// The user became idle, which means the user was active while the notifications were
// shown and we can unset this._unseenNotifications .
this._unseenNotiications = [];
} else if (this._unseenNotifications.length == 1 && this._unseenNotifications[0] == this._notification) {
// The user became active while the only notification in this._unseenNotifications is being shown
// as this._notification , so we can unset this._unseenNotifications .
this._unseenNotifications = [];
} else {
// The user became active and we have one or more unseen notifications. We should show
// the message tray to the user to inform the user about the missed notifications.
this._backFromAway = true;
this._updateState();
}
},
_showNotification: function() {
this._notification = this._notificationQueue.shift();
this._unseenNotifications.push(this._notification);
if (this._idleMonitorWatchId == 0)
this._idleMonitorWatchId = this.idleMonitor.add_watch(1000,
Lang.bind(this, this._onIdleMonitorWatch));
this._notificationClickedId = this._notification.connect('done-displaying',
Lang.bind(this, this._escapeTray));
this._notificationBin.child = this._notification.actor;
@ -2186,6 +2215,13 @@ const MessageTray = new Lang.Class({
Lang.bind(this, this._notificationTimeout));
},
_unsetSummaryTimeout: function(timeout) {
if (this._summaryTimeoutId) {
Mainloop.source_remove(this._summaryTimeoutId);
this._summaryTimeoutId = 0;
}
},
_notificationTimeout: function() {
let [x, y, mods] = global.get_pointer();
if (y > this._lastSeenMouseY + 10 && !this.actor.hover) {
@ -2269,6 +2305,7 @@ const MessageTray = new Lang.Class({
},
_showSummary: function(timeout) {
this._updateSeenSummaryItems();
this._summaryBin.opacity = 0;
this._summaryBin.y = this.actor.height;
this._tween(this._summaryBin, '_summaryState', State.SHOWN,
@ -2283,8 +2320,6 @@ const MessageTray = new Lang.Class({
},
_showSummaryCompleted: function(timeout) {
this._newSummaryItems = [];
if (timeout != 0) {
this._summaryTimeoutId =
Mainloop.timeout_add(timeout * 1000,
@ -2299,6 +2334,7 @@ const MessageTray = new Lang.Class({
},
_hideSummary: function() {
this._updateSeenSummaryItems();
this._tween(this._summaryBin, '_summaryState', State.HIDDEN,
{ opacity: 0,
time: ANIMATION_TIME,
@ -2306,13 +2342,20 @@ const MessageTray = new Lang.Class({
onComplete: this._hideSummaryCompleted,
onCompleteScope: this,
});
this._newSummaryItems = [];
},
_hideSummaryCompleted: function() {
this._setExpandedSummaryItem(null);
},
_updateSeenSummaryItems: function() {
if (this._backFromAway) {
this._backFromAway = false;
this._unseenNotifications = [];
}
this._newSummaryItems = [];
},
_showSummaryBoxPointer: function() {
this._summaryBoxPointerItem = this._clickedSummaryItem;
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',

View File

@ -10,6 +10,7 @@ const Pango = imports.gi.Pango;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const Atk = imports.gi.Atk;
const Params = imports.misc.params;
@ -40,9 +41,10 @@ const ModalDialog = new Lang.Class({
this._hasModal = false;
this._shellReactive = params.shellReactive;
this._group = new St.Group({ visible: false,
x: 0,
y: 0 });
this._group = new St.Widget({ visible: false,
x: 0,
y: 0,
accessible_role: Atk.Role.DIALOG });
Main.uiGroup.add_actor(this._group);
let constraint = new Clutter.BindConstraint({ source: global.stage,
@ -87,6 +89,7 @@ const ModalDialog = new Lang.Class({
y_align: St.Align.START });
this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
visible: false,
vertical: false });
this._dialogLayout.add(this._buttonLayout,
{ expand: true,
@ -95,6 +98,7 @@ const ModalDialog = new Lang.Class({
global.focus_manager.add_group(this._dialogLayout);
this._initialKeyFocus = this._dialogLayout;
this._initialKeyFocusDestroyId = 0;
this._savedKeyFocus = null;
},
@ -108,6 +112,8 @@ const ModalDialog = new Lang.Class({
this._buttonLayout.destroy_all_children();
this._actionKeys = {};
this._buttonLayout.visible = (buttons.length > 0);
for (let i = 0; i < buttons.length; i++) {
let buttonInfo = buttons[i];
let label = buttonInfo['label'];
@ -129,8 +135,7 @@ const ModalDialog = new Lang.Class({
else
x_alignment = St.Align.MIDDLE;
if (this._initialKeyFocus == this._dialogLayout ||
this._buttonLayout.contains(this._initialKeyFocus))
if (!this._initialKeyFocusDestroyId)
this._initialKeyFocus = buttonInfo.button;
this._buttonLayout.add(buttonInfo.button,
{ expand: true,
@ -200,7 +205,15 @@ const ModalDialog = new Lang.Class({
},
setInitialKeyFocus: function(actor) {
if (this._initialKeyFocusDestroyId)
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
this._initialKeyFocus = this._dialogLayout;
this._initialKeyFocusDestroyId = 0;
}));
},
open: function(timestamp) {

View File

@ -531,7 +531,8 @@ const VPNRequestHandler = new Lang.Class({
let contentOverride;
try {
keyfile.load_from_data(this._dataStdout.peek_buffer(), -1,
let data = this._dataStdout.peek_buffer();
keyfile.load_from_data(data.toString(), data.length,
GLib.KeyFileFlags.NONE);
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)

View File

@ -221,12 +221,19 @@ const NotificationDaemon = new Lang.Class({
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
let id;
for (let hint in hints) {
// unpack the variants
hints[hint] = hints[hint].deep_unpack();
}
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
// Filter out chat, presence, calls and invitation notifications from
// Empathy, since we handle that information from telepathyClient.js
if (appName == 'Empathy' && (hints['category'] == 'im.received' ||
hints['category'] == 'x-empathy.im.room-invitation' ||
hints['category'] == 'x-empathy.call.incoming' ||
hints['category'] == 'x-empathy.call.incoming"' ||
hints['category'] == 'x-empathy.transfer.incoming' ||
hints['category'] == 'x-empathy.im.subscription-request' ||
hints['category'] == 'presence.online' ||
hints['category'] == 'presence.offline')) {
@ -249,13 +256,6 @@ const NotificationDaemon = new Lang.Class({
}
}
for (let hint in hints) {
// unpack the variants
hints[hint] = hints[hint].deep_unpack();
}
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
// Be compatible with the various hints for image data and image path
// 'image-data' and 'image-path' are the latest name of these hints, introduced in 1.2

View File

@ -126,8 +126,11 @@ const Overview = new Lang.Class({
this._spacing = 0;
this._group = new St.Group({ name: 'overview',
reactive: true });
/* Translators: This is the main view to select
activities. See also note for "Activities" string. */
this._group = new St.Widget({ name: 'overview',
accessible_name: _("Overview"),
reactive: true });
this._group._delegate = this;
this._group.connect('style-changed',
Lang.bind(this, function() {
@ -357,7 +360,7 @@ const Overview = new Lang.Class({
let direction;
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
direction = stageX > this._dragStartX ? -1 : 1;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
direction *= -1;
} else {
direction = stageY > this._dragStartY ? -1 : 1;
@ -449,7 +452,7 @@ const Overview = new Lang.Class({
return true;
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size;
else
this._scrollAdjustment.value += (dx / primary.width) * this._scrollAdjustment.page_size;
@ -490,7 +493,7 @@ const Overview = new Lang.Class({
this.hide();
let primary = Main.layoutManager.primaryMonitor;
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
let contentY = Main.panel.actor.height;
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;

View File

@ -4,12 +4,15 @@ const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Signals = imports.signals;
const Atk = imports.gi.Atk;
const Config = imports.misc.config;
const CtrlAltTab = imports.ui.ctrlAltTab;
@ -249,6 +252,8 @@ const AppMenuButton = new Lang.Class({
_init: function(menuManager) {
this.parent(0.0, null, true);
this.actor.accessible_role = Atk.Role.MENU;
this._startingApps = [];
this._menuManager = menuManager;
@ -299,7 +304,7 @@ const AppMenuButton = new Lang.Class({
let tracker = Shell.WindowTracker.get_default();
let appSys = Shell.AppSystem.get_default();
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
tracker.connect('notify::focus-app', Lang.bind(this, this._focusAppChanged));
appSys.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._sync));
@ -313,11 +318,12 @@ const AppMenuButton = new Lang.Class({
this._visible = true;
this.actor.show();
this.actor.reactive = true;
if (!this._targetIsCurrent)
return;
this.actor.reactive = true;
Tweener.removeTweens(this.actor);
Tweener.addTween(this.actor,
{ opacity: 255,
@ -412,12 +418,12 @@ const AppMenuButton = new Lang.Class({
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._iconBox.get_preferred_size();
let direction = this.actor.get_direction();
let direction = this.actor.get_text_direction();
let yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
childBox.y1 = yPadding;
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
childBox.x1 = 0;
childBox.x2 = childBox.x1 + Math.min(naturalWidth, allocWidth);
} else {
@ -434,7 +440,7 @@ const AppMenuButton = new Lang.Class({
childBox.y1 = yPadding;
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
childBox.x1 = Math.floor(iconWidth / 2);
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
} else {
@ -443,7 +449,7 @@ const AppMenuButton = new Lang.Class({
}
this._label.actor.allocate(childBox, flags);
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
childBox.x2 = childBox.x1 + this._spinner.actor.width;
childBox.y1 = box.y1;
@ -474,16 +480,9 @@ const AppMenuButton = new Lang.Class({
this._sync();
},
_sync: function() {
_focusAppChanged: function() {
let tracker = Shell.WindowTracker.get_default();
let lastStartedApp = null;
let workspace = global.screen.get_active_workspace();
for (let i = 0; i < this._startingApps.length; i++)
if (this._startingApps[i].is_on_workspace(workspace))
lastStartedApp = this._startingApps[i];
let focusedApp = tracker.focus_app;
if (!focusedApp) {
// If the app has just lost focus to the panel, pretend
// nothing happened; otherwise you can't keynav to the
@ -491,6 +490,17 @@ const AppMenuButton = new Lang.Class({
if (global.stage_input_mode == Shell.StageInputMode.FOCUSED)
return;
}
this._sync();
},
_sync: function() {
let tracker = Shell.WindowTracker.get_default();
let focusedApp = tracker.focus_app;
let lastStartedApp = null;
let workspace = global.screen.get_active_workspace();
for (let i = 0; i < this._startingApps.length; i++)
if (this._startingApps[i].is_on_workspace(workspace))
lastStartedApp = this._startingApps[i];
let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
@ -600,6 +610,7 @@ const ActivitiesButton = new Lang.Class({
_init: function() {
this.parent(0.0);
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
let container = new Shell.GenericContainer();
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
@ -613,6 +624,8 @@ const ActivitiesButton = new Lang.Class({
this._label = new St.Label({ text: _("Activities") });
container.add_actor(this._label);
this.actor.label_actor = this._label;
this._hotCorner = new Layout.HotCorner();
container.add_actor(this._hotCorner.actor);
@ -628,10 +641,12 @@ const ActivitiesButton = new Lang.Class({
Main.overview.connect('showing', Lang.bind(this, function() {
this.actor.add_style_pseudo_class('overview');
this._escapeMenuGrab();
this.actor.add_accessible_state (Atk.StateType.CHECKED);
}));
Main.overview.connect('hiding', Lang.bind(this, function() {
this.actor.remove_style_pseudo_class('overview');
this._escapeMenuGrab();
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
}));
this._xdndTimeOut = 0;
@ -653,7 +668,7 @@ const ActivitiesButton = new Lang.Class({
let primary = Main.layoutManager.primaryMonitor;
let hotBox = new Clutter.ActorBox();
let ok, x, y;
if (actor.get_direction() == St.TextDirection.LTR) {
if (actor.get_text_direction() == Clutter.TextDirection.LTR) {
[ok, x, y] = actor.transform_stage_point(primary.x, primary.y)
} else {
[ok, x, y] = actor.transform_stage_point(primary.x + primary.width, primary.y);
@ -807,7 +822,7 @@ const PanelCorner = new Lang.Class({
let rtlAwareContainer = this._box instanceof St.BoxLayout;
if (rtlAwareContainer &&
this._box.get_direction() == St.TextDirection.RTL) {
this._box.get_text_direction() == Clutter.TextDirection.RTL) {
if (this._side == St.Side.LEFT)
side = St.Side.RIGHT;
else if (this._side == St.Side.RIGHT)
@ -928,14 +943,14 @@ const Panel = new Lang.Class({
this._rightBox = new St.BoxLayout({ name: 'panelRight' });
this.actor.add_actor(this._rightBox);
if (this.actor.get_direction() == St.TextDirection.RTL)
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
this._leftCorner = new PanelCorner(this._rightBox, St.Side.LEFT);
else
this._leftCorner = new PanelCorner(this._leftBox, St.Side.LEFT);
this.actor.add_actor(this._leftCorner.actor);
if (this.actor.get_direction() == St.TextDirection.RTL)
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
this._rightCorner = new PanelCorner(this._leftBox, St.Side.RIGHT);
else
this._rightCorner = new PanelCorner(this._rightBox, St.Side.RIGHT);
@ -944,6 +959,7 @@ const Panel = new Lang.Class({
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
/* Button on the left side of the panel. */
if (global.session_type == Shell.SessionType.USER) {
@ -1011,7 +1027,7 @@ const Panel = new Lang.Class({
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_direction() == St.TextDirection.RTL) {
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth);
childBox.x2 = allocWidth;
@ -1030,7 +1046,7 @@ const Panel = new Lang.Class({
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_direction() == St.TextDirection.RTL) {
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = 0;
childBox.x2 = Math.min(Math.floor(sideWidth),
rightNaturalWidth);
@ -1058,6 +1074,54 @@ const Panel = new Lang.Class({
this._rightCorner.actor.allocate(childBox, flags);
},
_onButtonPress: function(actor, event) {
if (event.get_source() != actor)
return false;
let button = event.get_button();
if (button != 1)
return false;
let focusWindow = global.display.focus_window;
if (!focusWindow)
return false;
let dragWindow = focusWindow.is_attached_dialog() ? focusWindow.get_transient_for()
: focusWindow;
if (!dragWindow)
return false;
let rect = dragWindow.get_outer_rect();
let [stageX, stageY] = event.get_coords();
let allowDrag = dragWindow.maximized_vertically &&
stageX > rect.x && stageX < rect.x + rect.width;
if (!allowDrag)
return false;
global.display.begin_grab_op(global.screen,
dragWindow,
Meta.GrabOp.MOVING,
false, /* pointer grab */
true, /* frame action */
button,
event.get_state(),
event.get_time(),
stageX, stageY);
return true;
},
openAppMenu: function() {
let menu = this._appMenu.menu;
if (Main.overview.visible || menu.isOpen)
return;
menu.open();
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
},
startStatusArea: function() {
for (let i = 0; i < this._status_area_order.length; i++) {
let role = this._status_area_order[i];

View File

@ -6,6 +6,7 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const Main = imports.ui.main;
const Params = imports.misc.params;
@ -99,7 +100,8 @@ const Button = new Lang.Class({
_init: function(menuAlignment, nameText, dontCreateMenu) {
this.parent({ reactive: true,
can_focus: true,
track_hover: true });
track_hover: true,
accessible_role: Atk.Role.MENU });
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
@ -147,15 +149,6 @@ const Button = new Lang.Class({
if (!this.menu)
return;
if (!this.menu.isOpen) {
// Setting the max-height won't do any good if the minimum height of the
// menu is higher then the screen; it's useful if part of the menu is
// scrollable so the minimum height is smaller than the natural height
let monitor = Main.layoutManager.primaryMonitor;
this.menu.actor.style = ('max-height: ' +
Math.round(monitor.height - Main.panel.actor.height) +
'px;');
}
this.menu.toggle();
},
@ -198,6 +191,14 @@ const Button = new Lang.Class({
this.actor.add_style_pseudo_class('active');
else
this.actor.remove_style_pseudo_class('active');
// Setting the max-height won't do any good if the minimum height of the
// menu is higher then the screen; it's useful if part of the menu is
// scrollable so the minimum height is smaller than the natural height
let monitor = Main.layoutManager.primaryMonitor;
this.menu.actor.style = ('max-height: ' +
Math.round(monitor.height - Main.panel.actor.height) +
'px;');
},
destroy: function() {

View File

@ -9,6 +9,7 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
@ -41,7 +42,8 @@ const PopupBaseMenuItem = new Lang.Class({
this.actor = new Shell.GenericContainer({ style_class: 'popup-menu-item',
reactive: params.reactive,
track_hover: params.reactive,
can_focus: params.reactive });
can_focus: params.reactive,
accessible_role: Atk.Role.MENU_ITEM});
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
@ -273,7 +275,7 @@ const PopupBaseMenuItem = new Lang.Class({
_allocate: function(actor, box, flags) {
let height = box.y2 - box.y1;
let direction = this.actor.get_direction();
let direction = this.actor.get_text_direction();
if (this._dot) {
// The dot is placed outside box
@ -283,7 +285,7 @@ const PopupBaseMenuItem = new Lang.Class({
let dotBox = new Clutter.ActorBox();
let dotWidth = Math.round(box.x1 / 2);
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
dotBox.x1 = Math.round(box.x1 / 4);
dotBox.x2 = dotBox.x1 + dotWidth;
} else {
@ -296,7 +298,7 @@ const PopupBaseMenuItem = new Lang.Class({
}
let x;
if (direction == St.TextDirection.LTR)
if (direction == Clutter.TextDirection.LTR)
x = box.x1;
else
x = box.x2;
@ -311,7 +313,7 @@ const PopupBaseMenuItem = new Lang.Class({
let availWidth, extraWidth;
if (this._columnWidths) {
if (child.span == -1) {
if (direction == St.TextDirection.LTR)
if (direction == Clutter.TextDirection.LTR)
availWidth = box.x2 - x;
else
availWidth = x - box.x1;
@ -323,7 +325,7 @@ const PopupBaseMenuItem = new Lang.Class({
extraWidth = availWidth - naturalWidth;
} else {
if (child.span == -1) {
if (direction == St.TextDirection.LTR)
if (direction == Clutter.TextDirection.LTR)
availWidth = box.x2 - x;
else
availWidth = x - box.x1;
@ -333,7 +335,7 @@ const PopupBaseMenuItem = new Lang.Class({
extraWidth = 0;
}
if (direction == St.TextDirection.LTR) {
if (direction == Clutter.TextDirection.LTR) {
if (child.expand) {
childBox.x1 = x;
childBox.x2 = x + availWidth;
@ -371,7 +373,7 @@ const PopupBaseMenuItem = new Lang.Class({
child.actor.allocate(childBox, flags);
if (direction == St.TextDirection.LTR)
if (direction == Clutter.TextDirection.LTR)
x += availWidth + this._spacing;
else
x -= availWidth + this._spacing;
@ -444,6 +446,7 @@ const PopupAlternatingMenuItem = new Lang.Class({
this.label = new St.Label({ text: text });
this.state = PopupAlternatingMenuItemState.DEFAULT;
this.addActor(this.label);
this.actor.label_actor = this.label;
this.actor.connect('notify::mapped', Lang.bind(this, this._onMapped));
},
@ -711,7 +714,8 @@ const Switch = new Lang.Class({
Name: 'Switch',
_init: function(state) {
this.actor = new St.Bin({ style_class: 'toggle-switch' });
this.actor = new St.Bin({ style_class: 'toggle-switch',
accessible_role: Atk.Role.CHECK_BOX});
// Translators: this MUST be either "toggle-switch-us"
// (for toggle switches containing the English words
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
@ -744,6 +748,10 @@ const PopupSwitchMenuItem = new Lang.Class({
this.label = new St.Label({ text: text });
this._switch = new Switch(active);
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
this.checkAccessibleState();
this.actor.label_actor = this.label;
this.addActor(this.label);
this._statusBin = new St.Bin({ x_align: St.Align.END });
@ -762,11 +770,14 @@ const PopupSwitchMenuItem = new Lang.Class({
this._statusBin.child = this._statusLabel;
this.actor.reactive = false;
this.actor.can_focus = false;
this.actor.accessible_role = Atk.Role.MENU_ITEM;
} else {
this._statusBin.child = this._switch.actor;
this.actor.reactive = true;
this.actor.can_focus = true;
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
}
this.checkAccessibleState();
},
activate: function(event) {
@ -786,6 +797,7 @@ const PopupSwitchMenuItem = new Lang.Class({
toggle: function() {
this._switch.toggle();
this.emit('toggled', this._switch.state);
this.checkAccessibleState();
},
get state() {
@ -794,6 +806,20 @@ const PopupSwitchMenuItem = new Lang.Class({
setToggleState: function(state) {
this._switch.setToggleState(state);
this.checkAccessibleState();
},
checkAccessibleState: function() {
switch (this.actor.accessible_role) {
case Atk.Role.CHECK_MENU_ITEM:
if (this._switch.state)
this.actor.add_accessible_state (Atk.StateType.CHECKED);
else
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
break;
default:
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
}
}
});
@ -1594,6 +1620,10 @@ const PopupComboMenu = new Lang.Class({
this._activeItemPos = position;
},
getActiveItem: function() {
return this._getMenuItems()[this._activeItemPos];
},
setItemVisible: function(position, visible) {
if (!visible && position == this._activeItemPos) {
log('Trying to hide the active menu item.');
@ -1615,6 +1645,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
_init: function (params) {
this.parent(params);
this.actor.accessible_role = Atk.Role.COMBO_BOX;
this._itemBox = new Shell.Stack();
this.addActor(this._itemBox);
@ -1711,6 +1743,11 @@ const PopupComboBoxMenuItem = new Lang.Class({
Lang.bind(this, this._itemActivated, position));
},
checkAccessibleLabel: function() {
let activeItem = this._menu.getActiveItem();
this.actor.label_actor = activeItem.label;
},
setActiveItem: function(position) {
let item = this._items[position];
if (!item)
@ -1721,6 +1758,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
this._activeItemPos = position;
for (let i = 0; i < this._items.length; i++)
this._items[i].visible = (i == this._activeItemPos);
this.checkAccessibleLabel();
},
setItemVisible: function(position, visible) {
@ -1878,7 +1917,7 @@ const RemoteMenu = new Lang.Class({
while (k0 < currentItems.length && currentItems[k0]._ignored)
k0++;
// find the right menu item matching the model item
for (j0 = 0; j0 < position; j0++, k0++) {
for (j0 = 0; k0 < currentItems.length && j0 < position; j0++, k0++) {
if (currentItems[k0]._ignored)
k0++;
}
@ -1888,7 +1927,7 @@ const RemoteMenu = new Lang.Class({
for (k = k0; k < currentItems.length; k++)
currentItems[k].destroy();
} else {
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
for (j = j0, k = k0; k < currentItems.length && j < j0 + removed; j++, k++) {
currentItems[k].destroy();
if (currentItems[k]._ignored)
@ -1919,8 +1958,9 @@ const RemoteMenu = new Lang.Class({
k++;
}
} else if (changeSignal) {
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function() {
this.actionGroup.disconnect(signalId);
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function(actionGroup, actionName) {
actionGroup.disconnect(signalId);
if (this._actions[actionName]) return;
// force a full update
this._modelChanged(model, 0, -1, model.get_n_items(), target);

View File

@ -59,13 +59,13 @@ function loadRemoteSearchProvidersFromDir(dir, addProviderCallback) {
if (!keyfile.has_group(KEY_FILE_GROUP))
continue;
let remoteProvider;
let remoteProvider, title;
try {
let group = KEY_FILE_GROUP;
let title = keyfile.get_locale_string(group, 'Title', null);
let icon = keyfile.get_string(group, 'Icon');
let busName = keyfile.get_string(group, 'BusName');
let objectPath = keyfile.get_string(group, 'ObjectPath');
title = keyfile.get_locale_string(group, 'Title', null);
remoteProvider = new RemoteSearchProvider(title,
icon,

View File

@ -209,6 +209,8 @@ const RunDialog = new Lang.Class({
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
ShellEntry.addContextMenu(entry);
entry.label_actor = label;
this._entryText = entry.clutter_text;
this.contentLayout.add(entry, { y_align: St.Align.START });
this.setInitialKeyFocus(this._entryText);
@ -242,7 +244,7 @@ const RunDialog = new Lang.Class({
let symbol = e.get_key_symbol();
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
this.popModal();
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
this._run(o.get_text(), true);
else
this._run(o.get_text(), false);

View File

@ -29,7 +29,6 @@ const SearchResultDisplay = new Lang.Class({
_init: function(provider) {
this.provider = provider;
this.actor = null;
this.selectionIndex = -1;
},
/**
@ -51,20 +50,10 @@ const SearchResultDisplay = new Lang.Class({
/**
* clear:
* Remove all results from this display and reset the selection index.
* Remove all results from this display.
*/
clear: function() {
this.actor.get_children().forEach(function (actor) { actor.destroy(); });
this.selectionIndex = -1;
},
/**
* getSelectionIndex:
*
* Returns the index of the selected actor, or -1 if none.
*/
getSelectionIndex: function() {
return this.selectionIndex;
},
/**
@ -75,25 +64,6 @@ const SearchResultDisplay = new Lang.Class({
getVisibleResultCount: function() {
throw new Error('Not implemented');
},
/**
* selectIndex:
* @index: Integer index
*
* Move selection to the given index.
* Return true if successful, false if no more results
* available.
*/
selectIndex: function() {
throw new Error('Not implemented');
},
/**
* Activate the currently selected search result.
*/
activateSelected: function() {
throw new Error('Not implemented');
}
});
/**

View File

@ -32,6 +32,7 @@ const SearchResult = new Lang.Class({
if (content == null) {
content = new St.Bin({ style_class: 'search-result-content',
reactive: true,
can_focus: true,
track_hover: true });
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] });
@ -110,7 +111,6 @@ const GridSearchResults = new Lang.Class({
this.actor = new St.Bin({ x_align: St.Align.START });
this.actor.set_child(this._grid.actor);
this.selectionIndex = -1;
this._width = 0;
this.actor.connect('notify::width', Lang.bind(this, function() {
this._width = this.actor.width;
@ -163,32 +163,14 @@ const GridSearchResults = new Lang.Class({
clear: function () {
this._grid.removeAll();
this.selectionIndex = -1;
this._pendingClear = false;
},
selectIndex: function (index) {
let nVisible = this.getVisibleResultCount();
if (this.selectionIndex >= 0) {
let prevActor = this._grid.getItemAtIndex(this.selectionIndex);
prevActor._delegate.setSelected(false);
}
this.selectionIndex = -1;
if (index >= nVisible)
return false;
else if (index < 0)
return false;
let targetActor = this._grid.getItemAtIndex(index);
targetActor._delegate.setSelected(true);
this.selectionIndex = index;
return true;
},
activateSelected: function() {
if (this.selectionIndex < 0)
return;
let targetActor = this._grid.getItemAtIndex(this.selectionIndex);
targetActor._delegate.activate();
getFirstResult: function() {
if (this.getVisibleResultCount() > 0)
return this._grid.getItemAtIndex(0)._delegate;
else
return null;
}
});
@ -230,7 +212,6 @@ const SearchResults = new Lang.Class({
this._statusText = new St.Label({ style_class: 'search-statustext' });
this._content.add(this._statusText);
this._selectedProvider = -1;
this._providers = this._searchSystem.getProviders();
this._providerMeta = [];
this._providerMetaResults = {};
@ -244,10 +225,12 @@ const SearchResults = new Lang.Class({
this._openSearchProviders = [];
this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons));
this._updateOpenSearchProviderButtons();
this._highlightDefault = false;
this._defaultResult = null;
},
_updateOpenSearchProviderButtons: function() {
this._selectedOpenSearchButton = -1;
for (let i = 0; i < this._openSearchProviders.length; i++)
this._openSearchProviders[i].actor.destroy();
this._openSearchProviders = this._openSearchSystem.getProviders();
@ -255,18 +238,10 @@ const SearchResults = new Lang.Class({
this._createOpenSearchProviderButton(this._openSearchProviders[i]);
},
_updateOpenSearchButtonState: function() {
for (let i = 0; i < this._openSearchProviders.length; i++) {
if (i == this._selectedOpenSearchButton)
this._openSearchProviders[i].actor.add_style_pseudo_class('selected');
else
this._openSearchProviders[i].actor.remove_style_pseudo_class('selected');
}
},
_createOpenSearchProviderButton: function(provider) {
let button = new St.Button({ style_class: 'dash-search-button',
reactive: true,
can_focus: true,
x_fill: true,
y_align: St.Align.MIDDLE });
let bin = new St.Bin({ x_fill: false,
@ -282,6 +257,17 @@ const SearchResults = new Lang.Class({
button.set_child(bin);
provider.actor = button;
button.setSelected = function(selected) {
if (selected)
button.add_style_pseudo_class('selected');
else
button.remove_style_pseudo_class('selected');
};
button.activate = Lang.bind(this, function() {
this._openSearchSystem.activateResult(provider.id);
});
button.actor = button;
this._searchProvidersBox.add(button);
},
@ -321,7 +307,6 @@ const SearchResults = new Lang.Class({
},
_clearDisplay: function() {
this._selectedProvider = -1;
this._visibleResultsCount = 0;
for (let i = 0; i < this._providerMeta.length; i++) {
let meta = this._providerMeta[i];
@ -340,8 +325,6 @@ const SearchResults = new Lang.Class({
this._searchSystem.reset();
this._statusText.hide();
this._clearDisplay();
this._selectedOpenSearchButton = -1;
this._updateOpenSearchButtonState();
},
startingSearch: function() {
@ -359,20 +342,34 @@ const SearchResults = new Lang.Class({
},
_maybeSetInitialSelection: function() {
if (this._selectedOpenSearchButton > -1 || this._selectedProvider > -1)
return;
let newDefaultResult = null;
for (let i = 0; i < this._providerMeta.length; i++) {
let meta = this._providerMeta[i];
if (meta.hasPendingResults)
return;
if (meta.actor.visible)
if (!meta.actor.visible)
continue;
let firstResult = meta.resultDisplay.getFirstResult();
if (firstResult) {
newDefaultResult = firstResult;
break; // select this one!
}
}
this.selectDown(false);
this._initialSelectionSet = true;
if (!newDefaultResult)
newDefaultResult = this._searchProvidersBox.get_first_child();
if (newDefaultResult != this._defaultResult) {
if (this._defaultResult)
this._defaultResult.setSelected(false);
if (newDefaultResult)
newDefaultResult.setSelected(this._highlightDefault);
this._defaultResult = newDefaultResult;
}
},
_updateCurrentResults: function(searchSystem, results) {
@ -410,6 +407,7 @@ const SearchResults = new Lang.Class({
meta.resultDisplay.renderResults(metas);
}
}
this._maybeSetInitialSelection();
},
_updateResults: function(searchSystem, results) {
@ -417,20 +415,15 @@ const SearchResults = new Lang.Class({
this._statusText.set_text(_("No matching results."));
this._statusText.show();
} else {
this._selectedOpenSearchButton = -1;
this._updateOpenSearchButtonState();
this._selectedProvider = -1;
this._statusText.hide();
}
let terms = searchSystem.getTerms();
this._openSearchSystem.setSearchTerms(terms);
// To avoid CSS transitions causing flickering
// of the selection when the first search result
// stays the same, we hide the content while
// filling in the results and setting the initial
// selection.
// To avoid CSS transitions causing flickering when the first search
// result stays the same, we hide the content while filling in the
// results.
this._content.hide();
for (let i = 0; i < results.length; i++) {
@ -441,97 +434,38 @@ const SearchResults = new Lang.Class({
this._updateProviderResults(provider, providerResults, terms);
}
this._maybeSetInitialSelection();
this._content.show();
return true;
},
_modifyActorSelection: function(resultDisplay, up) {
let success;
let index = resultDisplay.getSelectionIndex();
if (up && index == -1)
index = resultDisplay.getVisibleResultCount() - 1;
else if (up)
index = index - 1;
else
index = index + 1;
return resultDisplay.selectIndex(index);
activateDefault: function() {
if (this._defaultResult)
this._defaultResult.activate();
},
selectUp: function(recursing) {
if (this._selectedOpenSearchButton == -1) {
for (let i = this._selectedProvider; i >= 0; i--) {
let meta = this._providerMeta[i];
if (!meta.actor.visible)
continue;
let success = this._modifyActorSelection(meta.resultDisplay, true);
if (success) {
this._selectedProvider = i;
return;
}
}
}
if (this._selectedOpenSearchButton == -1)
this._selectedOpenSearchButton = this._openSearchProviders.length;
this._selectedOpenSearchButton--;
this._updateOpenSearchButtonState();
if (this._selectedOpenSearchButton >= 0)
return;
if (this._providerMeta.length > 0 && !recursing) {
this._selectedProvider = this._providerMeta.length - 1;
this.selectUp(true);
}
highlightDefault: function(highlight) {
this._highlightDefault = highlight;
if (this._defaultResult)
this._defaultResult.setSelected(highlight);
},
selectDown: function(recursing) {
let current = this._selectedProvider;
if (this._selectedOpenSearchButton == -1) {
if (current == -1)
current = 0;
for (let i = current; i < this._providerMeta.length; i++) {
let meta = this._providerMeta[i];
if (!meta.actor.visible)
continue;
let success = this._modifyActorSelection(meta.resultDisplay, false);
if (success) {
this._selectedProvider = i;
return;
}
}
}
this._selectedOpenSearchButton++;
if (this._selectedOpenSearchButton < this._openSearchProviders.length) {
this._updateOpenSearchButtonState();
navigateFocus: function(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
direction == (rtl ? Gtk.DirectionType.RIGHT
: Gtk.DirectionType.LEFT) ||
direction == Gtk.DirectionType.UP) {
this.actor.navigate_focus(null, direction, false);
return;
}
this._selectedOpenSearchButton = -1;
this._updateOpenSearchButtonState();
if (this._providerMeta.length > 0 && !recursing) {
this._selectedProvider = 0;
this.selectDown(true);
let from = this._defaultResult ? this._defaultResult.actor : null;
this.actor.navigate_focus(from, direction, false);
if (this._defaultResult) {
// The default result appears focused, so navigate directly to the
// next result.
this.actor.navigate_focus(global.stage.key_focus, direction, false);
}
},
activateSelected: function() {
if (this._selectedOpenSearchButton != -1) {
let provider = this._openSearchProviders[this._selectedOpenSearchButton];
this._openSearchSystem.activateResult(provider.id);
Main.overview.hide();
return;
}
let current = this._selectedProvider;
if (current < 0)
return;
let meta = this._providerMeta[current];
let resultDisplay = meta.resultDisplay;
resultDisplay.activateSelected();
Main.overview.hide();
}
});

View File

@ -48,6 +48,11 @@ function _setLabelsForMessage(dialog, message) {
_setLabelText(dialog.descriptionLabel, labels[1]);
}
function _createIcon(gicon) {
return new St.Icon({ gicon: gicon,
style_class: 'shell-mount-operation-icon' })
}
/* -------------------------------------------------------- */
const ListItem = new Lang.Class({
@ -109,12 +114,11 @@ const ShellMountOperation = new Lang.Class({
this.mountOp.connect('aborted',
Lang.bind(this, this._onAborted));
this._icon = new St.Icon({ gicon: source.get_icon(),
style_class: 'shell-mount-operation-icon' });
this._gicon = source.get_icon();
},
_onAskQuestion: function(op, message, choices) {
this._dialog = new ShellMountQuestionDialog(this._icon);
this._dialog = new ShellMountQuestionDialog(this._gicon);
this._dialog.connect('response',
Lang.bind(this, function(object, choice) {
@ -131,7 +135,7 @@ const ShellMountOperation = new Lang.Class({
_onAskPassword: function(op, message) {
this._notificationShowing = true;
this._source = new ShellMountPasswordSource(message, this._icon, this._reaskPassword);
this._source = new ShellMountPasswordSource(message, this._gicon, this._reaskPassword);
this._source.connect('password-ready',
Lang.bind(this, function(source, password) {
@ -166,7 +170,7 @@ const ShellMountOperation = new Lang.Class({
let message = op.get_show_processes_message();
if (!this._processesDialog) {
this._processesDialog = new ShellProcessesDialog(this._icon);
this._processesDialog = new ShellProcessesDialog(this._gicon);
this._dialog = this._processesDialog;
this._processesDialog.connect('response',
@ -192,14 +196,14 @@ const ShellMountQuestionDialog = new Lang.Class({
Name: 'ShellMountQuestionDialog',
Extends: ModalDialog.ModalDialog,
_init: function(icon) {
_init: function(gicon) {
this.parent({ styleClass: 'mount-question-dialog' });
let mainContentLayout = new St.BoxLayout();
this.contentLayout.add(mainContentLayout, { x_fill: true,
y_fill: false });
this._iconBin = new St.Bin({ child: icon });
this._iconBin = new St.Bin({ child: _createIcon(gicon) });
mainContentLayout.add(this._iconBin,
{ x_fill: true,
y_fill: false,
@ -238,16 +242,21 @@ const ShellMountPasswordSource = new Lang.Class({
Name: 'ShellMountPasswordSource',
Extends: MessageTray.Source,
_init: function(message, icon, reaskPassword) {
_init: function(message, gicon, reaskPassword) {
this._gicon = gicon;
let strings = message.split('\n');
this.parent(strings[0]);
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
this._notification = new ShellMountPasswordNotification(this, strings, reaskPassword);
// add ourselves as a source, and popup the notification
Main.messageTray.add(this);
this.notify(this._notification);
},
createNotificationIcon: function() {
return _createIcon(this._gicon);
},
});
Signals.addSignalMethods(ShellMountPasswordSource.prototype);
@ -255,8 +264,8 @@ const ShellMountPasswordNotification = new Lang.Class({
Name: 'ShellMountPasswordNotification',
Extends: MessageTray.Notification,
_init: function(source, strings, icon, reaskPassword) {
this.parent(source, strings[0], null, { customContent: true, icon: icon });
_init: function(source, strings, reaskPassword) {
this.parent(source, strings[0], null, { customContent: true });
// set the notification to transient and urgent, so that it
// expands out
@ -297,14 +306,14 @@ const ShellProcessesDialog = new Lang.Class({
Name: 'ShellProcessesDialog',
Extends: ModalDialog.ModalDialog,
_init: function(icon) {
_init: function(gicon) {
this.parent({ styleClass: 'show-processes-dialog' });
let mainContentLayout = new St.BoxLayout();
this.contentLayout.add(mainContentLayout, { x_fill: true,
y_fill: false });
this._iconBin = new St.Bin({ child: icon });
this._iconBin = new St.Bin({ child: _createIcon(gicon) });
mainContentLayout.add(this._iconBin,
{ x_fill: true,
y_fill: false,

View File

@ -181,7 +181,7 @@ const Indicator = new Lang.Class({
// update connected property
if (device.can_connect)
item._connectedMenuitem.setToggleState(device.connected);
item._connectedMenuItem.setToggleState(device.connected);
},
_createDeviceItem: function(device) {

View File

@ -41,7 +41,7 @@ const XKBIndicator = new Lang.Class({
Extends: PanelMenu.Button,
_init: function() {
this.parent(0.0);
this.parent(0.0, _("Keyboard"));
this._container = new Shell.GenericContainer();
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));

View File

@ -1844,7 +1844,7 @@ const NMApplet = new Lang.Class({
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
// find a good device to be considered primary
a._primaryDevice = null;
let devices = a.get_devices();
let devices = a.get_devices() || [];
for (let j = 0; j < devices.length; j++) {
let d = devices[j];
if (d._delegate) {

View File

@ -132,6 +132,9 @@ const Client = new Lang.Class({
let channel = channels[i];
let [targetHandle, targetHandleType] = channel.get_handle();
if (Shell.is_channel_invalidated(channel))
continue;
/* Only observe contact text channels */
if ((!(channel instanceof Tp.TextChannel)) ||
targetHandleType != Tp.HandleType.CONTACT)
@ -181,6 +184,9 @@ const Client = new Lang.Class({
continue;
}
if (Shell.is_channel_invalidated(channel))
continue;
// 'notify' will be true when coming from an actual HandleChannels
// call, and not when from a successful Claim call. The point is
// we don't want to notify for a channel we just claimed which
@ -231,12 +237,19 @@ const Client = new Lang.Class({
let channel = channels[0];
let chanType = channel.get_channel_type();
if (Shell.is_channel_invalidated(channel)) {
Shell.decline_dispatch_op(context, 'Channel is invalidated');
return;
}
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
this._approveTextChannel(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL)
this._approveCall(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER)
this._approveFileTransfer(account, conn, channel, dispatchOp, context);
else
Shell.decline_dispatch_op(context, 'Unsupported channel type');
},
_approveTextChannel: function(account, conn, channel, dispatchOp, context) {
@ -853,6 +866,8 @@ const ChatNotification = new Lang.Class({
this._lastGroupActor.add(body, props.childProps);
this.updated();
let timestamp = props.timestamp;
this._history.unshift({ actor: body, time: timestamp,
realMessage: group != 'meta' });

View File

@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
@ -209,9 +210,14 @@ const ClutterFrameTicker = new Lang.Class({
_init : function() {
// We don't have a finite duration; tweener will tell us to stop
// when we need to stop, so use 1000 seconds as "infinity"
// when we need to stop, so use 1000 seconds as "infinity", and
// set the timeline to loop. Doing this means we have to track
// time ourselves, since clutter timeline's time will cycle
// instead of strictly increase.
this._timeline = new Clutter.Timeline({ duration: 1000*1000 });
this._timeline.set_loop(true);
this._startTime = -1;
this._currentTime = -1;
this._timeline.connect('new-frame', Lang.bind(this,
function(timeline, frame) {
@ -234,17 +240,18 @@ const ClutterFrameTicker = new Lang.Class({
// That looks bad, so we always start at the first frame of the
// animation then only do frame dropping from there.
if (this._startTime < 0)
this._startTime = this._timeline.get_elapsed_time();
this._startTime = GLib.get_monotonic_time() / 1000.0;
// currentTime is in milliseconds
let perf_log = Shell.PerfLog.get_default();
this._currentTime = GLib.get_monotonic_time() / 1000.0 - this._startTime;
perf_log.event("tweener.framePrepareStart");
this.emit('prepare-frame');
perf_log.event("tweener.framePrepareDone");
},
getTime : function() {
return this._timeline.get_elapsed_time();
return this._currentTime;
},
start : function() {
@ -257,6 +264,7 @@ const ClutterFrameTicker = new Lang.Class({
stop : function() {
this._timeline.stop();
this._startTime = -1;
this._currentTime = -1;
global.end_work();
}
});

View File

@ -9,6 +9,7 @@ const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Tp = imports.gi.TelepathyGLib;
const UPowerGlib = imports.gi.UPowerGlib;
const Atk = imports.gi.Atk;
const GnomeSession = imports.misc.gnomeSession;
const Main = imports.ui.main;
@ -56,6 +57,7 @@ const IMStatusItem = new Lang.Class({
this._icon.icon_name = iconName;
this.label = new St.Label({ text: label });
this.actor.label_actor = this.label;
this.addActor(this.label);
}
});
@ -163,6 +165,8 @@ const IMStatusChooserItem = new Lang.Class({
Lang.bind(this, this._IMAccountsChanged));
this._accountMgr.connect('account-removed',
Lang.bind(this, this._IMAccountsChanged));
this._accountMgr.connect('account-validity-changed',
Lang.bind(this, this._IMAccountsChanged));
this._accountMgr.prepare_async(null, Lang.bind(this,
function(mgr) {
let [presence, status, msg] = mgr.get_most_available_presence();
@ -388,8 +392,15 @@ const IMStatusChooserItem = new Lang.Class({
if (!this._imPresenceRestored)
return;
let savedStatus = global.settings.get_int('saved-session-presence');
if (!this._sessionPresenceRestored) {
let savedStatus = global.settings.get_int('saved-session-presence');
// We should never save/restore a status other than AVAILABLE
// or BUSY
if (savedStatus != GnomeSession.PresenceStatus.AVAILABLE &&
savedStatus != GnomeSession.PresenceStatus.BUSY)
savedStatus = GnomeSession.PresenceStatus.AVAILABLE;
if (sessionStatus != savedStatus) {
this._presence.status = savedStatus;
return;
@ -397,7 +408,10 @@ const IMStatusChooserItem = new Lang.Class({
this._sessionPresenceRestored = true;
}
global.settings.set_int('saved-session-presence', sessionStatus);
if ((sessionStatus == GnomeSession.PresenceStatus.AVAILABLE ||
sessionStatus == GnomeSession.PresenceStatus.BUSY) &&
savedStatus != sessionStatus)
global.settings.set_int('saved-session-presence', sessionStatus);
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
let newPresence, status;
@ -423,6 +437,8 @@ const UserMenuButton = new Lang.Class({
_init: function() {
this.parent(0.0);
this.actor.accessible_role = Atk.Role.MENU;
let box = new St.BoxLayout({ name: 'panelUserMenu' });
this.actor.add_actor(box);
@ -718,8 +734,8 @@ const UserMenuButton = new Lang.Class({
if (this._haveSuspend &&
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
// Ensure we only suspend after the screensaver has activated
this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() {
// Ensure we only suspend after locking the screen
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
this._upClient.suspend_sync(null);
}));
} else {

View File

@ -133,14 +133,14 @@ const SearchTab = new Lang.Class({
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
// We can't connect to 'activate' here because search providers
// might want to do something with the modifiers in activateSelected.
// might want to do something with the modifiers in activateDefault.
let symbol = e.get_key_symbol();
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
if (this._searchTimeoutId > 0) {
Mainloop.source_remove(this._searchTimeoutId);
this._doSearch();
}
this._searchResults.activateSelected();
this._searchResults.activateDefault();
return true;
}
return false;
@ -148,9 +148,33 @@ const SearchTab = new Lang.Class({
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
global.stage.connect('notify::key-focus', Lang.bind(this, this._updateCursorVisibility));
global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));
this._capturedEventId = 0;
this._text.connect('key-focus-in', Lang.bind(this, function() {
this._searchResults.highlightDefault(true);
}));
this._text.connect('key-focus-out', Lang.bind(this, function() {
this._searchResults.highlightDefault(false);
}));
// Since the entry isn't inside the results container we install this
// dummy widget as the last results container child so that we can
// include the entry in the keynav tab path...
this._focusTrap = new St.Bin({ can_focus: true });
this._focusTrap.connect('key-focus-in', Lang.bind(this, function() {
this._entry.grab_key_focus();
}));
// ... but make it unfocusable using arrow keys keynav by making its
// bounding box always contain the possible focus source's bounding
// box since StWidget's keynav logic won't ever select it as a target
// in that case.
this._focusTrap.add_constraint(new Clutter.BindConstraint({ source: this._searchResults.actor,
coordinate: Clutter.BindCoordinate.ALL }));
this._searchResults.actor.add_actor(this._focusTrap);
global.focus_manager.add_group(this._searchResults.actor);
},
hide: function() {
@ -163,21 +187,29 @@ const SearchTab = new Lang.Class({
// incorrectly when we remove focus
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
if (this._text.text != '')
this._reset();
this.reset();
},
_reset: function () {
this._text.text = '';
reset: function () {
global.stage.set_key_focus(null);
this._entry.text = '';
this._text.set_cursor_visible(true);
this._text.set_selection(0, 0);
},
_updateCursorVisibility: function() {
_onStageKeyFocusChanged: function() {
let focus = global.stage.get_key_focus();
this._text.set_cursor_visible(focus == this._text);
let appearFocused = (this._entry.contains(focus) ||
this._searchResults.actor.contains(focus));
this._text.set_cursor_visible(appearFocused);
if (appearFocused)
this._entry.add_style_pseudo_class('focus');
else
this._entry.remove_style_pseudo_class('focus');
},
_onMapped: function() {
@ -228,7 +260,7 @@ const SearchTab = new Lang.Class({
if (this._iconClickedId == 0) {
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
Lang.bind(this, function() {
this._reset();
this.reset();
}));
}
this._activate();
@ -254,25 +286,37 @@ const SearchTab = new Lang.Class({
_onKeyPress: function(entry, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.Up) {
if (!this.active)
return true;
this._searchResults.selectUp(false);
return true;
} else if (symbol == Clutter.Down) {
if (!this.active)
return true;
this._searchResults.selectDown(false);
return true;
} else if (symbol == Clutter.Escape) {
if (symbol == Clutter.Escape) {
if (this._isActivated()) {
this._reset();
this.reset();
return true;
}
} else if (this.active) {
let arrowNext, nextDirection;
if (entry.get_text_direction() == Clutter.TextDirection.RTL) {
arrowNext = Clutter.Left;
nextDirection = Gtk.DirectionType.LEFT;
} else {
arrowNext = Clutter.Right;
nextDirection = Gtk.DirectionType.RIGHT;
}
if (symbol == Clutter.Tab) {
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_FORWARD);
return true;
} else if (symbol == Clutter.ISO_Left_Tab) {
this._focusTrap.can_focus = false;
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_BACKWARD);
this._focusTrap.can_focus = true;
return true;
} else if (symbol == Clutter.Down) {
this._searchResults.navigateFocus(Gtk.DirectionType.DOWN);
return true;
} else if (symbol == arrowNext && this._text.position == -1) {
this._searchResults.navigateFocus(nextDirection);
return true;
}
}
return false;
},
@ -284,7 +328,7 @@ const SearchTab = new Lang.Class({
// the user clicked outside after activating the entry, but
// with no search term entered and no keyboard button pressed
// - cancel the search
this._reset();
this.reset();
}
}
@ -486,7 +530,7 @@ const ViewSelector = new Lang.Class({
let childBox = new Clutter.ActorBox();
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_direction() == St.TextDirection.RTL) {
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = allocWidth - barNatWidth;
childBox.x2 = allocWidth;
} else {
@ -495,7 +539,7 @@ const ViewSelector = new Lang.Class({
}
this._tabBox.allocate(childBox, flags);
if (this.actor.get_direction() == St.TextDirection.RTL) {
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = 0;
childBox.x2 = searchNatWidth;
} else {
@ -511,24 +555,34 @@ const ViewSelector = new Lang.Class({
},
_onStageKeyPress: function(actor, event) {
let modifiers = Shell.get_event_state(event);
let modifiers = event.get_state();
let symbol = event.get_key_symbol();
if (symbol == Clutter.Escape) {
Main.overview.hide();
if (this._searchTab.active)
this._searchTab.reset();
else
Main.overview.hide();
return true;
} else if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
if (symbol == Clutter.Page_Up) {
if (!this._searchTab.active)
} else if (Clutter.keysym_to_unicode(symbol) ||
(symbol == Clutter.BackSpace && this._searchTab.active)) {
this._searchTab.startSearch(event);
} else if (!this._searchTab.active) {
if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
if (symbol == Clutter.Page_Up) {
this._prevTab();
return true;
} else if (symbol == Clutter.Page_Down) {
if (!this._searchTab.active)
return true;
} else if (symbol == Clutter.Page_Down) {
this._nextTab();
return true;
}
} else if (symbol == Clutter.Tab) {
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
return true;
} else if (symbol == Clutter.ISO_Left_Tab) {
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
return true;
}
} else if (Clutter.keysym_to_unicode(symbol)) {
this._searchTab.startSearch(event);
}
return false;
},

View File

@ -17,7 +17,7 @@ const FISH_NAME = 'wanda';
const FISH_SPEED = 300;
const FISH_COMMAND = 'fortune';
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/pixmaps';
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/fish';
const FISH_GROUP = 'Fish Animation';
const MAGIC_FISH_KEY = 'free the fish';

View File

@ -14,6 +14,12 @@ const WindowAttentionHandler = new Lang.Class({
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
},
_getTitleAndBanner: function(app, window) {
let title = app.get_name();
let banner = _("'%s' is ready").format(window.get_title());
return [title, banner]
},
_onWindowDemandsAttention : function(display, window) {
// We don't want to show the notification when the window is already focused,
// because this is rather pointless.
@ -30,16 +36,15 @@ const WindowAttentionHandler = new Lang.Class({
let source = new Source(app, window);
Main.messageTray.add(source);
let banner = _("'%s' is ready").format(window.title);
let title = app.get_name();
let [title, banner] = this._getTitleAndBanner(app, window);
let notification = new MessageTray.Notification(source, title, banner);
source.notify(notification);
source.signalIDs.push(window.connect('notify::title',
Lang.bind(this, function() {
notification.update(title, banner);
})));
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
let [title, banner] = this._getTitleAndBanner(app, window);
notification.update(title, banner);
})));
}
});

View File

@ -13,6 +13,7 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const WINDOW_ANIMATION_TIME = 0.25;
const DIM_TIME = 0.500;
const UNDIM_TIME = 0.250;
@ -134,6 +135,10 @@ const WindowManager = new Lang.Class({
Lang.bind(this, this._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-panels',
Lang.bind(this, this._startA11ySwitcher));
global.display.add_keybinding('open-application-menu',
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Lang.bind(this, this._openAppMenu));
Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
@ -186,7 +191,7 @@ const WindowManager = new Lang.Class({
let primary = Main.layoutManager.primaryMonitor;
let xDest = primary.x;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
xDest += primary.width;
Tweener.addTween(actor,
@ -547,6 +552,10 @@ const WindowManager = new Lang.Class({
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
},
_openAppMenu : function(display, screen, window, event, binding) {
Main.panel.openAppMenu();
},
_showWorkspaceSwitcher : function(display, screen, window, binding) {
if (screen.n_workspaces == 1)
return;
@ -567,7 +576,7 @@ const WindowManager = new Lang.Class({
},
actionMoveWorkspaceLeft: function() {
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
let indexToActivate = activeWorkspaceIndex;
if (rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
@ -583,7 +592,7 @@ const WindowManager = new Lang.Class({
},
actionMoveWorkspaceRight: function() {
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
let indexToActivate = activeWorkspaceIndex;
if (rtl && activeWorkspaceIndex > 0)

View File

@ -528,7 +528,7 @@ const WindowOverlay = new Lang.Class({
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
let split = layout.split(":");
let side;

View File

@ -19,12 +19,12 @@ const WorkspaceSwitcherPopup = new Lang.Class({
Name: 'WorkspaceSwitcherPopup',
_init : function() {
this.actor = new St.Group({ reactive: true,
x: 0,
y: 0,
width: global.screen_width,
height: global.screen_height,
style_class: 'workspace-switcher-group' });
this.actor = new St.Widget({ reactive: true,
x: 0,
y: 0,
width: global.screen_width,
height: global.screen_height,
style_class: 'workspace-switcher-group' });
Main.uiGroup.add_actor(this.actor);
this._container = new St.BoxLayout({ style_class: 'workspace-switcher-container' });

View File

@ -25,6 +25,8 @@ const SLIDE_ANIMATION_TIME = 0.2;
// placeholder exactly.
const WORKSPACE_CUT_SIZE = 10;
const WORKSPACE_KEEP_ALIVE_TIME = 100;
const WindowClone = new Lang.Class({
Name: 'WindowClone',
@ -156,24 +158,14 @@ const WorkspaceThumbnail = new Lang.Class({
this._removed = false;
this.actor = new St.Group({ reactive: true,
clip_to_allocation: true,
style_class: 'workspace-thumbnail' });
this.actor = new St.Widget({ clip_to_allocation: true,
style_class: 'workspace-thumbnail' });
this.actor._delegate = this;
this._contents = new Clutter.Group();
this.actor.add_actor(this._contents);
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('button-press-event', Lang.bind(this,
function(actor, event) {
return true;
}));
this.actor.connect('button-release-event', Lang.bind(this,
function(actor, event) {
this._activate();
return true;
}));
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
this._contents.add_actor(this._background);
@ -405,7 +397,9 @@ const WorkspaceThumbnail = new Lang.Class({
let clone = new WindowClone(win);
clone.connect('selected',
Lang.bind(this, this._activate));
Lang.bind(this, function(clone, time) {
this.activate(time);
}));
clone.connect('drag-begin',
Lang.bind(this, function(clone) {
Main.overview.beginWindowDrag();
@ -430,7 +424,7 @@ const WorkspaceThumbnail = new Lang.Class({
return clone;
},
_activate : function (clone, time) {
activate : function (time) {
if (this.state > ThumbnailState.NORMAL)
return;
@ -441,8 +435,8 @@ const WorkspaceThumbnail = new Lang.Class({
this.metaWorkspace.activate(time);
},
// Draggable target interface
handleDragOver : function(source, actor, x, y, time) {
// Draggable target interface used only by ThumbnailsBox
handleDragOverInternal : function(source, time) {
if (source == Main.xdndHandler) {
this.metaWorkspace.activate(time);
return DND.DragMotionResult.CONTINUE;
@ -451,11 +445,6 @@ const WorkspaceThumbnail = new Lang.Class({
if (this.state > ThumbnailState.NORMAL)
return DND.DragMotionResult.CONTINUE;
let [w, h] = this.actor.get_transformed_size();
// Bubble up if we're in the "workspace cut".
if (y < WORKSPACE_CUT_SIZE || y > h - WORKSPACE_CUT_SIZE)
return DND.DragMotionResult.CONTINUE;
if (source.realWindow && !this._isMyWindow(source.realWindow))
return DND.DragMotionResult.MOVE_DROP;
if (source.shellWorkspaceLaunch)
@ -464,7 +453,7 @@ const WorkspaceThumbnail = new Lang.Class({
return DND.DragMotionResult.CONTINUE;
},
acceptDrop : function(source, actor, x, y, time) {
acceptDropInternal : function(source, time) {
if (this.state > ThumbnailState.NORMAL)
return false;
@ -502,7 +491,8 @@ const ThumbnailsBox = new Lang.Class({
Name: 'ThumbnailsBox',
_init: function() {
this.actor = new Shell.GenericContainer({ style_class: 'workspace-thumbnails',
this.actor = new Shell.GenericContainer({ reactive: true,
style_class: 'workspace-thumbnails',
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
@ -531,6 +521,7 @@ const ThumbnailsBox = new Lang.Class({
this._indicator = indicator;
this.actor.add_actor(indicator);
this._dropWorkspace = -1;
this._dropPlaceholderPos = -1;
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
this.actor.add_actor(this._dropPlaceholder);
@ -548,6 +539,9 @@ const ThumbnailsBox = new Lang.Class({
this._thumbnails = [];
this.actor.connect('button-press-event', function() { return true; });
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
Main.overview.connect('item-drag-begin',
Lang.bind(this, this._onDragBegin));
Main.overview.connect('item-drag-end',
@ -562,6 +556,22 @@ const ThumbnailsBox = new Lang.Class({
Lang.bind(this, this._onDragCancelled));
},
_onButtonRelease: function(actor, event) {
let [stageX, stageY] = event.get_coords();
let [r, x, y] = this.actor.transform_stage_point(stageX, stageY);
for (let i = 0; i < this._thumbnails.length; i++) {
let thumbnail = this._thumbnails[i]
let [w, h] = thumbnail.actor.get_transformed_size();
if (y >= thumbnail.actor.y && y <= thumbnail.actor.y + h) {
thumbnail.activate(event.time);
break;
}
}
return true;
},
_onDragBegin: function() {
this._dragCancelled = false;
this._dragMonitor = {
@ -607,85 +617,108 @@ const ThumbnailsBox = new Lang.Class({
// Draggable target interface
handleDragOver : function(source, actor, x, y, time) {
if (!source.realWindow && !source.shellWorkspaceLaunch)
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
return DND.DragMotionResult.CONTINUE;
if (!Meta.prefs_get_dynamic_workspaces())
return DND.DragMotionResult.CONTINUE;
let spacing = this.actor.get_theme_node().get_length('spacing');
let thumbHeight = this._porthole.height * this._scale;
let workspace = -1;
let firstThumbY;
this._dropWorkspace = -1;
let placeholderPos = -1;
let targetBase;
if (this._dropPlaceholderPos == 0)
firstThumbY = this._dropPlaceholder.y;
targetBase = this._dropPlaceholder.y;
else
firstThumbY = this._thumbnails[0].actor.y;
for (let i = 0; i < this._thumbnails.length; i ++) {
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
targetBase = this._thumbnails[0].actor.y;
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
let length = this._thumbnails.length;
for (let i = 0; i < length; i ++) {
// Allow the reorder target to have a 10px "cut" into
// each side of the thumbnail, to make dragging onto the
// placeholder easier
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
let [w, h] = this._thumbnails[i].actor.get_transformed_size();
let targetBottom = targetBase + WORKSPACE_CUT_SIZE;
let nextTargetBase = targetBase + h + spacing;
let nextTargetTop = nextTargetBase - spacing - ((i == length - 1) ? 0: WORKSPACE_CUT_SIZE);
// Expand the target to include the placeholder, if it exists.
if (i == this._dropPlaceholderPos)
targetBottom += this._dropPlaceholder.get_height();
if (y > targetTop && y <= targetBottom) {
workspace = i;
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
placeholderPos = i;
break;
} else if (y > targetBottom && y <= nextTargetTop) {
this._dropWorkspace = i;
break
}
targetBase = nextTargetBase;
targetTop = nextTargetTop;
}
if (this._dropPlaceholderPos != workspace) {
this._dropPlaceholderPos = workspace;
if (this._dropPlaceholderPos != placeholderPos) {
this._dropPlaceholderPos = placeholderPos;
this.actor.queue_relayout();
}
if (workspace == -1)
if (this._dropWorkspace != -1)
return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, time);
else if (this._dropPlaceholderPos != -1)
return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
else
return DND.DragMotionResult.CONTINUE;
return DND.DragMotionResult.MOVE_DROP;
},
acceptDrop: function(source, actor, x, y, time) {
if (this._dropPlaceholderPos == -1)
return false;
if (this._dropWorkspace != -1) {
return this._thumbnails[this._dropWorkspace].acceptDropInternal(source, time);
} else if (this._dropPlaceholderPos != -1) {
if (!source.realWindow && !source.shellWorkspaceLaunch)
return false;
if (!source.realWindow && !source.shellWorkspaceLaunch)
return false;
let isWindow = !!source.realWindow;
let isWindow = !!source.realWindow;
// To create a new workspace, we first slide all the windows on workspaces
// below us to the next workspace, leaving a blank workspace for us to recycle.
let newWorkspaceIndex;
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
// To create a new workspace, we first slide all the windows on workspaces
// below us to the next workspace, leaving a blank workspace for us to recycle.
let newWorkspaceIndex;
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
// Nab all the windows below us.
let windows = global.get_window_actors().filter(function(win) {
if (isWindow)
return win.get_workspace() >= newWorkspaceIndex && win != source;
else
return win.get_workspace() >= newWorkspaceIndex;
});
// ... move them down one.
windows.forEach(function(win) {
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
true, time);
});
// Nab all the windows below us.
let windows = global.get_window_actors().filter(function(win) {
if (isWindow)
return win.get_workspace() >= newWorkspaceIndex && win != source;
else
return win.get_workspace() >= newWorkspaceIndex;
});
// ... and bam, a workspace, good as new.
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
true, time);
else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
timestamp: time });
// This new workspace will be automatically removed if the application fails
// to open its first window within some time, as tracked by Shell.WindowTracker.
// Here, we only add a very brief timeout to avoid the _immediate_ removal of the
// workspace while we wait for the startup sequence to load.
Main.keepWorkspaceAlive(global.screen.get_workspace_by_index(newWorkspaceIndex),
WORKSPACE_KEEP_ALIVE_TIME);
}
// ... move them down one.
windows.forEach(function(win) {
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
true, time);
});
if (isWindow)
// ... and bam, a workspace, good as new.
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
true, time);
else if (source.shellWorkspaceLaunch)
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
timestamp: time });
return true;
return true;
} else {
return false;
}
},
show: function() {
@ -952,7 +985,7 @@ const ThumbnailsBox = new Lang.Class({
},
_allocate: function(actor, box, flags) {
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
// See comment about this._background in _init()
let themeNode = this._background.get_theme_node();

View File

@ -29,7 +29,7 @@ const WorkspacesView = new Lang.Class({
Name: 'WorkspacesView',
_init: function(workspaces) {
this.actor = new St.Group({ style_class: 'workspaces-view' });
this.actor = new St.Widget({ style_class: 'workspaces-view' });
// The actor itself isn't a drop target, so we don't want to pick on its area
this.actor.set_size(0, 0);
@ -509,6 +509,7 @@ const WorkspacesDisplay = new Lang.Class({
this._inDrag = false;
this._cancelledDrag = false;
this._controlsInitiallyHovered = false;
this._alwaysZoomOut = false;
this._zoomOut = false;
this._zoomFraction = 0;
@ -543,6 +544,19 @@ const WorkspacesDisplay = new Lang.Class({
},
show: function() {
if(!this._alwaysZoomOut) {
let [mouseX, mouseY] = global.get_pointer();
let [x, y] = this._controls.get_transformed_position();
let [width, height] = this._controls.get_transformed_size();
let visibleWidth = this._controls.get_theme_node().get_length('visible-width');
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
if(rtl)
x = x + width - visibleWidth;
if(mouseX > x - 0.5 && mouseX < x + visibleWidth + 0.5 &&
mouseY > y - 0.5 && mouseY < y + height + 0.5)
this._controlsInitiallyHovered = true;
}
this._zoomOut = this._alwaysZoomOut;
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
this._updateZoom();
@ -591,6 +605,9 @@ const WorkspacesDisplay = new Lang.Class({
this._controls.hide();
this._thumbnailsBox.hide();
if (!this._alwaysZoomOut)
this.zoomFraction = 0;
if (this._restackedNotifyId > 0){
global.screen.disconnect(this._restackedNotifyId);
this._restackedNotifyId = 0;
@ -790,7 +807,7 @@ const WorkspacesDisplay = new Lang.Class({
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
let controlsReserved = controlsVisible * (1 - this._zoomFraction) + controlsNatural * this._zoomFraction;
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
if (rtl) {
childBox.x2 = controlsReserved;
childBox.x1 = childBox.x2 - controlsNatural;
@ -850,7 +867,7 @@ const WorkspacesDisplay = new Lang.Class({
let [x, y] = this.actor.get_transformed_position();
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
let clipWidth = width - controlsVisible;
let clipHeight = (fullHeight / fullWidth) * clipWidth;
@ -996,7 +1013,10 @@ const WorkspacesDisplay = new Lang.Class({
},
_onControlsHoverChanged: function() {
this._updateZoom();
if(!this._controls.hover)
this._controlsInitiallyHovered = false;
if(!this._controlsInitiallyHovered)
this._updateZoom();
},
_dragBegin: function() {

View File

@ -36,6 +36,7 @@ ko
ku
lt
lv
ml
mk
mr
ms

View File

@ -15,7 +15,9 @@ js/ui/dateMenu.js
js/ui/endSessionDialog.js
js/ui/extensionSystem.js
js/ui/keyboard.js
js/ui/keyringPrompt.js
js/ui/lookingGlass.js
js/ui/main.js
js/ui/messageTray.js
js/ui/networkAgent.js
js/ui/notificationDaemon.js
@ -44,6 +46,7 @@ src/main.c
src/shell-app.c
src/shell-app-system.c
src/shell-global.c
src/shell-keyring-prompt.c
src/shell-mobile-providers.c
src/shell-polkit-authentication-agent.c
src/shell-util.c

View File

@ -1,2 +1,3 @@
data/gnome-shell.desktop.in
data/gnome-shell-extension-prefs.desktop.in
data/org.gnome.shell.evolution.calendar.gschema.xml.in

1581
po/ar.po

File diff suppressed because it is too large Load Diff

1179
po/as.po

File diff suppressed because it is too large Load Diff

431
po/be.po

File diff suppressed because it is too large Load Diff

744
po/bg.po

File diff suppressed because it is too large Load Diff

1158
po/ca.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

619
po/cs.po

File diff suppressed because it is too large Load Diff

475
po/da.po
View File

@ -16,9 +16,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-20 23:16+0100\n"
"PO-Revision-Date: 2012-02-18 14:59+0100\n"
"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
"POT-Creation-Date: 2012-03-22 15:47+0100\n"
"PO-Revision-Date: 2012-03-22 13:02+0100\n"
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
@ -35,15 +35,20 @@ msgid "Window management and application launching"
msgstr "Vindueshåndtering og åbning af programmer"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extension Preferences"
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurér udvidelsesmoduler til GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extensions Preferences"
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
#: ../data/org.gnome.shell.gschema.xml.in.h:2
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
@ -51,20 +56,11 @@ msgstr ""
"Tillad adgang til interne fejlsøgnings- og overvågningsværktøjer med brug af "
"dialogen Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
msgstr "Filendelse til at gemme skærmoptagelser"
msgid "Uuids of extensions to enable"
msgstr "Uuid'er for udvidelser der aktiveres"
#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Billedfrekvens brugt til skærmoptagelser."
#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -76,43 +72,111 @@ msgstr ""
"skal være i denne liste. Du kan også redigere denne liste med DBus-metoderne "
"EnableExtension og DisableExtension ved org.shell.Shell."
#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid "Whether to collect stats about applications usage"
msgstr "Om der skal indsamles statistik om programmers brug"
#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
"dette, vil det ikke fjerne de allerede gemte data."
#: ../data/org.gnome.shell.gschema.xml.in.h:7
msgid "List of desktop file IDs for favorite applications"
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Programmerne som passer til disse identifikatorer vil blive vist i "
"favoritområdet."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "disabled OpenSearch providers"
msgstr "deaktiverede OpenSearch-udbydere"
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "History for command (Alt-F2) dialog"
msgstr "Historik for kommandodialogen (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "History for the looking glass dialog"
msgstr "Historik for looking glass-dialogen"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display seconds in time."
msgstr "Hvis sand vises sekunder i klokkeslæt."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
#: ../data/org.gnome.shell.gschema.xml.in.h:11
#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
"Brugt internt til at gemme den seneste IM-tilstedeværelse angivet direkte af "
"brugeren. Værdien er er fra tællingen TpConnectionPresenceType."
#: ../data/org.gnome.shell.gschema.xml.in.h:12
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr ""
"Brugt internt til at gemme den seneste tilstand for sessionstilstedeværelse "
"for brugeren. Værdien her er fra tællingen GsmPresenceStatus."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid "List of desktop file IDs for favorite applications"
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show the week date in the calendar"
msgstr "Vis ugenummer i kalenderen"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "If true, display the ISO week date in the calendar."
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Which keyboard to use"
msgstr "Hvilket tastatur bruges"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Tastaturtypen som bruges."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Vis tid med sekunder"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Hvis sand vises sekunder i klokkeslæt."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Vis dato i uret"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Billedfrekvens brugt til skærmoptagelser."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
"skærmoptager i billeder-per-sekund."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -137,27 +201,11 @@ msgstr ""
"webmmux\" og optager i WEBM-formatet med VP8-codec'et. %T bruges som "
"pladsholder for et gæt om det optimale trådantal på systemet."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show date in clock"
msgstr "Vis dato i uret"
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Filendelse til at gemme skærmoptagelser"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Show the week date in the calendar"
msgstr "Vis ugenummer i kalenderen"
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Vis tid med sekunder"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Programmerne som passer til disse identifikatorer vil blive vist i "
"favoritområdet."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -167,50 +215,6 @@ msgstr ""
"og bruge denne endelse. Det skal ændres når der optages i et andet "
"containerformat."
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
"skærmoptager i billeder-per-sekund."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
"dette, vil det ikke fjerne de allerede gemte data."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The type of keyboard to use."
msgstr "Tastaturtypen som bruges."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "Uuids of extensions to enable"
msgstr "Uuid'er for udvidelser der aktiveres"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "Whether to collect stats about applications usage"
msgstr "Om der skal indsamles statistik om programmers brug"
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "Which keyboard to use"
msgstr "Hvilket tastatur bruges"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid "disabled OpenSearch providers"
msgstr "deaktiverede OpenSearch-udbydere"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -247,8 +251,8 @@ msgstr "(eller indlæs fingeraftryk)"
msgid "Not listed?"
msgstr "Ikke listet?"
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Annullér"
@ -262,16 +266,16 @@ msgstr "Log ind"
msgid "Login Window"
msgstr "Indlogningsvindue"
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "Hviletilstand"
#: ../js/gdm/powerMenu.js:157
#: ../js/gdm/powerMenu.js:160
msgid "Restart"
msgstr "Genstart"
#: ../js/gdm/powerMenu.js:162
#: ../js/gdm/powerMenu.js:165
msgid "Power Off"
msgstr "Sluk"
@ -291,27 +295,27 @@ msgid "Execution of '%s' failed:"
msgstr "Kørsel af \"%s\" mislykkedes:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:251
#: ../js/ui/appDisplay.js:255
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:310
#: ../js/ui/appDisplay.js:314
msgid "APPLICATIONS"
msgstr "PROGRAMMER"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:375
msgid "SETTINGS"
msgstr "INDSTILLINGER"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:680
msgid "New Window"
msgstr "Nyt vindue"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:683
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:684
msgid "Add to Favorites"
msgstr "Føj til favoritter"
@ -484,94 +488,90 @@ msgstr "Denne uge"
msgid "Next week"
msgstr "Næste uge"
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
msgid "Unknown"
msgstr "Ukendt"
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
msgid "Available"
msgstr "Tilgængelig"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
msgid "Away"
msgstr "Ikke tilstede"
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
msgid "Busy"
msgstr "Optaget"
#: ../js/ui/contactDisplay.js:97
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "Offline"
#: ../js/ui/contactDisplay.js:148
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
msgstr "KONTAKTER"
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
msgid "Remove"
msgstr "Fjern"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:103
msgid "Date and Time Settings"
msgstr "Indstillinger for dato og tid"
#: ../js/ui/dateMenu.js:123
#: ../js/ui/dateMenu.js:129
msgid "Open Calendar"
msgstr "Åbn kalender"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:187
msgid "%a %b %e, %R:%S"
msgstr "%a %e. %b, %R:%S"
#: ../js/ui/dateMenu.js:182
#: ../js/ui/dateMenu.js:188
msgid "%a %b %e, %R"
msgstr "%a %e. %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:186
#: ../js/ui/dateMenu.js:192
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:193
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:200
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e. %b, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:195
#: ../js/ui/dateMenu.js:201
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e. %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:199
#: ../js/ui/dateMenu.js:205
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:206
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:211
#: ../js/ui/dateMenu.js:217
msgid "%A %B %e, %Y"
msgstr "%A, %e. %B %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "SENESTE ELEMENTER"
#: ../js/ui/endSessionDialog.js:61
#, c-format
msgctxt "title"
@ -660,23 +660,31 @@ msgstr[1] "Systemet vil genstarte automatisk om %d sekunder."
msgid "Restarting the system."
msgstr "Genstarter systemet."
#: ../js/ui/extensionSystem.js:405
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Installér"
#: ../js/ui/extensionSystem.js:409
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:322
#: ../js/ui/keyboard.js:327
msgid "tray"
msgstr "statusfelt"
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Tastatur"
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Adgangskode:"
#: ../js/ui/keyringPrompt.js:101
msgid "Type again:"
msgstr "Indtast igen:"
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Ingen udvidelser er installeret"
@ -725,19 +733,25 @@ msgstr "Vis kilde"
msgid "Web Page"
msgstr "Webside"
#: ../js/ui/messageTray.js:1197
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Skærmoptagelse fra %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
msgstr "Åbn"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Unmute"
msgstr "Slå lyd til"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Mute"
msgstr "Slå lyd fra"
#: ../js/ui/messageTray.js:2447
#: ../js/ui/messageTray.js:2490
msgid "System Information"
msgstr "Systeminformation"
@ -826,31 +840,35 @@ msgstr "En adgangskode er påkrævet for at forbinde til \"%s\"."
msgid "Undo"
msgstr "Fortryd"
#: ../js/ui/overview.js:199
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Oversigt"
#: ../js/ui/overview.js:202
msgid "Windows"
msgstr "Vinduer"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:205
msgid "Applications"
msgstr "Programmer"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:231
msgid "Dash"
msgstr "Favoritområde"
#: ../js/ui/panel.js:582
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Afslut"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:613
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:983
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Toppanel"
@ -891,16 +909,12 @@ msgstr "Godkend"
msgid "Sorry, that didn't work. Please try again."
msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Adgangskode:"
#. 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.
#: ../js/ui/popupMenu.js:720
#: ../js/ui/popupMenu.js:724
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -908,11 +922,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Indtast en kommando:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:332
msgid "Searching..."
msgstr "Søger..."
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:414
msgid "No matching results."
msgstr "Ingen resultater fundet."
@ -1070,7 +1084,7 @@ msgstr "Giv altid adgang"
msgid "Grant this time only"
msgstr "Giv kun lov denne gang"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Afvis"
@ -1347,39 +1361,39 @@ msgid "Invitation"
msgstr "Invitation"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:273
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "Opkald"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:289
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Filoverførsel"
#: ../js/ui/telepathyClient.js:371
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Godkendelsesforespørgsel"
#: ../js/ui/telepathyClient.js:407
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "Forbindelsesfejl"
#: ../js/ui/telepathyClient.js:665
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s er online."
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s er offline."
#: ../js/ui/telepathyClient.js:673
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "%s er ikke til stede."
#: ../js/ui/telepathyClient.js:676
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s er optaget."
@ -1387,35 +1401,35 @@ msgstr "%s er optaget."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Sendt <b>%A</b> kl. <b>%H:%M</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "%s kalder sig nu %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "Invitation til %s"
@ -1423,35 +1437,35 @@ msgstr "Invitation til %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.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s inviterer dig til at deltage i %s"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Afvis"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Acceptér"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Videoopkald fra %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Opkald fra %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Svar"
@ -1460,111 +1474,111 @@ msgstr "Svar"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s sender dig %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s vil gerne have tilladelse til at se, når du er online"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Netværksfejl"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Godkendelse mislykkedes"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Krypteringsfejl"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Certifikat ikke angivet"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "Utroværdigt certifikat"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Certifikat udløbet"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Certifikat ikke aktiveret"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "Certifikat-værtsnavn stemmer ikke"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "Certifikat-fingeraftryk stemmer ikke"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Certifikat selv-underskrevet"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "Status er angivet til offline"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "Kryptering er ikke tilgængelig"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "Ugyldigt certifikat"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "Forbindelse er blevet afvist"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "Forbindelse kan ikke oprettes"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Forbindelse er mistet"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Denne konto er allerede forbundet til serveren"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Forbindelsen er blevet erstattet af en ny forbindelse, som bruger samme "
"ressource"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "Kontoen findes allerede på serveren"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "Serveren er i øjeblikket for travl til at behandle forbindelsen"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "Certifikat er blevet påberåbt"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Certifikat bruger en usikker cipher-algoritme eller er kryptografisk svag"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1572,74 +1586,74 @@ msgstr ""
"Længden på servercertifikatet, eller dybden af servercertifikat-kæden, "
"overskrider grænsen, som er fastsat af det kryptografiske-programbibliotek"
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "Intern fejl"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "Forbindelse til %s mislykkedes"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Forbind igen"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Redigér konto"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Ukendt årsag"
#: ../js/ui/userMenu.js:133
#: ../js/ui/userMenu.js:135
msgid "Hidden"
msgstr "Skjult"
#: ../js/ui/userMenu.js:139
#: ../js/ui/userMenu.js:141
msgid "Idle"
msgstr "Tomgang"
#: ../js/ui/userMenu.js:142
#: ../js/ui/userMenu.js:144
msgid "Unavailable"
msgstr "Utilgængelig"
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
msgid "Power Off..."
msgstr "Sluk..."
#: ../js/ui/userMenu.js:615
#: ../js/ui/userMenu.js:631
msgid "Notifications"
msgstr "Beskeder"
#: ../js/ui/userMenu.js:623
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "Online konti"
#: ../js/ui/userMenu.js:627
#: ../js/ui/userMenu.js:643
msgid "System Settings"
msgstr "Systemindstillinger"
#: ../js/ui/userMenu.js:634
#: ../js/ui/userMenu.js:650
msgid "Lock Screen"
msgstr "Lås skærm"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:655
msgid "Switch User"
msgstr "Skift bruger"
#: ../js/ui/userMenu.js:644
#: ../js/ui/userMenu.js:660
msgid "Log Out..."
msgstr "Log ud..."
#: ../js/ui/userMenu.js:672
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "Din chat-status vil blive angivet som optaget"
#: ../js/ui/userMenu.js:673
#: ../js/ui/userMenu.js:689
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1678,7 +1692,7 @@ msgstr "Oraklet %s siger"
msgid "Your favorite Easter Egg"
msgstr "Dit yndlingspåskeæg"
#: ../js/ui/windowAttentionHandler.js:33
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "\"%s\" er klar"
@ -1705,19 +1719,27 @@ msgstr[1] "%u inputs"
msgid "System Sounds"
msgstr "Systemlyde"
#: ../src/main.c:262
#: ../src/main.c:255
msgid "Print version"
msgstr "Udskriv version"
#: ../src/main.c:268
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "Tilstand brugt af GDM til indlogningskærm"
#: ../src/shell-app.c:617
#: ../src/shell-app.c:619
#, c-format
msgid "Failed to launch '%s'"
msgstr "Kunne ikke køre \"%s\""
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "Adgangskoder er ikke ens."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "Adgangskode må ikke være tom"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "Storbritannien"
@ -1752,6 +1774,9 @@ msgstr "Filsystem"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "SENESTE ELEMENTER"
#~ msgid ""
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
#~ "which should be loaded. disabled-extensions overrides this setting for "

1033
po/de.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

964
po/eo.po

File diff suppressed because it is too large Load Diff

376
po/es.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-02-20 07:42+0000\n"
"PO-Revision-Date: 2012-02-20 10:59+0100\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-01 19:11+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n"
@ -29,7 +29,7 @@ msgstr "Gestión de ventanas e inicio de aplicaciones"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extensions Preferences"
msgid "GNOME Shell Extension Preferences"
msgstr "Preferencias de las extensiones de GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
@ -133,34 +133,42 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Asociación de teclas para abrir el menú de la aplicación"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Asociación de teclas para abrir el menú de la aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Qué teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "The type of keyboard to use."
msgstr "El tipo de teclado que usar."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show time with seconds"
msgstr "Mostrar la hora con segundos"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display seconds in time."
msgstr "Si es cierta, muestra los segundos en la hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Show date in clock"
msgstr "Mostrar la fecha en el reloj"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "If true, display date in the clock, in addition to time."
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Framerate used for recording screencasts."
msgstr "Tasa de fotogramas usada para grabar «screencast»."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -168,11 +176,11 @@ msgstr ""
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
"«screencast» de GNOME Shell, en fotogramas por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -187,22 +195,22 @@ msgid ""
"thread count on the system."
msgstr ""
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
"desconectado donde grabar el vídeo que se está grabando. Generalmente tendrá "
"un punto de origen desconectado; la salida de ese punto se escribirá en el "
"archivo de salida. Sin embargo, la tubería también puede tomar parte en su "
"propia salida; esto se puede usar para enviar la salida a un servidor "
"«icecast» a través de shout2send o similar. Cuando no está establecido o lo "
"está a un valor vacío, se usará la tubería predeterminada. Actualmente es "
"«'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux» y graba en WEBM "
"usando el códec VP8. Se usa %T como marcador de posición para el número de "
"hilos óptimos en el sistema."
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
"(«sink») desconectado donde grabar el vídeo que se está grabando. "
"Generalmente tendrá un punto de origen desconectado; la salida de ese punto "
"se escribirá en el archivo de salida. Sin embargo, la tubería también puede "
"tomar parte en su propia salida; esto se puede usar para enviar la salida a "
"un servidor «icecast» a través de shout2send o similar. Cuando no está "
"establecido o lo está a un valor vacío, se usará la tubería predeterminada. "
"Actualmente es «'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux» y "
"graba en WEBM usando el códec VP8. Se usa %T como marcador de posición para "
"el número de hilos óptimos en el sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.h:29
msgid "File extension used for storing the screencast"
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:30
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -248,8 +256,8 @@ msgstr "(o pase el dedo)"
msgid "Not listed?"
msgstr "¿No está en la lista?"
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Cancelar"
@ -263,16 +271,16 @@ msgstr "Iniciar sesión"
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "Suspender"
#: ../js/gdm/powerMenu.js:157
#: ../js/gdm/powerMenu.js:160
msgid "Restart"
msgstr "Reiniciar"
#: ../js/gdm/powerMenu.js:162
#: ../js/gdm/powerMenu.js:165
msgid "Power Off"
msgstr "Apagar"
@ -292,27 +300,27 @@ msgid "Execution of '%s' failed:"
msgstr "Falló la ejecución de «%s»:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:251
#: ../js/ui/appDisplay.js:255
msgid "All"
msgstr "Todas"
#: ../js/ui/appDisplay.js:310
#: ../js/ui/appDisplay.js:314
msgid "APPLICATIONS"
msgstr "APLICACIONES"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:375
msgid "SETTINGS"
msgstr "CONFIGURACIÓN"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:680
msgid "New Window"
msgstr "Ventana nueva"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:683
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:684
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
@ -485,94 +493,90 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "La semana que viene"
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
msgid "Unknown"
msgstr "Desconocido"
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
msgid "Available"
msgstr "Disponible"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
msgid "Away"
msgstr "Ausente"
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
msgid "Busy"
msgstr "Ocupado"
#: ../js/ui/contactDisplay.js:97
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "Desconectado"
#: ../js/ui/contactDisplay.js:148
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
msgstr "CONTACTOS"
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
msgid "Remove"
msgstr "Quitar"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:103
msgid "Date and Time Settings"
msgstr "Ajustes de hora y fecha"
#: ../js/ui/dateMenu.js:123
#: ../js/ui/dateMenu.js:129
msgid "Open Calendar"
msgstr "Abrir calendario"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:187
msgid "%a %b %e, %R:%S"
msgstr "%a %e de %b, %R:%S"
#: ../js/ui/dateMenu.js:182
#: ../js/ui/dateMenu.js:188
msgid "%a %b %e, %R"
msgstr "%a %e de %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:186
#: ../js/ui/dateMenu.js:192
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:193
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:200
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e de %b, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:195
#: ../js/ui/dateMenu.js:201
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e de %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:199
#: ../js/ui/dateMenu.js:205
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:206
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:211
#: ../js/ui/dateMenu.js:217
msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "ELEMENTOS RECIENTES"
#: ../js/ui/endSessionDialog.js:61
#, c-format
msgctxt "title"
@ -664,84 +668,98 @@ msgstr[1] "El sistema se reiniciará automáticamente en %d segundos."
msgid "Restarting the system."
msgstr "Reiniciando el sistema."
#: ../js/ui/extensionSystem.js:405
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Instalar"
#: ../js/ui/extensionSystem.js:409
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:322
#: ../js/ui/keyboard.js:327
msgid "tray"
msgstr "bandeja"
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Teclado"
#: ../js/ui/lookingGlass.js:725
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Contraseña:"
#: ../js/ui/keyringPrompt.js:101
msgid "Type again:"
msgstr "Escriba de nuevo:"
#: ../js/ui/lookingGlass.js:732
msgid "No extensions installed"
msgstr "No hay extensiones instaladas"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:779
#: ../js/ui/lookingGlass.js:786
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s no ha generado ningún error."
#: ../js/ui/lookingGlass.js:785
#: ../js/ui/lookingGlass.js:792
msgid "Hide Errors"
msgstr "Ocultar errores"
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
msgid "Show Errors"
msgstr "Mostrar errores"
#: ../js/ui/lookingGlass.js:798
#: ../js/ui/lookingGlass.js:805
msgid "Enabled"
msgstr "Activado"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Desactivado"
#: ../js/ui/lookingGlass.js:803
#: ../js/ui/lookingGlass.js:810
msgid "Error"
msgstr "Error"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:812
msgid "Out of date"
msgstr "Caducado"
#: ../js/ui/lookingGlass.js:807
#: ../js/ui/lookingGlass.js:814
msgid "Downloading"
msgstr "Descargando"
#: ../js/ui/lookingGlass.js:828
#: ../js/ui/lookingGlass.js:835
msgid "View Source"
msgstr "Ver fuente"
#: ../js/ui/lookingGlass.js:834
#: ../js/ui/lookingGlass.js:841
msgid "Web Page"
msgstr "Página web"
#: ../js/ui/messageTray.js:1197
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Screencast desde %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Unmute"
msgstr "Dar voz"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Mute"
msgstr "Silenciar"
#: ../js/ui/messageTray.js:2447
#: ../js/ui/messageTray.js:2490
msgid "System Information"
msgstr "Información del sistema"
@ -787,8 +805,8 @@ msgstr "La red inalámbrica requiere autenticación"
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»."
@ -830,31 +848,35 @@ msgstr "Se requiere una contraseña para conectar a «%s»."
msgid "Undo"
msgstr "Deshacer"
#: ../js/ui/overview.js:199
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Vista general"
#: ../js/ui/overview.js:202
msgid "Windows"
msgstr "Ventanas"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:205
msgid "Applications"
msgstr "Aplicaciones"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:231
msgid "Dash"
msgstr "Tablero"
#: ../js/ui/panel.js:582
#: ../js/ui/panel.js:592
msgid "Quit"
msgstr "Salir"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:613
#: ../js/ui/panel.js:624
msgid "Activities"
msgstr "Actividades"
#: ../js/ui/panel.js:983
#: ../js/ui/panel.js:999
msgid "Top Bar"
msgstr "Barra superior"
@ -895,16 +917,12 @@ msgstr "Autenticar"
msgid "Sorry, that didn't work. Please try again."
msgstr "Inténtelo de nuevo,"
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Contraseña:"
#. 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.
#: ../js/ui/popupMenu.js:720
#: ../js/ui/popupMenu.js:724
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -912,11 +930,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Introduzca un comando:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:332
msgid "Searching..."
msgstr "Buscando…"
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:414
msgid "No matching results."
msgstr "No se encontró ningún resultado coincidente."
@ -1074,7 +1092,7 @@ msgstr "Conceder acceso siempre"
msgid "Grant this time only"
msgstr "Conceder sólo esta vez"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Rechazar"
@ -1351,39 +1369,39 @@ msgid "Invitation"
msgstr "Invitación"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:273
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "Llamar"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:289
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Transferencia de archivos"
#: ../js/ui/telepathyClient.js:371
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Solicitud de suscripción"
#: ../js/ui/telepathyClient.js:407
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "Error de conexión"
#: ../js/ui/telepathyClient.js:665
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s está conectado/a."
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s está desconectado/a."
#: ../js/ui/telepathyClient.js:673
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "%s está ausente."
#: ../js/ui/telepathyClient.js:676
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s está ocupado/a."
@ -1391,35 +1409,35 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "Ahora %s se llama %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "Invitación a %s"
@ -1427,35 +1445,35 @@ msgstr "Invitación a %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.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s le está invitando a unirse a %s"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Rechazar"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Videollamada de %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Llamada de %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Responder"
@ -1464,112 +1482,112 @@ msgstr "Responder"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s le está enviando %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s solicita permiso para ver cuándo está en línea"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Error de la red"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Falló la autenticación"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Error de cifrado"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Certificado no proporcionado"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "No se confía en el certificado"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Certificado caducado"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Certificado no activado"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "El nombre del servidor dle certificado no coincide"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "La huella del certificado no coincide"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Certificado autofirmado"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "El estado está establecido a «desconectado»"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "El cifrado no está disponible"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "El certificado no es válido"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "Se ha rechazado la conexión"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "No se puede establecer la conexión"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Se ha perdido la conexión"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Esta cuenta ya está conectada al servidor"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "La cuenta ya existe en el servidor"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr ""
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "Se ha revocado el certificado"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
"débil"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1578,74 +1596,74 @@ msgstr ""
"certificado del servidor exceden los límites impuestos por la biblioteca de "
"criptografía"
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "Error interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "Falló la conexión a %s"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Reconectar"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Editar cuenta"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Razón desconocida"
#: ../js/ui/userMenu.js:133
#: ../js/ui/userMenu.js:135
msgid "Hidden"
msgstr "Oculto"
#: ../js/ui/userMenu.js:139
#: ../js/ui/userMenu.js:141
msgid "Idle"
msgstr "Inactivo"
#: ../js/ui/userMenu.js:142
#: ../js/ui/userMenu.js:144
msgid "Unavailable"
msgstr "No disponible"
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
msgid "Power Off..."
msgstr "Apagar…"
#: ../js/ui/userMenu.js:615
#: ../js/ui/userMenu.js:631
msgid "Notifications"
msgstr "Notificaciones"
#: ../js/ui/userMenu.js:623
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "Cuentas en línea"
#: ../js/ui/userMenu.js:627
#: ../js/ui/userMenu.js:643
msgid "System Settings"
msgstr "Configuración del sistema"
#: ../js/ui/userMenu.js:634
#: ../js/ui/userMenu.js:650
msgid "Lock Screen"
msgstr "Bloquear la pantalla"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:655
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:644
#: ../js/ui/userMenu.js:660
msgid "Log Out..."
msgstr "Cerrar la sesión…"
#: ../js/ui/userMenu.js:672
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "Su estado del chat se establecerá a «ocupado»"
#: ../js/ui/userMenu.js:673
#: ../js/ui/userMenu.js:689
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1684,7 +1702,7 @@ msgstr "%s el oráculo dice"
msgid "Your favorite Easter Egg"
msgstr "Su mensaje oculto favorito"
#: ../js/ui/windowAttentionHandler.js:33
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "«%s» está preparado"
@ -1711,19 +1729,27 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sonidos del sistema"
#: ../src/main.c:262
#: ../src/main.c:255
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:268
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio"
#: ../src/shell-app.c:617
#: ../src/shell-app.c:619
#, c-format
msgid "Failed to launch '%s'"
msgstr "Falló al lanzar «%s»"
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "La contraseña no puede estar vacía"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "Reino Unido"
@ -1758,6 +1784,9 @@ msgstr "Sistema de archivos"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "ELEMENTOS RECIENTES"
#~ msgid ""
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
#~ "which should be loaded. disabled-extensions overrides this setting for "
@ -2030,8 +2059,8 @@ msgstr "%1$s: %2$s"
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
#~ "in time."
#~ msgstr ""
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
#~ "en la hora."
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
#~ "segundos en la hora."
#~ msgid ""
#~ "This key specifies the format used by the panel clock when the format key "
@ -2048,18 +2077,19 @@ msgstr "%1$s: %2$s"
#~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
#~ "01-01. If set to \"custom\", the clock will display time according to the "
#~ "format specified in the custom_format key. Note that if set to either "
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
#~ "to the format specified in the custom_format key. Note that if set to "
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
#~ "ignored."
#~ msgstr ""
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
#~ "ignoran las claves «show_date» y «show_seconds»."
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
#~ "especificado en la clave «custom_format». Note que si se establece a "
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
#~ msgid "Clock Format"
#~ msgstr "Formato del reloj"

View File

@ -13,14 +13,14 @@ msgstr ""
"Project-Id-Version: gnome-shell MASTER\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-02-18 00:47+0000\n"
"PO-Revision-Date: 2012-02-18 02:56+0200\n"
"POT-Creation-Date: 2012-03-21 04:50+0000\n"
"PO-Revision-Date: 2012-03-21 10:34+0200\n"
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
"Language-Team: Estonian <>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Poedit-Language: Estonian\n"
"X-Poedit-Country: Estonia\n"
@ -31,7 +31,7 @@ msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Aknahaldur ja rakenduste käivitaja"
msgid "GNOME Shell Extensions Preferences"
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Shelli laienduste eelistused"
msgid "Configure GNOME Shell Extensions"
@ -93,6 +93,20 @@ msgstr "Käsudialoogi (Alt-F2) ajalugu"
msgid "History for the looking glass dialog"
msgstr "Otsingudialoogi ajalugu"
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
"salvestamiseks. See väärtus pärineb TpConnectionPresenceType nummerdusest."
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr ""
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
"salvestamiseks. See väärtus pärineb GsmPresenceStatus nummerdusest."
msgid "Show the week date in the calendar"
msgstr "Kalendris näidatakse kuupäeva nädalavormingus"
@ -448,9 +462,6 @@ msgstr "%a, %l:%M %p"
msgid "%A %B %e, %Y"
msgstr "%A, %d. %B %Y"
msgid "RECENT ITEMS"
msgstr "HILJUTISED DOKUMENDID"
#, c-format
msgctxt "title"
msgid "Log Out %s"
@ -541,6 +552,12 @@ msgstr "salv"
msgid "Keyboard"
msgstr "Klaviatuur"
msgid "Password:"
msgstr "Parool:"
msgid "Type again:"
msgstr "Sisesta uuesti:"
msgid "No extensions installed"
msgstr "Ühtegi laiendust pole paigaldatud"
@ -578,6 +595,11 @@ msgstr "Kuva lähtekoodi"
msgid "Web Page"
msgstr "Veebileht"
#. Translators: this is a filename used for screencast recording
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Ekraanivideo %d %t"
msgid "Open"
msgstr "Ava"
@ -654,6 +676,9 @@ msgstr "'%s' ühenduse loomiseks on vaja parooli."
msgid "Undo"
msgstr "Võta tagasi"
msgid "Overview"
msgstr "Ülevaade"
msgid "Windows"
msgstr "Aknad"
@ -705,9 +730,6 @@ msgstr "Autendi"
msgid "Sorry, that didn't work. Please try again."
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
msgid "Password:"
msgstr "Parool:"
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
@ -1350,6 +1372,12 @@ msgstr "Sisselogimise kuval kasutatav GDM-i režiim"
msgid "Failed to launch '%s'"
msgstr "'%s' käivitamine nurjus"
msgid "Passwords do not match."
msgstr "Paroolid ei kattu."
msgid "Password cannot be blank"
msgstr "Parool ei saa olla tühi"
msgid "United Kingdom"
msgstr "Suurbritannia"

858
po/eu.po

File diff suppressed because it is too large Load Diff

718
po/fa.po

File diff suppressed because it is too large Load Diff

761
po/fi.po

File diff suppressed because it is too large Load Diff

1058
po/fr.po

File diff suppressed because it is too large Load Diff

347
po/gl.po
View File

@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-21 11:16+0100\n"
"PO-Revision-Date: 2012-02-21 11:18+0100\n"
"POT-Creation-Date: 2012-03-31 00:07+0200\n"
"PO-Revision-Date: 2012-03-31 00:08+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
"Language: gl\n"
@ -33,8 +33,8 @@ msgstr "Xestor de xanelas e inicio de aplicativos"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extensions Preferences"
msgstr "Preferencias das extensións de GNOME Shell"
msgid "GNOME Shell Extension Preferences"
msgstr "Preferencias de extensións de GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
@ -136,34 +136,42 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Combinación de teclas para abrir o menú de aplicativo"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Combinación de teclas para abrir o menú de aplicativo."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Que teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "The type of keyboard to use."
msgstr "O tipo de teclado a usar."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show time with seconds"
msgstr "Mostrar a hora con segundos"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display seconds in time."
msgstr "Se é certa, móstranse os segundos na hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Show date in clock"
msgstr "Mostrar a data no reloxo"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "If true, display date in the clock, in addition to time."
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Framerate used for recording screencasts."
msgstr "Taxa de marcos usada para gravar «screencast»."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -171,11 +179,11 @@ msgstr ""
"A taxa de marcos da grabación resultante grabada polo grabador de "
"«screencast» de GNOME Shell, en marcos por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -201,11 +209,11 @@ msgstr ""
"códec VP8. Úsase %T como marcador de posición para o número de fillos "
"óptimos no sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.h:29
msgid "File extension used for storing the screencast"
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:30
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -251,8 +259,8 @@ msgstr "(ou pase o dedo)"
msgid "Not listed?"
msgstr "Non está na lista?"
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Cancelar"
@ -266,16 +274,16 @@ msgstr "Iniciar sesión"
msgid "Login Window"
msgstr "Xanela de inicio de sesión"
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "Suspender"
#: ../js/gdm/powerMenu.js:157
#: ../js/gdm/powerMenu.js:160
msgid "Restart"
msgstr "Reiniciar"
#: ../js/gdm/powerMenu.js:162
#: ../js/gdm/powerMenu.js:165
msgid "Power Off"
msgstr "Apagar"
@ -295,27 +303,27 @@ msgid "Execution of '%s' failed:"
msgstr "Produciuse un fallo na execución de «%s»:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:251
#: ../js/ui/appDisplay.js:255
msgid "All"
msgstr "Todos"
#: ../js/ui/appDisplay.js:310
#: ../js/ui/appDisplay.js:314
msgid "APPLICATIONS"
msgstr "APLICATIVOS"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:375
msgid "SETTINGS"
msgstr "CONFIGURACIÓN"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:680
msgid "New Window"
msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:683
msgid "Remove from Favorites"
msgstr "Eliminar dos favoritos"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:684
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
@ -488,94 +496,90 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "A vindeira semana"
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
msgid "Unknown"
msgstr "Descoñecido"
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
msgid "Available"
msgstr "Dispoñíbel"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
msgid "Away"
msgstr "Ausente"
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
msgid "Busy"
msgstr "Ocupado"
#: ../js/ui/contactDisplay.js:97
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "Desconectado"
#: ../js/ui/contactDisplay.js:148
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
msgstr "CONTACTOS"
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
msgid "Remove"
msgstr "Quitar"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:103
msgid "Date and Time Settings"
msgstr "Opcións de data e hora"
msgstr "Preferencias de data e hora"
#: ../js/ui/dateMenu.js:123
#: ../js/ui/dateMenu.js:129
msgid "Open Calendar"
msgstr "Abrir o calendario"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:187
msgid "%a %b %e, %R:%S"
msgstr "%a %e de %b, %R:%S"
#: ../js/ui/dateMenu.js:182
#: ../js/ui/dateMenu.js:188
msgid "%a %b %e, %R"
msgstr "%a %e de %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:186
#: ../js/ui/dateMenu.js:192
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:193
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:200
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e de %b, %l:%M:%S"
#: ../js/ui/dateMenu.js:195
#: ../js/ui/dateMenu.js:201
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e de %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:199
#: ../js/ui/dateMenu.js:205
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:206
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:211
#: ../js/ui/dateMenu.js:217
msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "ELEMENTOS RECENTES"
#: ../js/ui/endSessionDialog.js:61
#, c-format
msgctxt "title"
@ -666,84 +670,98 @@ msgstr[1] "O seu computador reiniciarase automaticamente en %d segundos."
msgid "Restarting the system."
msgstr "Reiniciando o sistema."
#: ../js/ui/extensionSystem.js:405
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Instalar"
#: ../js/ui/extensionSystem.js:409
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:322
#: ../js/ui/keyboard.js:327
msgid "tray"
msgstr "área de notificación"
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Teclado"
#: ../js/ui/lookingGlass.js:725
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Contrasinal:"
#: ../js/ui/keyringPrompt.js:101
msgid "Type again:"
msgstr "Escriba de novo:"
#: ../js/ui/lookingGlass.js:732
msgid "No extensions installed"
msgstr "Non hai ningunha extensión instalada"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:779
#: ../js/ui/lookingGlass.js:786
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s non xerou ningún erro."
#: ../js/ui/lookingGlass.js:785
#: ../js/ui/lookingGlass.js:792
msgid "Hide Errors"
msgstr "Ocultar erros"
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
msgid "Show Errors"
msgstr "Mostrar erros"
#: ../js/ui/lookingGlass.js:798
#: ../js/ui/lookingGlass.js:805
msgid "Enabled"
msgstr "Activado"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Desactivado"
#: ../js/ui/lookingGlass.js:803
#: ../js/ui/lookingGlass.js:810
msgid "Error"
msgstr "Erro"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:812
msgid "Out of date"
msgstr "Caducado"
#: ../js/ui/lookingGlass.js:807
#: ../js/ui/lookingGlass.js:814
msgid "Downloading"
msgstr "Descargando"
#: ../js/ui/lookingGlass.js:828
#: ../js/ui/lookingGlass.js:835
msgid "View Source"
msgstr "Ver fonte"
#: ../js/ui/lookingGlass.js:834
#: ../js/ui/lookingGlass.js:841
msgid "Web Page"
msgstr "Páxina web"
#: ../js/ui/messageTray.js:1197
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Screencast desde %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Unmute"
msgstr "Desactivar silencio"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Mute"
msgstr "Silenciar"
#: ../js/ui/messageTray.js:2447
#: ../js/ui/messageTray.js:2490
msgid "System Information"
msgstr "Información do sistema"
@ -832,31 +850,35 @@ msgstr "Requírese un contrasinal para conectarse a «%s»."
msgid "Undo"
msgstr "Desfacer"
#: ../js/ui/overview.js:199
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Vista xeral"
#: ../js/ui/overview.js:202
msgid "Windows"
msgstr "Xanelas"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:205
msgid "Applications"
msgstr "Aplicativos"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:231
msgid "Dash"
msgstr "Taboleiro"
#: ../js/ui/panel.js:582
#: ../js/ui/panel.js:592
msgid "Quit"
msgstr "Saír"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:613
#: ../js/ui/panel.js:624
msgid "Activities"
msgstr "Actividades"
#: ../js/ui/panel.js:983
#: ../js/ui/panel.js:999
msgid "Top Bar"
msgstr "Barra superior"
@ -897,16 +919,12 @@ msgstr "Autenticar"
msgid "Sorry, that didn't work. Please try again."
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Contrasinal:"
#. 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.
#: ../js/ui/popupMenu.js:720
#: ../js/ui/popupMenu.js:724
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -914,11 +932,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Escriba unha orde:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:332
msgid "Searching..."
msgstr "Buscando…"
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:414
msgid "No matching results."
msgstr "Non hai resultados que coincidan."
@ -979,7 +997,7 @@ msgstr "Teclas do rato"
#: ../js/ui/status/accessibility.js:83
msgid "Universal Access Settings"
msgstr "Opcións de acceso universal"
msgstr "Preferencias do acceso universal"
#: ../js/ui/status/accessibility.js:117
msgid "High Contrast"
@ -1010,7 +1028,7 @@ msgstr "Configurar un dispositivo novo…"
#: ../js/ui/status/bluetooth.js:87
msgid "Bluetooth Settings"
msgstr "Opcións de Bluetooth"
msgstr "Preferencias do Bluetooth"
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
@ -1048,15 +1066,15 @@ msgstr "O dispositivo solicitado non pode explorarse, o erro é «%s»"
#: ../js/ui/status/bluetooth.js:268
msgid "Keyboard Settings"
msgstr "Opcións do teclado"
msgstr "Preferencias do teclado"
#: ../js/ui/status/bluetooth.js:271
msgid "Mouse Settings"
msgstr "Opcións do rato"
msgstr "Preferencias do rato"
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
msgid "Sound Settings"
msgstr "Opcións do son"
msgstr "Preferencias do son"
#: ../js/ui/status/bluetooth.js:372
#, c-format
@ -1076,7 +1094,7 @@ msgstr "Conceder acceso sempre"
msgid "Grant this time only"
msgstr "Conceder só esta vez"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Rexeitar"
@ -1227,7 +1245,7 @@ msgstr "Conexións VPN"
#: ../js/ui/status/network.js:1602
msgid "Network Settings"
msgstr "Opcións da rede"
msgstr "Preferencias da rede"
#: ../js/ui/status/network.js:1739
msgid "Connection failed"
@ -1251,7 +1269,7 @@ msgstr "Batería"
#: ../js/ui/status/power.js:76
msgid "Power Settings"
msgstr "Opcións de enerxía"
msgstr "Preferencias de enerxía"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
@ -1353,39 +1371,39 @@ msgid "Invitation"
msgstr "Convite"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:273
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "Chamar"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:289
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Transferencia de ficheiro"
#: ../js/ui/telepathyClient.js:371
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Solicitude de autorización"
#: ../js/ui/telepathyClient.js:407
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "Erro de conexión"
#: ../js/ui/telepathyClient.js:665
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s está conectado/a."
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s está desconectado/a."
#: ../js/ui/telepathyClient.js:673
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "%s está ausente."
#: ../js/ui/telepathyClient.js:676
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s está ocupado/a."
@ -1393,35 +1411,35 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Enviado ás <b>%X</b> o <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "Agora %s chámase %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "Convite a %s"
@ -1429,35 +1447,35 @@ msgstr "Convite a %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.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s estalle convidando a unirse a %s"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Rexeitar"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Videochamada de %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Responder"
@ -1466,112 +1484,112 @@ msgstr "Responder"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s esta enviándolle %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s solicítalle permiso para ver cando está en liña"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Erro da rede"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Fallou a autenticación"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Erro de cifrado"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Certificado non fornecido"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "Non se confía no certificado"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Certificado caducado"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Certificado non activado"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "O nome do servidor do certificado non coincide"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "A pegada do certificado non coincide"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Certificado autoasinado"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "O estado está definido a «desconectado»"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "O cifrado non está dispoñíbel"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "O certificado non é válido"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "Rexeitouse a conexión"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "Non é posíbel estabelecer a conexión"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Perdeuse a conexión"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Esta cuenta xa está conectada ao servidor"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "Esta conta xa existe no servidor"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr ""
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "Revogouse o certificado"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
"débil"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1580,74 +1598,74 @@ msgstr ""
"certificado do servidor excede os límites impostos pola biblioteca de "
"criptografía."
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "Erro interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "Fallou a conexión a %s"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Reconectar"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Editar conta"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Razón descoñecida"
#: ../js/ui/userMenu.js:133
#: ../js/ui/userMenu.js:135
msgid "Hidden"
msgstr "Oculto"
#: ../js/ui/userMenu.js:139
#: ../js/ui/userMenu.js:141
msgid "Idle"
msgstr "Inactivo"
#: ../js/ui/userMenu.js:142
#: ../js/ui/userMenu.js:144
msgid "Unavailable"
msgstr "Non dispoñíbel"
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
msgid "Power Off..."
msgstr "Apagar…"
#: ../js/ui/userMenu.js:615
#: ../js/ui/userMenu.js:631
msgid "Notifications"
msgstr "Notificacións"
#: ../js/ui/userMenu.js:623
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "Contas en liña"
#: ../js/ui/userMenu.js:627
#: ../js/ui/userMenu.js:643
msgid "System Settings"
msgstr "Opcións do sistema"
msgstr "Preferencias do sistema"
#: ../js/ui/userMenu.js:634
#: ../js/ui/userMenu.js:650
msgid "Lock Screen"
msgstr "Bloquear a pantalla"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:655
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:644
#: ../js/ui/userMenu.js:660
msgid "Log Out..."
msgstr "Saír da sesión…"
#: ../js/ui/userMenu.js:672
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "O seu estado do chat estabelecerase a «ocupado»"
#: ../js/ui/userMenu.js:673
#: ../js/ui/userMenu.js:689
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1686,7 +1704,7 @@ msgstr "%s o oráculo dí"
msgid "Your favorite Easter Egg"
msgstr "A súa mensaxe oculta favorita"
#: ../js/ui/windowAttentionHandler.js:33
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "«%s» está preparado"
@ -1713,19 +1731,27 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sons do sistema"
#: ../src/main.c:262
#: ../src/main.c:255
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:268
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para a pantalla de inicio"
#: ../src/shell-app.c:617
#: ../src/shell-app.c:619
#, c-format
msgid "Failed to launch '%s'"
msgstr "Produciuse un fallo ao iniciar «%s»"
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "Os contrasinais non coinciden."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "O contrasinal non pode estar baleiro"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "Reino Unido"
@ -1760,6 +1786,9 @@ msgstr "Sistema de ficheiros"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "ELEMENTOS RECENTES"
#~ msgid ""
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
#~ "which should be loaded. disabled-extensions overrides this setting for "

1160
po/gu.po

File diff suppressed because it is too large Load Diff

388
po/he.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-17 15:08+0200\n"
"PO-Revision-Date: 2012-02-17 15:10+0200\n"
"POT-Creation-Date: 2012-04-09 22:48+0300\n"
"PO-Revision-Date: 2012-04-09 22:48+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
"Language: he\n"
@ -35,8 +35,8 @@ msgstr "הגדרת הרחבות GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extensions Preferences"
msgstr "העדפות הרחבות GNOME Shell"
msgid "GNOME Shell Extension Preferences"
msgstr "העדפות ההרחבות של GNOME Shell"
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
@ -79,63 +79,79 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "If true, display the ISO week date in the calendar."
#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
msgstr "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
msgstr "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid "Keybinding to open the application menu"
msgstr "Keybinding to open the application menu"
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Keybinding to open the application menu."
msgstr "Keybinding to open the application menu."
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "List of desktop file IDs for favorite applications"
msgstr "List of desktop file IDs for favorite applications"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show date in clock"
msgstr "Show date in clock"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "Show the week date in the calendar"
msgstr "Show the week date in the calendar"
#: ../data/org.gnome.shell.gschema.xml.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show time with seconds"
msgstr "Show time with seconds"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "The gstreamer pipeline used to encode the screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "The type of keyboard to use."
msgstr "סוג המקלדת לשימוש."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "Uuids of extensions to enable"
msgstr "Uuids of extensions to enable"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid "Whether to collect stats about applications usage"
msgstr "Whether to collect stats about applications usage"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:29
msgid "Which keyboard to use"
msgstr "באיזו מקלדת להשתמש"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:30
msgid "disabled OpenSearch providers"
msgstr "disabled OpenSearch providers"
@ -152,58 +168,58 @@ msgstr "<b>הרחבה</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
#: ../js/gdm/loginDialog.js:624
#: ../js/gdm/loginDialog.js:627
msgid "Session..."
msgstr "הפעלה..."
#: ../js/gdm/loginDialog.js:786
#: ../js/gdm/loginDialog.js:789
msgctxt "title"
msgid "Sign In"
msgstr "כניסה"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:831
#: ../js/gdm/loginDialog.js:834
msgid "(or swipe finger)"
msgstr "(או להעביר אצבע)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:852
#: ../js/gdm/loginDialog.js:855
msgid "Not listed?"
msgstr "לא רשום?"
#: ../js/gdm/loginDialog.js:1020
#: ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401
#: ../js/gdm/loginDialog.js:1023
#: ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400
#: ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175
#: ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "ביטול"
#: ../js/gdm/loginDialog.js:1025
#: ../js/gdm/loginDialog.js:1028
msgctxt "button"
msgid "Sign In"
msgstr "כניסה"
#: ../js/gdm/loginDialog.js:1377
#: ../js/gdm/loginDialog.js:1380
msgid "Login Window"
msgstr "חלון כניסה"
#: ../js/gdm/powerMenu.js:152
#: ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:155
#: ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599
#: ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "השהיה"
#: ../js/gdm/powerMenu.js:157
#: ../js/gdm/powerMenu.js:160
msgid "Restart"
msgstr "הפעלה מחדש"
#: ../js/gdm/powerMenu.js:162
#: ../js/gdm/powerMenu.js:165
msgid "Power Off"
msgstr "כיבוי"
@ -223,27 +239,27 @@ msgid "Execution of '%s' failed:"
msgstr "ההרצה של '%s' נכשלה:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:251
#: ../js/ui/appDisplay.js:255
msgid "All"
msgstr "הכול"
#: ../js/ui/appDisplay.js:310
#: ../js/ui/appDisplay.js:314
msgid "APPLICATIONS"
msgstr "יישומים"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:375
msgid "SETTINGS"
msgstr "הגדרות"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:680
msgid "New Window"
msgstr "חלון חדש"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:683
msgid "Remove from Favorites"
msgstr "הסרה מהמועדפים"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:684
msgid "Add to Favorites"
msgstr "הוספה למועדפים"
@ -416,100 +432,96 @@ msgstr "השבוע"
msgid "Next week"
msgstr "בשבוע הבא"
#: ../js/ui/contactDisplay.js:63
#: ../js/ui/contactDisplay.js:66
#: ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215
#: ../src/shell-app.c:372
#: ../src/shell-app.c:374
msgid "Unknown"
msgstr "לא ידוע"
#: ../js/ui/contactDisplay.js:84
#: ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:129
msgid "Available"
msgstr "זמין"
#: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:94
#: ../js/ui/userMenu.js:138
msgid "Away"
msgstr "מרוחק"
#: ../js/ui/contactDisplay.js:93
#: ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:98
#: ../js/ui/userMenu.js:132
msgid "Busy"
msgstr "עסוק"
#: ../js/ui/contactDisplay.js:97
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "מנותק"
#: ../js/ui/contactDisplay.js:148
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
msgstr "אנשי קשר"
#: ../js/ui/dash.js:229
#: ../js/ui/messageTray.js:1204
#: ../js/ui/messageTray.js:1207
msgid "Remove"
msgstr "הסרה"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:103
msgid "Date and Time Settings"
msgstr "הגדרות תאריך ושעה"
#: ../js/ui/dateMenu.js:123
#: ../js/ui/dateMenu.js:129
msgid "Open Calendar"
msgstr "פתיחת היומן"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:187
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
#: ../js/ui/dateMenu.js:182
#: ../js/ui/dateMenu.js:188
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:186
#: ../js/ui/dateMenu.js:192
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:193
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:200
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:195
#: ../js/ui/dateMenu.js:201
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:199
#: ../js/ui/dateMenu.js:205
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:206
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:211
#: ../js/ui/dateMenu.js:217
msgid "%A %B %e, %Y"
msgstr "%A ה־%e ב%B, %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "פריטים אחרונים"
#: ../js/ui/endSessionDialog.js:61
#, c-format
msgctxt "title"
@ -603,87 +615,102 @@ msgstr[2] "המערכת תופעל מחדש בעוד 2 שניות."
msgid "Restarting the system."
msgstr "המערכת מופעלת מחדש"
#: ../js/ui/extensionSystem.js:405
#: ../js/ui/extensionSystem.js:404
msgid "Install"
msgstr "התקנה"
#: ../js/ui/extensionSystem.js:409
#: ../js/ui/extensionSystem.js:408
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "הורדה והתקנה של '%s' מ־extensions.gnome.org?"
#: ../js/ui/keyboard.js:322
#: ../js/ui/keyboard.js:327
msgid "tray"
msgstr "מגש מערכת"
#: ../js/ui/keyboard.js:539
#: ../js/ui/keyboard.js:544
#: ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "מקלדת"
#: ../js/ui/lookingGlass.js:725
#: ../js/ui/keyringPrompt.js:85
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "ססמה:"
#: ../js/ui/keyringPrompt.js:101
msgid "Type again:"
msgstr "נא להקליד שוב:"
#: ../js/ui/lookingGlass.js:732
msgid "No extensions installed"
msgstr "לא מותקנות הרחבות"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:779
#: ../js/ui/lookingGlass.js:786
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s לא העלה שגיאות כלשהן."
#: ../js/ui/lookingGlass.js:785
#: ../js/ui/lookingGlass.js:792
msgid "Hide Errors"
msgstr "הסתרת השגיאות"
#: ../js/ui/lookingGlass.js:789
#: ../js/ui/lookingGlass.js:840
#: ../js/ui/lookingGlass.js:796
#: ../js/ui/lookingGlass.js:847
msgid "Show Errors"
msgstr "הצגת השגיאות"
#: ../js/ui/lookingGlass.js:798
#: ../js/ui/lookingGlass.js:805
msgid "Enabled"
msgstr "פעיל"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:801
#: ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:808
#: ../src/gvc/gvc-mixer-control.c:1082
msgid "Disabled"
msgstr "מנוטרל"
#: ../js/ui/lookingGlass.js:803
#: ../js/ui/lookingGlass.js:810
msgid "Error"
msgstr "שגיאה"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:812
msgid "Out of date"
msgstr "לא בתוקף"
#: ../js/ui/lookingGlass.js:807
#: ../js/ui/lookingGlass.js:814
msgid "Downloading"
msgstr "בהורדה"
#: ../js/ui/lookingGlass.js:828
#: ../js/ui/lookingGlass.js:835
msgid "View Source"
msgstr "צפייה במקור"
#: ../js/ui/lookingGlass.js:834
#: ../js/ui/lookingGlass.js:841
msgid "Web Page"
msgstr "דף אינטרנט"
#: ../js/ui/messageTray.js:1197
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "צילום מסך מהקובץ %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
msgstr "פתיחה"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Unmute"
msgstr "ביטול ההשתקה"
#: ../js/ui/messageTray.js:1214
#: ../js/ui/messageTray.js:1217
msgid "Mute"
msgstr "השתקה"
#: ../js/ui/messageTray.js:2446
#: ../js/ui/messageTray.js:2490
msgid "System Information"
msgstr "פרטי המערכת"
@ -771,31 +798,35 @@ msgstr "נדרשת ססמה כדי להתחבר אל '%s'."
msgid "Undo"
msgstr "ביטול"
#: ../js/ui/overview.js:199
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "סקירה"
#: ../js/ui/overview.js:202
msgid "Windows"
msgstr "חלונות"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:205
msgid "Applications"
msgstr "יישומים"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:231
msgid "Dash"
msgstr "חלונית"
#: ../js/ui/panel.js:582
#: ../js/ui/panel.js:592
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:613
#: ../js/ui/panel.js:624
msgid "Activities"
msgstr "פעילויות"
#: ../js/ui/panel.js:983
#: ../js/ui/panel.js:999
msgid "Top Bar"
msgstr "הסרגל העליון"
@ -836,16 +867,12 @@ msgstr "אימות"
msgid "Sorry, that didn't work. Please try again."
msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה."
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "ססמה:"
#. 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.
#: ../js/ui/popupMenu.js:720
#: ../js/ui/popupMenu.js:724
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -853,11 +880,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "נא להזין פקודה:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:332
msgid "Searching..."
msgstr "בחיפוש..."
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:415
msgid "No matching results."
msgstr "אין תוצאות תואמות."
@ -1024,7 +1051,7 @@ msgid "Grant this time only"
msgstr "הענקת גישה הפעם בלבד"
#: ../js/ui/status/bluetooth.js:382
#: ../js/ui/telepathyClient.js:1093
#: ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "סירוב"
@ -1311,39 +1338,39 @@ msgid "Invitation"
msgstr "הזמנה"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:273
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "התקשרות"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:289
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "העברת קבצים"
#: ../js/ui/telepathyClient.js:371
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "בקשת הרשמה"
#: ../js/ui/telepathyClient.js:407
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "שגיאת התחברות"
#: ../js/ui/telepathyClient.js:665
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s התחבר/ה."
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s התנתק/ה."
#: ../js/ui/telepathyClient.js:673
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "'%s' מרוחק/ת."
#: ../js/ui/telepathyClient.js:676
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s עסוק/ה."
@ -1351,35 +1378,35 @@ msgstr "%s עסוק/ה."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "השם של %s הוחלף ל־%s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "הזמנה ל־%s"
@ -1387,37 +1414,37 @@ msgstr "הזמנה ל־%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.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "הוזמנת על ידי %s להצטרף אל %s"
#: ../js/ui/telepathyClient.js:1054
#: ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "דחייה"
#: ../js/ui/telepathyClient.js:1055
#: ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053
#: ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "אישור"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "שיחת וידאו מאת %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "שיחה מאת %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "מענה"
@ -1426,179 +1453,179 @@ msgstr "מענה"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s שולח/ת אליך %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "שגיאת רשת"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "האימות נכשל"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "שגיאת הצפנה"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "לא סופק אישור"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "האישור אינו מהימן"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "האישור פג"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "האישור לא מופעל"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "שם המארח באישור אינו תואם"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "חוסר התאמה בטביעת האצבע של האישור"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "אישור בחתימה עצמית"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "המצב הוגדר ל'מנותק'"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "ההצפנה אינה זמינה"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "האישור אינו תקף"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "ההתחברות נשללה"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "לא ניתן להפעיל את החיבור"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "החיבור אבד"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "חשבון זה כבר מחובר לשרת"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid "Connection has been replaced by a new connection using the same resource"
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "החשבון כבר קיים בשרת"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "האישור נשלל"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "שגיאה פנימית"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "החיבור אל %s נכשל"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "התחברות מחדש"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "עריכת חשבון"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "סיבה לא ידועה"
#: ../js/ui/userMenu.js:133
#: ../js/ui/userMenu.js:135
msgid "Hidden"
msgstr "מוסתר"
#: ../js/ui/userMenu.js:139
#: ../js/ui/userMenu.js:141
msgid "Idle"
msgstr "בהמתנה"
#: ../js/ui/userMenu.js:142
#: ../js/ui/userMenu.js:144
msgid "Unavailable"
msgstr "לא זמין"
#: ../js/ui/userMenu.js:579
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:595
#: ../js/ui/userMenu.js:599
#: ../js/ui/userMenu.js:669
msgid "Power Off..."
msgstr "כיבוי..."
#: ../js/ui/userMenu.js:615
#: ../js/ui/userMenu.js:631
msgid "Notifications"
msgstr "התרעות"
#: ../js/ui/userMenu.js:623
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "חשבונות מקוונים"
#: ../js/ui/userMenu.js:627
#: ../js/ui/userMenu.js:643
msgid "System Settings"
msgstr "הגדרות המערכת"
#: ../js/ui/userMenu.js:634
#: ../js/ui/userMenu.js:650
msgid "Lock Screen"
msgstr "נעילת המסך"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:655
msgid "Switch User"
msgstr "החלפת משתמש"
#: ../js/ui/userMenu.js:644
#: ../js/ui/userMenu.js:660
msgid "Log Out..."
msgstr "ניתוק..."
#: ../js/ui/userMenu.js:672
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
#: ../js/ui/userMenu.js:673
#: ../js/ui/userMenu.js:689
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
@ -1633,14 +1660,14 @@ msgstr "%s, כה אמרה האוראקל"
msgid "Your favorite Easter Egg"
msgstr "ביצת הפסחא האהובה עליך"
#: ../js/ui/windowAttentionHandler.js:33
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "'%s' מוכן"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1100
#: ../src/gvc/gvc-mixer-control.c:1089
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1650,7 +1677,7 @@ msgstr[2] "2 פלטים"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1110
#: ../src/gvc/gvc-mixer-control.c:1099
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@ -1658,23 +1685,31 @@ msgstr[0] "קלט אחד"
msgstr[1] "%u קלטים"
msgstr[2] "2 קלטים"
#: ../src/gvc/gvc-mixer-control.c:1408
#: ../src/gvc/gvc-mixer-control.c:1397
msgid "System Sounds"
msgstr "צלילי מערכת"
#: ../src/main.c:262
#: ../src/main.c:255
msgid "Print version"
msgstr "Print version"
#: ../src/main.c:268
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
#: ../src/shell-app.c:617
#: ../src/shell-app.c:619
#, c-format
msgid "Failed to launch '%s'"
msgstr "אירע כשל בטעינת '%s'"
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "הססמאות אינן תואמות."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "הססמה לא יכולה להישאר ריקה"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "בריטניה"
@ -1683,7 +1718,7 @@ msgstr "בריטניה"
msgid "Default"
msgstr "בררת מחדל"
#: ../src/shell-polkit-authentication-agent.c:332
#: ../src/shell-polkit-authentication-agent.c:339
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
@ -1709,6 +1744,9 @@ msgstr "מערכת הקבצים"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "פריטים אחרונים"
#~ msgid ""
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
#~ "which should be loaded. disabled-extensions overrides this setting for "

860
po/hu.po

File diff suppressed because it is too large Load Diff

1087
po/id.po

File diff suppressed because it is too large Load Diff

322
po/it.po
View File

@ -10,10 +10,10 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-02-16 01:27+0000\n"
"PO-Revision-Date: 2012-02-19 15:39+0100\n"
"POT-Creation-Date: 2012-04-28 13:41+0000\n"
"PO-Revision-Date: 2012-04-30 15:32+0200\n"
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -30,7 +30,7 @@ msgstr "Gestisce finestre e avvia applicazioni"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extensions Preferences"
msgid "GNOME Shell Extension Preferences"
msgstr "Preferenze estensioni di GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
@ -56,10 +56,6 @@ msgid "Uuids of extensions to enable"
msgstr "UUID delle estensioni da abilitare"
#: ../data/org.gnome.shell.gschema.xml.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should not be loaded. This setting overrides enabled-extensions for "
#| "extensions that appear in both lists."
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -115,42 +111,67 @@ msgid "History for the looking glass dialog"
msgstr "Cronologia per il dialogo looking glass"
#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
"Usato internamente per memorizzare l'ultimo stato di presenza IM impostato "
"esplicitamente dall'utente. Il valore corrisponde alla enumerazione "
"TpConnectionPresenceType."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr ""
"Usato internamente per memorizzare lo stato di presenza dell'ultima sessione "
"per l'utente. Il valore corrisponde alla enumerazione GsmPresenceStatus."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show the week date in the calendar"
msgstr "Mostra il giorno della settimana nel calendario"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "If true, display the ISO week date in the calendar."
msgstr "Se VERO, mostra il giorno della settimana ISO nel calendario."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Associazione tasti per aprire menù applicazioni"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Associazione di tasti per aprire il menù delle applicazioni."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Quale tastiera usare"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "The type of keyboard to use."
msgstr "Il tipo di tastiera da usare."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show time with seconds"
msgstr "Mostra l'ora con i secondi"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display seconds in time."
msgstr "Se VERO, mostra i secondi nell'orario."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Show date in clock"
msgstr "Mostra la data nell'orologio"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "If true, display date in the clock, in addition to time."
msgstr "Se VERO, mostra nell'orologio la data, oltre all'orario."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Framerate used for recording screencasts."
msgstr "Framerate per la registrazione di screencast."
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -158,24 +179,12 @@ msgstr ""
"Il framerate in fotogrammi al secondo dello screencast registrato attraverso "
"il registratore della GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 "
#| "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T "
#| "is used as a placeholder for a guess at the optimal thread count on the "
#| "system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -200,11 +209,11 @@ msgstr ""
"WEBM usando il codec VP8. %T è usato come un segnaposto per una stima del "
"valore di thread ottimale per il sistema in uso."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:29
msgid "File extension used for storing the screencast"
msgstr "Estensione del file utilizzato per salvare lo screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:30
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -230,53 +239,53 @@ msgstr ""
"Selezionare una estensione da configurare usando la casella combinata qui "
"sopra."
#: ../js/gdm/loginDialog.js:624
#: ../js/gdm/loginDialog.js:627
msgid "Session..."
msgstr "Sessione..."
#: ../js/gdm/loginDialog.js:786
#: ../js/gdm/loginDialog.js:789
msgctxt "title"
msgid "Sign In"
msgstr "Accesso"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:831
#: ../js/gdm/loginDialog.js:834
msgid "(or swipe finger)"
msgstr "(o passare il dito)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:852
#: ../js/gdm/loginDialog.js:855
msgid "Not listed?"
msgstr "Non elencato?"
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Annulla"
#: ../js/gdm/loginDialog.js:1025
#: ../js/gdm/loginDialog.js:1028
msgctxt "button"
msgid "Sign In"
msgstr "Accedi"
#: ../js/gdm/loginDialog.js:1377
#: ../js/gdm/loginDialog.js:1380
msgid "Login Window"
msgstr "Finestra di accesso"
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "Sospendi"
#: ../js/gdm/powerMenu.js:157
#: ../js/gdm/powerMenu.js:160
msgid "Restart"
msgstr "Riavvia"
#: ../js/gdm/powerMenu.js:162
#: ../js/gdm/powerMenu.js:165
msgid "Power Off"
msgstr "Spegni"
@ -296,27 +305,27 @@ msgid "Execution of '%s' failed:"
msgstr "Esecuzione di «%s» non riuscita:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:251
#: ../js/ui/appDisplay.js:255
msgid "All"
msgstr "Tutte"
#: ../js/ui/appDisplay.js:310
#: ../js/ui/appDisplay.js:314
msgid "APPLICATIONS"
msgstr "APPLICAZIONI"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:375
msgid "SETTINGS"
msgstr "IMPOSTAZIONI"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:680
msgid "New Window"
msgstr "Nuova finestra"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:683
msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:684
msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti"
@ -491,103 +500,97 @@ msgstr "Questa settimana"
msgid "Next week"
msgstr "Prossima settimana"
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
msgid "Unknown"
msgstr "Sconosciuto"
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
msgid "Available"
msgstr "Disponibile"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
msgid "Away"
msgstr "Assente"
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
msgid "Busy"
msgstr "Non disponibile"
#: ../js/ui/contactDisplay.js:97
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "Fuori rete"
#: ../js/ui/contactDisplay.js:148
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
msgstr "CONTATTI"
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
msgid "Remove"
msgstr "Rimuovi"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:103
msgid "Date and Time Settings"
msgstr "Impostazioni data e ora"
#: ../js/ui/dateMenu.js:123
#: ../js/ui/dateMenu.js:129
msgid "Open Calendar"
msgstr "Apri calendario"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:187
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %k.%M.%S"
#: ../js/ui/dateMenu.js:182
#: ../js/ui/dateMenu.js:188
msgid "%a %b %e, %R"
msgstr "%a %e %b, %k.%M"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:186
#: ../js/ui/dateMenu.js:192
msgid "%a %R:%S"
msgstr "%a %k.%M.%S"
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:193
msgid "%a %R"
msgstr "%a %k.%M"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:200
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %l.%M.%S %P"
#: ../js/ui/dateMenu.js:195
#: ../js/ui/dateMenu.js:201
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %l.%M %P"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:199
#: ../js/ui/dateMenu.js:205
msgid "%a %l:%M:%S %p"
msgstr "%a %l.%M.%S %P"
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:206
msgid "%a %l:%M %p"
msgstr "%a %l.%M %P"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:211
#: ../js/ui/dateMenu.js:217
msgid "%A %B %e, %Y"
msgstr "%a %e %B %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "ELEMENTI RECENTI"
#: ../js/ui/endSessionDialog.js:61
#, c-format
#| msgid "Log Out %s"
msgctxt "title"
msgid "Log Out %s"
msgstr "Termina sessione di %s"
#: ../js/ui/endSessionDialog.js:62
#| msgid "Log Out"
msgctxt "title"
msgid "Log Out"
msgstr "Termina sessione"
@ -623,7 +626,6 @@ msgid "Log Out"
msgstr "Termina sessione"
#: ../js/ui/endSessionDialog.js:81
#| msgid "Power Off"
msgctxt "title"
msgid "Power Off"
msgstr "Spegni"
@ -645,19 +647,16 @@ msgid "Powering off the system."
msgstr "Spegnimento del sistema."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
#| msgid "Restart"
msgctxt "button"
msgid "Restart"
msgstr "Riavvia"
#: ../js/ui/endSessionDialog.js:92
#| msgid "Power Off"
msgctxt "button"
msgid "Power Off"
msgstr "Spegni"
#: ../js/ui/endSessionDialog.js:98
#| msgid "Restart"
msgctxt "title"
msgid "Restart"
msgstr "Riavvia"
@ -679,11 +678,11 @@ msgstr[1] "Il sistema verrà riavviato automaticamente tra %d secondi."
msgid "Restarting the system."
msgstr "Riavvio del sistema."
#: ../js/ui/extensionSystem.js:405
#: ../js/ui/extensionSystem.js:404
msgid "Install"
msgstr "Installa"
#: ../js/ui/extensionSystem.js:409
#: ../js/ui/extensionSystem.js:408
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
@ -691,82 +690,92 @@ msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
# FIXME!!!!!!
# dai, ma come fai a tradurre un pulsante del genere?!?!?!
# per ora ho messo nascondi, poi vedremo
#: ../js/ui/keyboard.js:322
#: ../js/ui/keyboard.js:327
msgid "tray"
msgstr "nascondi"
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Tastiera"
#: ../js/ui/lookingGlass.js:725
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Password:"
#: ../js/ui/keyringPrompt.js:101
msgid "Type again:"
msgstr "Inserire di nuovo:"
#: ../js/ui/lookingGlass.js:732
msgid "No extensions installed"
msgstr "Nessuna estensione installata"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:779
#: ../js/ui/lookingGlass.js:786
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s non ha emesso alcun errore."
#: ../js/ui/lookingGlass.js:785
#| msgid "Error"
#: ../js/ui/lookingGlass.js:792
msgid "Hide Errors"
msgstr "Nascondi errori"
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
#| msgid "Error"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
msgid "Show Errors"
msgstr "Mostra errori"
# (ndt) o abilitata?
#: ../js/ui/lookingGlass.js:798
#: ../js/ui/lookingGlass.js:805
msgid "Enabled"
msgstr "Abilitato"
# (ndt) o disabilitata?
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
msgid "Disabled"
msgstr "Disabilitato"
#: ../js/ui/lookingGlass.js:803
#: ../js/ui/lookingGlass.js:810
msgid "Error"
msgstr "Errore"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:812
msgid "Out of date"
msgstr "Non aggiornato"
#: ../js/ui/lookingGlass.js:807
#: ../js/ui/lookingGlass.js:814
msgid "Downloading"
msgstr "Scaricamento"
#: ../js/ui/lookingGlass.js:828
#: ../js/ui/lookingGlass.js:835
msgid "View Source"
msgstr "Visualizza sorgente"
#: ../js/ui/lookingGlass.js:834
#: ../js/ui/lookingGlass.js:841
msgid "Web Page"
msgstr "Pagina web"
#: ../js/ui/messageTray.js:1197
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Screencast da %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
msgstr "Apri"
#: ../js/ui/messageTray.js:1214
#| msgid "minute"
#| msgid_plural "minutes"
#: ../js/ui/messageTray.js:1217
msgid "Unmute"
msgstr "Attiva audio"
#: ../js/ui/messageTray.js:1214
#| msgid "Mouse"
#: ../js/ui/messageTray.js:1217
msgid "Mute"
msgstr "Escludi audio"
#: ../js/ui/messageTray.js:2446
#: ../js/ui/messageTray.js:2490
msgid "System Information"
msgstr "Informazione di sistema"
@ -812,8 +821,8 @@ msgstr "Richiesta autenticazione dalla rete wireless"
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
msgstr ""
"È richiesta una password o una chiave di cifratura per accedere alla rete "
"wireless «%s»."
@ -855,33 +864,36 @@ msgstr "È richiesta una password per connettersi a «%s»."
msgid "Undo"
msgstr "Annulla"
#: ../js/ui/overview.js:199
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Panoramica"
#: ../js/ui/overview.js:202
msgid "Windows"
msgstr "Finestre"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:205
msgid "Applications"
msgstr "Applicazioni"
# cruscotto?!?!?!?!?!?!?
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:231
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:582
#| msgid "Quit %s"
#: ../js/ui/panel.js:592
msgid "Quit"
msgstr "Esci"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:613
#: ../js/ui/panel.js:624
msgid "Activities"
msgstr "Attività"
#: ../js/ui/panel.js:983
#: ../js/ui/panel.js:999
msgid "Top Bar"
msgstr "Barra superiore"
@ -923,16 +935,12 @@ msgstr "Autentica"
msgid "Sorry, that didn't work. Please try again."
msgstr "Errore nell'autenticazione. Provare di nuovo."
#: ../js/ui/polkitAuthenticationAgent.js:272
msgid "Password:"
msgstr "Password:"
#. 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.
#: ../js/ui/popupMenu.js:720
#: ../js/ui/popupMenu.js:724
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -940,11 +948,11 @@ msgstr "toggle-switch-us"
msgid "Please enter a command:"
msgstr "Inserire un comando:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:332
msgid "Searching..."
msgstr "Ricerca..."
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:415
msgid "No matching results."
msgstr "Nessun risultato corrispondente."
@ -953,7 +961,6 @@ msgid "Copy"
msgstr "Copia"
#: ../js/ui/shellEntry.js:31
#| msgid "Panel"
msgid "Paste"
msgstr "Incolla"
@ -962,7 +969,6 @@ msgid "Show Text"
msgstr "Mostra testo"
#: ../js/ui/shellEntry.js:79
#| msgid "Large Text"
msgid "Hide Text"
msgstr "Nascondi testo"
@ -972,7 +978,6 @@ msgstr "Password errata, provare di nuovo"
# su Android è Rilevabile :P
#: ../js/ui/status/accessibility.js:47
#| msgid "Visibility"
msgid "Accessibility"
msgstr "Accessibilità"
@ -1236,7 +1241,6 @@ msgid "Auto wireless"
msgstr "Wireless automatica"
#: ../js/ui/status/network.js:1541
#| msgid "Network error"
msgid "Network"
msgstr "Rete"
@ -1390,41 +1394,41 @@ msgstr "Invito"
# A memora del test che ho fatto è "chiamata"... da verificare meglio
#. We got the TpContact
#: ../js/ui/telepathyClient.js:273
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "Chiamata"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:289
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Trasferimento file"
#: ../js/ui/telepathyClient.js:371
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Richesta sottoscrizione"
# indica lo stato del device BT, per esempio gli auricolari
# credo sia meglio l'aggettivo che il sostantivo
#: ../js/ui/telepathyClient.js:407
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "Errore di connessione"
#: ../js/ui/telepathyClient.js:665
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s è disponibile."
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s è fuori rete."
#: ../js/ui/telepathyClient.js:673
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "%s è assente."
#: ../js/ui/telepathyClient.js:676
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s non è disponibile."
@ -1581,7 +1585,6 @@ msgid "Connection has been lost"
msgstr "Connessione persa"
#: ../js/ui/telepathyClient.js:1321
#| msgid "This resource is already connected to the server"
msgid "This account is already connected to the server"
msgstr "Questo account è già connesso al server"
@ -1623,7 +1626,6 @@ msgstr ""
# indica lo stato del device BT, per esempio gli auricolari
# credo sia meglio l'aggettivo che il sostantivo
#: ../js/ui/telepathyClient.js:1335
#| msgid "Connection error"
msgid "Internal error"
msgstr "Errore interno"
@ -1646,52 +1648,52 @@ msgstr "Modifica account"
msgid "Unknown reason"
msgstr "Motivo sconosciuto"
#: ../js/ui/userMenu.js:133
#: ../js/ui/userMenu.js:135
msgid "Hidden"
msgstr "Invisibile"
#: ../js/ui/userMenu.js:139
#: ../js/ui/userMenu.js:141
msgid "Idle"
msgstr "Inattivo"
#: ../js/ui/userMenu.js:142
#: ../js/ui/userMenu.js:144
msgid "Unavailable"
msgstr "Non disponibile"
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
msgid "Power Off..."
msgstr "Spegni..."
#: ../js/ui/userMenu.js:615
#: ../js/ui/userMenu.js:631
msgid "Notifications"
msgstr "Notifiche"
#: ../js/ui/userMenu.js:623
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "Account online"
#: ../js/ui/userMenu.js:627
#: ../js/ui/userMenu.js:643
msgid "System Settings"
msgstr "Impostazioni di sistema"
#: ../js/ui/userMenu.js:634
#: ../js/ui/userMenu.js:650
msgid "Lock Screen"
msgstr "Blocca schermo"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:655
msgid "Switch User"
msgstr "Cambia utente"
#: ../js/ui/userMenu.js:644
#: ../js/ui/userMenu.js:660
msgid "Log Out..."
msgstr "Termina sessione..."
# accorciato, altrimenti non si legge...
#: ../js/ui/userMenu.js:672
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "Stato per chat impostato a non disponibile"
#: ../js/ui/userMenu.js:673
#: ../js/ui/userMenu.js:689
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1732,14 +1734,14 @@ msgid "Your favorite Easter Egg"
msgstr "Il vostro Easter Egg preferito"
# (ndt) dovrebbe essere il nome dell'applicazione
#: ../js/ui/windowAttentionHandler.js:33
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "«%s» è pronto"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1100
#: ../src/gvc/gvc-mixer-control.c:1089
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1748,30 +1750,38 @@ msgstr[1] "%u uscite"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1110
#: ../src/gvc/gvc-mixer-control.c:1099
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u ingresso"
msgstr[1] "%u ingressi"
#: ../src/gvc/gvc-mixer-control.c:1408
#: ../src/gvc/gvc-mixer-control.c:1397
msgid "System Sounds"
msgstr "Audio di sistema"
#: ../src/main.c:262
#: ../src/main.c:255
msgid "Print version"
msgstr "Stampa la versione"
#: ../src/main.c:268
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "Modalità usata da GDM per la schermata d'accesso"
#: ../src/shell-app.c:617
#: ../src/shell-app.c:619
#, c-format
msgid "Failed to launch '%s'"
msgstr "Avvio di «%s» non riuscito"
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "Le password non corrispondono."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "La password non può essere vuota"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "Regno Unito"
@ -1780,14 +1790,13 @@ msgstr "Regno Unito"
msgid "Default"
msgstr "Predefinito"
#: ../src/shell-polkit-authentication-agent.c:332
#: ../src/shell-polkit-authentication-agent.c:339
msgid "Authentication dialog was dismissed by the user"
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:97
#| msgid "Volume"
msgid "Home"
msgstr "Home"
@ -1808,6 +1817,9 @@ msgstr "File system"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "ELEMENTI RECENTI"
#~ msgid ""
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
#~ "which should be loaded. disabled-extensions overrides this setting for "

774
po/ja.po

File diff suppressed because it is too large Load Diff

435
po/kk.po
View File

@ -6,10 +6,9 @@
msgid ""
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: 2012-02-10 20:26+0000\n"
"PO-Revision-Date: 2012-02-12 10:42+0600\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-02-26 17:09+0000\n"
"PO-Revision-Date: 2012-02-27 13:18+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@ -28,9 +27,10 @@ msgid "Window management and application launching"
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:154
msgid "GNOME Shell Extensions Preferences"
msgstr "GNOME Shell кеңейтулерінің баптаулары"
#: ../js/extensionPrefs/main.js:153
#| msgid "GNOME Shell Extensions Preferences"
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Shell кеңейту баптаулары"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
@ -41,9 +41,7 @@ msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:2
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:3
@ -51,11 +49,7 @@ msgid "Uuids of extensions to enable"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell."
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:5
@ -63,25 +57,15 @@ msgid "Whether to collect stats about applications usage"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін "
"бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, "
"қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін "
"сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
msgstr "Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
#: ../data/org.gnome.shell.gschema.xml.in.h:7
msgid "List of desktop file IDs for favorite applications"
msgstr "Таңдамалы қолданбалар үшін desktop файлдары ID-нің тізімі"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:9
@ -97,87 +81,80 @@ msgid "History for the looking glass dialog"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show the week date in the calendar"
msgstr "Күнтізбеде апта күнін көрсету"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "If true, display the ISO week date in the calendar."
msgstr "Ақиқат болса, күнтізбеде ISO апта күнін көрсетеді."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Which keyboard to use"
msgstr "Қолданылатын пернетақта"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Қолданылатын пернетақта түрі."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Уақытты секундтармен бірге көрсету"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Ақиқат болса, уақытта секундтар көрсетіледі. "
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Сағатта күнді көрсету"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Ақиқат болса, сағатта уақытқа қоса күн көрсетіледі."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Скринкасттарды жазу үшін қолданылатын кадр/сек баптауы."
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The gstreamer pipeline used to encode the screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
"the recorded video is recorded. It will normally have a unconnected source "
"pad; output from that pad will be written into the output file. However the "
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
"thread count on the system."
msgid "The gstreamer pipeline used to encode the screencast"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Скринкастты сақтау үшін қолданылатын файл кеңетуі"
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr ""
#: ../js/extensionPrefs/main.js:126
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s үшін баптаулар сұхбатын жүктеу кезінде қате орын алды:"
#: ../js/extensionPrefs/main.js:166
#: ../js/extensionPrefs/main.js:165
msgid "<b>Extension</b>"
msgstr "<b>Кеңейту</b>"
#: ../js/extensionPrefs/main.js:190
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr ""
@ -203,9 +180,12 @@ msgstr ""
msgid "Not listed?"
msgstr "Тізімде жоқсыз ба?"
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:145
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
#: ../js/gdm/loginDialog.js:1020
#: ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401
#: ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175
#: ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Бас тарту"
@ -218,16 +198,18 @@ msgstr "Кіру"
msgid "Login Window"
msgstr "Жүйеге кіру терезесі"
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
#: ../js/gdm/powerMenu.js:152
#: ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:652
msgid "Suspend"
msgstr "Ұйықтату"
#: ../js/gdm/powerMenu.js:118
#: ../js/gdm/powerMenu.js:157
msgid "Restart"
msgstr "Қайта қосу"
#: ../js/gdm/powerMenu.js:123
#: ../js/gdm/powerMenu.js:162
msgid "Power Off"
msgstr "Сөндіру"
@ -255,19 +237,19 @@ msgstr "Барлық"
msgid "APPLICATIONS"
msgstr "Қолданбалар"
#: ../js/ui/appDisplay.js:366
#: ../js/ui/appDisplay.js:371
msgid "SETTINGS"
msgstr "Баптаулар"
#: ../js/ui/appDisplay.js:666
#: ../js/ui/appDisplay.js:676
msgid "New Window"
msgstr "Жаңа терезе"
#: ../js/ui/appDisplay.js:669
#: ../js/ui/appDisplay.js:679
msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру"
#: ../js/ui/appDisplay.js:670
#: ../js/ui/appDisplay.js:680
msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу"
@ -440,20 +422,25 @@ msgstr "Осы аптада"
msgid "Next week"
msgstr "Келесі аптада"
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
#: ../js/ui/contactDisplay.js:63
#: ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215
#: ../src/shell-app.c:372
msgid "Unknown"
msgstr "Белгісіз"
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
#: ../js/ui/contactDisplay.js:84
#: ../js/ui/userMenu.js:127
msgid "Available"
msgstr "Қолжетерлік"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
#: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:136
msgid "Away"
msgstr "Кетіп қалған"
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
#: ../js/ui/contactDisplay.js:93
#: ../js/ui/userMenu.js:130
msgid "Busy"
msgstr "Бос емес"
@ -465,7 +452,8 @@ msgstr "Желіде емес"
msgid "CONTACTS"
msgstr "Контакттар"
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
#: ../js/ui/dash.js:229
#: ../js/ui/messageTray.js:1204
msgid "Remove"
msgstr "Өшіру"
@ -524,10 +512,6 @@ msgstr "%a %l:%M %p"
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
#: ../js/ui/docDisplay.js:13
msgid "RECENT ITEMS"
msgstr "Соңғы нәрселер"
#: ../js/ui/endSessionDialog.js:61
#, c-format
msgctxt "title"
@ -583,7 +567,8 @@ msgstr[0] "Жүйе %d секундтан кейін автоматты түрд
msgid "Powering off the system."
msgstr "Жүйені сөндіру."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:90
#: ../js/ui/endSessionDialog.js:107
msgctxt "button"
msgid "Restart"
msgstr "Қайта қосу"
@ -600,8 +585,7 @@ msgstr "Қайта қосу"
#: ../js/ui/endSessionDialog.js:99
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
msgstr "Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
#: ../js/ui/endSessionDialog.js:101
#, c-format
@ -626,7 +610,8 @@ msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, ор
msgid "tray"
msgstr ""
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:539
#: ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Пернетақта"
@ -644,7 +629,8 @@ msgstr ""
msgid "Hide Errors"
msgstr "Қателерді жасыру"
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
#: ../js/ui/lookingGlass.js:789
#: ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Қателерді көрсету"
@ -654,7 +640,8 @@ msgstr "Іске қосылған"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801
#: ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Сөндірулі"
@ -678,6 +665,12 @@ msgstr "Бастапқы кодын қарау"
msgid "Web Page"
msgstr "Веб парағы"
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:115
#, no-c-format
msgid "Screencast from %d %t"
msgstr ""
#: ../js/ui/messageTray.js:1197
msgid "Open"
msgstr "Ашу"
@ -690,85 +683,86 @@ msgstr "Дыбысты қайтару"
msgid "Mute"
msgstr "Дыбысын өшіру"
#: ../js/ui/messageTray.js:2446
#: ../js/ui/messageTray.js:2447
msgid "System Information"
msgstr "Жүйелік ақпарат"
#: ../js/ui/networkAgent.js:140
#: ../js/ui/networkAgent.js:148
msgid "Connect"
msgstr "Байланысу"
#. Cisco LEAP
#: ../js/ui/networkAgent.js:235 ../js/ui/networkAgent.js:247
#: ../js/ui/networkAgent.js:274 ../js/ui/networkAgent.js:294
#: ../js/ui/networkAgent.js:304
#: ../js/ui/networkAgent.js:243
#: ../js/ui/networkAgent.js:255
#: ../js/ui/networkAgent.js:282
#: ../js/ui/networkAgent.js:302
#: ../js/ui/networkAgent.js:312
msgid "Password: "
msgstr "Пароль:"
#. static WEP
#: ../js/ui/networkAgent.js:240
#: ../js/ui/networkAgent.js:248
msgid "Key: "
msgstr "Кілт:"
#. 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/ui/networkAgent.js:272 ../js/ui/networkAgent.js:290
#: ../js/ui/networkAgent.js:280
#: ../js/ui/networkAgent.js:298
msgid "Username: "
msgstr "Пайдаланушы аты:"
#: ../js/ui/networkAgent.js:278
#: ../js/ui/networkAgent.js:286
msgid "Identity: "
msgstr ""
#: ../js/ui/networkAgent.js:280
#: ../js/ui/networkAgent.js:288
msgid "Private key password: "
msgstr "Жеке кілт паролі:"
#: ../js/ui/networkAgent.js:292
#: ../js/ui/networkAgent.js:300
msgid "Service: "
msgstr "Қызмет:"
#: ../js/ui/networkAgent.js:321
#: ../js/ui/networkAgent.js:329
msgid "Authentication required by wireless network"
msgstr "Сымсыз желісі аутентификацияны талап етеді"
#: ../js/ui/networkAgent.js:322
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
#: ../js/ui/networkAgent.js:326
#: ../js/ui/networkAgent.js:334
msgid "Wired 802.1X authentication"
msgstr "Сымды 802.1X аутентификациясы"
#: ../js/ui/networkAgent.js:328
#: ../js/ui/networkAgent.js:336
msgid "Network name: "
msgstr "Желі аты:"
#: ../js/ui/networkAgent.js:333
#: ../js/ui/networkAgent.js:341
msgid "DSL authentication"
msgstr "DSL аутентификациясы"
#: ../js/ui/networkAgent.js:340
#: ../js/ui/networkAgent.js:348
msgid "PIN code required"
msgstr "PIN коды керек"
#: ../js/ui/networkAgent.js:341
#: ../js/ui/networkAgent.js:349
msgid "PIN code is needed for the mobile broadband device"
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
#: ../js/ui/networkAgent.js:342
#: ../js/ui/networkAgent.js:350
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/networkAgent.js:348
#: ../js/ui/networkAgent.js:356
msgid "Mobile broadband network password"
msgstr "Сымсыз кеңжолақты желісінің паролі"
#: ../js/ui/networkAgent.js:349
#: ../js/ui/networkAgent.js:357
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
@ -787,21 +781,21 @@ msgstr "Қолданбалар"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:226
#: ../js/ui/overview.js:228
msgid "Dash"
msgstr ""
#: ../js/ui/panel.js:572
#: ../js/ui/panel.js:582
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:603
#: ../js/ui/panel.js:613
msgid "Activities"
msgstr "Көрініс"
#: ../js/ui/panel.js:971
#: ../js/ui/panel.js:983
msgid "Top Bar"
msgstr "Үстідегі панель"
@ -859,11 +853,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Команданы енгізіңіз:"
#: ../js/ui/searchDisplay.js:333
#: ../js/ui/searchDisplay.js:349
msgid "Searching..."
msgstr "Іздеуде..."
#: ../js/ui/searchDisplay.js:356
#: ../js/ui/searchDisplay.js:417
msgid "No matching results."
msgstr "Сәйкес келетін нәтижелер жоқ."
@ -934,10 +928,14 @@ msgstr "Жоғары контраст"
msgid "Large Text"
msgstr "Үлкен мәтін"
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
#: ../js/ui/status/bluetooth.js:31
#: ../js/ui/status/bluetooth.js:35
#: ../js/ui/status/bluetooth.js:258
#: ../js/ui/status/bluetooth.js:341
#: ../js/ui/status/bluetooth.js:371
#: ../js/ui/status/bluetooth.js:407
#: ../js/ui/status/bluetooth.js:436
#: ../js/ui/status/network.js:893
msgid "Bluetooth"
msgstr "Bluetooth"
@ -958,7 +956,8 @@ msgid "Bluetooth Settings"
msgstr "Bluetooth баптаулары"
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
#: ../js/ui/status/bluetooth.js:107
#: ../js/ui/status/network.js:256
msgid "hardware disabled"
msgstr "құрылғы сөндірулі"
@ -966,11 +965,13 @@ msgstr "құрылғы сөндірулі"
msgid "Connection"
msgstr "Байланыс"
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
#: ../js/ui/status/bluetooth.js:214
#: ../js/ui/status/network.js:491
msgid "disconnecting..."
msgstr "байланысты үзу..."
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
#: ../js/ui/status/bluetooth.js:227
#: ../js/ui/status/network.js:497
msgid "connecting..."
msgstr "байланысты орнату..."
@ -999,7 +1000,8 @@ msgstr "Пернетақта баптаулары"
msgid "Mouse Settings"
msgstr "Тышқан баптаулары"
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
#: ../js/ui/status/bluetooth.js:276
#: ../js/ui/status/volume.js:59
msgid "Sound Settings"
msgstr "Дыбыс баптаулары"
@ -1021,7 +1023,8 @@ msgstr "Әрқашан рұқсат ету"
msgid "Grant this time only"
msgstr "Тек осы ретке рұқсат ету"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
#: ../js/ui/status/bluetooth.js:382
#: ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Болдырмау"
@ -1030,7 +1033,8 @@ msgstr "Болдырмау"
msgid "Pairing confirmation for %s"
msgstr "%s жіберген парлау растауы"
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
#: ../js/ui/status/bluetooth.js:414
#: ../js/ui/status/bluetooth.js:444
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
@ -1110,13 +1114,15 @@ msgstr "қолжетерсіз"
msgid "connection failed"
msgstr "байланысты орнату сәтсіз"
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
#: ../js/ui/status/network.js:585
#: ../js/ui/status/network.js:1505
msgid "More..."
msgstr "Көбірек..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
#: ../js/ui/status/network.js:621
#: ../js/ui/status/network.js:1440
msgid "Connected (private)"
msgstr "Байланысқан (жеке)"
@ -1133,7 +1139,8 @@ msgid "Auto dial-up"
msgstr "Автоматты dial-up"
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
#: ../js/ui/status/network.js:879
#: ../js/ui/status/network.js:1452
#, c-format
msgid "Auto %s"
msgstr "Автоматты %s"
@ -1232,7 +1239,8 @@ msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d минут қалды"
#: ../js/ui/status/power.js:116 ../js/ui/status/power.js:186
#: ../js/ui/status/power.js:116
#: ../js/ui/status/power.js:186
#, c-format
msgctxt "percent of battery remaining"
msgid "%d%%"
@ -1279,7 +1287,8 @@ msgid "Computer"
msgstr "Компьютер"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:39
#: ../js/ui/status/volume.js:25
#: ../js/ui/status/volume.js:39
msgid "Volume"
msgstr "Дыбыс деңгейі"
@ -1289,44 +1298,44 @@ msgstr "Микрофон"
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
#: ../js/ui/telepathyClient.js:225
#: ../js/ui/telepathyClient.js:220
msgid "Invitation"
msgstr "Шақыру"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:278
#: ../js/ui/telepathyClient.js:271
msgid "Call"
msgstr "Қоңырау"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:294
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Файлдармен алмасу"
#: ../js/ui/telepathyClient.js:376
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Жазылуға сұраным"
#: ../js/ui/telepathyClient.js:412
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
msgstr "Байланыс орнату қатесі"
#: ../js/ui/telepathyClient.js:670
#: ../js/ui/telepathyClient.js:663
#, c-format
msgid "%s is online."
msgstr "%s желіде."
#: ../js/ui/telepathyClient.js:674
#: ../js/ui/telepathyClient.js:667
#, c-format
msgid "%s is offline."
msgstr "%s желіде емес."
#: ../js/ui/telepathyClient.js:678
#: ../js/ui/telepathyClient.js:671
#, c-format
msgid "%s is away."
msgstr "%s кетіп қалған."
#: ../js/ui/telepathyClient.js:681
#: ../js/ui/telepathyClient.js:674
#, c-format
msgid "%s is busy."
msgstr "%s бос емес."
@ -1334,35 +1343,35 @@ msgstr "%s бос емес."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:894
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Жіберілген: <b>%A</b>, уақыты <b>%X</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:905
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:947
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "%s енді %s ретінде белгілі"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1049
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "%s ішіне шақыру"
@ -1370,35 +1379,37 @@ msgstr "%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.
#: ../js/ui/telepathyClient.js:1057
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s сізді %s ішіне қосылуды шақырады"
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138
#: ../js/ui/telepathyClient.js:1236
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Тайдыру"
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139
#: ../js/ui/telepathyClient.js:1237
#: ../js/ui/telepathyClient.js:1053
#: ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Қабылдау"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1090
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Видео қоңырау: %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1093
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Қоңырау: %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1100
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Жауап"
@ -1407,139 +1418,130 @@ msgstr "Жауап"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s сізге %s жіберуде"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1201
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s сіз қашан желіде болатыныңызды білу құқығын сұрап тұр"
#: ../js/ui/telepathyClient.js:1294
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Желілік қате"
#: ../js/ui/telepathyClient.js:1296
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Аутентификация сәтсіз"
#: ../js/ui/telepathyClient.js:1298
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Шифрлеу қатесі"
#: ../js/ui/telepathyClient.js:1300
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Сертификат ұсынылмады"
#: ../js/ui/telepathyClient.js:1302
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "Сертификат сенімсіз"
#: ../js/ui/telepathyClient.js:1304
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Сертификаттың мерзімі аяқталған"
#: ../js/ui/telepathyClient.js:1306
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Сертификат белсендірілмеген"
#: ../js/ui/telepathyClient.js:1308
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "Сертификаттың хост аты сәйкес емес"
#: ../js/ui/telepathyClient.js:1310
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "Сертификаттың баспасы сәйкес емес"
#: ../js/ui/telepathyClient.js:1312
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Сертификат өздігінен қолтаңбаланған"
#: ../js/ui/telepathyClient.js:1314
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "Қалып-күй желіде емес етіп орнатылды"
#: ../js/ui/telepathyClient.js:1316
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "Шифрлеу қолжетерсіз"
#: ../js/ui/telepathyClient.js:1318
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "Сертификат дұрыс емес"
#: ../js/ui/telepathyClient.js:1320
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "Сертификат тайдырылды"
#: ../js/ui/telepathyClient.js:1322
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "Байланысты орнату мүмкін емес"
#: ../js/ui/telepathyClient.js:1324
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Байланыс жоғалтылды"
#: ../js/ui/telepathyClient.js:1326
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Бұл тіркелгі серверге байланысқан болып тұр"
#: ../js/ui/telepathyClient.js:1328
msgid ""
"Connection has been replaced by a new connection using the same resource"
#: ../js/ui/telepathyClient.js:1321
msgid "Connection has been replaced by a new connection using the same resource"
msgstr "Байланыс дәл сол ресурсты қолданып, жаңа байланыспен алмастырылды"
#: ../js/ui/telepathyClient.js:1330
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "Бұл тіркелгі серверде бар болып тұр"
#: ../js/ui/telepathyClient.js:1332
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "Сервер бұл байланысты өңдеу үшін тым бос емес"
#: ../js/ui/telepathyClient.js:1334
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "Сертификат қайта шақырылған"
#: ../js/ui/telepathyClient.js:1336
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы "
"әлсіз"
#: ../js/ui/telepathyClient.js:1329
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы әлсіз"
#: ../js/ui/telepathyClient.js:1338
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы "
"криптографиялық жинақ ұсына алатын шегінен асып тұр"
#: ../js/ui/telepathyClient.js:1331
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
msgstr "Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы криптографиялық жинақ ұсына алатын шегінен асып тұр"
#: ../js/ui/telepathyClient.js:1340
#, fuzzy
#: ../js/ui/telepathyClient.js:1333
#| msgid "Connection error"
msgid "Internal error"
msgstr "Байланыс орнату қатесі"
msgstr "Ішкі қате"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1350
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "%s үшін байланыс орнату сәтсіз"
#: ../js/ui/telepathyClient.js:1359
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Қайта байланысу"
#: ../js/ui/telepathyClient.js:1360
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Тіркелгіні түзету"
#: ../js/ui/telepathyClient.js:1406
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Себебі белгісіз"
@ -1555,7 +1557,9 @@ msgstr "Іссіз"
msgid "Unavailable"
msgstr "Қолжетерсіз"
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
#: ../js/ui/userMenu.js:579
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:653
msgid "Power Off..."
msgstr "Сөндіру..."
@ -1588,13 +1592,8 @@ msgid "Your chat status will be set to busy"
msgstr "Сіздің чат күйіңіз бос емес етіп орнатылады"
#: ../js/ui/userMenu.js:673
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
msgstr ""
"Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік "
"қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың "
"хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
#. Translators: this is the text displayed
#. in the search entry when no search is
@ -1604,7 +1603,8 @@ msgstr ""
msgid "Type to search..."
msgstr "Іздеу үшін теріңіз..."
#: ../js/ui/viewSelector.js:131 ../src/shell-util.c:244
#: ../js/ui/viewSelector.js:131
#: ../src/shell-util.c:252
msgid "Search"
msgstr "Іздеу"
@ -1670,19 +1670,19 @@ msgstr ""
msgid "Default"
msgstr "Бастапқы"
#: ../src/shell-polkit-authentication-agent.c:332
#: ../src/shell-polkit-authentication-agent.c:339
msgid "Authentication dialog was dismissed by the user"
msgstr ""
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:89
#: ../src/shell-util.c:97
msgid "Home"
msgstr "Үй бумасы"
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:98
#: ../src/shell-util.c:106
msgid "File System"
msgstr "Файлдық жүйе"
@ -1691,7 +1691,10 @@ msgstr "Файлдық жүйе"
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
#: ../src/shell-util.c:294
#: ../src/shell-util.c:302
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "RECENT ITEMS"
#~ msgstr "Соңғы нәрселер"

1614
po/kn.po

File diff suppressed because it is too large Load Diff

1046
po/ko.po

File diff suppressed because it is too large Load Diff

601
po/lt.po

File diff suppressed because it is too large Load Diff

1082
po/lv.po

File diff suppressed because it is too large Load Diff

1860
po/ml.po Normal file

File diff suppressed because it is too large Load Diff

1544
po/mr.po

File diff suppressed because it is too large Load Diff

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