Compare commits

...

303 Commits

Author SHA1 Message Date
3581c1d5b4 Bump version to 3.1.3
Update NEWS
2011-06-30 17:17:47 -04:00
64e7459d1c dnd: Reparent drag actor to the uiGroup rather then the stage 2011-06-30 21:13:15 +02:00
f71afa9248 configure: Depend on gnome-bluetooth 3.1.0, fix linking issue
Most importantly, the new variables include an rpath for the gnome-bluetooth
directory which fixes a linking problem; introspetion needs to be able to find
the library while running the introspected binary at build time.

Also, this removes some hardcoding in the configure script.
2011-06-30 14:20:34 -04:00
1ebca2e6d5 shell-util: Adapt to nautilus' switch to GSettings
shell_util_get_file_display_name_if_mount() uses a nautilus setting
to use a name for $HOME which is consistent with the file manager.
But while nautilus was ported to GSettings a while ago, we are still
trying to access the old GConf setting.

https://bugzilla.gnome.org/show_bug.cgi?id=653511
2011-06-30 16:31:49 +02:00
6222796b6a build: Remove gnome-keyring from g-o-a dependencies
We already draw in gnome-keyring from system packages.
2011-06-30 00:59:27 +02:00
dcecf41d18 build: Fix librest build for real
So the gnome.org modulesets define a default repository, we don't ...
2011-06-30 00:55:31 +02:00
9d1fbffe75 build: Fix librest build
Looks like <branch /> is very different from <branch/>:
http://git.gnome.org/browse/jhbuild/commit/?id=6589dbf293e
2011-06-30 00:52:16 +02:00
6a6ba94bb9 build: Move vala to version 0.12
Vala 0.12 is released. This change builds Vala from the 0.12 tarball.
2011-06-30 00:39:29 +02:00
ef5de3a5c0 build: Add gnome-online-accounts to moduleset
Both evolution-data-server and gnome-control-center now draw in
gnome-online-accounts - add it to the moduleset.
2011-06-29 23:27:08 +02:00
f042e43990 build: Use libgdata from git master
Previously we got by with using the 0.8 tarball as evolution-data-server
only requires libgdata >= 0.7, but as gnome-online-accounts is now build
by default, we need it from git master.
2011-06-29 23:26:39 +02:00
620330db8f StScrollViewFade: Fix scrollbar size handling
Only skip the areas of the scrollbars when they are invisible
and add take the horizontal scrollbar into account as well
when calculating the faded area.

https://bugzilla.gnome.org/show_bug.cgi?id=651866
2011-06-29 18:48:49 +02:00
3765acc0a5 StScrollView: Expose scrollbars visibility as property
Add two boolean readonly properties that tell whether
the scrollbars are visible or not.

https://bugzilla.gnome.org/show_bug.cgi?id=651866
2011-06-29 18:44:25 +02:00
2e8654b96c telepathyClient.js: ack pending messages (#644297) 2011-06-29 10:02:40 +02:00
cc5c5e7e8a messageTray.js: add collapsed signal on Notification 2011-06-29 09:44:47 +02:00
9c849b0290 messageTray.js: fire a signal when the summary item is clicked 2011-06-29 09:44:46 +02:00
ad314b362e Updated Norwegian bokmål translation 2011-06-28 22:56:12 +02:00
737a4f2816 Updated Slovenian translation 2011-06-28 22:29:24 +02:00
96e4128e3e Updated Spanish translation 2011-06-28 21:41:08 +02:00
6f515f2327 telepathyClient: Add another GAsyncReadyCallback
This is better for memory management, and we'll see any errors this
way, which we may eventually want to do something with.

We need to make this change because gjs recently started checking
(allow-none) on callbacks.
2011-06-28 13:22:26 -04:00
cbb9a7ab96 telepathyClient: Fix GAsyncReadyCallback
This caused a minor error.
2011-06-28 11:58:41 -04:00
e2e3b29ed1 Build: Switch to clutter / cogl 1.7
https://bugzilla.gnome.org/show_bug.cgi?id=653397
2011-06-28 17:49:58 +02:00
82a8ac1976 chrome: drop visibleInOverview
Every place that called chrome.addActor was specifying
visibleInOverview:true, and no existing designs call for chrome that
disappears when you enter the overview, so just drop that as an
option.

https://bugzilla.gnome.org/show_bug.cgi?id=633620
2011-06-28 11:07:11 -04:00
bfec396ec2 shell-global: remove some cruft
Some of the bookkeeping associated with the
ShellGlobal::screen-size-changed signal didn't get removed when that
signal did.

https://bugzilla.gnome.org/show_bug.cgi?id=633620
2011-06-28 11:07:04 -04:00
d0e7f880d7 Updated Belarusian translation. 2011-06-28 01:30:41 +03:00
ff81659b9e gdm: ignore user-removed signals for untracked users
If we don't know about a user, we don't care if it goes away,
and we shouldn't try to remove it from the book keeping.

https://bugzilla.gnome.org/show_bug.cgi?id=647893
2011-06-27 17:18:20 -04:00
6b2b3475c8 user-status: Hide "Power off" option if shutdown is disabled
Due to lockdown settings or Polkit policy, shutdown may not be
available. If this is the case, the "Power off ..." action should
be hidden from the user status menu.

https://bugzilla.gnome.org/show_bug.cgi?id=652038
2011-06-27 21:39:28 +02:00
ed8acefc00 workspaces-display: Don't slide out pager on drag-begin
Sliding out the workspaces pager when starting a drag causes a lot
of motion. With the pager only hiding if workspaces are not used,
it is better to require to explicitly hover the workspaces sidebar
for the sliding.

https://bugzilla.gnome.org/show_bug.cgi?id=652730
2011-06-27 21:39:28 +02:00
737f395d6c dnd: Rename DND.removeMonitor() to DND.removeDragMonitor()
DND.addDragMonitor() and DND.removeMonitor() are inconsistently
named, so rename the latter.

https://bugzilla.gnome.org/show_bug.cgi?id=652730
2011-06-27 21:39:28 +02:00
ab0a5d4a53 theme: Make the running indicator look as it's supposed to
background-image is intentionally being clipped to an actor's size,
but the running indicator SVG source didn't take this into account.
So the running indicator didn't actually work properly, and was a
lot more subtle than intended.

https://bugzilla.gnome.org/show_bug.cgi?id=652715
2011-06-27 12:53:38 -04:00
9412ac2027 BluetoothStatus: show "hardware disabled" when disabled by rfkill
Use the new PopupSwitchMenuItem functionality when bluetooth cannot
be enabled. Use it also for showing "connecting..." when activating
device items.

https://bugzilla.gnome.org/show_bug.cgi?id=648048
2011-06-27 17:21:38 +02:00
c8670819dc PopupMenu: enhance PopupSwitchMenuItem to show status labels
Moves and converts NMDeviceTitleMenuItem from network.js into
PopupSwitchMenuItem, so that it can show both a switch and a
greyed-out status label. This will be soon used by the Bluetooth menu.

https://bugzilla.gnome.org/show_bug.cgi?id=648048
2011-06-27 17:21:38 +02:00
4132ccae33 NetworkMenu: place network items in the right position
_createNetworkItem was always appending access point at the end of
the menu when their position was < 5 (NUM_VISIBLE_NETWORKS), ignoring
the presence or absence of _overflowItem, which thus ended in the
middle of the network list. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=652313
2011-06-27 17:19:33 +02:00
c450120409 SwipeScroll: Only allow starting with the left button
Currently we allow starting swipe-scroll with any mouse button
which is weird from an UI pov and causes inconsistencies with
event handling.

https://bugzilla.gnome.org/show_bug.cgi?id=647186
2011-06-27 17:08:25 +02:00
6ce07abf50 workspaces-view: Handle clip rectangle separately
After completing the overview transition, the workspace view is
clipped to avoid overlapping the search entry/view selector titles
while switching workspaces. For clipping, the view's position and
size was used, which works well assuming that the workspace pager
will start hidden or stay zoomed out while the overview is visible.
However, that assumption holds no longer true, as auto-hiding the
pager now depends on the number of workspaces, and thus may change
while in the overview. For instance, when starting with the pager
being visible, the clip area ends up being too small when moving
all windows to the first workspace (and thus triggering auto-hide).

As a fix, handle the clip rectangle separately from the view's
geometry, and set it always to the area the workspaces would
occupy with the pager hidden.

https://bugzilla.gnome.org/show_bug.cgi?id=653142
2011-06-27 15:22:23 +02:00
e39e539ee9 Update Simplified Chinese translation. 2011-06-26 09:55:41 +00:00
9563a8f8a0 Added Belarusian translation. 2011-06-25 20:45:07 +03:00
d5f37fa280 main: move pointer-sync-on-restack code here
We call global.sync_pointer() on MetaScreen::restack as a hack to try
to fix up the hover state after a pointer grab. Previously we were
doing this in chrome.js, since there was already a ::restack handler
there anyway, but this isn't really related to the chrome at all, so
move it to main.js instead.

https://bugzilla.gnome.org/show_bug.cgi?id=633620
2011-06-24 16:08:00 -04:00
5c6e5ef6d0 telepathyClient: Don't ignore GAsyncReadyCallback
This is better for memory management, and we'll see any errors this
way, which we may eventually want to do something with.

We need to make this change because gjs recently started checking
(allow-none) on callbacks.
2011-06-23 19:28:21 -04:00
42adc38609 telepathy-client: Minor coding style fix
Use camelCase for JS properties.
2011-06-24 00:57:48 +02:00
e5fadb3b42 telepathy-client: Adjust to gjs array changes
Since bug 646632 was fixed, array lengths are no longer passed as
separate parameters. Adjust to that change.
2011-06-24 00:57:11 +02:00
4c5f3aa971 utils: follow up to previous commit
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2011-06-24 00:13:59 +02:00
6fc49b79a4 utils: Adjust trySpawnCommandLine() to gjs changes
(out) arrays now no longer return the array length separately, adjust
to this change.
2011-06-24 00:00:34 +02:00
9e804b082f gnome-shell.modules: Remove libxml2 we assume is on system 2011-06-23 16:06:38 -04:00
1fb220beb7 gnome-shell.modules: Use gdata 0.8, not git
e-d-s uses 0.8.

https://bugzilla.gnome.org/show_bug.cgi?id=653275
2011-06-23 15:53:51 -04:00
1fc1282fad Fix various srcdir!=builddir issues
jhbuild will default to srcdir != builddir in the future for various
reasons.

The enum generation rules were just broken and both did
cd $(srcdir) and $(addprefix $(srcdir)).

Also, remove an unnecessary $(addprefix) from the GIR sources; thanks
to Dan Winship for pointing out that make will look in both srcdir and
builddir, so it's not necessary to add a prefix explicitly.  Doing so
breaks obviously when adding the sourcedir to a builddir file.

https://bugzilla.gnome.org/show_bug.cgi?id=653199
2011-06-23 10:15:17 -04:00
8834a7df10 Consistently exit the overview when launching external applications
We were doing this in one or two places, but not most of them.

https://bugzilla.gnome.org/show_bug.cgi?id=653095
2011-06-22 17:49:44 -04:00
a34071e1c3 workspaceThumbnail: Handle minimized windows
Workspace thumbnails are supposed to be miniatures of the "real"
workspace they represent, but currently they show minimized windows
like the window picker.
Instead, hide minimized windows and track changes to update the
thumbnail accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=651569
2011-06-22 13:10:50 +02:00
52a342300a workspaces-view: Always update zoom on workspace changes
With commit 59a3e393f9 whether the workspace pager should autohide
now depends on the number of workspaces. As we only track changes
to the number of workspaces while the overview is visible, we miss
changes in "normal mode", i.e. when creating a new workspace by
moving a window with ctrl-alt-shift-arrow; as a result, the pager's
autohiding might be incorrect when entering the overview after that.
As a fix, keep tracking changes to the workspaces when the overview
is hidden and update the zoom options.

https://bugzilla.gnome.org/show_bug.cgi?id=653078
2011-06-21 22:23:55 +02:00
b9456caeb0 search-display: Try harder to use a correct drag actor source
Commit 429f809b7 fixed an exception in getDragActorSource(), but
the returned actor is only an approximation (e.g. in contrast to
the actual drag actor, it includes the label).
Try a bit harder to return the correct actor and only fall back to
the approximation when necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=645990
2011-06-21 22:23:00 +02:00
26aa4333a5 shell_global_set_property_mutable: Remove
All introspection properties are now writable;
See https://bugzilla.gnome.org/show_bug.cgi?id=646633

https://bugzilla.gnome.org/show_bug.cgi?id=652597
2011-06-20 17:58:40 -04:00
04d2b0d282 environment: Remove usage of _blockMethod; we've fixed both Clutter and GDK
See bug 597292.

https://bugzilla.gnome.org/show_bug.cgi?id=652597
2011-06-20 17:58:40 -04:00
7def1a4aa5 Updated Swedish translation 2011-06-20 09:14:50 +02:00
001b9868fb Some fixes in Russian translation 2011-06-19 13:45:36 +04:00
59a3e393f9 workspaces-display: Improve pager autohide
The purpose of autohiding the workspace pager on the right was to
avoid exposure of workspaces to users who are not using them.
However, for users who do use workspaces, the behavior limits the
purpose of the overview. To fix, always show the pager if more than
one workspace is actively used.

https://bugzilla.gnome.org/show_bug.cgi?id=652714
2011-06-18 00:10:43 +02:00
b846354787 messageTray: make this visible in fullscreen mode
https://bugzilla.gnome.org/show_bug.cgi?id=608667
2011-06-17 08:58:00 -04:00
2674d96e54 StTheme: retrive the list of custom stylesheets and use it in loadTheme()
Using the list of stylesheets loaded with st_theme_load_stylesheet(),
one can build an StTheme that is completely identical to the previous
one, except for one property (application-stylesheet).
This allows rt and the user-theme extension to work while respecting
the theming of other extensions.

https://bugzilla.gnome.org/show_bug.cgi?id=650971
2011-06-15 21:56:37 +02:00
0c98fe8546 Corrections in Telugu file 2011-06-15 20:09:47 +05:30
f18ed3c6ae Addted entry in LINGUAS for telug locale 2011-06-15 17:18:31 +05:30
644acf7018 Newly added Telugu Translations 2011-06-15 17:16:58 +05:30
96dca48b3b overview: Allow dropping icons on windows
Currently the user has to find an empty spot in the workspace
to be able to launcha new instance of an app using dnd.

This is unnecessary hard, so just allow dropping on windows too.

https://bugzilla.gnome.org/show_bug.cgi?id=652079
2011-06-13 22:30:52 +02:00
1309b64c33 shell-window-tracker: Fix signal handler leak
Disconnect the on_wm_class_changed handler when removing a window
in disassociate_window().

https://bugzilla.gnome.org/show_bug.cgi?id=652388
2011-06-13 17:04:22 +02:00
1301dee744 Updated Slovenian translation 2011-06-11 17:38:58 +02:00
efc194e36c workspace: reposition windows on workspace resize
initial window position was broken (part of close button was clipped)
https://bugzilla.gnome.org/show_bug.cgi?id=651012
2011-06-11 17:40:12 +04:00
60f41a109f statusMenu: Don't force a screen lock when suspending
The screen panel in System Settings has a preference whether the
screen should be locked on suspend. This works fine when suspending
by closing the lid, but the "Suspend" menu item in the user status
menu ignores the setting and always locks the screen.
Fix by activating the screen saver before suspending rather than
locking explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=652327
2011-06-10 23:29:56 +02:00
890efa787a messageTray: update the SummaryItem's label based on Source title changes
https://bugzilla.gnome.org/show_bug.cgi?id=643513
2011-06-09 17:07:06 -04:00
60c88612f7 Implement a Telepathy Approver and Handler (#643594)
As the Shell does more than observing channels (users can interact with them),
it has to be an Handler as well. We have to make sure that all the new
incoming text channels are handled by the Shell by default, so we make it an
Approver as well.

From an user point of view, the only difference is that Empathy's tray icon
will stop blicking when receiving new channels.

We rely on ChannelDispatcher.DelegateChannels() and PresentChannel() to
interact with Empathy. Those methods have been implemented in
telepathy-mission-control 5.9.0 and telepathy-glib 0.15.0.
2011-06-09 13:57:18 +02:00
82648bc86c NetworkMenu: only show 5 connections per device
If we have more than 5 (which can happen with VPN connections), place
them into a More... submenu, which also becomes scrollable if needed.
To protect from race conditions and ordering issues while reading
connections, sort them in alphabetic order when the timestamp is equal.

https://bugzilla.gnome.org/show_bug.cgi?id=651602
2011-06-08 17:24:59 +02:00
ea1e5a5210 workspace: Make close button respect button_layout
Make the close button in the overview follow the user preference
for the window button layout.

https://bugzilla.gnome.org/show_bug.cgi?id=620105
2011-06-07 20:54:45 +02:00
aa03734d39 Add "Memory" tab to lg
shell_global_get_memory_info() is a new function which extracts a few
global counters we have already, namely glibc's mallinfo, spidermonkey's
JSGC_BYTES, and gjs' counters for boxed/object/etc wrappers.

There is some slight overlap with perf; ultimately though I'd
like this function to do some more extensive analysis, so it wouldn't
be quite the same.

perf is going to be mainly concerned with how big the whole process
over time is; memory_info is for debugging memory leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=650692
2011-06-07 14:44:35 -04:00
bb0f76f562 Updated Norwegian bokmål translation 2011-06-07 10:54:59 +02:00
8c2a290d09 telepathyClient: Make sure to filter messages at all times
When timestamps or presence or alias changes were appended before,
the _history could grow unbounded, leaving behind an unfruitful chat
log of:

  Jasper has gone offline.
  Jasper has gone online.
  Jasper has gone offline.
  Jasper has gone online.

ad nausem.

https://bugzilla.gnome.org/show_bug.cgi?id=651086
2011-06-07 03:04:52 -04:00
8e661c3780 telepathyContact: Fix presence information
An incorrect signal handler signature broke presence handling in master.

https://bugzilla.gnome.org/show_bug.cgi?id=651138
2011-06-06 07:56:44 -04:00
a03b6c419a [l10n]Fixes on Catalan translation 2011-06-06 07:38:42 +02:00
fb55dd677f [l10n]Updated Catalan (Valencian) translation 2011-06-06 07:37:53 +02:00
408790a630 Updated Galician translations 2011-06-06 00:49:34 +02:00
08371f073d Updated Russian translation 2011-06-05 10:42:49 +04:00
e7289378b7 st-scroll-view: Make the fade effect and offset themable
Theme authors now have the power (and responsibility) of creating fade
effects with the new CSS length property '-st-fade-offset'. A value of
0 disables the effect.

This new CSS approach replaces the current programmatic toggle of
the 'vfade' property. A new CSS style class name 'vfade' is used as
a replacement for the old property.

https://bugzilla.gnome.org/show_bug.cgi?id=651813
2011-06-04 15:43:49 -04:00
31bde574de Updated Spanish translation 2011-06-04 18:36:53 +02:00
5aacfe4e6e Updated Hebrew translation. 2011-06-04 15:13:11 +03:00
5cf7bdabfd Updated Hebrew translation. 2011-06-04 13:51:58 +03:00
2021edd1fb workspaces-view: Set geometry on new workspaces
Currently the workspace geometry is updated on zoom/allocation
changes, which means that newly added workspaces use their initial
geometry of (0, 0, 0, 0) until the next zoom change. As a result,
windows on the affected workspaces are mispositioned, e.g. placed
outside the workspace area. To fix, set the geometry on newly added
workspaces to the view's cached values.

https://bugzilla.gnome.org/show_bug.cgi?id=649001
2011-06-03 19:56:33 +02:00
45c1a9eafb workspaces-view: Simplify handling of removed workspaces
Workspaces used to contain the desktop background, so when a
workspace was removed, we animated its actor to an off-screen
position before destroying it. As the background has been
removed a while ago, we can destroy the actor directly.

https://bugzilla.gnome.org/show_bug.cgi?id=645031
2011-06-03 19:56:33 +02:00
0ae1556b94 messageTray: Don't animate notifications if they've shrunk.
The effect of the large gap breaks the illusion of the message attached to
the bottom of the screen.

https://bugzilla.gnome.org/show_bug.cgi?id=641570
2011-06-03 13:37:53 -04:00
c0739bd1e3 [l10n]Minor fix on Catalan translation 2011-06-03 19:18:11 +02:00
af51e8df7b st-shadow: Use non-deprecated GAtomic API 2011-06-02 23:06:38 +02:00
22ef63cc44 st-icon-colors: Use non-deprecated GAtomic API 2011-06-02 16:22:28 -04:00
03a5133e8c docs: Update man page
Currently the man page is horribly outdated, so update to the
current set of options.

https://bugzilla.gnome.org/show_bug.cgi?id=648562
2011-06-02 15:36:04 +02:00
7f2456c00d network: fix chaining of a destroy method
https://bugzilla.gnome.org/show_bug.cgi?id=651606
2011-06-02 09:28:47 -04:00
aa4dbee362 run-dialog: Use user preference when executing in terminal
Rather than hardcoding gnome-terminal, pick up the user's preferred
terminal from System Settings.

https://bugzilla.gnome.org/show_bug.cgi?id=648422
2011-06-01 19:29:41 +02:00
7b65735cc9 skip delivery reports in pending messages (#651227)
We already ignore them in _messageReceived but have to ignore them as well
when displaying pending messages.
2011-06-01 10:22:44 +02:00
7ef35fbec7 Updated Irish translation. 2011-05-30 11:21:14 -06:00
8b10d85fee [l10n]Added Catalan (Valencian) translation 2011-05-29 18:37:11 +02:00
d99b1e6c09 Updated Spanish translation 2011-05-29 09:47:22 +02:00
57ab7aec5b Updated Russian translation 2011-05-28 19:11:18 +04:00
29a221bf62 build: Update dependencies for Ubuntu
startup-notification needs xcb headers, require the appropriate
Ubuntu packages.
2011-05-27 17:49:16 +02:00
671c569a9e .gitignore: update for glib-gettext replacement 2011-05-27 10:58:18 -04:00
492c033760 build: Add xcb to build dependencies
startup-notification requires xcb headers.
2011-05-27 15:21:15 +02:00
33a3b8046d Add org.gnome.shell.enabled-extensions complementing disabled-extensions
If the former is empty (default), only the extensions not contained in
the latter are loaded.  Else, all extensions in the former that are
not contained in the latter are loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=651088
2011-05-25 17:53:06 -04:00
88df183450 shell-recorder: missing XFree
https://bugzilla.gnome.org/show_bug.cgi?id=650934
2011-05-26 00:52:04 +04:00
6a9080c3d6 gnome-shell.modules: build gnome-settings-daemon after colord
gnome-settings-daemon uses colord, so mark the dependency.

https://bugzilla.gnome.org/show_bug.cgi?id=650869
2011-05-25 16:44:17 -04:00
019670b5ab dash: during drag, only offer trash can when dragging favorites
We should only show the trash can when the user starts dragging a
favorite from the dash, not when the user starts dragging an application
that happens to be a favorite via a window or an application icon
in the applications view.

https://bugzilla.gnome.org/show_bug.cgi?id=642895
2011-05-25 16:43:24 -04:00
4cab0c95d3 ShellWindowTracker: Remove title tracking workarounds for OO.org and Firefox
LibreOffice does WM_CLASS correctly as of recently, and Firefox has for
some time.  Strip out the title pattern workarounds.

https://bugzilla.gnome.org/show_bug.cgi?id=651015
2011-05-25 12:11:09 -04:00
d51e79d483 Track changes to WM_CLASS
LibreOffice changes applications dynamically; we should support this.

https://bugzilla.gnome.org/show_bug.cgi?id=649315
2011-05-25 12:09:52 -04:00
69a27911a7 check for JS_NewGlobalObject and XFixesCreatePointerBarrier
The previous fix in eb5466209 removed JS_NewGlobalObject and
XFixesCreatePointerBarrier

Signed-off-by: Ionut Biru <ibiru@archlinux.org>
2011-05-24 18:05:22 -04:00
dd48514b24 gnome-shell.modules: Depend on latest startup-notification
See commit eb54662098 which introduced the dependency.
2011-05-24 17:59:38 -04:00
eb54662098 Require startup-notification >= 0.11
sn_startup_sequence_get_application_id appeared first in this release

Signed-off-by: Ionut Biru <ibiru@archlinux.org>
2011-05-24 17:07:32 -04:00
545f0432c8 gnome-shell.modules: add caribou (with nothing depending on it) 2011-05-24 16:45:29 -04:00
fdefb317cb StTextureCache: Fix leak of key string
Also micro-optimize by avoiding another strdup(), instead pass
ownership of the string when we can.

https://bugzilla.gnome.org/show_bug.cgi?id=649508
2011-05-24 13:00:46 -04:00
4e0c8bfe67 Updated Spanish translation 2011-05-23 21:33:52 +02:00
dbd629d5d2 NetworkMenu: show devices that are unmanaged
Some users are confused when their devices are not shown in the
network menu, even if they configured them manually. Mark their presence
by showing them in the menu, even if they cannot be otherwise
interacted with.
Also add a status string for deactivating devices (none currently,
soon will appear in NetworkManager).

https://bugzilla.gnome.org/show_bug.cgi?id=646946
2011-05-23 19:11:35 +02:00
619a44a499 ShellRecorder: Use cogl_read_pixels()
cogl_read_pixels() used to only support a useless pixel format, but it
will do our preferred format now, so use it rather than doing GL stuff
by hand.

https://bugzilla.gnome.org/show_bug.cgi?id=648758
2011-05-23 10:51:23 -04:00
c5ca4e3ff0 StImText: remove two references to old clutter bugs
Remove a workaround for clutter_actor_get_transformed_position() not
working inside paint(), and remove a comment about
ClutterText::position not being properly notified, since it is now.
(However, it doesn't seem worth it to rewrite the code to use
notification, since that would actually end up being more complicated
than the current solution.)

https://bugzilla.gnome.org/show_bug.cgi?id=648758
2011-05-23 10:51:23 -04:00
55771b437b StScrollBar: use clutter_actor_has_allocation()
StScrollBar was tracking whether or not it currently had a valid
allocation, but since Clutter 1.4 there is a method it can call to get
that information instead.

https://bugzilla.gnome.org/show_bug.cgi?id=648758
2011-05-23 10:51:23 -04:00
8727680983 MAINTAINERS: Fix my email address 2011-05-23 09:15:58 -04:00
ab9f21351f build: Fix autopoint dependency on F15
Fedora moved autopoint once again, it's now in gettext-devel ...
2011-05-23 15:14:29 +02:00
0055cabc62 Updated Irish translation. 2011-05-23 02:14:15 -06:00
fc70c2246b vi.po: new translation for "dash" 2011-05-22 21:50:52 +07:00
f7b6acaff8 Updated Irish translation. 2011-05-22 04:32:31 -06:00
91caa8e59f build: Add colord to moduleset
It has been added as a dependency of gnome-control-center.
2011-05-20 19:18:05 +02:00
4c44bb7f52 Use upstream gettext instead the glib one
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=631576
2011-05-20 13:44:50 +01:00
df8a735aa9 search: Fix documentation comment 2011-05-20 14:19:16 +02:00
82aea3e8d6 Import Shell as needed by recent commit 2011-05-20 11:14:54 +02:00
a8baf4a2a2 Change 'debugexit' to quit main loop rather than exit(), add cleanup
A new envrionment variable GNOME_SHELL_ENABLE_CLEANUP is added which
causes us to attempt freeing global data.  The reason this isn't
enabled by default is that it's a waste of time at best, and at
worst in corner cases could cause crashes which would fill up
crash databases.  Better to leave it as a developer-only tool.

Start stubbing out some cleanup in ShellGlobal.

https://bugzilla.gnome.org/show_bug.cgi?id=649517
2011-05-19 15:35:04 -04:00
bfd344cdec Use Shell.get_file_contents_utf8_sync over GLib.file_get_contents
We need to fix the latter to return a byte array, which gjs doesn't
deal with well right now.

https://bugzilla.gnome.org/show_bug.cgi?id=649981
2011-05-19 15:27:23 -04:00
a0fd4e195d Use the same selection color as the gtk theme.
https://bugzilla.gnome.org/show_bug.cgi?id=646261
2011-05-19 18:52:57 +02:00
4b3fbc4c9b network: fix modem connected state check
There is no CONNECTED state for devices, it's ACTIVATED.

https://bugzilla.gnome.org/show_bug.cgi?id=650124
2011-05-19 12:09:56 -04:00
63b1699a35 panel: Don't propagate button-release-event in _onCornerClicked()
Since both the hot corner's ClutterGroup and the hot corner's
ClutterRectangle button-release-event is connected to
_onCornerClicked() we must handle it there by returning 'true' to
Clutter or else _onCornerClicked() is called twice which defeats the
HOT_CORNER_ACTIVATION_TIMEOUT logic.

https://bugzilla.gnome.org/show_bug.cgi?id=649427
2011-05-19 12:09:01 -04:00
48acc41698 Don't crash when removing nameless user
https://bugzilla.gnome.org/show_bug.cgi?id=647893
2011-05-19 12:07:20 -04:00
17672accfe altTab.js: remove the rest of Alt+Tab's special case
Remove the other case in the App Switcher where Tab vs Above_Tab
behaved inconsistently.

https://bugzilla.gnome.org/show_bug.cgi?id=647907
2011-05-19 09:20:55 -04:00
986d72d9de configure: remove support for evolution-data-server 1.2
https://bugzilla.gnome.org/show_bug.cgi?id=647395
2011-05-18 09:01:06 -04:00
ffd461cdb4 telepathyClient: don't update notifications for outgoing messages
If you receive a message, a notification will appear. If you reply in
Empathy's chat window before the notification disappears, the
notification is updated with the contents of the message you *just*
sent! We should only update notifications if they're incoming.

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

Signed-off-by: Jonny Lamb <jonnylamb@gnome.org>
2011-05-18 08:26:57 +01:00
71dfab9711 altTab: remove erroneous/superflous pick
AltTabPopup was calling global.stage.get_actor_at_pos() "to force a
stage relayout", but that function does not actually have that effect.
It was also occasionally causing Clutter warnings (possibly due to a
clutter pick-buffer-caching bug?). So just remove the call.

https://bugzilla.gnome.org/show_bug.cgi?id=650317
2011-05-17 15:39:44 -04:00
c4f5274d74 appMenu: Disable reactivity at the start of animation
If you clicked on the application button while it was fading out, like
during a transition to the overview, a vestigal menu appeared.

https://bugzilla.gnome.org/show_bug.cgi?id=639459
2011-05-16 19:12:38 -04:00
4bfc3bafcb main: make "gnome-shell" the default gettext domain
Since libmutter uses dgettext(), we can take over the default domain

https://bugzilla.gnome.org/show_bug.cgi?id=649203
2011-05-16 14:57:31 -04:00
898b2b903d environment: put gettext stuff into global environment
Rather than defining _() as a local function in every module, put it
into the global environment (along with C_() and ngettext()).

https://bugzilla.gnome.org/show_bug.cgi?id=649203
2011-05-16 14:57:21 -04:00
7921954a31 environment: move more init stuff here from main.js
Move some more environment-initializationy stuff from main.js to
environment.js, and be more careful about not importing shell JS
modules until after the environment has been fully patched.

Change gnome-shell-plugin to call Environment.init() before
Main.start(); this means that Environment.init() now runs before any
shell JS modules (besides environment itself) have been imported.

Make run-js-test create a ShellGlobal and use its js_context, so that
the shell_global_set_property_mutable() stuff in Environment.init()
will work correctly in tests as well.

https://bugzilla.gnome.org/show_bug.cgi?id=649203
2011-05-16 14:56:27 -04:00
0e42de9149 run-js-test: link to libgnome-shell.la
The tests were broken again, because since Shell-0.1.gir now has
'shared-library="libgnome-shell.so"', the references to Shell.PerfLog
ended up pulling in libgnome-shell in addition to the copy of
shell-perf-log.c that libjs-test was built with.

Fix all this hopefully forever by just making run-js-test link to
libgnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=649203
2011-05-16 14:54:04 -04:00
8e4a5f1ac5 Shell: sort, align, clean up shell-global.h and shell-util.h
https://bugzilla.gnome.org/show_bug.cgi?id=648755
2011-05-16 14:51:35 -04:00
61577e176e shell: move non-ShellGlobal functions from shell-global to shell-util
shell-global had become a dumping ground for functions that didn't
have anywhere else to be. Make shell-util the dumping ground instead,
and have shell-global only have methods that involve the ShellGlobal
object.

https://bugzilla.gnome.org/show_bug.cgi?id=648755
2011-05-16 14:51:35 -04:00
4b008b1ada shell-global: Remove unused ShellGlobal parameters
Remove the ShellGlobal parameter from any method that isn't actually
ShellGlobal-related (and rename them to not have "global" in the
name).

https://bugzilla.gnome.org/show_bug.cgi?id=648755
2011-05-16 14:51:35 -04:00
bee37b5bc4 lookingGlass: make Esc work on any page
The lg window was losing focus when the page with the entry got unmapped;
fix it to refocus itself after that.

Fixing this problem revealed that previously we were focusing the
entry on open(), but not ensuring that that page was selected, meaning
you could type into the entry without being able to see it. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=647303
2011-05-16 06:43:47 -04:00
b5ab8b6ed5 Add Esperanto translation 2011-05-15 17:57:01 +02:00
4d6bd91d16 Add Esperanto translation 2011-05-15 17:55:50 +02:00
5428db5385 Updated Hebrew translation. 2011-05-13 13:23:36 +03:00
6e6b1e6052 workspace: End zooming when starting a window drag
The mouse-wheel zooming "easter egg" breaks horribly when you
drag a window, due to ugly lightbox reparenting tricks it uses.

For now, just end any zoom before we drag the window around.

https://bugzilla.gnome.org/show_bug.cgi?id=649632
2011-05-12 11:04:37 -04:00
bc2b47974d workspace: Use Main.uiGroup instead of global.stage
The mouse-wheel zoom "easter egg" broke when using the magnifier
because it was using global.stage. Fix it to use Main.uiGroup instead.

https://bugzilla.gnome.org/show_bug.cgi?id=649632
2011-05-12 11:04:37 -04:00
2244b6ff1b telepathyClient: don't notify for delivery reports
Signed-off-by: Jonny Lamb <jonnylamb@gnome.org>
2011-05-12 11:28:43 +01:00
fb384fc291 shell-tp-client: enable client recovery
This makes sure that we get any channels that existed at the time the shell
started, otherwise some chats may never appear.

https://bugzilla.gnome.org/show_bug.cgi?id=649633
2011-05-11 21:01:03 -04:00
73cae8ce9a st-scroll-view: remove spurious assignment of uninitialized data
https://bugzilla.gnome.org/show_bug.cgi?id=649596
2011-05-11 16:19:00 -04:00
dcd07eb23f StTextureCache: plug leak in not-found icon case
Need to free the key too.

https://bugzilla.gnome.org/show_bug.cgi?id=649508
2011-05-11 16:18:10 -04:00
fa24448489 Updated Norwegian bokmål translation from Sigurd Gartmann 2011-05-11 21:20:47 +02:00
c975740f92 st-private: Correct fix for memory leak
The previous fix in 72f9f482d was wrong; we need to keep around
the buffer until cairo is done with the pattern.

https://bugzilla.gnome.org/show_bug.cgi?id=649497
2011-05-11 11:23:53 -04:00
1e0187fa57 Updated Slovenian translation 2011-05-09 20:18:33 +02:00
cbdf060bca Added Aragonese trasnlation 2011-05-09 10:36:48 +02:00
19a8dff975 Updated Hebrew translation. 2011-05-09 00:28:28 +03:00
72f9f482d6 st-private: Fix memory leak
==13810== 11,360 bytes in 1 blocks are definitely lost in loss record 18,574 of 18,765
==13810==    at 0x4005447: calloc (vg_replace_malloc.c:467)
==13810==    by 0x5191882: standard_calloc (gmem.c:107)
==13810==    by 0x51920A7: g_malloc0 (gmem.c:196)
==13810==    by 0x4056201: blur_pixels (st-private.c:466)
==13810==    by 0x40573B4: _st_create_shadow_cairo_pattern (st-private.c:710)
==13810==    by 0x4070746: st_theme_node_paint (st-theme-node-drawing.c:856)
==13810==    by 0x3FEFFFFF: ???

https://bugzilla.gnome.org/show_bug.cgi?id=649497
2011-05-05 16:02:00 -04:00
88de26138a shell-xfixes-cursor: missing XFree
memory returned by XFixesGetCursorImage should be freed after usage.
https://bugzilla.gnome.org/show_bug.cgi?id=642652
2011-05-05 23:49:57 +04:00
57bd964cb3 Finnish date/time fixes from Marko Myllynen. Full usage however depends on getting bugs #647320 / #648678 in g_date_time_format fixed. 2011-05-05 18:02:36 +03:00
74a39ae57c shell-app: Fix a case where last_user_time isn't updated.
When activating an uninteresting window, the last_user_time isn't updated,
because we aren't tracking the window that the user_time gets updated on.
Hack around this by setting the last_user_time in shell_app_activate when
activating an uninteresting window.

https://bugzilla.gnome.org/show_bug.cgi?id=643302
2011-05-04 12:10:52 -04:00
5090a4ccce network: request that nm-applet show the mobile broadband wizard
Use nm-applet 0.8.999 API to call the mobile broadband wizard and
activate the new connection.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=649318
2011-05-04 10:23:08 -05:00
ae0652d13f network: fix initial connections to WPA[2] Enterprise APs
Call out to nm-applet to do the dirty work since the dialog of
doom is pretty complicated and we don't have a JS equivalent
of it for now.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171
2011-05-04 10:20:33 -05:00
101a07a3d7 network: fix handling of AP flags and enhance for 802.1x
All WPA APs were getting set as WPA2 due to the check for privacy;
WPA/WPA2 APs *must* set the Privacy bit according to the standard,
so we'd never end up in the case for NMAccessPointSecurity.WPA.

Fix that, and also add flags for WPA[2] Enterprise which we'll
use a bit later for the first-time connect case for 802.1x enabled
access points.
2011-05-04 10:20:21 -05:00
b012e93121 Updated Norwegian bokmål translation 2011-05-04 10:34:52 +02:00
c31109800b network: simplify connection sorting by using libnm-glib functions
Instead of rolling our own code, use new libnm-glib functions to do
the same thing.  Requires libnm-glib as of
779215c742bbe29a2c66202ec7e2e6d43edeb8ff (which will be part of 0.9).

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648648
2011-05-04 00:33:51 -05:00
c0dc363a3d appDisplay: Fix off-by-one when incrementally adding application icons
A "cosmetic" code arrangement I requested in code review resulted
in one too few items being removed from the queue for each incremental
chunk of icons added. Fix.

https://bugzilla.gnome.org/show_bug.cgi?id=648739
2011-05-03 08:52:39 -04:00
739bb28220 Added UG translation 2011-05-02 18:45:32 +02:00
aab2794e05 Added UG translation 2011-05-02 18:39:44 +02:00
75c8c1bfb6 Added UG translation 2011-05-02 07:27:15 +02:00
6f8bd96195 Uploaded Ukranian 2011-05-02 02:46:26 +03:00
25f0d098bd Updated Swedish translation 2011-05-01 09:53:59 +02:00
56d584b7c6 workspacesView: Don't change opacity during dnd
We used used to indicate to the user the ability to move to another workspace
during dnd by highligthing the adjacent workspaces on hover.

This was done by changing the workspace's opacity to 200 and set it to
255 for the highlighted adjacent ones.

This is now no longer needed as the design was completely changed since
then (overview relayout; we no longer represent workspaces in the way
we did before) and introduces a bug where we don't properly reset the
opacity after the drag action, so just remove that code.

https://bugzilla.gnome.org/show_bug.cgi?id=648983
2011-04-30 00:04:22 +02:00
20bf53add1 Updated Spanish translation 2011-04-29 20:01:34 +02:00
0d440bb0a2 StTooltip: add missing break statement
This commit is a small fix to prevent the
tip area property setter code from erroneously
falling through to the unhandled property case.

https://bugzilla.gnome.org/show_bug.cgi?id=648894
2011-04-29 09:45:19 -04:00
8ec62ce46b bluetooth: fix mis-spelling of "Set up"
"setup" is not a verb.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648410
2011-04-28 16:22:04 -05:00
79927faaec shell-global: remove some no-longer-used methods
https://bugzilla.gnome.org/show_bug.cgi?id=648755
2011-04-27 15:32:26 -04:00
e4c7f1f3c4 St: require libcroco >= 0.6.2
and remove the workaround for the parsing bug in earlier versions

https://bugzilla.gnome.org/show_bug.cgi?id=648760
2011-04-27 15:29:24 -04:00
68710c4647 Revert "shell-app: Fix a case where last_user_time isn't updated."
This reverts commit 7d7cbde1f3.

This was acidentally pushed.
2011-04-27 12:53:33 -04:00
7d7cbde1f3 shell-app: Fix a case where last_user_time isn't updated.
When activating an uninteresting window, the last_user_time isn't updated,
because we aren't tracking the window that the user_time gets updated on.
Hack around this by setting the last_user_time in shell_app_activate when
activating an uninteresting window.

https://bugzilla.gnome.org/show_bug.cgi?id=643302
2011-04-27 11:12:27 -04:00
bafd9c777a history: Fix navigation when entering a repeat
If the user typed "a", hit up, and pressed enter again, we wouldn't re-set the
history pointer to the end, so the broken navigation would instead go to the
entry before that.

https://bugzilla.gnome.org/show_bug.cgi?id=648765
2011-04-27 10:08:00 -04:00
42a5531f15 network: fix a variable name 2011-04-27 09:05:39 -04:00
227da25776 Move Telepathy utility functions from shell-global to shell-tp-client
https://bugzilla.gnome.org/show_bug.cgi?id=645585
2011-04-27 10:43:17 +02:00
2028f33e38 telepathyClient.js: use ShellTpClient instead of TpSimpleObserver
https://bugzilla.gnome.org/show_bug.cgi?id=645585
2011-04-27 10:43:17 +02:00
145bf19636 add shell-tp-client
https://bugzilla.gnome.org/show_bug.cgi?id=645585
2011-04-27 10:43:17 +02:00
d1675c44e2 Added Slovak translation 2011-04-27 08:57:24 +02:00
6934e4db26 Setting StWidget::label-actor on some ui elements
Specifically:
  * Icons on Alt+Tab menu
  * Icons on Ctrl+Alt+Tab menu
  * Icons on the list of applications
2011-04-27 02:09:11 +02:00
cae3414854 [a11y] Use StWidget::label-actor on StWidgetAccessible
It uses this label-actor to set the proper atk relationships
between the widget and his label
2011-04-27 02:09:11 +02:00
90d061edaf Add a new property StWidget:label-actor
This property represents that the widget is being labelled by an
actor. The name is label-actor to avoid problems with the current
StButton:label and StTooltip:label
2011-04-27 02:09:10 +02:00
2e02918323 WindowOverlay: Show close button after an animation
If a user is fast and mouses over a window while the workspace thumbnail
animations are playing, it can be frustrating when the close button won't
appear at the end of the animation.

https://bugzilla.gnome.org/show_bug.cgi?id=645848
2011-04-26 17:16:53 -04:00
e77a1fd33b Updated Swedish translation 2011-04-26 23:10:00 +02:00
dd01c24c34 build: Remove deleted files from Makefile
Commit f88fbee8 removed unused theme files, but the Makefile still
referenced them.
2011-04-26 22:49:19 +02:00
f88fbee80d Remove unneeded theme files.
https://bugzilla.gnome.org/show_bug.cgi?id=648006
2011-04-26 22:41:16 +02:00
fe08edbe2b altTab: fix Alt+Tab scrolling on initial display
The initial selection of the Alt+Tab dialog was happening before the
dialog was shown and allocated, and so the "do we need to scroll"
check used bogus coordinates. Fix by showing the dialog (and forcing
an allocation) first.

https://bugzilla.gnome.org/show_bug.cgi?id=647807
2011-04-26 21:10:46 +02:00
d2a16bca10 altTab: Fix the appSwitcher's allocation
A typo in AltTabPopup._allocate was causing the allocation to be wrong
which broke icon scrolling, so fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=647807
2011-04-26 21:10:45 +02:00
a87f51487e Display dialogs on the primary monitor when no window has focus.
Before this change, we displayed dialogs on the monitor containing the
focused window if there was any, otherwise on monitor 0.  We now use
the primary monitor rather than monitor 0 when no window has focus.

https://bugzilla.gnome.org/show_bug.cgi?id=648305
2011-04-26 21:09:41 +02:00
76fce94b66 BluetoothStatus: always update devices
Previously, we skipped rebuilding device items in case the device
had already been seen, but this caused the connected switch not to
be updated. Now it has been refactored to update in case the device
changes, and to create only when the device is completely new.

https://bugzilla.gnome.org/show_bug.cgi?id=647565
2011-04-26 18:05:39 +02:00
d104f9210a PopupSliderMenuItem: intercept clicks outside the slider
Connect to button-press-event on the menu item actor, not on the
slider, so any part that is highlighted is also clicked. This means
that click on the left of the volume slider is a rapid way to mute.

https://bugzilla.gnome.org/show_bug.cgi?id=646660
2011-04-26 15:40:51 +02:00
d0780d1622 NetworkMenu: keep wirelesss networks in predictable order
Adds a function that compares wireless networks and keeps them sorted
at all times. Order is: first already configured connections, then
first secure networks, then alphabtic. Also, the appearance of a new access
point no longer causes the whole menu to be rebuilt (but it still linear
searches for the position, I guess that could be skipped), which caused
the addition of more code for tracking the active access point.

https://bugzilla.gnome.org/show_bug.cgi?id=646580
2011-04-26 14:46:43 +02:00
9d5906dae3 panel: provide a consistent way to refer to panel items from lg
Rename a few Panel fields and add a _statusArea object pointing to the
status area PanelButton objects. You can now address each item
consistently from lg:

    Main.panel._activities
    Main.panel._appMenu
    Main.panel._dateMenu
    Main.panel._statusArea.a11y
    Main.panel._statusArea.volume ...
    Main.panel._userMenu

https://bugzilla.gnome.org/show_bug.cgi?id=646915
2011-04-26 08:21:41 -04:00
07a0960265 environment: improve Object.toString for delegate objects
If a JS object has an 'actor' property pointing to a ClutterActor,
include the actor's toString() output in the delegate's toString()
output. Eg:

  js>>> Main.panel
  [object Object delegate for 0xff6080 StBoxLayout.menu-bar "panel" ("Activities")]

https://bugzilla.gnome.org/show_bug.cgi?id=646919
2011-04-26 08:19:43 -04:00
72bee6d7ca Revert "telepathyClient: remove alias-change messages, to unbreak string freeze"
Add this message back, now that master is no longer in string freeze.

This reverts commit f6cb215042db1404a8e5a3f694d23670ee23e370.

https://bugzilla.gnome.org/show_bug.cgi?id=642793
2011-04-26 08:17:32 -04:00
249f26d23c Bump version to 3.0.1
Update NEWS
2011-04-25 18:21:44 -04:00
7813c5b93f appDisplay: Process application display in chunks instead of all at once
Layout here can be slow for multiple reasons; better to avoid blocking
the whole UI until we're done with layout.

https://bugzilla.gnome.org/show_bug.cgi?id=647778
2011-04-25 17:20:45 -04:00
e38d83fd44 workspace: avoid an assertion in a new window/deleted workspace race
If a window appeared on a workspace that was then quickly removed, we
could hit an assertion in mutter. Avoid that.

https://bugzilla.gnome.org/show_bug.cgi?id=648132
2011-04-25 16:44:18 -04:00
d97657b151 app-menu: Update clip on icon size changes
To keep the app icon from overlapping the panel's (border-image)
border, a custom property for clipping the app menu icon's bottom
was introduced. But if the clip region is set before the initial
icon is set, the entire actor ends up clipped. Also due to the double
meaning of clutter_actor_get_height() (e.g. preferred height versus
allocated height), the clip region may end up too large and the icon
overlaps the panel's border-image.
Fix both problems by updating the clip region on size changes as
well, rather than on style changes only.

https://bugzilla.gnome.org/show_bug.cgi?id=644122
2011-04-25 22:20:10 +02:00
7e857dede3 network: add a few more states to getStatusLabel()
The IP_CHECK and SECONDARIES states should be considered part of the
"connecting..." phase.

DEACTIVATING should be its own stage, but that would break string
freeze, so we just treat it like DISCONNECTED for now.

UNMANAGED needs to be treated differently in 3.2, but it is too late
to fix it for 3.0.1.

https://bugzilla.gnome.org/show_bug.cgi?id=646946
2011-04-25 09:13:48 -04:00
c3218f6b03 Updated Thai translation. 2011-04-25 11:47:40 +07:00
1060d0db60 Updated Thai translation. 2011-04-25 08:46:44 +07:00
b8925a091c Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-04-24 05:55:02 +08:00
79cca07a41 Updated Japanese translation 2011-04-23 15:47:51 +09:00
c1d189c9ad Updated Turkish translation 2011-04-23 00:34:33 +03:00
b1a973ee5a Fixed bug #648398 in galician translations 2011-04-22 17:58:28 +02:00
93ef560779 Updated Polish translation 2011-04-22 16:27:32 +02:00
c28d35ad86 Fix bug #648394 2011-04-22 14:23:46 +02:00
9c654a6ab5 Updated Swedish translation 2011-04-22 08:50:54 +02:00
64a54e379c Updated Swedish translation 2011-04-22 08:48:11 +02:00
8f4ec8583b Updated Spanish translation 2011-04-21 18:49:11 +02:00
f4852d7264 ShellWindowTracker: Ensure WM_CLASS remains canonical if it matches
I unintentionally made .desktop->pid association "win" over
WM_CLASS.  Fixing this makes the case of ancillary .desktop file
entry points (e.g. gnome-control-center's various shortcut .desktop
files) correctly show System Settings, and not whatever the shortcut
is.

In the future I'd like to have a way to say "this .desktop file
is a shortcut, ignore me" or something.

https://bugzilla.gnome.org/show_bug.cgi?id=646689
2011-04-20 15:04:57 -04:00
092e1a691d altTab.js: remove Alt+Tab's special case
Alt+Tab's special case of "switch to the most-recently-used window even if
it's in the same app" is actually an hindrance for users to get a firm mental
model of Alt+Tab. Now that we have Alt+Above_Tab the special case is no longer
needed.

https://bugzilla.gnome.org/show_bug.cgi?id=647907
2011-04-20 14:43:14 -04:00
16ac42421d Updated Persian translation 2011-04-19 00:17:52 +04:30
1d2eadb9c0 notifications: Fix order of title/banner for RTL text
Currently, the banner text is always located at the right of the
title - we need to swap those around for RTL locales. Rather than
using the locale directly to figure out the ordering, try to
determine the direction of the title label and let it control the
overall direction of the notification - this way, notifications
generally come out right when mixing scripts.

https://bugzilla.gnome.org/show_bug.cgi?id=646921
2011-04-15 20:14:51 +02:00
35c85d9fac Fix search handling when typing multiple searches in the search box
In the current implementation of the search entry, when replacing a
selected search term with another term, the first character of the
replacement is prepended to the hint text rather than starting a new
search. This fix makes sure that the focus is not lost when changing
the selected search term.

https://bugzilla.gnome.org/show_bug.cgi?id=636341
2011-04-15 19:42:08 +02:00
f0622c1896 search-results: Fix flickering of the selection
When updating search results, the current result set is
recreated from scratch before setting the selection
highlight. This results in two style changes of the selected
item, and as a CSS transition is used to animate the style
change, the selected item flickers if it remains the same as
with the previous search term.
Fix by hiding the result set until the selection is set, to
avoid the transition in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=646019
2011-04-15 19:34:35 +02:00
6d11247417 Fix translation of Dash for Simplified Chinese, to resolve Bug 647738. 2011-04-15 21:25:13 +08:00
59c3e3a179 endSessionDialog: fix keyboard navigation
The addition of _backgroundStack to ModalDialog broke focus
navigation, because it was interposed between the focus group root and
all of the interesting content, but since it isn't an StWidget,
st_widget_navigate_focus() was unable to navigate through it. Fix this
by moving the focus root to this._dialogLayout (inside the
_backgroundStack) instead.

Additionally, in EndSessionDialog specifically, _initialKeyFocus
wasn't being set until after opening the dialog, so it was ignored.

Also change ModalDialog.close() to clear the _savedKeyFocus that
popModal() set, so that dialogs that are repeatedly closed and
reopened will have their focus revert back to _initialKeyFocus each
time.

https://bugzilla.gnome.org/show_bug.cgi?id=646740
2011-04-14 17:53:40 -04:00
42e26a8682 dbus: Avoid losing org.freedesktop.Notifications on replacement
We weren't specifying _ALLOW_REPLACEMENT for anything except
org.gnome.Shell, which created a race - if the exiting process
didn't exit fast enough, the replacing process would fail
to get the name.

https://bugzilla.gnome.org/show_bug.cgi?id=646257
2011-04-13 09:41:33 -04:00
db6caac9cc ShellWindowTracker: Follow transients for focus app
As a side effect of (see bug 642221), we no longer put docks or
transient windows into the hash table mapping windows to apps.  The
"focused application" code relied on at least transients being in
there.

Fix this by calling the public API to map a window to an app, which
will at least follow transients.  Whether we also want further
matching here (e.g. with window grouping) is another issue, but that
can happen as a different bug.

https://bugzilla.gnome.org/show_bug.cgi?id=647082
2011-04-12 17:57:20 -04:00
ba4a57ba0b vi/po: shorter network connection notification 2011-04-12 18:35:02 +07:00
018e3bc35f search-tab: Don't handle clicks on inactive icon
The icon set as secondary icon of the search entry depends on whether
a search is active or not - clicking the icon should reset the entry
only in the former case. This is implemented by connecting/disconnecting
the 'secondary-icon-clicked' signal when updating the icon, but an
additional signal connection was left-over when refactoring the search
entry, resulting in clicks on the inactive icon removing the hint text.
Fix by removing the stray signal connection.

https://bugzilla.gnome.org/show_bug.cgi?id=646855
2011-04-11 20:57:05 +02:00
a56bc9d933 st_label_set_text: no-op if the text is unchanged
If a caller sets an StLabel's text to what it already is (as, eg, the
clock menu does), do nothing. Unless the label is editable, in which
case, setting the text has a visible side effect (dropping the
selection), so we don't optimize that out.

https://bugzilla.gnome.org/show_bug.cgi?id=645648
2011-04-11 14:00:16 -04:00
5b93525ce8 lookingGlass: bring back the inspector icon
The change to StTextureCache for bug 644142 broke lg's inspector icon,
which was not specifying St.IconType.FULLCOLOR, but was relying on the
fact that SYMBOLIC (the default) would fall back to it. Fix the icon
by specifying FULLCOLOR explicitly.

(We should probably be using a symbolic icon here, but there is no
available icon with a select/pick/point-to/etc kind of meaning.)

https://bugzilla.gnome.org/show_bug.cgi?id=646451
2011-04-11 10:59:32 -04:00
6abb86dff6 src/Makefile.am: two fixes to the gnome-shell wrapper handling
Add an uninstall-hook to undo the effect of install-exec-hook, and add
an $(AM_V_GEN) to the rule that copies either gnome-shell-real or
gnome-shell-jhbuild to gnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=646730
2011-04-11 10:58:50 -04:00
6a27d5ed80 NetworkMenu: don't pass NULL to nm_utils_ssid_to_utf8
It expects an Array or a ByteArray, and gjs throws in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=647040
2011-04-11 10:43:12 -04:00
8232684672 network: show ad-hoc icon for ad-hoc networks
https://bugzilla.gnome.org/show_bug.cgi?id=646141
2011-04-11 10:42:22 -04:00
2d855ce5cf NetworkMenu: fix some bugs for status items
When more than one device exists, we need to reset the section title's
device to null, and in that case we must show nothing (neither the switch
nor the label, but an empty label is OK anyway). Also, we need to
update the device statusItem immediately when constructing it, as we
may not get any state-changed.

https://bugzilla.gnome.org/show_bug.cgi?id=646074
2011-04-11 10:38:00 -04:00
b2b685e46d NetworkMenu: fixup device descriptions
Fix some bugs in Util.fixupPCIDescription(), that caused all device
descriptions to be empty.

https://bugzilla.gnome.org/show_bug.cgi?id=646074
2011-04-11 10:38:00 -04:00
ef552846d1 network: fix typo in bluetooth code
https://bugzilla.gnome.org/show_bug.cgi?id=646968
2011-04-11 10:38:00 -04:00
c7dfd0894e NetworkMenu: fix handling WWAN devices
NMDeviceModem._createSection was not checking whether it should have
shown the connection list, resulting in status item shown even if
the device was in an invalid state.
Also, fix a logic error when creating the operatorItem and fix overriding
_clearSection protected method.

https://bugzilla.gnome.org/show_bug.cgi?id=646395
2011-04-11 10:38:00 -04:00
5b1a76aeff network: fix two warnings when removing a network device
NMApplet connects to each NMDevice's state-changed signal and stores
the signal handler id on the NMDevice itself. However, it was using
the same name as NMDevice itself was using to store the handler ID for
the underlying GObject's state-changed signal, thus overwriting it,
and resulting in *neither* signal handler getting removed if the
device went away. (This probably isn't a problem, since the device is
going away, but it causes a warning.)

Also, at least for WWAN devices, the device state changes to UNMANAGED
immediately before disappearing, but getStatusLabel() wasn't handling
that case and printed a warning instead. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=646708
2011-04-11 10:38:00 -04:00
529b6ca935 network: deal with recycling of closed active connections
If you restart NetworkManager, then the list of active connections
is emptied, then comes back with the same GObjects in it. If the
_primaryDevice field isn't cleared on the object, then we won't
know we need to set it back on the device, resulting in the active
device not showing up in the menu.

https://bugzilla.gnome.org/show_bug.cgi?id=646558
2011-04-11 10:38:00 -04:00
625a4c0766 NetworkMenu: destroy More... submenu when empty
Add a .length property to PopupMenuBase, and use it from the network
menu to destroy the menu when removing a network without rebuilding.

https://bugzilla.gnome.org/show_bug.cgi?id=645981
2011-04-11 10:38:00 -04:00
3c3ea2f575 NetworkMenu: fix updating the access point strength
A notify signal does not include the new value of the property in
its signature, so the handler was trying to compare a GParamSpec with
a number when updating. Fix it to always retrieve the value from the
object.

https://bugzilla.gnome.org/show_bug.cgi?id=646443
2011-04-11 10:38:00 -04:00
57a332bb08 telepathyClient: Fix JS warning triggered by undeclared variable
https://bugzilla.gnome.org/show_bug.cgi?id=646205
2011-04-08 20:32:56 +02:00
73ac98b193 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-04-08 10:09:07 +08:00
59e3cbb36b search-entry: Fix clicks on the clear icon
onTextChanged() called a non-existent method, fix that

https://bugzilla.gnome.org/show_bug.cgi?id=647098
2011-04-08 00:28:42 +02:00
fb019a7cbf AppDisplay: refresh the view after refreshing sections
ViewByCategories._removeAll clears the sections, but the filter passed
to view still expects them to exists. Therefore, refresh the view
after the section has been rebuilt and the All filter reapplied.

https://bugzilla.gnome.org/show_bug.cgi?id=645801
2011-04-07 17:51:52 +02:00
09607f6aa7 app-search-result: Fix launching on another workspace
dragActivateResult() called a non-existent method, fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=645990
2011-04-07 13:50:55 +02:00
1c4a33eb78 Bump version to 3.0.0.2
Update NEWS
2011-04-06 18:46:49 -04:00
b7513097ea extensionSystem: add missing import
https://bugzilla.gnome.org/show_bug.cgi?id=646333
2011-04-06 18:45:00 -04:00
a35677a9bf Updated Finnish translation. 2011-04-06 12:56:06 +03:00
89de3a81c6 Bump version to 3.0.0.1
Update NEWS
2011-04-05 16:09:51 -04:00
b9828bf5de StScrollbar: clean up properly when unmapped during scroll
If we're unmapped (or destroyed) during a scroll, we want to clean
up the changes we've made to Clutter's event handling, remove our
signal handler, and emit ::scroll-stop.

https://bugzilla.gnome.org/show_bug.cgi?id=646825
2011-04-05 12:10:13 -04:00
d6c3868a7c Bump version to 3.0.0 2011-04-04 17:29:04 -04:00
a73f02ac23 Add NEWS file with 3.0 contributors 2011-04-04 17:23:58 -04:00
7e9594456b Require and build against Mutter 3.0 2011-04-04 17:21:16 -04:00
d25418ba04 popup-sub-menu: Adjust scrollbar style
Slightly adjust the style, so that scrollbars in submenus look
slightly less disconnected from the scrolled content.

https://bugzilla.gnome.org/show_bug.cgi?id=646001
2011-04-04 15:54:26 -04:00
a7df1a3d77 popup-menu: Tweak submenu style
Tone down the background color and use an inset shadow to give the
subsection some depth.

Expander menu item is always highlighted when open.

https://bugzilla.gnome.org/show_bug.cgi?id=646001
2011-04-04 15:53:12 -04:00
50951d15ea popupMenu: make submenus scrollable if needed
Right now, the network menu will overflow the screen if More...
is selected with many access points. As a short-term workaround
for this, add a scrollbar for submenus of panel dropdown menus
if they would cause the toplevel menu to overflow the screen.

- Put the actors in a PopupSubMenu in a StScrollView so we get
  a scrollbar if the allocated space is smaller than the height
  of the menu. Expand animation is turned off in the scrolled case
  to avoid weirdness.
- When we pop up a panel menu, set a max-height style property
  on the panel menu to limit it to the height of the screen.
- Hack event handling while the scrollbar is dragged to make
  the scrollbar work properly.

https://bugzilla.gnome.org/show_bug.cgi?id=646001
2011-04-04 15:46:46 -04:00
30076884ae Updated Latvian translation. 2011-04-04 19:57:01 +03:00
1eff22a90b Updated Japanese translation 2011-04-04 23:17:08 +09:00
41bdbc203d Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-04-04 22:08:33 +08:00
7932585656 network: fix alignment of secure vs insecure wireless icons
Since the icon area is end-aligned, the signal strength icon for
insecure networks was ending up aligned with the lock icon for secure
networks. Fix that by always including a _secureIcon, but having it be
blank for the insecure networks.

https://bugzilla.gnome.org/show_bug.cgi?id=646121
2011-04-04 09:30:53 -04:00
68bf4e7b70 Updated Japanese translation 2011-04-04 22:28:24 +09:00
92f09a60f6 Add shell_get_file_contents_utf8_sync(), use it instead of gio temporarily
Adding correct annotations to Gio.File.load_contents revealed that gjs
doesn't actually support array+length combinations.  For 3.0 this would
be invasive to fix, so add a method to ShellGlobal which does what
we need.

https://bugzilla.gnome.org/show_bug.cgi?id=646333
2011-04-04 09:08:33 -04:00
d19f2bb6d2 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-04-04 20:55:10 +08:00
b06dce5bf8 Updated Japanese translation 2011-04-04 21:31:01 +09:00
82e2ab89c5 Fix expand animation for submenus
Figuring out the size of an unmapped actor is not completely
reliable because styles aren't fully assigned until an actor
is mapped. So show the submenu before computing the size we
want to tween to.

https://bugzilla.gnome.org/show_bug.cgi?id=645949
2011-04-04 08:23:37 -04:00
db198b183c New Bengali translation 2011-04-04 16:37:51 +06:00
90bab650e2 Update Czech translation 2011-04-04 04:19:53 +02:00
fa1cc556f9 Updated Dutch translation by Wouter Bolsterlee 2011-04-04 01:12:51 +02:00
69b23b0e48 [l10n]Fixes on Catalan translation 2011-04-03 23:19:44 +02:00
af69945e5b end-session-dialog: Show default icon if user icon is unset
If the user has not configured a user icon, the logout dialog will
display an empty rectangle. Show a default picture instead.

https://bugzilla.gnome.org/show_bug.cgi?id=646032
2011-04-03 22:48:37 +02:00
f36f7644c8 [l10n] Updated German translation, umlauts fixed 2011-04-03 21:08:58 +02:00
20f1457d15 NetworkStatus: ignore invalid and unsupported connection types
Some connection types (like wimax) are not supported by the menu, and
should be ignored instead of throwing exceptions. Also, NetworkManager
had a bug that sent connections with invalid settings. This should not
happen, but in case it does, we will not blow up, but just log a warning
and continue silently.

https://bugzilla.gnome.org/show_bug.cgi?id=646355
2011-04-03 14:24:58 +02:00
38bcd52065 NetworkMenu: keep the connection list visible when connecting...
When a device is connecting, we can continue showing available
connections and access points, as well as the active one with the dot.
(Hiding was a remnant of when the device status was on a different
menu item than the title)

https://bugzilla.gnome.org/show_bug.cgi?id=646381
2011-04-03 14:22:27 +02:00
38219fec99 Updated Italian translation 2011-04-03 10:35:14 +02:00
6c3300bc2f network: fix logic bug in checking whether to activate or deactive
A cosmetic change recommended in review of the patch to fix the
VPN Connections switch ended up introducing a logic error that
made the switch not work properly. Fix.

https://bugzilla.gnome.org/show_bug.cgi?id=646380
2011-04-02 21:58:45 -04:00
d1a110d4ca NetworkMenu: fix VPN connection state
It was always reporting true, even if disconnected. At the same time,
add a signal that is emitted when state changes and update the UI
accordingly.
In the future (with another libnm-glib API break) we should use the
NMVPNConnection object to track the connection state, so that we can
show if we're connecting or we need authentication.

https://bugzilla.gnome.org/show_bug.cgi?id=646380
2011-04-02 20:40:12 +02:00
5b61485143 NetworkMenu: fix parameters to _findConnection
NMDevice._findConnection expects an uuid as parameter, but
checkConnection was passing a NMConnection object. This caused
exists to be always false, thus the connection was added again every
time the 'updated' signal was emitted.

https://bugzilla.gnome.org/show_bug.cgi?id=645702
2011-04-02 20:35:46 +02:00
6b95a357eb gnome-shell.css: fix multiple calendar layout issues
Specifying absolute pixel widths for fields breaks under both font
scaling and translation.

Change all px lengths in the calendar to corresponding pt values, to
fix the layout under larger/smaller font sizes.

Change all "width" specifications to "min-width", for languages with
longer translations. This completely breaks the layout if any field
exceeds the min-width of its column, but that is preferable to
ellipsizing. Needs to be redone using St.Table or the like for 3.0.1.

Also add padding to the right of the calendar popup to match the
padding on the left, since the lack of it becomes more obvious in
layouts where the actual width exceeds the minimum width.

https://bugzilla.gnome.org/show_bug.cgi?id=645693
2011-04-02 07:31:55 -04:00
60bdc726ce Updated Korean translation 2011-04-02 19:58:17 +09:00
429f809b71 search-display: Fix getDragActorSource()/getDragActor()
The 'icon' property in search results' meta info has been replaced
by a 'createIcon' property, adjust to this change.

https://bugzilla.gnome.org/show_bug.cgi?id=645990
2011-04-02 11:13:45 +02:00
9396d736f2 notificationDaemon: only ignore 'chat' and 'presence' notifications from Empathy (#645932) 2011-04-02 00:05:10 +02:00
cc9b812466 Updated Lithuanian translation. 2011-04-01 22:30:15 +02:00
5b0f2dc0cf [jhbuild] Clutter moved to git.gnome.org
Use this new git repository.
2011-04-01 17:21:52 +02:00
7ffea1606d [jhbuild] Build libxklavier 5.1 from tarball
We had to get it from CVS waiting for 5.1 to be released,
but now we can use the same tarball as the GNOME moduleset.

Stop installing CVS since libxklavier was the only module using it.

https://bugzilla.gnome.org/show_bug.cgi?id=646416
2011-04-01 15:38:30 +02:00
342bc1e72d [jhbuild] glib-networking depends on gsettings-desktop-schemas
This missing dependency is only noticeable when you remove the
whole $prefix and build everything from scratch, since schemas
are already present in existing installs.

https://bugzilla.gnome.org/show_bug.cgi?id=646416
2011-04-01 15:38:30 +02:00
0127eb5892 Updated Gujarati Translations 2011-04-01 17:23:55 +05:30
39023269d6 Updated Hungarian translation 2011-04-01 13:44:58 +02:00
35e3cd97fe hindi updated 2011-04-01 14:52:29 +05:30
a63a171ec3 Updated Norwegian bokmål translation 2011-04-01 09:45:14 +02:00
7f1763f32f Updated Basque language 2011-04-01 09:43:36 +02:00
2d6326815c Added Basque language 2011-04-01 09:27:53 +02:00
ee4c8cca8c Updated Tamil translation 2011-04-01 12:17:10 +05:30
2104e0f411 build: Add gconf dependency to libgweather 2011-03-31 20:04:33 +02:00
84e69f57ea Updated Serbian translation 2011-03-31 11:07:58 +02:00
aba43125f3 [l10n] Updated Estonian translation 2011-03-31 09:37:56 +03:00
de5fc58fcb Updated Danish translation 2011-03-30 22:40:47 +02:00
4831dde3fb Updated translation for Afrikaans (af) 2011-03-30 19:10:32 +02:00
b5cbfc5e7a Updated British English translation 2011-03-30 14:56:02 +01:00
1124d164ec Updated Japanese translation. 2011-03-30 21:49:55 +09:00
9d9391bd95 Updated Portuguese translation 2011-03-29 23:53:24 +01:00
0121d74b92 Update translation for Afrikaans (af) 2011-03-29 23:41:13 +02:00
f81af32963 Update Simplified Chinese translation. 2011-03-30 00:38:46 +08:00
152 changed files with 26840 additions and 9717 deletions

7
.gitignore vendored
View File

@ -3,11 +3,11 @@
*.o *.o
.deps .deps
.libs .libs
ABOUT-NLS
ChangeLog ChangeLog
INSTALL INSTALL
Makefile Makefile
Makefile.in Makefile.in
NEWS
aclocal.m4 aclocal.m4
autom4te.cache autom4te.cache
config.h config.h
@ -30,8 +30,13 @@ m4/
omf.make omf.make
po/*.gmo po/*.gmo
po/gnome-shell.pot po/gnome-shell.pot
po/*.header
po/*.sed
po/*.sin
po/Makefile.in.in po/Makefile.in.in
po/Makevars.template
po/POTFILES po/POTFILES
po/Rules-quot
po/stamp-it po/stamp-it
scripts/launcher.pyc scripts/launcher.pyc
src/*.gir src/*.gir

View File

@ -3,5 +3,5 @@ E-mail: otaylor@redhat.com
Userid: otaylor Userid: otaylor
Colin Walters Colin Walters
E-mail: walters@redhat.com E-mail: walters@verbum.org
Userid: walters Userid: walters

263
NEWS Normal file
View File

@ -0,0 +1,263 @@
3.1.2
=====
* Fix problem with "user theme extension" breaking the CSS for other
extensions [Giovanni; #650971]
* Telepathy IM framework integration
- Switch to using telepathy-glib rather than talking to
Telepathy via D-Bus [Guillaume, Jasper; #645585, #649633, #651138, #651227]
- Acknowledge messages when the user clicks on them [Guillaume, #647893]
- Fix problem with telepathy icon blinking for incoming messages
even though the user has been notified of them [Guillaume; #643594]
* Networking
- keep wirelesss networks in predictable order [Giovanni; #646580, #652313]
- Show unmanaged devices in the menu [Giovanni; #646946]
- Fix overflow when too many VPN connections [Giovanni; #651602]
* Bluetooth
- Show "hardware disabled" when disabled by rfkill [Giovanni; #648048]
- Fix bug updating status of devices [Giovanni; #647565]
* LookingGlass console:
- Add a "Memory" tab [Colin; #650692]
- Make escape work from any page [Dan Winship; #647303]
- Provide a way to refer to panel items as, e.g.,
Main.panel._activities [Dan Winship; #646915]
* User menu
- Fix problem with suspend menu option locking the screen even when the user
disabled that. [Florian; #652327]
- Hide "power off..." option if shutdown is disabled via PolicyKit
[Florian; #652038]
* Track changes to WM_CLASS (fixes problems with LibreOffice tracking)
[Colin; #649315]
* Remove app tracking workarounds for Firefox and LibreOffice [Colin; #651015]
* Use upstream gettext autoconfigury rather than glib version [Javier; #631576]
* Show messages in the message tray when an application is fullscreen
[Dan Winship; #608667]
* Don't autohide the workspace pager if there is more than one workspace
[Florian; #652714, #653078, #653142]
* Don't always slide out the workspace pager at drag begin [Florian; #652730]
* Only offer to remove a favorite app when dragging it's icon [Owen; #642895]
* Allow dropping an icon anywhere on a workspace [Adel; #652079]
* st-scroll-view: Make the fade effect and offset themable [Jasper; #651813]
* Obey the user's preference when running an application in a terminal
from the run dialog [Florian; #648422]
* Consistently exit overview when launching external applications
[Colin; #653095]
* Adapt to changes in GJS for how GObject APIs are bound
[Alex, Colin, Florian, Jasper, Marc-Antoine; #649981, #652597]
* Fix problems with scrolling in overflow for alt-Tab switcher
[Dan Winship, Adel; #647807]
* Mark relationships between labels and actors for accessibility [Alejandro]
* Add org.gnome.shell.enabled-extensions complementing disabled-extensions
GSetting [Tassilo; #651088]
* Visual tweaks [Jakub, Jasper; #646261, #652715]
* Switch to building against clutter-1.7 with independent Cogl [Adel; #653397]
* Code cleanups [Colin, Dan Winship, Florian; #633620, #645031, #648755, #648758,
#648760, #649203, #649517, #650317, #652730]
* Memory leak fixes [Colin, Maxim; #649508, #650934]
* Build Fixes [Colin, Dan Winship, Florian, Ionut, Morten, Owen, Sean; #647395,
#648006, #650869, #653199, #653275
* Miscellaneous bug fixes [Adam, Adel, Dan Williams, Dan Winship, Florian,
Ionut, Jasper, Maxim, Ray; #620105, #639459, #641570, #642793, #643513,
#645848, #646919, #647186, #648305, #648410, #648562, #648894, #649001,
#645990, #647893, #647907, #651012, #651086, #651606, #651569, #651866,
#652388, #653511]
Contributors:
Ionut Biru, Giovanni Campagna, Guillaume Desmottes, Adam Dingle,
Maxim Ermilov, Adel Gadllah, Tassilo Horn, Javier Jardón, Jonny Lamb,
Alexander Larsson, Rui Matos, Morten Mjelva, Florian Müllner,
Marc-Antoine Perennou, Alejandro Piñeiro, Jasper St. Pierre, Jakub Steiner,
Ray Strode, Owen Taylor, Colin Walters, Dan Williams, Sean Wilson, Dan Winship
Translations:
Daniel Martinez Cucalon [ar], Ihar Hrachyshka [be], Carles Ferrando,
Gil Forcada, Sílvia Miranda [ca], Kristjan Schmidt [eo], Jorge González,
Daniel Mustieles [es], Seán de Búrca [ga], Fran Diéguez [gl],
Yaron Shahrabani [he], Kjartan Maraas [nb], Misha Shnurapet,
Yuri Myasoedov [ru], Daniel Nylander [se], Peter Mráz [sk],
Matej Urbančič [sl], Krishnababu Krothapalli [te], Daniel Korostil [uk],
Aron Xu [zh_CN]
3.0.2
=====
* Network Menu [Dan Williams]
- Fix connecting to WPA2 Enterprise access points
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171
- Show the mobile broadband wizard when selecting 3G network
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=649318
- Miscellaneous bug fixes
648648, 650124
* Fix duplicate icons in the application browser [Owen]
https://bugzilla.gnome.org/show_bug.cgi?id=648739
* Make clicking anywhere on the volume icon slider work [Giovanni]
https://bugzilla.gnome.org/show_bug.cgi?id=646660
* Fix a case where activating and clicking the hot corner
at the same time could result in immediately leaving the
overview [Rui]
https://bugzilla.gnome.org/show_bug.cgi?id=649427
* Fix a case where applications became misordered in Alt-Tab [Jasper]
https://bugzilla.gnome.org/show_bug.cgi?id=643302
* Fix a bug where messages you send could show up in
notifications as if someone else sent them [Jonny]
https://bugzilla.gnome.org/show_bug.cgi?id=650219
* Memory leak fixes [Colin, Maxim]
642652, 649508, 649497
* Miscellaneous minor bug fixes [Adel, Christopher, Jasper]
649596, 648765, 648983, 649632
Contributors:
Christopher Aillon, Giovanni Campagna, Maxim Ermilov,
Adel Gadllah, Jonny Lamb, Rui Matos, Jasper St. Pierre,
Owen Taylor, Colin Walters, Dan Williams
Translations:
Arash Mousavi [fa], Seán de Búrca [ga], Timo Jyrinki [fi],
Sigurd Gartmann [nb], Daniel Nylander [se], Peter Mráz [sl],
Abduxukur Abdurixit [ug], Nguyễn Thái Ngọc Duy [vi]
3.0.1
=====
* Network menu
- Fix problems updating the menu for mobile broadband devices [Giovanni]
https://bugzilla.gnome.org/show_bug.cgi?id=646395
- Fix missing device descriptions with multiple devices of the
same type [Giovanni]
https://bugzilla.gnome.org/show_bug.cgi?id=646074
- Label ad-hoc neworks with an appropriate icon [Dan]
https://bugzilla.gnome.org/show_bug.cgi?id=646141
- Fix displaying some devices states as "invalid" [Dan]
https://bugzilla.gnome.org/show_bug.cgi?id=646946
- Fix problems with access points that don't report a SSID [Giovanni]
https://bugzilla.gnome.org/show_bug.cgi?id=647040
- Miscellaneous minor bug fixes [Dan, Giovanni, Owen]
645981, 646558, 646443, 646708, 646968
* Application menu and icon
- Fix bug where application menu icon was missing at GNOME Shell
startup. [Florian]
https://bugzilla.gnome.org/show_bug.cgi?id=644122
- Fix missing application menu for dialog windows [Colin]
https://bugzilla.gnome.org/show_bug.cgi?id=647082
- When launching an application through an alternate launcher
(like for a System Settings pane), association the windows with
the application, not the launcher. [Colin]
https://bugzilla.gnome.org/show_bug.cgi?id=646689
* Activities overview
- Load the applications view incrementally to avoid potentially freezing
for multiple seconds [Colin]
https://bugzilla.gnome.org/show_bug.cgi?id=647778
- Fix bug where package installation while the overview
was up could result in a corrupted application display. [Giovanni]
https://bugzilla.gnome.org/show_bug.cgi?id=645801
- Fix dragging from the search results to launch apps and docs [Florian]
https://bugzilla.gnome.org/show_bug.cgi?id=645990
- Fix flickering of selection when searching in the overview [Florian]
https://bugzilla.gnome.org/show_bug.cgi?id=646019
- Fix bug when typing into the search box when text was already
selected [Nohemi]
https://bugzilla.gnome.org/show_bug.cgi?id=636341
* Fix layout of notifications for right-to-left languages [Florian]
https://bugzilla.gnome.org/show_bug.cgi?id=646921
* Remove a confusing special case where Alt-Tab sometimes switched
to a different window of the same application rather than to
a different application. [Rui]
https://bugzilla.gnome.org/show_bug.cgi?id=648132
* Fix a crash that could happen when a window was opened on a
workspace that was immediately removed [Dan]
https://bugzilla.gnome.org/show_bug.cgi?id=648132
* Fix keyboard navigation in logout/reboot dialogs [Dan]
https://bugzilla.gnome.org/show_bug.cgi?id=646740
* Fix missing inspector icon in Looking Glass console [Dan]
* Miscellaneous minor bug fixes [Adel, Colin, Dan, Florian, Nohemi]
645648, 646205, 646257, 646855, 647098, 646730
Contributors:
Giovanni Campagna, Nohemi Fernandez, Adel Gadllah, Rui Matos, Florian Müllner,
Owen Taylor, Colin Walters, Dan Winship
Translations:
Hendrik Richter [de], Jorge González [es], Arash Mousavi [fa],
Fran Diéguez [gl], Jiro Matsuzawa [ja], Piotr Drąg [pl], Daniel Nylander [sv],
Sira Nokyoongtong [th], Muhammet Kara [tr], Nguyễn Thái Ngọc Duy [vi],
Aron Xu [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW]
3.0.0.2
=======
* Fix missing import that was preventing extensions from loading.
[Maxim Ermilov]
https://bugzilla.gnome.org/show_bug.cgi?id=646333
Translations:
Timo Jyrinki [fi]
3.0.0.1
=======
* Fix problem with stuck event handling if network menu pops down while
user is using the scrollbar. [Owen Taylor]
https://bugzilla.gnome.org/show_bug.cgi?id=646825
Contributors to GNOME Shell 3.0
===============================
Code:
Josh Adams, Kiyoshi Aman, Nuno Araujo, Emmanuele Bassi, Dirk-Jan C. Binnema,
Wouter Bolsterlee, Raphael Bosshard, Milan Bouchet-Valat, Christina Boumpouka,
Mathieu Bridon, Alban Browaeys, Phil Bull, Micro Cai, Giovanni Campagna,
Cosimo Cecchi, Tor-björn Claesson, Matthias Clasen, Jason D. Clinton,
Frederic Crozat, Guillaume Desmottes, Sander Dijkhuis, Neha Doijode,
Maxim Ermilov, Diego Escalante Urrelo, Luca Ferretti, Steve Frécinaux,
Takao Fujiwara, Adel Gadllah, Vadim Girlin, Nick Glynn, Guido Günther,
Leon Handreke, Lex Hider, Richard Hughes, Javier Jardón, Abderrahim Kitouni,
Andre Klapper, Alexander Larsson, Nickolas Lloyd, Ryan Lortie, Kjartan Maraas,
Koop Mast, Rui Matos, Jonathan Matthew, William Jon McCann, Morten Mjelva,
Federico Mena Quintero, Florian Müllner, Jon Nettleton, Hellyna Ng,
Discardi Nicola, Carlos Martín Nieto, Bastien Nocera, Bill Nottingham,
Matt Novenstern, Marc-Antoine Perennou, Neil Perry, Frédéric Péters,
Alejandro Piñeiro, Siegfried-Angel Gevatter Pujals, "res", Neil Roberts,
"Sardem FF7", Florian Scandella, Joseph Scheuhammer, Christian Schramm,
Gustavo Noronha Silva, Jasper St. Pierre, Eric Springer, Jakub Steiner,
Jonathan Strander, Ray Strode, Owen Taylor, Rico Tzschichholz,
Sergey V. Udaltsov, Daiki Ueno, Vincent Untz, Marcelo Jorge Vieira,
Mads Villadsen, Colin Walters, Dan Winship, William Wolf, Thomas Wood,
Pierre Yager, David Zeuthen, Marina Zhurakhinskaya
Design:
Allan Day, William Jon McCann, Jeremy Perry, Jakub Steiner
2008 Boston GNOME design hackfest participants (especially Neil J. Patel
for turning the resulting sketches into our first mockups.)
Everybody on irc.gnome.org:#gnome-design
Translations:
Friedel Wolff (af), Khaled Hosny (ar), Ivaylo Valkov (bg), Jamil Ahmed (bn)
Runa Bhattacharjee (bn_IN), Gil Forcada, Siegfried-Angel Gevatter Pujals,
Jordi Serratosa (ca), Andre Klapper, Petr Kovar (cs), Kenneth Nielsen,
Kris Thomsen (da), Mario Blättermann, Hendrik Brandt, Christian Kirbach,
Hendrik Richter, Wolfgang Stöggl (de), Michael Kotsarinis, Kostas Papadimas,
Jennie Petoumenou, Sterios Prosiniklis, Fotis Tsamis, Simos Xenitellis (el),
Bruce Cowan, Philip Withnall (en_GB), Jorge Gonzalez, Daniel Mustieles (es),
Mattias Põldaru, Ivar Smolin (et), Inaki Larranaga Murgoitio (eu),
Mahyar Moghimi (fa), Timo Jyrinki (fi), Cyril Arnaud, Bruno Brouard,
Pablo Martin-Gomez, Claude Paroz, Frédéric Peters (fr), Seán de Búrca (ga)
Francisco Diéguez, Antón Méixome (gl), Sweta Kothari (gu), Liel Fridman,
Yaron Shahrabani (he), Rajesh Ranjan (hi), Gabor Kelemen (hu), Milo Casagrande,
Luca Ferretti (it), Dirgita, Andika Triwidada (id), Takayuki KUSANO,
Takayoshi OKANO, Kiyotaka NISHIBORI, Futoshi NISHIO (ja), Shankar Prasad (kn),
Young-Ho Cha, Changwoo Ryu (ko), Žygimantas Beručka, Gintautas Miliauskas (lt),
Rudolfs Mazurs (lv), Sandeep Shedmake (mr), Kjartan Maraas (nb),
Wouter Bolsterlee, Sander Dijkhuis, Reinout van Schouwen (nl),
Torstein Winterseth (nn), A S Alam (pa), Tomasz Dominikowski, Piotr Drąg (pl),
Duarte Loreto (pt), Felipe Borges, Rodrigo Padula de Oliveira,
Rodrigo L. M. Flores, Amanda Magalhães, Og B. Maciel, Gabriel F. Vilar,
Jonh Wendell (pt_BR), Lucian Adrian Grijincu, Daniel Șerbănescu (ro),
Sergey V. Kovylov, Andrey Korzinev, Yuri Myasoedov, Marina Zhurakhinskaya (ru),
Daniel Nylander (se), Matej Urbančič, Andrej Žnidaršič (sl),
Miloš Popović (sr, sr@latin), Miroslav Nikolić (sr), Tirumurti Vasudevan (ta),
Sira Nokyoongtong (th), Baris Cicek (tr), Abduxukur Abdurixit,
Gheyret T. Kenji (ug), Maxim V. Dziumanenko, Daniel Korostil (uk),
Nguyễn Thái Ngọc Duy (vi), Jessica Ban, 'jiero', Wei Li, YunQiang Su, Ray Wang,
Aron Xu (zh_CN), Chao-Hsiung Liao (zh_HK, zh_TW)

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[2.91.93],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.1.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@ -23,12 +23,16 @@ AM_PROG_CC_C_O
LT_PREREQ([2.2.6]) LT_PREREQ([2.2.6])
LT_INIT([disable-static]) LT_INIT([disable-static])
# i18n
IT_PROG_INTLTOOL([0.40])
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.17])
GETTEXT_PACKAGE=gnome-shell GETTEXT_PACKAGE=gnome-shell
AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
[The prefix for our gettext translation domains.]) [The prefix for our gettext translation domains.])
IT_PROG_INTLTOOL(0.26)
AM_GLIB_GNU_GETTEXT
PKG_PROG_PKG_CONFIG([0.22]) PKG_PROG_PKG_CONFIG([0.22])
@ -63,16 +67,16 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.5.15 CLUTTER_MIN_VERSION=1.5.15
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=0.7.11 GJS_MIN_VERSION=0.7.11
MUTTER_MIN_VERSION=2.91.93 MUTTER_MIN_VERSION=3.0.0
GTK_MIN_VERSION=3.0.0 GTK_MIN_VERSION=3.0.0
GIO_MIN_VERSION=2.25.9 GIO_MIN_VERSION=2.25.9
LIBECAL_MIN_VERSION=2.32.0 LIBECAL_MIN_VERSION=2.32.0
LIBEDATASERVER_MIN_VERSION=1.2.0 LIBEDATASERVER_MIN_VERSION=1.2.0
LIBEDATASERVERUI2_MIN_VERSION=1.2.0 LIBEDATASERVERUI_MIN_VERSION=2.91.6
LIBEDATASERVERUI3_MIN_VERSION=2.91.6 TELEPATHY_GLIB_MIN_VERSION=0.15.0
TELEPATHY_GLIB_MIN_VERSION=0.13.12
TELEPATHY_LOGGER_MIN_VERSION=0.2.4 TELEPATHY_LOGGER_MIN_VERSION=0.2.4
POLKIT_MIN_VERSION=0.100 POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
# Collect more than 20 libraries for a prize! # Collect more than 20 libraries for a prize!
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
@ -84,7 +88,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
gdk-x11-3.0 gdk-x11-3.0
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
libstartup-notification-1.0 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
libcanberra libcanberra
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
@ -100,7 +104,7 @@ AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION]) GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR" JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
# NM is the only typelib we use that we don't jhbuild # NM is the only typelib we use that we don't jhbuild
PKG_CHECK_EXISTS([libnm-glib >= 0.8.995], PKG_CHECK_EXISTS([libnm-glib >= 0.8.999],
[NM_TYPELIBDIR=`$PKG_CONFIG --variable=libdir libnm-glib`/girepository-1.0 [NM_TYPELIBDIR=`$PKG_CONFIG --variable=libdir libnm-glib`/girepository-1.0
if test "$INTROSPECTION_TYPELIBDIR" != "$NM_TYPELIBDIR"; then if test "$INTROSPECTION_TYPELIBDIR" != "$NM_TYPELIBDIR"; then
JHBUILD_TYPELIBDIR="$JHBUILD_TYPELIBDIR:$NM_TYPELIBDIR" JHBUILD_TYPELIBDIR="$JHBUILD_TYPELIBDIR:$NM_TYPELIBDIR"
@ -111,22 +115,20 @@ saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS saved_LIBS=$LIBS
CFLAGS=$GNOME_SHELL_CFLAGS CFLAGS=$GNOME_SHELL_CFLAGS
LIBS=$GNOME_SHELL_LIBS LIBS=$GNOME_SHELL_LIBS
# sn_startup_sequence_get_application_id, we can replace with a version check later AC_CHECK_FUNCS(JS_NewGlobalObject XFixesCreatePointerBarrier)
AC_CHECK_FUNCS(JS_NewGlobalObject sn_startup_sequence_get_application_id XFixesCreatePointerBarrier)
CFLAGS=$saved_CFLAGS CFLAGS=$saved_CFLAGS
LIBS=$saved_LIBS LIBS=$saved_LIBS
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 gnome-desktop-3.0 >= 2.90.0 x11) PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 gnome-desktop-3.0 >= 2.90.0 x11)
PKG_CHECK_MODULES(GDMUSER, dbus-glib-1 gtk+-3.0) PKG_CHECK_MODULES(GDMUSER, dbus-glib-1 gtk+-3.0)
PKG_CHECK_MODULES(TRAY, gtk+-3.0) PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0) PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(JS_TEST, clutter-x11-1.0 gjs-1.0 gobject-introspection-1.0 gtk+-3.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7) PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
AC_MSG_CHECKING([for bluetooth support]) AC_MSG_CHECKING([for bluetooth support])
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 2.90.0], PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=libdir gnome-bluetooth-1.0`/gnome-bluetooth [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
BLUETOOTH_LIBS="-L'$BLUETOOTH_DIR' -lgnome-bluetooth-applet" BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
AC_SUBST([BLUETOOTH_LIBS],["$BLUETOOTH_LIBS"]) AC_SUBST([BLUETOOTH_LIBS],["$BLUETOOTH_LIBS"])
AC_DEFINE_UNQUOTED([BLUETOOTH_DIR],["$BLUETOOTH_DIR"],[Path to installed GnomeBluetooth typelib and library]) AC_DEFINE_UNQUOTED([BLUETOOTH_DIR],["$BLUETOOTH_DIR"],[Path to installed GnomeBluetooth typelib and library])
AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet]) AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
@ -136,13 +138,7 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 2.90.0],
AC_SUBST([HAVE_BLUETOOTH],[0]) AC_SUBST([HAVE_BLUETOOTH],[0])
AC_MSG_RESULT([no])]) AC_MSG_RESULT([no])])
# Default to libedataserverui-3.0, but allow falling back to 1.2 PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
PKG_CHECK_EXISTS(libedataserverui-3.0,
[EDS_API=3.0
LIBEDATASERVERUI_MIN_VERSION=$LIBEDATASERVERUI3_MIN_VERSION],
[EDS_API=1.2
LIBEDATASERVERUI_MIN_VERSION=$LIBEDATASERVERUI2_MIN_VERSION])
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-$EDS_API >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
AC_SUBST(CALENDAR_SERVER_CFLAGS) AC_SUBST(CALENDAR_SERVER_CFLAGS)
AC_SUBST(CALENDAR_SERVER_LIBS) AC_SUBST(CALENDAR_SERVER_LIBS)

View File

@ -30,26 +30,14 @@ dist_theme_DATA = \
theme/filter-selected-ltr.svg \ theme/filter-selected-ltr.svg \
theme/filter-selected-rtl.svg \ theme/filter-selected-rtl.svg \
theme/gnome-shell.css \ theme/gnome-shell.css \
theme/mosaic-view-active.svg \
theme/mosaic-view.svg \
theme/move-window-on-new.svg \
theme/panel-border.svg \ theme/panel-border.svg \
theme/panel-button-border.svg \ theme/panel-button-border.svg \
theme/panel-button-highlight-narrow.svg \ theme/panel-button-highlight-narrow.svg \
theme/panel-button-highlight-wide.svg \ theme/panel-button-highlight-wide.svg \
theme/process-working.svg \ theme/process-working.svg \
theme/running-indicator.svg \ theme/running-indicator.svg \
theme/scroll-button-down-hover.png \
theme/scroll-button-down.png \
theme/scroll-button-up-hover.png \
theme/scroll-button-up.png \
theme/scroll-hhandle.svg \ theme/scroll-hhandle.svg \
theme/scroll-vhandle.svg \ theme/scroll-vhandle.svg \
theme/section-more.svg \
theme/section-more-open.svg \
theme/separator-white.png \
theme/single-view-active.svg \
theme/single-view.svg \
theme/source-button-border.svg \ theme/source-button-border.svg \
theme/toggle-off-us.svg \ theme/toggle-off-us.svg \
theme/toggle-off-intl.svg \ theme/toggle-off-intl.svg \

View File

@ -15,8 +15,18 @@
<default>[]</default> <default>[]</default>
<_summary>Uuids of extensions to disable</_summary> <_summary>Uuids of extensions to disable</_summary>
<_description> <_description>
GNOME Shell extensions have a uuid property; GNOME Shell extensions have a uuid property; this key lists extensions
this key lists extensions which should not be loaded. which should not be loaded. This setting overrides enabled-extensions
for extensions that appear in both lists.
</_description>
</key>
<key name="enabled-extensions" type="as">
<default>[]</default>
<_summary>Uuids of extensions to enable</_summary>
<_description>
GNOME Shell extensions have a uuid property; this key lists extensions
which should be loaded. disabled-extensions overrides this setting for
extensions that appear in both lists.
</_description> </_description>
</key> </key>
<key name="enable-app-monitoring" type="b"> <key name="enable-app-monitoring" type="b">

View File

@ -39,6 +39,11 @@ StScrollBar
padding: 0px; padding: 0px;
} }
StScrollView.vfade
{
-st-vfade-offset: 68px;
}
StScrollView StScrollBar StScrollView StScrollBar
{ {
min-width: 16px; min-width: 16px;
@ -102,8 +107,36 @@ StTooltip StLabel {
min-width: 200px; min-width: 200px;
} }
.popup-submenu-menu-item:open {
background-color: #4c4c4c;
}
.popup-sub-menu { .popup-sub-menu {
background-color: #606060; background-gradient-start: rgba(80,80,80,0.3);
background-gradient-end: rgba(80,80,80,0.7);
background-gradient-direction: vertical;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
}
.popup-sub-menu .popup-menu-item:ltr {
padding-right: 0em;
}
.popup-sub-menu .popup-menu-item:rtl {
padding-left: 0em;
}
.popup-sub-menu StScrollBar {
padding: 4px;
}
.popup-sub-menu StScrollBar StBin#trough {
border-width: 0px;
}
.popup-sub-menu StScrollBar StBin#vhandle {
background-color: #4c4c4c;
border-width: 0px;
} }
/* The remaining popup-menu sizing is all done in ems, so that if you /* The remaining popup-menu sizing is all done in ems, so that if you
@ -154,6 +187,7 @@ StTooltip StLabel {
} }
.popup-inactive-menu-item { .popup-inactive-menu-item {
font-weight: normal;
color: #999; color: #999;
} }
@ -765,7 +799,7 @@ StTooltip StLabel {
#calendarArea { #calendarArea {
/* this is the width of the entire popup */ /* this is the width of the entire popup */
width: 600px; min-width: 600px;
} }
.calendar-vertical-separator { .calendar-vertical-separator {
@ -903,11 +937,13 @@ StTooltip StLabel {
} }
.events-header-vbox { .events-header-vbox {
spacing: 8px; spacing: 6pt;
padding-right: 1.75em;
} }
.events-header { .events-header-vbox:rtl {
height: 40px; padding-right: 0em;
padding-left: 1.75em;
} }
.events-header-hbox { .events-header-hbox {
@ -952,17 +988,17 @@ StTooltip StLabel {
} }
.events-day-name-box { .events-day-name-box {
width: 20px; min-width: 15pt;
} }
.events-time-box { .events-time-box {
width: 70px; min-width: 53pt;
padding-right: 8px; padding-right: 6pt;
} }
.events-time-box:rtl { .events-time-box:rtl {
padding-right: 0px; padding-right: 0px;
padding-left: 8px; padding-left: 6pt;
} }
.events-event-box { .events-event-box {

View File

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
id="svg6503"
version="1.1"
inkscape:version="0.47pre4 r22446"
sodipodi:docname="mosaic-view-active.svg">
<defs
id="defs6505">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 16 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="32 : 16 : 1"
inkscape:persp3d-origin="16 : 10.666667 : 1"
id="perspective6511" />
<inkscape:perspective
id="perspective6494"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="-15.97056"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata6508">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-16)">
<g
style="display:inline;fill:#cbcbcb;fill-opacity:1"
transform="translate(-449.85476,-685.85869)"
id="g5306">
<rect
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none"
id="rect5308"
width="11"
height="7"
x="450.5"
y="710.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
id="rect5310"
width="11"
height="7"
x="462.5"
y="702.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999976000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
id="rect5312"
width="11"
height="7"
x="450.5"
y="702.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
id="rect5314"
width="11"
height="7"
x="462.5"
y="710.5"
rx="0.99999958"
ry="1" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
id="svg6503"
version="1.1"
inkscape:version="0.47pre4 r22446"
sodipodi:docname="New document 19">
<defs
id="defs6505">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 16 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="32 : 16 : 1"
inkscape:persp3d-origin="16 : 10.666667 : 1"
id="perspective6511" />
<inkscape:perspective
id="perspective6494"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata6508">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-16)">
<g
style="display:inline"
transform="translate(-449.85476,-685.85869)"
id="g5306">
<rect
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none"
id="rect5308"
width="11"
height="7"
x="450.5"
y="710.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
id="rect5310"
width="11"
height="7"
x="462.5"
y="702.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
id="rect5312"
width="11"
height="7"
x="450.5"
y="702.5"
rx="0.99999958"
ry="1" />
<rect
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
id="rect5314"
width="11"
height="7"
x="462.5"
y="710.5"
rx="0.99999958"
ry="1" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="98"
height="98"
id="svg6375"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="add-workspace.svg">
<defs
id="defs6377">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 16 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="32 : 16 : 1"
inkscape:persp3d-origin="16 : 10.666667 : 1"
id="perspective6383" />
<inkscape:perspective
id="perspective6366"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.9590209"
inkscape:cx="56.650687"
inkscape:cy="20.635343"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata6380">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,66)">
<g
id="g2824"
transform="matrix(11.568551,0,0,11.698271,-78.828159,-304.81518)">
<path
style="fill:none;stroke:#666666;stroke-width:1.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.07363,21.36834 0,6.43903"
id="path5322" />
<path
style="fill:none;stroke:#666666;stroke-width:1.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 14.29314,24.58786 -6.43902,0"
id="path5324" />
</g>
<path
style="fill:#000000;fill-opacity:0.98823529"
d="m 48.239516,97.908047 c -0.41677,-0.05102 -1.269253,-0.222408 -1.894408,-0.380859 -4.088493,-1.036262 -7.520781,-4.753234 -8.330163,-9.021094 -0.154947,-0.817026 -0.257819,-6.68112 -0.257819,-14.696556 l 0,-13.337088 -13.829177,-0.08909 C 10.802042,60.298796 10.026884,60.268266 8.6851548,59.783022 3.6288503,57.954375 0.62673331,53.828648 0.62673331,48.708554 c 0,-5.625522 4.25936019,-10.425065 9.97721469,-11.242548 0.987903,-0.141242 7.368912,-0.254994 14.460646,-0.257791 l 12.692532,-0.005 0,-13.586668 c 0,-14.6441583 0.03287,-15.0698926 1.364686,-17.6753047 2.185477,-4.2754229 6.938193,-6.75739913 11.687647,-6.10355607 3.382776,0.46569661 6.737962,2.72496967 8.414081,5.66577137 1.480816,2.5981315 1.519067,3.0522448 1.519067,18.0333334 l 0,13.666424 12.692533,0.005 c 7.091733,0.0028 13.472742,0.116549 14.460646,0.257791 6.395303,0.914337 10.804785,6.623716 9.941157,12.871766 -0.698243,5.051565 -4.792685,9.104635 -9.941157,9.840713 -0.987904,0.141242 -7.368913,0.254995 -14.460646,0.257791 l -12.692533,0.005 0,13.801945 c 0,13.031417 -0.02798,13.895893 -0.501177,15.484801 -1.526902,5.127058 -6.919246,8.802262 -12.001914,8.18002 z"
id="path2828"
transform="translate(0,-66)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -2,24 +2,62 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="119.97824" width="119.97824"
height="119.97824" height="119.97824"
id="svg7355" id="svg7355"
version="1.1"> version="1.1"
inkscape:version="0.48.1 r9760"
sodipodi:docname="running-indicator.svg">
<metadata
id="metadata4175">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#2c1cff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1141"
id="namedview4173"
showgrid="false"
inkscape:zoom="8.1348081"
inkscape:cx="81.120662"
inkscape:cy="58.117986"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1"
inkscape:current-layer="g30864" />
<defs <defs
id="defs7357"> id="defs7357">
<radialGradient <radialGradient
xlink:href="#linearGradient36429" xlink:href="#linearGradient36429"
id="radialGradient7461" id="radialGradient7461"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0525552,0,0,1.0525552,-2.5162753,-9.0000838)" gradientTransform="matrix(1.011539,0,0,0.57582113,-0.39262194,71.83807)"
cx="47.878681" cx="47.428951"
cy="171.25" cy="167.16817"
fx="47.878681" fx="47.428951"
fy="171.25" fy="167.16817"
r="37" /> r="37" />
<linearGradient <linearGradient
id="linearGradient36429"> id="linearGradient36429">
@ -59,7 +97,7 @@
fx="49.067139" fx="49.067139"
cy="242.50381" cy="242.50381"
cx="49.067139" cx="49.067139"
gradientTransform="matrix(1.1891549,0,0,0.55513246,-9.281289,36.12653)" gradientTransform="matrix(1.1891549,0,0,0.15252127,-9.281289,132.52772)"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
id="radialGradient7488" id="radialGradient7488"
xlink:href="#linearGradient36471" /> xlink:href="#linearGradient36471" />
@ -72,19 +110,21 @@
id="g30864" id="g30864"
transform="translate(255.223,70.118091)"> transform="translate(255.223,70.118091)">
<rect <rect
ry="3.5996203" ry="3.4593496"
rx="3.5996203" rx="3.4593496"
y="98" y="99.596962"
x="11" x="12.596948"
height="74" height="71.116341"
width="74" width="71.116341"
id="rect14000" id="rect14000"
style="opacity:0.371875;fill:url(#radialGradient7461);fill-opacity:1;stroke:none" /> style="opacity:0.37187500000000001;fill:url(#radialGradient7461);fill-opacity:1;stroke:none" />
<path <path
id="rect34520" id="rect34520"
d="m 84.506708,167.95508 c 6e-6,1.96759 -1.584022,3.55162 -3.551629,3.55163 l -65.910146,0 c -1.967608,-1e-5 -3.551648,-1.58402 -3.551643,-3.55164" d="m 83.273151,166.72152 c 0,1.96759 -1.584022,3.55163 -3.551629,3.55163 l -63.443032,0 c -1.967608,0 -3.551648,-1.58402 -3.551643,-3.55164 0,-5.85318 0,-5.85318 0,0"
style="opacity:0.2;fill:none;stroke:url(#radialGradient7488);stroke-width:1;stroke-opacity:1" style="opacity:0.35;fill:none;stroke:url(#radialGradient7488);stroke-width:1;stroke-opacity:1"
inkscape:connector-curvature="0" /> connector-curvature="0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccscc" />
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="5.8600588"
height="9"
id="svg3647"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="section-more.svg">
<defs
id="defs3649">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3655" />
<inkscape:perspective
id="perspective3603"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="82.777778"
inkscape:cx="2.9300294"
inkscape:cy="5.466443"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata3652">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-262.78425,-490.71933)">
<path
transform="matrix(0,-0.98149546,0.71467449,0,25.404986,578.15569)"
d="M 88.830127,340 80.169873,340 84.5,332.5 88.830127,340 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.5707963"
sodipodi:arg1="0.52359878"
sodipodi:r2="2.5"
sodipodi:r1="5"
sodipodi:cy="337.5"
sodipodi:cx="84.5"
sodipodi:sides="3"
id="path5497-5"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.59699643;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
sodipodi:type="star" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="5.8600588"
height="9"
id="svg3647"
version="1.1"
inkscape:version="0.46+devel"
sodipodi:docname="New document 6">
<defs
id="defs3649">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3655" />
<inkscape:perspective
id="perspective3603"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="112.21575"
inkscape:cy="-32.642856"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="609"
inkscape:window-height="501"
inkscape:window-x="164"
inkscape:window-y="26"
inkscape:window-maximized="0" />
<metadata
id="metadata3652">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-262.78425,-490.71933)">
<path
transform="matrix(0,0.98149546,-0.71467449,0,506.02358,412.28296)"
d="M 88.830127,340 80.169873,340 84.5,332.5 88.830127,340 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.5707963"
sodipodi:arg1="0.52359878"
sodipodi:r2="2.5"
sodipodi:r1="5"
sodipodi:cy="337.5"
sodipodi:cx="84.5"
sodipodi:sides="3"
id="path5497-5"
style="fill:#5f5f5f;fill-opacity:1;stroke:#5f5f5f;stroke-width:0.59699643;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
sodipodi:type="star" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 B

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
id="svg6446"
version="1.1"
inkscape:version="0.47pre4 r22446"
sodipodi:docname="single-view-active.svg">
<defs
id="defs6448">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 16 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="32 : 16 : 1"
inkscape:persp3d-origin="16 : 10.666667 : 1"
id="perspective6454" />
<inkscape:perspective
id="perspective6441"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="0.014720032"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata6451">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-17)">
<rect
ry="0.5"
rx="0.49999979"
y="17.483809"
x="0.53483802"
height="15"
width="23"
id="rect5304"
style="fill:#cccccc;fill-opacity:1;stroke:#cccccc;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="16"
id="svg6446"
version="1.1"
inkscape:version="0.47pre4 r22446"
sodipodi:docname="single-view.svg">
<defs
id="defs6448">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 16 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="32 : 16 : 1"
inkscape:persp3d-origin="16 : 10.666667 : 1"
id="perspective6454" />
<inkscape:perspective
id="perspective6441"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="0.014720032"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1680"
inkscape:window-height="997"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:window-maximized="1" />
<metadata
id="metadata6451">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-17)">
<rect
ry="0.5"
rx="0.49999979"
y="17.483809"
x="0.53483802"
height="15"
width="23"
id="rect5304"
style="fill:#626262;fill-opacity:1;stroke:#cccccc;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -13,8 +13,8 @@
height="22" height="22"
id="svg3199" id="svg3199"
version="1.1" version="1.1"
inkscape:version="0.47 r22583" inkscape:version="0.48.1 r9760"
sodipodi:docname="New document 11"> sodipodi:docname="toggle-on-intl.svg">
<defs <defs
id="defs3201"> id="defs3201">
<inkscape:perspective <inkscape:perspective
@ -39,14 +39,14 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="0.35" inkscape:zoom="1"
inkscape:cx="32.500004" inkscape:cx="49.147112"
inkscape:cy="10.999997" inkscape:cy="17.532036"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="false" showgrid="false"
inkscape:window-width="609" inkscape:window-width="1412"
inkscape:window-height="501" inkscape:window-height="1067"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="26" inkscape:window-y="26"
inkscape:window-maximized="0" /> inkscape:window-maximized="0" />
@ -58,7 +58,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -72,7 +72,7 @@
transform="translate(-453.5,448.36218)" transform="translate(-453.5,448.36218)"
id="g16453"> id="g16453">
<rect <rect
style="color:#000000;fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect16256-9-4" id="rect16256-9-4"
width="63.000004" width="63.000004"
height="19" height="19"

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -13,8 +13,8 @@
height="22" height="22"
id="svg2857" id="svg2857"
version="1.1" version="1.1"
inkscape:version="0.47 r22583" inkscape:version="0.48.1 r9760"
sodipodi:docname="New document 2"> sodipodi:docname="toggle-on-us.svg">
<defs <defs
id="defs2859"> id="defs2859">
<inkscape:perspective <inkscape:perspective
@ -40,16 +40,18 @@
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1" inkscape:zoom="1"
inkscape:cx="-69.642856" inkscape:cx="19.689855"
inkscape:cy="42.428569" inkscape:cy="2.0517979"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="false" showgrid="false"
inkscape:window-width="609" inkscape:window-width="941"
inkscape:window-height="501" inkscape:window-height="751"
inkscape:window-x="0" inkscape:window-x="2577"
inkscape:window-y="26" inkscape:window-y="206"
inkscape:window-maximized="0" /> inkscape:window-maximized="0"
borderlayer="true"
inkscape:showpageshadow="false" />
<metadata <metadata
id="metadata2862"> id="metadata2862">
<rdf:RDF> <rdf:RDF>
@ -58,7 +60,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -72,7 +74,7 @@
transform="translate(-351.35714,708.36218)" transform="translate(-351.35714,708.36218)"
id="g16453"> id="g16453">
<rect <rect
style="color:#000000;fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect16256-9-4" id="rect16256-9-4"
width="63.000004" width="63.000004"
height="19" height="19"

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -109,7 +109,8 @@ const SessionManagerIface = {
name: 'org.gnome.SessionManager', name: 'org.gnome.SessionManager',
methods: [ methods: [
{ name: 'Logout', inSignature: 'u', outSignature: '' }, { name: 'Logout', inSignature: 'u', outSignature: '' },
{ name: 'Shutdown', inSignature: '', outSignature: '' } { name: 'Shutdown', inSignature: '', outSignature: '' },
{ name: 'CanShutdown', inSignature: '', outSignature: 'b' }
] ]
}; };

View File

@ -77,9 +77,9 @@ HistoryManager.prototype = {
this._history[this._history.length - 1] != input) { this._history[this._history.length - 1] != input) {
this._history.push(input); this._history.push(input);
this._historyIndex = this._history.length;
this._save(); this._save();
} }
this._historyIndex = this._history.length;
}, },
_onEntryKeyPress: function(entry, event) { _onEntryKeyPress: function(entry, event) {

View File

@ -7,9 +7,6 @@ const Shell = imports.gi.Shell;
const Main = imports.ui.main; const Main = imports.ui.main;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
/* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */ /* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */
const _urlRegexp = new RegExp('\\b(([a-z][\\w-]+:(/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)([^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\\".,<>?«»“”‘’]))', 'gi'); const _urlRegexp = new RegExp('\\b(([a-z][\\w-]+:(/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)([^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\\".,<>?«»“”‘’]))', 'gi');
@ -48,7 +45,7 @@ function spawn(argv) {
// occur when trying to parse or start the program. // occur when trying to parse or start the program.
function spawnCommandLine(command_line) { function spawnCommandLine(command_line) {
try { try {
let [success, argc, argv] = GLib.shell_parse_argv(command_line); let [success, argv] = GLib.shell_parse_argv(command_line);
trySpawn(argv); trySpawn(argv);
} catch (err) { } catch (err) {
_handleSpawnError(command_line, err); _handleSpawnError(command_line, err);
@ -88,10 +85,10 @@ function trySpawn(argv)
// Runs @command_line in the background. If launching @command_line // Runs @command_line in the background. If launching @command_line
// fails, this will throw an error. // fails, this will throw an error.
function trySpawnCommandLine(command_line) { function trySpawnCommandLine(command_line) {
let success, argc, argv; let success, argv;
try { try {
[success, argc, argv] = GLib.shell_parse_argv(command_line); [success, argv] = GLib.shell_parse_argv(command_line);
} catch (err) { } catch (err) {
// Replace "Error invoking GLib.shell_parse_argv: " with // Replace "Error invoking GLib.shell_parse_argv: " with
// something nicer // something nicer
@ -150,7 +147,7 @@ const _IGNORED_WORDS = [
'Incorporated', 'Incorporated',
'Ltd.', 'Ltd.',
'Limited.', 'Limited.',
'Intel?', 'Intel',
'chipset', 'chipset',
'adapter', 'adapter',
'[hex]', '[hex]',
@ -181,7 +178,7 @@ const _IGNORED_PHRASES = [
]; ];
function fixupPCIDescription(desc) { function fixupPCIDescription(desc) {
desc.replace(/[_,]/, ' '); desc = desc.replace(/[_,]/, ' ');
/* Attempt to shorten ID by ignoring certain phrases */ /* Attempt to shorten ID by ignoring certain phrases */
for (let i = 0; i < _IGNORED_PHRASES.length; i++) { for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
@ -197,7 +194,7 @@ function fixupPCIDescription(desc) {
/* Attmept to shorten ID by ignoring certain individual words */ /* Attmept to shorten ID by ignoring certain individual words */
let words = desc.split(' '); let words = desc.split(' ');
let out = [ ]; let out = [ ];
for (let i = 0; i < words; i++) { for (let i = 0; i < words.length; i++) {
let item = words[i]; let item = words[i];
// skip empty items (that come out from consecutive spaces) // skip empty items (that come out from consecutive spaces)

View File

@ -87,7 +87,7 @@ AltTabPopup.prototype = {
let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding); let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding);
let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight); let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight);
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2)); childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
childBox.x2 = Math.min(primary.x + primary.width - hPadding, childBox.x1 + childNaturalWidth); childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth);
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2); childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
childBox.y2 = childBox.y1 + childNaturalHeight; childBox.y2 = childBox.y1 + childNaturalHeight;
this._appSwitcher.actor.allocate(childBox, flags); this._appSwitcher.actor.allocate(childBox, flags);
@ -97,8 +97,6 @@ AltTabPopup.prototype = {
// those calculations // those calculations
if (this._thumbnails) { if (this._thumbnails) {
let icon = this._appIcons[this._currentApp].actor; let icon = this._appIcons[this._currentApp].actor;
// Force a stage relayout to make sure we get the correct position
global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, 0, 0);
let [posX, posY] = icon.get_transformed_position(); let [posX, posY] = icon.get_transformed_position();
let thumbnailCenter = posX + icon.width / 2; let thumbnailCenter = posX + icon.width / 2;
let [childMinWidth, childNaturalWidth] = this._thumbnails.actor.get_preferred_width(-1); let [childMinWidth, childNaturalWidth] = this._thumbnails.actor.get_preferred_width(-1);
@ -145,6 +143,12 @@ AltTabPopup.prototype = {
this._appIcons = this._appSwitcher.icons; this._appIcons = this._appSwitcher.icons;
// Need to force an allocation so we can figure out whether we
// need to scroll when selecting
this.actor.opacity = 0;
this.actor.show();
this.actor.get_allocation_box();
// Make the initial selection // Make the initial selection
if (switch_group) { if (switch_group) {
if (backward) { if (backward) {
@ -156,29 +160,11 @@ AltTabPopup.prototype = {
this._select(0, 0); this._select(0, 0);
} }
} else if (this._appIcons.length == 1) { } else if (this._appIcons.length == 1) {
if (!backward && this._appIcons[0].cachedWindows.length > 1) {
// For compatibility with the multi-app case below
this._select(0, 1, true);
} else
this._select(0); this._select(0);
} else if (backward) { } else if (backward) {
this._select(this._appIcons.length - 1); this._select(this._appIcons.length - 1);
} else { } else {
let firstWindows = this._appIcons[0].cachedWindows;
if (firstWindows.length > 1) {
let curAppNextWindow = firstWindows[1];
let nextAppWindow = this._appIcons[1].cachedWindows[0];
// If the next window of the current app is more-recently-used
// than the first window of the next app, then select it.
if (curAppNextWindow.get_workspace() == global.screen.get_active_workspace() &&
curAppNextWindow.get_user_time() > nextAppWindow.get_user_time())
this._select(0, 1, true);
else
this._select(1); this._select(1);
} else {
this._select(1);
}
} }
// There's a race condition; if the user released Alt before // There's a race condition; if the user released Alt before
@ -192,8 +178,6 @@ AltTabPopup.prototype = {
return false; return false;
} }
this.actor.opacity = 0;
this.actor.show();
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
{ opacity: 255, { opacity: 255,
time: POPUP_FADE_TIME, time: POPUP_FADE_TIME,
@ -233,33 +217,21 @@ AltTabPopup.prototype = {
this._disableHover(); this._disableHover();
if (action == Meta.KeyBindingAction.SWITCH_GROUP) if (keysym == Clutter.Escape) {
this._select(this._currentApp, backwards ? this._previousWindow() : this._nextWindow());
else if (keysym == Clutter.Escape)
this.destroy(); this.destroy();
else if (this._thumbnailsFocused) { } else if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) this._select(this._currentApp, backwards ? this._previousWindow() : this._nextWindow());
if (backwards) { } else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
if (this._currentWindow == 0 || this._currentWindow == -1) this._select(backwards ? this._previousApp() : this._nextApp());
this._select(this._previousApp()); } else if (this._thumbnailsFocused) {
else if (keysym == Clutter.Left)
this._select(this._currentApp, this._previousWindow());
} else {
if (this._currentWindow == this._appIcons[this._currentApp].cachedWindows.length - 1)
this._select(this._nextApp());
else
this._select(this._currentApp, this._nextWindow());
}
else if (keysym == Clutter.Left)
this._select(this._currentApp, this._previousWindow()); this._select(this._currentApp, this._previousWindow());
else if (keysym == Clutter.Right) else if (keysym == Clutter.Right)
this._select(this._currentApp, this._nextWindow()); this._select(this._currentApp, this._nextWindow());
else if (keysym == Clutter.Up) else if (keysym == Clutter.Up)
this._select(this._currentApp, null, true); this._select(this._currentApp, null, true);
} else { } else {
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) if (keysym == Clutter.Left)
this._select(backwards ? this._previousApp() : this._nextApp());
else if (keysym == Clutter.Left)
this._select(this._previousApp()); this._select(this._previousApp());
else if (keysym == Clutter.Right) else if (keysym == Clutter.Right)
this._select(this._nextApp()); this._select(this._nextApp());
@ -601,7 +573,7 @@ SwitcherList.prototype = {
this._rightArrow.opacity = this._rightGradient.opacity; this._rightArrow.opacity = this._rightGradient.opacity;
}, },
addItem : function(item) { addItem : function(item, label) {
let bbox = new St.Button({ style_class: 'item-box', let bbox = new St.Button({ style_class: 'item-box',
reactive: true }); reactive: true });
@ -612,6 +584,8 @@ SwitcherList.prototype = {
bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); })); bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); }));
bbox.connect('enter-event', Lang.bind(this, function() { this._onItemEnter(n); })); bbox.connect('enter-event', Lang.bind(this, function() { this._onItemEnter(n); }));
bbox.label_actor = label;
this._items.push(bbox); this._items.push(bbox);
}, },
@ -997,7 +971,7 @@ AppSwitcher.prototype = {
_addIcon : function(appIcon) { _addIcon : function(appIcon) {
this.icons.push(appIcon); this.icons.push(appIcon);
this.addItem(appIcon.actor); this.addItem(appIcon.actor, appIcon.label);
let n = this._arrows.length; let n = this._arrows.length;
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' }); let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
@ -1067,9 +1041,12 @@ ThumbnailList.prototype = {
this._labels.push(bin); this._labels.push(bin);
bin.add_actor(name); bin.add_actor(name);
box.add_actor(bin); box.add_actor(bin);
this.addItem(box, name);
} else {
this.addItem(box, null);
} }
this.addItem(box);
} }
}, },

View File

@ -6,10 +6,9 @@ const Gtk = imports.gi.Gtk;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const Meta = imports.gi.Meta;
const St = imports.gi.St; const St = imports.gi.St;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const AppFavorites = imports.ui.appFavorites; const AppFavorites = imports.ui.appFavorites;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
@ -22,6 +21,7 @@ const Tweener = imports.ui.tweener;
const Workspace = imports.ui.workspace; const Workspace = imports.ui.workspace;
const Params = imports.misc.params; const Params = imports.misc.params;
const MAX_APPLICATION_WORK_MILLIS = 75;
const MENU_POPUP_TIMEOUT = 600; const MENU_POPUP_TIMEOUT = 600;
const SCROLL_TIME = 0.1; const SCROLL_TIME = 0.1;
@ -34,6 +34,8 @@ AlphabeticalView.prototype = {
this._grid = new IconGrid.IconGrid({ xAlign: St.Align.START }); this._grid = new IconGrid.IconGrid({ xAlign: St.Align.START });
this._appSystem = Shell.AppSystem.get_default(); this._appSystem = Shell.AppSystem.get_default();
this._pendingAppLaterId = 0;
this._apps = [];
this._filterApp = null; this._filterApp = null;
let box = new St.BoxLayout({ vertical: true }); let box = new St.BoxLayout({ vertical: true });
@ -42,7 +44,7 @@ AlphabeticalView.prototype = {
this.actor = new St.ScrollView({ x_fill: true, this.actor = new St.ScrollView({ x_fill: true,
y_fill: false, y_fill: false,
y_align: St.Align.START, y_align: St.Align.START,
vfade: true }); style_class: 'vfade' });
this.actor.add_actor(box); this.actor.add_actor(box);
this.actor.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); this.actor.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.actor.connect('notify::mapped', Lang.bind(this, this.actor.connect('notify::mapped', Lang.bind(this,
@ -109,6 +111,30 @@ AlphabeticalView.prototype = {
this._apps[i].actor.visible = filter(this._apps[i]._appInfo); this._apps[i].actor.visible = filter(this._apps[i]._appInfo);
}, },
// Create actors for the applications in an idle to avoid blocking
// for too long; see bug 647778
_addPendingApps: function() {
let i;
let startTimeMillis = new Date().getTime();
for (i = 0; i < this._pendingAppIds.length; i++) {
let id = this._pendingAppIds[i];
this._addApp(this._pendingApps[id]);
let currentTimeMillis = new Date().getTime();
if (currentTimeMillis - startTimeMillis > MAX_APPLICATION_WORK_MILLIS)
break;
}
this._pendingAppIds.splice(0, i + 1);
if (this._pendingAppIds.length > 0) {
return true;
} else {
this._pendingAppLaterId = 0;
this._pendingAppIds = null;
this._pendingApps = null;
return false;
}
},
refresh: function(apps) { refresh: function(apps) {
let ids = []; let ids = [];
for (let i in apps) for (let i in apps)
@ -119,9 +145,12 @@ AlphabeticalView.prototype = {
this._removeAll(); this._removeAll();
for (let i = 0; i < ids.length; i++) { this._pendingAppIds = ids;
this._addApp(apps[ids[i]]); this._pendingApps = apps;
} if (this._pendingAppLaterId)
Meta.later_remove(this._pendingAppLaterId);
this._pendingAppLaterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
Lang.bind(this, this._addPendingApps));
} }
}; };
@ -224,7 +253,6 @@ ViewByCategories.prototype = {
let sections = this._appSystem.get_sections(); let sections = this._appSystem.get_sections();
this._apps = apps; this._apps = apps;
this._view.refresh(apps);
/* Translators: Filter to display all applications */ /* Translators: Filter to display all applications */
this._addFilter(_("All"), -1); this._addFilter(_("All"), -1);
@ -236,6 +264,7 @@ ViewByCategories.prototype = {
this._addFilter(sections[i], i); this._addFilter(sections[i], i);
this._selectCategory(-1); this._selectCategory(-1);
this._view.refresh(apps);
if (this._focusDummy) { if (this._focusDummy) {
let focused = this._focusDummy.has_key_focus(); let focused = this._focusDummy.has_key_focus();
@ -313,7 +342,7 @@ BaseAppSearchProvider.prototype = {
timestamp: null }); timestamp: null });
let app = this._appSys.get_app(id); let app = this._appSys.get_app(id);
app.open_new_window(params.workspace ? params.workspace.get_index() : -1); app.open_new_window(params.workspace ? params.workspace.index() : -1);
} }
}; };
@ -403,6 +432,8 @@ AppWellIcon.prototype = {
this.icon = new AppIcon(app, iconParams); this.icon = new AppIcon(app, iconParams);
this.actor.set_child(this.icon.actor); this.actor.set_child(this.icon.actor);
this.actor.label_actor = this.icon.label;
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this.actor.connect('clicked', Lang.bind(this, this._onClicked)); this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu)); this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu));

View File

@ -3,8 +3,6 @@
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Main = imports.ui.main; const Main = imports.ui.main;

View File

@ -8,9 +8,6 @@ const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const Pango = imports.gi.Pango; const Pango = imports.gi.Pango;
const Gettext_gtk30 = imports.gettext.domain('gtk30'); const Gettext_gtk30 = imports.gettext.domain('gtk30');
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const C_ = Gettext.pgettext;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;

View File

@ -14,7 +14,6 @@ const Params = imports.misc.params;
// workspace content. // workspace content.
const defaultParams = { const defaultParams = {
visibleInOverview: false,
visibleInFullscreen: false, visibleInFullscreen: false,
affectsStruts: true, affectsStruts: true,
affectsInputRegion: true affectsInputRegion: true
@ -73,11 +72,8 @@ Chrome.prototype = {
// in its visibility will affect the input region, but NOT the // in its visibility will affect the input region, but NOT the
// struts. // struts.
// //
// If %visibleInOverview is %true in @params, @actor will remain // If %visibleInFullscreen is %true, the actor will be visible
// visible when the overview is brought up. Otherwise it will // even when a fullscreen window should be covering it.
// automatically be hidden. Likewise, if %visibleInFullscreen is
// %true, the actor will be visible even when a fullscreen window
// should be covering it.
// //
// If %affectsStruts or %affectsInputRegion is %false, the actor // If %affectsStruts or %affectsInputRegion is %false, the actor
// will not have the indicated effect. // will not have the indicated effect.
@ -96,7 +92,7 @@ Chrome.prototype = {
// //
// @params can have any of the same values as in addActor(), though // @params can have any of the same values as in addActor(), though
// some possibilities don't make sense (eg, trying to have a // some possibilities don't make sense (eg, trying to have a
// %visibleInOverview child of a non-%visibleInOverview parent). // %visibleInFullscreen child of a non-%visibleInFullscreen parent).
// By default, @actor has the same params as its chrome ancestor. // By default, @actor has the same params as its chrome ancestor.
trackActor: function(actor, params) { trackActor: function(actor, params) {
let ancestor = actor.get_parent(); let ancestor = actor.get_parent();
@ -189,9 +185,7 @@ Chrome.prototype = {
_updateVisibility: function() { _updateVisibility: function() {
for (let i = 0; i < this._trackedActors.length; i++) { for (let i = 0; i < this._trackedActors.length; i++) {
let actorData = this._trackedActors[i]; let actorData = this._trackedActors[i];
if (this._inOverview && !actorData.visibleInOverview) if (!this._inOverview && !actorData.visibleInFullscreen &&
this.actor.set_skip_paint(actorData.actor, true);
else if (!this._inOverview && !actorData.visibleInFullscreen &&
this._findMonitorForActor(actorData.actor).inFullscreen) this._findMonitorForActor(actorData.actor).inFullscreen)
this.actor.set_skip_paint(actorData.actor, true); this.actor.set_skip_paint(actorData.actor, true);
else else
@ -335,11 +329,6 @@ Chrome.prototype = {
this._updateVisibility(); this._updateVisibility();
this._queueUpdateRegions(); this._queueUpdateRegions();
} }
// Figure out where the pointer is in case we lost track of
// it during a grab. (In particular, if a trayicon popup menu
// is dismissed, see if we need to close the message tray.)
global.sync_pointer();
}, },
_updateRegions: function() { _updateRegions: function() {

View File

@ -323,6 +323,6 @@ CtrlAltTabSwitcher.prototype = {
let text = new St.Label({ text: item.name }); let text = new St.Label({ text: item.name });
box.add(text, { x_fill: false }); box.add(text, { x_fill: false });
this.addItem(box); this.addItem(box, text);
} }
}; };

View File

@ -6,8 +6,6 @@ const Lang = imports.lang;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const AppDisplay = imports.ui.appDisplay; const AppDisplay = imports.ui.appDisplay;
const AppFavorites = imports.ui.appFavorites; const AppFavorites = imports.ui.appFavorites;
@ -326,7 +324,7 @@ Dash.prototype = {
this._favRemoveTarget = null; this._favRemoveTarget = null;
})); }));
} }
DND.removeMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
}, },
_onDragMotion: function(dragEvent) { _onDragMotion: function(dragEvent) {
@ -344,7 +342,10 @@ Dash.prototype = {
let srcIsFavorite = (id in favorites); let srcIsFavorite = (id in favorites);
if (srcIsFavorite && this._favRemoveTarget == null) { if (srcIsFavorite &&
dragEvent.source.actor &&
this.actor.contains (dragEvent.source.actor) &&
this._favRemoveTarget == null) {
this._favRemoveTarget = new RemoveFavoriteIcon(); this._favRemoveTarget = new RemoveFavoriteIcon();
this._favRemoveTarget.icon.setIconSize(this.iconSize); this._favRemoveTarget.icon.setIconSize(this.iconSize);
this._box.add(this._favRemoveTarget.actor); this._box.add(this._favRemoveTarget.actor);

View File

@ -8,8 +8,6 @@ const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Util = imports.misc.util; const Util = imports.misc.util;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -200,6 +198,7 @@ DateMenuButton.prototype = {
_onPreferencesActivate: function() { _onPreferencesActivate: function() {
this.menu.close(); this.menu.close();
Main.overview.hide();
let app = Shell.AppSystem.get_default().get_app('gnome-datetime-panel.desktop'); let app = Shell.AppSystem.get_default().get_app('gnome-datetime-panel.desktop');
app.activate(-1); app.activate(-1);
}, },

View File

@ -61,7 +61,7 @@ function addDragMonitor(monitor) {
dragMonitors.push(monitor); dragMonitors.push(monitor);
} }
function removeMonitor(monitor) { function removeDragMonitor(monitor) {
for (let i = 0; i < dragMonitors.length; i++) for (let i = 0; i < dragMonitors.length; i++)
if (dragMonitors[i] == monitor) { if (dragMonitors[i] == monitor) {
dragMonitors.splice(i, 1); dragMonitors.splice(i, 1);
@ -284,13 +284,13 @@ _Draggable.prototype = {
this._dragOffsetY = actorStageY - this._dragStartY; this._dragOffsetY = actorStageY - this._dragStartY;
// Set the actor's scale such that it will keep the same // Set the actor's scale such that it will keep the same
// transformed size when it's reparented to the stage // transformed size when it's reparented to the uiGroup
let [scaledWidth, scaledHeight] = this.actor.get_transformed_size(); let [scaledWidth, scaledHeight] = this.actor.get_transformed_size();
this.actor.set_scale(scaledWidth / this.actor.width, this.actor.set_scale(scaledWidth / this.actor.width,
scaledHeight / this.actor.height); scaledHeight / this.actor.height);
} }
this._dragActor.reparent(this.actor.get_stage()); this._dragActor.reparent(Main.uiGroup);
this._dragActor.raise_top(); this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true); Shell.util_set_hidden_from_pick(this._dragActor, true);
@ -442,7 +442,7 @@ _Draggable.prototype = {
return true; return true;
// If it accepted the drop without taking the actor, // If it accepted the drop without taking the actor,
// handle it ourselves. // handle it ourselves.
if (this._dragActor.get_parent() == this._dragActor.get_stage()) { if (this._dragActor.get_parent() == Main.uiGroup) {
if (this._restoreOnSuccess) { if (this._restoreOnSuccess) {
this._restoreDragActor(event.get_time()); this._restoreDragActor(event.get_time());
return true; return true;

View File

@ -1,8 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const DocInfo = imports.misc.docInfo; const DocInfo = imports.misc.docInfo;
const Params = imports.misc.params; const Params = imports.misc.params;
const Search = imports.ui.search; const Search = imports.ui.search;

View File

@ -22,9 +22,6 @@ const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gdm = imports.gi.Gdm; const Gdm = imports.gi.Gdm;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
@ -366,8 +363,10 @@ EndSessionDialog.prototype = {
if (this._user.is_loaded && !dialogContent.iconName) { if (this._user.is_loaded && !dialogContent.iconName) {
let iconFile = this._user.get_icon_file(); let iconFile = this._user.get_icon_file();
if (GLib.file_test(iconFile, GLib.FileTest.EXISTS))
this._setIconFromFile(iconFile, dialogContent.iconStyleClass); this._setIconFromFile(iconFile, dialogContent.iconStyleClass);
else
this._setIconFromName('avatar-default', dialogContent.iconStyleClass);
} else if (dialogContent.iconName) { } else if (dialogContent.iconName) {
this._setIconFromName(dialogContent.iconName, this._setIconFromName(dialogContent.iconName,
dialogContent.iconStyleClass); dialogContent.iconStyleClass);
@ -406,10 +405,6 @@ EndSessionDialog.prototype = {
}, },
_updateButtons: function() { _updateButtons: function() {
if (this.state != ModalDialog.State.OPENING &&
this.state != ModalDialog.State.OPENED)
return;
let dialogContent = DialogContent[this._type]; let dialogContent = DialogContent[this._type];
let buttons = [{ action: Lang.bind(this, this.cancel), let buttons = [{ action: Lang.bind(this, this.cancel),
label: _("Cancel"), label: _("Cancel"),
@ -519,11 +514,12 @@ EndSessionDialog.prototype = {
this._inhibitors.push(inhibitor); this._inhibitors.push(inhibitor);
} }
this._updateButtons();
if (!this.open(timestamp)) if (!this.open(timestamp))
throw new DBus.DBusError('org.gnome.Shell.ModalDialog.GrabError', throw new DBus.DBusError('org.gnome.Shell.ModalDialog.GrabError',
"Cannot grab pointer and keyboard"); "Cannot grab pointer and keyboard");
this._updateButtons();
this._updateContent(); this._updateContent();
let signalId = this.connect('opened', let signalId = this.connect('opened',

View File

@ -1,14 +1,22 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
imports.gi.versions.Clutter = '1.0';
imports.gi.versions.Gio = '2.0';
imports.gi.versions.Gdk = '3.0';
imports.gi.versions.GdkPixbuf = '2.0';
imports.gi.versions.Gtk = '3.0';
const Clutter = imports.gi.Clutter;; const Clutter = imports.gi.Clutter;;
const Gettext = imports.gettext;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext_gtk30 = imports.gettext.domain('gtk30');
const Tweener = imports.ui.tweener; // We can't import shell JS modules yet, because they may have
// variable initializations, etc, that depend on init() already having
// been run.
const Format = imports.misc.format;
// "monkey patch" in some varargs ClutterContainer methods; we need // "monkey patch" in some varargs ClutterContainer methods; we need
// to do this per-container class since there is no representation // to do this per-container class since there is no representation
@ -31,49 +39,42 @@ function _patchContainerClass(containerClass) {
}; };
} }
// Replace @method with something that throws an error instead function init() {
function _blockMethod(method, replacement, reason) { // Add some bindings to the global JS namespace; (gjs keeps the web
let match = method.match(/^(.+)\.([^.]+)$/); // browser convention of having that namespace be called 'window'.)
if (!match) window.global = Shell.Global.get();
throw new Error('Bad method name "' + method + '"');
let proto = 'imports.gi.' + match[1] + '.prototype';
let property = match[2];
if (!global.set_property_mutable(proto, property, true)) window._ = Gettext.gettext;
throw new Error('Bad method name "' + method + '"'); window.C_ = Gettext.pgettext;
window.ngettext = Gettext.ngettext;
// eval() is evil in general, but we know it's safe here since // Set the default direction for St widgets (this needs to be done before any use of St)
// set_property_mutable() would have failed if proto was if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) {
// malformed. St.Widget.set_default_direction(St.TextDirection.RTL);
let node = eval(proto);
let msg = 'Do not use "' + method + '".';
if (replacement)
msg += ' Use "' + replacement + '" instead.';
if (reason)
msg += ' (' + reason + ')';
node[property] = function() {
throw new Error(msg);
};
global.set_property_mutable(proto, property, false);
} }
function init() { // Miscellaneous monkeypatching
Tweener.init(); _patchContainerClass(St.BoxLayout);
String.prototype.format = Format.format; _patchContainerClass(St.Table);
Clutter.Actor.prototype.toString = function() {
return St.describe_actor(this);
};
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
return base;
};
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783 // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
Date.prototype.toLocaleFormat = function(format) { Date.prototype.toLocaleFormat = function(format) {
return Shell.util_format_date(format, this.getTime()); return Shell.util_format_date(format, this.getTime());
}; };
// Set the default direction for St widgets (this needs to be done before any use of St)
if (Gettext_gtk30.gettext('default:LTR') == 'default:RTL') {
St.Widget.set_default_direction(St.TextDirection.RTL);
}
let slowdownEnv = GLib.getenv('GNOME_SHELL_SLOWDOWN_FACTOR'); let slowdownEnv = GLib.getenv('GNOME_SHELL_SLOWDOWN_FACTOR');
if (slowdownEnv) { if (slowdownEnv) {
let factor = parseFloat(slowdownEnv); let factor = parseFloat(slowdownEnv);
@ -81,24 +82,10 @@ function init() {
St.set_slow_down_factor(factor); St.set_slow_down_factor(factor);
} }
_patchContainerClass(St.BoxLayout); // OK, now things are initialized enough that we can import shell JS
_patchContainerClass(St.Table); const Format = imports.misc.format;
const Tweener = imports.ui.tweener;
Clutter.Actor.prototype.toString = function() { Tweener.init();
return St.describe_actor(this); String.prototype.format = Format.format;
};
if (window.global === undefined) // test environment
return;
_blockMethod('Clutter.Event.get_state', 'Shell.get_event_state',
'gjs\'s handling of Clutter.ModifierType is broken. See bug 597292.');
_blockMethod('Gdk.Window.get_device_position', 'global.get_pointer',
'gjs\'s handling of Gdk.ModifierType is broken. See bug 597292.');
// Now close the back door to prevent extensions from trying to
// abuse it. We can't actually delete it since
// Shell.Global.prototype itself is read-only.
global.set_property_mutable('imports.gi.Shell.Global.prototype', 'set_property_mutable', true);
Shell.Global.prototype.set_property_mutable = undefined;
} }

View File

@ -3,6 +3,7 @@
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Config = imports.misc.config; const Config = imports.misc.config;
@ -22,8 +23,9 @@ const ExtensionType = {
const extensionMeta = {}; const extensionMeta = {};
// Maps uuid -> importer object (extension directory tree) // Maps uuid -> importer object (extension directory tree)
const extensions = {}; const extensions = {};
// Array of uuids // Arrays of uuids
var disabledExtensions; var disabledExtensions;
var enabledExtensions;
// GFile for user extensions // GFile for user extensions
var userExtensionsDir = null; var userExtensionsDir = null;
@ -67,7 +69,13 @@ function loadExtension(dir, enabled, type) {
return; return;
} }
let [success, metadataContents, len, etag] = metadataFile.load_contents(null); let metadataContents;
try {
metadataContents = Shell.get_file_contents_utf8_sync(metadataFile.get_path());
} catch (e) {
global.logError(baseErrorString + 'Failed to load metadata.json: ' + e);
return;
}
let meta; let meta;
try { try {
meta = JSON.parse(metadataContents); meta = JSON.parse(metadataContents);
@ -171,6 +179,7 @@ function init() {
} }
disabledExtensions = global.settings.get_strv('disabled-extensions', -1); disabledExtensions = global.settings.get_strv('disabled-extensions', -1);
enabledExtensions = global.settings.get_strv('enabled-extensions', -1);
} }
function _loadExtensionsIn(dir, type) { function _loadExtensionsIn(dir, type) {
@ -188,7 +197,10 @@ function _loadExtensionsIn(dir, type) {
if (fileType != Gio.FileType.DIRECTORY) if (fileType != Gio.FileType.DIRECTORY)
continue; continue;
let name = info.get_name(); let name = info.get_name();
let enabled = disabledExtensions.indexOf(name) < 0; // Enable all but disabled extensions if enabledExtensions is not set.
// If it is set, enable one those, except they are disabled as well.
let enabled = (enabledExtensions.length == 0 || enabledExtensions.indexOf(name) >= 0)
&& disabledExtensions.indexOf(name) < 0;
let child = dir.get_child(name); let child = dir.get_child(name);
loadExtension(child, enabled, type); loadExtension(child, enabled, type);
} }

View File

@ -42,10 +42,10 @@ BaseIcon.prototype = {
box.add_actor(this._iconBin); box.add_actor(this._iconBin);
if (params.showLabel) { if (params.showLabel) {
this._name = new St.Label({ text: label }); this.label = new St.Label({ text: label });
box.add_actor(this._name); box.add_actor(this.label);
} else { } else {
this._name = null; this.label = null;
} }
if (params.createIcon) if (params.createIcon)
@ -67,8 +67,8 @@ BaseIcon.prototype = {
let childBox = new Clutter.ActorBox(); let childBox = new Clutter.ActorBox();
if (this._name) { if (this.label) {
let [labelMinHeight, labelNatHeight] = this._name.get_preferred_height(-1); let [labelMinHeight, labelNatHeight] = this.label.get_preferred_height(-1);
preferredHeight += this._spacing + labelNatHeight; preferredHeight += this._spacing + labelNatHeight;
let labelHeight = availHeight >= preferredHeight ? labelNatHeight let labelHeight = availHeight >= preferredHeight ? labelNatHeight
@ -79,7 +79,7 @@ BaseIcon.prototype = {
childBox.x2 = availWidth; childBox.x2 = availWidth;
childBox.y1 = iconSize + this._spacing; childBox.y1 = iconSize + this._spacing;
childBox.y2 = childBox.y1 + labelHeight; childBox.y2 = childBox.y1 + labelHeight;
this._name.allocate(childBox, flags); this.label.allocate(childBox, flags);
} }
childBox.x1 = Math.floor((availWidth - iconNatWidth) / 2); childBox.x1 = Math.floor((availWidth - iconNatWidth) / 2);
@ -98,8 +98,8 @@ BaseIcon.prototype = {
alloc.min_size = iconMinHeight; alloc.min_size = iconMinHeight;
alloc.natural_size = iconNatHeight; alloc.natural_size = iconNatHeight;
if (this._name) { if (this.label) {
let [labelMinHeight, labelNatHeight] = this._name.get_preferred_height(forWidth); let [labelMinHeight, labelNatHeight] = this.label.get_preferred_height(forWidth);
alloc.min_size += this._spacing + labelMinHeight; alloc.min_size += this._spacing + labelMinHeight;
alloc.natural_size += this._spacing + labelNatHeight; alloc.natural_size += this._spacing + labelNatHeight;
} }

View File

@ -5,14 +5,13 @@ const Cogl = imports.gi.Cogl;
const GConf = imports.gi.GConf; const GConf = imports.gi.GConf;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Pango = imports.gi.Pango; const Pango = imports.gi.Pango;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const History = imports.misc.history; const History = imports.misc.history;
const ExtensionSystem = imports.ui.extensionSystem; const ExtensionSystem = imports.ui.extensionSystem;
@ -100,12 +99,19 @@ Notebook.prototype = {
selectIndex: function(index) { selectIndex: function(index) {
if (index == this._selectedIndex) if (index == this._selectedIndex)
return; return;
this._unselect();
if (index < 0) { if (index < 0) {
this._unselect();
this.emit('selection', null); this.emit('selection', null);
return; return;
} }
// Focus the new tab before unmapping the old one
let tabData = this._tabs[index]; let tabData = this._tabs[index];
if (!tabData.scrollView.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false))
this.actor.grab_key_focus();
this._unselect();
tabData.labelBox.add_style_pseudo_class('selected'); tabData.labelBox.add_style_pseudo_class('selected');
tabData.scrollView.show(); tabData.scrollView.show();
this._selectedIndex = index; this._selectedIndex = index;
@ -576,6 +582,53 @@ ErrorLog.prototype = {
} }
}; };
function Memory() {
this._init();
}
Memory.prototype = {
_init: function() {
this.actor = new St.BoxLayout({ vertical: true });
this._glibc_uordblks = new St.Label();
this.actor.add(this._glibc_uordblks);
this._js_bytes = new St.Label();
this.actor.add(this._js_bytes);
this._gjs_boxed = new St.Label();
this.actor.add(this._gjs_boxed);
this._gjs_gobject = new St.Label();
this.actor.add(this._gjs_gobject);
this._gjs_function = new St.Label();
this.actor.add(this._gjs_function);
this._gjs_closure = new St.Label();
this.actor.add(this._gjs_closure);
this._gcbutton = new St.Button({ label: 'Full GC',
style_class: 'lg-obj-inspector-button' });
this._gcbutton.connect('clicked', Lang.bind(this, function () { global.gc(); this._renderText(); }));
this.actor.add(this._gcbutton, { x_align: St.Align.START,
x_fill: false });
this.actor.connect('notify::mapped', Lang.bind(this, this._renderText));
},
_renderText: function() {
if (!this.actor.mapped)
return;
let memInfo = global.get_memory_info();
this._glibc_uordblks.text = 'glibc_uordblks: ' + memInfo.glibc_uordblks;
this._js_bytes.text = 'js bytes: ' + memInfo.js_bytes;
this._gjs_boxed.text = 'gjs_boxed: ' + memInfo.gjs_boxed;
this._gjs_gobject.text = 'gjs_gobject: ' + memInfo.gjs_gobject;
this._gjs_function.text = 'gjs_function: ' + memInfo.gjs_function;
this._gjs_closure.text = 'gjs_closure: ' + memInfo.gjs_closure;
}
};
function Extensions() { function Extensions() {
this._init(); this._init();
} }
@ -707,6 +760,7 @@ LookingGlass.prototype = {
let toolbar = new St.BoxLayout({ name: 'Toolbar' }); let toolbar = new St.BoxLayout({ name: 'Toolbar' });
this.actor.add_actor(toolbar); this.actor.add_actor(toolbar);
let inspectIcon = new St.Icon({ icon_name: 'gtk-color-picker', let inspectIcon = new St.Icon({ icon_name: 'gtk-color-picker',
icon_type: St.IconType.FULLCOLOR,
icon_size: 24 }); icon_size: 24 });
toolbar.add_actor(inspectIcon); toolbar.add_actor(inspectIcon);
inspectIcon.reactive = true; inspectIcon.reactive = true;
@ -744,12 +798,7 @@ LookingGlass.prototype = {
let label = new St.Label({ text: 'js>>> ' }); let label = new St.Label({ text: 'js>>> ' });
entryArea.add(label); entryArea.add(label);
this._entry = new St.Entry(); this._entry = new St.Entry({ can_focus: true });
/* unmapping the edit box will un-focus it, undo that */
notebook.connect('selection', Lang.bind(this, function (nb, child) {
if (child == this._evalBox)
global.stage.set_key_focus(this._entry);
}));
entryArea.add(this._entry, { expand: true }); entryArea.add(this._entry, { expand: true });
this._windowList = new WindowList(); this._windowList = new WindowList();
@ -762,6 +811,9 @@ LookingGlass.prototype = {
this._errorLog = new ErrorLog(); this._errorLog = new ErrorLog();
notebook.appendPage('Errors', this._errorLog.actor); notebook.appendPage('Errors', this._errorLog.actor);
this._memory = new Memory();
notebook.appendPage('Memory', this._memory.actor);
this._extensions = new Extensions(); this._extensions = new Extensions();
notebook.appendPage('Extensions', this._extensions.actor); notebook.appendPage('Extensions', this._extensions.actor);
@ -908,6 +960,7 @@ LookingGlass.prototype = {
if (!Main.pushModal(this._entry)) if (!Main.pushModal(this._entry))
return; return;
this._notebook.selectIndex(0);
this.actor.show(); this.actor.show();
this.actor.lower(Main.chrome.actor); this.actor.lower(Main.chrome.actor);
this._open = true; this._open = true;

View File

@ -1,11 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
imports.gi.versions.Clutter = '1.0';
imports.gi.versions.Gio = '2.0';
imports.gi.versions.Gdk = '3.0';
imports.gi.versions.GdkPixbuf = '2.0';
imports.gi.versions.Gtk = '3.0';
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const DBus = imports.dbus; const DBus = imports.dbus;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;
@ -17,8 +11,6 @@ const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Chrome = imports.ui.chrome; const Chrome = imports.ui.chrome;
const CtrlAltTab = imports.ui.ctrlAltTab; const CtrlAltTab = imports.ui.ctrlAltTab;
@ -75,12 +67,7 @@ let _cssStylesheet = null;
let background = null; let background = null;
function start() { function start() {
// Add a binding for 'global' in the global JS namespace; (gjs // Monkey patch utility functions into the global proxy;
// keeps the web browser convention of having that namespace be
// called 'window'.)
window.global = Shell.Global.get();
// Now monkey patch utility functions into the global proxy;
// This is easier and faster than indirecting down into global // This is easier and faster than indirecting down into global
// if we want to call back up into JS. // if we want to call back up into JS.
global.logError = _logError; global.logError = _logError;
@ -102,8 +89,6 @@ function start() {
// not loading any events until the user presses the clock // not loading any events until the user presses the clock
global.launch_calendar_server(); global.launch_calendar_server();
Environment.init();
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
// also initialize ShellAppSystem first. ShellAppSystem // also initialize ShellAppSystem first. ShellAppSystem
// needs to load all the .desktop files, and ShellWindowTracker // needs to load all the .desktop files, and ShellWindowTracker
@ -223,6 +208,7 @@ function start() {
global.screen.connect('window-entered-monitor', _windowEnteredMonitor); global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
global.screen.connect('window-left-monitor', _windowLeftMonitor); global.screen.connect('window-left-monitor', _windowLeftMonitor);
global.screen.connect('restacked', _windowsRestacked);
_nWorkspacesChanged(); _nWorkspacesChanged();
} }
@ -325,6 +311,13 @@ function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) {
_queueCheckWorkspaces(); _queueCheckWorkspaces();
} }
function _windowsRestacked() {
// Figure out where the pointer is in case we lost track of
// it during a grab. (In particular, if a trayicon popup menu
// is dismissed, see if we need to close the message tray.)
global.sync_pointer();
}
function _queueCheckWorkspaces() { function _queueCheckWorkspaces() {
if (_checkWorkspacesId == 0) if (_checkWorkspacesId == 0)
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces); _checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
@ -408,12 +401,21 @@ function setThemeStylesheet(cssStylesheet)
*/ */
function loadTheme() { function loadTheme() {
let themeContext = St.ThemeContext.get_for_stage (global.stage); let themeContext = St.ThemeContext.get_for_stage (global.stage);
let previousTheme = themeContext.get_theme();
let cssStylesheet = _defaultCssStylesheet; let cssStylesheet = _defaultCssStylesheet;
if (_cssStylesheet != null) if (_cssStylesheet != null)
cssStylesheet = _cssStylesheet; cssStylesheet = _cssStylesheet;
let theme = new St.Theme ({ application_stylesheet: cssStylesheet }); let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
if (previousTheme) {
let customStylesheets = previousTheme.get_custom_stylesheets();
for (let i = 0; i < customStylesheets.length; i++)
theme.load_stylesheet(customStylesheets[i]);
}
themeContext.set_theme (theme); themeContext.set_theme (theme);
} }

View File

@ -20,9 +20,6 @@ const Params = imports.misc.params;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const ANIMATION_TIME = 0.2; const ANIMATION_TIME = 0.2;
const NOTIFICATION_TIMEOUT = 4; const NOTIFICATION_TIMEOUT = 4;
const SUMMARY_TIMEOUT = 1; const SUMMARY_TIMEOUT = 1;
@ -411,6 +408,7 @@ Notification.prototype = {
this._bannerBodyText = null; this._bannerBodyText = null;
this._bannerBodyMarkup = false; this._bannerBodyMarkup = false;
this._titleFitsInBannerMode = true; this._titleFitsInBannerMode = true;
this._titleDirection = St.TextDirection.NONE;
this._spacing = 0; this._spacing = 0;
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC; this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
@ -510,6 +508,19 @@ Notification.prototype = {
title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : ''; title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : '';
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>'); this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
this._titleDirection = St.TextDirection.RTL;
else
this._titleDirection = St.TextDirection.LTR;
// Let the title's text direction control the overall direction
// of the notification - in case where different scripts are used
// in the notification, this is the right thing for the icon, and
// 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);
// Unless the notification has custom content, we save this._bannerBodyText // Unless the notification has custom content, we save this._bannerBodyText
// to add it to the content of the notification if the notification is // to add it to the content of the notification if the notification is
// expandable due to other elements in its content area or due to the banner // expandable due to other elements in its content area or due to the banner
@ -546,7 +557,7 @@ Notification.prototype = {
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview', this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
vscrollbar_policy: this._scrollPolicy, vscrollbar_policy: this._scrollPolicy,
hscrollbar_policy: Gtk.PolicyType.NEVER, hscrollbar_policy: Gtk.PolicyType.NEVER,
vfade: true }); style_class: 'vfade' });
this._table.add(this._scrollArea, { row: 1, col: 1 }); this._table.add(this._scrollArea, { row: 1, col: 1 });
this._contentArea = new St.BoxLayout({ name: 'notification-body', this._contentArea = new St.BoxLayout({ name: 'notification-body',
vertical: true }); vertical: true });
@ -711,23 +722,39 @@ Notification.prototype = {
let availWidth = box.x2 - box.x1; let availWidth = box.x2 - box.x1;
let titleBox = new Clutter.ActorBox(); let titleBox = new Clutter.ActorBox();
titleBox.x1 = titleBox.y1 = 0; let titleBoxW = Math.min(titleNatW, availWidth);
titleBox.x2 = Math.min(titleNatW, availWidth); if (this._titleDirection == St.TextDirection.RTL) {
titleBox.x1 = availWidth - titleBoxW;
titleBox.x2 = availWidth;
} else {
titleBox.x1 = 0;
titleBox.x2 = titleBoxW;
}
titleBox.y1 = 0;
titleBox.y2 = titleNatH; titleBox.y2 = titleNatH;
this._titleLabel.allocate(titleBox, flags); this._titleLabel.allocate(titleBox, flags);
this._titleFitsInBannerMode = (titleNatW <= availWidth); this._titleFitsInBannerMode = (titleNatW <= availWidth);
let bannerFits = true; let bannerFits = true;
if (titleBox.x2 + this._spacing > availWidth) { if (titleBoxW + this._spacing > availWidth) {
this._bannerLabel.opacity = 0; this._bannerLabel.opacity = 0;
bannerFits = false; bannerFits = false;
} else { } else {
let bannerBox = new Clutter.ActorBox(); let bannerBox = new Clutter.ActorBox();
if (this._titleDirection == St.TextDirection.RTL) {
bannerBox.x1 = 0;
bannerBox.x2 = titleBox.x1 - this._spacing;
bannerFits = (bannerBox.x2 - bannerNatW >= 0);
} else {
bannerBox.x1 = titleBox.x2 + this._spacing; bannerBox.x1 = titleBox.x2 + this._spacing;
bannerBox.y1 = 0; bannerBox.x2 = availWidth;
bannerBox.x2 = Math.min(bannerBox.x1 + bannerNatW, availWidth);
bannerBox.y2 = titleNatH;
bannerFits = (bannerBox.x1 + bannerNatW <= availWidth); bannerFits = (bannerBox.x1 + bannerNatW <= availWidth);
}
bannerBox.y1 = 0;
bannerBox.y2 = titleNatH;
this._bannerLabel.allocate(bannerBox, flags); this._bannerLabel.allocate(bannerBox, flags);
// Make _bannerLabel visible if the entire notification // Make _bannerLabel visible if the entire notification
@ -802,6 +829,7 @@ Notification.prototype = {
// Restore banner opacity in case the notification is shown in the // Restore banner opacity in case the notification is shown in the
// banner mode again on update. // banner mode again on update.
this._bannerLabel.opacity = 255; this._bannerLabel.opacity = 255;
this.emit('collapsed');
}, },
_onActionInvoked: function(actor, mouseButtonClicked, id) { _onActionInvoked: function(actor, mouseButtonClicked, id) {
@ -866,6 +894,11 @@ Source.prototype = {
this.isTransient = isTransient; this.isTransient = isTransient;
}, },
setTitle: function(newTitle) {
this.title = newTitle;
this.emit('title-changed');
},
// Called to create a new icon actor (of size this.ICON_SIZE). // Called to create a new icon actor (of size this.ICON_SIZE).
// Must be overridden by the subclass if you do not pass icons // Must be overridden by the subclass if you do not pass icons
// explicitly to the Notification() constructor. // explicitly to the Notification() constructor.
@ -968,6 +1001,11 @@ SummaryItem.prototype = {
this._sourceTitleBin.child = this._sourceTitle; this._sourceTitleBin.child = this._sourceTitle;
this._sourceTitleBin.width = 0; this._sourceTitleBin.width = 0;
this.source.connect('title-changed',
Lang.bind(this, function() {
this._sourceTitle.text = source.title;
}));
this._sourceBox.add(this._sourceIcon, { y_fill: false }); this._sourceBox.add(this._sourceIcon, { y_fill: false });
this._sourceBox.add(this._sourceTitleBin, { expand: true, y_fill: false }); this._sourceBox.add(this._sourceTitleBin, { expand: true, y_fill: false });
this.actor.child = this._sourceBox; this.actor.child = this._sourceBox;
@ -975,7 +1013,7 @@ SummaryItem.prototype = {
this.notificationStackView = new St.ScrollView({ name: source.isChat ? '' : 'summary-notification-stack-scrollview', this.notificationStackView = new St.ScrollView({ name: source.isChat ? '' : 'summary-notification-stack-scrollview',
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC, vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
hscrollbar_policy: Gtk.PolicyType.NEVER, hscrollbar_policy: Gtk.PolicyType.NEVER,
vfade: true }); style_class: 'vfade' });
this.notificationStack = new St.BoxLayout({ name: 'summary-notification-stack', this.notificationStack = new St.BoxLayout({ name: 'summary-notification-stack',
vertical: true }); vertical: true });
this.notificationStackView.add_actor(this.notificationStack); this.notificationStackView.add_actor(this.notificationStack);
@ -1215,7 +1253,7 @@ MessageTray.prototype = {
this._reNotifyAfterHideNotification = null; this._reNotifyAfterHideNotification = null;
Main.chrome.addActor(this.actor, { affectsStruts: false, Main.chrome.addActor(this.actor, { affectsStruts: false,
visibleInOverview: true }); visibleInFullscreen: true });
Main.chrome.trackActor(this._notificationBin); Main.chrome.trackActor(this._notificationBin);
Main.chrome.trackActor(this._summaryBoxPointer.actor); Main.chrome.trackActor(this._summaryBoxPointer.actor);
@ -1578,6 +1616,8 @@ MessageTray.prototype = {
this._clickedSummaryItemMouseButton != button) { this._clickedSummaryItemMouseButton != button) {
this._clickedSummaryItem = summaryItem; this._clickedSummaryItem = summaryItem;
this._clickedSummaryItemMouseButton = button; this._clickedSummaryItemMouseButton = button;
summaryItem.source.emit('summary-item-clicked', button);
} else { } else {
this._unsetClickedSummaryItem(); this._unsetClickedSummaryItem();
} }
@ -1986,7 +2026,13 @@ MessageTray.prototype = {
_onNotificationExpanded: function() { _onNotificationExpanded: function() {
let expandedY = this.actor.height - this._notificationBin.height; let expandedY = this.actor.height - this._notificationBin.height;
if (this._notificationBin.y != expandedY)
// Don't animate the notification to its new position if it has shrunk:
// there will be a very visible "gap" that breaks the illusion.
if (this._notificationBin.y < expandedY)
this._notificationBin.y = expandedY;
else if (this._notification.y != expandedY)
this._tween(this._notificationBin, '_notificationState', State.SHOWN, this._tween(this._notificationBin, '_notificationState', State.SHOWN,
{ y: expandedY, { y: expandedY,
time: ANIMATION_TIME, time: ANIMATION_TIME,

View File

@ -10,8 +10,6 @@ const Pango = imports.gi.Pango;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Params = imports.misc.params; const Params = imports.misc.params;
@ -50,10 +48,6 @@ ModalDialog.prototype = {
coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE }); coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE });
this._group.add_constraint(constraint); this._group.add_constraint(constraint);
global.focus_manager.add_group(this._group);
this._initialKeyFocus = this._group;
this._savedKeyFocus = null;
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy)); this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
this._actionKeys = {}; this._actionKeys = {};
@ -94,6 +88,10 @@ ModalDialog.prototype = {
{ expand: true, { expand: true,
x_align: St.Align.MIDDLE, x_align: St.Align.MIDDLE,
y_align: St.Align.END }); y_align: St.Align.END });
global.focus_manager.add_group(this._dialogLayout);
this._initialKeyFocus = this._dialogLayout;
this._savedKeyFocus = null;
}, },
setButtons: function(buttons) { setButtons: function(buttons) {
@ -195,6 +193,7 @@ ModalDialog.prototype = {
this.state = State.CLOSING; this.state = State.CLOSING;
this.popModal(timestamp); this.popModal(timestamp);
this._savedKeyFocus = null;
Tweener.addTween(this._group, Tweener.addTween(this._group,
{ opacity: 0, { opacity: 0,

View File

@ -7,8 +7,6 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Config = imports.misc.config; const Config = imports.misc.config;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -167,8 +165,11 @@ NotificationDaemon.prototype = {
// with a transient one from the same sender, so we // with a transient one from the same sender, so we
// always create a new source object for new transient notifications // always create a new source object for new transient notifications
// and never add it to this._sources . // and never add it to this._sources .
if (!isForTransientNotification && this._sources[pid]) if (!isForTransientNotification && this._sources[pid]) {
return this._sources[pid]; let source = this._sources[pid];
source.setTitle(title);
return source;
}
let source = new Source(title, pid); let source = new Source(title, pid);
source.setTransient(isForTransientNotification); source.setTransient(isForTransientNotification);
@ -189,9 +190,11 @@ NotificationDaemon.prototype = {
actions, hints, timeout) { actions, hints, timeout) {
let id; let id;
// Filter out notifications from Empathy, since we // Filter out chat and presence notifications from Empathy, since we
// handle that information from telepathyClient.js // handle that information from telepathyClient.js
if (appName == 'Empathy') { if (appName == 'Empathy' && (hints['category'] == 'im.received' ||
hints['category'] == 'presence.online' ||
hints['category'] == 'presence.offline')) {
// Ignore replacesId since we already sent back a // Ignore replacesId since we already sent back a
// NotificationClosed for that id. // NotificationClosed for that id.
id = nextNotificationId++; id = nextNotificationId++;

View File

@ -8,8 +8,6 @@ const Signals = imports.signals;
const Lang = imports.lang; const Lang = imports.lang;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;
const AppDisplay = imports.ui.appDisplay; const AppDisplay = imports.ui.appDisplay;
@ -222,7 +220,7 @@ Overview.prototype = {
} }
this._resetWindowSwitchTimeout(); this._resetWindowSwitchTimeout();
this._lastHoveredWindow = null; this._lastHoveredWindow = null;
DND.removeMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
this.endItemDrag(); this.endItemDrag();
}, },
@ -283,7 +281,8 @@ Overview.prototype = {
}, },
_onButtonPress: function(actor, event) { _onButtonPress: function(actor, event) {
if (this._scrollDirection == SwipeScrollDirection.NONE) if (this._scrollDirection == SwipeScrollDirection.NONE
|| event.get_button() != 1)
return; return;
let [stageX, stageY] = event.get_coords(); let [stageX, stageY] = event.get_coords();

View File

@ -9,8 +9,6 @@ const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Config = imports.misc.config; const Config = imports.misc.config;
const CtrlAltTab = imports.ui.ctrlAltTab; const CtrlAltTab = imports.ui.ctrlAltTab;
@ -260,10 +258,14 @@ AppMenuButton.prototype = {
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' }); this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
this._iconBox.connect('style-changed', this._iconBox.connect('style-changed',
Lang.bind(this, this._onIconBoxStyleChanged)); Lang.bind(this, this._onIconBoxStyleChanged));
this._iconBox.connect('notify::allocation',
Lang.bind(this, this._updateIconBoxClip));
this._container.add_actor(this._iconBox); this._container.add_actor(this._iconBox);
this._label = new TextShadower(); this._label = new TextShadower();
this._container.add_actor(this._label.actor); this._container.add_actor(this._label.actor);
this._iconBottomClip = 0;
this._quitMenu = new PopupMenu.PopupMenuItem(''); this._quitMenu = new PopupMenu.PopupMenuItem('');
this.menu.addMenuItem(this._quitMenu); this.menu.addMenuItem(this._quitMenu);
this._quitMenu.connect('activate', Lang.bind(this, this._onQuit)); this._quitMenu.connect('activate', Lang.bind(this, this._onQuit));
@ -300,6 +302,7 @@ AppMenuButton.prototype = {
this._visible = true; this._visible = true;
this.actor.show(); this.actor.show();
this.actor.reactive = true;
if (!this._targetIsCurrent) if (!this._targetIsCurrent)
return; return;
@ -316,6 +319,7 @@ AppMenuButton.prototype = {
return; return;
this._visible = false; this._visible = false;
this.actor.reactive = false;
if (!this._targetIsCurrent) { if (!this._targetIsCurrent) {
this.actor.hide(); this.actor.hide();
return; return;
@ -334,11 +338,16 @@ AppMenuButton.prototype = {
_onIconBoxStyleChanged: function() { _onIconBoxStyleChanged: function() {
let node = this._iconBox.get_theme_node(); let node = this._iconBox.get_theme_node();
let bottomClip = node.get_length('app-icon-bottom-clip'); this._iconBottomClip = node.get_length('app-icon-bottom-clip');
if (bottomClip > 0) this._updateIconBoxClip();
},
_updateIconBoxClip: function() {
let allocation = this._iconBox.allocation;
if (this._iconBottomClip > 0)
this._iconBox.set_clip(0, 0, this._iconBox.set_clip(0, 0,
this._iconBox.width, allocation.x2 - allocation.x1,
this._iconBox.height - bottomClip); allocation.y2 - allocation.y1 - this._iconBottomClip);
else else
this._iconBox.remove_clip(); this._iconBox.remove_clip();
}, },
@ -699,7 +708,7 @@ HotCorner.prototype = {
} }
}); });
Main.chrome.addActor(this.actor, { visibleInOverview: true, affectsStruts: false }); Main.chrome.addActor(this.actor, { affectsStruts: false });
}, },
destroy: function() { destroy: function() {
@ -767,7 +776,7 @@ HotCorner.prototype = {
_onCornerClicked : function() { _onCornerClicked : function() {
if (!Main.overview.animationInProgress) if (!Main.overview.animationInProgress)
this.maybeToggleOverviewOnClick(); this.maybeToggleOverviewOnClick();
return false; return true;
}, },
_onCornerLeft : function(actor, event) { _onCornerLeft : function(actor, event) {
@ -808,6 +817,8 @@ Panel.prototype = {
reactive: true }); reactive: true });
this.actor._delegate = this; this.actor._delegate = this;
this._statusArea = {};
Main.overview.connect('shown', Lang.bind(this, function () { Main.overview.connect('shown', Lang.bind(this, function () {
this.actor.add_style_class_name('in-overview'); this.actor.add_style_class_name('in-overview');
})); }));
@ -904,6 +915,7 @@ Panel.prototype = {
style_class: 'panel-button', style_class: 'panel-button',
reactive: true, reactive: true,
can_focus: true }); can_focus: true });
this._activities = this.button;
this.button.set_child(label); this.button.set_child(label);
this.button._delegate = this.button; this.button._delegate = this.button;
this.button._xdndTimeOut = 0; this.button._xdndTimeOut = 0;
@ -932,10 +944,10 @@ Panel.prototype = {
this._hotCorner = null; this._hotCorner = null;
let appMenuButton = new AppMenuButton(); this._appMenu = new AppMenuButton();
this._leftBox.add(appMenuButton.actor); this._leftBox.add(this._appMenu.actor);
this._menus.addMenu(appMenuButton.menu); this._menus.addMenu(this._appMenu.menu);
/* center */ /* center */
this._dateMenu = new DateMenu.DateMenuButton(); this._dateMenu = new DateMenu.DateMenuButton();
@ -954,12 +966,12 @@ Panel.prototype = {
this._rightBox.add(this._trayBox); this._rightBox.add(this._trayBox);
this._rightBox.add(this._statusBox); this._rightBox.add(this._statusBox);
this._statusmenu = new StatusMenu.StatusMenuButton(); this._userMenu = new StatusMenu.StatusMenuButton();
this._statusmenu.actor.name = 'panelStatus'; this._userMenu.actor.name = 'panelStatus';
this._rightBox.add(this._statusmenu.actor); this._rightBox.add(this._userMenu.actor);
// Synchronize the buttons pseudo classes with its corner // Synchronize the buttons pseudo classes with its corner
this._statusmenu.actor.connect('style-changed', Lang.bind(this, this._userMenu.actor.connect('style-changed', Lang.bind(this,
function(actor) { function(actor) {
let rtl = actor.get_direction() == St.TextDirection.RTL; let rtl = actor.get_direction() == St.TextDirection.RTL;
let corner = rtl ? this._leftCorner : this._rightCorner; let corner = rtl ? this._leftCorner : this._rightCorner;
@ -992,12 +1004,10 @@ Panel.prototype = {
this.button.checked = false; this.button.checked = false;
})); }));
Main.chrome.addActor(this.actor, { visibleInOverview: true }); Main.chrome.addActor(this.actor);
Main.chrome.addActor(this._leftCorner.actor, { visibleInOverview: true, Main.chrome.addActor(this._leftCorner.actor, { affectsStruts: false,
affectsStruts: false,
affectsInputRegion: false }); affectsInputRegion: false });
Main.chrome.addActor(this._rightCorner.actor, { visibleInOverview: true, Main.chrome.addActor(this._rightCorner.actor, { affectsStruts: false,
affectsStruts: false,
affectsInputRegion: false }); affectsInputRegion: false });
Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'start-here', Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'start-here',
@ -1042,11 +1052,13 @@ Panel.prototype = {
let indicator = new constructor(); let indicator = new constructor();
this._statusBox.add(indicator.actor); this._statusBox.add(indicator.actor);
this._menus.addMenu(indicator.menu); this._menus.addMenu(indicator.menu);
this._statusArea[role] = indicator;
} }
// PopupMenuManager depends on menus being added in order for // PopupMenuManager depends on menus being added in order for
// keyboard navigation // keyboard navigation
this._menus.addMenu(this._statusmenu.menu); this._menus.addMenu(this._userMenu.menu);
}, },
startupAnimation: function() { startupAnimation: function() {

View File

@ -26,12 +26,20 @@ Button.prototype = {
this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0); this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0);
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged)); this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress)); this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress));
Main.chrome.addActor(this.menu.actor, { visibleInOverview: true, Main.chrome.addActor(this.menu.actor, { affectsStruts: false });
affectsStruts: false });
this.menu.actor.hide(); this.menu.actor.hide();
}, },
_onButtonPress: function(actor, event) { _onButtonPress: function(actor, event) {
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 = global.get_primary_monitor();
this.menu.actor.style = ('max-height: ' +
Math.round(monitor.height - Main.panel.actor.height) +
'px;');
}
this.menu.toggle(); this.menu.toggle();
}, },

View File

@ -7,8 +7,6 @@ const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -270,10 +268,7 @@ PlacesManager.prototype = {
if (!GLib.file_test(this._bookmarksPath, GLib.FileTest.EXISTS)) if (!GLib.file_test(this._bookmarksPath, GLib.FileTest.EXISTS))
return; return;
let [success, bookmarksContent, len] = GLib.file_get_contents(this._bookmarksPath); let bookmarksContent = Shell.get_file_contents_utf8_sync(this._bookmarksPath);
if (!success)
return;
let bookmarks = bookmarksContent.split('\n'); let bookmarks = bookmarksContent.split('\n');

View File

@ -22,8 +22,6 @@
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const St = imports.gi.St; const St = imports.gi.St;

View File

@ -13,9 +13,6 @@ const Main = imports.ui.main;
const Params = imports.misc.params; const Params = imports.misc.params;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */ const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */
function PopupBaseMenuItem(params) { function PopupBaseMenuItem(params) {
@ -498,7 +495,7 @@ PopupSliderMenuItem.prototype = {
this._slider = new St.DrawingArea({ style_class: 'popup-slider-menu-item', reactive: true }); this._slider = new St.DrawingArea({ style_class: 'popup-slider-menu-item', reactive: true });
this.addActor(this._slider, { span: -1, expand: true }); this.addActor(this._slider, { span: -1, expand: true });
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint)); this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
this._slider.connect('button-press-event', Lang.bind(this, this._startDragging)); this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this._releaseId = this._motionId = 0; this._releaseId = this._motionId = 0;
@ -707,11 +704,36 @@ PopupSwitchMenuItem.prototype = {
this._switch = new Switch(active); this._switch = new Switch(active);
this.addActor(this.label); this.addActor(this.label);
this.addActor(this._switch.actor, { align: St.Align.END });
this.connect('activate', Lang.bind(this,function(from) { this._statusBin = new St.Bin({ x_align: St.Align.END });
this.addActor(this._statusBin, { align: St.Align.END });
this._statusLabel = new St.Label({ text: '',
style_class: 'popup-inactive-menu-item'
});
this._switch = new Switch(false);
this._statusBin.child = this._switch.actor;
},
setStatus: function(text) {
if (text != null) {
this._statusLabel.text = text;
this._statusBin.child = this._statusLabel;
this.actor.reactive = false;
this.actor.can_focus = false;
} else {
this._statusBin.child = this._switch.actor;
this.actor.reactive = true;
this.actor.can_focus = true;
}
},
activate: function(event) {
if (this._switch.actor.mapped) {
this.toggle(); this.toggle();
})); }
PopupBaseMenuItem.prototype.activate.call(this, event);
}, },
toggle: function() { toggle: function() {
@ -766,6 +788,7 @@ PopupMenuBase.prototype = {
this.box = new St.BoxLayout({ vertical: true }); this.box = new St.BoxLayout({ vertical: true });
} }
this.box.connect_after('queue-relayout', Lang.bind(this, this._menuQueueRelayout)); this.box.connect_after('queue-relayout', Lang.bind(this, this._menuQueueRelayout));
this.length = 0;
this.isOpen = false; this.isOpen = false;
@ -773,6 +796,10 @@ PopupMenuBase.prototype = {
// for the menu which causes its prelight state to freeze // for the menu which causes its prelight state to freeze
this.blockSourceEvents = false; this.blockSourceEvents = false;
// Can be set while a menu is up to let all events through without special
// menu handling useful for scrollbars in menus, and probably not otherwise.
this.passEvents = false;
this._activeMenuItem = null; this._activeMenuItem = null;
}, },
@ -851,6 +878,8 @@ PopupMenuBase.prototype = {
menuItem.connect('destroy', Lang.bind(this, function() { menuItem.connect('destroy', Lang.bind(this, function() {
menuItem.disconnect(menuItem._subMenuActivateId); menuItem.disconnect(menuItem._subMenuActivateId);
menuItem.disconnect(menuItem._subMenuActiveChangeId); menuItem.disconnect(menuItem._subMenuActiveChangeId);
this.length--;
})); }));
} else if (menuItem instanceof PopupSubMenuMenuItem) { } else if (menuItem instanceof PopupSubMenuMenuItem) {
if (before_item == null) if (before_item == null)
@ -867,6 +896,8 @@ PopupMenuBase.prototype = {
this._connectItemSignals(menuItem); this._connectItemSignals(menuItem);
else else
throw TypeError("Invalid argument to PopupMenuBase.addMenuItem()"); throw TypeError("Invalid argument to PopupMenuBase.addMenuItem()");
this.length++;
}, },
getColumnWidths: function() { getColumnWidths: function() {
@ -1038,30 +1069,90 @@ PopupSubMenu.prototype = {
__proto__: PopupMenuBase.prototype, __proto__: PopupMenuBase.prototype,
_init: function(sourceActor, sourceArrow) { _init: function(sourceActor, sourceArrow) {
PopupMenuBase.prototype._init.call(this, sourceActor, 'popup-sub-menu'); PopupMenuBase.prototype._init.call(this, sourceActor);
this._arrow = sourceArrow; this._arrow = sourceArrow;
this._arrow.rotation_center_z_gravity = Clutter.Gravity.CENTER; this._arrow.rotation_center_z_gravity = Clutter.Gravity.CENTER;
this.actor = this.box; // Since a function of a submenu might be to provide a "More.." expander
// with long content, we make it scrollable - the scrollbar will only take
// effect if a CSS max-height is set on the top menu.
this.actor = new St.ScrollView({ style_class: 'popup-sub-menu',
hscrollbar_policy: Gtk.PolicyType.NEVER,
vscrollbar_policy: Gtk.PolicyType.NEVER });
// StScrollbar plays dirty tricks with events, calling
// clutter_set_motion_events_enabled (FALSE) during the scroll; this
// confuses our event tracking, so we just turn it off during the
// scroll.
let vscroll = this.actor.get_vscroll_bar();
vscroll.connect('scroll-start',
Lang.bind(this, function() {
let topMenu = this._getTopMenu();
if (topMenu)
topMenu.passEvents = true;
}));
vscroll.connect('scroll-stop',
Lang.bind(this, function() {
let topMenu = this._getTopMenu();
if (topMenu)
topMenu.passEvents = false;
}));
this.actor.add_actor(this.box);
this.actor._delegate = this; this.actor._delegate = this;
this.actor.clip_to_allocation = true; this.actor.clip_to_allocation = true;
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
this.actor.hide(); this.actor.hide();
}, },
_getTopMenu: function() {
let actor = this.actor.get_parent();
while (actor) {
if (actor._delegate && actor._delegate instanceof PopupMenu)
return actor._delegate;
actor = actor.get_parent();
}
return null;
},
_needsScrollbar: function() {
let topMenu = this._getTopMenu();
let [topMinHeight, topNaturalHeight] = topMenu.actor.get_preferred_height(-1);
let topThemeNode = topMenu.actor.get_theme_node();
let topMaxHeight = topThemeNode.get_max_height();
return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight;
},
open: function(animate) { open: function(animate) {
if (this.isOpen) if (this.isOpen)
return; return;
this.isOpen = true; this.isOpen = true;
// we don't implement the !animate case because that doesn't
// currently get used...
let [naturalHeight, minHeight] = this.actor.get_preferred_height(-1);
this.actor.height = 0;
this.actor.show(); this.actor.show();
let needsScrollbar = this._needsScrollbar();
// St.ScrollView always requests space horizontally for a possible vertical
// scrollbar if in AUTOMATIC mode. Doing better would require implementation
// of width-for-height in St.BoxLayout and St.ScrollView. This looks bad
// when we *don't* need it, so turn off the scrollbar when that's true.
// Dynamic changes in whether we need it aren't handled properly.
this.actor.vscrollbar_policy =
needsScrollbar ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
// It looks funny if we animate with a scrollbar (at what point is
// the scrollbar added?) so just skip that case
if (animate && needsScrollbar)
animate = false;
if (animate) {
let [minHeight, naturalHeight] = this.actor.get_preferred_height(-1);
this.actor.height = 0;
this.actor._arrow_rotation = this._arrow.rotation_angle_z; this.actor._arrow_rotation = this._arrow.rotation_angle_z;
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
{ _arrow_rotation: 90, { _arrow_rotation: 90,
@ -1077,6 +1168,10 @@ PopupSubMenu.prototype = {
this.emit('open-state-changed', true); this.emit('open-state-changed', true);
} }
}); });
} else {
this._arrow.rotation_angle_z = 90;
this.emit('open-state-changed', true);
}
}, },
close: function(animate) { close: function(animate) {
@ -1088,6 +1183,9 @@ PopupSubMenu.prototype = {
if (this._activeMenuItem) if (this._activeMenuItem)
this._activeMenuItem.setActive(false); this._activeMenuItem.setActive(false);
if (animate && this._needsScrollbar())
animate = false;
if (animate) { if (animate) {
this.actor._arrow_rotation = this._arrow.rotation_angle_z; this.actor._arrow_rotation = this._arrow.rotation_angle_z;
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
@ -1423,8 +1521,12 @@ PopupMenuManager.prototype = {
this._owner.menuEventFilter(event)) this._owner.menuEventFilter(event))
return true; return true;
if (this._activeMenu != null && this._activeMenu.passEvents)
return false;
let activeMenuContains = this._eventIsOnActiveMenu(event); let activeMenuContains = this._eventIsOnActiveMenu(event);
let eventType = event.type(); let eventType = event.type();
if (eventType == Clutter.EventType.BUTTON_RELEASE) { if (eventType == Clutter.EventType.BUTTON_RELEASE) {
if (activeMenuContains) { if (activeMenuContains) {
return false; return false;

View File

@ -8,8 +8,6 @@ const Meta = imports.gi.Meta;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const FileUtils = imports.misc.fileUtils; const FileUtils = imports.misc.fileUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -25,6 +23,10 @@ const HISTORY_KEY = 'command-history';
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const DISABLE_COMMAND_LINE_KEY = 'disable-command-line'; const DISABLE_COMMAND_LINE_KEY = 'disable-command-line';
const TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal';
const EXEC_KEY = 'exec';
const EXEC_ARG_KEY = 'exec-arg';
const DIALOG_GROW_TIME = 0.1; const DIALOG_GROW_TIME = 0.1;
function CommandCompleter() { function CommandCompleter() {
@ -171,6 +173,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' }); ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA }); this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
this._terminalSettings = new Gio.Settings({ schema: TERMINAL_SCHEMA });
global.settings.connect('changed::development-tools', Lang.bind(this, function () { global.settings.connect('changed::development-tools', Lang.bind(this, function () {
this._enableInternalCommands = global.settings.get_boolean('development-tools'); this._enableInternalCommands = global.settings.get_boolean('development-tools');
})); }));
@ -191,7 +194,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
}), }),
'debugexit': Lang.bind(this, function() { 'debugexit': Lang.bind(this, function() {
Meta.exit(Meta.ExitCode.ERROR); Meta.quit(Meta.ExitCode.ERROR);
}), }),
// rt is short for "reload theme" // rt is short for "reload theme"
@ -311,8 +314,11 @@ __proto__: ModalDialog.ModalDialog.prototype,
f(); f();
} else if (input) { } else if (input) {
try { try {
if (inTerminal) if (inTerminal) {
command = 'gnome-terminal -x ' + input; let exec = this._terminalSettings.get_string(EXEC_KEY);
let exec_arg = this._terminalSettings.get_string(EXEC_ARG_KEY);
command = exec + ' ' + exec_arg + ' ' + input;
}
Util.trySpawnCommandLine(command); Util.trySpawnCommandLine(command);
} catch (e) { } catch (e) {
// Mmmh, that failed - see if @input matches an existing file // Mmmh, that failed - see if @input matches an existing file

View File

@ -7,9 +7,6 @@ const Signals = imports.signals;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const FileUtils = imports.misc.fileUtils; const FileUtils = imports.misc.fileUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -160,7 +157,7 @@ SearchProvider.prototype = {
}, },
/** /**
* getResultInfo: * getResultMeta:
* @id: Result identifier string * @id: Result identifier string
* *
* Return an object with 'id', 'name', (both strings) and 'createIcon' * Return an object with 'id', 'name', (both strings) and 'createIcon'
@ -274,13 +271,9 @@ OpenSearchSystem.prototype = {
}, },
_addProvider: function(fileName) { _addProvider: function(fileName) {
let file = Gio.file_new_for_path(global.datadir + '/search_providers/' + fileName); let path = global.datadir + '/search_providers/' + fileName;
let source = ''; let source = Shell.get_file_contents_utf8_sync(path);
let [success, name, url, langs, icon_uri] = Shell.parse_search_provider(source);
file.load_contents_async(null, Lang.bind(this, function (obj, res) {
let [success, source] = file.load_contents_finish(res);
if (source) {
let [success, name, url, langs, icon_uri] = global.parse_search_provider(source);
let provider ={ name: name, let provider ={ name: name,
url: url, url: url,
id: this._providers.length, id: this._providers.length,
@ -290,8 +283,6 @@ OpenSearchSystem.prototype = {
this._providers.push(provider); this._providers.push(provider);
this.emit('changed'); this.emit('changed');
} }
}
}));
}, },
_refresh: function() { _refresh: function() {

View File

@ -2,8 +2,6 @@
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const St = imports.gi.St; const St = imports.gi.St;
@ -30,6 +28,7 @@ SearchResult.prototype = {
x_align: St.Align.START, x_align: St.Align.START,
y_fill: true }); y_fill: true });
this.actor._delegate = this; this.actor._delegate = this;
this._dragActorSource = null;
let content = provider.createResultActor(metaInfo, terms); let content = provider.createResultActor(metaInfo, terms);
if (content == null) { if (content == null) {
@ -39,6 +38,11 @@ SearchResult.prototype = {
let icon = new IconGrid.BaseIcon(this.metaInfo['name'], let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] }); { createIcon: this.metaInfo['createIcon'] });
content.set_child(icon.actor); content.set_child(icon.actor);
this._dragActorSource = icon.icon;
this.actor.label_actor = icon.label;
} else {
if (content._delegate && content._delegate.getDragActorSource)
this._dragActorSource = content._delegate.getDragActorSource();
} }
this._content = content; this._content = content;
this.actor.set_child(content); this.actor.set_child(content);
@ -77,11 +81,14 @@ SearchResult.prototype = {
}, },
getDragActorSource: function() { getDragActorSource: function() {
return this.metaInfo['icon']; if (this._dragActorSource)
return this._dragActorSource;
// not exactly right, but alignment problems are hard to notice
return this._content;
}, },
getDragActor: function(stageX, stageY) { getDragActor: function(stageX, stageY) {
return new Clutter.Clone({ source: this.metaInfo['icon'] }); return this.metaInfo['createIcon'](Main.overview.dash.iconSize);
}, },
shellWorkspaceLaunch: function(params) { shellWorkspaceLaunch: function(params) {
@ -192,7 +199,7 @@ SearchResults.prototype = {
let scrollView = new St.ScrollView({ x_fill: true, let scrollView = new St.ScrollView({ x_fill: true,
y_fill: false, y_fill: false,
vfade: true }); style_class: 'vfade' });
scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
scrollView.add_actor(this._content); scrollView.add_actor(this._content);
@ -258,6 +265,7 @@ SearchResults.prototype = {
let title = new St.Label({ text: provider.name, let title = new St.Label({ text: provider.name,
style_class: 'dash-search-button-label' }); style_class: 'dash-search-button-label' });
button.label_actor = title;
bin.set_child(title); bin.set_child(title);
button.set_child(bin); button.set_child(bin);
provider.actor = button; provider.actor = button;
@ -332,6 +340,13 @@ SearchResults.prototype = {
let terms = this._searchSystem.getTerms(); let terms = this._searchSystem.getTerms();
this._openSearchSystem.setSearchTerms(terms); 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.
this._content.hide();
for (let i = 0; i < results.length; i++) { for (let i = 0; i < results.length; i++) {
let [provider, providerResults] = results[i]; let [provider, providerResults] = results[i];
let meta = this._metaForProvider(provider); let meta = this._metaForProvider(provider);
@ -342,6 +357,8 @@ SearchResults.prototype = {
if (this._selectedOpenSearchButton == -1) if (this._selectedOpenSearchButton == -1)
this.selectDown(false); this.selectDown(false);
this._content.show();
return true; return true;
}, },

View File

@ -10,13 +10,11 @@ const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable'; const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
const KEY_BOUNCE_KEYS_ENABLED = 'bouncekeys-enable'; const KEY_BOUNCE_KEYS_ENABLED = 'bouncekeys-enable';
@ -91,6 +89,7 @@ ATIndicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Universal Access Settings"), function() { this.menu.addAction(_("Universal Access Settings"), function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().get_app('gnome-universal-access-panel.desktop'); let app = Shell.AppSystem.get_default().get_app('gnome-universal-access-panel.desktop');
app.activate(-1); app.activate(-1);
}); });

View File

@ -16,9 +16,6 @@ const MessageTray = imports.ui.messageTray;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const ConnectionState = { const ConnectionState = {
DISCONNECTED: 0, DISCONNECTED: 0,
CONNECTED: 1, CONNECTED: 1,
@ -93,6 +90,7 @@ Indicator.prototype = {
this._updateFullMenu(); this._updateFullMenu();
this.menu.addAction(_("Bluetooth Settings"), function() { this.menu.addAction(_("Bluetooth Settings"), function() {
Main.overview.hide()
let app = Shell.AppSystem.get_default().get_app('bluetooth-properties.desktop'); let app = Shell.AppSystem.get_default().get_app('bluetooth-properties.desktop');
app.activate(-1); app.activate(-1);
}); });
@ -111,7 +109,11 @@ Indicator.prototype = {
current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED; current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED;
this._killswitch.setToggleState(on); this._killswitch.setToggleState(on);
this._killswitch.actor.reactive = can_toggle; if (can_toggle)
this._killswitch.setStatus(null);
else
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
this._killswitch.setStatus(_("hardware disabled"));
if (has_adapter) if (has_adapter)
this.actor.show(); this.actor.show();
@ -127,13 +129,6 @@ Indicator.prototype = {
} }
}, },
_deviceCompare: function(d1, d2) {
return d1.device_path == d2.device_path &&
d1.bdaddr == d2.bdaddr &&
d1.can_connect == d2.can_connect &&
d1.capabilities == d2.capabilities;
},
_updateDevices: function() { _updateDevices: function() {
let devices = this._applet.get_devices(); let devices = this._applet.get_devices();
@ -142,12 +137,8 @@ Indicator.prototype = {
let item = this._deviceItems[i]; let item = this._deviceItems[i];
let destroy = true; let destroy = true;
for (let j = 0; j < devices.length; j++) { for (let j = 0; j < devices.length; j++) {
// we need to deep compare because BluetoothSimpleDevice is a boxed type if (item._device.device_path == devices[j].device_path) {
// (but we take advantage of that, because _skip will disappear the next this._updateDeviceItem(item, devices[j]);
// time get_devices() is called)
if (this._deviceCompare(item._device, devices[j])) {
item.label.text = devices[j].alias;
devices[j]._skip = true;
destroy = false; destroy = false;
break; break;
} }
@ -162,7 +153,7 @@ Indicator.prototype = {
this._hasDevices = newlist.length > 0; this._hasDevices = newlist.length > 0;
for (let i = 0; i < devices.length; i++) { for (let i = 0; i < devices.length; i++) {
let d = devices[i]; let d = devices[i];
if (d._skip) if (d._item)
continue; continue;
let item = this._createDeviceItem(d); let item = this._createDeviceItem(d);
if (item) { if (item) {
@ -177,23 +168,62 @@ Indicator.prototype = {
this._deviceSep.actor.hide(); this._deviceSep.actor.hide();
}, },
_updateDeviceItem: function(item, device) {
if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) {
item.destroy();
return;
}
let prevDevice = item._device;
let prevCapabilities = prevDevice.capabilities;
let prevCanConnect = prevDevice.can_connect;
// adopt the new device object
item._device = device;
device._item = item;
// update properties
item.label.text = device.alias;
if (prevCapabilities != device.capabilities ||
prevCanConnect != device.can_connect) {
// need to rebuild the submenu
item.menu.removeAll();
this._buildDeviceSubMenu(item, device);
}
// update connected property
if (device.can_connect)
item._connectedMenuitem.setToggleState(device.connected);
},
_createDeviceItem: function(device) { _createDeviceItem: function(device) {
if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE)
return null; return null;
let item = new PopupMenu.PopupSubMenuMenuItem(device.alias); let item = new PopupMenu.PopupSubMenuMenuItem(device.alias);
item._device = device;
// adopt the device object, and add a back link
item._device = device;
device._item = item;
this._buildDeviceSubMenu(item, device);
return item;
},
_buildDeviceSubMenu: function(item, device) {
if (device.can_connect) { if (device.can_connect) {
item._connected = device.connected; item._connected = device.connected;
let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
item._connectedMenuitem.connect('toggled', Lang.bind(this, function() {
menuitem.connect('toggled', Lang.bind(this, function() {
if (item._connected > ConnectionState.CONNECTED) { if (item._connected > ConnectionState.CONNECTED) {
// operation already in progress, revert // operation already in progress, revert
// (should not happen anyway)
menuitem.setToggleState(menuitem.state); menuitem.setToggleState(menuitem.state);
} }
if (item._connected) { if (item._connected) {
item._connected = ConnectionState.DISCONNECTING; item._connected = ConnectionState.DISCONNECTING;
menuitem.setStatus(_("disconnecting..."));
this._applet.disconnect_device(item._device.device_path, function(applet, success) { this._applet.disconnect_device(item._device.device_path, function(applet, success) {
if (success) { // apply if (success) { // apply
item._connected = ConnectionState.DISCONNECTED; item._connected = ConnectionState.DISCONNECTED;
@ -202,9 +232,11 @@ Indicator.prototype = {
item._connected = ConnectionState.CONNECTED; item._connected = ConnectionState.CONNECTED;
menuitem.setToggleState(true); menuitem.setToggleState(true);
} }
menuitem.setStatus(null);
}); });
} else { } else {
item._connected = ConnectionState.CONNECTING; item._connected = ConnectionState.CONNECTING;
menuitem.setStatus(_("connecting..."));
this._applet.connect_device(item._device.device_path, function(applet, success) { this._applet.connect_device(item._device.device_path, function(applet, success) {
if (success) { // apply if (success) { // apply
item._connected = ConnectionState.CONNECTED; item._connected = ConnectionState.CONNECTED;
@ -213,11 +245,12 @@ Indicator.prototype = {
item._connected = ConnectionState.DISCONNECTED; item._connected = ConnectionState.DISCONNECTED;
menuitem.setToggleState(false); menuitem.setToggleState(false);
} }
menuitem.setStatus(null);
}); });
} }
})); }));
item.menu.addMenuItem(menuitem); item.menu.addMenuItem(item._connectedMenuitem);
} }
if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) { if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) {
@ -263,8 +296,6 @@ Indicator.prototype = {
default: default:
break; break;
} }
return item;
}, },
_updateFullMenu: function() { _updateFullMenu: function() {

View File

@ -9,13 +9,11 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
function LayoutMenuItem() { function LayoutMenuItem() {
this._init.apply(this, arguments); this._init.apply(this, arguments);
} }
@ -71,9 +69,11 @@ XKBIndicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Show Keyboard Layout..."), Lang.bind(this, function() { this.menu.addAction(_("Show Keyboard Layout..."), Lang.bind(this, function() {
Main.overview.hide();
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]); Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
})); }));
this.menu.addAction(_("Localization Settings"), function() { this.menu.addAction(_("Localization Settings"), function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().get_app('gnome-region-panel.desktop'); let app = Shell.AppSystem.get_default().get_app('gnome-region-panel.desktop');
app.activate(-1); app.activate(-1);
}); });

File diff suppressed because it is too large Load Diff

View File

@ -7,13 +7,11 @@ const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const BUS_NAME = 'org.gnome.PowerManager'; const BUS_NAME = 'org.gnome.PowerManager';
const OBJECT_PATH = '/org/gnome/PowerManager'; const OBJECT_PATH = '/org/gnome/PowerManager';
@ -83,6 +81,7 @@ Indicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Power Settings"),function() { this.menu.addAction(_("Power Settings"),function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().get_app('gnome-power-panel.desktop'); let app = Shell.AppSystem.get_default().get_app('gnome-power-panel.desktop');
app.activate(-1); app.activate(-1);
}); });
@ -115,15 +114,15 @@ Indicator.prototype = {
let timestring; let timestring;
if (time > 60) { if (time > 60) {
if (minutes == 0) { if (minutes == 0) {
timestring = Gettext.ngettext("%d hour remaining", "%d hours remaining", hours).format(hours); timestring = ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
} else { } else {
/* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */ /* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
let template = _("%d %s %d %s remaining"); let template = _("%d %s %d %s remaining");
timestring = template.format (hours, Gettext.ngettext("hour", "hours", hours), minutes, Gettext.ngettext("minute", "minutes", minutes)); timestring = template.format (hours, ngettext("hour", "hours", hours), minutes, ngettext("minute", "minutes", minutes));
} }
} else } else
timestring = Gettext.ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes); timestring = ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes);
this._batteryItem.label.text = timestring; this._batteryItem.label.text = timestring;
} }
this._primaryPercentage.text = Math.round(percentage) + '%'; this._primaryPercentage.text = Math.round(percentage) + '%';

View File

@ -9,13 +9,11 @@ const Gvc = imports.gi.Gvc;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util; const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */ const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
const VOLUME_NOTIFY_ID = 1; const VOLUME_NOTIFY_ID = 1;
@ -64,6 +62,7 @@ Indicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Sound Settings"), function() { this.menu.addAction(_("Sound Settings"), function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().get_app('gnome-sound-panel.desktop'); let app = Shell.AppSystem.get_default().get_app('gnome-sound-panel.desktop');
app.activate(-1); app.activate(-1);
}); });

View File

@ -9,8 +9,6 @@ const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Tp = imports.gi.TelepathyGLib; const Tp = imports.gi.TelepathyGLib;
const UPowerGlib = imports.gi.UPowerGlib; const UPowerGlib = imports.gi.UPowerGlib;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const GnomeSession = imports.misc.gnomeSession; const GnomeSession = imports.misc.gnomeSession;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -28,7 +26,8 @@ const DISABLE_LOG_OUT_KEY = 'disable-log-out';
const ScreenSaverInterface = { const ScreenSaverInterface = {
name: BUS_NAME, name: BUS_NAME,
methods: [ { name: 'Lock', inSignature: '' } ] methods: [ { name: 'Lock', inSignature: '' },
{ name: 'SetActive', inSignature: 'b' }]
}; };
let ScreenSaverProxy = DBus.makeProxyClass(ScreenSaverInterface); let ScreenSaverProxy = DBus.makeProxyClass(ScreenSaverInterface);
@ -59,6 +58,7 @@ StatusMenuButton.prototype = {
this._presence = new GnomeSession.Presence(); this._presence = new GnomeSession.Presence();
this._presenceItems = {}; this._presenceItems = {};
this._session = new GnomeSession.SessionManager(); this._session = new GnomeSession.SessionManager();
this._haveShutdown = true;
this._account_mgr = Tp.AccountManager.dup() this._account_mgr = Tp.AccountManager.dup()
@ -91,12 +91,25 @@ StatusMenuButton.prototype = {
Lang.bind(this, this._updateSwitchUser)); Lang.bind(this, this._updateSwitchUser));
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY, this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
Lang.bind(this, this._updateLogout)); Lang.bind(this, this._updateLogout));
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY, this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
Lang.bind(this, this._updateLockScreen)); Lang.bind(this, this._updateLockScreen));
this._updateSwitchUser(); this._updateSwitchUser();
this._updateLogout(); this._updateLogout();
this._updateLockScreen(); this._updateLockScreen();
// Whether shutdown is available or not depends on both lockdown
// settings (disable-log-out) and Polkit policy - the latter doesn't
// notify, so we update the menu item each time the menu opens or
// the lockdown setting changes, which should be close enough.
this.menu.connect('open-state-changed', Lang.bind(this,
function(menu, open) {
if (open)
this._updateHaveShutdown();
}));
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
Lang.bind(this, this._updateHaveShutdown));
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff)); this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
}, },
@ -113,13 +126,25 @@ StatusMenuButton.prototype = {
}, },
_updateSessionSeparator: function() { _updateSessionSeparator: function() {
let showSeparator = this._loginScreenItem.actor.visible || let sessionItemsVisible = this._loginScreenItem.actor.visible ||
this._logoutItem.actor.visible || this._logoutItem.actor.visible ||
this._lockScreenItem.actor.visible; this._lockScreenItem.actor.visible;
if (showSeparator)
let showSessionSeparator = sessionItemsVisible &&
this._suspendOrPowerOffItem.actor.visible;
let showSettingsSeparator = sessionItemsVisible ||
this._suspendOrPowerOffItem.actor.visible;
if (showSessionSeparator)
this._sessionSeparator.actor.show(); this._sessionSeparator.actor.show();
else else
this._sessionSeparator.actor.hide(); this._sessionSeparator.actor.hide();
if (showSettingsSeparator)
this._settingsSeparator.actor.show();
else
this._settingsSeparator.actor.hide();
}, },
_updateSwitchUser: function() { _updateSwitchUser: function() {
@ -149,16 +174,34 @@ StatusMenuButton.prototype = {
this._updateSessionSeparator(); this._updateSessionSeparator();
}, },
_updateHaveShutdown: function() {
this._session.CanShutdownRemote(Lang.bind(this,
function(result, error) {
if (!error) {
this._haveShutdown = result;
this._updateSuspendOrPowerOff();
}
}));
},
_updateSuspendOrPowerOff: function() { _updateSuspendOrPowerOff: function() {
this._haveSuspend = this._upClient.get_can_suspend(); this._haveSuspend = this._upClient.get_can_suspend();
if (!this._suspendOrPowerOffItem) if (!this._suspendOrPowerOffItem)
return; return;
if (!this._haveShutdown && !this._haveSuspend)
this._suspendOrPowerOffItem.actor.hide();
else
this._suspendOrPowerOffItem.actor.show();
this._updateSessionSeparator();
// If we can't suspend show Power Off... instead // If we can't suspend show Power Off... instead
// and disable the alt key // and disable the alt key
if (!this._haveSuspend) { if (!this._haveSuspend) {
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null); this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
} else if (!this._haveShutdown) {
this._suspendOrPowerOffItem.updateText(_("Suspend"), null);
} else { } else {
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off...")); this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
} }
@ -204,6 +247,7 @@ StatusMenuButton.prototype = {
item = new PopupMenu.PopupSeparatorMenuItem(); item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item); this.menu.addMenuItem(item);
this._settingsSeparator = item;
item = new PopupMenu.PopupMenuItem(_("Lock Screen")); item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
item.connect('activate', Lang.bind(this, this._onLockScreenActivate)); item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
@ -271,7 +315,7 @@ StatusMenuButton.prototype = {
if (this._haveSuspend && if (this._haveSuspend &&
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) { this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
this._screenSaverProxy.LockRemote(Lang.bind(this, function() { this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() {
this._upClient.suspend_sync(null); this._upClient.suspend_sync(null);
})); }));
} else { } else {

View File

@ -9,9 +9,6 @@ const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
const Tpl = imports.gi.TelepathyLogger; const Tpl = imports.gi.TelepathyLogger;
const Tp = imports.gi.TelepathyGLib; const Tp = imports.gi.TelepathyGLib;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const C_ = Gettext.pgettext;
const History = imports.misc.history; const History = imports.misc.history;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -80,19 +77,20 @@ Client.prototype = {
// The second argument, recover, means _observeChannels will be run // The second argument, recover, means _observeChannels will be run
// for any existing channel as well. // for any existing channel as well.
let dbus = Tp.DBusDaemon.dup(); let dbus = Tp.DBusDaemon.dup();
this._observer = Tp.SimpleObserver.new(dbus, true, 'GnomeShell', true, this._tpClient = new Shell.TpClient({ 'dbus_daemon': dbus,
'name': 'GnomeShell',
'uniquify-name': true })
this._tpClient.set_observe_channels_func(
Lang.bind(this, this._observeChannels)); Lang.bind(this, this._observeChannels));
this._tpClient.set_approve_channels_func(
// We only care about single-user text-based chats Lang.bind(this, this._approveChannels));
let props = {}; this._tpClient.set_handle_channels_func(
props[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT; Lang.bind(this, this._handleChannels));
props[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE] = Tp.HandleType.CONTACT;
this._observer.add_observer_filter(props);
try { try {
this._observer.register(); this._tpClient.register();
} catch (e) { } catch (e) {
throw new Error('Couldn\'t register SimpleObserver. Error: \n' + e); throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
} }
}, },
@ -105,7 +103,7 @@ Client.prototype = {
this._finishObserveChannels(account, conn, channels, context); this._finishObserveChannels(account, conn, channels, context);
} else { } else {
Shell.get_self_contact_features(conn, Shell.get_self_contact_features(conn,
contactFeatures.length, contactFeatures, contactFeatures,
Lang.bind(this, function() { Lang.bind(this, function() {
this._finishObserveChannels(account, conn, channels, context); this._finishObserveChannels(account, conn, channels, context);
})); }));
@ -125,8 +123,8 @@ Client.prototype = {
continue; continue;
/* Request a TpContact */ /* Request a TpContact */
Shell.get_tp_contacts(conn, 1, [targetHandle], Shell.get_tp_contacts(conn, [targetHandle],
contactFeatures.length, contactFeatures, contactFeatures,
Lang.bind(this, function (connection, contacts, failed) { Lang.bind(this, function (connection, contacts, failed) {
if (contacts.length < 1) if (contacts.length < 1)
return; return;
@ -143,30 +141,82 @@ Client.prototype = {
if (this._sources[channel.get_object_path()]) if (this._sources[channel.get_object_path()])
return; return;
let source = new Source(account, conn, channel, contact); let source = new Source(account, conn, channel, contact, this._tpClient);
this._sources[channel.get_object_path()] = source; this._sources[channel.get_object_path()] = source;
source.connect('destroy', Lang.bind(this, source.connect('destroy', Lang.bind(this,
function() { function() {
if (this._tpClient.is_handling_channel(channel)) {
// The chat box has been destroyed so it can't
// handle the channel any more.
channel.close_async(function(src, result) {
channel.close_finish(result);
});
}
delete this._sources[channel.get_object_path()]; delete this._sources[channel.get_object_path()];
})); }));
},
_handlingChannels: function(account, conn, channels) {
let len = channels.length;
for (let i = 0; i < len; i++) {
let channel = channels[i];
// We can only handle text channel, so close any other channel
if (!(channel instanceof Tp.TextChannel)) {
channel.close_async(null);
continue;
}
if (this._tpClient.is_handling_channel(channel)) {
// We are already handling the channel, display the source
let source = this._sources[channel.get_object_path()];
if (source)
source.notify();
}
}
},
_approveChannels: function(approver, account, conn, channels,
dispatchOp, context) {
// Approve the channels right away as we are going to handle it
dispatchOp.claim_with_async(this._tpClient,
Lang.bind (this, function(dispatchOp, result) {
try {
dispatchOp.claim_with_finish(result);
this._handlingChannels(account, conn, channels);
} catch (err) {
global.logError('Failed to Claim channel: ' + err);
}}));
context.accept();
},
_handleChannels: function(handler, account, conn, channels,
requests, user_action_time, context) {
this._handlingChannels(account, conn, channels);
context.accept();
} }
}; };
function Source(account, conn, channel, contact) { function Source(account, conn, channel, contact, client) {
this._init(account, conn, channel, contact); this._init(account, conn, channel, contact, client);
} }
Source.prototype = { Source.prototype = {
__proto__: MessageTray.Source.prototype, __proto__: MessageTray.Source.prototype,
_init: function(account, conn, channel, contact) { _init: function(account, conn, channel, contact, client) {
MessageTray.Source.prototype._init.call(this, contact.get_alias()); MessageTray.Source.prototype._init.call(this, contact.get_alias());
this.isChat = true; this.isChat = true;
this._account = account; this._account = account;
this._contact = contact; this._contact = contact;
this._client = client;
this._pendingMessages = [];
this._conn = conn; this._conn = conn;
this._channel = channel; this._channel = channel;
@ -175,10 +225,21 @@ Source.prototype = {
this._notification = new Notification(this); this._notification = new Notification(this);
this._notification.setUrgency(MessageTray.Urgency.HIGH); this._notification.setUrgency(MessageTray.Urgency.HIGH);
// We ack messages when the message box is collapsed if user has
// interacted with it before and so read the messages:
// - user clicked on it the tray
// - user expanded the notification by hovering over the toaster notification
this._shouldAck = false;
this.connect('summary-item-clicked', Lang.bind(this, this._summaryItemClicked));
this._notification.connect('expanded', Lang.bind(this, this._notificationExpanded));
this._notification.connect('collapsed', Lang.bind(this, this._notificationCollapsed));
this._presence = contact.get_presence_type(); this._presence = contact.get_presence_type();
this._sentId = this._channel.connect('message-sent', Lang.bind(this, this._messageSent)); this._sentId = this._channel.connect('message-sent', Lang.bind(this, this._messageSent));
this._receivedId = this._channel.connect('message-received', Lang.bind(this, this._messageReceived)); this._receivedId = this._channel.connect('message-received', Lang.bind(this, this._messageReceived));
this._pendingId = this._channel.connect('pending-message-removed', Lang.bind(this, this._pendingRemoved));
this._setSummaryIcon(this.createNotificationIcon()); this._setSummaryIcon(this.createNotificationIcon());
@ -195,7 +256,7 @@ Source.prototype = {
_updateAlias: function() { _updateAlias: function() {
let oldAlias = this.title; let oldAlias = this.title;
this.title = this._contact.get_alias(); this.setTitle(this._contact.get_alias());
this._notification.appendAliasChange(oldAlias, this.title); this._notification.appendAliasChange(oldAlias, this.title);
this.pushNotification(this._notification); this.pushNotification(this._notification);
}, },
@ -224,13 +285,17 @@ Source.prototype = {
}, },
open: function(notification) { open: function(notification) {
let props = {}; if (this._client.is_handling_channel(this._channel)) {
props[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT; // We are handling the channel, try to pass it to Empathy
[props[Tp.PROP_CHANNEL_TARGET_HANDLE], props[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE]] = this._channel.get_handle(); this._client.delegate_channels_async([this._channel], global.get_current_time(), "", null);
}
else {
// We are not the handler, just ask to present the channel
let dbus = Tp.DBusDaemon.dup();
let cd = Tp.ChannelDispatcher.new(dbus);
let req = Tp.AccountChannelRequest.new(this._account, props, global.get_current_time()); cd.present_channel_async(this._channel, global.get_current_time(), null);
}
req.ensure_channel_async('', null, null);
}, },
_getLogMessages: function() { _getLogMessages: function() {
@ -248,7 +313,18 @@ Source.prototype = {
let logMessages = events.map(makeMessageFromTplEvent); let logMessages = events.map(makeMessageFromTplEvent);
let pendingTpMessages = this._channel.get_pending_messages(); let pendingTpMessages = this._channel.get_pending_messages();
let pendingMessages = pendingTpMessages.map(function (tpMessage) { return makeMessageFromTpMessage(tpMessage, NotificationDirection.RECEIVED); }); let pendingMessages = [];
for (let i = 0; i < pendingTpMessages.length; i++) {
let message = pendingTpMessages[i];
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
continue;
pendingMessages.push(makeMessageFromTpMessage(message, NotificationDirection.RECEIVED));
this._pendingMessages.push(message);
}
let showTimestamp = false; let showTimestamp = false;
@ -284,6 +360,7 @@ Source.prototype = {
_channelClosed: function() { _channelClosed: function() {
this._channel.disconnect(this._closedId); this._channel.disconnect(this._closedId);
this._channel.disconnect(this._receivedId); this._channel.disconnect(this._receivedId);
this._channel.disconnect(this._pendingId);
this._channel.disconnect(this._sentId); this._channel.disconnect(this._sentId);
this._contact.disconnect(this._notifyAliasId); this._contact.disconnect(this._notifyAliasId);
@ -294,6 +371,11 @@ Source.prototype = {
}, },
_messageReceived: function(channel, message) { _messageReceived: function(channel, message) {
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
return;
this._pendingMessages.push(message);
message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED); message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED);
this._notification.appendMessage(message); this._notification.appendMessage(message);
this.notify(); this.notify();
@ -320,10 +402,12 @@ Source.prototype = {
} }
let msg = Tp.ClientMessage.new_text(type, text); let msg = Tp.ClientMessage.new_text(type, text);
this._channel.send_message_async(msg, 0, null); this._channel.send_message_async(msg, 0, Lang.bind(this, function (src, result) {
this._channel.send_message_finish(result);
}));
}, },
_presenceChanged: function (contact, presence, type, status, message) { _presenceChanged: function (contact, presence, status, message) {
let msg, shouldNotify, title; let msg, shouldNotify, title;
if (this._presence == presence) if (this._presence == presence)
@ -356,6 +440,43 @@ Source.prototype = {
this._notification.appendPresence(msg, shouldNotify); this._notification.appendPresence(msg, shouldNotify);
if (shouldNotify) if (shouldNotify)
this.notify(); this.notify();
},
_pendingRemoved: function(channel, message) {
let idx = this._pendingMessages.indexOf(message);
if (idx >= 0)
this._pendingMessages.splice(idx, 1);
else
throw new Error('Message not in our pending list: ' + message);
},
_ackMessages: function() {
if (this._pendingMessages.length == 0)
return;
// Don't clear our messages here, tp-glib will send a
// 'pending-message-removed' for each one.
this._channel.ack_messages_async(this._pendingMessages, Lang.bind(this, function(src, result) {
this._channel.ack_messages_finish(result);}));
},
_summaryItemClicked: function(source, button) {
if (button != 1)
return;
this._shouldAck = true;
},
_notificationExpanded: function() {
this._shouldAck = true;
},
_notificationCollapsed: function() {
if (this._shouldAck)
this._ackMessages();
this._shouldAck = false;
} }
}; };
@ -416,17 +537,43 @@ Notification.prototype = {
styles.push('chat-action'); styles.push('chat-action');
} }
this.update(this.source.title, messageBody, { customContent: true, bannerMarkup: true }); if (message.direction == NotificationDirection.RECEIVED) {
this.update(this.source.title, messageBody, { customContent: true,
bannerMarkup: true });
}
this._append(messageBody, styles, message.timestamp, noTimestamp); this._append(messageBody, styles, message.timestamp, noTimestamp);
}, },
_filterMessages: function() {
if (this._history.length < 1)
return;
let lastMessageTime = this._history[0].time;
let currentTime = (Date.now() / 1000);
// Keep the scrollback from growing too long. If the most
// recent message (before the one we just added) is within
// SCROLLBACK_RECENT_TIME, we will keep
// SCROLLBACK_RECENT_LENGTH previous messages. Otherwise
// we'll keep SCROLLBACK_IDLE_LENGTH messages.
let maxLength = (lastMessageTime < currentTime - SCROLLBACK_RECENT_TIME) ?
SCROLLBACK_IDLE_LENGTH : SCROLLBACK_RECENT_LENGTH;
let filteredHistory = this._history.filter(function(item) { return item.realMessage });
if (filteredHistory.length > maxLength) {
let lastMessageToKeep = filteredHistory[maxLength];
let expired = this._history.splice(this._history.indexOf(lastMessageToKeep));
for (let i = 0; i < expired.length; i++)
expired[i].actor.destroy();
}
},
_append: function(text, styles, timestamp, noTimestamp) { _append: function(text, styles, timestamp, noTimestamp) {
let currentTime = (Date.now() / 1000); let currentTime = (Date.now() / 1000);
if (!timestamp) if (!timestamp)
timestamp = currentTime; timestamp = currentTime;
let lastMessageTime = -1;
if (this._history.length > 0)
lastMessageTime = this._history[0].time;
// Reset the old message timeout // Reset the old message timeout
if (this._timestampTimeoutId) if (this._timestampTimeoutId)
@ -449,23 +596,7 @@ Notification.prototype = {
Lang.bind(this, this.appendTimestamp)); Lang.bind(this, this.appendTimestamp));
} }
if (this._history.length > 1) { this._filterMessages();
// Keep the scrollback from growing too long. If the most
// recent message (before the one we just added) is within
// SCROLLBACK_RECENT_TIME, we will keep
// SCROLLBACK_RECENT_LENGTH previous messages. Otherwise
// we'll keep SCROLLBACK_IDLE_LENGTH messages.
let maxLength = (lastMessageTime < currentTime - SCROLLBACK_RECENT_TIME) ?
SCROLLBACK_IDLE_LENGTH : SCROLLBACK_RECENT_LENGTH;
let filteredHistory = this._history.filter(function(item) { return item.realMessage });
if (filteredHistory.length > maxLength) {
let lastMessageToKeep = filteredHistory[maxLength];
let expired = this._history.splice(this._history.indexOf(lastMessageToKeep));
for (let i = 0; i < expired.length; i++)
expired[i].actor.destroy();
}
}
}, },
_formatTimestamp: function(date) { _formatTimestamp: function(date) {
@ -473,6 +604,8 @@ Notification.prototype = {
var daysAgo = (now.getTime() - date.getTime()) / (24 * 60 * 60 * 1000); var daysAgo = (now.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
let format;
// Show a week day and time if date is in the last week // Show a week day and time if date is in the last week
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) { if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
/* Translators: this is a time format string followed by a date. /* Translators: this is a time format string followed by a date.
@ -505,6 +638,9 @@ Notification.prototype = {
this._history.unshift({ actor: timeLabel, time: lastMessageTime, realMessage: false }); this._history.unshift({ actor: timeLabel, time: lastMessageTime, realMessage: false });
this._timestampTimeoutId = 0; this._timestampTimeoutId = 0;
this._filterMessages();
return false; return false;
}, },
@ -516,21 +652,23 @@ Notification.prototype = {
let label = this.addBody(text, true); let label = this.addBody(text, true);
label.add_style_class_name('chat-meta-message'); label.add_style_class_name('chat-meta-message');
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false}); this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false});
this._filterMessages();
}, },
appendAliasChange: function(oldAlias, newAlias) { appendAliasChange: function(oldAlias, newAlias) {
// FIXME: uncomment this after 3.0 string freeze ends oldAlias = GLib.markup_escape_text(oldAlias, -1);
newAlias = GLib.markup_escape_text(newAlias, -1);
// oldAlias = GLib.markup_escape_text(oldAlias, -1); /* Translators: this is the other person changing their old IM name to their new
// newAlias = GLib.markup_escape_text(newAlias, -1); IM name. */
let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
let label = this.addBody(message, true);
label.add_style_class_name('chat-meta-message');
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
this.update(newAlias, null, { customContent: true });
// /* Translators: this is the other person changing their old IM name to their new this._filterMessages();
// IM name. */
// let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
// let label = this.addBody(message, true);
// label.add_style_class_name('chat-meta-message');
// this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
// this.update(newAlias, null, { customContent: true });
}, },
_onEntryActivated: function() { _onEntryActivated: function() {

View File

@ -8,8 +8,6 @@ const Signals = imports.signals;
const Lang = imports.lang; const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Main = imports.ui.main; const Main = imports.ui.main;
const Search = imports.ui.search; const Search = imports.ui.search;
@ -152,10 +150,6 @@ SearchTab.prototype = {
return true; return true;
})); }));
this._entry.connect('secondary-icon-clicked', Lang.bind(this,
function() {
this._reset();
}));
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped)); 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._updateCursorVisibility));
@ -166,6 +160,13 @@ SearchTab.prototype = {
hide: function() { hide: function() {
BaseTab.prototype.hide.call(this); BaseTab.prototype.hide.call(this);
// Leave the entry focused when it doesn't have any text;
// when replacing a selected search term, Clutter emits
// two 'text-changed' signals, one for deleting the previous
// text and one for the new one - the second one is handled
// incorrectly when we remove focus
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
if (this._text.text != '')
this._reset(); this._reset();
}, },
@ -226,7 +227,7 @@ SearchTab.prototype = {
if (this._iconClickedId == 0) { if (this._iconClickedId == 0) {
this._iconClickedId = this._entry.connect('secondary-icon-clicked', this._iconClickedId = this._entry.connect('secondary-icon-clicked',
Lang.bind(this, function() { Lang.bind(this, function() {
this.reset(); this._reset();
})); }));
} }
this._activate(); this._activate();

View File

@ -2,8 +2,6 @@
const Lang = imports.lang; const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Main = imports.ui.main; const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray; const MessageTray = imports.ui.messageTray;

View File

@ -6,6 +6,7 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell;
const AltTab = imports.ui.altTab; const AltTab = imports.ui.altTab;
const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup; const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
@ -22,8 +23,7 @@ function getDimShader() {
if (dimShader === null) if (dimShader === null)
return null; return null;
if (!dimShader) { if (!dimShader) {
let [success, source, length] = GLib.file_get_contents(global.datadir + let source = Shell.get_file_contents_utf8_sync(global.datadir + '/shaders/dim-window.glsl');
'/shaders/dim-window.glsl');
try { try {
let shader = new Clutter.Shader(); let shader = new Clutter.Shader();
shader.set_fragment_source(source, -1); shader.set_fragment_source(source, -1);

View File

@ -1,6 +1,7 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GConf = imports.gi.GConf;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
@ -27,6 +28,8 @@ const CLOSE_BUTTON_FADE_TIME = 0.1;
const DRAGGING_WINDOW_OPACITY = 100; const DRAGGING_WINDOW_OPACITY = 100;
const BUTTON_LAYOUT_KEY = '/desktop/gnome/shell/windows/button_layout';
// Define a layout scheme for small window counts. For larger // Define a layout scheme for small window counts. For larger
// counts we fall back to an algorithm. We need more schemes here // counts we fall back to an algorithm. We need more schemes here
// unless we have a really good algorithm. // unless we have a really good algorithm.
@ -237,7 +240,7 @@ WindowClone.prototype = {
this.emit('zoom-start'); this.emit('zoom-start');
if (!this._zoomLightbox) if (!this._zoomLightbox)
this._zoomLightbox = new Lightbox.Lightbox(global.stage, this._zoomLightbox = new Lightbox.Lightbox(Main.uiGroup,
{ fadeTime: LIGHTBOX_FADE_TIME }); { fadeTime: LIGHTBOX_FADE_TIME });
this._zoomLightbox.show(); this._zoomLightbox.show();
@ -248,7 +251,7 @@ WindowClone.prototype = {
this._zoomGlobalOrig.setPosition.apply(this._zoomGlobalOrig, this.actor.get_transformed_position()); this._zoomGlobalOrig.setPosition.apply(this._zoomGlobalOrig, this.actor.get_transformed_position());
this._zoomGlobalOrig.setScale(width / this.actor.width, height / this.actor.height); this._zoomGlobalOrig.setScale(width / this.actor.width, height / this.actor.height);
this.actor.reparent(global.stage); this.actor.reparent(Main.uiGroup);
this._zoomLightbox.highlight(this.actor); this._zoomLightbox.highlight(this.actor);
[this.actor.x, this.actor.y] = this._zoomGlobalOrig.getPosition(); [this.actor.x, this.actor.y] = this._zoomGlobalOrig.getPosition();
@ -296,12 +299,30 @@ WindowClone.prototype = {
}, },
_onDragBegin : function (draggable, time) { _onDragBegin : function (draggable, time) {
if (this._zooming)
this._zoomEnd();
[this.dragOrigX, this.dragOrigY] = this.actor.get_position(); [this.dragOrigX, this.dragOrigY] = this.actor.get_position();
this.dragOrigScale = this.actor.scale_x; this.dragOrigScale = this.actor.scale_x;
this.inDrag = true; this.inDrag = true;
this.emit('drag-begin'); this.emit('drag-begin');
}, },
_getWorkspaceActor : function() {
let index = this.metaWindow.get_workspace().index();
return Main.overview.workspaces.getWorkspaceByIndex(index);
},
handleDragOver : function(source, actor, x, y, time) {
let workspace = this._getWorkspaceActor();
return workspace.handleDragOver(source, actor, x, y, time);
},
acceptDrop : function(source, actor, x, y, time) {
let workspace = this._getWorkspaceActor();
workspace.acceptDrop(source, actor, x, y, time);
},
_onDragCancelled : function (draggable, time) { _onDragCancelled : function (draggable, time) {
this.emit('drag-cancelled'); this.emit('drag-cancelled');
}, },
@ -394,6 +415,8 @@ WindowOverlay.prototype = {
show: function() { show: function() {
this._hidden = false; this._hidden = false;
if (this._windowClone.actor.has_pointer)
this.closeButton.show();
this.title.show(); this.title.show();
}, },
@ -430,9 +453,20 @@ WindowOverlay.prototype = {
let button = this.closeButton; let button = this.closeButton;
let title = this.title; let title = this.title;
let gconf = GConf.Client.get_default();
let layout = gconf.get_string(BUTTON_LAYOUT_KEY);
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
let split = layout.split(":");
let side;
if (split[0].indexOf("close") > -1)
side = rtl ? St.Side.RIGHT : St.Side.LEFT;
else
side = rtl ? St.Side.LEFT : St.Side.RIGHT;
let buttonX; let buttonX;
let buttonY = cloneY - (button.height - button._overlap); let buttonY = cloneY - (button.height - button._overlap);
if (St.Widget.get_default_direction() == St.TextDirection.RTL) if (side == St.Side.LEFT)
buttonX = cloneX - (button.width - button._overlap); buttonX = cloneX - (button.width - button._overlap);
else else
buttonX = cloneX + (cloneWidth - button._overlap); buttonX = cloneX + (cloneWidth - button._overlap);
@ -614,6 +648,7 @@ Workspace.prototype = {
function () { function () {
this._dropRect.set_position(x, y); this._dropRect.set_position(x, y);
this._dropRect.set_size(width, height); this._dropRect.set_size(width, height);
this.positionWindows(WindowPositionFlags.ANIMATE);
return false; return false;
})); }));
@ -636,16 +671,6 @@ Workspace.prototype = {
return this._windows.length == 0; return this._windows.length == 0;
}, },
/**
* setReactive:
* @reactive: %true iff the workspace should be reactive
*
* Set the workspace (desktop) reactive
**/
setReactive: function(reactive) {
this.actor.reactive = reactive;
},
// Only use this for n <= 20 say // Only use this for n <= 20 say
_factorial: function(n) { _factorial: function(n) {
let result = 1; let result = 1;
@ -1113,7 +1138,9 @@ Workspace.prototype = {
// the compositor finds out about them... // the compositor finds out about them...
Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
if (this.actor && metaWin.get_compositor_private()) if (this.actor &&
metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin); this._doAddWindow(metaWin);
return false; return false;
})); }));

View File

@ -178,6 +178,11 @@ WorkspaceThumbnail.prototype = {
// Create clones for windows that should be visible in the Overview // Create clones for windows that should be visible in the Overview
this._windows = []; this._windows = [];
for (let i = 0; i < windows.length; i++) { for (let i = 0; i < windows.length; i++) {
windows[i].meta_window._minimizedChangedId =
windows[i].meta_window.connect('notify::minimized',
Lang.bind(this,
this._updateMinimized));
if (this._isOverviewWindow(windows[i])) { if (this._isOverviewWindow(windows[i])) {
this._addWindowClone(windows[i]); this._addWindowClone(windows[i]);
} }
@ -257,11 +262,18 @@ WorkspaceThumbnail.prototype = {
return; return;
// Check if window still should be here // Check if window still should be here
if (win && this._isMyWindow(win)) if (win && this._isMyWindow(win) && this._isOverviewWindow(win))
return; return;
let clone = this._windows[index]; let clone = this._windows[index];
this._windows.splice(index, 1); this._windows.splice(index, 1);
if (win && this._isOverviewWindow(win)) {
if (metaWin._minimizedChangedId) {
metaWin.disconnect(metaWin._minimizedChangedId);
delete metaWin._minimizedChangedId;
}
}
clone.destroy(); clone.destroy();
}, },
@ -276,7 +288,9 @@ WorkspaceThumbnail.prototype = {
// the compositor finds out about them... // the compositor finds out about them...
Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
if (this.actor && metaWin.get_compositor_private()) if (this.actor &&
metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin); this._doAddWindow(metaWin);
return false; return false;
})); }));
@ -288,6 +302,11 @@ WorkspaceThumbnail.prototype = {
if (this._lookupIndex (metaWin) != -1) if (this._lookupIndex (metaWin) != -1)
return; return;
if (!metaWin._minimizedChangedId)
metaWin._minimizedChangedId = metaWin.connect('notify::minimized',
Lang.bind(this,
this._updateMinimized));
if (!this._isMyWindow(win) || !this._isOverviewWindow(win)) if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
return; return;
@ -314,6 +333,13 @@ WorkspaceThumbnail.prototype = {
} }
}, },
_updateMinimized: function(metaWin) {
if (metaWin.minimized)
this._doRemoveWindow(metaWin);
else
this._doAddWindow(metaWin);
},
destroy : function() { destroy : function() {
this.actor.destroy(); this.actor.destroy();
}, },
@ -324,6 +350,14 @@ WorkspaceThumbnail.prototype = {
global.screen.disconnect(this._windowEnteredMonitorId); global.screen.disconnect(this._windowEnteredMonitorId);
global.screen.disconnect(this._windowLeftMonitorId); global.screen.disconnect(this._windowLeftMonitorId);
for (let i = 0; i < this._windows.length; i++) {
let metaWin = this._windows[i].metaWindow;
if (metaWin._minimizedChangedId) {
metaWin.disconnect(metaWin._minimizedChangedId);
delete metaWin._minimizedChangedId;
}
}
this._windows = []; this._windows = [];
this.actor = null; this.actor = null;
}, },
@ -337,7 +371,8 @@ WorkspaceThumbnail.prototype = {
// Tests if @win should be shown in the Overview // Tests if @win should be shown in the Overview
_isOverviewWindow : function (win) { _isOverviewWindow : function (win) {
let tracker = Shell.WindowTracker.get_default(); let tracker = Shell.WindowTracker.get_default();
return tracker.is_window_interesting(win.get_meta_window()); return tracker.is_window_interesting(win.get_meta_window()) &&
win.get_meta_window().showing_on_its_workspace();
}, },
// Create a clone of a (non-desktop) window and add it to the window list // Create a clone of a (non-desktop) window and add it to the window list

View File

@ -7,8 +7,6 @@ const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -51,9 +49,12 @@ WorkspacesView.prototype = {
this._height = 0; this._height = 0;
this._x = 0; this._x = 0;
this._y = 0; this._y = 0;
this._clipX = 0;
this._clipY = 0;
this._clipWidth = 0;
this._clipHeight = 0;
this._workspaceRatioSpacing = 0; this._workspaceRatioSpacing = 0;
this._spacing = 0; this._spacing = 0;
this._lostWorkspaces = [];
this._animating = false; // tweening this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling this._scrolling = false; // swipe-scrolling
this._animatingScroll = false; // programatically updating the adjustment this._animatingScroll = false; // programatically updating the adjustment
@ -95,7 +96,8 @@ WorkspacesView.prototype = {
this._overviewShownId = this._overviewShownId =
Main.overview.connect('shown', Main.overview.connect('shown',
Lang.bind(this, function() { Lang.bind(this, function() {
this.actor.set_clip(this._x, this._y, this._width, this._height); this.actor.set_clip(this._clipX, this._clipY,
this._clipWidth, this._clipHeight);
})); }));
this._scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex, this._scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
@ -139,6 +141,13 @@ WorkspacesView.prototype = {
this._workspaces[i].setGeometry(x, y, width, height); this._workspaces[i].setGeometry(x, y, width, height);
}, },
setClipRect: function(x, y, width, height) {
this._clipX = x;
this._clipY = y;
this._clipWidth = width;
this._clipHeight = height;
},
_lookupWorkspaceForMetaWindow: function (metaWindow) { _lookupWorkspaceForMetaWindow: function (metaWindow) {
for (let i = 0; i < this._workspaces.length; i++) { for (let i = 0; i < this._workspaces.length; i++) {
if (this._workspaces[i].containsMetaWindow(metaWindow)) if (this._workspaces[i].containsMetaWindow(metaWindow))
@ -152,6 +161,10 @@ WorkspacesView.prototype = {
return this._workspaces[active]; return this._workspaces[active];
}, },
getWorkspaceByIndex: function(index) {
return this._workspaces[index];
},
hide: function() { hide: function() {
let activeWorkspaceIndex = global.screen.get_active_workspace_index(); let activeWorkspaceIndex = global.screen.get_active_workspace_index();
let activeWorkspace = this._workspaces[activeWorkspaceIndex]; let activeWorkspace = this._workspaces[activeWorkspaceIndex];
@ -201,12 +214,10 @@ WorkspacesView.prototype = {
Tweener.removeTweens(workspace.actor); Tweener.removeTweens(workspace.actor);
let opacity = (this._inDrag && w != active) ? 200 : 255;
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing); let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
if (showAnimation) { if (showAnimation) {
let params = { y: y, let params = { y: y,
opacity: opacity,
time: WORKSPACE_SWITCH_TIME, time: WORKSPACE_SWITCH_TIME,
transition: 'easeOutQuad' transition: 'easeOutQuad'
}; };
@ -224,32 +235,10 @@ WorkspacesView.prototype = {
Tweener.addTween(workspace.actor, params); Tweener.addTween(workspace.actor, params);
} else { } else {
workspace.actor.set_position(0, y); workspace.actor.set_position(0, y);
workspace.actor.opacity = opacity;
if (w == 0) if (w == 0)
this._updateVisibility(); this._updateVisibility();
} }
} }
for (let l = 0; l < this._lostWorkspaces.length; l++) {
let workspace = this._lostWorkspaces[l];
Tweener.removeTweens(workspace.actor);
workspace.actor.show();
workspace.hideWindowsOverlays();
if (showAnimation) {
Tweener.addTween(workspace.actor,
{ y: workspace.x,
time: WORKSPACE_SWITCH_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
this._cleanWorkspaces)
});
} else {
this._cleanWorkspaces();
}
}
}, },
_updateVisibility: function() { _updateVisibility: function() {
@ -270,17 +259,6 @@ WorkspacesView.prototype = {
} }
}, },
_cleanWorkspaces: function() {
if (this._lostWorkspaces.length == 0)
return;
for (let l = 0; l < this._lostWorkspaces.length; l++)
this._lostWorkspaces[l].destroy();
this._lostWorkspaces = [];
this._updateWorkspaceActors(false);
},
_updateScrollAdjustment: function(index, showAnimation) { _updateScrollAdjustment: function(index, showAnimation) {
if (this._scrolling) if (this._scrolling)
return; return;
@ -303,12 +281,9 @@ WorkspacesView.prototype = {
} }
}, },
updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces, lostWorkspaces) { updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces) {
let active = global.screen.get_active_workspace_index(); let active = global.screen.get_active_workspace_index();
for (let l = 0; l < lostWorkspaces.length; l++)
lostWorkspaces[l].disconnectAll();
Tweener.addTween(this._scrollAdjustment, Tweener.addTween(this._scrollAdjustment,
{ upper: newNumWorkspaces, { upper: newNumWorkspaces,
time: WORKSPACE_SWITCH_TIME, time: WORKSPACE_SWITCH_TIME,
@ -316,12 +291,13 @@ WorkspacesView.prototype = {
}); });
if (newNumWorkspaces > oldNumWorkspaces) { if (newNumWorkspaces > oldNumWorkspaces) {
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
this._workspaces[w].setGeometry(this._x, this._y,
this._width, this._height);
this.actor.add_actor(this._workspaces[w].actor); this.actor.add_actor(this._workspaces[w].actor);
}
this._updateWorkspaceActors(false); this._updateWorkspaceActors(false);
} else {
this._lostWorkspaces = lostWorkspaces;
} }
this._scrollToActive(true); this._scrollToActive(true);
@ -439,20 +415,14 @@ WorkspacesView.prototype = {
if (topWorkspace) { if (topWorkspace) {
if (topWorkspace.actor.contains(dragEvent.targetActor)) { if (topWorkspace.actor.contains(dragEvent.targetActor)) {
hoverWorkspace = topWorkspace; hoverWorkspace = topWorkspace;
topWorkspace.opacity = topWorkspace.actor.opacity = 255;
result = topWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor); result = topWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
} else {
topWorkspace.opacity = topWorkspace.actor.opacity = 200;
} }
} }
if (bottomWorkspace) { if (bottomWorkspace) {
if (bottomWorkspace.actor.contains(dragEvent.targetActor)) { if (bottomWorkspace.actor.contains(dragEvent.targetActor)) {
hoverWorkspace = bottomWorkspace; hoverWorkspace = bottomWorkspace;
bottomWorkspace.opacity = bottomWorkspace.actor.opacity = 255;
result = bottomWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor); result = bottomWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
} else {
bottomWorkspace.opacity = bottomWorkspace.actor.opacity = 200;
} }
} }
@ -479,7 +449,7 @@ WorkspacesView.prototype = {
Mainloop.source_remove(this._timeoutId); Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
} }
DND.removeMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
this._inDrag = false; this._inDrag = false;
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
@ -598,6 +568,9 @@ WorkspacesDisplay.prototype = {
this._updateAlwaysZoom(); this._updateAlwaysZoom();
global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom)); global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom));
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){ Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){
this._alwaysZoomOut = true; this._alwaysZoomOut = true;
})); }));
@ -607,7 +580,6 @@ WorkspacesDisplay.prototype = {
this._updateAlwaysZoom(); this._updateAlwaysZoom();
})); }));
this._nWorkspacesNotifyId = 0;
this._switchWorkspaceNotifyId = 0; this._switchWorkspaceNotifyId = 0;
this._itemDragBeginId = 0; this._itemDragBeginId = 0;
@ -637,10 +609,6 @@ WorkspacesDisplay.prototype = {
this.workspacesView = new WorkspacesView(this._workspaces); this.workspacesView = new WorkspacesView(this._workspaces);
this._updateWorkspacesGeometry(); this._updateWorkspacesGeometry();
this._nWorkspacesNotifyId =
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
this._restackedNotifyId = this._restackedNotifyId =
global.screen.connect('restacked', global.screen.connect('restacked',
Lang.bind(this, this._onRestacked)); Lang.bind(this, this._onRestacked));
@ -671,10 +639,6 @@ WorkspacesDisplay.prototype = {
this._controls.hide(); this._controls.hide();
this._thumbnailsBox.hide(); this._thumbnailsBox.hide();
if (this._nWorkspacesNotifyId > 0) {
global.screen.disconnect(this._nWorkspacesNotifyId);
this._nWorkspacesNotifyId = 0;
}
if (this._restackedNotifyId > 0){ if (this._restackedNotifyId > 0){
global.screen.disconnect(this._restackedNotifyId); global.screen.disconnect(this._restackedNotifyId);
this._restackedNotifyId = 0; this._restackedNotifyId = 0;
@ -723,7 +687,12 @@ WorkspacesDisplay.prototype = {
}, },
_updateAlwaysZoom: function() { _updateAlwaysZoom: function() {
this._alwaysZoomOut = false; // Always show the pager if workspaces are actually used,
// e.g. there are windows on more than one
this._alwaysZoomOut = global.screen.n_workspaces > 2;
if (this._alwaysZoomOut)
return;
let monitors = global.get_monitors(); let monitors = global.get_monitors();
let primary = global.get_primary_monitor(); let primary = global.get_primary_monitor();
@ -794,6 +763,13 @@ WorkspacesDisplay.prototype = {
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL); let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
let clipWidth = width - controlsVisible;
let clipHeight = (fullHeight / fullWidth) * clipWidth;
let clipX = rtl ? x + controlsVisible : x;
let clipY = y + (fullHeight - clipHeight) / 2;
this.workspacesView.setClipRect(clipX, clipY, clipWidth, clipHeight);
if (this._zoomOut) { if (this._zoomOut) {
width -= controlsNatural; width -= controlsNatural;
if (rtl) if (rtl)
@ -832,6 +808,12 @@ WorkspacesDisplay.prototype = {
if (oldNumWorkspaces == newNumWorkspaces) if (oldNumWorkspaces == newNumWorkspaces)
return; return;
this._updateAlwaysZoom();
this._updateZoom();
if (this.workspacesView == null)
return;
let lostWorkspaces = []; let lostWorkspaces = [];
if (newNumWorkspaces > oldNumWorkspaces) { if (newNumWorkspaces > oldNumWorkspaces) {
// Assume workspaces are only added at the end // Assume workspaces are only added at the end
@ -857,24 +839,23 @@ WorkspacesDisplay.prototype = {
lostWorkspaces = this._workspaces.splice(removedIndex, lostWorkspaces = this._workspaces.splice(removedIndex,
removedNum); removedNum);
// Don't let the user try to select this workspace as it's for (let l = 0; l < lostWorkspaces.length; l++) {
// making its exit. lostWorkspaces[l].disconnectAll();
for (let l = 0; l < lostWorkspaces.length; l++) lostWorkspaces[l].destroy();
lostWorkspaces[l].setReactive(false); }
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum); this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
} }
this.workspacesView.updateWorkspaces(oldNumWorkspaces, this.workspacesView.updateWorkspaces(oldNumWorkspaces,
newNumWorkspaces, newNumWorkspaces);
lostWorkspaces);
}, },
_updateZoom : function() { _updateZoom : function() {
if (Main.overview.animationInProgress) if (Main.overview.animationInProgress)
return; return;
let shouldZoom = this._alwaysZoomOut || this._controls.hover || (this._inDrag && !this._cancelledDrag); let shouldZoom = this._alwaysZoomOut || this._controls.hover;
if (shouldZoom != this._zoomOut) { if (shouldZoom != this._zoomOut) {
this._zoomOut = shouldZoom; this._zoomOut = shouldZoom;
this._updateWorkspacesGeometry(); this._updateWorkspacesGeometry();
@ -898,12 +879,22 @@ WorkspacesDisplay.prototype = {
_dragBegin: function() { _dragBegin: function() {
this._inDrag = true; this._inDrag = true;
this._cancelledDrag = false; this._cancelledDrag = false;
this._updateZoom(); this._dragMonitor = {
dragMotion: Lang.bind(this, this._onDragMotion)
};
DND.addDragMonitor(this._dragMonitor);
}, },
_dragCancelled: function() { _dragCancelled: function() {
this._cancelledDrag = true; this._cancelledDrag = true;
this._updateZoom(); DND.removeDragMonitor(this._dragMonitor);
},
_onDragMotion: function(dragEvent) {
let controlsHovered = this._controls.contains(dragEvent.targetActor);
this._controls.set_hover(controlsHovered);
return DND.DragMotionResult.CONTINUE;
}, },
_dragEnd: function() { _dragEnd: function() {

View File

@ -36,53 +36,48 @@ visually attractive and easy to use experience.
.SH OPTIONS .SH OPTIONS
.TP .TP
.B \-r, \-\-replace .B \-\-replace
Replace the running metacity/gnome-panel Replace the running window manager
.br .br
.TP .TP
.B \-v, \-\-verbose .B \-\-sm-disable
Shows details about the results of running `gnome-shell'. Disable connection to the session manager
.br .br
.TP .TP
.B \-g, \-\-debug .B \-\-sm-client-id=ID
Run under a debugger Specify session management ID
.br .br
.TP .TP
.B \-\-debug\-command .B \-\-sm-save-file=FILE
Command to use for debugging (defaults to 'gdb \-\-args') Initialize session from savefile
.br
.TP
.B \-\-screen=SCREEN
X screen to use
.br
.TP
.B \-d, \-\-display=DISPLAY
X display to use
.br .br
.TP .TP
.B \-\-sync .B \-\-sync
.br Make X calls synchronous
Make X calls synchronously, useful when debugging down X errors
.br .br
.TP .TP
.B \-\-xephyr .B \-\-version
Run a debugging instance inside Xephyr Print version and exit
.br .br
.TP .TP
.B \-\-geometry .B \-\-help
Specify Xephyr screen geometry Display help and exit
.br
.TP
.B \-w, \-\-wide
Use widescreen (1280x800) with Xephyr
.br
.TP
.B \-\-create\-extension
Create a new GNOME Shell extension
.TP
.B \-\-eval\-file
Evaluate the contents of the given JavaScript file
.br .br
.SH BUGS .SH BUGS

View File

@ -1,15 +1,21 @@
af af
an
ar ar
be
bg bg
bn
bn_IN bn_IN
ca ca
ca@valencia
cs cs
da da
de de
el el
en_GB en_GB
eo
es es
et et
eu
fa fa
fi fi
fr fr
@ -36,11 +42,13 @@ pt
pt_BR pt_BR
ro ro
ru ru
sk
sl sl
sr sr
sr@latin sr@latin
sv sv
ta ta
te
th th
tr tr
ug ug

610
po/af.po

File diff suppressed because it is too large Load Diff

1161
po/an.po Normal file

File diff suppressed because it is too large Load Diff

1217
po/be.po Normal file

File diff suppressed because it is too large Load Diff

1202
po/bn.po Normal file

File diff suppressed because it is too large Load Diff

563
po/ca.po

File diff suppressed because it is too large Load Diff

1426
po/ca@valencia.po Normal file

File diff suppressed because it is too large Load Diff

683
po/cs.po

File diff suppressed because it is too large Load Diff

133
po/da.po
View File

@ -14,8 +14,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-28 23:40+0200\n" "POT-Creation-Date: 2011-03-30 22:40+0200\n"
"PO-Revision-Date: 2011-03-28 20:00+0000\n" "PO-Revision-Date: 2011-03-30 19:55+0000\n"
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n" "Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n" "Language: da\n"
@ -345,13 +345,13 @@ msgid "Nothing Scheduled"
msgstr "Intet planlagt" msgstr "Intet planlagt"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %B" msgstr "%A, %d. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d. %B %Y" msgstr "%A, %d. %B %Y"
@ -372,7 +372,7 @@ msgstr "Denne uge"
msgid "Next week" msgid "Next week"
msgstr "Næste uge" msgstr "Næste uge"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Fjern" msgstr "Fjern"
@ -463,24 +463,21 @@ msgid "Logging out of the system."
msgstr "Logger ud af systemet." msgstr "Logger ud af systemet."
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
#, fuzzy
msgid "Power Off" msgid "Power Off"
msgstr "Sluk..." msgstr "Sluk"
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
#, fuzzy
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "Tryk Log ud for at afslutte disse programmer og logge ud af systemet." msgstr "Tryk Sluk for at afslutte disse programmer og lukke systemet ned."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
#, fuzzy, c-format #, c-format
msgid "The system will power off automatically in %d seconds." msgid "The system will power off automatically in %d seconds."
msgstr "Systemet vil genstarte automatisk om %d sekunder." msgstr "Systemet vil lukke ned automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:78
#, fuzzy
msgid "Powering off the system." msgid "Powering off the system."
msgstr "Logger ud af systemet." msgstr "Lukker systemet ned."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:93 #: ../js/ui/endSessionDialog.js:93
@ -535,11 +532,11 @@ msgstr "Vis kilde"
msgid "Web Page" msgid "Web Page"
msgstr "Webside" msgstr "Webside"
#: ../js/ui/messageTray.js:993 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Åbn" msgstr "Åbn"
#: ../js/ui/messageTray.js:2151 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "Systeminformation" msgstr "Systeminformation"
@ -562,20 +559,20 @@ msgid "Dash"
msgstr "Favoritområde" msgstr "Favoritområde"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Afslut %s" msgstr "Afslut %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:893 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Aktiviteter" msgstr "Aktiviteter"
#: ../js/ui/panel.js:994 #: ../js/ui/panel.js:1003
msgid "Top Bar" msgid "Top Bar"
msgstr "" msgstr "Toppanel"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -596,15 +593,15 @@ msgstr "STEDER & ENHEDER"
#: ../js/ui/polkitAuthenticationAgent.js:74 #: ../js/ui/polkitAuthenticationAgent.js:74
msgid "Authentication Required" msgid "Authentication Required"
msgstr "" msgstr "Godkendelse er påkrævet"
#: ../js/ui/polkitAuthenticationAgent.js:108 #: ../js/ui/polkitAuthenticationAgent.js:108
msgid "Administrator" msgid "Administrator"
msgstr "" msgstr "Administrator"
#: ../js/ui/polkitAuthenticationAgent.js:176 #: ../js/ui/polkitAuthenticationAgent.js:176
msgid "Authenticate" msgid "Authenticate"
msgstr "" msgstr "Godkend"
#. Translators: "that didn't work" refers to the fact that the #. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
@ -612,11 +609,11 @@ msgstr ""
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264 #: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "" msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
#: ../js/ui/polkitAuthenticationAgent.js:276 #: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:" msgid "Password:"
msgstr "" msgstr "Adgangskode:"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
@ -840,150 +837,140 @@ msgid "Localization Settings"
msgstr "Indstillinger for sprog" msgstr "Indstillinger for sprog"
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
#, fuzzy
msgid "<unknown>" msgid "<unknown>"
msgstr "Ukendt" msgstr "<ukendt>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:311 #: ../js/ui/status/network.js:311
#, fuzzy
msgid "disabled" msgid "disabled"
msgstr "Deaktiveret" msgstr "deaktiveret"
#: ../js/ui/status/network.js:494 #: ../js/ui/status/network.js:494
#, fuzzy
msgid "connecting..." msgid "connecting..."
msgstr "Forbindelse" msgstr "forbinder..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:497 #: ../js/ui/status/network.js:497
msgid "authentication required" msgid "authentication required"
msgstr "" msgstr "godkendelse påkrævet"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing #. module, which is missing
#: ../js/ui/status/network.js:507 #: ../js/ui/status/network.js:507
msgid "firmware missing" msgid "firmware missing"
msgstr "" msgstr "firmware mangler"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:514 #: ../js/ui/status/network.js:514
msgid "cable unplugged" msgid "cable unplugged"
msgstr "" msgstr "kabel er ikke sat i"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:519 #: ../js/ui/status/network.js:519
#, fuzzy
msgid "unavailable" msgid "unavailable"
msgstr "Tilgængelig" msgstr "utilgængelig"
#: ../js/ui/status/network.js:521 #: ../js/ui/status/network.js:521
#, fuzzy
msgid "connection failed" msgid "connection failed"
msgstr "Forbindelse" msgstr "forbindelse mislykkedes"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402 #: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
msgid "Connected (private)" msgid "Connected (private)"
msgstr "" msgstr "Forbundet (privat)"
#: ../js/ui/status/network.js:683 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "" msgstr "Auto ethernet"
#: ../js/ui/status/network.js:758 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
msgstr "" msgstr "Auto bredbånd"
#: ../js/ui/status/network.js:761 #: ../js/ui/status/network.js:761
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "" msgstr "Auto opringning"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414 #: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "" msgstr "Auto %s"
#: ../js/ui/status/network.js:906 #: ../js/ui/status/network.js:906
#, fuzzy
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Bluetooth" msgstr "Auto bluetooth"
#: ../js/ui/status/network.js:1416 #: ../js/ui/status/network.js:1416
msgid "Auto wireless" msgid "Auto wireless"
msgstr "" msgstr "Auto trådløs"
#: ../js/ui/status/network.js:1474 #: ../js/ui/status/network.js:1474
msgid "More..." msgid "More..."
msgstr "" msgstr "Mere..."
#: ../js/ui/status/network.js:1497 #: ../js/ui/status/network.js:1497
msgid "Enable networking" msgid "Enable networking"
msgstr "" msgstr "Aktivér netværk"
#: ../js/ui/status/network.js:1509 #: ../js/ui/status/network.js:1509
msgid "Wired" msgid "Wired"
msgstr "" msgstr "Trådet"
#: ../js/ui/status/network.js:1520 #: ../js/ui/status/network.js:1520
msgid "Wireless" msgid "Wireless"
msgstr "" msgstr "Trådløs"
#: ../js/ui/status/network.js:1530 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "" msgstr "Mobilt bredbånd"
#: ../js/ui/status/network.js:1540 #: ../js/ui/status/network.js:1540
#, fuzzy
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Forbindelse" msgstr "VPN-forbindelser"
#: ../js/ui/status/network.js:1549 #: ../js/ui/status/network.js:1549
#, fuzzy
msgid "Network Settings" msgid "Network Settings"
msgstr "Indstillinger for strømstyring" msgstr "Indstillinger for netværk"
#: ../js/ui/status/network.js:1844 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "" msgstr "Du er nu forbundet til den mobile bredbåndsforbindelse \"%s\""
#: ../js/ui/status/network.js:1848 #: ../js/ui/status/network.js:1848
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "" msgstr "Du er nu forbundet til det trådløse netværk \"%s\""
#: ../js/ui/status/network.js:1852 #: ../js/ui/status/network.js:1852
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "" msgstr "Du er nu forbundet til det trådede netværk \"%s\""
#: ../js/ui/status/network.js:1856 #: ../js/ui/status/network.js:1856
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "" msgstr "Du er nu forbundet til VPN-netværket \"%s\""
#: ../js/ui/status/network.js:1861 #: ../js/ui/status/network.js:1861
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "" msgstr "Du er nu forbundet til \"%s\""
#: ../js/ui/status/network.js:1869 #: ../js/ui/status/network.js:1869
#, fuzzy
msgid "Connection established" msgid "Connection established"
msgstr "Forbindelse" msgstr "Forbindelse oprettet"
#: ../js/ui/status/network.js:1991 #: ../js/ui/status/network.js:1991
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "" msgstr "Netværk er deaktiveret"
#: ../js/ui/status/network.js:2116 #: ../js/ui/status/network.js:2116
#, fuzzy
msgid "Network Manager" msgid "Network Manager"
msgstr "Håndtering" msgstr "Netværkshåndtering"
#: ../js/ui/status/power.js:85 #: ../js/ui/status/power.js:85
msgid "Power Settings" msgid "Power Settings"
@ -1083,22 +1070,22 @@ msgstr "Lydstyrke"
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
#: ../js/ui/telepathyClient.js:331 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s er online." msgstr "%s er online."
#: ../js/ui/telepathyClient.js:336 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s er offline." msgstr "%s er offline."
#: ../js/ui/telepathyClient.js:339 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s er ikke til stede." msgstr "%s er ikke til stede."
#: ../js/ui/telepathyClient.js:342 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s er optaget." msgstr "%s er optaget."
@ -1106,7 +1093,7 @@ msgstr "%s er optaget."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:473 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Sendt kl. %X i %As" msgstr "Sendt kl. %X i %As"
@ -1160,9 +1147,9 @@ msgid "Print version"
msgstr "Udskriv version" msgstr "Udskriv version"
#: ../src/shell-app.c:454 #: ../src/shell-app.c:454
#, fuzzy, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Kunne ikke afmontere \"%s\"" msgstr "Kunne ikke re \"%s\""
#: ../src/shell-global.c:1395 #: ../src/shell-global.c:1395
msgid "Less than a minute ago" msgid "Less than a minute ago"
@ -1198,11 +1185,11 @@ msgstr[1] "%d uger siden"
#: ../src/shell-mobile-providers.c:80 #: ../src/shell-mobile-providers.c:80
msgid "United Kingdom" msgid "United Kingdom"
msgstr "" msgstr "Storbritannien"
#: ../src/shell-mobile-providers.c:526 #: ../src/shell-mobile-providers.c:526
msgid "Default" msgid "Default"
msgstr "" msgstr "Standard"
#: ../src/shell-polkit-authentication-agent.c:334 #: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"

View File

@ -5,7 +5,7 @@
# workspace - Arbeitsfläche # workspace - Arbeitsfläche
# #
# Hendrik Brandt <heb@gnome-de.org>, 2009. # Hendrik Brandt <heb@gnome-de.org>, 2009.
# Hendrik Richter <hendrikr@gnome.org>, 2009. # Hendrik Richter <hendrikr@gnome.org>, 2009, 2010, 2011.
# Mario Blättermann <mariobl@gnome.org>, 2009, 2010, 2011. # Mario Blättermann <mariobl@gnome.org>, 2009, 2010, 2011.
# Mario Klug <mario@klug.me>, 2010. # Mario Klug <mario@klug.me>, 2010.
# Jakob Kramer <jakob.kramer@gmx.de>, 2010. # Jakob Kramer <jakob.kramer@gmx.de>, 2010.
@ -17,9 +17,9 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-03-27 05:13+0000\n" "POT-Creation-Date: 2011-03-27 14:43+0000\n"
"PO-Revision-Date: 2011-03-27 15:45+0200\n" "PO-Revision-Date: 2011-04-22 14:23+0200\n"
"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n" "Last-Translator: Hendrik Richter <hendrikr@gnome.org>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -241,7 +241,7 @@ msgstr "%s wurde aus Ihren Favoriten entfernt"
#: ../js/ui/calendar.js:66 #: ../js/ui/calendar.js:66
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Ganztgig" msgstr "Ganztägig"
#. Translators: Shown in calendar event list, if 24h format #. Translators: Shown in calendar event list, if 24h format
#: ../js/ui/calendar.js:71 #: ../js/ui/calendar.js:71
@ -249,11 +249,15 @@ msgctxt "event list time"
msgid "%H:%M" msgid "%H:%M"
msgstr "%H:%M" msgstr "%H:%M"
#
# Da wir keine AM/PM-Suffixe haben, die Zeit von Terminen aber eindeutig
# angezeigt werden soll, wird im Kalender stets das 24h-Format verwendet.
#
#. Transators: Shown in calendar event list, if 12h format #. Transators: Shown in calendar event list, if 12h format
#: ../js/ui/calendar.js:78 #: ../js/ui/calendar.js:78
msgctxt "event list time" msgctxt "event list time"
msgid "%l:%M %p" msgid "%l:%M %p"
msgstr "%l:%M" msgstr "%H:%M"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
@ -379,7 +383,7 @@ msgstr "Diese Woche"
#: ../js/ui/calendar.js:754 #: ../js/ui/calendar.js:754
msgid "Next week" msgid "Next week"
msgstr "Nchste Woche" msgstr "Nächste Woche"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
msgid "Remove" msgid "Remove"
@ -391,7 +395,7 @@ msgstr "Einstellungen für Datum und Uhrzeit"
#: ../js/ui/dateMenu.js:111 #: ../js/ui/dateMenu.js:111
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Kalender ffnen" msgstr "Kalender öffnen"
#. Translators: This is the time format with date used #. Translators: This is the time format with date used
#. in 24-hour mode. #. in 24-hour mode.
@ -417,21 +421,21 @@ msgstr "%a %R"
#. for AM/PM. #. for AM/PM.
#: ../js/ui/dateMenu.js:177 #: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p" msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a, %e. %b, %H:%M:%S" msgstr "%a, %e. %b, %l:%M:%S"
#: ../js/ui/dateMenu.js:178 #: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p" msgid "%a %b %e, %l:%M %p"
msgstr "%a, %e. %b, %H:%M" msgstr "%a, %e. %b, %l:%M"
#. Translators: This is a time format without date used #. Translators: This is a time format without date used
#. for AM/PM. #. for AM/PM.
#: ../js/ui/dateMenu.js:182 #: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p" msgid "%a %l:%M:%S %p"
msgstr "%a %H:%M:%S" msgstr "%a %l:%M:%S"
#: ../js/ui/dateMenu.js:183 #: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p" msgid "%a %l:%M %p"
msgstr "%a %H:%M" msgstr "%a %l:%M"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
@ -795,7 +799,7 @@ msgstr "Legitimierungsanfrage von %s"
#: ../js/ui/status/bluetooth.js:374 #: ../js/ui/status/bluetooth.js:374
#, c-format #, c-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Gert »%s« bittet um Zugriff auf den Dienst »%s«" msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
#: ../js/ui/status/bluetooth.js:376 #: ../js/ui/status/bluetooth.js:376
msgid "Always grant access" msgid "Always grant access"
@ -817,7 +821,7 @@ msgstr "Koppelungsbestätigung für %s"
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448 #: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format #, c-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Gert »%s« mchte mit diesem Rechner gekoppelt werden" msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
#: ../js/ui/status/bluetooth.js:415 #: ../js/ui/status/bluetooth.js:415
#, c-format #, c-format
@ -836,11 +840,11 @@ msgstr "Stimmt nicht überein"
#: ../js/ui/status/bluetooth.js:441 #: ../js/ui/status/bluetooth.js:441
#, c-format #, c-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Koppelungsanfrage fr %s" msgstr "Koppelungsanfrage für %s"
#: ../js/ui/status/bluetooth.js:449 #: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Bitte geben Sie die auf dem Gert angezeigte PIN ein." msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
#: ../js/ui/status/bluetooth.js:465 #: ../js/ui/status/bluetooth.js:465
msgid "OK" msgid "OK"
@ -1066,7 +1070,7 @@ msgstr "Mobiltelefon"
#: ../js/ui/status/power.js:244 #: ../js/ui/status/power.js:244
msgid "Media player" msgid "Media player"
msgstr "Medienwiedergabegert" msgstr "Medienwiedergabegerät"
#: ../js/ui/status/power.js:246 #: ../js/ui/status/power.js:246
msgid "Tablet" msgid "Tablet"
@ -1082,7 +1086,7 @@ msgstr "Unbekannt"
#: ../js/ui/status/volume.js:45 #: ../js/ui/status/volume.js:45
msgid "Volume" msgid "Volume"
msgstr "Lautstrke" msgstr "Lautstärke"
#: ../js/ui/status/volume.js:58 #: ../js/ui/status/volume.js:58
msgid "Microphone" msgid "Microphone"
@ -1248,7 +1252,7 @@ msgstr "%1$s: %2$s"
#~ msgstr "Ausschalten des Systems." #~ msgstr "Ausschalten des Systems."
#~ msgid "Confirm" #~ msgid "Confirm"
#~ msgstr "Besttigen" #~ msgstr "Bestätigen"
#~| msgid "Cancel" #~| msgid "Cancel"
#~ msgid "Panel" #~ msgid "Panel"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-08 19:51+0000\n" "POT-Creation-Date: 2011-03-30 14:52+0100\n"
"PO-Revision-Date: 2011-03-08 19:50+0100\n" "PO-Revision-Date: 2011-03-30 14:55+0100\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n" "Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: British English <en@li.org>\n" "Language-Team: British English <en@li.org>\n"
"Language: en_GB\n" "Language: en_GB\n"
@ -169,47 +169,43 @@ msgstr "Whether to collect statistics about application usage"
msgid "disabled OpenSearch providers" msgid "disabled OpenSearch providers"
msgstr "disabled OpenSearch providers" msgstr "disabled OpenSearch providers"
#: ../js/misc/util.js:86 #: ../js/misc/util.js:71
msgid "Command not found" msgid "Command not found"
msgstr "Command not found" msgstr "Command not found"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: ../js/misc/util.js:113 #: ../js/misc/util.js:98
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Could not parse command:" msgstr "Could not parse command:"
#: ../js/misc/util.js:135 #: ../js/misc/util.js:106
msgid "No such application"
msgstr "No such application"
#: ../js/misc/util.js:148
#, c-format #, c-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Execution of '%s' failed:" msgstr "Execution of '%s' failed:"
#. Translators: Filter to display all applications #. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:226 #: ../js/ui/appDisplay.js:230
msgid "All" msgid "All"
msgstr "All" msgstr "All"
#: ../js/ui/appDisplay.js:324 #: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS" msgid "APPLICATIONS"
msgstr "APPLICATIONS" msgstr "APPLICATIONS"
#: ../js/ui/appDisplay.js:350 #: ../js/ui/appDisplay.js:354
msgid "SETTINGS" msgid "SETTINGS"
msgstr "SETTINGS" msgstr "SETTINGS"
#: ../js/ui/appDisplay.js:612 #: ../js/ui/appDisplay.js:625
msgid "New Window" msgid "New Window"
msgstr "New Window" msgstr "New Window"
#: ../js/ui/appDisplay.js:615 #: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Remove from Favourites" msgstr "Remove from Favourites"
#: ../js/ui/appDisplay.js:616 #: ../js/ui/appDisplay.js:629
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Add to Favourites" msgstr "Add to Favourites"
@ -342,13 +338,13 @@ msgid "Nothing Scheduled"
msgstr "Nothing Scheduled" msgstr "Nothing Scheduled"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y" msgstr "%A, %d %B, %Y"
@ -369,7 +365,7 @@ msgstr "This week"
msgid "Next week" msgid "Next week"
msgstr "Next week" msgstr "Next week"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Remove" msgstr "Remove"
@ -424,7 +420,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
#: ../js/ui/dateMenu.js:209 #: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y" msgstr "%A %e %B, %Y"
@ -437,7 +433,7 @@ msgstr "RECENT ITEMS"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Log Out %s" msgstr "Log Out %s"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out" msgid "Log Out"
msgstr "Log Out" msgstr "Log Out"
@ -459,45 +455,43 @@ msgstr "You will be logged out automatically in %d seconds."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Logging out of the system." msgstr "Logging out of the system."
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
msgid "Shut Down" msgid "Power Off"
msgstr "Shut Down" msgstr "Power Off"
#: ../js/ui/endSessionDialog.js:75
msgid "Click Shut Down to quit these applications and shut down the system."
msgstr "Click Shut Down to quit these applications and shut down the system."
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
#, c-format msgid "Click Power Off to quit these applications and power off the system."
msgid "The system will shut down automatically in %d seconds." msgstr "Click Power Off to quit these applications and power off the system."
msgstr "The system will shut down automatically in %d seconds."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
msgid "Shutting down the system." #, c-format
msgstr "Shutting down the system." msgid "The system will power off automatically in %d seconds."
msgstr "The system will power off automatically in %d seconds."
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:78
msgid "Powering off the system."
msgstr "Powering off the system."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:93
msgid "Restart" msgid "Restart"
msgstr "Restart" msgstr "Restart"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "Click Restart to quit these applications and restart the system." msgstr "Click Restart to quit these applications and restart the system."
#: ../js/ui/endSessionDialog.js:86 #: ../js/ui/endSessionDialog.js:90
#, c-format #, c-format
msgid "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d seconds."
msgstr "The system will restart automatically in %d seconds." msgstr "The system will restart automatically in %d seconds."
#: ../js/ui/endSessionDialog.js:87 #: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system." msgid "Restarting the system."
msgstr "Restarting the system." msgstr "Restarting the system."
#: ../js/ui/endSessionDialog.js:395 #: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
msgid "Confirm" #: ../js/ui/status/bluetooth.js:466
msgstr "Confirm"
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
msgid "Cancel" msgid "Cancel"
msgstr "Cancel" msgstr "Cancel"
@ -511,7 +505,7 @@ msgstr "Enabled"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 #: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled" msgid "Disabled"
msgstr "Disabled" msgstr "Disabled"
@ -531,47 +525,47 @@ msgstr "View Source"
msgid "Web Page" msgid "Web Page"
msgstr "Web Page" msgstr "Web Page"
#: ../js/ui/messageTray.js:926 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Open" msgstr "Open"
#: ../js/ui/messageTray.js:1963 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "System Information" msgstr "System Information"
#: ../js/ui/overview.js:88 #: ../js/ui/overview.js:91
msgid "Undo" msgid "Undo"
msgstr "Undo" msgstr "Undo"
#: ../js/ui/overview.js:183 #: ../js/ui/overview.js:186
msgid "Windows" msgid "Windows"
msgstr "Windows" msgstr "Windows"
#: ../js/ui/overview.js:186 #: ../js/ui/overview.js:189
msgid "Applications" msgid "Applications"
msgstr "Applications" msgstr "Applications"
#. Translators: this is the name of the dock/favorites area on #. Translators: this is the name of the dock/favorites area on
#. the left of the overview #. the left of the overview
#: ../js/ui/overview.js:202 #: ../js/ui/overview.js:205
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:532 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Quit %s" msgstr "Quit %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:893 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Activities" msgstr "Activities"
#: ../js/ui/panel.js:994 #: ../js/ui/panel.js:1003
msgid "Panel" msgid "Top Bar"
msgstr "Panel" msgstr "Top Bar"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -586,64 +580,89 @@ msgstr "Retry"
msgid "Connect to..." msgid "Connect to..."
msgstr "Connect to…" msgstr "Connect to…"
#: ../js/ui/placeDisplay.js:409 #: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "PLACES & DEVICES" msgstr "PLACES & DEVICES"
#: ../js/ui/polkitAuthenticationAgent.js:74
msgid "Authentication Required"
msgstr "Authentication Required"
#: ../js/ui/polkitAuthenticationAgent.js:108
msgid "Administrator"
msgstr "Administrator"
#: ../js/ui/polkitAuthenticationAgent.js:176
msgid "Authenticate"
msgstr "Authenticate"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again."
msgstr "Sorry, that didn't work. Please try again."
#: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:"
msgstr "Password:"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:618 #: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
#: ../js/ui/runDialog.js:201 #: ../js/ui/runDialog.js:205
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Please enter a command:" msgstr "Please enter a command:"
#: ../js/ui/searchDisplay.js:283 #: ../js/ui/searchDisplay.js:310
msgid "Searching..." msgid "Searching..."
msgstr "Searching…" msgstr "Searching…"
#: ../js/ui/searchDisplay.js:297 #: ../js/ui/searchDisplay.js:324
msgid "No matching results." msgid "No matching results."
msgstr "No matching results." msgstr "No matching results."
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:228
msgid "Power Off..." msgid "Power Off..."
msgstr "Power Off…" msgstr "Power Off…"
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 #: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend" msgid "Suspend"
msgstr "Suspend" msgstr "Suspend"
#: ../js/ui/statusMenu.js:125 #: ../js/ui/statusMenu.js:184
msgid "Available" msgid "Available"
msgstr "Available" msgstr "Available"
#: ../js/ui/statusMenu.js:130 #: ../js/ui/statusMenu.js:189
msgid "Busy" msgid "Busy"
msgstr "Busy" msgstr "Busy"
#: ../js/ui/statusMenu.js:138 #: ../js/ui/statusMenu.js:197
msgid "My Account" msgid "My Account"
msgstr "My Account" msgstr "My Account"
#: ../js/ui/statusMenu.js:142 #: ../js/ui/statusMenu.js:201
msgid "System Settings" msgid "System Settings"
msgstr "System Settings" msgstr "System Settings"
#: ../js/ui/statusMenu.js:149 #: ../js/ui/statusMenu.js:208
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Lock Screen" msgstr "Lock Screen"
#: ../js/ui/statusMenu.js:153 #: ../js/ui/statusMenu.js:213
msgid "Switch User" msgid "Switch User"
msgstr "Switch User" msgstr "Switch User"
#: ../js/ui/statusMenu.js:158 #: ../js/ui/statusMenu.js:218
msgid "Log Out..." msgid "Log Out..."
msgstr "Log Out…" msgstr "Log Out…"
@ -651,14 +670,12 @@ msgstr "Log Out…"
msgid "Zoom" msgid "Zoom"
msgstr "Zoom" msgstr "Zoom"
#: ../js/ui/status/accessibility.js:69 #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
msgid "Screen Reader" #. 'screen-reader-enabled');
msgstr "Screen Reader" #. this.menu.addMenuItem(screenReader);
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
#: ../js/ui/status/accessibility.js:73 #. 'screen-keyboard-enabled');
msgid "Screen Keyboard" #. this.menu.addMenuItem(screenKeyboard);
msgstr "Screen Keyboard"
#: ../js/ui/status/accessibility.js:77 #: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Visual Alerts" msgstr "Visual Alerts"
@ -683,17 +700,17 @@ msgstr "Mouse Keys"
msgid "Universal Access Settings" msgid "Universal Access Settings"
msgstr "Universal Access Settings" msgstr "Universal Access Settings"
#: ../js/ui/status/accessibility.js:145 #: ../js/ui/status/accessibility.js:146
msgid "High Contrast" msgid "High Contrast"
msgstr "High Contrast" msgstr "High Contrast"
#: ../js/ui/status/accessibility.js:182 #: ../js/ui/status/accessibility.js:183
msgid "Large Text" msgid "Large Text"
msgstr "Large Text" msgstr "Large Text"
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 #: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 #: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 #: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
@ -713,94 +730,94 @@ msgstr "Setup a New Device…"
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Bluetooth Settings" msgstr "Bluetooth Settings"
#: ../js/ui/status/bluetooth.js:192 #: ../js/ui/status/bluetooth.js:188
msgid "Connection" msgid "Connection"
msgstr "Connection" msgstr "Connection"
#: ../js/ui/status/bluetooth.js:228 #: ../js/ui/status/bluetooth.js:224
msgid "Send Files..." msgid "Send Files..."
msgstr "Send Files…" msgstr "Send Files…"
#: ../js/ui/status/bluetooth.js:233 #: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..." msgid "Browse Files..."
msgstr "Browse Files…" msgstr "Browse Files…"
#: ../js/ui/status/bluetooth.js:242 #: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device" msgid "Error browsing device"
msgstr "Error browsing device" msgstr "Error browsing device"
#: ../js/ui/status/bluetooth.js:243 #: ../js/ui/status/bluetooth.js:239
#, c-format #, c-format
msgid "The requested device cannot be browsed, error is '%s'" msgid "The requested device cannot be browsed, error is '%s'"
msgstr "The requested device cannot be browsed, error is '%s'" msgstr "The requested device cannot be browsed, error is '%s'"
#: ../js/ui/status/bluetooth.js:251 #: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings" msgid "Keyboard Settings"
msgstr "Keyboard Settings" msgstr "Keyboard Settings"
#: ../js/ui/status/bluetooth.js:256 #: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings" msgid "Mouse Settings"
msgstr "Mouse Settings" msgstr "Mouse Settings"
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 #: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings" msgid "Sound Settings"
msgstr "Sound Settings" msgstr "Sound Settings"
#: ../js/ui/status/bluetooth.js:372 #: ../js/ui/status/bluetooth.js:368
#, c-format #, c-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Authorisation request from %s" msgstr "Authorisation request from %s"
#: ../js/ui/status/bluetooth.js:378 #: ../js/ui/status/bluetooth.js:374
#, c-format #, c-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Device %s wants access to the service '%s'" msgstr "Device %s wants access to the service '%s'"
#: ../js/ui/status/bluetooth.js:380 #: ../js/ui/status/bluetooth.js:376
msgid "Always grant access" msgid "Always grant access"
msgstr "Always grant access" msgstr "Always grant access"
#: ../js/ui/status/bluetooth.js:381 #: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Grant this time only" msgstr "Grant this time only"
#: ../js/ui/status/bluetooth.js:382 #: ../js/ui/status/bluetooth.js:378
msgid "Reject" msgid "Reject"
msgstr "Reject" msgstr "Reject"
#: ../js/ui/status/bluetooth.js:412 #: ../js/ui/status/bluetooth.js:408
#, c-format #, c-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Pairing confirmation for %s" msgstr "Pairing confirmation for %s"
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 #: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format #, c-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Device %s wants to pair with this computer" msgstr "Device %s wants to pair with this computer"
#: ../js/ui/status/bluetooth.js:419 #: ../js/ui/status/bluetooth.js:415
#, c-format #, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device." msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Please confirm whether the PIN '%s' matches the one on the device."
#: ../js/ui/status/bluetooth.js:421 #: ../js/ui/status/bluetooth.js:417
msgid "Matches" msgid "Matches"
msgstr "Matches" msgstr "Matches"
#: ../js/ui/status/bluetooth.js:422 #: ../js/ui/status/bluetooth.js:418
msgid "Does not match" msgid "Does not match"
msgstr "Does not match" msgstr "Does not match"
#: ../js/ui/status/bluetooth.js:445 #: ../js/ui/status/bluetooth.js:441
#, c-format #, c-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Pairing request for %s" msgstr "Pairing request for %s"
#: ../js/ui/status/bluetooth.js:453 #: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Please enter the PIN mentioned on the device." msgstr "Please enter the PIN mentioned on the device."
#: ../js/ui/status/bluetooth.js:469 #: ../js/ui/status/bluetooth.js:465
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
@ -812,17 +829,153 @@ msgstr "Show Keyboard Layout…"
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Localisation Settings" msgstr "Localisation Settings"
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
msgid "<unknown>"
msgstr "<unknown>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:311
msgid "disabled"
msgstr "disabled"
#: ../js/ui/status/network.js:494
msgid "connecting..."
msgstr "connecting…"
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:497
msgid "authentication required"
msgstr "authentication required"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:507
msgid "firmware missing"
msgstr "firmware missing"
#. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:514
msgid "cable unplugged"
msgstr "cable unplugged"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:519
msgid "unavailable"
msgstr "unavailable"
#: ../js/ui/status/network.js:521
msgid "connection failed"
msgstr "connection failed"
#. 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:602 ../js/ui/status/network.js:1402
msgid "Connected (private)"
msgstr "Connected (private)"
#: ../js/ui/status/network.js:683
msgid "Auto Ethernet"
msgstr "Auto Ethernet"
#: ../js/ui/status/network.js:758
msgid "Auto broadband"
msgstr "Auto broadband"
#: ../js/ui/status/network.js:761
msgid "Auto dial-up"
msgstr "Auto dial-up"
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format
msgid "Auto %s"
msgstr "Auto %s"
#: ../js/ui/status/network.js:906
msgid "Auto bluetooth"
msgstr "Auto bluetooth"
#: ../js/ui/status/network.js:1416
msgid "Auto wireless"
msgstr "Auto wireless"
#: ../js/ui/status/network.js:1474
msgid "More..."
msgstr "More…"
#: ../js/ui/status/network.js:1497
msgid "Enable networking"
msgstr "Enable networking"
#: ../js/ui/status/network.js:1509
msgid "Wired"
msgstr "Wired"
#: ../js/ui/status/network.js:1520
msgid "Wireless"
msgstr "Wireless"
#: ../js/ui/status/network.js:1530
msgid "Mobile broadband"
msgstr "Mobile broadband"
#: ../js/ui/status/network.js:1540
msgid "VPN Connections"
msgstr "VPN Connections"
#: ../js/ui/status/network.js:1549
msgid "Network Settings"
msgstr "Network Settings"
#: ../js/ui/status/network.js:1844
#, c-format
msgid "You're now connected to mobile broadband connection '%s'"
msgstr "You're now connected to mobile broadband connection '%s'"
#: ../js/ui/status/network.js:1848
#, c-format
msgid "You're now connected to wireless network '%s'"
msgstr "You're now connected to wireless network '%s'"
#: ../js/ui/status/network.js:1852
#, c-format
msgid "You're now connected to wired network '%s'"
msgstr "You're now connected to wired network '%s'"
#: ../js/ui/status/network.js:1856
#, c-format
msgid "You're now connected to VPN network '%s'"
msgstr "You're now connected to VPN network '%s'"
#: ../js/ui/status/network.js:1861
#, c-format
msgid "You're now connected to '%s'"
msgstr "You're now connected to '%s'"
#: ../js/ui/status/network.js:1869
msgid "Connection established"
msgstr "Connection established"
#: ../js/ui/status/network.js:1991
msgid "Networking is disabled"
msgstr "Networking is disabled"
#: ../js/ui/status/network.js:2116
msgid "Network Manager"
msgstr "Network Manager"
#: ../js/ui/status/power.js:85 #: ../js/ui/status/power.js:85
msgid "Power Settings" msgid "Power Settings"
msgstr "Power Settings" msgstr "Power Settings"
#. 0 is reported when UPower does not have enough data #. 0 is reported when UPower does not have enough data
#. to estimate battery life #. to estimate battery life
#: ../js/ui/status/power.js:110 #: ../js/ui/status/power.js:111
msgid "Estimating..." msgid "Estimating..."
msgstr "Estimating…" msgstr "Estimating…"
#: ../js/ui/status/power.js:117 #: ../js/ui/status/power.js:118
#, c-format #, c-format
msgid "%d hour remaining" msgid "%d hour remaining"
msgid_plural "%d hours remaining" msgid_plural "%d hours remaining"
@ -830,102 +983,102 @@ msgstr[0] "%d hour remaining"
msgstr[1] "%d hours remaining" msgstr[1] "%d hours remaining"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
#: ../js/ui/status/power.js:120 #: ../js/ui/status/power.js:121
#, c-format #, c-format
msgid "%d %s %d %s remaining" msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s remaining" msgstr "%d %s %d %s remaining"
#: ../js/ui/status/power.js:122 #: ../js/ui/status/power.js:123
msgid "hour" msgid "hour"
msgid_plural "hours" msgid_plural "hours"
msgstr[0] "hour" msgstr[0] "hour"
msgstr[1] "hours" msgstr[1] "hours"
#: ../js/ui/status/power.js:122 #: ../js/ui/status/power.js:123
msgid "minute" msgid "minute"
msgid_plural "minutes" msgid_plural "minutes"
msgstr[0] "minute" msgstr[0] "minute"
msgstr[1] "minutes" msgstr[1] "minutes"
#: ../js/ui/status/power.js:125 #: ../js/ui/status/power.js:126
#, c-format #, c-format
msgid "%d minute remaining" msgid "%d minute remaining"
msgid_plural "%d minutes remaining" msgid_plural "%d minutes remaining"
msgstr[0] "%d minute remaining" msgstr[0] "%d minute remaining"
msgstr[1] "%d minutes remaining" msgstr[1] "%d minutes remaining"
#: ../js/ui/status/power.js:227 #: ../js/ui/status/power.js:228
msgid "AC adapter" msgid "AC adapter"
msgstr "AC adapter" msgstr "AC adapter"
#: ../js/ui/status/power.js:229 #: ../js/ui/status/power.js:230
msgid "Laptop battery" msgid "Laptop battery"
msgstr "Laptop battery" msgstr "Laptop battery"
#: ../js/ui/status/power.js:231 #: ../js/ui/status/power.js:232
msgid "UPS" msgid "UPS"
msgstr "UPS" msgstr "UPS"
#: ../js/ui/status/power.js:233 #: ../js/ui/status/power.js:234
msgid "Monitor" msgid "Monitor"
msgstr "Monitor" msgstr "Monitor"
#: ../js/ui/status/power.js:235 #: ../js/ui/status/power.js:236
msgid "Mouse" msgid "Mouse"
msgstr "Mouse" msgstr "Mouse"
#: ../js/ui/status/power.js:237 #: ../js/ui/status/power.js:238
msgid "Keyboard" msgid "Keyboard"
msgstr "Keyboard" msgstr "Keyboard"
#: ../js/ui/status/power.js:239 #: ../js/ui/status/power.js:240
msgid "PDA" msgid "PDA"
msgstr "PDA" msgstr "PDA"
#: ../js/ui/status/power.js:241 #: ../js/ui/status/power.js:242
msgid "Cell phone" msgid "Cell phone"
msgstr "Mobile phone" msgstr "Mobile phone"
#: ../js/ui/status/power.js:243 #: ../js/ui/status/power.js:244
msgid "Media player" msgid "Media player"
msgstr "Media player" msgstr "Media player"
#: ../js/ui/status/power.js:245 #: ../js/ui/status/power.js:246
msgid "Tablet" msgid "Tablet"
msgstr "Tablet" msgstr "Tablet"
#: ../js/ui/status/power.js:247 #: ../js/ui/status/power.js:248
msgid "Computer" msgid "Computer"
msgstr "Computer" msgstr "Computer"
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 #: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown" msgid "Unknown"
msgstr "Unknown" msgstr "Unknown"
#: ../js/ui/status/volume.js:44 #: ../js/ui/status/volume.js:45
msgid "Volume" msgid "Volume"
msgstr "Volume" msgstr "Volume"
#: ../js/ui/status/volume.js:57 #: ../js/ui/status/volume.js:58
msgid "Microphone" msgid "Microphone"
msgstr "Microphone" msgstr "Microphone"
#: ../js/ui/telepathyClient.js:239 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s is online." msgstr "%s is online."
#: ../js/ui/telepathyClient.js:244 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s is offline." msgstr "%s is offline."
#: ../js/ui/telepathyClient.js:247 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s is away." msgstr "%s is away."
#: ../js/ui/telepathyClient.js:250 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s is busy." msgstr "%s is busy."
@ -933,7 +1086,7 @@ msgstr "%s is busy."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:348 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Sent at %X on %A" msgstr "Sent at %X on %A"
@ -942,11 +1095,11 @@ msgstr "Sent at %X on %A"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. #. characters.
#: ../js/ui/viewSelector.js:117 #: ../js/ui/viewSelector.js:122
msgid "Type to search..." msgid "Type to search..."
msgstr "Type to search…" msgstr "Type to search…"
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 #: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search" msgid "Search"
msgstr "Search" msgstr "Search"
@ -962,7 +1115,7 @@ msgstr "'%s' is ready"
#. translators: #. translators:
#. * The number of sound outputs on a particular device #. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1094 #: ../src/gvc/gvc-mixer-control.c:1098
#, c-format #, c-format
msgid "%u Output" msgid "%u Output"
msgid_plural "%u Outputs" msgid_plural "%u Outputs"
@ -971,53 +1124,66 @@ msgstr[1] "%u Outputs"
#. translators: #. translators:
#. * The number of sound inputs on a particular device #. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1104 #: ../src/gvc/gvc-mixer-control.c:1108
#, c-format #, c-format
msgid "%u Input" msgid "%u Input"
msgid_plural "%u Inputs" msgid_plural "%u Inputs"
msgstr[0] "%u Input" msgstr[0] "%u Input"
msgstr[1] "%u Inputs" msgstr[1] "%u Inputs"
#: ../src/gvc/gvc-mixer-control.c:1402 #: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds" msgid "System Sounds"
msgstr "System Sounds" msgstr "System Sounds"
#: ../src/main.c:395 #: ../src/main.c:446
msgid "Print version" msgid "Print version"
msgstr "Print version" msgstr "Print version"
#: ../src/shell-global.c:1308 #: ../src/shell-app.c:454
#, c-format
msgid "Failed to launch '%s'"
msgstr "Failed to launch '%s'"
#: ../src/shell-global.c:1395
msgid "Less than a minute ago" msgid "Less than a minute ago"
msgstr "Less than a minute ago" msgstr "Less than a minute ago"
#: ../src/shell-global.c:1312 #: ../src/shell-global.c:1399
#, c-format #, c-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d minute ago" msgstr[0] "%d minute ago"
msgstr[1] "%d minutes ago" msgstr[1] "%d minutes ago"
#: ../src/shell-global.c:1317 #: ../src/shell-global.c:1404
#, c-format #, c-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d hour ago" msgstr[0] "%d hour ago"
msgstr[1] "%d hours ago" msgstr[1] "%d hours ago"
#: ../src/shell-global.c:1322 #: ../src/shell-global.c:1409
#, c-format #, c-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d day ago" msgstr[0] "%d day ago"
msgstr[1] "%d days ago" msgstr[1] "%d days ago"
#: ../src/shell-global.c:1327 #: ../src/shell-global.c:1414
#, c-format #, c-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "%d week ago" msgstr[0] "%d week ago"
msgstr[1] "%d weeks ago" msgstr[1] "%d weeks ago"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
msgstr "United Kingdom"
#: ../src/shell-mobile-providers.c:526
msgid "Default"
msgstr "Default"
#: ../src/shell-polkit-authentication-agent.c:334 #: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Authentication dialogue was dismissed by the user" msgstr "Authentication dialogue was dismissed by the user"
@ -1042,6 +1208,34 @@ msgstr "File System"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "No such application"
#~ msgstr "No such application"
#~ msgid "Shut Down"
#~ msgstr "Shut Down"
#~ msgid "Click Shut Down to quit these applications and shut down the system."
#~ msgstr ""
#~ "Click Shut Down to quit these applications and shut down the system."
#~ msgid "The system will shut down automatically in %d seconds."
#~ msgstr "The system will shut down automatically in %d seconds."
#~ msgid "Shutting down the system."
#~ msgstr "Shutting down the system."
#~ msgid "Confirm"
#~ msgstr "Confirm"
#~ msgid "Panel"
#~ msgstr "Panel"
#~ msgid "Screen Reader"
#~ msgstr "Screen Reader"
#~ msgid "Screen Keyboard"
#~ msgstr "Screen Keyboard"
#~ msgid "Clock" #~ msgid "Clock"
#~ msgstr "Clock" #~ msgstr "Clock"

1222
po/eo.po Normal file

File diff suppressed because it is too large Load Diff

622
po/es.po

File diff suppressed because it is too large Load Diff

View File

@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: gnome-shell MASTER\n" "Project-Id-Version: gnome-shell MASTER\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-03-18 10:35+0000\n" "POT-Creation-Date: 2011-03-30 17:13+0000\n"
"PO-Revision-Date: 2011-03-18 21:33+0300\n" "PO-Revision-Date: 2011-03-30 23:56+0300\n"
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n" "Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
"Language-Team: Estonian <gnome-et@linux.ee>\n" "Language-Team: Estonian <gnome-et@linux.ee>\n"
"Language: et\n" "Language: et\n"
@ -385,19 +385,19 @@ msgstr "Sind logitakse %d sekundi pärast automaatselt välja."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Süsteemist väljalogimine" msgstr "Süsteemist väljalogimine"
msgid "Shut Down" msgid "Power Off"
msgstr "Lülita välja" msgstr "Lülita välja"
msgid "Click Shut Down to quit these applications and shut down the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "" msgstr ""
"Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule " "Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
"Logi välja." "Lülita välja."
#, c-format #, c-format
msgid "The system will shut down automatically in %d seconds." msgid "The system will power off automatically in %d seconds."
msgstr "%d sekundi pärast lülitub süsteem automaatselt välja." msgstr "%d sekundi pärast lülitub süsteem automaatselt välja."
msgid "Shutting down the system." msgid "Powering off the system."
msgstr "Süsteemi väljalülitamine." msgstr "Süsteemi väljalülitamine."
msgid "Restart" msgid "Restart"
@ -415,9 +415,6 @@ msgstr "Süsteem taaskäivitatakse automaatselt %d sekundi pärast."
msgid "Restarting the system." msgid "Restarting the system."
msgstr "Süsteemi taaskäivitamine." msgstr "Süsteemi taaskäivitamine."
msgid "Confirm"
msgstr "Kinnita"
msgid "Cancel" msgid "Cancel"
msgstr "Katkesta" msgstr "Katkesta"
@ -474,8 +471,8 @@ msgstr "Lõpeta %s"
msgid "Activities" msgid "Activities"
msgstr "Tegevused" msgstr "Tegevused"
msgid "Panel" msgid "Top Bar"
msgstr "Paneel" msgstr "Ülemine riba"
#, c-format #, c-format
msgid "Failed to unmount '%s'" msgid "Failed to unmount '%s'"
@ -490,6 +487,25 @@ msgstr "Ühendumine..."
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "Asukohad ja seadmed" msgstr "Asukohad ja seadmed"
msgid "Authentication Required"
msgstr "Vajalik on autentimine"
msgid "Administrator"
msgstr "Administraator"
msgid "Authenticate"
msgstr "Autendi"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
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" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
@ -672,6 +688,11 @@ msgstr "ühendumine..."
msgid "authentication required" msgid "authentication required"
msgstr "vajalik on autentimine" msgstr "vajalik on autentimine"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
msgid "firmware missing"
msgstr "püsivara puudub"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
msgid "cable unplugged" msgid "cable unplugged"
msgstr "juhe eemaldatud" msgstr "juhe eemaldatud"
@ -750,7 +771,7 @@ msgstr "Loodi ühendus VPN-võrguga '%s'"
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Loodi võrguühendus '%s' kaudu" msgstr "Loodi võrguühendus '%s' kaudu"
msgid "Connection estabilished" msgid "Connection established"
msgstr "Ühendus loodud" msgstr "Ühendus loodud"
msgid "Networking is disabled" msgid "Networking is disabled"
@ -956,6 +977,26 @@ msgstr "Failisüsteem"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "Shut Down"
#~ msgstr "Lülita välja"
#~ msgid "Click Shut Down to quit these applications and shut down the system."
#~ msgstr ""
#~ "Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
#~ "Logi välja."
#~ msgid "The system will shut down automatically in %d seconds."
#~ msgstr "%d sekundi pärast lülitub süsteem automaatselt välja."
#~ msgid "Shutting down the system."
#~ msgstr "Süsteemi väljalülitamine."
#~ msgid "Confirm"
#~ msgstr "Kinnita"
#~ msgid "Panel"
#~ msgstr "Paneel"
#~ msgid "No such application" #~ msgid "No such application"
#~ msgstr "Sellist rakendust ei ole" #~ msgstr "Sellist rakendust ei ole"

1232
po/eu.po Normal file

File diff suppressed because it is too large Load Diff

1234
po/fa.po

File diff suppressed because it is too large Load Diff

1275
po/fi.po

File diff suppressed because it is too large Load Diff

1266
po/ga.po

File diff suppressed because it is too large Load Diff

563
po/gl.po

File diff suppressed because it is too large Load Diff

801
po/gu.po

File diff suppressed because it is too large Load Diff

605
po/he.po

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
# translation of gnome-shell.po.master.hi.po to Hindi # translation of gnome-shell.master.hi.po to Hindi
# Hindi translation for gnome-shell. # Hindi translation for gnome-shell.
# Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER # Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
@ -6,10 +6,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.po.master.hi\n" "Project-Id-Version: gnome-shell.master.hi\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-03-28 05:30+0000\n" "POT-Creation-Date: 2011-03-28 08:48+0000\n"
"PO-Revision-Date: 2011-03-28 13:39+0530\n" "PO-Revision-Date: 2011-04-01 13:59+0530\n"
"Last-Translator: Rajesh Ranjan\n" "Last-Translator: Rajesh Ranjan\n"
"Language-Team: Hindi <Indlinux>\n" "Language-Team: Hindi <Indlinux>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -20,7 +20,7 @@ msgstr ""
#: ../data/gnome-shell.desktop.in.in.h:1 #: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "" msgstr "GNOME शेल"
#: ../data/gnome-shell.desktop.in.in.h:2 #: ../data/gnome-shell.desktop.in.in.h:2
msgid "Window management and application launching" msgid "Window management and application launching"
@ -316,7 +316,7 @@ msgstr ""
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723
@ -334,11 +334,11 @@ msgstr "कल"
#: ../js/ui/calendar.js:746 #: ../js/ui/calendar.js:746
msgid "This week" msgid "This week"
msgstr "" msgstr "इस सप्ताह"
#: ../js/ui/calendar.js:754 #: ../js/ui/calendar.js:754
msgid "Next week" msgid "Next week"
msgstr "" msgstr "अगला सप्ताह"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
msgid "Remove" msgid "Remove"
@ -346,47 +346,47 @@ msgstr "हटाएँ"
#: ../js/ui/dateMenu.js:91 #: ../js/ui/dateMenu.js:91
msgid "Date and Time Settings" msgid "Date and Time Settings"
msgstr "" msgstr "तिथि व समय सेटिंग्स"
#: ../js/ui/dateMenu.js:111 #: ../js/ui/dateMenu.js:111
msgid "Open Calendar" msgid "Open Calendar"
msgstr "" msgstr "पंचांग खोलें"
#. Translators: This is the time format with date used #. Translators: This is the time format with date used
#. in 24-hour mode. #. in 24-hour mode.
#: ../js/ui/dateMenu.js:164 #: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S" msgid "%a %b %e, %R:%S"
msgstr "" msgstr "%a %b %e, %R:%S"
#: ../js/ui/dateMenu.js:165 #: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R" msgid "%a %b %e, %R"
msgstr "" msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used #. Translators: This is the time format without date used
#. in 24-hour mode. #. in 24-hour mode.
#: ../js/ui/dateMenu.js:169 #: ../js/ui/dateMenu.js:169
msgid "%a %R:%S" msgid "%a %R:%S"
msgstr "" msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:170 #: ../js/ui/dateMenu.js:170
msgid "%a %R" msgid "%a %R"
msgstr "" msgstr "%a %R"
#. Translators: This is a time format with date used #. Translators: This is a time format with date used
#. for AM/PM. #. for AM/PM.
#: ../js/ui/dateMenu.js:177 #: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p" msgid "%a %b %e, %l:%M:%S %p"
msgstr "" msgstr "%a %b %e, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:178 #: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p" msgid "%a %b %e, %l:%M %p"
msgstr "" msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used #. Translators: This is a time format without date used
#. for AM/PM. #. for AM/PM.
#: ../js/ui/dateMenu.js:182 #: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p" msgid "%a %l:%M:%S %p"
msgstr "" msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:183 #: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p" msgid "%a %l:%M %p"
@ -397,16 +397,16 @@ msgstr "%a %l:%M %p"
#. #.
#: ../js/ui/dateMenu.js:194 #: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "" msgstr "%A %B %e, %Y"
#: ../js/ui/docDisplay.js:19 #: ../js/ui/docDisplay.js:19
msgid "RECENT ITEMS" msgid "RECENT ITEMS"
msgstr "" msgstr "हालिया मद"
#: ../js/ui/endSessionDialog.js:63 #: ../js/ui/endSessionDialog.js:63
#, c-format #, c-format
msgid "Log Out %s" msgid "Log Out %s"
msgstr "" msgstr "लॉगआउट %s"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out" msgid "Log Out"
@ -432,7 +432,7 @@ msgstr ""
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
msgid "Power Off" msgid "Power Off"
msgstr "" msgstr "बिजली बंद"
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
@ -490,7 +490,7 @@ msgstr "त्रुटि"
#: ../js/ui/lookingGlass.js:631 #: ../js/ui/lookingGlass.js:631
msgid "Out of date" msgid "Out of date"
msgstr "" msgstr "समयातीत"
#: ../js/ui/lookingGlass.js:656 #: ../js/ui/lookingGlass.js:656
msgid "View Source" msgid "View Source"
@ -530,7 +530,7 @@ msgstr "डैश"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:515
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "" msgstr "छोड़ें %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
@ -540,7 +540,7 @@ msgstr "क्रियाएँ"
#: ../js/ui/panel.js:979 #: ../js/ui/panel.js:979
msgid "Top Bar" msgid "Top Bar"
msgstr "" msgstr "शीर्ष पट्टी"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -623,7 +623,7 @@ msgstr "व्यस्त"
#: ../js/ui/statusMenu.js:197 #: ../js/ui/statusMenu.js:197
msgid "My Account" msgid "My Account"
msgstr "" msgstr "मेरा खाता"
#: ../js/ui/statusMenu.js:201 #: ../js/ui/statusMenu.js:201
msgid "System Settings" msgid "System Settings"
@ -653,7 +653,7 @@ msgstr "ज़ूम"
#. this.menu.addMenuItem(screenKeyboard); #. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77 #: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "" msgstr "दृष्टि चेतावनी"
#: ../js/ui/status/accessibility.js:80 #: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys" msgid "Sticky Keys"
@ -732,7 +732,7 @@ msgstr "कुंजीपट विन्यास"
#: ../js/ui/status/bluetooth.js:252 #: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings" msgid "Mouse Settings"
msgstr "" msgstr "माउस सेटिंग"
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66 #: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings" msgid "Sound Settings"
@ -851,7 +851,7 @@ msgstr ""
#: ../js/ui/status/network.js:683 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "" msgstr "स्वतः इथरनेट"
#: ../js/ui/status/network.js:758 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
@ -893,7 +893,7 @@ msgstr "बेतार"
#: ../js/ui/status/network.js:1530 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "" msgstr "मोबाइल ब्रॉडबैंड"
#: ../js/ui/status/network.js:1540 #: ../js/ui/status/network.js:1540
msgid "VPN Connections" msgid "VPN Connections"
@ -938,11 +938,11 @@ msgstr ""
#: ../js/ui/status/network.js:2116 #: ../js/ui/status/network.js:2116
msgid "Network Manager" msgid "Network Manager"
msgstr "" msgstr "संजाल प्रबंधक"
#: ../js/ui/status/power.js:85 #: ../js/ui/status/power.js:85
msgid "Power Settings" msgid "Power Settings"
msgstr "" msgstr "बिजली सेटिंग्स"
#. 0 is reported when UPower does not have enough data #. 0 is reported when UPower does not have enough data
#. to estimate battery life #. to estimate battery life
@ -1141,8 +1141,8 @@ msgstr[1] "%d घंटा पहले"
#, c-format #, c-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "" msgstr[0] "%d दिन पहले"
msgstr[1] "" msgstr[1] "%d दिन पहले"
#: ../src/shell-global.c:1414 #: ../src/shell-global.c:1414
#, c-format #, c-format

231
po/hu.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-19 02:47+0100\n" "POT-Creation-Date: 2011-04-01 13:34+0200\n"
"PO-Revision-Date: 2011-03-19 02:47+0100\n" "PO-Revision-Date: 2011-04-01 13:36+0200\n"
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n" "Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
"Language-Team: Hungarian <gnome at fsf dot hu>\n" "Language-Team: Hungarian <gnome at fsf dot hu>\n"
"Language: \n" "Language: \n"
@ -189,27 +189,27 @@ msgid "Execution of '%s' failed:"
msgstr "„%s” végrehajtása meghiúsult:" msgstr "„%s” végrehajtása meghiúsult:"
#. Translators: Filter to display all applications #. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:226 #: ../js/ui/appDisplay.js:230
msgid "All" msgid "All"
msgstr "Összes" msgstr "Összes"
#: ../js/ui/appDisplay.js:324 #: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS" msgid "APPLICATIONS"
msgstr "ALKALMAZÁSOK" msgstr "ALKALMAZÁSOK"
#: ../js/ui/appDisplay.js:350 #: ../js/ui/appDisplay.js:354
msgid "SETTINGS" msgid "SETTINGS"
msgstr "BEÁLLÍTÁSOK" msgstr "BEÁLLÍTÁSOK"
#: ../js/ui/appDisplay.js:612 #: ../js/ui/appDisplay.js:625
msgid "New Window" msgid "New Window"
msgstr "Új ablak" msgstr "Új ablak"
#: ../js/ui/appDisplay.js:615 #: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Eltávolítás a Kedvencek közül" msgstr "Eltávolítás a Kedvencek közül"
#: ../js/ui/appDisplay.js:616 #: ../js/ui/appDisplay.js:629
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Hozzáadás a Kedvencekhez" msgstr "Hozzáadás a Kedvencekhez"
@ -342,13 +342,13 @@ msgid "Nothing Scheduled"
msgstr "Semmi sincs ütemezve" msgstr "Semmi sincs ütemezve"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %Y %B %d" msgstr "%A, %Y %B %d"
@ -369,7 +369,7 @@ msgstr "Ezen a héten"
msgid "Next week" msgid "Next week"
msgstr "Jövő héten" msgstr "Jövő héten"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Eltávolítás" msgstr "Eltávolítás"
@ -437,7 +437,7 @@ msgstr "LEGUTÓBBI ELEMEK"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "%s kijelentkeztetése" msgstr "%s kijelentkeztetése"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out" msgid "Log Out"
msgstr "Kijelentkezés" msgstr "Kijelentkezés"
@ -461,49 +461,45 @@ msgstr "Automatikusan ki fog jelentkezni %d másodperc múlva."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Kijelentkezés a rendszerből." msgstr "Kijelentkezés a rendszerből."
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
msgid "Shut Down" msgid "Power Off"
msgstr "Leállítás" msgstr "Kikapcsolás"
#: ../js/ui/endSessionDialog.js:75
msgid "Click Shut Down to quit these applications and shut down the system."
msgstr ""
"Nyomja meg a Kijelentkezés gombot az alkalmazások bezárásához és a rendszer "
"leállításához."
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
#, c-format msgid "Click Power Off to quit these applications and power off the system."
msgid "The system will shut down automatically in %d seconds." msgstr "Nyomja meg a Kikapcsolás gombot az alkalmazások bezárásához és a rendszer kikapcsolásához."
msgstr "A rendszer automatikusan leáll %d másodperc múlva."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
msgid "Shutting down the system." #, c-format
msgstr "A rendszer leállítása" msgid "The system will power off automatically in %d seconds."
msgstr "A rendszer automatikusan kikapcsol %d másodperc múlva."
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:78
msgid "Powering off the system."
msgstr "A rendszer kikapcsolása."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:93
msgid "Restart" msgid "Restart"
msgstr "Újraindítás" msgstr "Újraindítás"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "" msgstr ""
"Nyomja meg az Újraindítás gombot az alkalmazások bezárásához és a rendszer " "Nyomja meg az Újraindítás gombot az alkalmazások bezárásához és a rendszer "
"újraindításához." "újraindításához."
#: ../js/ui/endSessionDialog.js:86 #: ../js/ui/endSessionDialog.js:90
#, c-format #, c-format
msgid "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d seconds."
msgstr "A rendszer automatikusan újraindul %d másodperc múlva." msgstr "A rendszer automatikusan újraindul %d másodperc múlva."
#: ../js/ui/endSessionDialog.js:87 #: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system." msgid "Restarting the system."
msgstr "A rendszer újraindítása." msgstr "A rendszer újraindítása."
#: ../js/ui/endSessionDialog.js:395 #: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
msgid "Confirm" #: ../js/ui/status/bluetooth.js:466
msgstr "Megerősítés"
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel" msgid "Cancel"
msgstr "Mégse" msgstr "Mégse"
@ -537,48 +533,48 @@ msgstr "Forrás megtekintése"
msgid "Web Page" msgid "Web Page"
msgstr "Weblap" msgstr "Weblap"
#: ../js/ui/messageTray.js:926 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Megnyitás" msgstr "Megnyitás"
#: ../js/ui/messageTray.js:1986 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "Rendszerinformációk" msgstr "Rendszerinformációk"
#: ../js/ui/overview.js:88 #: ../js/ui/overview.js:91
msgid "Undo" msgid "Undo"
msgstr "Visszavonás" msgstr "Visszavonás"
#: ../js/ui/overview.js:183 #: ../js/ui/overview.js:186
msgid "Windows" msgid "Windows"
msgstr "Ablakok" msgstr "Ablakok"
#: ../js/ui/overview.js:186 #: ../js/ui/overview.js:189
msgid "Applications" msgid "Applications"
msgstr "Alkalmazások" msgstr "Alkalmazások"
# FIXME - valami jobbat # FIXME - valami jobbat
#. Translators: this is the name of the dock/favorites area on #. Translators: this is the name of the dock/favorites area on
#. the left of the overview #. the left of the overview
#: ../js/ui/overview.js:202 #: ../js/ui/overview.js:205
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "%s bezárása" msgstr "%s bezárása"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:874 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Tevékenységek" msgstr "Tevékenységek"
#: ../js/ui/panel.js:975 #: ../js/ui/panel.js:1003
msgid "Panel" msgid "Top Bar"
msgstr "Panel" msgstr "Felső sáv"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -597,60 +593,85 @@ msgstr "Kapcsolódás…"
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "HELYEK ÉS ESZKÖZÖK" msgstr "HELYEK ÉS ESZKÖZÖK"
#: ../js/ui/polkitAuthenticationAgent.js:74
msgid "Authentication Required"
msgstr "Hitelesítés szükséges"
#: ../js/ui/polkitAuthenticationAgent.js:108
msgid "Administrator"
msgstr "Rendszergazda"
#: ../js/ui/polkitAuthenticationAgent.js:176
msgid "Authenticate"
msgstr "Hitelesítés"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again."
msgstr "A hitelesítés sikertelen. Próbálja újra."
#: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:"
msgstr "Jelszó:"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:636 #: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:201 #: ../js/ui/runDialog.js:205
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Adjon meg egy parancsot:" msgstr "Adjon meg egy parancsot:"
#: ../js/ui/searchDisplay.js:283 #: ../js/ui/searchDisplay.js:310
msgid "Searching..." msgid "Searching..."
msgstr "Keresés…" msgstr "Keresés…"
#: ../js/ui/searchDisplay.js:297 #: ../js/ui/searchDisplay.js:324
msgid "No matching results." msgid "No matching results."
msgstr "Nincs találat." msgstr "Nincs találat."
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178 #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:228
msgid "Power Off..." msgid "Power Off..."
msgstr "Kikapcsolás…" msgstr "Kikapcsolás…"
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177 #: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend" msgid "Suspend"
msgstr "Felfüggesztés" msgstr "Felfüggesztés"
#: ../js/ui/statusMenu.js:137 #: ../js/ui/statusMenu.js:184
msgid "Available" msgid "Available"
msgstr "Elérhető" msgstr "Elérhető"
#: ../js/ui/statusMenu.js:142 #: ../js/ui/statusMenu.js:189
msgid "Busy" msgid "Busy"
msgstr "Elfoglalt" msgstr "Elfoglalt"
#: ../js/ui/statusMenu.js:150 #: ../js/ui/statusMenu.js:197
msgid "My Account" msgid "My Account"
msgstr "Saját fiók" msgstr "Saját fiók"
#: ../js/ui/statusMenu.js:154 #: ../js/ui/statusMenu.js:201
msgid "System Settings" msgid "System Settings"
msgstr "Rendszerbeállítások" msgstr "Rendszerbeállítások"
#: ../js/ui/statusMenu.js:161 #: ../js/ui/statusMenu.js:208
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Képernyő zárolása" msgstr "Képernyő zárolása"
#: ../js/ui/statusMenu.js:165 #: ../js/ui/statusMenu.js:213
msgid "Switch User" msgid "Switch User"
msgstr "Felhasználóváltás" msgstr "Felhasználóváltás"
#: ../js/ui/statusMenu.js:170 #: ../js/ui/statusMenu.js:218
msgid "Log Out..." msgid "Log Out..."
msgstr "Kijelentkezés…" msgstr "Kijelentkezés…"
@ -817,133 +838,139 @@ msgstr "Billentyűzetkiosztás megjelenítése…"
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Lokalizációs beállítások" msgstr "Lokalizációs beállítások"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
msgid "<unknown>" msgid "<unknown>"
msgstr "<ismeretlen>" msgstr "<ismeretlen>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:295 #: ../js/ui/status/network.js:311
msgid "disabled" msgid "disabled"
msgstr "tiltva" msgstr "tiltva"
#: ../js/ui/status/network.js:476 #: ../js/ui/status/network.js:494
msgid "connecting..." msgid "connecting..."
msgstr "kapcsolódás…" msgstr "kapcsolódás…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:479 #: ../js/ui/status/network.js:497
msgid "authentication required" msgid "authentication required"
msgstr "hitelesítés szükséges" msgstr "hitelesítés szükséges"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:507
msgid "firmware missing"
msgstr "hiányzó firmware"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:485 #: ../js/ui/status/network.js:514
msgid "cable unplugged" msgid "cable unplugged"
msgstr "vezeték kihúzva" msgstr "vezeték kihúzva"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:489 #: ../js/ui/status/network.js:519
msgid "unavailable" msgid "unavailable"
msgstr "nem érhető el" msgstr "nem érhető el"
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:521
msgid "connection failed" msgid "connection failed"
msgstr "a kapcsolódás meghiúsult" msgstr "a kapcsolódás meghiúsult"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341 #: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Kapcsolódva (privát)" msgstr "Kapcsolódva (privát)"
#: ../js/ui/status/network.js:636 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Auto Ethernet" msgstr "Auto Ethernet"
#: ../js/ui/status/network.js:697 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Auto széles sáv" msgstr "Auto széles sáv"
#: ../js/ui/status/network.js:700 #: ../js/ui/status/network.js:761
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Auto betárcsázós" msgstr "Auto betárcsázós"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Auto %s" msgstr "Auto %s"
#: ../js/ui/status/network.js:845 #: ../js/ui/status/network.js:906
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Auto Bluetooth" msgstr "Auto Bluetooth"
#: ../js/ui/status/network.js:1355 #: ../js/ui/status/network.js:1416
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Auto vezeték nélküli" msgstr "Auto vezeték nélküli"
#: ../js/ui/status/network.js:1413 #: ../js/ui/status/network.js:1474
msgid "More..." msgid "More..."
msgstr "Több…" msgstr "Több…"
#: ../js/ui/status/network.js:1436 #: ../js/ui/status/network.js:1497
msgid "Enable networking" msgid "Enable networking"
msgstr "Hálózat engedélyezése" msgstr "Hálózat engedélyezése"
#: ../js/ui/status/network.js:1448 #: ../js/ui/status/network.js:1509
msgid "Wired" msgid "Wired"
msgstr "Vezetékes" msgstr "Vezetékes"
#: ../js/ui/status/network.js:1459 #: ../js/ui/status/network.js:1520
msgid "Wireless" msgid "Wireless"
msgstr "Vezeték nélküli" msgstr "Vezeték nélküli"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Mobil széles sáv" msgstr "Mobil széles sáv"
#: ../js/ui/status/network.js:1479 #: ../js/ui/status/network.js:1540
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN kapcsolatok" msgstr "VPN kapcsolatok"
#: ../js/ui/status/network.js:1488 #: ../js/ui/status/network.js:1549
msgid "Network Settings" msgid "Network Settings"
msgstr "Hálózati beállítások" msgstr "Hálózati beállítások"
#: ../js/ui/status/network.js:1783 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Csatlakozott a(z) „%s” mobil széles sávú kapcsolathoz" msgstr "Csatlakozott a(z) „%s” mobil széles sávú kapcsolathoz"
#: ../js/ui/status/network.js:1787 #: ../js/ui/status/network.js:1848
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Csatlakozott a(z) „%s” vezeték nélküli hálózathoz" msgstr "Csatlakozott a(z) „%s” vezeték nélküli hálózathoz"
#: ../js/ui/status/network.js:1791 #: ../js/ui/status/network.js:1852
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Csatlakozott a(z) „%s” vezetékes hálózathoz" msgstr "Csatlakozott a(z) „%s” vezetékes hálózathoz"
#: ../js/ui/status/network.js:1795 #: ../js/ui/status/network.js:1856
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Csatlakozott a(z) „%s” VPN hálózathoz" msgstr "Csatlakozott a(z) „%s” VPN hálózathoz"
#: ../js/ui/status/network.js:1800 #: ../js/ui/status/network.js:1861
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Csatlakozott ehhez: „%s”" msgstr "Csatlakozott ehhez: „%s”"
#: ../js/ui/status/network.js:1808 #: ../js/ui/status/network.js:1869
msgid "Connection established" msgid "Connection established"
msgstr "Kapcsolat létrejött" msgstr "Kapcsolat létrejött"
#: ../js/ui/status/network.js:1930 #: ../js/ui/status/network.js:1991
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Hálózat letiltva" msgstr "Hálózat letiltva"
#: ../js/ui/status/network.js:2055 #: ../js/ui/status/network.js:2116
msgid "Network Manager" msgid "Network Manager"
msgstr "Hálózatkezelő" msgstr "Hálózatkezelő"
@ -1033,7 +1060,7 @@ msgstr "Táblagép"
msgid "Computer" msgid "Computer"
msgstr "Számítógép" msgstr "Számítógép"
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961 #: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown" msgid "Unknown"
msgstr "Ismeretlen" msgstr "Ismeretlen"
@ -1045,22 +1072,22 @@ msgstr "Hangerő"
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
#: ../js/ui/telepathyClient.js:332 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s elérhető." msgstr "%s elérhető."
#: ../js/ui/telepathyClient.js:337 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s kilépett." msgstr "%s kilépett."
#: ../js/ui/telepathyClient.js:340 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s távol van." msgstr "%s távol van."
#: ../js/ui/telepathyClient.js:343 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s elfoglalt." msgstr "%s elfoglalt."
@ -1068,7 +1095,7 @@ msgstr "%s elfoglalt."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:474 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Elküldve: %A, %X" msgstr "Elküldve: %A, %X"
@ -1077,11 +1104,11 @@ msgstr "Elküldve: %A, %X"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. #. characters.
#: ../js/ui/viewSelector.js:119 #: ../js/ui/viewSelector.js:122
msgid "Type to search..." msgid "Type to search..."
msgstr "Gépeljen a kereséshez…" msgstr "Gépeljen a kereséshez…"
#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250 #: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search" msgid "Search"
msgstr "Oldalsáv" msgstr "Oldalsáv"
@ -1117,7 +1144,7 @@ msgstr[1] "%u bemenet"
msgid "System Sounds" msgid "System Sounds"
msgstr "Rendszerhangok" msgstr "Rendszerhangok"
#: ../src/main.c:397 #: ../src/main.c:446
msgid "Print version" msgid "Print version"
msgstr "Verzió kiírása" msgstr "Verzió kiírása"
@ -1126,32 +1153,32 @@ msgstr "Verzió kiírása"
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "„%s” indítása meghiúsult" msgstr "„%s” indítása meghiúsult"
#: ../src/shell-global.c:1340 #: ../src/shell-global.c:1395
msgid "Less than a minute ago" msgid "Less than a minute ago"
msgstr "Kevesebb, mint egy perce" msgstr "Kevesebb, mint egy perce"
#: ../src/shell-global.c:1344 #: ../src/shell-global.c:1399
#, c-format #, c-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d perce" msgstr[0] "%d perce"
msgstr[1] "%d perce" msgstr[1] "%d perce"
#: ../src/shell-global.c:1349 #: ../src/shell-global.c:1404
#, c-format #, c-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d órája" msgstr[0] "%d órája"
msgstr[1] "%d órája" msgstr[1] "%d órája"
#: ../src/shell-global.c:1354 #: ../src/shell-global.c:1409
#, c-format #, c-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d napja" msgstr[0] "%d napja"
msgstr[1] "%d napja" msgstr[1] "%d napja"
#: ../src/shell-global.c:1359 #: ../src/shell-global.c:1414
#, c-format #, c-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"

111
po/it.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-24 22:46+0100\n" "POT-Creation-Date: 2011-04-03 10:34+0200\n"
"PO-Revision-Date: 2011-03-24 22:58+0100\n" "PO-Revision-Date: 2011-04-03 10:35+0200\n"
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n" "Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
"Language-Team: Italian <tp@lists.linux.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n" "Language: it\n"
@ -345,13 +345,13 @@ msgid "Nothing Scheduled"
msgstr "Nessun evento" msgstr "Nessun evento"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e %B" msgstr "%A, %e %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
@ -372,7 +372,7 @@ msgstr "Questa settimana"
msgid "Next week" msgid "Next week"
msgstr "Prossima settimana" msgstr "Prossima settimana"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Rimuovi" msgstr "Rimuovi"
@ -471,7 +471,8 @@ msgstr "Spegni"
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema." msgstr ""
"Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
#, c-format #, c-format
@ -539,11 +540,11 @@ msgstr "Visualizza sorgente"
msgid "Web Page" msgid "Web Page"
msgstr "Pagina web" msgstr "Pagina web"
#: ../js/ui/messageTray.js:987 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Apri" msgstr "Apri"
#: ../js/ui/messageTray.js:2145 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "Informazione di sistema" msgstr "Informazione di sistema"
@ -567,18 +568,18 @@ msgid "Dash"
msgstr "Dash" msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Chiudi %s" msgstr "Chiudi %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:878 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Attività" msgstr "Attività"
#: ../js/ui/panel.js:979 #: ../js/ui/panel.js:1003
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superiore" msgstr "Barra superiore"
@ -612,11 +613,15 @@ msgstr "Amministratore"
msgid "Authenticate" msgid "Authenticate"
msgstr "Autentica" msgstr "Autentica"
#: ../js/ui/polkitAuthenticationAgent.js:260 #. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "" msgstr "Errore nell'autenticazione. Provare di nuovo."
#: ../js/ui/polkitAuthenticationAgent.js:272 #: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:" msgid "Password:"
msgstr "Password:" msgstr "Password:"
@ -633,11 +638,11 @@ msgstr "toggle-switch-us"
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Inserire un comando:" msgstr "Inserire un comando:"
#: ../js/ui/searchDisplay.js:310 #: ../js/ui/searchDisplay.js:311
msgid "Searching..." msgid "Searching..."
msgstr "Ricerca..." msgstr "Ricerca..."
#: ../js/ui/searchDisplay.js:324 #: ../js/ui/searchDisplay.js:325
msgid "No matching results." msgid "No matching results."
msgstr "Nessun risultato corrispondente." msgstr "Nessun risultato corrispondente."
@ -844,133 +849,139 @@ msgstr "Mostra disposizione tastiera..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Impostazioni localizzazione" msgstr "Impostazioni localizzazione"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1467
msgid "<unknown>" msgid "<unknown>"
msgstr "<sconosciuto>" msgstr "<sconosciuto>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:295 #: ../js/ui/status/network.js:318
msgid "disabled" msgid "disabled"
msgstr "disabilitata" msgstr "disabilitata"
#: ../js/ui/status/network.js:476 #: ../js/ui/status/network.js:501
msgid "connecting..." msgid "connecting..."
msgstr "connessione..." msgstr "connessione..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:479 #: ../js/ui/status/network.js:504
msgid "authentication required" msgid "authentication required"
msgstr "richiesta autenticazione" msgstr "richiesta autenticazione"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:514
msgid "firmware missing"
msgstr "firmware mancante"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:485 #: ../js/ui/status/network.js:521
msgid "cable unplugged" msgid "cable unplugged"
msgstr "cavo scollegato" msgstr "cavo scollegato"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:489 #: ../js/ui/status/network.js:526
msgid "unavailable" msgid "unavailable"
msgstr "non disponibile" msgstr "non disponibile"
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:528
msgid "connection failed" msgid "connection failed"
msgstr "connessione non riuscita" msgstr "connessione non riuscita"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341 #: ../js/ui/status/network.js:609 ../js/ui/status/network.js:1415
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Connessa (privata)" msgstr "Connessa (privata)"
#: ../js/ui/status/network.js:636 #: ../js/ui/status/network.js:690
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Ethernet automatica" msgstr "Ethernet automatica"
#: ../js/ui/status/network.js:697 #: ../js/ui/status/network.js:765
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Banda larga automatica" msgstr "Banda larga automatica"
#: ../js/ui/status/network.js:700 #: ../js/ui/status/network.js:768
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Dial-up automatica" msgstr "Dial-up automatica"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:911 ../js/ui/status/network.js:1427
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "%s automatica" msgstr "%s automatica"
#: ../js/ui/status/network.js:845 #: ../js/ui/status/network.js:913
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Bluetooth automatica" msgstr "Bluetooth automatica"
#: ../js/ui/status/network.js:1355 #: ../js/ui/status/network.js:1429
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Wireless automatica" msgstr "Wireless automatica"
#: ../js/ui/status/network.js:1413 #: ../js/ui/status/network.js:1487
msgid "More..." msgid "More..."
msgstr "Altro..." msgstr "Altro..."
#: ../js/ui/status/network.js:1436 #: ../js/ui/status/network.js:1510
msgid "Enable networking" msgid "Enable networking"
msgstr "Abilita rete" msgstr "Abilita rete"
#: ../js/ui/status/network.js:1448 #: ../js/ui/status/network.js:1522
msgid "Wired" msgid "Wired"
msgstr "Via cavo" msgstr "Via cavo"
#: ../js/ui/status/network.js:1459 #: ../js/ui/status/network.js:1533
msgid "Wireless" msgid "Wireless"
msgstr "Wireless" msgstr "Wireless"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1543
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Banda larga mobile" msgstr "Banda larga mobile"
#: ../js/ui/status/network.js:1479 #: ../js/ui/status/network.js:1553
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Connessioni VPN" msgstr "Connessioni VPN"
#: ../js/ui/status/network.js:1488 #: ../js/ui/status/network.js:1565
msgid "Network Settings" msgid "Network Settings"
msgstr "Impostazioni rete" msgstr "Impostazioni rete"
#: ../js/ui/status/network.js:1783 #: ../js/ui/status/network.js:1860
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Connessi alla rete mobile «%s»" msgstr "Connessi alla rete mobile «%s»"
#: ../js/ui/status/network.js:1787 #: ../js/ui/status/network.js:1864
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Connessi alla rete wireless «%s»" msgstr "Connessi alla rete wireless «%s»"
#: ../js/ui/status/network.js:1791 #: ../js/ui/status/network.js:1868
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Connessi alla rete via cavo «%s»" msgstr "Connessi alla rete via cavo «%s»"
#: ../js/ui/status/network.js:1795 #: ../js/ui/status/network.js:1872
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Connessi alla rete VPN «%s»" msgstr "Connessi alla rete VPN «%s»"
#: ../js/ui/status/network.js:1800 #: ../js/ui/status/network.js:1877
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Connessi a «%s»" msgstr "Connessi a «%s»"
#: ../js/ui/status/network.js:1808 #: ../js/ui/status/network.js:1885
msgid "Connection established" msgid "Connection established"
msgstr "Connessione stabilita" msgstr "Connessione stabilita"
#: ../js/ui/status/network.js:1930 #: ../js/ui/status/network.js:2007
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Rete disabilitata" msgstr "Rete disabilitata"
#: ../js/ui/status/network.js:2055 #: ../js/ui/status/network.js:2132
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestore reti" msgstr "Gestore reti"
@ -1073,22 +1084,22 @@ msgstr "Volume"
msgid "Microphone" msgid "Microphone"
msgstr "Microfono" msgstr "Microfono"
#: ../js/ui/telepathyClient.js:332 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s è disponibile." msgstr "%s è disponibile."
#: ../js/ui/telepathyClient.js:337 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s è fuori rete." msgstr "%s è fuori rete."
#: ../js/ui/telepathyClient.js:340 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s è assente." msgstr "%s è assente."
#: ../js/ui/telepathyClient.js:343 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s non è disponibile." msgstr "%s non è disponibile."
@ -1096,7 +1107,7 @@ msgstr "%s non è disponibile."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:474 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Inviato alle %-H.%M di %A" msgstr "Inviato alle %-H.%M di %A"

1486
po/ja.po

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-03-24 08:03+0000\n" "POT-Creation-Date: 2011-03-25 20:20+0000\n"
"PO-Revision-Date: 2011-03-25 21:56+0900\n" "PO-Revision-Date: 2011-04-02 19:58+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n" "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -617,7 +617,8 @@ msgstr "검색하는 중..."
msgid "No matching results." msgid "No matching results."
msgstr "일치하는 결과가 없습니다." msgstr "일치하는 결과가 없습니다."
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228 #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:228
msgid "Power Off..." msgid "Power Off..."
msgstr "컴퓨터 끄기..." msgstr "컴퓨터 끄기..."
@ -816,7 +817,7 @@ msgstr "키보드 배치 보기..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "지역화 설정" msgstr "지역화 설정"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393 #: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1437
msgid "<unknown>" msgid "<unknown>"
msgstr "<알 수 없음>" msgstr "<알 수 없음>"
@ -825,124 +826,130 @@ msgstr "<알 수 없음>"
msgid "disabled" msgid "disabled"
msgstr "사용 않음" msgstr "사용 않음"
#: ../js/ui/status/network.js:476 #: ../js/ui/status/network.js:478
msgid "connecting..." msgid "connecting..."
msgstr "연결하는 중..." msgstr "연결하는 중..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:479 #: ../js/ui/status/network.js:481
msgid "authentication required" msgid "authentication required"
msgstr "인증이 필요합니다" msgstr "인증이 필요합니다"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:491
msgid "firmware missing"
msgstr "펌웨어 없음"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:485 #: ../js/ui/status/network.js:498
msgid "cable unplugged" msgid "cable unplugged"
msgstr "케이블이 분리되었습니다" msgstr "케이블이 분리되었습니다"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:489 #: ../js/ui/status/network.js:503
msgid "unavailable" msgid "unavailable"
msgstr "사용 불가" msgstr "사용 불가"
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:505
msgid "connection failed" msgid "connection failed"
msgstr "연결이 실패했습니다" msgstr "연결이 실패했습니다"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341 #: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1385
msgid "Connected (private)" msgid "Connected (private)"
msgstr "연결됨 (개인)" msgstr "연결됨 (개인)"
#: ../js/ui/status/network.js:636 #: ../js/ui/status/network.js:666
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "자동 이더넷" msgstr "자동 이더넷"
#: ../js/ui/status/network.js:697 #: ../js/ui/status/network.js:741
msgid "Auto broadband" msgid "Auto broadband"
msgstr "자동 고속 통신망" msgstr "자동 고속 통신망"
#: ../js/ui/status/network.js:700 #: ../js/ui/status/network.js:744
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "자동 전화접속" msgstr "자동 전화접속"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:887 ../js/ui/status/network.js:1397
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "자동 %s" msgstr "자동 %s"
#: ../js/ui/status/network.js:845 #: ../js/ui/status/network.js:889
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "자동 블루투스" msgstr "자동 블루투스"
#: ../js/ui/status/network.js:1355 #: ../js/ui/status/network.js:1399
msgid "Auto wireless" msgid "Auto wireless"
msgstr "자동 무선" msgstr "자동 무선"
#: ../js/ui/status/network.js:1413 #: ../js/ui/status/network.js:1457
msgid "More..." msgid "More..."
msgstr "더 보기..." msgstr "더 보기..."
#: ../js/ui/status/network.js:1436 #: ../js/ui/status/network.js:1480
msgid "Enable networking" msgid "Enable networking"
msgstr "네트워크 사용" msgstr "네트워크 사용"
#: ../js/ui/status/network.js:1448 #: ../js/ui/status/network.js:1492
msgid "Wired" msgid "Wired"
msgstr "유선" msgstr "유선"
#: ../js/ui/status/network.js:1459 #: ../js/ui/status/network.js:1503
msgid "Wireless" msgid "Wireless"
msgstr "무선" msgstr "무선"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1513
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "휴대전화 네트워크" msgstr "휴대전화 네트워크"
#: ../js/ui/status/network.js:1479 #: ../js/ui/status/network.js:1523
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN 연결" msgstr "VPN 연결"
#: ../js/ui/status/network.js:1488 #: ../js/ui/status/network.js:1532
msgid "Network Settings" msgid "Network Settings"
msgstr "네트워크 설정" msgstr "네트워크 설정"
#: ../js/ui/status/network.js:1783 #: ../js/ui/status/network.js:1827
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "'%s' 휴대전화 네트워크에 연결되었습니다" msgstr "'%s' 휴대전화 네트워크에 연결되었습니다"
#: ../js/ui/status/network.js:1787 #: ../js/ui/status/network.js:1831
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "'%s' 무선 네트워크에 연결되었습니다" msgstr "'%s' 무선 네트워크에 연결되었습니다"
#: ../js/ui/status/network.js:1791 #: ../js/ui/status/network.js:1835
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "'%s' 유선 네트워크에 연결되었습니다" msgstr "'%s' 유선 네트워크에 연결되었습니다"
#: ../js/ui/status/network.js:1795 #: ../js/ui/status/network.js:1839
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "'%s' VPN 네트워크에 연결되었습니다" msgstr "'%s' VPN 네트워크에 연결되었습니다"
#: ../js/ui/status/network.js:1800 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "이제 '%s'에 연결되었습니다" msgstr "이제 '%s'에 연결되었습니다"
#: ../js/ui/status/network.js:1808 #: ../js/ui/status/network.js:1852
msgid "Connection established" msgid "Connection established"
msgstr "연결이 되었습니다" msgstr "연결이 되었습니다"
#: ../js/ui/status/network.js:1930 #: ../js/ui/status/network.js:1974
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "네트워크를 사용하지 않습니다" msgstr "네트워크를 사용하지 않습니다"
#: ../js/ui/status/network.js:2055 #: ../js/ui/status/network.js:2099
msgid "Network Manager" msgid "Network Manager"
msgstr "네트워크 관리" msgstr "네트워크 관리"

247
po/lt.po
View File

@ -6,9 +6,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-21 14:25+0100\n" "POT-Creation-Date: 2011-04-01 22:30+0200\n"
"PO-Revision-Date: 2011-03-19 14:56+0300\n" "PO-Revision-Date: 2011-04-01 22:27+0100\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Gintautas Miliauskas <gintautas@miliauskas.lt>\n"
"Language-Team: Lithuanian <gnome-lt@lists.akl.lt>\n" "Language-Team: Lithuanian <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -188,27 +188,27 @@ msgid "Execution of '%s' failed:"
msgstr "Nepavyko paleisti „%s“:" msgstr "Nepavyko paleisti „%s“:"
#. Translators: Filter to display all applications #. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:226 #: ../js/ui/appDisplay.js:230
msgid "All" msgid "All"
msgstr "Visi" msgstr "Visi"
#: ../js/ui/appDisplay.js:324 #: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS" msgid "APPLICATIONS"
msgstr "PROGRAMOS" msgstr "PROGRAMOS"
#: ../js/ui/appDisplay.js:350 #: ../js/ui/appDisplay.js:354
msgid "SETTINGS" msgid "SETTINGS"
msgstr "NUSTATYMAI" msgstr "NUSTATYMAI"
#: ../js/ui/appDisplay.js:616 #: ../js/ui/appDisplay.js:625
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: ../js/ui/appDisplay.js:619 #: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: ../js/ui/appDisplay.js:620 #: ../js/ui/appDisplay.js:629
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
@ -341,13 +341,13 @@ msgid "Nothing Scheduled"
msgstr "Niekas nesuplanuota" msgstr "Niekas nesuplanuota"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %Y %B %d" msgstr "%A, %Y %B %d"
@ -368,7 +368,7 @@ msgstr "Šią savaitę"
msgid "Next week" msgid "Next week"
msgstr "Kitą savaitę" msgstr "Kitą savaitę"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Pašalinti" msgstr "Pašalinti"
@ -436,7 +436,7 @@ msgstr "PASKUTINIEJI ELEMENTAI"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Atjungti %s" msgstr "Atjungti %s"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
@ -460,48 +460,46 @@ msgstr "Jūs būsite automatiškai atjungtas po %d sekundžių."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Atsijungiama nuo sistemos." msgstr "Atsijungiama nuo sistemos."
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
msgid "Shut Down" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#: ../js/ui/endSessionDialog.js:75
msgid "Click Shut Down to quit these applications and shut down the system."
msgstr ""
"Spauskite „išjungti“, jei norite užverti šias programas ir išjungti sistemą."
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
#, c-format msgid "Click Power Off to quit these applications and power off the system."
msgid "The system will shut down automatically in %d seconds." msgstr ""
msgstr "Sistema automatiškaisijungs po %d sekundžių." "Spauskite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
msgid "Shutting down the system." #, c-format
msgstr "Sistemos išjungimas." msgid "The system will power off automatically in %d seconds."
msgstr "Sistema automatiškai išsijungs po %d sekundžių."
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:78
msgid "Powering off the system."
msgstr "Sistema išjungiama."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:93
msgid "Restart" msgid "Restart"
msgstr "Įkelti iš naujo" msgstr "Įkelti iš naujo"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "" msgstr ""
"Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti " "Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti "
"sistemą iš naujo." "sistemą iš naujo."
#: ../js/ui/endSessionDialog.js:86 #: ../js/ui/endSessionDialog.js:90
#, c-format #, c-format
msgid "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d seconds."
msgstr "Sistema bus įkelta iš naujo po %d sekundžių." msgstr "Sistema bus įkelta iš naujo po %d sekundžių."
#: ../js/ui/endSessionDialog.js:87 #: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system." msgid "Restarting the system."
msgstr "Sistemos įkėlimas iš naujo" msgstr "Sistemos įkėlimas iš naujo"
#: ../js/ui/endSessionDialog.js:395 #: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
msgid "Confirm" #: ../js/ui/status/bluetooth.js:466
msgstr "Patvirtinti"
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel" msgid "Cancel"
msgstr "Atšaukti" msgstr "Atšaukti"
@ -535,47 +533,47 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: ../js/ui/messageTray.js:926 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Atverti" msgstr "Atverti"
#: ../js/ui/messageTray.js:1986 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
#: ../js/ui/overview.js:88 #: ../js/ui/overview.js:91
msgid "Undo" msgid "Undo"
msgstr "Atšaukti" msgstr "Atšaukti"
#: ../js/ui/overview.js:183 #: ../js/ui/overview.js:186
msgid "Windows" msgid "Windows"
msgstr "Langai" msgstr "Langai"
#: ../js/ui/overview.js:186 #: ../js/ui/overview.js:189
msgid "Applications" msgid "Applications"
msgstr "Programos" msgstr "Programos"
#. Translators: this is the name of the dock/favorites area on #. Translators: this is the name of the dock/favorites area on
#. the left of the overview #. the left of the overview
#: ../js/ui/overview.js:202 #: ../js/ui/overview.js:205
msgid "Dash" msgid "Dash"
msgstr "" msgstr "Paleidimo sritis"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Užverti %s" msgstr "Užverti %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:874 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Apžvalga" msgstr "Apžvalga"
#: ../js/ui/panel.js:975 #: ../js/ui/panel.js:1003
msgid "Panel" msgid "Top Bar"
msgstr "Skydelis" msgstr "Viršutinė juosta"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -594,60 +592,85 @@ msgstr "Prisijungti prie..."
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "VIETOS ir ĮRENGINIAI" msgstr "VIETOS ir ĮRENGINIAI"
#: ../js/ui/polkitAuthenticationAgent.js:74
msgid "Authentication Required"
msgstr "Reikia patvirtinti tapatybę"
#: ../js/ui/polkitAuthenticationAgent.js:108
msgid "Administrator"
msgstr "Administratorius"
#: ../js/ui/polkitAuthenticationAgent.js:176
msgid "Authenticate"
msgstr "Patvirtinti tapatybę"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again."
msgstr "Atsiprašome, tai nesuveikė. Pabandykite dar kartą."
#: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:"
msgstr "Slaptažodis:"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:636 #: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
#: ../js/ui/runDialog.js:201 #: ../js/ui/runDialog.js:205
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Įveskite komandą:" msgstr "Įveskite komandą:"
#: ../js/ui/searchDisplay.js:287 #: ../js/ui/searchDisplay.js:310
msgid "Searching..." msgid "Searching..."
msgstr "Ieškoma..." msgstr "Ieškoma..."
#: ../js/ui/searchDisplay.js:301 #: ../js/ui/searchDisplay.js:324
msgid "No matching results." msgid "No matching results."
msgstr "Nerasta atitikmenų." msgstr "Nerasta atitikmenų."
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178 #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:228
msgid "Power Off..." msgid "Power Off..."
msgstr "Išjungti..." msgstr "Išjungti..."
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177 #: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend" msgid "Suspend"
msgstr "Užmigdyti" msgstr "Užmigdyti"
#: ../js/ui/statusMenu.js:137 #: ../js/ui/statusMenu.js:184
msgid "Available" msgid "Available"
msgstr "Esu" msgstr "Esu"
#: ../js/ui/statusMenu.js:142 #: ../js/ui/statusMenu.js:189
msgid "Busy" msgid "Busy"
msgstr "Užsiėmęs (-usi)" msgstr "Užsiėmęs (-usi)"
#: ../js/ui/statusMenu.js:150 #: ../js/ui/statusMenu.js:197
msgid "My Account" msgid "My Account"
msgstr "Mano paskyra" msgstr "Mano paskyra"
#: ../js/ui/statusMenu.js:154 #: ../js/ui/statusMenu.js:201
msgid "System Settings" msgid "System Settings"
msgstr "Sistemos nustatymai" msgstr "Sistemos nustatymai"
#: ../js/ui/statusMenu.js:161 #: ../js/ui/statusMenu.js:208
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Užrakinti ekraną" msgstr "Užrakinti ekraną"
#: ../js/ui/statusMenu.js:165 #: ../js/ui/statusMenu.js:213
msgid "Switch User" msgid "Switch User"
msgstr "Keisti naudotoją" msgstr "Keisti naudotoją"
#: ../js/ui/statusMenu.js:170 #: ../js/ui/statusMenu.js:218
msgid "Log Out..." msgid "Log Out..."
msgstr "Atsijungti ..." msgstr "Atsijungti ..."
@ -814,133 +837,139 @@ msgstr "Rodyti klaviatūros išdėstymą..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Lokalizacijos nustatymai" msgstr "Lokalizacijos nustatymai"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
msgid "<unknown>" msgid "<unknown>"
msgstr "<nežinoma>" msgstr "<nežinoma>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:295 #: ../js/ui/status/network.js:311
msgid "disabled" msgid "disabled"
msgstr "išjungta" msgstr "išjungta"
#: ../js/ui/status/network.js:476 #: ../js/ui/status/network.js:494
msgid "connecting..." msgid "connecting..."
msgstr "jungiamasi..." msgstr "jungiamasi..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:479 #: ../js/ui/status/network.js:497
msgid "authentication required" msgid "authentication required"
msgstr "reikia patvirtinti tapatybę" msgstr "reikia patvirtinti tapatybę"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:507
msgid "firmware missing"
msgstr "Trūksta integruotos programinės įrangos (firmware)"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:485 #: ../js/ui/status/network.js:514
msgid "cable unplugged" msgid "cable unplugged"
msgstr "kabelis neįjungtas" msgstr "kabelis neįjungtas"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:489 #: ../js/ui/status/network.js:519
msgid "unavailable" msgid "unavailable"
msgstr "nepasiekiamas" msgstr "nepasiekiamas"
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:521
msgid "connection failed" msgid "connection failed"
msgstr "nepavyko prisijungti" msgstr "nepavyko prisijungti"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341 #: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Prisijungta (privatus)" msgstr "Prisijungta (privatus)"
#: ../js/ui/status/network.js:636 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Automatinis vietinis" msgstr "Automatinis vietinis"
#: ../js/ui/status/network.js:697 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Automatinis plačiajuostis" msgstr "Automatinis plačiajuostis"
#: ../js/ui/status/network.js:700 #: ../js/ui/status/network.js:761
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Automatinis telefoninis" msgstr "Automatinis telefoninis"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Automatinis %s" msgstr "Automatinis %s"
#: ../js/ui/status/network.js:845 #: ../js/ui/status/network.js:906
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Automatinis bluetooth" msgstr "Automatinis bluetooth"
#: ../js/ui/status/network.js:1355 #: ../js/ui/status/network.js:1416
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Automatinis belaidis" msgstr "Automatinis belaidis"
#: ../js/ui/status/network.js:1413 #: ../js/ui/status/network.js:1474
msgid "More..." msgid "More..."
msgstr "Daugiau..." msgstr "Daugiau..."
#: ../js/ui/status/network.js:1436 #: ../js/ui/status/network.js:1497
msgid "Enable networking" msgid "Enable networking"
msgstr "Įjungti tinklą" msgstr "Įjungti tinklą"
#: ../js/ui/status/network.js:1448 #: ../js/ui/status/network.js:1509
msgid "Wired" msgid "Wired"
msgstr "Laidinis" msgstr "Laidinis"
#: ../js/ui/status/network.js:1459 #: ../js/ui/status/network.js:1520
msgid "Wireless" msgid "Wireless"
msgstr "Belaidis" msgstr "Belaidis"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Mobilus plačiajuostis" msgstr "Mobilus plačiajuostis"
#: ../js/ui/status/network.js:1479 #: ../js/ui/status/network.js:1540
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN ryšiai" msgstr "VPN ryšiai"
#: ../js/ui/status/network.js:1488 #: ../js/ui/status/network.js:1549
msgid "Network Settings" msgid "Network Settings"
msgstr "Tinklo nustatymai" msgstr "Tinklo nustatymai"
#: ../js/ui/status/network.js:1783 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Dabar esate prisijungęs prie mobilaus plačiajuosčio ryšio „%s“" msgstr "Dabar esate prisijungęs prie mobilaus plačiajuosčio ryšio „%s“"
#: ../js/ui/status/network.js:1787 #: ../js/ui/status/network.js:1848
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Dabar esate prisijungęs prie belaidžio tinklo „%s“" msgstr "Dabar esate prisijungęs prie belaidžio tinklo „%s“"
#: ../js/ui/status/network.js:1791 #: ../js/ui/status/network.js:1852
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Dabar esate prisijungęs prie laidinio tinklo „%s“" msgstr "Dabar esate prisijungęs prie laidinio tinklo „%s“"
#: ../js/ui/status/network.js:1795 #: ../js/ui/status/network.js:1856
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Dabar esate prisijungęs prie VPN tinklo „%s“" msgstr "Dabar esate prisijungęs prie VPN tinklo „%s“"
#: ../js/ui/status/network.js:1800 #: ../js/ui/status/network.js:1861
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Dabar esate prisijungęs prie „%s“" msgstr "Dabar esate prisijungęs prie „%s“"
#: ../js/ui/status/network.js:1808 #: ../js/ui/status/network.js:1869
msgid "Connection established" msgid "Connection established"
msgstr "Ryšys užmegstas" msgstr "Ryšys užmegstas"
#: ../js/ui/status/network.js:1930 #: ../js/ui/status/network.js:1991
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Tinklas išjungtas" msgstr "Tinklas išjungtas"
#: ../js/ui/status/network.js:2055 #: ../js/ui/status/network.js:2116
msgid "Network Manager" msgid "Network Manager"
msgstr "Tinklo valdymas" msgstr "Tinklo valdymas"
@ -1046,22 +1075,22 @@ msgstr "Garsumas"
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofonas" msgstr "Mikrofonas"
#: ../js/ui/telepathyClient.js:332 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s yra prisijungęs" msgstr "%s yra prisijungęs"
#: ../js/ui/telepathyClient.js:337 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s yra atsijungęs" msgstr "%s yra atsijungęs"
#: ../js/ui/telepathyClient.js:340 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s yra nepasiekiamas" msgstr "%s yra nepasiekiamas"
#: ../js/ui/telepathyClient.js:343 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s yra užsiėmęs." msgstr "%s yra užsiėmęs."
@ -1069,7 +1098,7 @@ msgstr "%s yra užsiėmęs."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:474 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Išsiųsta %A %H:%M:%S" msgstr "Išsiųsta %A %H:%M:%S"
@ -1120,7 +1149,7 @@ msgstr[2] "%u įvestys"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sistemos garsai" msgstr "Sistemos garsai"
#: ../src/main.c:397 #: ../src/main.c:446
msgid "Print version" msgid "Print version"
msgstr "Atspausdinti versiją" msgstr "Atspausdinti versiją"
@ -1129,11 +1158,11 @@ msgstr "Atspausdinti versiją"
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Nepavyko paleisti „%s“" msgstr "Nepavyko paleisti „%s“"
#: ../src/shell-global.c:1340 #: ../src/shell-global.c:1395
msgid "Less than a minute ago" msgid "Less than a minute ago"
msgstr "Mažiau nei prieš minutę" msgstr "Mažiau nei prieš minutę"
#: ../src/shell-global.c:1344 #: ../src/shell-global.c:1399
#, c-format #, c-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
@ -1141,7 +1170,7 @@ msgstr[0] "prieš %d minutę"
msgstr[1] "prieš %d minutes" msgstr[1] "prieš %d minutes"
msgstr[2] "prieš %d minučių" msgstr[2] "prieš %d minučių"
#: ../src/shell-global.c:1349 #: ../src/shell-global.c:1404
#, c-format #, c-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
@ -1149,7 +1178,7 @@ msgstr[0] "prieš %d valandą"
msgstr[1] "prieš %d valandas" msgstr[1] "prieš %d valandas"
msgstr[2] "prieš %d valandų" msgstr[2] "prieš %d valandų"
#: ../src/shell-global.c:1354 #: ../src/shell-global.c:1409
#, c-format #, c-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
@ -1157,7 +1186,7 @@ msgstr[0] "prieš %d dieną"
msgstr[1] "prieš %d dienas" msgstr[1] "prieš %d dienas"
msgstr[2] "prieš %d dienų" msgstr[2] "prieš %d dienų"
#: ../src/shell-global.c:1359 #: ../src/shell-global.c:1414
#, c-format #, c-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
@ -1197,6 +1226,26 @@ msgstr "Failų sistema"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "Shut Down"
#~ msgstr "Išjungti"
#~ msgid "Click Shut Down to quit these applications and shut down the system."
#~ msgstr ""
#~ "Spauskite „išjungti“, jei norite užverti šias programas ir išjungti "
#~ "sistemą."
#~ msgid "The system will shut down automatically in %d seconds."
#~ msgstr "Sistema automatiškai išsijungs po %d sekundžių."
#~ msgid "Shutting down the system."
#~ msgstr "Sistemos išjungimas."
#~ msgid "Confirm"
#~ msgstr "Patvirtinti"
#~ msgid "Panel"
#~ msgstr "Skydelis"
#~ msgid "Clock" #~ msgid "Clock"
#~ msgstr "Laikrodis" #~ msgstr "Laikrodis"

118
po/lv.po
View File

@ -2,14 +2,15 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# #
# Rudolfs <rudolfs.mazurs@gmail.com>, 2011. # Rudolfs <rudolfs.mazurs@gmail.com>, 2011.
# Rūdofls Mazurs <rudolfs.mazurs@gmail.com>, 2011.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" "cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-03-25 20:20+0000\n" "POT-Creation-Date: 2011-03-27 22:10+0000\n"
"PO-Revision-Date: 2011-03-26 14:14+0200\n" "PO-Revision-Date: 2011-04-04 02:11+0300\n"
"Last-Translator: Rudolfs <rudolfs.mazurs@gmail.com>\n" "Last-Translator: Rūdofls Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n" "Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -189,7 +190,7 @@ msgstr "'%s' izpilde neizdevās:"
#. Translators: Filter to display all applications #. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:230 #: ../js/ui/appDisplay.js:230
msgid "All" msgid "All"
msgstr "Visi" msgstr "Visas"
#: ../js/ui/appDisplay.js:328 #: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS" msgid "APPLICATIONS"
@ -367,7 +368,7 @@ msgstr "Šonedēļ"
msgid "Next week" msgid "Next week"
msgstr "Nākamnedēļ" msgstr "Nākamnedēļ"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
msgid "Remove" msgid "Remove"
msgstr "Izņemt" msgstr "Izņemt"
@ -460,23 +461,19 @@ msgid "Logging out of the system."
msgstr "Izrakstās no sistēmas." msgstr "Izrakstās no sistēmas."
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
#| msgid "Power Off..."
msgid "Power Off" msgid "Power Off"
msgstr "Izslēgt" msgstr "Izslēgt"
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:76
#| msgid "Click Log Out to quit these applications and log out of the system."
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "Spiediet 'Izslēgt', lai izietu no šīm lietotnēm un izslēgtu sistēmas." msgstr "Spiediet 'Izslēgt', lai izietu no šīm lietotnēm un izslēgtu sistēmas."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:77
#, c-format #, c-format
#| msgid "The system will restart automatically in %d seconds."
msgid "The system will power off automatically in %d seconds." msgid "The system will power off automatically in %d seconds."
msgstr "Sistēma tiks izslēgta automātiski pēc %d sekundēm." msgstr "Sistēma tiks izslēgta automātiski pēc %d sekundēm."
#: ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:78
#| msgid "Logging out of the system."
msgid "Powering off the system." msgid "Powering off the system."
msgstr "Izslēdz sistēmu." msgstr "Izslēdz sistēmu."
@ -510,13 +507,13 @@ msgstr "Nav instalētu paplašinājumu"
#: ../js/ui/lookingGlass.js:625 #: ../js/ui/lookingGlass.js:625
msgid "Enabled" msgid "Enabled"
msgstr "Aktivēts" msgstr "Aktivēta"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091 #: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled" msgid "Disabled"
msgstr "Deaktivēts" msgstr "Deaktivēta"
#: ../js/ui/lookingGlass.js:629 #: ../js/ui/lookingGlass.js:629
msgid "Error" msgid "Error"
@ -534,11 +531,11 @@ msgstr "Skatīt avotu"
msgid "Web Page" msgid "Web Page"
msgstr "Tīmekļa lapa" msgstr "Tīmekļa lapa"
#: ../js/ui/messageTray.js:987 #: ../js/ui/messageTray.js:993
msgid "Open" msgid "Open"
msgstr "Atvērt" msgstr "Atvērt"
#: ../js/ui/messageTray.js:2145 #: ../js/ui/messageTray.js:2151
msgid "System Information" msgid "System Information"
msgstr "Sistēmas informācija" msgstr "Sistēmas informācija"
@ -548,7 +545,7 @@ msgstr "Atsaukt"
#: ../js/ui/overview.js:186 #: ../js/ui/overview.js:186
msgid "Windows" msgid "Windows"
msgstr "Logs" msgstr "Logi"
#: ../js/ui/overview.js:189 #: ../js/ui/overview.js:189
msgid "Applications" msgid "Applications"
@ -570,7 +567,7 @@ msgstr "Iziet no %s"
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:878 #: ../js/ui/panel.js:878
msgid "Activities" msgid "Activities"
msgstr "Darbības" msgstr "Aktivitātes"
#: ../js/ui/panel.js:979 #: ../js/ui/panel.js:979
msgid "Top Bar" msgid "Top Bar"
@ -594,7 +591,6 @@ msgid "PLACES & DEVICES"
msgstr "VIETAS un IERĪCES" msgstr "VIETAS un IERĪCES"
#: ../js/ui/polkitAuthenticationAgent.js:74 #: ../js/ui/polkitAuthenticationAgent.js:74
#| msgid "authentication required"
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Nepieciešama autentifikācija" msgstr "Nepieciešama autentifikācija"
@ -603,15 +599,18 @@ msgid "Administrator"
msgstr "Administrators" msgstr "Administrators"
#: ../js/ui/polkitAuthenticationAgent.js:176 #: ../js/ui/polkitAuthenticationAgent.js:176
#| msgid "authentication required"
msgid "Authenticate" msgid "Authenticate"
msgstr "Autentificēt" msgstr "Autentificēt"
#: ../js/ui/polkitAuthenticationAgent.js:260 #. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz." msgstr "Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz."
#: ../js/ui/polkitAuthenticationAgent.js:272 #: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:" msgid "Password:"
msgstr "Parole:" msgstr "Parole:"
@ -836,140 +835,139 @@ msgstr "Rādīt tastatūras izkārtojumu..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Lokalizācijas iestatījumi" msgstr "Lokalizācijas iestatījumi"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1437 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
msgid "<unknown>" msgid "<unknown>"
msgstr "<nezināms>" msgstr "<nezināms>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:295 #: ../js/ui/status/network.js:311
msgid "disabled" msgid "disabled"
msgstr "deaktivēts" msgstr "izslēgts"
#: ../js/ui/status/network.js:478 #: ../js/ui/status/network.js:494
msgid "connecting..." msgid "connecting..."
msgstr "savienojas..." msgstr "savienojas..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:481 #: ../js/ui/status/network.js:497
msgid "authentication required" msgid "authentication required"
msgstr "nepieciešama autentifikācija" msgstr "nepieciešama autentifikācija"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing #. module, which is missing
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:507
msgid "firmware missing" msgid "firmware missing"
msgstr "trūkst aparātprogrammatūras" msgstr "trūkst aparātprogrammatūras"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:498 #: ../js/ui/status/network.js:514
msgid "cable unplugged" msgid "cable unplugged"
msgstr "vads atvienots" msgstr "vads atvienots"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:503 #: ../js/ui/status/network.js:519
msgid "unavailable" msgid "unavailable"
msgstr "nav pieejams" msgstr "nav pieejams"
#: ../js/ui/status/network.js:505 #: ../js/ui/status/network.js:521
msgid "connection failed" msgid "connection failed"
msgstr "savienojums neizdevās" msgstr "savienojums neizdevās"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1385 #: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Savienots (privāts)" msgstr "Savienots (privāts)"
#: ../js/ui/status/network.js:666 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Auto Ethernet" msgstr "Auto Ethernet"
#: ../js/ui/status/network.js:741 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Auto platjosla" msgstr "Auto platjosla"
#: ../js/ui/status/network.js:744 #: ../js/ui/status/network.js:761
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Auto iezvanlīnija" msgstr "Auto iezvanlīnija"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:887 ../js/ui/status/network.js:1397 #: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Auto %s" msgstr "Automātisks %s"
#: ../js/ui/status/network.js:889 #: ../js/ui/status/network.js:906
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Auto bluetooth" msgstr "Automātisks bluetooth"
#: ../js/ui/status/network.js:1399 #: ../js/ui/status/network.js:1416
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Auto bezvadu" msgstr "Automātisks bezvadu"
#: ../js/ui/status/network.js:1457 #: ../js/ui/status/network.js:1474
msgid "More..." msgid "More..."
msgstr "Vairāk..." msgstr "Vairāk..."
#: ../js/ui/status/network.js:1480 #: ../js/ui/status/network.js:1497
msgid "Enable networking" msgid "Enable networking"
msgstr "Aktivē tīklošanu" msgstr "Aktivē tīklošanu"
#: ../js/ui/status/network.js:1492 #: ../js/ui/status/network.js:1509
msgid "Wired" msgid "Wired"
msgstr "Vadu" msgstr "Vadu"
#: ../js/ui/status/network.js:1503 #: ../js/ui/status/network.js:1520
msgid "Wireless" msgid "Wireless"
msgstr "Bezvadu" msgstr "Bezvadu"
#: ../js/ui/status/network.js:1513 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Mobilā platjosla" msgstr "Mobilā platjosla"
#: ../js/ui/status/network.js:1523 #: ../js/ui/status/network.js:1540
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN savienojumi" msgstr "VPN savienojumi"
#: ../js/ui/status/network.js:1532 #: ../js/ui/status/network.js:1549
msgid "Network Settings" msgid "Network Settings"
msgstr "Tīkla iestatījumi" msgstr "Tīkla iestatījumi"
#: ../js/ui/status/network.js:1827 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Jūs esat savienojies ar mobilo platjoslas savienojumu '%s'" msgstr "Jūs esat savienojies ar mobilo platjoslas savienojumu '%s'"
#: ../js/ui/status/network.js:1831 #: ../js/ui/status/network.js:1848
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Jūs esat savienojies ar bezvadu tīklu '%s'" msgstr "Jūs esat savienojies ar bezvadu tīklu '%s'"
#: ../js/ui/status/network.js:1835 #: ../js/ui/status/network.js:1852
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Jūs esat savienojies ar vadu tīklu '%s'" msgstr "Jūs esat savienojies ar vadu tīklu '%s'"
#: ../js/ui/status/network.js:1839 #: ../js/ui/status/network.js:1856
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Jūs esat savienojies ar VPN tīklu '%s'" msgstr "Jūs esat savienojies ar VPN tīklu '%s'"
#: ../js/ui/status/network.js:1844 #: ../js/ui/status/network.js:1861
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Jūs esat savienojies ar '%s'" msgstr "Jūs esat savienojies ar '%s'"
#: ../js/ui/status/network.js:1852 #: ../js/ui/status/network.js:1869
#| msgid "Connection estabilished"
msgid "Connection established" msgid "Connection established"
msgstr "Savienojums izveidots" msgstr "Savienojums izveidots"
#: ../js/ui/status/network.js:1974 #: ../js/ui/status/network.js:1991
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Tīklošana ir deaktivēta" msgstr "Tīklošana ir deaktivēta"
#: ../js/ui/status/network.js:2099 #: ../js/ui/status/network.js:2116
msgid "Network Manager" msgid "Network Manager"
msgstr "Tīkla pārvaldnieks" msgstr "Tīkla pārvaldnieks"
@ -1069,28 +1067,28 @@ msgstr "Nezināms"
#: ../js/ui/status/volume.js:45 #: ../js/ui/status/volume.js:45
msgid "Volume" msgid "Volume"
msgstr "Sējums" msgstr "Skaļums"
#: ../js/ui/status/volume.js:58 #: ../js/ui/status/volume.js:58
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofons" msgstr "Mikrofons"
#: ../js/ui/telepathyClient.js:332 #: ../js/ui/telepathyClient.js:331
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s ir tiešsaistē." msgstr "%s ir tiešsaistē."
#: ../js/ui/telepathyClient.js:337 #: ../js/ui/telepathyClient.js:336
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s ir nesaistē." msgstr "%s ir nesaistē."
#: ../js/ui/telepathyClient.js:340 #: ../js/ui/telepathyClient.js:339
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s\" ir prom." msgstr "%s\" ir prom."
#: ../js/ui/telepathyClient.js:343 #: ../js/ui/telepathyClient.js:342
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s\" ir aizņemts." msgstr "%s\" ir aizņemts."
@ -1098,7 +1096,7 @@ msgstr "%s\" ir aizņemts."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:474 #: ../js/ui/telepathyClient.js:473
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Sūtīts %X %A" msgstr "Sūtīts %X %A"

601
po/nb.po

File diff suppressed because it is too large Load Diff

View File

@ -1125,7 +1125,7 @@ msgstr "%s is opgestart"
#: ../js/ui/windowAttentionHandler.js:44 #: ../js/ui/windowAttentionHandler.js:44
#, c-format #, c-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "%s is klaar" msgstr "%s is gereed"
#. translators: #. translators:
#. * The number of sound outputs on a particular device #. * The number of sound outputs on a particular device

114
po/pl.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-28 20:21+0200\n" "POT-Creation-Date: 2011-04-22 16:23+0200\n"
"PO-Revision-Date: 2011-03-28 20:22+0200\n" "PO-Revision-Date: 2011-04-22 16:27+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n" "Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n" "Language: pl\n"
@ -196,23 +196,23 @@ msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
msgid "All" msgid "All"
msgstr "Wszystkie" msgstr "Wszystkie"
#: ../js/ui/appDisplay.js:328 #: ../js/ui/appDisplay.js:329
msgid "APPLICATIONS" msgid "APPLICATIONS"
msgstr "Programy" msgstr "Programy"
#: ../js/ui/appDisplay.js:354 #: ../js/ui/appDisplay.js:355
msgid "SETTINGS" msgid "SETTINGS"
msgstr "Ustawienia" msgstr "Ustawienia"
#: ../js/ui/appDisplay.js:625 #: ../js/ui/appDisplay.js:626
msgid "New Window" msgid "New Window"
msgstr "Nowe okno" msgstr "Nowe okno"
#: ../js/ui/appDisplay.js:628 #: ../js/ui/appDisplay.js:629
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Usuń z ulubionych" msgstr "Usuń z ulubionych"
#: ../js/ui/appDisplay.js:629 #: ../js/ui/appDisplay.js:630
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj do ulubionych" msgstr "Dodaj do ulubionych"
@ -345,13 +345,13 @@ msgid "Nothing Scheduled"
msgstr "Nic nie zaplanowano" msgstr "Nic nie zaplanowano"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:492
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e %B" msgstr "%A, %e %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:495
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
@ -372,7 +372,7 @@ msgstr "Ten tydzień"
msgid "Next week" msgid "Next week"
msgstr "Następny tydzień" msgstr "Następny tydzień"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1037
msgid "Remove" msgid "Remove"
msgstr "Usuń" msgstr "Usuń"
@ -408,7 +408,7 @@ msgstr "%a, %R"
#. for AM/PM. #. for AM/PM.
#: ../js/ui/dateMenu.js:177 #: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p" msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %H:%M:%S %p" msgstr "%a %e %b, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:178 #: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p" msgid "%a %b %e, %l:%M %p"
@ -499,7 +499,7 @@ msgstr "System zostanie automatycznie uruchomiony ponownie za %d sekund."
msgid "Restarting the system." msgid "Restarting the system."
msgstr "Ponowne uruchamianie systemu." msgstr "Ponowne uruchamianie systemu."
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172 #: ../js/ui/endSessionDialog.js:413 ../js/ui/polkitAuthenticationAgent.js:172
#: ../js/ui/status/bluetooth.js:466 #: ../js/ui/status/bluetooth.js:466
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
@ -534,11 +534,11 @@ msgstr "Wyświetl źródło"
msgid "Web Page" msgid "Web Page"
msgstr "Strona WWW" msgstr "Strona WWW"
#: ../js/ui/messageTray.js:993 #: ../js/ui/messageTray.js:1030
msgid "Open" msgid "Open"
msgstr "Otwórz" msgstr "Otwórz"
#: ../js/ui/messageTray.js:2151 #: ../js/ui/messageTray.js:2194
msgid "System Information" msgid "System Information"
msgstr "Informacje systemowe" msgstr "Informacje systemowe"
@ -561,18 +561,18 @@ msgid "Dash"
msgstr "Ulubione" msgstr "Ulubione"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Zakończ program %s" msgstr "Zakończ program %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:878 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Podgląd" msgstr "Podgląd"
#: ../js/ui/panel.js:979 #: ../js/ui/panel.js:1003
msgid "Top Bar" msgid "Top Bar"
msgstr "Górny pasek" msgstr "Górny pasek"
@ -630,11 +630,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Proszę wprowadzić polecenie:" msgstr "Proszę wprowadzić polecenie:"
#: ../js/ui/searchDisplay.js:310 #: ../js/ui/searchDisplay.js:311
msgid "Searching..." msgid "Searching..."
msgstr "Wyszukiwanie..." msgstr "Wyszukiwanie..."
#: ../js/ui/searchDisplay.js:324 #: ../js/ui/searchDisplay.js:325
msgid "No matching results." msgid "No matching results."
msgstr "Brak wyników." msgstr "Brak wyników."
@ -838,139 +838,139 @@ msgstr "Wyświetl układ klawiatury..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Ustawienia lokalizacji" msgstr "Ustawienia lokalizacji"
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454 #: ../js/ui/status/network.js:109 ../js/ui/status/network.js:1498
msgid "<unknown>" msgid "<unknown>"
msgstr "<nieznane>" msgstr "<nieznane>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:311 #: ../js/ui/status/network.js:326
msgid "disabled" msgid "disabled"
msgstr "wyłączone" msgstr "wyłączone"
#: ../js/ui/status/network.js:494 #: ../js/ui/status/network.js:521
msgid "connecting..." msgid "connecting..."
msgstr "łączenie..." msgstr "łączenie..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:497 #: ../js/ui/status/network.js:524
msgid "authentication required" msgid "authentication required"
msgstr "wymagane jest uwierzytelnienie" msgstr "wymagane jest uwierzytelnienie"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing #. module, which is missing
#: ../js/ui/status/network.js:507 #: ../js/ui/status/network.js:534
msgid "firmware missing" msgid "firmware missing"
msgstr "brak oprogramowania wbudowanego" msgstr "brak oprogramowania wbudowanego"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:514 #: ../js/ui/status/network.js:541
msgid "cable unplugged" msgid "cable unplugged"
msgstr "kabel jest niepodłączony" msgstr "kabel jest niepodłączony"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:519 #: ../js/ui/status/network.js:546
msgid "unavailable" msgid "unavailable"
msgstr "niedostępne" msgstr "niedostępne"
#: ../js/ui/status/network.js:521 #: ../js/ui/status/network.js:548
msgid "connection failed" msgid "connection failed"
msgstr "połączenie się nie powiodło" msgstr "połączenie się nie powiodło"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402 #: ../js/ui/status/network.js:628 ../js/ui/status/network.js:1446
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Połączono (prywatne)" msgstr "Połączono (prywatne)"
#: ../js/ui/status/network.js:683 #: ../js/ui/status/network.js:713
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Automatyczne Ethernet" msgstr "Automatyczne Ethernet"
#: ../js/ui/status/network.js:758 #: ../js/ui/status/network.js:788
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Automatyczne komórkowe" msgstr "Automatyczne komórkowe"
#: ../js/ui/status/network.js:761 #: ../js/ui/status/network.js:791
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Automatyczne wdzwaniane" msgstr "Automatyczne wdzwaniane"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414 #: ../js/ui/status/network.js:937 ../js/ui/status/network.js:1458
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Automatyczne %s" msgstr "Automatyczne %s"
#: ../js/ui/status/network.js:906 #: ../js/ui/status/network.js:939
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Automatyczne Bluetooth" msgstr "Automatyczne Bluetooth"
#: ../js/ui/status/network.js:1416 #: ../js/ui/status/network.js:1460
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Automatyczne bezprzewodowe" msgstr "Automatyczne bezprzewodowe"
#: ../js/ui/status/network.js:1474 #: ../js/ui/status/network.js:1518
msgid "More..." msgid "More..."
msgstr "Więcej..." msgstr "Więcej..."
#: ../js/ui/status/network.js:1497 #: ../js/ui/status/network.js:1541
msgid "Enable networking" msgid "Enable networking"
msgstr "Włącz sieć" msgstr "Włącz sieć"
#: ../js/ui/status/network.js:1509 #: ../js/ui/status/network.js:1553
msgid "Wired" msgid "Wired"
msgstr "Przewodowe" msgstr "Przewodowe"
#: ../js/ui/status/network.js:1520 #: ../js/ui/status/network.js:1564
msgid "Wireless" msgid "Wireless"
msgstr "Bezprzewodowe" msgstr "Bezprzewodowe"
#: ../js/ui/status/network.js:1530 #: ../js/ui/status/network.js:1574
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Komórkowe" msgstr "Komórkowe"
#: ../js/ui/status/network.js:1540 #: ../js/ui/status/network.js:1584
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Połączenia VPN" msgstr "Połączenia VPN"
#: ../js/ui/status/network.js:1549 #: ../js/ui/status/network.js:1596
msgid "Network Settings" msgid "Network Settings"
msgstr "Ustawienia sieci" msgstr "Ustawienia sieci"
#: ../js/ui/status/network.js:1844 #: ../js/ui/status/network.js:1890
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Połączono z siecią komórkową \"%s\"" msgstr "Połączono z siecią komórkową \"%s\""
#: ../js/ui/status/network.js:1848 #: ../js/ui/status/network.js:1894
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Połączono z siecią bezprzewodową \"%s\"" msgstr "Połączono z siecią bezprzewodową \"%s\""
#: ../js/ui/status/network.js:1852 #: ../js/ui/status/network.js:1898
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Połączono z siecią przewodową \"%s\"" msgstr "Połączono z siecią przewodową \"%s\""
#: ../js/ui/status/network.js:1856 #: ../js/ui/status/network.js:1902
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Połączono z siecią VPN \"%s\"" msgstr "Połączono z siecią VPN \"%s\""
#: ../js/ui/status/network.js:1861 #: ../js/ui/status/network.js:1907
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Połączono z siecią \"%s\"" msgstr "Połączono z siecią \"%s\""
#: ../js/ui/status/network.js:1869 #: ../js/ui/status/network.js:1915
msgid "Connection established" msgid "Connection established"
msgstr "Nawiązano połączenie" msgstr "Nawiązano połączenie"
#: ../js/ui/status/network.js:1991 #: ../js/ui/status/network.js:2041
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Sieć jest wyłączona" msgstr "Sieć jest wyłączona"
#: ../js/ui/status/network.js:2116 #: ../js/ui/status/network.js:2166
msgid "Network Manager" msgid "Network Manager"
msgstr "Menedżer sieci" msgstr "Menedżer sieci"
@ -1076,22 +1076,22 @@ msgstr "Głośność"
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
#: ../js/ui/telepathyClient.js:331 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "Użytkownik %s jest online." msgstr "Użytkownik %s jest w trybie online."
#: ../js/ui/telepathyClient.js:336 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "Użytkownik %s jest offline." msgstr "Użytkownik %s jest w trybie offline."
#: ../js/ui/telepathyClient.js:339 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "Użytkownik %s jest nieobecny." msgstr "Użytkownik %s jest nieobecny."
#: ../js/ui/telepathyClient.js:342 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "Użytkownik %s jest zajęty." msgstr "Użytkownik %s jest zajęty."
@ -1099,7 +1099,7 @@ msgstr "Użytkownik %s jest zajęty."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:473 #: ../js/ui/telepathyClient.js:484
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Wysłano o %H:%M w dniu %e %b" msgstr "Wysłano o %H:%M w dniu %e %b"
@ -1150,7 +1150,7 @@ msgstr[2] "%u wejść"
msgid "System Sounds" msgid "System Sounds"
msgstr "Dźwięki systemowe" msgstr "Dźwięki systemowe"
#: ../src/main.c:446 #: ../src/main.c:445
msgid "Print version" msgid "Print version"
msgstr "Wyświetla wersję" msgstr "Wyświetla wersję"

241
po/pt.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 3.0\n" "Project-Id-Version: 3.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-20 23:18+0000\n" "POT-Creation-Date: 2011-03-29 23:48+0100\n"
"PO-Revision-Date: 2011-03-20 23:45+0000\n" "PO-Revision-Date: 2011-03-29 23:50+0000\n"
"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n" "Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n" "Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
"Language: pt\n" "Language: pt\n"
@ -189,27 +189,27 @@ msgid "Execution of '%s' failed:"
msgstr "Falha ao executar '%s':" msgstr "Falha ao executar '%s':"
#. Translators: Filter to display all applications #. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:226 #: ../js/ui/appDisplay.js:230
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: ../js/ui/appDisplay.js:324 #: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS" msgid "APPLICATIONS"
msgstr "APLICAÇÕES" msgstr "APLICAÇÕES"
#: ../js/ui/appDisplay.js:350 #: ../js/ui/appDisplay.js:354
msgid "SETTINGS" msgid "SETTINGS"
msgstr "DEFINIÇÕES" msgstr "DEFINIÇÕES"
#: ../js/ui/appDisplay.js:616 #: ../js/ui/appDisplay.js:625
msgid "New Window" msgid "New Window"
msgstr "Nova Janela" msgstr "Nova Janela"
#: ../js/ui/appDisplay.js:619 #: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Remover dos Favoritos" msgstr "Remover dos Favoritos"
#: ../js/ui/appDisplay.js:620 #: ../js/ui/appDisplay.js:629
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adicionar aos Favoritos" msgstr "Adicionar aos Favoritos"
@ -342,13 +342,13 @@ msgid "Nothing Scheduled"
msgstr "Nada Agendado" msgstr "Nada Agendado"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720 #: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723 #: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %B %d, %Y" msgstr "%A, %B %d, %Y"
@ -369,7 +369,7 @@ msgstr "Esta semana"
msgid "Next week" msgid "Next week"
msgstr "Próxima semana" msgstr "Próxima semana"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
msgid "Remove" msgid "Remove"
msgstr "Remover" msgstr "Remover"
@ -437,13 +437,15 @@ msgstr "ITENS RECENTES"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Terminar a Sessão de %s" msgstr "Terminar a Sessão de %s"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out" msgid "Log Out"
msgstr "Terminar Sessão" msgstr "Terminar Sessão"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:65
msgid "Click Log Out to quit these applications and log out of the system." msgid "Click Log Out to quit these applications and log out of the system."
msgstr "Clique em Terminar Sessão para fechar estas aplicações e terminar a sessão no sistema." msgstr ""
"Clique em Terminar Sessão para fechar estas aplicações e terminar a sessão "
"no sistema."
#: ../js/ui/endSessionDialog.js:66 #: ../js/ui/endSessionDialog.js:66
#, c-format #, c-format
@ -459,45 +461,44 @@ msgstr "A sua sessão terminará automaticamente dentro de %d segundos."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "A terminar a sessão no sistema." msgstr "A terminar a sessão no sistema."
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 #: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
msgid "Shut Down" msgid "Power Off"
msgstr "Desligar" msgstr "Desligar"
#: ../js/ui/endSessionDialog.js:75 #: ../js/ui/endSessionDialog.js:76
msgid "Click Shut Down to quit these applications and shut down the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "Clique em Desligar para fechar estas aplicações e desligar o sistema." msgstr "Clique em Desligar para fechar estas aplicações e desligar o sistema."
#: ../js/ui/endSessionDialog.js:76 #: ../js/ui/endSessionDialog.js:77
#, c-format #, c-format
msgid "The system will shut down automatically in %d seconds." msgid "The system will power off automatically in %d seconds."
msgstr "O sistema irá desligar-se automaticamente dentro de %d segundos." msgstr "O sistema irá desligar-se automaticamente dentro de %d segundos."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:78
msgid "Shutting down the system." msgid "Powering off the system."
msgstr "A desligar o sistema." msgstr "A desligar o sistema."
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 #: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
#: ../js/ui/endSessionDialog.js:93
msgid "Restart" msgid "Restart"
msgstr "Reiniciar" msgstr "Reiniciar"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "Clique em Reiniciar para fechar estas aplicações e reiniciar o sistema." msgstr ""
"Clique em Reiniciar para fechar estas aplicações e reiniciar o sistema."
#: ../js/ui/endSessionDialog.js:86 #: ../js/ui/endSessionDialog.js:90
#, c-format #, c-format
msgid "The system will restart automatically in %d seconds." msgid "The system will restart automatically in %d seconds."
msgstr "O sistema irá reiniciar-se automaticamente dentro de %d segundos." msgstr "O sistema irá reiniciar-se automaticamente dentro de %d segundos."
#: ../js/ui/endSessionDialog.js:87 #: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system." msgid "Restarting the system."
msgstr "A reiniciar o sistema." msgstr "A reiniciar o sistema."
#: ../js/ui/endSessionDialog.js:395 #: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
msgid "Confirm" #: ../js/ui/status/bluetooth.js:466
msgstr "Confirmar"
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
@ -531,47 +532,47 @@ msgstr "Visualizar o Código Fonte"
msgid "Web Page" msgid "Web Page"
msgstr "Página Web" msgstr "Página Web"
#: ../js/ui/messageTray.js:926 #: ../js/ui/messageTray.js:1000
msgid "Open" msgid "Open"
msgstr "Abrir" msgstr "Abrir"
#: ../js/ui/messageTray.js:1986 #: ../js/ui/messageTray.js:2164
msgid "System Information" msgid "System Information"
msgstr "Informação do Sistema" msgstr "Informação do Sistema"
#: ../js/ui/overview.js:88 #: ../js/ui/overview.js:91
msgid "Undo" msgid "Undo"
msgstr "Desfazer" msgstr "Desfazer"
#: ../js/ui/overview.js:183 #: ../js/ui/overview.js:186
msgid "Windows" msgid "Windows"
msgstr "Janelas" msgstr "Janelas"
#: ../js/ui/overview.js:186 #: ../js/ui/overview.js:189
msgid "Applications" msgid "Applications"
msgstr "Aplicações" msgstr "Aplicações"
#. Translators: this is the name of the dock/favorites area on #. Translators: this is the name of the dock/favorites area on
#. the left of the overview #. the left of the overview
#: ../js/ui/overview.js:202 #: ../js/ui/overview.js:205
msgid "Dash" msgid "Dash"
msgstr "Atalhos" msgstr "Atalhos"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:524
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Terminar %s" msgstr "Terminar %s"
#. Button on the left side of the panel. #. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:874 #: ../js/ui/panel.js:902
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: ../js/ui/panel.js:975 #: ../js/ui/panel.js:1003
msgid "Panel" msgid "Top Bar"
msgstr "Painel" msgstr "Barra Superior"
#: ../js/ui/placeDisplay.js:122 #: ../js/ui/placeDisplay.js:122
#, c-format #, c-format
@ -590,60 +591,85 @@ msgstr "Estabelecer ligação a..."
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "LOCAIS & DISPOSITIVOS" msgstr "LOCAIS & DISPOSITIVOS"
#: ../js/ui/polkitAuthenticationAgent.js:74
msgid "Authentication Required"
msgstr "Necessária Autenticação"
#: ../js/ui/polkitAuthenticationAgent.js:108
msgid "Administrator"
msgstr "Administrador"
#: ../js/ui/polkitAuthenticationAgent.js:176
msgid "Authenticate"
msgstr "Autenticar"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:264
msgid "Sorry, that didn't work. Please try again."
msgstr "Falha inesperada na autenticação. Tente novamente."
#: ../js/ui/polkitAuthenticationAgent.js:276
msgid "Password:"
msgstr "Senha:"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:636 #: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:201 #: ../js/ui/runDialog.js:205
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Introduza um comando:" msgstr "Introduza um comando:"
#: ../js/ui/searchDisplay.js:287 #: ../js/ui/searchDisplay.js:310
msgid "Searching..." msgid "Searching..."
msgstr "A Procurar..." msgstr "A Procurar..."
#: ../js/ui/searchDisplay.js:301 #: ../js/ui/searchDisplay.js:324
msgid "No matching results." msgid "No matching results."
msgstr "Nenhum resultado coincidente." msgstr "Nenhum resultado coincidente."
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178 #: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:228
msgid "Power Off..." msgid "Power Off..."
msgstr "Desligar..." msgstr "Desligar..."
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177 #: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: ../js/ui/statusMenu.js:137 #: ../js/ui/statusMenu.js:184
msgid "Available" msgid "Available"
msgstr "Disponível" msgstr "Disponível"
#: ../js/ui/statusMenu.js:142 #: ../js/ui/statusMenu.js:189
msgid "Busy" msgid "Busy"
msgstr "Ocupado" msgstr "Ocupado"
#: ../js/ui/statusMenu.js:150 #: ../js/ui/statusMenu.js:197
msgid "My Account" msgid "My Account"
msgstr "A Minha Conta" msgstr "A Minha Conta"
#: ../js/ui/statusMenu.js:154 #: ../js/ui/statusMenu.js:201
msgid "System Settings" msgid "System Settings"
msgstr "Definições de Sistema" msgstr "Definições de Sistema"
#: ../js/ui/statusMenu.js:161 #: ../js/ui/statusMenu.js:208
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Trancar o Ecrã" msgstr "Trancar o Ecrã"
#: ../js/ui/statusMenu.js:165 #: ../js/ui/statusMenu.js:213
msgid "Switch User" msgid "Switch User"
msgstr "Alternar Utilizador" msgstr "Alternar Utilizador"
#: ../js/ui/statusMenu.js:170 #: ../js/ui/statusMenu.js:218
msgid "Log Out..." msgid "Log Out..."
msgstr "Terminar Sessão..." msgstr "Terminar Sessão..."
@ -810,133 +836,139 @@ msgstr "Apresentar a Disposição de Teclado..."
msgid "Localization Settings" msgid "Localization Settings"
msgstr "Definições de Localização" msgstr "Definições de Localização"
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393 #: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
msgid "<unknown>" msgid "<unknown>"
msgstr "<desconhecido>" msgstr "<desconhecido>"
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
#: ../js/ui/status/network.js:295 #: ../js/ui/status/network.js:311
msgid "disabled" msgid "disabled"
msgstr "desactivado" msgstr "desactivado"
#: ../js/ui/status/network.js:476 #: ../js/ui/status/network.js:494
msgid "connecting..." msgid "connecting..."
msgstr "a ligar..." msgstr "a ligar..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:479 #: ../js/ui/status/network.js:497
msgid "authentication required" msgid "authentication required"
msgstr "necessária autenticação" msgstr "necessária autenticação"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:507
msgid "firmware missing"
msgstr "falta o firmware"
#. Translators: this is for wired network devices that are physically disconnected #. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:485 #: ../js/ui/status/network.js:514
msgid "cable unplugged" msgid "cable unplugged"
msgstr "cabo desligado" msgstr "cabo desligado"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage #. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:489 #: ../js/ui/status/network.js:519
msgid "unavailable" msgid "unavailable"
msgstr "indisponível" msgstr "indisponível"
#: ../js/ui/status/network.js:491 #: ../js/ui/status/network.js:521
msgid "connection failed" msgid "connection failed"
msgstr "falha ao ligar" msgstr "falha ao ligar"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341 #: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Ligado (privada)" msgstr "Ligado (privada)"
#: ../js/ui/status/network.js:636 #: ../js/ui/status/network.js:683
msgid "Auto Ethernet" msgid "Auto Ethernet"
msgstr "Ethernet automática" msgstr "Ethernet automática"
#: ../js/ui/status/network.js:697 #: ../js/ui/status/network.js:758
msgid "Auto broadband" msgid "Auto broadband"
msgstr "Banda larga automática" msgstr "Banda larga automática"
#: ../js/ui/status/network.js:700 #: ../js/ui/status/network.js:761
msgid "Auto dial-up" msgid "Auto dial-up"
msgstr "Ligação telefónica automática" msgstr "Ligação telefónica automática"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "%s automática" msgstr "%s automática"
#: ../js/ui/status/network.js:845 #: ../js/ui/status/network.js:906
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Bluetooth automático" msgstr "Bluetooth automático"
#: ../js/ui/status/network.js:1355 #: ../js/ui/status/network.js:1416
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Wireless automático" msgstr "Wireless automático"
#: ../js/ui/status/network.js:1413 #: ../js/ui/status/network.js:1474
msgid "More..." msgid "More..."
msgstr "Mais..." msgstr "Mais..."
#: ../js/ui/status/network.js:1436 #: ../js/ui/status/network.js:1497
msgid "Enable networking" msgid "Enable networking"
msgstr "Activar a rede" msgstr "Activar a rede"
#: ../js/ui/status/network.js:1448 #: ../js/ui/status/network.js:1509
msgid "Wired" msgid "Wired"
msgstr "Com fios" msgstr "Com fios"
#: ../js/ui/status/network.js:1459 #: ../js/ui/status/network.js:1520
msgid "Wireless" msgid "Wireless"
msgstr "Sem fios" msgstr "Sem fios"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1530
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Banda larga móvel" msgstr "Banda larga móvel"
#: ../js/ui/status/network.js:1479 #: ../js/ui/status/network.js:1540
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Ligações VPN" msgstr "Ligações VPN"
#: ../js/ui/status/network.js:1488 #: ../js/ui/status/network.js:1549
msgid "Network Settings" msgid "Network Settings"
msgstr "Definições de Rede" msgstr "Definições de Rede"
#: ../js/ui/status/network.js:1783 #: ../js/ui/status/network.js:1844
#, c-format #, c-format
msgid "You're now connected to mobile broadband connection '%s'" msgid "You're now connected to mobile broadband connection '%s'"
msgstr "Está ligado à ligação '%s' em banda larga móvel" msgstr "Está ligado à ligação '%s' em banda larga móvel"
#: ../js/ui/status/network.js:1787 #: ../js/ui/status/network.js:1848
#, c-format #, c-format
msgid "You're now connected to wireless network '%s'" msgid "You're now connected to wireless network '%s'"
msgstr "Está ligado à rede sem fios '%s'" msgstr "Está ligado à rede sem fios '%s'"
#: ../js/ui/status/network.js:1791 #: ../js/ui/status/network.js:1852
#, c-format #, c-format
msgid "You're now connected to wired network '%s'" msgid "You're now connected to wired network '%s'"
msgstr "Está ligado à rede com fios '%s'" msgstr "Está ligado à rede com fios '%s'"
#: ../js/ui/status/network.js:1795 #: ../js/ui/status/network.js:1856
#, c-format #, c-format
msgid "You're now connected to VPN network '%s'" msgid "You're now connected to VPN network '%s'"
msgstr "Está ligado à rede VPN '%s'" msgstr "Está ligado à rede VPN '%s'"
#: ../js/ui/status/network.js:1800 #: ../js/ui/status/network.js:1861
#, c-format #, c-format
msgid "You're now connected to '%s'" msgid "You're now connected to '%s'"
msgstr "Está ligado a '%s'" msgstr "Está ligado a '%s'"
#: ../js/ui/status/network.js:1808 #: ../js/ui/status/network.js:1869
msgid "Connection established" msgid "Connection established"
msgstr "Ligação estabelecida" msgstr "Ligação estabelecida"
#: ../js/ui/status/network.js:1930 #: ../js/ui/status/network.js:1991
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Os serviços de rede estão desligados" msgstr "Os serviços de rede estão desligados"
#: ../js/ui/status/network.js:2055 #: ../js/ui/status/network.js:2116
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de Rede" msgstr "Gestor de Rede"
@ -1038,22 +1070,22 @@ msgstr "Volume"
msgid "Microphone" msgid "Microphone"
msgstr "Microfone" msgstr "Microfone"
#: ../js/ui/telepathyClient.js:332 #: ../js/ui/telepathyClient.js:335
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s está ligado." msgstr "%s está ligado."
#: ../js/ui/telepathyClient.js:337 #: ../js/ui/telepathyClient.js:340
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s está desligado." msgstr "%s está desligado."
#: ../js/ui/telepathyClient.js:340 #: ../js/ui/telepathyClient.js:343
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s está ausente." msgstr "%s está ausente."
#: ../js/ui/telepathyClient.js:343 #: ../js/ui/telepathyClient.js:346
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s está ocupado." msgstr "%s está ocupado."
@ -1061,7 +1093,7 @@ msgstr "%s está ocupado."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:474 #: ../js/ui/telepathyClient.js:482
#, no-c-format #, no-c-format
msgid "Sent at %X on %A" msgid "Sent at %X on %A"
msgstr "Enviado às %X de %A" msgstr "Enviado às %X de %A"
@ -1110,7 +1142,7 @@ msgstr[1] "%u Entradas"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sons de Sistema" msgstr "Sons de Sistema"
#: ../src/main.c:397 #: ../src/main.c:446
msgid "Print version" msgid "Print version"
msgstr "Versão de impressão" msgstr "Versão de impressão"
@ -1119,32 +1151,32 @@ msgstr "Versão de impressão"
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Falha ao iniciar '%s'" msgstr "Falha ao iniciar '%s'"
#: ../src/shell-global.c:1340 #: ../src/shell-global.c:1395
msgid "Less than a minute ago" msgid "Less than a minute ago"
msgstr "Há menos de um minuto atrás" msgstr "Há menos de um minuto atrás"
#: ../src/shell-global.c:1344 #: ../src/shell-global.c:1399
#, c-format #, c-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d minuto atrás" msgstr[0] "%d minuto atrás"
msgstr[1] "%d minutos atrás" msgstr[1] "%d minutos atrás"
#: ../src/shell-global.c:1349 #: ../src/shell-global.c:1404
#, c-format #, c-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d hora atrás" msgstr[0] "%d hora atrás"
msgstr[1] "%d horas atrás" msgstr[1] "%d horas atrás"
#: ../src/shell-global.c:1354 #: ../src/shell-global.c:1409
#, c-format #, c-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d dia atrás" msgstr[0] "%d dia atrás"
msgstr[1] "%d dias atrás" msgstr[1] "%d dias atrás"
#: ../src/shell-global.c:1359 #: ../src/shell-global.c:1414
#, c-format #, c-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
@ -1183,6 +1215,25 @@ msgstr "Sistema de Ficheiros"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "Shut Down"
#~ msgstr "Desligar"
#~ msgid "Click Shut Down to quit these applications and shut down the system."
#~ msgstr ""
#~ "Clique em Desligar para fechar estas aplicações e desligar o sistema."
#~ msgid "The system will shut down automatically in %d seconds."
#~ msgstr "O sistema irá desligar-se automaticamente dentro de %d segundos."
#~ msgid "Shutting down the system."
#~ msgstr "A desligar o sistema."
#~ msgid "Confirm"
#~ msgstr "Confirmar"
#~ msgid "Panel"
#~ msgstr "Painel"
#~ msgid "Clock" #~ msgid "Clock"
#~ msgstr "Relógio" #~ msgstr "Relógio"

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