Compare commits

...

54 Commits

Author SHA1 Message Date
50395cded8 preview 2014-06-13 14:23:24 -04:00
e8ae8f75a0 dateMenu: Fix style 2014-06-13 13:24:10 -04:00
2b93bcf921 kill tray 2 2014-06-13 12:29:27 -04:00
a80b8f7791 kill tray 2014-06-13 12:21:39 -04:00
62c6563a3a always expanded 2014-06-13 12:21:39 -04:00
c22068d288 layout: Remove the tray pressure barrier
Since we don't have a tray at the bottom of the screen anymore, it isn't
needed for triggering.
2014-06-13 12:21:36 -04:00
d519a0a181 messageTray: Remove support for transient notifications
Transient notifications have used for lots of different "system status"
notifications, like network, low power, low disk space, etc. However, a
majority of these notifications should really also be persistent
instead of going away after they appear.

Users have reported getting confused after seeing a notification appear
up in the corner of their eye, and then have no record of what it was
since the tray was empty.

To simplify the code, set the users more at ease, and also make things
like low power and low disk space more noticeable and urgent after they
go away.

Applications can and should explicitly close any notification it wants
to when state changes, so these notifications shouldn't linger if the
user e.g. plugs in his power cable, or clears up some disk space.
2014-06-13 10:30:34 -04:00
ef1ab043a3 messageTray: Add notification close button inside notification
And remove the old close button outside it.
2014-06-12 13:58:16 -04:00
fa350bf41e messageTray: Implement new notification designs
Rather than use an StTable, a custom ShellGenericContainer, and plenty
of hacky style classes, replace them all with standard BoxLayouts and
Bins.

Remove the customContent parameter in favor of subclasses setting the
child of this._bodyBin instead.

With this comes a whole new notification implementation to implement
the new notification designs.

We lose a few of the fancy features like showing the first part of
the body, ellipsized, next the banner when it will fit, and some other
layout logic. But since the design of notifications is changing
substantially anyways, I don't feel too bad...
2014-06-12 13:58:15 -04:00
ae74dbd1bb messageTray: Glue the notification to the bottom of the screen, always
We'll animate notifications popping up with another system soon enough,
instead. The idea here is that instead of carefully animating the Y
position of the notificationWidget when a notification updates, we
simply animate the height of the new actor inside the notification.
This will fix some of the awkward updates where instead of the
notification content expanding, we see the buttons or action area
pushed off the edge of the screen...

Animations that happen as a result of adding something new to the
notification or expanding it should be done by tweeing the new actors
in inside the notification.
2014-06-12 13:58:15 -04:00
afa5a871b3 messageTray: Remove addBody as a public API
As it's unused.
2014-06-12 13:58:15 -04:00
e13c0ca9e8 messageTray: Remove support for notifications with images
This sufficiently complicates the code, and won't fit in the
new design.
2014-06-12 13:58:15 -04:00
f29d1beb3e messageTray: Remove support for resident notifications
Now the only resident notification is a chat notification. The convenient
thing about this special-case behavior is that there's already special-case
code for it and the shell, and we always know that a chat notification will
always be 1:1 with its chat source.
2014-06-12 13:58:14 -04:00
751a1b5bbe notificationDaemon: Remove support for resident notifications
They're not really an API that has caught on, and not really one
we want to support, either.
2014-06-12 13:58:14 -04:00
00a32f53f5 notificationDaemon: Remove the special-case hack for system tray icons
Nothing in the system actually has a standard system tray icon anymore,
so this hack isn't necessary.
2014-06-12 13:58:14 -04:00
94688d354f telepathyClient: Remove all the fancy features
This can be done with another app, like Empathy or Chat.
2014-06-12 13:58:14 -04:00
7f17acd0ea autorunManager: Remove the resident "Removable Devices" notification
Users aren't usually the best at obeying the rules, and systems can
deal with hotplug without ejecting first.

https://bugzilla.gnome.org/show_bug.cgi?id=719857
2014-06-12 13:58:13 -04:00
8c74a4fee0 messageTray: Remove an unused variable 2014-06-12 13:58:13 -04:00
234b90ac86 messageTray: Don't use a member variable when we can use a local
Tiny cleanup.
2014-06-12 13:31:39 -04:00
ce46b06f36 Updated Spanish translation 2014-06-12 17:52:25 +02:00
585930123d layout: Do not expand struts to screen edges
set_builtin_struts() in mutter now handles this for us, so we can kill
off the extra code here.

https://bugzilla.gnome.org/show_bug.cgi?id=730527
2014-06-12 15:36:40 +02:00
5d00c1a5ee appDisplay: Use GrabHelper for folder popups
As clicks outside the app picker should still be handled normally
while clicks inside should dismiss the popup, we cannot make full
use of GrabHelper. However using it at least for focus handling
fixes some minor details we are getting wrong, for instance not
restoring the previous focus after dismissing a folder popup.
2014-06-11 23:24:30 +02:00
f288c43e6e viewSelector: Use clutter constant instead of true 2014-06-10 21:22:51 +02:00
b981a591c7 main: Actually use the correct schema for overrides
Fix commit ae2751a68b to not only pick up the keys from the
correct schema, but also use the correct schema-id for the overrides.
2014-06-10 13:00:57 +02:00
3b7756b610 data: Do not convert 'button-layout' setting
It has been removed from our overrides schema ...
2014-06-10 12:32:28 +02:00
292f87caf7 sessionMode: Don't set overridesSchema
Unused since commit ae2751a68b.
2014-06-09 22:39:15 +02:00
ae2751a68b main: Move pref overrides back into C
Commit 6c2f3d1d17 moved pref overrides into JS to implement
session mode specific overrides in a clean and generic way.
However that approach comes with a cost - doing the overrides only
after having handled over control to JS means that the core will
be initialized with the non-overridden settings before changing
to the correct values. In the best case this is unnecessary work,
but it can in fact have a worse effect: when initializing workspaces,
we will restore the previous number of workspaces when using
dynamic-workspaces and reset to the configured number otherwise.
As the non-overridden default for dynamic-workspaces is FALSE, we
can easily end up moving the user's windows to the "wrong" workspace.

Now GSettings is expected to grow support for session specific defaults,
which will render our entire override system obsolete (yay!). Given
that, it seems acceptable to use a less generic (and uglier) approach
in the meanwhile, in order to fix aforementioned problems. So move
overrides back before core initialization and just hardcode the
session-mode => override-schema relation.

https://bugzilla.gnome.org/show_bug.cgi?id=695487
2014-06-09 21:52:03 +02:00
589becbc79 panelMenu: Clean up code a bit 2014-06-08 22:25:27 +02:00
4c7fcf272c Updated Turkish translation 2014-06-05 23:34:50 +00:00
e51aecee03 Updated Hungarian translation 2014-06-05 11:23:27 +00:00
d98e7dbd4a screenshot: Also validate parameters to FlashArea()
Apply the same parameter validation to FlashArea() we already use
for ScreenshotArea().

https://bugzilla.gnome.org/show_bug.cgi?id=731220
2014-06-04 18:12:31 +02:00
1b97778925 Updated Norwegian bokmål translation from Åka Sikrom. 2014-06-03 19:55:46 +02:00
829e7623df css: Clean up slightly
Remove the networking stuff from the message tray section.
2014-06-03 12:32:56 -04:00
89675c9061 Updated Brazilian Portuguese translation 2014-06-03 13:29:01 +00:00
f9df83802d ui: Adapt to display.get_tab_list API change 2014-06-03 14:52:18 +02:00
e51eb723fc windowMenu: Do a better job with faking the source actor
The 0x0 dummyCursor works well when the menu pops up directly underneath
the pointer (e.g. when triggered by right-clicking the titlebar) or by
keyboard, but not when triggered by the menu button - the menu does not
point to the center of the button's bottom edge, and unless the user
keeps holding the mouse button while moving into the menu, the menu will
be dismissed immediately on button release.
Address these issues by using the button geometry to overlay the window
button with an appropriately sized actor that acts as a proper sourceActor,
to make the window menu behavior consistent with other shell menus.

https://bugzilla.gnome.org/show_bug.cgi?id=731058
2014-06-02 23:48:53 +02:00
5b61f2d642 windowMenu: Implement new show_menu_for_rect() hook
Having the full geometry of the menu's source button (if any) will
allow us to address several misbehaviors of window menus, so use
that instead of show_menu().

https://bugzilla.gnome.org/show_bug.cgi?id=731058
2014-06-02 23:48:53 +02:00
094669baee messageTray: Clear the pointer left timeout when showing a notification
When the pointer leaves the notification area, we queue a timeout to
hide the notification after a little while. If the user is hovering over
a notification and clicks the X button to close the notification, we will
destroy the notification, which causes a "pointer left" event on the
notification area. This queues a timeout which erroneously fires after
the next notification in the queue shows up.

The code and state machine are too complex to properly make sure this
timeout doesn't fire when there is no notification up next, so instead
just clear it when showing a notification to make sure that any
previously queued timeout doesn't apply to us.

https://bugzilla.gnome.org/show_bug.cgi?id=731118
2014-06-02 17:39:52 -04:00
f6b5385495 messageTray: Squash together some duplicated code
https://bugzilla.gnome.org/show_bug.cgi?id=731118
2014-06-02 17:39:51 -04:00
524e2df708 messageTray: Don't exit out early if we have a left timeout
Otherwise, we won't mark the pointer as hovering on the notification.

https://bugzilla.gnome.org/show_bug.cgi?id=731118
2014-06-02 17:39:51 -04:00
9f887d9a28 Updated Lithuanian translation 2014-06-02 23:35:53 +03:00
214a41793f build: Remove GMenu include
The actual GMenu dependency was removed a while ago, so stop adding
it to the GIR includes.
2014-06-02 17:56:38 +02:00
2e40ffc558 Updated Italian translation 2014-05-31 12:55:41 +00:00
3584887938 openbsd: fix shell_global_reexec_self()
Rework the way we re-exec the shell on OpenBSD so that it does not only
work the first time it is re-exec'd.
Plug a small leak in the __linux__ case while here.

https://bugzilla.gnome.org/show_bug.cgi?id=727763
2014-05-30 11:26:39 +02:00
0d6c002b8e calendar: Port EventsList to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2014-05-28 22:11:38 +02:00
ec714864f2 calendar: Port calendar to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2014-05-28 22:11:38 +02:00
1b77149ec9 build: Remove ShellNetworkAgent documentation
It is only an internal implementation detail, and it also causes build problem
when NetworkManager is disabled.

https://bugzilla.gnome.org/show_bug.cgi?id=726460
2014-05-28 22:07:19 +02:00
93c9e031e3 Update (allow-none) annotations
The annotation has been deprecated in favor of (nullable) and/or
(optional).
2014-05-28 22:01:55 +02:00
3ff4277f86 workspace: Don't allow closing windows with attached modals
Modal dialogs prevent the parent from being closed in "normal mode",
so it makes sense to not allow it in the overview either.

https://bugzilla.gnome.org/show_bug.cgi?id=729886
2014-05-28 22:01:54 +02:00
2a63267be0 loginDialog: Remove unused variable 2014-05-28 22:01:54 +02:00
2b365627ed windowManager: Remove (un)blockAnimations()
They are no longer used, kill them.
2014-05-28 22:01:53 +02:00
b8f0d0f0dc telepathyClient: Only use 12-hour format when supported by the locale
It is a bit odd to request AM/PM format when the locale selected
by LC_TIME lacks the concept. We ignore the format setting in that
case elsewhere and assume 24-hour format, let's do the same for
chat timestamps for consistency.

https://bugzilla.gnome.org/show_bug.cgi?id=728271
2014-05-28 22:01:53 +02:00
df1bed941d telepathyClient: Remove unused variable 2014-05-28 13:09:43 -04:00
604085fdb9 Update British English translation 2014-05-27 21:44:13 +01:00
58 changed files with 2406 additions and 4996 deletions

View File

@ -1,5 +1,4 @@
[org.gnome.shell.overrides]
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
button-layout = /desktop/gnome/shell/windows/button_layout
edge-tiling = /desktop/gnome/shell/windows/edge_tiling
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary

View File

@ -403,13 +403,18 @@ StScrollBar StButton#vhandle:active {
icon-size: 16px;
}
.no-networks-label {
color: #999999;
}
.no-networks-box {
spacing: 12px;
}
/* Buttons */
.candidate-page-button,
.notification-button,
.notification-icon-button,
.hotplug-notification-item,
.hotplug-resident-eject-button,
.modal-dialog-button,
.app-view-control {
border: 1px solid #8b8b8b;
@ -423,17 +428,12 @@ StScrollBar StButton#vhandle:active {
}
.candidate-page-button:hover,
.notification-button:hover,
.notification-icon-button:hover,
.hotplug-notification-item:hover,
.hotplug-resident-eject-button:hover,
.modal-dialog-button:hover {
background-gradient-start: rgba(255, 255, 255, 0.3);
background-gradient-end: rgba(255, 255, 255, 0.1);
}
.notification-button:focus,
.notification-icon-button:focus,
.hotplug-notification-item:focus,
.modal-dialog-button:focus,
.app-view-control:focus {
@ -447,10 +447,7 @@ StScrollBar StButton#vhandle:active {
.candidate-page-button:active,
.candidate-page-button:pressed,
.notification-button:active,
.notification-icon-button:active,
.hotplug-notification-item:active,
.hotplug-resident-eject-button:active,
.modal-dialog-button:active,
.modal-dialog-button:pressed,
.app-view-control:checked {
@ -459,8 +456,6 @@ StScrollBar StButton#vhandle:active {
}
.candidate-page-button:insensitive,
.notification-button:insensitive,
.notification-icon-button:insensitive,
.modal-dialog-button:insensitive {
border-color: #666666;
color: #9f9f9f;
@ -472,7 +467,6 @@ StScrollBar StButton#vhandle:active {
#searchEntry,
.modal-dialog-button,
.notification-button,
.hotplug-notification-item,
.app-view-controls,
#screenShieldNotifications {
@ -1300,8 +1294,6 @@ StScrollBar StButton#vhandle:active {
.calendar {
padding: .4em 1.75em .8em 1.75em;
spacing-rows: 0px;
spacing-columns: 0px;
}
.calendar-month-label {
@ -1497,48 +1489,16 @@ StScrollBar StButton#vhandle:active {
padding-right: 8pt;
}
.url-highlighter {
link-color: #ccccff;
}
/* Message Tray */
#message-tray {
background: #2e3436 url(message-tray-background.png);
background-repeat: repeat;
height: 72px;
}
.message-tray-summary {
height: 72px;
}
.message-tray-menu-button StIcon {
padding: 0 20px;
color: #aaaaaa;
icon-size: 24px;
}
.message-tray-menu-button:hover StIcon,
.message-tray-menu-button:active StIcon,
.message-tray-menu-button:focus StIcon {
color: #eeeeee;
}
.no-messages-label,
.no-networks-label {
color: #999999;
}
.no-networks-box {
spacing: 12px;
}
.notification {
border-radius: 10px 10px 0px 0px;
background: rgba(0,0,0,0.9);
padding: 8px 8px 4px 8px;
spacing-rows: 4px;
spacing-columns: 10px;
.url-highlighter {
link-color: #ccccff;
}
.notification, #notification-container {
@ -1546,62 +1506,56 @@ StScrollBar StButton#vhandle:active {
width: 34em;
}
.notification.multi-line-notification {
padding-bottom: 8px;
.notification-main-button,
.notification-button {
background: rgba(0,0,0,0.9);
}
.notification-unexpanded {
/* We want to force the actor at a specific size, irrespective
of its minimum and preferred size, so we override both */
min-height: 36px;
height: 36px;
.notification-main-button {
border-radius: 10px 10px 0px 0px;
}
/* We use row-span = 2 for the image cell, which prevents its height preferences to be
taken into account during allocation, so its height ends up being limited by the height
of the content in the other rows. To avoid showing a stretched image, we set the minimum
height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */
.notification-with-image {
min-height: 159px;
.notification-main-content {
padding: 8px;
spacing: 8px;
}
.summary-boxpointer {
-arrow-border-radius: 15px;
-arrow-background-color: rgba(0,0,0,0.9);
-arrow-base: 36px;
-arrow-rise: 18px;
color: white;
-boxpointer-gap: 4px;
.notification-close-button {
padding: 8px;
border-radius: 4px;
}
.summary-boxpointer .notification {
border-radius: 9px;
background: rgba(0,0,0,0) !important;
padding-bottom: 12px;
.notification-action-area {
padding: 8px;
}
.summary-boxpointer #summary-right-click-menu {
padding-top: 12px;
padding-bottom: 12px;
.notification-action-area,
.notification-button {
border-top: 1px solid #666;
}
.summary-notification-stack-scrollview {
max-height: 18em;
padding-top: 8px;
padding-bottom: 8px;
.notification-button {
padding: 8px 0px;
border-right: 1px solid #666;
}
.summary-notification-stack-scrollview:ltr {
padding-right: 8px;
.notification-main-button:hover,
.notification-button:hover,
.notification-close-button:hover {
background: rgba(100,100,100,0.9);
}
.summary-notification-stack-scrollview:rtl {
padding-left: 8px;
.notification-main-button:active,
.notification-button:active {
background: rgba(255,255,255,0.1);
}
.notification-scrollview {
max-height: 10em;
-st-vfade-offset: 24px;
.notification-button:last-child {
border-right-width: 0px;
}
.notification-title-box {
spacing: 8px;
}
.notification-scrollview:ltr > StScrollBar {
@ -1612,37 +1566,9 @@ StScrollBar StButton#vhandle:active {
padding-right: 6px;
}
.notification-body {
spacing: 5px;
}
.notification-actions {
padding-top: 18px;
spacing: 10px;
}
.notification-button {
-st-natural-width: 140px;
padding: 4px 4px 5px;
}
.notification-button:focus {
-st-natural-width: 138px;
padding: 3px 4px 4px;
}
.notification-icon-button {
border-radius: 5px;
padding: 5px;
}
.notification-icon-button:focus {
padding: 4px;
}
.notification-icon-button > StIcon {
icon-size: 16px;
padding: 8px;
.notification-scrollview {
max-height: 10em;
-st-vfade-offset: 24px;
}
.secondary-icon {
@ -1667,45 +1593,6 @@ StScrollBar StButton#vhandle:active {
padding: 2px 5px;
}
.hotplug-resident-box {
spacing: 8px;
}
.hotplug-resident-mount {
spacing: 8px;
border-radius: 4px;
color: #ccc;
}
.hotplug-resident-mount:hover {
background-gradient-direction: horizontal;
background-gradient-start: rgba(255, 255, 255, 0.1);
background-gradient-end: rgba(255, 255, 255, 0);
color: #fff;
}
.hotplug-resident-mount-label {
color: inherit;
padding-left: 6px;
}
.hotplug-resident-mount-icon {
icon-size: 24px;
padding-left: 6px;
}
.hotplug-resident-eject-icon {
icon-size: 16px;
}
.hotplug-resident-eject-button {
padding: 7px;
border-radius: 5px;
color: #ccc;
}
.chat-log-message {
color: #888888;
}
@ -1745,7 +1632,11 @@ StScrollBar StButton#vhandle:active {
padding-right: 4px;
}
.chat-notification-scrollview{
.chat-notification-body-box {
spacing: 5px;
}
.chat-notification-scrollview {
max-height: 22em;
}
@ -2664,8 +2555,7 @@ StScrollBar StButton#vhandle:active {
padding-bottom: 0px;
}
#screenShieldNotifications .notification-button,
#screenShieldNotifications .notification-icon-button {
#screenShieldNotifications .notification-button {
border: 1px rgba(255,255,255,0.5);
}
@ -2701,3 +2591,7 @@ StScrollBar StButton#vhandle:active {
-boxpointer-gap: 4px;
-arrow-rise: 0px;
}
.top-bar-notification-preview {
font-weight: normal;
}

View File

@ -66,6 +66,7 @@ IGNORE_HFILES= \
gactionmuxer.h \
gactionobservable.h \
gactionobserver.h \
shell-network-agent.h \
shell-recorder-src.h
if !BUILD_RECORDER

View File

@ -50,7 +50,6 @@
<xi:include href="xml/shell-wm.xml"/>
<xi:include href="xml/shell-util.xml"/>
<xi:include href="xml/shell-mount-operation.xml"/>
<xi:include href="xml/shell-network-agent.xml"/>
<xi:include href="xml/shell-polkit-authentication-agent.xml"/>
<xi:include href="xml/shell-tp-client.xml"/>
</chapter>

View File

@ -48,8 +48,6 @@ const _SCROLL_ANIMATION_TIME = 0.5;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_HEIGHT = 48;
let _loginDialog = null;
const UserListItem = new Lang.Class({
Name: 'UserListItem',

View File

@ -372,7 +372,7 @@ const WindowSwitcherPopup = new Lang.Class({
_getWindowList: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return global.display.get_tab_list(Meta.TabList.NORMAL, global.screen, workspace);
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
},
_createSwitcher: function() {
@ -459,8 +459,7 @@ const AppSwitcher = new Lang.Class({
let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' });
let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace()
: null;
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL,
global.screen, workspace);
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
// Construct the AppIcons, add to the popup
for (let i = 0; i < apps.length; i++) {

View File

@ -16,6 +16,7 @@ const Atk = imports.gi.Atk;
const AppFavorites = imports.ui.appFavorites;
const BoxPointer = imports.ui.boxpointer;
const DND = imports.ui.dnd;
const GrabHelper = imports.ui.grabHelper;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
@ -1249,18 +1250,7 @@ const AppFolderPopup = new Lang.Class({
function() {
this.actor.destroy();
}));
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
},
_onKeyPress: function(actor, event) {
if (!this._isOpen)
return Clutter.EVENT_PROPAGATE;
if (event.get_key_symbol() != Clutter.KEY_Escape)
return Clutter.EVENT_PROPAGATE;
this.popdown();
return Clutter.EVENT_STOP;
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
},
toggle: function() {
@ -1274,6 +1264,12 @@ const AppFolderPopup = new Lang.Class({
if (this._isOpen)
return;
this._isOpen = this._grabHelper.grab({ actor: this.actor,
onUngrab: Lang.bind(this, this.popdown) });
if (!this._isOpen)
return;
this.actor.show();
this._boxPointer.setArrowActor(this._source.actor);
@ -1282,7 +1278,6 @@ const AppFolderPopup = new Lang.Class({
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
this._isOpen = true;
this.emit('open-state-changed', true);
},
@ -1290,6 +1285,8 @@ const AppFolderPopup = new Lang.Class({
if (!this._isOpen)
return;
this._grabHelper.ungrab({ actor: this.actor });
this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
BoxPointer.PopupAnimation.SLIDE);
this._isOpen = false;

View File

@ -408,9 +408,9 @@ const Calendar = new Lang.Class({
this._shouldDateGrabFocus = false;
this.actor = new St.Table({ homogeneous: false,
style_class: 'calendar',
reactive: true });
this.actor = new St.Widget({ style_class: 'calendar',
layout_manager: new Clutter.TableLayout(),
reactive: true });
this.actor.connect('scroll-event',
Lang.bind(this, this._onScroll));
@ -441,13 +441,14 @@ const Calendar = new Lang.Class({
},
_buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0;
this.actor.destroy_all_children();
// Top line of the calendar '<| September 2009 |>'
this._topBox = new St.BoxLayout();
this.actor.add(this._topBox,
{ row: 0, col: 0, col_span: offsetCols + 7 });
layout.pack(this._topBox, 0, 0);
layout.set_span(this._topBox, offsetCols + 7, 1);
this._backButton = new St.Button({ style_class: 'calendar-change-month-back',
accessible_name: _("Previous month"),
@ -479,10 +480,8 @@ const Calendar = new Lang.Class({
let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay());
let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading',
text: customDayAbbrev });
this.actor.add(label,
{ row: 1,
col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7,
x_fill: false, x_align: St.Align.MIDDLE });
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(label, col, 1);
iter.setTime(iter.getTime() + MSECS_IN_DAY);
}
@ -601,6 +600,7 @@ const Calendar = new Lang.Class({
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
let layout = this.actor.layout_manager;
let iter = new Date(beginDate);
let row = 2;
// nRows here means 6 weeks + one header + one navbar
@ -648,16 +648,15 @@ const Calendar = new Lang.Class({
button.style_class = styleClass;
let offsetCols = this._useWeekdate ? 1 : 0;
this.actor.add(button,
{ row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 });
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(button, col, row);
this._buttons.push(button);
if (this._useWeekdate && iter.getDay() == 4) {
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
style_class: 'calendar-day-base calendar-week-number'});
this.actor.add(label,
{ row: row, col: 0, y_align: St.Align.MIDDLE });
layout.pack(label, 0, row);
}
iter.setTime(iter.getTime() + MSECS_IN_DAY);
@ -700,7 +699,10 @@ const EventsList = new Lang.Class({
Name: 'EventsList',
_init: function() {
this.actor = new St.Table({ style_class: 'events-table' });
let layout = new Clutter.TableLayout();
this.actor = new St.Widget({ style_class: 'events-table',
layout_manager: layout });
layout.hookup_style(this.actor);
this._date = new Date();
this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed', Lang.bind(this, this._update));
@ -724,9 +726,11 @@ const EventsList = new Lang.Class({
dayLabel.clutter_text.line_wrap = false;
dayLabel.clutter_text.ellipsize = false;
this.actor.add(dayLabel, { row: index, col: 0,
x_expand: false, x_align: St.Align.END,
y_fill: false, y_align: St.Align.START });
let layout = this.actor.layout_manager;
layout.pack(dayLabel, 0, index);
layout.child_set(dayLabel, { x_expand: false,
x_align: Clutter.TableAlignment.END,
y_align: Clutter.TableAlignment.START });
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
let timeString = _formatEventTime(event, clockFormat);
@ -735,18 +739,17 @@ const EventsList = new Lang.Class({
timeLabel.clutter_text.line_wrap = false;
timeLabel.clutter_text.ellipsize = false;
this.actor.add(timeLabel, { row: index, col: 1,
x_expand: false, x_align: St.Align.MIDDLE,
y_fill: false, y_align: St.Align.START });
layout.pack(timeLabel, 1, index);
layout.child_set(timeLabel, { x_expand: false,
y_align: Clutter.TableAlignment.START });
let titleLabel = new St.Label({ style_class: 'events-day-task',
text: event.summary });
titleLabel.clutter_text.line_wrap = true;
titleLabel.clutter_text.ellipsize = false;
this.actor.add(titleLabel, { row: index, col: 2,
x_expand: true, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
layout.pack(titleLabel, 2, index);
layout.child_set(titleLabel, { x_expand: true });
},
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
@ -755,13 +758,10 @@ const EventsList = new Lang.Class({
if (events.length == 0 && !showNothingScheduled)
return index;
this.actor.add(new St.Label({ style_class: 'events-day-header', text: header }),
{ row: index, col: 0, col_span: 3,
// In theory, x_expand should be true here, but x_expand
// is a property of the column for StTable, ie all day cells
// get it too
x_expand: false, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
let label = new St.Label({ style_class: 'events-day-header', text: header });
let layout = this.actor.layout_manager;
layout.pack(label, 0, index);
layout.child_set(label, { column_span: 3, x_expand: false });
index++;
for (let n = 0; n < events.length; n++) {

View File

@ -170,17 +170,6 @@ const AutorunManager = new Lang.Class({
this._transDispatcher = new AutorunTransientDispatcher(this);
},
_ensureResidentSource: function() {
if (this._residentSource)
return;
this._residentSource = new AutorunResidentSource(this);
let destroyId = this._residentSource.connect('destroy', Lang.bind(this, function() {
this._residentSource.disconnect(destroyId);
this._residentSource = null;
}));
},
enable: function() {
this._scanMounts();
@ -189,17 +178,12 @@ const AutorunManager = new Lang.Class({
},
disable: function() {
if (this._residentSource)
this._residentSource.destroy();
this._volumeMonitor.disconnect(this._mountAddedId);
this._volumeMonitor.disconnect(this._mountRemovedId);
},
_processMount: function(mount, hotplug) {
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
this._ensureResidentSource();
this._residentSource.addMount(mount, apps);
if (hotplug)
this._transDispatcher.addMount(mount, apps, contentTypes);
}));
@ -224,8 +208,6 @@ const AutorunManager = new Lang.Class({
_onMountRemoved: function(monitor, mount) {
this._transDispatcher.removeMount(mount);
if (this._residentSource)
this._residentSource.removeMount(mount);
},
ejectMount: function(mount) {
@ -288,153 +270,6 @@ const AutorunManager = new Lang.Class({
},
});
const AutorunResidentSource = new Lang.Class({
Name: 'AutorunResidentSource',
Extends: MessageTray.Source,
_init: function(manager) {
this.parent(_("Removable Devices"), 'media-removable');
this.resident = true;
this._mounts = [];
this._manager = manager;
this._notification = new AutorunResidentNotification(this._manager, this);
},
_createPolicy: function() {
return new MessageTray.NotificationPolicy({ showInLockScreen: false });
},
buildRightClickMenu: function() {
return null;
},
addMount: function(mount, apps) {
if (!shouldAutorunMount(mount, false))
return;
let filtered = this._mounts.filter(function (element) {
return (element.mount == mount);
});
if (filtered.length != 0)
return;
let element = { mount: mount, apps: apps };
this._mounts.push(element);
this._redisplay();
},
removeMount: function(mount) {
this._mounts =
this._mounts.filter(function (element) {
return (element.mount != mount);
});
this._redisplay();
},
_redisplay: function() {
if (this._mounts.length == 0) {
this._notification.destroy();
this.destroy();
return;
}
this._notification.updateForMounts(this._mounts);
// add ourselves as a source, and push the notification
if (!Main.messageTray.contains(this)) {
Main.messageTray.add(this);
this.pushNotification(this._notification);
}
}
});
const AutorunResidentNotification = new Lang.Class({
Name: 'AutorunResidentNotification',
Extends: MessageTray.Notification,
_init: function(manager, source) {
this.parent(source, source.title, null, { customContent: true });
// set the notification as resident
this.setResident(true);
this._layout = new St.BoxLayout ({ style_class: 'hotplug-resident-box',
vertical: true });
this._manager = manager;
this.addActor(this._layout,
{ x_expand: true,
x_fill: true });
},
updateForMounts: function(mounts) {
// remove all the layout content
this._layout.destroy_all_children();
for (let idx = 0; idx < mounts.length; idx++) {
let element = mounts[idx];
let actor = this._itemForMount(element.mount, element.apps);
this._layout.add(actor, { x_fill: true,
expand: true });
}
},
_itemForMount: function(mount, apps) {
let item = new St.BoxLayout();
// prepare the mount button content
let mountLayout = new St.BoxLayout();
let mountIcon = new St.Icon({ gicon: mount.get_icon(),
style_class: 'hotplug-resident-mount-icon' });
mountLayout.add_actor(mountIcon);
let labelBin = new St.Bin({ y_align: St.Align.MIDDLE });
let mountLabel =
new St.Label({ text: mount.get_name(),
style_class: 'hotplug-resident-mount-label',
track_hover: true,
reactive: true });
labelBin.add_actor(mountLabel);
mountLayout.add_actor(labelBin);
let mountButton = new St.Button({ child: mountLayout,
x_align: St.Align.START,
x_fill: true,
style_class: 'hotplug-resident-mount',
button_mask: St.ButtonMask.ONE });
item.add(mountButton, { x_align: St.Align.START,
expand: true });
let ejectIcon =
new St.Icon({ icon_name: 'media-eject-symbolic',
style_class: 'hotplug-resident-eject-icon' });
let ejectButton =
new St.Button({ style_class: 'hotplug-resident-eject-button',
button_mask: St.ButtonMask.ONE,
child: ejectIcon });
item.add(ejectButton, { x_align: St.Align.END });
// now connect signals
mountButton.connect('clicked', Lang.bind(this, function(actor, event) {
startAppForMount(apps[0], mount);
}));
ejectButton.connect('clicked', Lang.bind(this, function() {
this._manager.ejectMount(mount);
}));
return item;
},
});
const AutorunTransientDispatcher = new Lang.Class({
Name: 'AutorunTransientDispatcher',
@ -559,12 +394,12 @@ const AutorunTransientNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(manager, source) {
this.parent(source, source.title, null, { customContent: true });
this.parent(source, source.title);
this._manager = manager;
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
vertical: true });
this.addActor(this._box);
this._bodyBin.child = this._box;
this._mount = source.mount;
@ -581,7 +416,6 @@ const AutorunTransientNotification = new Lang.Class({
// set the notification to transient and urgent, so that it
// expands out
this.setTransient(true);
this.setUrgency(MessageTray.Urgency.CRITICAL);
},

View File

@ -102,15 +102,6 @@ const TelepathyClient = new Lang.Class({
this._tpClient.set_handle_channels_func(
Lang.bind(this, this._handleChannels));
// Watch subscription requests and connection errors
this._subscriptionSource = null;
this._accountSource = null;
// Workaround for gjs not supporting GPtrArray in signals.
// See BGO bug #653941 for context.
this._tpClient.set_contact_list_changed_func(
Lang.bind(this, this._contactListChanged));
// Allow other clients (such as Empathy) to pre-empt our channels if
// needed
this._tpClient.set_delegated_channels_callback(
@ -124,17 +115,12 @@ const TelepathyClient = new Lang.Class({
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
}
this._accountManagerValidityChangedId = this._accountManager.connect('account-validity-changed',
Lang.bind(this, this._accountValidityChanged));
if (!this._accountManager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared));
},
disable: function() {
this._tpClient.unregister();
this._accountManager.disconnect(this._accountManagerValidityChangedId);
this._accountManagerValidityChangedId = 0;
},
_observeChannels: function(observer, account, conn, channels,
@ -219,33 +205,6 @@ const TelepathyClient = new Lang.Class({
}
},
_displayRoomInvitation: function(conn, channel, dispatchOp, context) {
// We can only approve the rooms if we have been invited to it
let selfContact = channel.group_get_self_contact();
if (selfContact == null) {
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Not invited to the room' }));
return;
}
let [invited, inviter, reason, msg] = channel.group_get_local_pending_contact_info(selfContact);
if (!invited) {
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Not invited to the room' }));
return;
}
// FIXME: We don't have a 'chat room' icon (bgo #653737) use
// system-users for now as Empathy does.
let source = new ApproverSource(dispatchOp, _("Invitation"),
Gio.icon_new_for_string('system-users'));
Main.messageTray.add(source);
let notif = new RoomInviteNotification(source, dispatchOp, channel, inviter);
source.notify(notif);
context.accept();
},
_approveChannels: function(approver, account, conn, channels,
dispatchOp, context) {
let channel = channels[0];
@ -259,10 +218,6 @@ const TelepathyClient = new Lang.Class({
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
this._approveTextChannel(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL)
this._approveCall(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER)
this._approveFileTransfer(account, conn, channel, dispatchOp, context);
else
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Unsupported channel type' }));
@ -283,45 +238,9 @@ const TelepathyClient = new Lang.Class({
}}));
context.accept();
} else {
this._displayRoomInvitation(conn, channel, dispatchOp, context);
}
},
_approveCall: function(account, conn, channel, dispatchOp, context) {
let isVideo = false;
let props = channel.borrow_immutable_properties();
if (props[Tp.PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO])
isVideo = true;
// We got the TpContact
let source = new ApproverSource(dispatchOp, _("Call"), isVideo ?
Gio.icon_new_for_string('camera-web') :
Gio.icon_new_for_string('audio-input-microphone'));
Main.messageTray.add(source);
let notif = new AudioVideoNotification(source, dispatchOp, channel,
channel.get_target_contact(), isVideo);
source.notify(notif);
context.accept();
},
_approveFileTransfer: function(account, conn, channel, dispatchOp, context) {
// Use the icon of the file being transferred
let gicon = Gio.content_type_get_icon(channel.get_mime_type());
// We got the TpContact
let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon);
Main.messageTray.add(source);
let notif = new FileTransferNotification(source, dispatchOp, channel,
channel.get_target_contact());
source.notify(notif);
context.accept();
},
_delegatedChannelsCb: function(client, channels) {
// Nothing to do as we don't make a distinction between observed and
// handled channels.
@ -329,105 +248,7 @@ const TelepathyClient = new Lang.Class({
_accountManagerPrepared: function(am, result) {
am.prepare_finish(result);
let accounts = am.get_valid_accounts();
for (let i = 0; i < accounts.length; i++) {
this._accountValidityChanged(am, accounts[i], true);
}
},
_accountValidityChanged: function(am, account, valid) {
if (!valid)
return;
// It would be better to connect to "status-changed" but we cannot.
// See discussion in https://bugzilla.gnome.org/show_bug.cgi?id=654159
account.connect("notify::connection-status",
Lang.bind(this, this._accountConnectionStatusNotifyCb));
account.connect('notify::connection',
Lang.bind(this, this._connectionChanged));
this._connectionChanged(account);
},
_connectionChanged: function(account) {
let conn = account.get_connection();
if (conn == null)
return;
this._tpClient.grab_contact_list_changed(conn);
if (conn.get_contact_list_state() == Tp.ContactListState.SUCCESS) {
this._contactListChanged(conn, conn.dup_contact_list(), []);
}
},
_contactListChanged: function(conn, added, removed) {
for (let i = 0; i < added.length; i++) {
let contact = added[i];
contact.connect('subscription-states-changed',
Lang.bind(this, this._subscriptionStateChanged));
this._subscriptionStateChanged(contact);
}
},
_subscriptionStateChanged: function(contact) {
if (contact.get_publish_state() != Tp.SubscriptionState.ASK)
return;
/* Implicitly accept publish requests if contact is already subscribed */
if (contact.get_subscribe_state() == Tp.SubscriptionState.YES ||
contact.get_subscribe_state() == Tp.SubscriptionState.ASK) {
contact.authorize_publication_async(function(src, result) {
src.authorize_publication_finish(result)});
return;
}
/* Display notification to ask user to accept/reject request */
let source = this._ensureAppSource();
let notif = new SubscriptionRequestNotification(source, contact);
source.notify(notif);
},
_accountConnectionStatusNotifyCb: function(account) {
let connectionError = account.connection_error;
if (account.connection_status != Tp.ConnectionStatus.DISCONNECTED ||
connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED)) {
return;
}
let notif = this._accountNotifications[account.get_object_path()];
if (notif)
return;
/* Display notification that account failed to connect */
let source = this._ensureAppSource();
notif = new AccountNotification(source, account, connectionError);
this._accountNotifications[account.get_object_path()] = notif;
notif.connect('destroy', Lang.bind(this, function() {
delete this._accountNotifications[account.get_object_path()];
}));
source.notify(notif);
},
_ensureAppSource: function() {
if (this._appSource == null) {
this._appSource = new MessageTray.Source(_("Chat"), 'empathy');
this._appSource.policy = new MessageTray.NotificationApplicationPolicy('empathy');
Main.messageTray.add(this._appSource);
this._appSource.connect('destroy', Lang.bind(this, function () {
this._appSource = null;
}));
}
return this._appSource;
}
});
const ChatSource = new Lang.Class({
@ -545,7 +366,7 @@ const ChatSource = new Lang.Class({
_updateAvatarIcon: function() {
this.iconUpdated();
this._notification.update(this._notification.title, null, { customContent: true });
this._notification.update(this._notification.title);
},
open: function() {
@ -737,7 +558,7 @@ const ChatSource = new Lang.Class({
title = GLib.markup_escape_text(this.title, -1);
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
this._notification.update(this._notification.title, null, { secondaryGIcon: this.getSecondaryIcon() });
if (message)
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
@ -764,8 +585,7 @@ const ChatNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(source) {
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
this.setResident(true);
this.parent(source, source.title, null, { secondaryGIcon: source.getSecondaryIcon() });
this._responseEntry = new St.Entry({ style_class: 'chat-response',
can_focus: true });
@ -781,16 +601,17 @@ const ChatNotification = new Lang.Class({
this.emit('unfocused');
}));
this._createScrollArea();
this._lastGroup = null;
this._lastGroupActor = null;
this._bodyBox = new St.BoxLayout({ style_class: 'chat-notification-body-box' });
this._bodyBin.child = this._bodyBox;
// Keep track of the bottom position for the current adjustment and
// force a scroll to the bottom if things change while we were at the
// bottom
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
this._scrollArea.add_style_class_name('chat-notification-scrollview');
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
this._oldMaxScrollValue = this._bodyScrollArea.vscroll.adjustment.value;
this._bodyScrollArea.add_style_class_name('chat-notification-scrollview');
this._bodyScrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
if (adjustment.value == this._oldMaxScrollValue)
this.scrollTo(St.Side.BOTTOM);
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
@ -827,8 +648,7 @@ const ChatNotification = new Lang.Class({
}
if (message.direction == NotificationDirection.RECEIVED) {
this.update(this.source.title, messageBody, { customContent: true,
bannerMarkup: true });
this.update(this.source.title, messageBody, { bannerMarkup: true });
}
let group = (message.direction == NotificationDirection.RECEIVED ?
@ -865,7 +685,7 @@ const ChatNotification = new Lang.Class({
expired[i].actor.destroy();
}
let groups = this._contentArea.get_children();
let groups = this._bodyBox.get_children();
for (let i = 0; i < groups.length; i++) {
let group = groups[i];
if (group.get_n_children() == 0)
@ -897,9 +717,9 @@ const ChatNotification = new Lang.Class({
if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId);
let highlighter = new MessageTray.URLHighlighter(props.body,
true, // line wrap?
true); // allow markup?
let highlighter = new MessageTray.URLHighlighter();
highlighter.actor.clutter_text.line_wrap = true;
highlighter.setMarkup(props.body, true);
let body = highlighter.actor;
@ -911,14 +731,12 @@ const ChatNotification = new Lang.Class({
if (group != this._lastGroup) {
this._lastGroup = group;
let emptyLine = new St.Label({ style_class: 'chat-empty-line' });
this.addActor(emptyLine);
this._bodyBox.add_child(emptyLine);
}
this._lastMessageBox = new St.BoxLayout({ vertical: false });
this._lastMessageBox.add(body, props.childProps);
this.addActor(this._lastMessageBox);
this.updated();
this._bodyBox.add_child(this._lastMessageBox);
let timestamp = props.timestamp;
this._history.unshift({ actor: body, time: timestamp,
@ -949,78 +767,74 @@ const ChatNotification = new Lang.Class({
let desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY);
let hasAmPm = date.toLocaleFormat('%p') != '';
switch (clockFormat) {
case '24h':
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%H\u2236%M");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 24h format. i.e. "Yesterday, 14:30" */
// xgettext:no-c-format
format = _("Yesterday, %H\u2236%M");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 24h format. i.e. "Monday, 14:30" */
// xgettext:no-c-format
format = _("%A, %H\u2236%M");
if (clockFormat == '24h' || !hasAmPm) {
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%H\u2236%M");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 24h format. i.e. "Yesterday, 14:30" */
// xgettext:no-c-format
format = _("Yesterday, %H\u2236%M");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 24h format. i.e. "Monday, 14:30" */
// xgettext:no-c-format
format = _("%A, %H\u2236%M");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 24h format.
i.e. "May 25, 14:30" */
// xgettext:no-c-format
format = _("%B %d, %H\u2236%M");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M");
}
break;
default:
/* explicit fall-through */
case '12h':
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%l\u2236%M %p");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// xgettext:no-c-format
format = _("Yesterday, %l\u2236%M %p");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 24h format.
i.e. "May 25, 14:30" */
// xgettext:no-c-format
format = _("%B %d, %H\u2236%M");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M");
}
} else {
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%l\u2236%M %p");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// xgettext:no-c-format
format = _("Yesterday, %l\u2236%M %p");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p");
}
break;
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p");
}
}
return date.toLocaleFormat(format);
},
@ -1057,7 +871,7 @@ const ChatNotification = new Lang.Class({
group: 'meta',
styles: ['chat-meta-message'] });
this.update(newAlias, null, { customContent: true });
this.update(newAlias);
this._filterMessages();
},
@ -1110,359 +924,4 @@ const ChatNotification = new Lang.Class({
}
});
const ApproverSource = new Lang.Class({
Name: 'ApproverSource',
Extends: MessageTray.Source,
_init: function(dispatchOp, text, gicon) {
this._gicon = gicon;
this.parent(text);
this._dispatchOp = dispatchOp;
// Destroy the source if the channel dispatch operation is invalidated
// as we can't approve any more.
this._invalidId = dispatchOp.connect('invalidated',
Lang.bind(this, function(domain, code, msg) {
this.destroy();
}));
},
_createPolicy: function() {
return new MessageTray.NotificationApplicationPolicy('empathy');
},
destroy: function() {
if (this._invalidId != 0) {
this._dispatchOp.disconnect(this._invalidId);
this._invalidId = 0;
}
this.parent();
},
getIcon: function() {
return this._gicon;
}
});
const RoomInviteNotification = new Lang.Class({
Name: 'RoomInviteNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, inviter) {
this.parent(source,
/* translators: argument is a room name like
* room@jabber.org for example. */
_("Invitation to %s").format(channel.get_identifier()),
null,
{ customContent: true });
this.setResident(true);
/* translators: first argument is the name of a contact and the second
* one the name of a room. "Alice is inviting you to join room@jabber.org
* for example. */
this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier()));
this.addAction(_("Decline"), Lang.bind(this, function() {
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// Audio Video
const AudioVideoNotification = new Lang.Class({
Name: 'AudioVideoNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, contact, isVideo) {
let title = '';
if (isVideo)
/* translators: argument is a contact name like Alice for example. */
title = _("Video call from %s").format(contact.get_alias());
else
/* translators: argument is a contact name like Alice for example. */
title = _("Call from %s").format(contact.get_alias());
this.parent(source, title, null, { customContent: true });
this.setResident(true);
this.setUrgency(MessageTray.Urgency.CRITICAL);
this.addAction(_("Decline"), Lang.bind(this, function() {
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
/* translators: this is a button label (verb), not a noun */
this.addAction(_("Answer"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// File Transfer
const FileTransferNotification = new Lang.Class({
Name: 'FileTransferNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, contact) {
this.parent(source,
/* To translators: The first parameter is
* the contact's alias and the second one is the
* file name. The string will be something
* like: "Alice is sending you test.ogg"
*/
_("%s is sending you %s").format(contact.get_alias(),
channel.get_filename()),
null,
{ customContent: true });
this.setResident(true);
this.addAction(_("Decline"), Lang.bind(this, function() {
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// Subscription request
const SubscriptionRequestNotification = new Lang.Class({
Name: 'SubscriptionRequestNotification',
Extends: MessageTray.Notification,
_init: function(source, contact) {
this.parent(source,
/* To translators: The parameter is the contact's alias */
_("%s would like permission to see when you are online").format(contact.get_alias()),
null, { customContent: true });
this._contact = contact;
this._connection = contact.get_connection();
let layout = new St.BoxLayout({ vertical: false });
// Display avatar
let iconBox = new St.Bin({ style_class: 'avatar-box' });
iconBox._size = 48;
let textureCache = St.TextureCache.get_default();
let file = contact.get_avatar_file();
if (file) {
let uri = file.get_uri();
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
}
else {
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
icon_size: iconBox._size });
}
layout.add(iconBox);
// subscription request message
let label = new St.Label({ style_class: 'subscription-message',
text: contact.get_publish_request() });
layout.add(label);
this.addActor(layout);
this.addAction(_("Decline"), Lang.bind(this, function() {
contact.remove_async(function(src, result) {
src.remove_finish(result);
});
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
// Authorize the contact and request to see his status as well
contact.authorize_publication_async(function(src, result) {
src.authorize_publication_finish(result);
});
contact.request_subscription_async('', function(src, result) {
src.request_subscription_finish(result);
});
}));
this._changedId = contact.connect('subscription-states-changed',
Lang.bind(this, this._subscriptionStatesChangedCb));
this._invalidatedId = this._connection.connect('invalidated',
Lang.bind(this, this.destroy));
},
destroy: function() {
if (this._changedId != 0) {
this._contact.disconnect(this._changedId);
this._changedId = 0;
}
if (this._invalidatedId != 0) {
this._connection.disconnect(this._invalidatedId);
this._invalidatedId = 0;
}
this.parent();
},
_subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) {
// Destroy the notification if the subscription request has been
// answered
if (publish != Tp.SubscriptionState.ASK)
this.destroy();
}
});
// Messages from empathy/libempathy/empathy-utils.c
// create_errors_to_message_hash()
/* Translator note: these should be the same messages that are
* used in Empathy, so just copy and paste from there. */
let _connectionErrorMessages = {};
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.NETWORK_ERROR)]
= _("Network error");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.AUTHENTICATION_FAILED)]
= _("Authentication failed");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_ERROR)]
= _("Encryption error");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_PROVIDED)]
= _("Certificate not provided");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_UNTRUSTED)]
= _("Certificate untrusted");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_EXPIRED)]
= _("Certificate expired");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_ACTIVATED)]
= _("Certificate not activated");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_HOSTNAME_MISMATCH)]
= _("Certificate hostname mismatch");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_FINGERPRINT_MISMATCH)]
= _("Certificate fingerprint mismatch");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_SELF_SIGNED)]
= _("Certificate self-signed");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CANCELLED)]
= _("Status is set to offline");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_NOT_AVAILABLE)]
= _("Encryption is not available");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INVALID)]
= _("Certificate is invalid");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REFUSED)]
= _("Connection has been refused");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_FAILED)]
= _("Connection can't be established");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_LOST)]
= _("Connection has been lost");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ALREADY_CONNECTED)]
= _("This account is already connected to the server");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REPLACED)]
= _("Connection has been replaced by a new connection using the same resource");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.REGISTRATION_EXISTS)]
= _("The account already exists on the server");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.SERVICE_BUSY)]
= _("Server is currently too busy to handle the connection");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_REVOKED)]
= _("Certificate has been revoked");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INSECURE)]
= _("Certificate uses an insecure cipher algorithm or is cryptographically weak");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)]
= _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library");
_connectionErrorMessages['org.freedesktop.DBus.Error.NoReply']
= _("Internal error");
const AccountNotification = new Lang.Class({
Name: 'AccountNotification',
Extends: MessageTray.Notification,
_init: function(source, account, connectionError) {
this.parent(source,
/* translators: argument is the account name, like
* name@jabber.org for example. */
_("Unable to connect to %s").format(account.get_display_name()),
this._getMessage(connectionError));
this._account = account;
this.addAction(_("View account"), Lang.bind(this, function() {
let cmd = 'empathy-accounts --select-account=' +
account.get_path_suffix();
let app_info = Gio.app_info_create_from_commandline(cmd, null, 0);
app_info.launch([], global.create_app_launch_context(0, -1));
}));
this._enabledId = account.connect('notify::enabled',
Lang.bind(this, function() {
if (!account.is_enabled())
this.destroy();
}));
this._invalidatedId = account.connect('invalidated',
Lang.bind(this, this.destroy));
this._connectionStatusId = account.connect('notify::connection-status',
Lang.bind(this, function() {
let status = account.connection_status;
if (status == Tp.ConnectionStatus.CONNECTED) {
this.destroy();
} else if (status == Tp.ConnectionStatus.DISCONNECTED) {
let connectionError = account.connection_error;
if (connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED))
this.destroy();
else
this.update(this.title, this._getMessage(connectionError));
}
}));
},
_getMessage: function(connectionError) {
let message;
if (connectionError in _connectionErrorMessages) {
message = _connectionErrorMessages[connectionError];
} else {
message = _("Unknown reason");
}
return message;
},
destroy: function() {
if (this._enabledId != 0) {
this._account.disconnect(this._enabledId);
this._enabledId = 0;
}
if (this._invalidatedId != 0) {
this._account.disconnect(this._invalidatedId);
this._invalidatedId = 0;
}
if (this._connectionStatusId != 0) {
this._account.disconnect(this._connectionStatusId);
this._connectionStatusId = 0;
}
this.parent();
}
});
const Component = TelepathyClient;

View File

@ -87,7 +87,7 @@ const CtrlAltTabManager = new Lang.Class({
if (Main.sessionMode.hasWindows && !Main.overview.visible) {
let screen = global.screen;
let display = screen.get_display();
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ());
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen.get_active_workspace ());
let windowTracker = Shell.WindowTracker.get_default();
let textureCache = St.TextureCache.get_default();
for (let i = 0; i < windows.length; i++) {

View File

@ -18,8 +18,7 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar;
function _onVertSepRepaint (area)
{
function _onVertSepRepaint(area) {
let cr = area.get_context();
let themeNode = area.get_theme_node();
let [width, height] = area.get_surface_size();
@ -33,7 +32,7 @@ function _onVertSepRepaint (area)
cr.setLineWidth(stippleWidth);
cr.stroke();
cr.$dispose();
};
}
const DateMenuButton = new Lang.Class({
Name: 'DateMenuButton',

View File

@ -150,7 +150,6 @@ const LayoutManager = new Lang.Class({
this._keyboardIndex = -1;
this._rightPanelBarrier = null;
this._trayBarrier = null;
this._inOverview = false;
this._updateRegionIdle = 0;
@ -210,7 +209,6 @@ const LayoutManager = new Lang.Class({
this.trayBox = new St.Widget({ name: 'trayBox',
layout_manager: new Clutter.BinLayout() });
this.addChrome(this.trayBox);
this._setupTrayPressure();
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
layout_manager: new Clutter.BinLayout() });
@ -449,50 +447,9 @@ const LayoutManager = new Lang.Class({
}
},
_setupTrayPressure: function() {
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
MESSAGE_TRAY_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
this._trayPressure.connect('trigger', function(barrier) {
if (Main.layoutManager.bottomMonitor.inFullscreen)
return;
Main.messageTray.openTray();
});
},
_updateTrayBarrier: function() {
let monitor = this.bottomMonitor;
if (this._trayBarrier) {
this._trayPressure.removeBarrier(this._trayBarrier);
this._trayBarrier.destroy();
this._trayBarrier = null;
}
this._trayBarrier = new Meta.Barrier({ display: global.display,
x1: monitor.x, x2: monitor.x + monitor.width,
y1: monitor.y + monitor.height, y2: monitor.y + monitor.height,
directions: Meta.BarrierDirection.NEGATIVE_Y });
this._trayPressure.addBarrier(this._trayBarrier);
},
_trayBarrierEventFilter: function(event) {
// Throw out all events where the pointer was grabbed by another
// client, as the client that grabbed the pointer expects to have
// complete control over it
if (event.grabbed && Main.modalCount == 0)
return true;
return false;
},
_monitorsChanged: function() {
this._updateMonitors();
this._updateBoxes();
this._updateTrayBarrier();
this._updateHotCorners();
this._updateBackgrounds();
this._updateFullscreen();
@ -1017,43 +974,6 @@ const LayoutManager = new Lang.Class({
else
continue;
// Ensure that the strut rects goes all the way to the screen edge,
// as this really what mutter expects. However skip this step
// in cases where this would render an entire monitor unusable.
switch (side) {
case Meta.Side.TOP:
let hasMonitorsAbove = this.monitors.some(Lang.bind(this,
function(mon) {
return this._isAboveOrBelowPrimary(mon) &&
mon.y < primary.y;
}));
if (!hasMonitorsAbove)
y1 = 0;
break;
case Meta.Side.BOTTOM:
if (this.primaryIndex == this.bottomIndex)
y2 = global.screen_height;
break;
case Meta.Side.LEFT:
let hasMonitorsLeft = this.monitors.some(Lang.bind(this,
function(mon) {
return !this._isAboveOrBelowPrimary(mon) &&
mon.x < primary.x;
}));
if (!hasMonitorsLeft)
x1 = 0;
break;
case Meta.Side.RIGHT:
let hasMonitorsRight = this.monitors.some(Lang.bind(this,
function(mon) {
return !this._isAboveOrBelowPrimary(mon) &&
mon.x > primary.x;
}));
if (!hasMonitorsRight)
x2 = global.screen_width;
break;
}
let strutRect = new Meta.Rectangle({ x: x1, y: y1, width: x2 - x1, height: y2 - y1});
let strut = new Meta.Strut({ rect: strutRect, side: side });
struts.push(strut);

View File

@ -74,7 +74,6 @@ let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _a11ySettings = null;
let dynamicWorkspacesSchema = null;
function _sessionUpdated() {
_loadDefaultStylesheet();
@ -111,7 +110,6 @@ function start() {
sessionMode = new SessionMode.SessionMode();
sessionMode.connect('updated', _sessionUpdated);
_initializePrefs();
_initializeUI();
shellDBusService = new ShellDBus.GnomeShell();
@ -120,17 +118,6 @@ function start() {
_sessionUpdated();
}
function _initializePrefs() {
let keys = new Gio.Settings({ schema: sessionMode.overridesSchema }).list_keys();
for (let i = 0; i < keys.length; i++)
Meta.prefs_override_preference_schema(keys[i], sessionMode.overridesSchema);
if (keys.indexOf('dynamic-workspaces') > -1)
dynamicWorkspacesSchema = sessionMode.overridesSchema;
else
dynamicWorkspacesSchema = 'org.gnome.mutter';
}
function _initializeUI() {
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
// also initialize ShellAppSystem first. ShellAppSystem
@ -163,8 +150,8 @@ function _initializeUI() {
if (LoginManager.canLock())
screenShield = new ScreenShield.ScreenShield();
panel = new Panel.Panel();
messageTray = new MessageTray.MessageTray();
panel = new Panel.Panel();
keyboard = new Keyboard.Keyboard();
notificationDaemon = new NotificationDaemon.NotificationDaemon();
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
@ -294,7 +281,6 @@ function notify(msg, details) {
let source = new MessageTray.SystemNotificationSource();
messageTray.add(source);
let notification = new MessageTray.Notification(source, msg, details);
notification.setTransient(true);
source.notify(notification);
}

File diff suppressed because it is too large Load Diff

View File

@ -91,21 +91,6 @@ const rewriteRules = {
]
};
const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
'bluetooth-applet': 'bluetooth',
'gnome-volume-control-applet': 'volume', // renamed to gnome-sound-applet
// when moved to control center
'gnome-sound-applet': 'volume',
'nm-applet': 'network',
'gnome-power-manager': 'battery',
'keyboard': 'keyboard',
'a11y-keyboard': 'a11y',
'kbd-scrolllock': 'keyboard',
'kbd-numlock': 'keyboard',
'kbd-capslock': 'keyboard',
'ibus-ui-gtk': 'keyboard'
};
const FdoNotificationDaemon = new Lang.Class({
Name: 'FdoNotificationDaemon',
@ -129,7 +114,7 @@ const FdoNotificationDaemon = new Lang.Class({
Main.overview.connect('hidden',
Lang.bind(this, this._onFocusAppChanged));
this._trayManager.manage_screen(global.screen, Main.messageTray.actor);
// this._trayManager.manage_screen(global.screen, Main.messageTray.actor);
},
_imageForNotificationData: function(hints) {
@ -195,10 +180,6 @@ const FdoNotificationDaemon = new Lang.Class({
if (!pid && !(ndata && ndata.notification))
return null;
// We use notification's source for the notifications we still have
// around that are getting replaced because we don't keep sources
// for transient notifications in this._sources, but we still want
// the notification associated with them to get replaced correctly.
if (ndata && ndata.notification)
return ndata.notification.source;
@ -334,13 +315,14 @@ const FdoNotificationDaemon = new Lang.Class({
},
_makeButton: function(id, label, useActionIcons) {
let button = new St.Button({ can_focus: true });
let button = new St.Button({ can_focus: true,
x_expand: true,
style_class: 'notification-button' });
let iconName = id.endsWith('-symbolic') ? id : id + '-symbolic';
if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
button.add_style_class_name('notification-icon-button');
button.child = new St.Icon({ icon_name: iconName });
button.child = new St.Icon({ icon_name: iconName, icon_size: 16 });
} else {
button.add_style_class_name('notification-button');
button.label = label;
}
return button;
@ -379,8 +361,6 @@ const FdoNotificationDaemon = new Lang.Class({
let gicon = this._iconForNotificationData(icon, hints);
let gimage = this._imageForNotificationData(hints);
let image = null;
// If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon
// and don't show a large image. There are currently many applications that use
// notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets
@ -389,10 +369,7 @@ const FdoNotificationDaemon = new Lang.Class({
// So the logic here does the right thing for this case. If both an icon and either
// one of 'image-data' or 'image-path' are specified, we show both an icon and
// a large image.
if (gicon && gimage)
image = new St.Icon({ gicon: gimage,
icon_size: notification.IMAGE_SIZE });
else if (!gicon && gimage)
if (!gicon && gimage)
gicon = gimage;
else if (!gicon)
gicon = this._fallbackIconForNotificationData(hints);
@ -402,7 +379,6 @@ const FdoNotificationDaemon = new Lang.Class({
clear: true,
soundFile: hints['sound-file'],
soundName: hints['sound-name'] });
notification.setImage(image);
let hasDefaultAction = false;
@ -442,10 +418,6 @@ const FdoNotificationDaemon = new Lang.Class({
notification.setUrgency(MessageTray.Urgency.CRITICAL);
break;
}
notification.setResident(hints.resident == true);
// 'transient' is a reserved keyword in JS, so we have to retrieve the value
// of the 'transient' hint with hints['transient'] rather than hints.transient
notification.setTransient(hints['transient'] == true);
let sourceGIcon = source.useNotificationIcon ? gicon : null;
source.processNotification(notification, sourceGIcon);
@ -470,7 +442,6 @@ const FdoNotificationDaemon = new Lang.Class({
'body-markup',
// 'icon-multi',
'icon-static',
'persistence',
'sound',
];
},
@ -492,7 +463,7 @@ const FdoNotificationDaemon = new Lang.Class({
for (let i = 0; i < this._sources.length; i++) {
let source = this._sources[i];
if (source.app == tracker.focus_app) {
source.destroyNonResidentNotifications();
source.destroyNotifications();
return;
}
}
@ -509,10 +480,6 @@ const FdoNotificationDaemon = new Lang.Class({
},
_onTrayIconAdded: function(o, icon) {
let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
if (STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass] !== undefined)
return;
let source = this._getSource(icon.title || icon.wm_class || C_("program", "Unknown"), icon.pid, null, null, icon);
},
@ -584,7 +551,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
this.iconUpdated();
let tracker = Shell.WindowTracker.get_default();
if (notification.resident && this.app && tracker.focus_app == this.app)
if (this.app && tracker.focus_app == this.app)
this.pushNotification(notification);
else
this.notify(notification);
@ -651,7 +618,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
open: function() {
this.openApp();
this.destroyNonResidentNotifications();
this.destroyNotifications();
},
_lastNotificationRemoved: function() {

View File

@ -72,7 +72,6 @@ const ShellInfo = new Lang.Class({
let notification = null;
if (this._source.notifications.length == 0) {
notification = new MessageTray.Notification(this._source, text, null);
notification.setTransient(true);
notification.setForFeedback(forFeedback);
} else {
notification = this._source.notifications[0];

View File

@ -862,11 +862,56 @@ const AggregateMenu = new Lang.Class({
},
});
const DateMenuButton2 = new Lang.Class({
Name: 'DateMenuButton2',
_init: function() {
this.container = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._notificationPreview = Main.messageTray.notificationPreview;
this.container.add_child(this._notificationPreview.actor);
this._notificationPreview.actor.x_expand = true;
this._notificationPreview.actor.x_align = Clutter.ActorAlign.CENTER;
this._notificationPreview.connect('updated', Lang.bind(this, this._sync));
let dateMenu = new imports.ui.dateMenu.DateMenuButton();
this._clock = dateMenu.container;
this._clock.x_expand = true;
this._clock.x_align = Clutter.ActorAlign.CENTER;
this.container.add_child(this._clock);
this._currentlyShowing = 'clock';
this._sync();
},
_show: function(which, animate) {
if (this._currentlyShowing == which)
return;
this._currentlyShowing = which;
if (this._currentlyShowing == 'clock') {
this._notificationPreview.actor.visible = false;
this._clock.visible = true;
} else if (this._currentlyShowing == 'notification') {
this._notificationPreview.actor.visible = true;
this._clock.visible = false;
}
},
_sync: function() {
if (this._currentlyShowing == 'clock' && this._notificationPreview.hasNotification)
this._show('notification', true);
else if (this._currentlyShowing == 'notification' && !this._notificationPreview.hasNotification)
this._show('clock', false);
},
});
Signals.addSignalMethods(DateMenuButton2.prototype);
const PANEL_ITEM_IMPLEMENTATIONS = {
'activities': ActivitiesButton,
'aggregateMenu': AggregateMenu,
'appMenu': AppMenuButton,
'dateMenu': imports.ui.dateMenu.DateMenuButton,
'dateMenu': DateMenuButton2,
'a11y': imports.ui.status.accessibility.ATIndicator,
'a11yGreeter': imports.ui.status.accessibility.ATGreeterIndicator,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,

View File

@ -41,8 +41,7 @@ const ButtonBox = new Lang.Class({
},
_getPreferredWidth: function(actor, forHeight, alloc) {
let children = actor.get_children();
let child = children.length > 0 ? children[0] : null;
let child = actor.get_first_child();
if (child) {
[alloc.min_size, alloc.natural_size] = child.get_preferred_width(-1);
@ -55,8 +54,7 @@ const ButtonBox = new Lang.Class({
},
_getPreferredHeight: function(actor, forWidth, alloc) {
let children = actor.get_children();
let child = children.length > 0 ? children[0] : null;
let child = actor.get_first_child();
if (child) {
[alloc.min_size, alloc.natural_size] = child.get_preferred_height(-1);
@ -66,13 +64,11 @@ const ButtonBox = new Lang.Class({
},
_allocate: function(actor, box, flags) {
let children = actor.get_children();
if (children.length == 0)
let child = actor.get_first_child();
if (!child)
return;
let child = children[0];
let [minWidth, natWidth] = child.get_preferred_width(-1);
let [minHeight, natHeight] = child.get_preferred_height(-1);
let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1;

View File

@ -68,6 +68,13 @@ const ScreenshotService = new Lang.Class({
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
},
_checkArea: function(x, y, width, height) {
return x >= 0 && y >= 0 &&
width > 0 && height > 0 &&
x + width <= global.screen_width &&
y + height <= global.screen_height;
},
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
if (flash && result) {
let flashspot = new Flashspot(area);
@ -80,11 +87,10 @@ const ScreenshotService = new Lang.Class({
ScreenshotAreaAsync : function (params, invocation) {
let [x, y, width, height, flash, filename, callback] = params;
if (x < 0 || y < 0 ||
width <= 0 || height <= 0 ||
x + width > global.screen_width || y + height > global.screen_height) {
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
"Invalid params");
if (!this._checkArea(x, y, width, height)) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");
return;
}
let screenshot = new Shell.Screenshot();
@ -126,9 +132,17 @@ const ScreenshotService = new Lang.Class({
}));
},
FlashArea: function(x, y, width, height) {
FlashAreaAsync: function(params, invocation) {
let [x, y, width, height] = params;
if (!this._checkArea(x, y, width, height)) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");
return;
}
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire();
invocation.return_value(null);
}
});

View File

@ -18,7 +18,6 @@ const _modes = {
'restrictive': {
parentMode: null,
stylesheetName: 'gnome-shell.css',
overridesSchema: 'org.gnome.shell.overrides',
hasOverview: false,
showCalendarEvents: false,
allowSettings: false,

View File

@ -253,7 +253,6 @@ const ShellUnmountNotifier = new Lang.Class({
if (!this._notification) {
this._notification = new MessageTray.Notification(this, header, text);
this._notification.setTransient(true);
this._notification.setUrgency(MessageTray.Urgency.CRITICAL);
} else {
this._notification.update(header, text);
@ -270,7 +269,6 @@ const ShellUnmountNotifier = new Lang.Class({
if (message) {
let notification = new MessageTray.Notification(this, message, null);
notification.setTransient(true);
this.notify(notification);
}

View File

@ -1632,7 +1632,6 @@ const NMApplet = new Lang.Class({
let gicon = new Gio.ThemedIcon({ name: iconName });
this._notification = new MessageTray.Notification(this._source, title, text, { gicon: gicon });
this._notification.setUrgency(urgency);
this._notification.setTransient(true);
this._notification.connect('destroy', function() {
this._notification = null;
});

View File

@ -285,10 +285,10 @@ const ViewSelector = new Lang.Class({
} else if (!this._searchActive && !global.stage.key_focus) {
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
return true;
return Clutter.EVENT_STOP;
} else if (symbol == Clutter.ISO_Left_Tab) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
return true;
return Clutter.EVENT_STOP;
}
}
return Clutter.EVENT_PROPAGATE;

View File

@ -199,12 +199,19 @@ const WorkspaceTracker = new Lang.Class({
global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor));
global.screen.connect('restacked', Lang.bind(this, this._windowsRestacked));
this._workspaceSettings = new Gio.Settings({ schema: Main.dynamicWorkspacesSchema });
this._workspaceSettings = this._getWorkspaceSettings();
this._workspaceSettings.connect('changed::dynamic-workspaces', Lang.bind(this, this._queueCheckWorkspaces));
this._nWorkspacesChanged();
},
_getWorkspaceSettings: function() {
let settings = global.get_overrides_settings();
if (settings.list_keys().indexOf('dynamic-workspaces') > -1)
return settings;
return new Gio.Settings({ schema: 'org.gnome.mutter' });
},
_checkWorkspaces: function() {
let i;
let emptyWorkspaces = [];
@ -464,8 +471,6 @@ const WindowManager = new Lang.Class({
this._dimmedWindows = [];
this._animationBlockCount = 0;
this._allowedKeybindings = {};
this._switchData = null;
@ -708,16 +713,8 @@ const WindowManager = new Lang.Class({
this._allowedKeybindings[name] = modes;
},
blockAnimations: function() {
this._animationBlockCount++;
},
unblockAnimations: function() {
this._animationBlockCount = Math.max(0, this._animationBlockCount - 1);
},
_shouldAnimate: function() {
return !(Main.overview.visible || this._animationBlockCount > 0);
return !Main.overview.visible;
},
_shouldAnimateActor: function(actor) {
@ -1163,8 +1160,8 @@ const WindowManager = new Lang.Class({
this._tilePreview.hide();
},
_showWindowMenu: function(shellwm, window, menu, x, y) {
this._windowMenuManager.showWindowMenuForWindow(window, menu, x, y);
_showWindowMenu: function(shellwm, window, menu, rect) {
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
},
_startAppSwitcher : function(display, screen, window, binding) {

View File

@ -15,8 +15,8 @@ const WindowMenu = new Lang.Class({
Name: 'WindowMenu',
Extends: PopupMenu.PopupMenu,
_init: function(window) {
this.parent(Main.layoutManager.dummyCursor, 0, St.Side.TOP);
_init: function(window, sourceActor) {
this.parent(sourceActor, 0, St.Side.TOP);
this.actor.add_style_class_name('window-menu');
@ -129,10 +129,10 @@ const AppMenu = new Lang.Class({
Name: 'AppMenu',
Extends: RemoteMenu.RemoteMenu,
_init: function(window) {
_init: function(window, sourceActor) {
let app = Shell.WindowTracker.get_default().get_window_app(window);
this.parent(Main.layoutManager.dummyCursor, app.menu, app.action_group);
this.parent(sourceActor, app.menu, app.action_group);
this.actor.add_style_class_name('fallback-app-menu');
let variant = window.get_gtk_theme_variant();
@ -149,11 +149,18 @@ const WindowMenuManager = new Lang.Class({
_init: function() {
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
this._sourceActor = new St.Widget({ reactive: true, visible: false });
this._sourceActor.connect('button-press-event', Lang.bind(this,
function() {
this._manager.activeMenu.toggle();
}));
Main.uiGroup.add_actor(this._sourceActor);
},
showWindowMenuForWindow: function(window, type, x, y) {
let menu = (type == Meta.WindowMenuType.WM) ? new WindowMenu(window)
: new AppMenu(window);
showWindowMenuForWindow: function(window, type, rect) {
let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu;
let menu = new menuType(window, this._sourceActor);
this._manager.addMenu(menu);
@ -161,12 +168,18 @@ const WindowMenuManager = new Lang.Class({
window.check_alive(global.get_current_time());
});
Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
this._sourceActor.set_size(rect.width, rect.height);
this._sourceActor.set_position(rect.x, rect.y);
this._sourceActor.show();
menu.open(BoxPointer.PopupAnimation.NONE);
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
menu.connect('open-state-changed', Lang.bind(this, function(menu_, isOpen) {
if (!isOpen)
menu.destroy();
if (isOpen)
return;
this._sourceActor.hide();
menu.destroy();
}));
}
});

View File

@ -200,6 +200,10 @@ const WindowClone = new Lang.Class({
this.emit('size-changed');
},
hasAttachedDialogs: function() {
return this.actor.get_n_children() > 1;
},
_doAddAttachedDialog: function(metaWin, realWin) {
let clone = new Clutter.Clone({ source: realWin });
clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() {
@ -582,7 +586,8 @@ const WindowOverlay = new Lang.Class({
},
_windowCanClose: function() {
return this._windowClone.metaWindow.can_close();
return this._windowClone.metaWindow.can_close() &&
!this._windowClone.hasAttachedDialogs();
},
_onWindowAdded: function(workspace, win) {

File diff suppressed because it is too large Load Diff

209
po/es.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-20 07:27+0000\n"
"PO-Revision-Date: 2014-05-20 19:10+0200\n"
"POT-Creation-Date: 2014-06-11 07:31+0000\n"
"PO-Revision-Date: 2014-06-12 17:23+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
"Language: es\n"
@ -55,7 +55,6 @@ msgid "Window management and application launching"
msgstr "Gestión de ventanas e inicio de aplicaciones"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences"
msgstr "Preferencias de las extensiones de GNOME Shell"
@ -270,49 +269,33 @@ msgstr ""
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Orden de los botones en la barra de título"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
"ejecutar GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
"ventana"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically"
msgstr "Las áreas de trabajo se gestionan dinámicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Workspaces only on primary monitor"
msgstr "Áreas de trabajo solo en la pantalla principal"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:125
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Extensión"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr ""
"Seleccione una extensión que configurar usando la caja combinada de arriba."
#: ../js/extensionPrefs/main.js:157
#| msgid "Configure GNOME Shell Extensions"
msgid "GNOME Shell Extensions"
msgstr "Extensiones de GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@ -335,25 +318,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Iniciar sesión"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:269
msgid "Choose Session"
msgstr "Elegir sesión"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:429
msgid "Not listed?"
msgstr "¿No está en la lista?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ej., usuario o %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Nombre de usuario:"
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:922
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
@ -541,11 +524,11 @@ msgctxt "list saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:454
msgid "Previous month"
msgstr "Mes anterior"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:464
msgid "Next month"
msgstr "Siguiente mes"
@ -731,77 +714,77 @@ msgid "Mute"
msgstr "Silenciar"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:957
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:964
msgid "Yesterday, %H%M"
msgstr "Ayer, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:971
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:978
msgid "%B %d, %H%M"
msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:984
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:990
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:997
msgid "Yesterday, %l%M %p"
msgstr "Ayer a las %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1004
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1011
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1017
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1049
#, javascript-format
msgid "%s is now known as %s"
msgstr "Ahora %s se llama %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1153
#, javascript-format
msgid "Invitation to %s"
msgstr "Invitación a %s"
@ -809,38 +792,38 @@ msgstr "Invitación a %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1161
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s le está invitando a unirse a %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Rechazar"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1188
#, javascript-format
msgid "Video call from %s"
msgstr "Videollamada de %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1191
#, javascript-format
msgid "Call from %s"
msgstr "Llamada de %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1205
msgid "Answer"
msgstr "Responder"
@ -849,112 +832,112 @@ msgstr "Responder"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1226
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s le está enviando %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1255
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s solicita permiso para ver cuándo está en línea"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Error de la red"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Falló la autenticación"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Error de cifrado"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Certificado no proporcionado"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "No se confía en el certificado"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Certificado caducado"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Certificado no activado"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "El nombre del servidor dle certificado no coincide"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "La huella del certificado no coincide"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Certificado autofirmado"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "El estado está establecido a «desconectado»"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "El cifrado no está disponible"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "El certificado no es válido"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "Se ha rechazado la conexión"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "No se puede establecer la conexión"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Se ha perdido la conexión"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Esta cuenta ya está conectada al servidor"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "La cuenta ya existe en el servidor"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr ""
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Se ha revocado el certificado"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
"débil"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -963,22 +946,22 @@ msgstr ""
"certificado del servidor exceden los límites impuestos por la biblioteca de "
"criptografía"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Error interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "No se pudo conectar a %s"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Ver cuenta"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Razón desconocida"
@ -1153,7 +1136,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
msgid "Keyboard"
msgstr "Teclado"
@ -1287,7 +1270,7 @@ msgstr "Actividades"
msgid "Top Bar"
msgstr "Barra superior"
#: ../js/ui/popupMenu.js:271
#: ../js/ui/popupMenu.js:279
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1295,7 +1278,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Introducir un comando"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
msgid "Close"
msgstr "Cerrar"
@ -1434,7 +1417,7 @@ msgstr "No conectado"
msgid "Brightness"
msgstr "Brillo"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:407
msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado"
@ -1720,43 +1703,43 @@ msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "La configuración se revertirá en %d segundo"
msgstr[1] "La configuración se revertirá en %d segundos"
#: ../js/ui/windowMenu.js:33
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr "Minimizar"
#: ../js/ui/windowMenu.js:40
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr "Desmaximizar"
#: ../js/ui/windowMenu.js:44
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr "Maximizar"
#: ../js/ui/windowMenu.js:51
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Mover"
#: ../js/ui/windowMenu.js:57
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Redimensionar"
#: ../js/ui/windowMenu.js:64
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Mover la barra de título a la pantalla"
#: ../js/ui/windowMenu.js:69
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Siempre encima"
#: ../js/ui/windowMenu.js:86
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Siempre en el área de trabajo visible"
#: ../js/ui/windowMenu.js:103
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Subir a un área de trabajo"
#: ../js/ui/windowMenu.js:108
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Bajar a un área de trabajo"
@ -1786,21 +1769,21 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sonidos del sistema"
#: ../src/main.c:349
#: ../src/main.c:371
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:355
#: ../src/main.c:377
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio"
#: ../src/main.c:361
#: ../src/main.c:383
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
"sesión"
#: ../src/main.c:367
#: ../src/main.c:389
msgid "List possible modes"
msgstr "Listar los modos posibles"
@ -1821,6 +1804,24 @@ msgstr "La contraseña no puede estar vacía"
msgid "Authentication dialog was dismissed by the user"
msgstr "El usuario rechazó el diálogo de autenticación"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Orden de los botones en la barra de título"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
#~ "ejecutar GNOME Shell."
#~ msgid "Extension"
#~ msgstr "Extensión"
#~ msgid "Select an extension to configure using the combobox above."
#~ msgstr ""
#~ "Seleccione una extensión que configurar usando la caja combinada de "
#~ "arriba."
#~ msgid "calendar:MY"
#~ msgstr "calendario:MA"

413
po/hu.po

File diff suppressed because it is too large Load Diff

View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-04-06 07:54+0000\n"
"PO-Revision-Date: 2014-04-06 14:15+0100\n"
"POT-Creation-Date: 2014-05-27 19:20+0000\n"
"PO-Revision-Date: 2014-05-31 14:54+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"Language: it\n"
@ -421,7 +421,7 @@ msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Impostazioni"
@ -1076,7 +1076,7 @@ msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi."
#: ../js/ui/endSessionDialog.js:93
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Installa gli aggiornamenti software in sospeso"
msgstr "Installare gli aggiornamenti software in sospeso"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
msgctxt "button"
@ -1130,7 +1130,7 @@ msgstr "Installa e spegni"
#: ../js/ui/endSessionDialog.js:131
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Spegne dopo aver installato gli aggiornamenti"
msgstr "Spegnere dopo aver installato gli aggiornamenti"
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
@ -1167,7 +1167,7 @@ msgstr "Installa"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:339
msgid "Keyboard"
msgstr "Tastiera"
@ -1328,7 +1328,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nuova notifica"
msgstr[1] "%d nuove notifiche"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Blocca"
@ -1344,11 +1344,11 @@ msgstr "Impossibile bloccare"
msgid "Lock was blocked by an application"
msgstr "Il blocco è stato impedito da un'applicazione."
#: ../js/ui/search.js:603
#: ../js/ui/search.js:606
msgid "Searching…"
msgstr "Ricerca…"
#: ../js/ui/search.js:649
#: ../js/ui/search.js:652
msgid "No results."
msgstr "Nessun risultato."
@ -1427,8 +1427,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
msgid "Turn Off"
msgstr "Spegni"
@ -1451,7 +1451,7 @@ msgstr "Non collegato"
msgid "Brightness"
msgstr "Luminosità"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:407
msgid "Show Keyboard Layout"
msgstr "Mostra disposizione tastiera"
@ -1461,13 +1461,11 @@ msgstr "Posizione"
# (ndt) o disabilitata?
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Disabilitato"
# (ndt) o abilitata?
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
msgstr "Abilita"
@ -1577,7 +1575,7 @@ msgstr "Seleziona una rete"
msgid "No Networks"
msgstr "Nessuna rete"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
msgid "Use hardware switch to turn off"
msgstr "Usare l'interruttore hardware per disattivare"
@ -1601,7 +1599,7 @@ msgstr "Hotspot attivo"
msgid "Connecting"
msgstr "Connessione"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
msgid "Network Settings"
msgstr "Impostazioni rete"
@ -1656,31 +1654,31 @@ msgstr "UPS"
msgid "Battery"
msgstr "Batteria"
#: ../js/ui/status/rfkill.js:82
#: ../js/ui/status/rfkill.js:83
msgid "Airplane Mode"
msgstr "Modalità aereo"
#: ../js/ui/status/rfkill.js:84
#: ../js/ui/status/rfkill.js:85
msgid "On"
msgstr "On"
#: ../js/ui/status/system.js:314
#: ../js/ui/status/system.js:317
msgid "Switch User"
msgstr "Cambia utente"
#: ../js/ui/status/system.js:319
#: ../js/ui/status/system.js:322
msgid "Log Out"
msgstr "Termina sessione"
#: ../js/ui/status/system.js:338
#: ../js/ui/status/system.js:341
msgid "Orientation Lock"
msgstr "Blocco orientazione"
#: ../js/ui/status/system.js:346
#: ../js/ui/status/system.js:349
msgid "Suspend"
msgstr "Sospendi"
#: ../js/ui/status/system.js:349
#: ../js/ui/status/system.js:352
msgid "Power Off"
msgstr "Spegni"

183
po/lt.po
View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-18 07:27+0000\n"
"PO-Revision-Date: 2014-05-18 22:25+0300\n"
"POT-Creation-Date: 2014-06-02 19:26+0000\n"
"PO-Revision-Date: 2014-06-02 23:35+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@ -58,7 +58,6 @@ msgid "Window management and application launching"
msgstr "Langų valdymas ir programų paleidimas"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Shell plėtinių nustatymai"
@ -267,45 +266,30 @@ msgid ""
msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Mygtukų išdėstymas pavadinimo juostoje"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Šis raktas perrašo org.gnome.desktop.wm.preferences raktą, kai vykdoma GNOME "
"Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically"
msgstr "Darbalaukiai yra valdomi dinamiškai"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Workspaces only on primary monitor"
msgstr "Darbalaukiai tik pagrindiniame monitoriuje"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:125
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Kilo klaida įkeliant %s nustatymų dialogą:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Plėtinys"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
#: ../js/extensionPrefs/main.js:157
#| msgid "Configure GNOME Shell Extensions"
msgid "GNOME Shell Extensions"
msgstr "GNOME Shell plėtiniai"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@ -328,25 +312,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Prisijungti"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:269
msgid "Choose Session"
msgstr "Pasirinkite seansą"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:429
msgid "Not listed?"
msgstr "Nėra sąraše?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(pvz., naudotojas arba %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Naudotojo vardas: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:922
msgid "Login Window"
msgstr "Prisijungimo langas"
@ -534,11 +518,11 @@ msgctxt "list saturday"
msgid "S"
msgstr "Št"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:454
msgid "Previous month"
msgstr "Ankstesnis mėnuo"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:464
msgid "Next month"
msgstr "Kitas mėnuo"
@ -724,77 +708,77 @@ msgid "Mute"
msgstr "Nutildyti"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:957
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:964
msgid "Yesterday, %H%M"
msgstr "Vakar, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:971
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:978
msgid "%B %d, %H%M"
msgstr "%B %d, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:984
msgid "%B %d %Y, %H%M"
msgstr "%Y %m %d, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:990
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:997
msgid "Yesterday, %l%M %p"
msgstr "Vakar, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1004
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1011
msgid "%B %d, %l%M %p"
msgstr "%B %d, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1017
msgid "%B %d %Y, %l%M %p"
msgstr "%Y %B %d, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1049
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s nuo šiol vadinasi %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1153
#, javascript-format
msgid "Invitation to %s"
msgstr "Kvietimas į %s"
@ -802,38 +786,38 @@ msgstr "Kvietimas į %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1161
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s jus kviečia prisijungti prie %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Atmesti"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Priimti"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1188
#, javascript-format
msgid "Video call from %s"
msgstr "Vaizdo skambutis nuo %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1191
#, javascript-format
msgid "Call from %s"
msgstr "Skambutis nuo %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1205
msgid "Answer"
msgstr "Atsiliepti"
@ -842,110 +826,110 @@ msgstr "Atsiliepti"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1226
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s jums siunčia %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1255
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Tinklo klaida"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Nepavyko patvirtinti tapatybės"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Šifravimo klaida"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Liudijimas nepateiktas"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Liudijimas nepatikimas"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Liudijimo galiojimas pasibaigęs"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Liudijimas neaktyvuotas"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Liudijimo serverio vardo nesutapimas"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Liudijimo piršto atspaudo nesutapimas"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Liudijimas pačių pasirašytas"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "Nustatyta atsijungimo būsena"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Šifravimas negalimas"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "Liudijimas netinkamas"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "Ryšys atmestas"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "Nepavyko užmegzti ryšio"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Ryšys nutrūko"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Ši paskyra jau prijungta prie serverio"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "Tokia paskyra serveryje jau yra"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Liudijimas atšauktas"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
"silpnas"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -953,22 +937,22 @@ msgstr ""
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
"bibliotekos apribojimus"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Vidinė klaida"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Nepavyksta prisijungti prie %s"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Rodyti paskyrą"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Nežinoma priežastis"
@ -1148,7 +1132,7 @@ msgstr "Įdiegti"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
msgid "Keyboard"
msgstr "Klaviatūra"
@ -1283,7 +1267,7 @@ msgstr "Apžvalga"
msgid "Top Bar"
msgstr "Viršutinė juosta"
#: ../js/ui/popupMenu.js:271
#: ../js/ui/popupMenu.js:279
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1291,7 +1275,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Įveskite komandą"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
msgid "Close"
msgstr "Užverti"
@ -1432,7 +1416,7 @@ msgstr "Atsijungta"
msgid "Brightness"
msgstr "Ryškumas"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:407
msgid "Show Keyboard Layout"
msgstr "Rodyti klaviatūros išdėstymą"
@ -1719,43 +1703,43 @@ msgstr[0] "Pakeitimai bus grąžinti po %d sekundės"
msgstr[1] "Pakeitimai bus grąžinti po %d sekundžių"
msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
#: ../js/ui/windowMenu.js:33
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr "Sumažinti"
#: ../js/ui/windowMenu.js:40
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr "Grąžinti iš išdidinimo"
#: ../js/ui/windowMenu.js:44
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr "Išdidinti"
#: ../js/ui/windowMenu.js:51
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Perkelti"
#: ../js/ui/windowMenu.js:57
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Keisti dydį"
#: ../js/ui/windowMenu.js:64
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Perkelti pavadinimo juostą į ekraną"
#: ../js/ui/windowMenu.js:69
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Visada viršuje"
#: ../js/ui/windowMenu.js:86
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Visada matomame darbalaukyje"
#: ../js/ui/windowMenu.js:103
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Perkelti į aukščiau esantį darbalaukį"
#: ../js/ui/windowMenu.js:108
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Perkelti į žemiau esantį darbalaukį"
@ -1819,3 +1803,4 @@ msgstr "Slaptažodis negali būti tuščias"
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"

442
po/nb.po

File diff suppressed because it is too large Load Diff

View File

@ -13,25 +13,24 @@
# Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013.
# Fábio Nogueira <fnogueira@gnome.org>, 2014.
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2014.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-19 11:46+0000\n"
"PO-Revision-Date: 2014-05-19 16:48-0300\n"
"Last-Translator: Georges Basile Stavracas Neto <georges.stavracas@gmail."
"com>\n"
"POT-Creation-Date: 2014-06-03 07:28+0000\n"
"PO-Revision-Date: 2014-06-03 10:26-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.6.4\n"
"X-Generator: Poedit 1.6.5\n"
"X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
@ -68,13 +67,12 @@ msgid "Window management and application launching"
msgstr "Gerenciamento de janelas e lançador de aplicativos"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences"
msgstr "Preferências de extensões do GNOME Shell"
msgstr "Preferências de extensões do Shell do GNOME"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar extensões do GNOME Shell"
msgstr "Configurar extensões do Shell do GNOME"
# Traduções do Xfce e da Microsoft usam compositor --Enrico
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
@ -287,47 +285,31 @@ msgstr ""
"GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Organização dos botões na barra de título"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
"executar o Shell do GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically"
msgstr "Espaços de trabalho são gerenciados dinamicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Workspaces only on primary monitor"
msgstr "Espaços de trabalho apenas no monitor primário"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:125
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Extensão"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr ""
"Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#: ../js/extensionPrefs/main.js:157
#| msgid "Configure GNOME Shell Extensions"
msgid "GNOME Shell Extensions"
msgstr "Extensões do Shell do GNOME"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@ -350,25 +332,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Entrar"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:269
msgid "Choose Session"
msgstr "Escolher sessão"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:429
msgid "Not listed?"
msgstr "Não está listado?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ex.: usuário ou %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Nome de usuário: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:922
msgid "Login Window"
msgstr "Janela de sessão"
@ -556,11 +538,11 @@ msgctxt "list saturday"
msgid "S"
msgstr "Sab"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:454
msgid "Previous month"
msgstr "Mês anterior"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:464
msgid "Next month"
msgstr "Próximo mês"
@ -746,77 +728,77 @@ msgid "Mute"
msgstr "Sem áudio"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:957
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:964
msgid "Yesterday, %H%M"
msgstr "Ontem, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:971
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:978
msgid "%B %d, %H%M"
msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:984
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:990
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:997
msgid "Yesterday, %l%M %p"
msgstr "Ontem, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1004
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1011
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1017
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1049
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s agora é conhecido como %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1153
#, javascript-format
msgid "Invitation to %s"
msgstr "Convite para %s"
@ -824,38 +806,38 @@ msgstr "Convite para %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1161
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s está convidando você para participar de %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Recusar"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Aceitar"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1188
#, javascript-format
msgid "Video call from %s"
msgstr "Chamada de vídeo para %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1191
#, javascript-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1205
msgid "Answer"
msgstr "Atender"
@ -864,110 +846,110 @@ msgstr "Atender"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1226
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s está enviando %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1255
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s quer permissão para vê-lo quando conectado"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Erro de rede"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Falha de autenticação"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Erro de criptografia"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Certificado não fornecido"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Certificado não confiável"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Certificado expirado"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Certificado não ativado"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Máquina do certificado não confere"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Impressão digital do certificado não confere"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Certificado auto-assinado"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "O status está definido como desconectado."
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Criptografia não disponível"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "O certificado é inválido"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "A conexão foi recusada"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "A conexão não pode ser estabelecida"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Conexão perdida"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Esta conta já está conectada ao servidor"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "A conexão foi substituída por uma nova conexão usando o mesmo recurso"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "A conta já existe no servidor"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "O servidor está atualmente muito ocupado para controlar a conexão"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "O certificado foi revogado"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"O certificado usa um algoritmo de cifragem inseguro ou é criptograficamente "
"fraco"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -975,22 +957,22 @@ msgstr ""
"O comprimento do certificado do servidor, ou a profundidade da cadeia do "
"certificado excedeu os limites impostos pela biblioteca de criptografia"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Erro interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Não foi possível conectar-se a %s"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Visualizar conta"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Razão desconhecida"
@ -1167,7 +1149,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
msgid "Keyboard"
msgstr "Teclado"
@ -1301,7 +1283,7 @@ msgstr "Atividades"
msgid "Top Bar"
msgstr "Barra superior"
#: ../js/ui/popupMenu.js:271
#: ../js/ui/popupMenu.js:279
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1309,7 +1291,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Digite um comando"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
msgid "Close"
msgstr "Fechar"
@ -1448,7 +1430,7 @@ msgstr "Não conectado"
msgid "Brightness"
msgstr "Brilho"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:407
msgid "Show Keyboard Layout"
msgstr "Exibir disposição de teclado"
@ -1737,43 +1719,43 @@ msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Alterações nas configurações serão revertidas em %d segundo"
msgstr[1] "Alterações nas configurações serão revertidas em %d segundos"
#: ../js/ui/windowMenu.js:33
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr "Minimizar"
#: ../js/ui/windowMenu.js:40
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr "Restaurar"
#: ../js/ui/windowMenu.js:44
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr "Maximizar"
#: ../js/ui/windowMenu.js:51
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Mover"
#: ../js/ui/windowMenu.js:57
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Redimensionar"
#: ../js/ui/windowMenu.js:64
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Mover barra de título na tela"
#: ../js/ui/windowMenu.js:69
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Sempre no topo"
#: ../js/ui/windowMenu.js:86
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Sempre na área de trabalho visível"
#: ../js/ui/windowMenu.js:103
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Mover para a área de trabalho acima"
#: ../js/ui/windowMenu.js:108
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Mover para a área de trabalho abaixo"
@ -1836,6 +1818,23 @@ msgstr "A senha não pode estar em branco"
msgid "Authentication dialog was dismissed by the user"
msgstr "O diálogo de autenticação foi descartado pelo usuário"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Organização dos botões na barra de título"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
#~ "executar o Shell do GNOME."
#~ msgid "Extension"
#~ msgstr "Extensão"
#~ msgid "Select an extension to configure using the combobox above."
#~ msgstr ""
#~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"

405
po/tr.po
View File

@ -11,10 +11,9 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-17 23:09+0000\n"
"PO-Revision-Date: 2014-05-19 14:40+0300\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-06-05 07:25+0000\n"
"PO-Revision-Date: 2014-06-05 23:19+0000\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"Language: tr\n"
@ -22,7 +21,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Gtranslator 2.91.6\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -58,7 +56,6 @@ msgid "Window management and application launching"
msgstr "Pencere yönetimi ve uygulama başlatma"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Kabuğu Eklenti Tercihleri"
@ -72,16 +69,13 @@ msgstr "GNOME Kabuğu (wayland bestecisi)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Geliştirici ve deneme yapanlar için Alt-F2' den ulaşılan araçları etkinleştir"
msgstr "Geliştirici ve deneme yapanlar için Alt-F2' den ulaşılan araçları etkinleştir"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Alt-F2 kutucuğu ile bütünleşik hata ayıklama ve izleme uygulamalarına erişim "
"sağlar."
msgstr "Alt-F2 kutucuğu ile bütünleşik hata ayıklama ve izleme uygulamalarına erişim sağlar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
msgid "UUIDs of extensions to enable"
@ -89,16 +83,11 @@ msgstr "Etkinleştirilecek uzantıların UUID'si"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"GNOME Shell extensions have a UUID property; this key lists extensions which"
" should be loaded. Any extension that wants to be loaded needs to be in this"
" list. You can also manipulate this list with the EnableExtension and "
"DisableExtension D-Bus methods on org.gnome.Shell."
msgstr ""
"GNOME Kabuğu eklentilerinde UUID adlı bir özellik bulunur; bu anahtar, "
"yüklenmesi gereken uzantıları listeler. Yüklenmesi istenen her tür uzantının "
"bu listede olması gerekir. Ayrıca bu listeyi, org.gnome.Shell üzerindeki "
"EnableExtension ve DisableExtension DBus yöntemleri ile de "
"değiştirebilirsiniz."
msgstr "GNOME Kabuğu eklentilerinde UUID adlı bir özellik bulunur; bu anahtar, yüklenmesi gereken uzantıları listeler. Yüklenmesi istenen her tür uzantının bu listede olması gerekir. Ayrıca bu listeyi, org.gnome.Shell üzerindeki EnableExtension ve DisableExtension DBus yöntemleri ile de değiştirebilirsiniz."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
@ -109,11 +98,7 @@ msgid ""
"GNOME Shell will only load extensions that claim to support the current "
"running version. Enabling this option will disable this check and try to "
"load all extensions regardless of the versions they claim to support."
msgstr ""
"GNOME Kabuğu sadece mevcut çalışan sürümü desteklediklerini ileri süren "
"uzantıları yükleyecektir. Bu seçeneği etkinleştirmek bu denetimi devre dışı "
"bırakacak ve desteklendiği ileri sürülen sürümleri dikkate almaksızın, tüm "
"uygulamaları yüklemeye çalışacaktır."
msgstr "GNOME Kabuğu sadece mevcut çalışan sürümü desteklediklerini ileri süren uzantıları yükleyecektir. Bu seçeneği etkinleştirmek bu denetimi devre dışı bırakacak ve desteklendiği ileri sürülen sürümleri dikkate almaksızın, tüm uygulamaları yüklemeye çalışacaktır."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
@ -121,10 +106,9 @@ msgstr "Sık kullanılan uygulamalar için masa üstü dosyalarının ID listesi
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Bu tanımlayıcıya sahip uygulamalar sık kullanılanlar bölümünde gösterilecek."
"The applications corresponding to these identifiers will be displayed in the"
" favorites area."
msgstr "Bu tanımlayıcıya sahip uygulamalar sık kullanılanlar bölümünde gösterilecek."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog"
@ -140,17 +124,14 @@ msgstr "Kullanıcı menüsünde 'Oturumu Kapat' menü öğesini daima göster."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
msgstr ""
"Bu ayar tek kullanıcı oturum açtığında 'Oturumu Kapat' menü ögesinin "
"gizlenmesini önler."
"This key overrides the automatic hiding of the 'Log out' menu item in "
"single-user, single-session situations."
msgstr "Bu ayar tek kullanıcı oturum açtığında 'Oturumu Kapat' menü ögesinin gizlenmesini önler."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid ""
"Whether to remember password for mounting encrypted or remote filesystems"
msgstr ""
"Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
msgstr "Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid ""
@ -158,11 +139,7 @@ msgid ""
"filesystem is mounted. If the password can be saved for future use a "
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"Kabuk, şifreli bir cihaz ya da uzak dosya sistemi bağlandığında parola "
"isteyecek. Eğer parola gelecekte kullanılmak üzere kaydedilebiliyorsa, "
"'Parolayı Hatırla' onay kutusu sunulacak. Bu anahtar, onay kutusunun "
"öntanımlı durumunu belirler."
msgstr "Kabuk, şifreli bir cihaz ya da uzak dosya sistemi bağlandığında parola isteyecek. Eğer parola gelecekte kullanılmak üzere kaydedilebiliyorsa, 'Parolayı Hatırla' onay kutusu sunulacak. Bu anahtar, onay kutusunun öntanımlı durumunu belirler."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Show the week date in the calendar"
@ -186,10 +163,9 @@ msgstr "\"Uygulamaları Göster\" görünümünü açmak için klavye kısayolu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için "
"klavye kısayolu."
"Keybinding to open the \"Show Applications\" view of the Activities "
"Overview."
msgstr "Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için klavye kısayolu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the overview"
@ -235,14 +211,7 @@ msgid ""
"receiver). Please keep in mind that this only controls what GeoClue will "
"allow applications to see and they can find user's location on their own "
"using network resources (albeit with street-level accuracy at best)."
msgstr ""
"Uygulamaların görmesine izin verilen en yüksek konum hassasiyetini "
"yapılandırır. Geçerli seçenekler: 'kapalı' (konum izlemeyi devre dışı "
"bırak), 'ülke', 'şehir', 'semt', 'sokak' ve 'kesin' (genelde GPS alıcısı "
"gerektirir). Lütfen unutmayın: Bu, sadece GeoClue'nun uygulamaların neleri "
"görmesine izin vereceğini denetler. Uygulamalar, kullanıcının konumunu (en "
"fazla sokak düzeyindeki bir hassasiyetle de olsa) ağ kaynaklarını kullanarak "
"kendi imkanlarıyla bulabilirler."
msgstr "Uygulamaların görmesine izin verilen en yüksek konum hassasiyetini yapılandırır. Geçerli seçenekler: 'kapalı' (konum izlemeyi devre dışı bırak), 'ülke', 'şehir', 'semt', 'sokak' ve 'kesin' (genelde GPS alıcısı gerektirir). Lütfen unutmayın: Bu, sadece GeoClue'nun uygulamaların neleri görmesine izin vereceğini denetler. Uygulamalar, kullanıcının konumunu (en fazla sokak düzeyindeki bir hassasiyetle de olsa) ağ kaynaklarını kullanarak kendi imkanlarıyla bulabilirler."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode."
@ -251,13 +220,9 @@ msgstr "Uygulama simge kipi."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Pencerelerin değiştiricideki gösterim şeklini yapılandırır. Uygun "
"olasılıklar; 'thumbnail-only' (pencerenin küçük bir resmini gösterir), 'app-"
"icon-only' (sadece uygulama simgesini gösterir) ya da 'both' (her ikisi) "
"değerleridir."
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
"(shows only the application icon) or 'both'."
msgstr "Pencerelerin değiştiricideki gösterim şeklini yapılandırır. Uygun olasılıklar; 'thumbnail-only' (pencerenin küçük bir resmini gösterir), 'app-icon-only' (sadece uygulama simgesini gösterir) ya da 'both' (her ikisi) değerleridir."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Attach modal dialog to the parent window"
@ -266,52 +231,32 @@ msgstr "Yardımcı iletişim penceresini üst pencereye iliştir"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı "
"geçersiz kılar."
msgstr "Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı geçersiz kılar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Düğmelerin başlık çubuğundaki düzeni"
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Bu anahtar, GNOME Shell çalışırken org.gnome.desktop.wm.preferences içindeki "
"anahtarı geçersiz kılar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Workspaces are managed dynamically"
msgstr "Çalışma alanları dinamik olarak yönetilir"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Workspaces only on primary monitor"
msgstr "Çalışma alanları sadece birincil ekranda"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:125
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s için tercihler iletişim penceresi yüklenirken hata oluştu:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Eklenti"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr "Ayarlamak için yukarıdaki açılan kutudan bir eklenti seçin."
#: ../js/extensionPrefs/main.js:157
msgid "GNOME Shell Extensions"
msgstr "GNOME Kabuğu Uzantıları"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@ -334,25 +279,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Giriş"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:269
msgid "Choose Session"
msgstr "Oturum Seçin"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:429
msgid "Not listed?"
msgstr "Listede yok mu?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Kullanıcı Adı: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:922
msgid "Login Window"
msgstr "Oturum Açma Penceresi"
@ -402,7 +347,6 @@ msgid "Add to Favorites"
msgstr "Sık Kullanılanlara Ekle"
#: ../js/ui/appDisplay.js:1608
#| msgid "Show Text"
msgid "Show Details"
msgstr "Ayrıntıları Göster"
@ -541,11 +485,11 @@ msgctxt "list saturday"
msgid "S"
msgstr "Ct"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:454
msgid "Previous month"
msgstr "Önceki ay"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:464
msgid "Next month"
msgstr "Gelecek ay"
@ -554,13 +498,15 @@ msgstr "Gelecek ay"
msgid "Nothing Scheduled"
msgstr "Planınız Boş"
#. 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:793
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#. Translators: Shown on calendar heading when selected day occurs on
#. different year */
#: ../js/ui/calendar.js:796
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
@ -649,9 +595,7 @@ msgstr "Kablosuz ağ için kimlik doğrulama gerekiyor"
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr ""
"“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları "
"gerekiyor."
msgstr "“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları gerekiyor."
#: ../js/ui/components/networkAgent.js:316
msgid "Wired 802.1X authentication"
@ -731,77 +675,78 @@ msgid "Mute"
msgstr "Sesi Kapat"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:957
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:964
msgid "Yesterday, %H%M"
msgstr "Dün, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:971
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:978
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:984
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:990
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:997
msgid "Yesterday, %l%M %p"
msgstr "Dün, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1004
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1011
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1017
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. Translators: this is the other person changing their old IM name to their
#. new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1049
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s, şimdi %s olarak biliniyor"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1153
#, javascript-format
msgid "Invitation to %s"
msgstr "%s'e Davet"
@ -809,38 +754,38 @@ msgstr "%s'e Davet"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1161
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Reddet"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Kabul Et"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1188
#, javascript-format
msgid "Video call from %s"
msgstr "%s'den görüntülü arama"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1191
#, javascript-format
msgid "Call from %s"
msgstr "%s'den çağrı"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1205
msgid "Answer"
msgstr "Cevapla"
@ -849,133 +794,129 @@ msgstr "Cevapla"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1226
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s, size %s dosyasını gönderiyor"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1255
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Ağ hatası"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Kimlik doğrulama başarısız"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Şifreleme hatası"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Sertifika sağlanmamış"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Sertifika güvenilmez"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Sertifikanın süresi dolmuş"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Sertifika etkinleştirilmemiş"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Sertifikanın makine adı uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Sertifikanın parmak izi uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Sertifika kendinden-imzalı"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "Durum çevrimdıına ayarlı"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Şifreleme kullanılabilir değil"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "Sertifika geçersiz"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "Bağlantı reddedildi"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "Bağlantı kurulamıyor"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Bağlantı koptu"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Bu hesap zaten sunucuya bağlı"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "Sunucuda böyle bir hesap zaten var"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Sertifika hükümsüz kılınmış"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik "
"olarak zayıf"
msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin "
"derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
"The length of the server certificate, or the depth of the server certificate"
" chain, exceed the limits imposed by the cryptography library"
msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "İç hata"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "%s bağlantısı sağlanamadı"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Hesabı göster"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Bilinmeyen sebep"
@ -1004,7 +945,8 @@ msgid "Date & Time Settings"
msgstr "Tarih ve Saat Ayarları"
#. 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:205
msgid "%A %B %e, %Y"
@ -1087,12 +1029,11 @@ msgstr "Yeniden Başlat ve Güncelleştirmeleri Kur"
#: ../js/ui/endSessionDialog.js:123
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid ""
"The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] ""
"Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve "
"güncelleştirmeleri kuracak."
msgstr[0] "Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve güncelleştirmeleri kuracak."
#: ../js/ui/endSessionDialog.js:129
msgctxt "button"
@ -1111,8 +1052,7 @@ msgstr "Güncelleştirmeler kurulduktan sonra kapat"
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
msgstr "Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
#: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work."
@ -1143,7 +1083,7 @@ msgstr "Kur"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
msgid "Keyboard"
msgstr "Klavye"
@ -1276,7 +1216,7 @@ msgstr "Etkinlikler"
msgid "Top Bar"
msgstr "Tepe Çubuğu"
#: ../js/ui/popupMenu.js:271
#: ../js/ui/popupMenu.js:279
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1284,7 +1224,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Komut Girin"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
msgid "Close"
msgstr "Kapat"
@ -1421,7 +1361,7 @@ msgstr "Bağlı Değil"
msgid "Brightness"
msgstr "Parlaklık"
#: ../js/ui/status/keyboard.js:403
#: ../js/ui/status/keyboard.js:407
msgid "Show Keyboard Layout"
msgstr "Klavye Düzenini Göster"
@ -1454,15 +1394,14 @@ msgstr "Kapalı"
msgid "Connected"
msgstr "Bağlı"
#. Translators: this is for network devices that are physically present but are not
#. Translators: this is for network devices that are physically present but
#. are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:426
#| msgid "unmanaged"
msgid "Unmanaged"
msgstr "Yönetilmeyen"
#: ../js/ui/status/network.js:428
#| msgid "disconnecting..."
msgid "Disconnecting"
msgstr "Bağlantı Kesiliyor"
@ -1470,23 +1409,23 @@ msgstr "Bağlantı Kesiliyor"
msgid "Connecting"
msgstr "Bağlantı Kuruluyor"
#. 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:437
#| msgid "authentication required"
msgid "Authentication required"
msgstr "Kimlik doğrulama gerekir"
#. 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 */
#: ../js/ui/status/network.js:445
#| msgid "firmware missing"
msgid "Firmware missing"
msgstr "Ürün Bilgisi eksik"
#. 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 */
#: ../js/ui/status/network.js:449
#| msgid "unavailable"
msgid "Unavailable"
msgstr "Kullanılamaz"
@ -1570,7 +1509,8 @@ msgstr "Hotspot Etkin"
msgid "connecting..."
msgstr "bağlanıyor..."
#. 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:1365
msgid "authentication required"
msgstr "kimlik doğrulaması gerekli"
@ -1711,43 +1651,43 @@ msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Ayarlardaki değişiklikler %d saniye içinde eski haline döndürülecek"
#: ../js/ui/windowMenu.js:33
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr ""
msgstr "Simge durumuna küçült"
#: ../js/ui/windowMenu.js:40
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr ""
msgstr "Önceki Boyut"
#: ../js/ui/windowMenu.js:44
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr ""
msgstr "En üst düzeye çıkar"
#: ../js/ui/windowMenu.js:51
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Taşı"
#: ../js/ui/windowMenu.js:57
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Yeniden Boyutlandır"
#: ../js/ui/windowMenu.js:64
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Başlık Çubuğunu Ekranda Taşı"
#: ../js/ui/windowMenu.js:69
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Her Zaman Üstte"
#: ../js/ui/windowMenu.js:86
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Her Zaman Görünür Çalışma Alanında"
#: ../js/ui/windowMenu.js:103
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Üstteki Çalışma Alanına Taşı"
#: ../js/ui/windowMenu.js:108
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Alttaki Çalışma Alanına Taşı"
@ -1807,72 +1747,3 @@ msgstr "Parola boş bırakılamaz"
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
#~ msgid "calendar:MY"
#~ msgstr "takvim:AY"
#~ msgid "List of categories that should be displayed as folders"
#~ msgstr "Klasör olarak görüntülenecek kategorilerin listesi"
#~ msgid ""
#~ "Each category name in this list will be represented as folder in the "
#~ "application view, rather than being displayed inline in the main view."
#~ msgstr ""
#~ "Bu listedeki her bir kategori adı, genel görünümde satıriçi olarak "
#~ "gösterilmek yerine, uygulama görünümünde klasör olarak temsil edilecektir."
#~ msgid "<b>%A</b>, <b>%H:%M</b>"
#~ msgstr "<b>%A</b>,<b>%H:%M</b>"
#~ msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
#~ msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>"
#~ msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
#~ msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
#~ msgid "Authorization request from %s"
#~ msgstr "%s 'den yetkilendirme isteği"
#~ msgid "Device %s wants to pair with this computer"
#~ msgstr "%s aygıtı bu bilgisayarla eşleşmek istiyor"
#~ msgid "Allow"
#~ msgstr "İzin ver"
#~ msgid "Deny"
#~ msgstr "Reddet"
#~ msgid "Device %s wants access to the service '%s'"
#~ msgstr "%s aygıtı '%s' hizmetine erişmek istiyor"
#~ msgid "Always grant access"
#~ msgstr "Her zaman erişim izni ver"
#~ msgid "Grant this time only"
#~ msgstr "Sadece bu seferlik izin ver"
#~ msgid "Reject"
#~ msgstr "Reddet"
#~ msgid "Pairing confirmation for %s"
#~ msgstr "%s için eşleşme onayı"
#~ msgid ""
#~ "Please confirm whether the Passkey '%06d' matches the one on the device."
#~ msgstr ""
#~ "Lütfen '%06d' Geçiş Anahtarının, aygıttakiyle eşleştiğini doğrulayın."
#~ msgid "Matches"
#~ msgstr "Eşleşiyor"
#~ msgid "Does not match"
#~ msgstr "Eşleşmiyor"
#~ msgid "Pairing request for %s"
#~ msgstr "%s için eşleşme isteği"
#~ msgid "Please enter the PIN mentioned on the device."
#~ msgstr "Lütfen cihazdaki PIN numarasını girin."
#~ msgid "OK"
#~ msgstr "TAMAM"

View File

@ -320,7 +320,7 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
CLEANFILES += ShellMenu-0.1.gir
Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4
if HAVE_NETWORKMANAGER
Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
endif

View File

@ -78,6 +78,10 @@ static void gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
MetaWindowMenuType menu,
int x,
int y);
static void gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect);
static gboolean gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
XEvent *event);
@ -145,6 +149,7 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
plugin_class->show_tile_preview = gnome_shell_plugin_show_tile_preview;
plugin_class->hide_tile_preview = gnome_shell_plugin_hide_tile_preview;
plugin_class->show_window_menu = gnome_shell_plugin_show_window_menu;
plugin_class->show_window_menu_for_rect = gnome_shell_plugin_show_window_menu_for_rect;
plugin_class->xevent_filter = gnome_shell_plugin_xevent_filter;
plugin_class->keybinding_filter = gnome_shell_plugin_keybinding_filter;
@ -318,6 +323,15 @@ gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
_shell_wm_show_window_menu (get_shell_wm (), window, menu, x, y);
}
static void
gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect)
{
_shell_wm_show_window_menu_for_rect (get_shell_wm (), window, menu, rect);
}
static gboolean
gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
XEvent *xev)

View File

@ -778,7 +778,7 @@ emit_changed_accels (GtkActionMuxer *muxer,
/**
* gtk_action_muxer_set_parent:
* @muxer: a #GtkActionMuxer
* @parent: (allow-none): the new parent #GtkActionMuxer
* @parent: (nullable): the new parent #GtkActionMuxer
*
* Sets the parent of @muxer to @parent.
*/

View File

@ -34,6 +34,8 @@ extern GType gnome_shell_plugin_get_type (void);
#define SHELL_DBUS_SERVICE "org.gnome.Shell"
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
#define OVERRIDES_SCHEMA "org.gnome.shell.overrides"
#define WM_NAME "GNOME Shell"
#define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell"
@ -167,6 +169,26 @@ shell_dbus_init (gboolean replace)
g_object_unref (session);
}
static void
shell_prefs_init (void)
{
ShellGlobal *global = shell_global_get ();
GSettings *settings = shell_global_get_overrides_settings (global);
char **keys, **k, *schema_id;
if (!settings)
return;
g_object_get (G_OBJECT (settings), "schema-id", &schema_id, NULL);
keys = g_settings_list_keys (settings);
for (keys = k = g_settings_list_keys (settings); *k; k++)
meta_prefs_override_preference_schema (*k, schema_id);
g_strfreev (keys);
g_free (schema_id);
}
static void
shell_introspection_init (void)
{
@ -434,6 +456,8 @@ main (int argc, char **argv)
_shell_global_init ("session-mode", session_mode, NULL);
shell_prefs_init ();
ecode = meta_run ();
if (g_getenv ("GNOME_SHELL_ENABLE_CLEANUP"))

View File

@ -252,7 +252,7 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
/**
* shell_app_system_lookup_desktop_wmclass:
* @system: a #ShellAppSystem
* @wmclass: (allow-none): A WM_CLASS value
* @wmclass: (nullable): A WM_CLASS value
*
* Find a valid application whose .desktop file, without the extension
* and properly canonicalized, matches @wmclass.
@ -303,7 +303,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
/**
* shell_app_system_lookup_startup_wmclass:
* @system: a #ShellAppSystem
* @wmclass: (allow-none): A WM_CLASS value
* @wmclass: (nullable): A WM_CLASS value
*
* Find a valid application whose .desktop file contains a
* StartupWMClass entry matching @wmclass.

View File

@ -516,7 +516,7 @@ find_most_recent_transient_on_same_workspace (MetaDisplay *display,
/**
* shell_app_activate_window:
* @app: a #ShellApp
* @window: (allow-none): Window to be focused
* @window: (nullable): Window to be focused
* @timestamp: Event timestamp
*
* Bring all windows for the given app to the foreground,

View File

@ -34,7 +34,6 @@
#endif
#ifdef __OpenBSD__
#include <sys/param.h>
#include <sys/sysctl.h>
#endif
@ -1156,28 +1155,19 @@ shell_global_reexec_self (ShellGlobal *global)
{
GPtrArray *arr;
gsize len;
#if defined __linux__
char *buf;
char *buf_p;
char *buf_end;
GError *error = NULL;
#if defined __linux__
if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error))
{
g_warning ("failed to get /proc/self/cmdline: %s", error->message);
return;
}
#elif defined __OpenBSD__
int pid = getpid();
int mib[] = { CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV };
if (sysctl(mib, G_N_ELEMENTS (mib), &buf, &len, NULL, 0) == -1) {
g_warning ("failed to get command line args: %d", errno);
return;
}
#else
return;
#endif
buf_end = buf+len;
arr = g_ptr_array_new ();
/* The cmdline file is NUL-separated */
@ -1185,6 +1175,30 @@ shell_global_reexec_self (ShellGlobal *global)
g_ptr_array_add (arr, buf_p);
g_ptr_array_add (arr, NULL);
#elif defined __OpenBSD__
gchar **args, **args_p;
gint mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV };
if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1)
return;
args = g_malloc0 (len);
if (sysctl (mib, G_N_ELEMENTS (mib), args, &len, NULL, 0) == -1) {
g_warning ("failed to get command line args: %d", errno);
g_free (args);
return;
}
arr = g_ptr_array_new ();
for (args_p = args; *args_p != NULL; args_p++) {
g_ptr_array_add (arr, *args_p);
}
g_ptr_array_add (arr, NULL);
#else
return;
#endif
/* Close all file descriptors other than stdin/stdout/stderr, otherwise
* they will leak and stay open after the exec. In particular, this is
@ -1200,6 +1214,11 @@ shell_global_reexec_self (ShellGlobal *global)
execvp (arr->pdata[0], (char**)arr->pdata);
g_warning ("failed to reexec: %s", g_strerror (errno));
g_ptr_array_free (arr, TRUE);
#if defined __linux__
g_free (buf);
#elif defined __OpenBSD__
g_free (args);
#endif
}
/**
@ -1336,6 +1355,37 @@ shell_global_get_settings (ShellGlobal *global)
return global->settings;
}
/**
* shell_global_get_overrides_settings:
* @global: A #ShellGlobal
*
* Get the session overrides GSettings instance.
*
* Return value: (transfer none): The GSettings object
*/
GSettings *
shell_global_get_overrides_settings (ShellGlobal *global)
{
static GSettings *settings = NULL;
const char *schema;
g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL);
if (!settings)
{
if (strcmp (global->session_mode, "classic") == 0)
schema = "org.gnome.shell.extensions.classic-overrides";
else if (strcmp (global->session_mode, "user") == 0)
schema = "org.gnome.shell.overrides";
else
return NULL;
settings = g_settings_new (schema);
}
return settings;
}
/**
* shell_global_get_current_time:
* @global: A #ShellGlobal
@ -1583,7 +1633,7 @@ build_ca_proplist_for_event (ca_proplist *props,
* @global: the #ShellGlobal
* @id: an id, used to cancel later (0 if not needed)
* @name: the sound name
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
*
* Plays a simple sound picked according to Freedesktop sound theme.
* Really just a workaround for libcanberra not being introspected.
@ -1611,7 +1661,7 @@ shell_global_play_theme_sound (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @name: the sound name
* @description: the localized description of the event that triggered this alert
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @application_id: application on behalf of which the sound is played
* @application_name:
*
@ -1645,7 +1695,7 @@ shell_global_play_theme_sound_full (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @file_name: the file name to play
* @description: the localized description of the event that triggered this alert
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @application_id: application on behalf of which the sound is played
* @application_name:
*
@ -1679,7 +1729,7 @@ shell_global_play_sound_file_full (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @file_name: the file name to play
* @description: the localized description of the event that triggered this alert
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
*
* Like shell_global_play_theme_sound(), but with an explicit path
* instead of a themed sound.
@ -1840,7 +1890,7 @@ load_variant (GFile *dir,
* shell_global_set_runtime_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (allow-none): A #GVariant, or %NULL to unset
* @variant: (nullable): A #GVariant, or %NULL to unset
*
* Change the value of serialized runtime state.
*/
@ -1875,7 +1925,7 @@ shell_global_get_runtime_state (ShellGlobal *global,
* shell_global_set_persistent_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (allow-none): A #GVariant, or %NULL to unset
* @variant: (nullable): A #GVariant, or %NULL to unset
*
* Change the value of serialized persistent state.
*/

View File

@ -35,6 +35,7 @@ GdkScreen *shell_global_get_gdk_screen (ShellGlobal *global);
MetaDisplay *shell_global_get_display (ShellGlobal *global);
GList *shell_global_get_window_actors (ShellGlobal *global);
GSettings *shell_global_get_settings (ShellGlobal *global);
GSettings *shell_global_get_overrides_settings (ShellGlobal *global);
guint32 shell_global_get_current_time (ShellGlobal *global);

View File

@ -516,7 +516,7 @@ shell_keyring_prompt_new (void)
*
* Get the prompt password text actor
*
* Returns: (transfer none) (allow-none): the password actor
* Returns: (transfer none) (nullable): the password actor
*/
ClutterText *
shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
@ -531,7 +531,7 @@ shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
*
* Get the prompt password text actor
*
* Returns: (transfer none) (allow-none): the password actor
* Returns: (transfer none) (nullable): the password actor
*/
ClutterText *
shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self)
@ -616,7 +616,7 @@ on_password_changed (ClutterText *text,
/**
* shell_keyring_prompt_set_password_actor:
* @self: the internal prompt
* @password_actor: (allow-none): the password actor
* @password_actor: (nullable): the password actor
*
* Set the prompt password text actor
*/
@ -651,7 +651,7 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self,
/**
* shell_keyring_prompt_set_confirm_actor:
* @self: the internal prompt
* @confirm_actor: (allow-none): the confirm password actor
* @confirm_actor: (nullable): the confirm password actor
*
* Set the prompt password confirmation text actor
*/

View File

@ -64,7 +64,7 @@ shell_menu_tracker_remove_func (gint position,
* shell_menu_tracker_new:
* @observable:
* @model:
* @action_namespace: (allow-none):
* @action_namespace: (nullable):
* @insert_func:
* @insert_user_data:
* @insert_notify:

View File

@ -1629,7 +1629,7 @@ shell_recorder_set_draw_cursor (ShellRecorder *recorder,
/**
* shell_recorder_set_pipeline:
* @recorder: the #ShellRecorder
* @pipeline: (allow-none): the GStreamer pipeline used to encode recordings
* @pipeline: (nullable): the GStreamer pipeline used to encode recordings
* or %NULL for the default value.
*
* Sets the GStreamer pipeline used to encode recordings.
@ -1681,7 +1681,7 @@ shell_recorder_set_area (ShellRecorder *recorder,
/**
* shell_recorder_record:
* @recorder: the #ShellRecorder
* @filename_used: (out) (allow-none): actual filename used for recording
* @filename_used: (out) (optional): actual filename used for recording
*
* Starts recording, Starting the recording may fail if the output file
* cannot be opened, or if the output stream cannot be created

View File

@ -21,10 +21,6 @@ struct _ShellTpClientPrivate
ShellTpClientHandleChannelsImpl handle_channels_impl;
gpointer user_data_handle_channels;
GDestroyNotify destroy_handle_channels;
ShellTpClientContactListChangedImpl contact_list_changed_impl;
gpointer user_data_contact_list_changed;
GDestroyNotify destroy_contact_list_changed;
};
/**
@ -35,7 +31,7 @@ struct _ShellTpClientPrivate
* if possible
* @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel,
* all having %TP_CHANNEL_FEATURE_CORE prepared if possible
* @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL;
* @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL;
* the dispatch_operation is not guaranteed to be prepared
* @requests: (element-type TelepathyGLib.ChannelRequest): a #GList of
* #TpChannelRequest, all having their object-path defined but are not
@ -54,7 +50,7 @@ struct _ShellTpClientPrivate
* if possible
* @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel,
* all having %TP_CHANNEL_FEATURE_CORE prepared if possible
* @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL;
* @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL;
* the dispatch_operation is not guaranteed to be prepared
* @context: a #TpAddDispatchOperationContext representing the context of this
* D-Bus call
@ -83,16 +79,6 @@ struct _ShellTpClientPrivate
* Signature of the implementation of the HandleChannels method.
*/
/**
* ShellTpClientContactListChangedImpl:
* @connection: a #TpConnection having %TP_CONNECTION_FEATURE_CORE prepared
* if possible
* @added: (element-type TelepathyGLib.Contact): a #GPtrArray of added #TpContact
* @removed: (element-type TelepathyGLib.Contact): a #GPtrArray of removed #TpContact
*
* Signature of the implementation of the ContactListChanged method.
*/
static void
shell_tp_client_init (ShellTpClient *self)
{
@ -226,13 +212,6 @@ shell_tp_client_dispose (GObject *object)
self->priv->user_data_handle_channels = NULL;
}
if (self->priv->destroy_contact_list_changed != NULL)
{
self->priv->destroy_contact_list_changed (self->priv->user_data_contact_list_changed);
self->priv->destroy_contact_list_changed = NULL;
self->priv->user_data_contact_list_changed = NULL;
}
if (dispose != NULL)
dispose (object);
}
@ -290,40 +269,3 @@ shell_tp_client_set_handle_channels_func (ShellTpClient *self,
self->priv->user_data_handle_channels = user_data;
self->priv->destroy_handle_channels = destroy;
}
void
shell_tp_client_set_contact_list_changed_func (ShellTpClient *self,
ShellTpClientContactListChangedImpl contact_list_changed_impl,
gpointer user_data,
GDestroyNotify destroy)
{
g_assert (self->priv->contact_list_changed_impl == NULL);
self->priv->contact_list_changed_impl = contact_list_changed_impl;
self->priv->user_data_handle_channels = user_data;
self->priv->destroy_handle_channels = destroy;
}
static void
on_contact_list_changed (TpConnection *conn,
GPtrArray *added,
GPtrArray *removed,
gpointer user_data)
{
ShellTpClient *self = (ShellTpClient *) user_data;
g_assert (self->priv->contact_list_changed_impl != NULL);
self->priv->contact_list_changed_impl (conn,
added, removed,
self->priv->user_data_contact_list_changed);
}
void
shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
TpConnection *conn)
{
g_signal_connect (conn, "contact-list-changed",
G_CALLBACK (on_contact_list_changed),
self);
}

View File

@ -86,19 +86,5 @@ void shell_tp_client_set_handle_channels_func (ShellTpClient *self,
gpointer user_data,
GDestroyNotify destroy);
typedef void (*ShellTpClientContactListChangedImpl) (
TpConnection *connection,
GPtrArray *added,
GPtrArray *removed,
gpointer user_data);
void shell_tp_client_set_contact_list_changed_func (ShellTpClient *self,
ShellTpClientContactListChangedImpl contact_list_changed_impl,
gpointer user_data,
GDestroyNotify destroy);
void shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
TpConnection *conn);
G_END_DECLS
#endif /* __SHELL_TP_CLIENT_H__ */

View File

@ -45,6 +45,10 @@ void _shell_wm_show_window_menu (ShellWM *wm,
MetaWindowMenuType menu,
int x,
int y);
void _shell_wm_show_window_menu_for_rect (ShellWM *wm,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect);
gboolean _shell_wm_filter_keybinding (ShellWM *wm,
MetaKeyBinding *binding);

View File

@ -141,8 +141,8 @@ shell_wm_class_init (ShellWMClass *klass)
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, NULL, NULL, NULL,
G_TYPE_NONE, 4,
META_TYPE_WINDOW, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
G_TYPE_NONE, 3,
META_TYPE_WINDOW, G_TYPE_INT, META_TYPE_RECTANGLE);
shell_wm_signals[FILTER_KEYBINDING] =
g_signal_new ("filter-keybinding",
G_TYPE_FROM_CLASS (klass),
@ -303,7 +303,22 @@ _shell_wm_show_window_menu (ShellWM *wm,
int x,
int y)
{
g_signal_emit (wm, shell_wm_signals[SHOW_WINDOW_MENU], 0, window, menu, x, y);
MetaRectangle rect;
rect.x = x;
rect.y = y;
rect.width = rect.height = 0;
_shell_wm_show_window_menu_for_rect (wm, window, menu, &rect);
}
void
_shell_wm_show_window_menu_for_rect (ShellWM *wm,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect)
{
g_signal_emit (wm, shell_wm_signals[SHOW_WINDOW_MENU], 0, window, menu, rect);
}
void

View File

@ -414,7 +414,7 @@ st_bin_new (void)
/**
* st_bin_set_child:
* @bin: a #StBin
* @child: (allow-none): a #ClutterActor, or %NULL
* @child: (nullable): a #ClutterActor, or %NULL
*
* Sets @child as the child of @bin.
*

View File

@ -908,7 +908,7 @@ st_entry_get_text (StEntry *entry)
/**
* st_entry_set_text:
* @entry: a #StEntry
* @text: (allow-none): text to set the entry to
* @text: (nullable): text to set the entry to
*
* Sets the text displayed on the entry
*/
@ -963,7 +963,7 @@ st_entry_get_clutter_text (StEntry *entry)
/**
* st_entry_set_hint_text:
* @entry: a #StEntry
* @text: (allow-none): text to set as the entry hint
* @text: (nullable): text to set as the entry hint
*
* Sets the text to display when the entry is empty and unfocused. When the
* entry is displaying the hint, it has a pseudo class of "indeterminate".
@ -1136,7 +1136,7 @@ _st_entry_set_icon (StEntry *entry,
/**
* st_entry_set_primary_icon:
* @entry: a #StEntry
* @icon: (allow-none): a #ClutterActor
* @icon: (nullable): a #ClutterActor
*
* Set the primary icon of the entry to @icon
*/
@ -1156,7 +1156,7 @@ st_entry_set_primary_icon (StEntry *entry,
/**
* st_entry_set_secondary_icon:
* @entry: a #StEntry
* @icon: (allow-none): an #ClutterActor
* @icon: (nullable): an #ClutterActor
*
* Set the secondary icon of the entry to @icon
*/

View File

@ -532,7 +532,7 @@ st_icon_get_gicon (StIcon *icon)
/**
* st_icon_set_gicon:
* @icon: an icon
* @gicon: (allow-none): a #GIcon to override :icon-name
* @gicon: (nullable): a #GIcon to override :icon-name
*/
void
st_icon_set_gicon (StIcon *icon, GIcon *gicon)

View File

@ -131,8 +131,8 @@ st_scrollable_set_adjustments (StScrollable *scrollable,
/**
* st_scroll_bar_get_adjustments:
* @hadjustment: (transfer none) (out) (allow-none): location to store the horizontal adjustment, or %NULL
* @vadjustment: (transfer none) (out) (allow-none): location to store the vertical adjustment, or %NULL
* @hadjustment: (transfer none) (out) (optional) (nullable): location to store the horizontal adjustment, or %NULL
* @vadjustment: (transfer none) (out) (optional) (nullable): location to store the vertical adjustment, or %NULL
*
* Gets the adjustment objects that store the offsets of the scrollable widget
* into its possible scrolling area.

View File

@ -1022,7 +1022,7 @@ load_gicon_with_colors (StTextureCache *cache,
/**
* st_texture_cache_load_gicon:
* @cache: The texture cache instance
* @theme_node: (allow-none): The #StThemeNode to use for colors, or NULL
* @theme_node: (nullable): The #StThemeNode to use for colors, or NULL
* if the icon must not be recolored
* @icon: the #GIcon to load
* @size: Size of themed
@ -1235,7 +1235,7 @@ load_sliced_image (GSimpleAsyncResult *result,
* @grid_width: Width in pixels
* @grid_height: Height in pixels
* @scale: Scale factor of the display
* @load_callback: (scope async) (allow-none): Function called when the image is loaded, or %NULL
* @load_callback: (scope async) (nullable): Function called when the image is loaded, or %NULL
* @user_data: Data to pass to the load callback
*
* This function reads a single image file which contains multiple images internally.

View File

@ -204,17 +204,17 @@ split_on_whitespace (const gchar *s)
/**
* st_theme_node_new:
* @context: the context representing global state for this themed tree
* @parent_node: (allow-none): the parent node of this node
* @theme: (allow-none): a theme (stylesheet set) that overrides the
* @parent_node: (nullable): the parent node of this node
* @theme: (nullable): a theme (stylesheet set) that overrides the
* theme inherited from the parent node
* @element_type: the type of the GObject represented by this node
* in the tree (corresponding to an element if we were theming an XML
* document. %G_TYPE_NONE means this style was created for the stage
* actor and matches a selector element name of 'stage'.
* @element_id: (allow-none): the ID to match CSS rules against
* @element_class: (allow-none): a whitespace-separated list of classes
* @element_id: (nullable): the ID to match CSS rules against
* @element_class: (nullable): a whitespace-separated list of classes
* to match CSS rules against
* @pseudo_class: (allow-none): a whitespace-separated list of pseudo-classes
* @pseudo_class: (nullable): a whitespace-separated list of pseudo-classes
* (like 'hover' or 'visited') to match CSS rules against
*
* Creates a new #StThemeNode. Once created, a node is immutable. Of any
@ -3536,7 +3536,7 @@ st_theme_node_adjust_for_height (StThemeNode *node,
/**
* st_theme_node_adjust_preferred_width:
* @node: a #StThemeNode
* @min_width_p: (inout) (allow-none): the minimum width to adjust
* @min_width_p: (inout) (nullable): the minimum width to adjust
* @natural_width_p: (inout): the natural width to adjust
*
* Adjusts the minimum and natural width computed for an actor by
@ -3603,7 +3603,7 @@ st_theme_node_adjust_for_width (StThemeNode *node,
/**
* st_theme_node_adjust_preferred_height:
* @node: a #StThemeNode
* @min_height_p: (inout) (allow-none): the minimum height to adjust
* @min_height_p: (inout) (nullable): the minimum height to adjust
* @natural_height_p: (inout): the natural height to adjust
*
* Adjusts the minimum and natural height computed for an actor by
@ -3815,8 +3815,8 @@ st_theme_node_geometry_equal (StThemeNode *node,
/**
* st_theme_node_paint_equal:
* @node: (allow-none): a #StThemeNode
* @other: (allow-none): a different #StThemeNode
* @node: (nullable): a #StThemeNode
* @other: (nullable): a different #StThemeNode
*
* Check if st_theme_node_paint() will paint identically for @node as it does
* for @other. Note that in some cases this function may return %TRUE even

View File

@ -1173,7 +1173,7 @@ remove_class_name (gchar **class_list,
/**
* st_widget_set_style_class_name:
* @actor: a #StWidget
* @style_class_list: (allow-none): a new style class list string
* @style_class_list: (nullable): a new style class list string
*
* Set the style class name list. @style_class_list can either be
* %NULL, for no classes, or a space-separated list of style class
@ -1316,7 +1316,7 @@ st_widget_has_style_pseudo_class (StWidget *actor,
/**
* st_widget_set_style_pseudo_class:
* @actor: a #StWidget
* @pseudo_class_list: (allow-none): a new pseudo class list string
* @pseudo_class_list: (nullable): a new pseudo class list string
*
* Set the style pseudo class list. @pseudo_class_list can either be
* %NULL, for no classes, or a space-separated list of pseudo class
@ -1382,7 +1382,7 @@ st_widget_remove_style_pseudo_class (StWidget *actor,
/**
* st_widget_set_style:
* @actor: a #StWidget
* @style: (allow-none): a inline style string, or %NULL
* @style: (nullable): a inline style string, or %NULL
*
* Set the inline style string for this widget. The inline style string is an
* optional ';'-separated list of CSS properties that override the style as
@ -2051,7 +2051,7 @@ st_widget_real_navigate_focus (StWidget *widget,
/**
* st_widget_navigate_focus:
* @widget: the "top level" container
* @from: (allow-none): the actor that the focus is coming from
* @from: (nullable): the actor that the focus is coming from
* @direction: the direction focus is moving in
* @wrap_around: whether focus should wrap around
*
@ -2270,7 +2270,7 @@ st_widget_set_label_actor (StWidget *widget,
/**
* st_widget_set_accessible_name:
* @widget: widget to set the accessible name for
* @name: (allow-none): a character string to be set as the accessible name
* @name: (nullable): a character string to be set as the accessible name
*
* This method sets @name as the accessible name for @widget.
*
@ -2845,8 +2845,8 @@ st_widget_get_focus_chain (StWidget *widget)
* st_get_align_factors:
* @x_align: an #StAlign
* @y_align: an #StAlign
* @x_align_out: (out) (allow-none): @x_align as a #gdouble
* @y_align_out: (out) (allow-none): @y_align as a #gdouble
* @x_align_out: (out) (optional): @x_align as a #gdouble
* @y_align_out: (out) (optional): @y_align as a #gdouble
*
* Converts @x_align and @y_align to #gdouble values.
*/

View File

@ -80,7 +80,7 @@ struct _StWidgetClass
/**
* StWidgetClass::navigate_focus:
* @self: the "top level" container
* @from: (allow-none): the actor that the focus is coming from
* @from: (nullable): the actor that the focus is coming from
* @direction: the direction focus is moving in
*/
gboolean (* navigate_focus) (StWidget *self,