Compare commits
32 Commits
wip/new-no
...
wip/notif-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
50395cded8 | ||
![]() |
e8ae8f75a0 | ||
![]() |
2b93bcf921 | ||
![]() |
a80b8f7791 | ||
![]() |
62c6563a3a | ||
![]() |
c22068d288 | ||
![]() |
d519a0a181 | ||
![]() |
ef1ab043a3 | ||
![]() |
fa350bf41e | ||
![]() |
ae74dbd1bb | ||
![]() |
afa5a871b3 | ||
![]() |
e13c0ca9e8 | ||
![]() |
f29d1beb3e | ||
![]() |
751a1b5bbe | ||
![]() |
00a32f53f5 | ||
![]() |
94688d354f | ||
![]() |
7f17acd0ea | ||
![]() |
8c74a4fee0 | ||
![]() |
234b90ac86 | ||
![]() |
ce46b06f36 | ||
![]() |
585930123d | ||
![]() |
5d00c1a5ee | ||
![]() |
f288c43e6e | ||
![]() |
b981a591c7 | ||
![]() |
3b7756b610 | ||
![]() |
292f87caf7 | ||
![]() |
ae2751a68b | ||
![]() |
589becbc79 | ||
![]() |
4c7fcf272c | ||
![]() |
e51aecee03 | ||
![]() |
d98e7dbd4a | ||
![]() |
1b97778925 |
@@ -1,5 +1,4 @@
|
|||||||
[org.gnome.shell.overrides]
|
[org.gnome.shell.overrides]
|
||||||
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
|
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
|
edge-tiling = /desktop/gnome/shell/windows/edge_tiling
|
||||||
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary
|
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary
|
||||||
|
@@ -414,10 +414,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
/* Buttons */
|
/* Buttons */
|
||||||
|
|
||||||
.candidate-page-button,
|
.candidate-page-button,
|
||||||
.notification-button,
|
|
||||||
.notification-icon-button,
|
|
||||||
.hotplug-notification-item,
|
.hotplug-notification-item,
|
||||||
.hotplug-resident-eject-button,
|
|
||||||
.modal-dialog-button,
|
.modal-dialog-button,
|
||||||
.app-view-control {
|
.app-view-control {
|
||||||
border: 1px solid #8b8b8b;
|
border: 1px solid #8b8b8b;
|
||||||
@@ -431,17 +428,12 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.candidate-page-button:hover,
|
.candidate-page-button:hover,
|
||||||
.notification-button:hover,
|
|
||||||
.notification-icon-button:hover,
|
|
||||||
.hotplug-notification-item:hover,
|
.hotplug-notification-item:hover,
|
||||||
.hotplug-resident-eject-button:hover,
|
|
||||||
.modal-dialog-button:hover {
|
.modal-dialog-button:hover {
|
||||||
background-gradient-start: rgba(255, 255, 255, 0.3);
|
background-gradient-start: rgba(255, 255, 255, 0.3);
|
||||||
background-gradient-end: rgba(255, 255, 255, 0.1);
|
background-gradient-end: rgba(255, 255, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-button:focus,
|
|
||||||
.notification-icon-button:focus,
|
|
||||||
.hotplug-notification-item:focus,
|
.hotplug-notification-item:focus,
|
||||||
.modal-dialog-button:focus,
|
.modal-dialog-button:focus,
|
||||||
.app-view-control:focus {
|
.app-view-control:focus {
|
||||||
@@ -455,10 +447,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
|
|
||||||
.candidate-page-button:active,
|
.candidate-page-button:active,
|
||||||
.candidate-page-button:pressed,
|
.candidate-page-button:pressed,
|
||||||
.notification-button:active,
|
|
||||||
.notification-icon-button:active,
|
|
||||||
.hotplug-notification-item:active,
|
.hotplug-notification-item:active,
|
||||||
.hotplug-resident-eject-button:active,
|
|
||||||
.modal-dialog-button:active,
|
.modal-dialog-button:active,
|
||||||
.modal-dialog-button:pressed,
|
.modal-dialog-button:pressed,
|
||||||
.app-view-control:checked {
|
.app-view-control:checked {
|
||||||
@@ -467,8 +456,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.candidate-page-button:insensitive,
|
.candidate-page-button:insensitive,
|
||||||
.notification-button:insensitive,
|
|
||||||
.notification-icon-button:insensitive,
|
|
||||||
.modal-dialog-button:insensitive {
|
.modal-dialog-button:insensitive {
|
||||||
border-color: #666666;
|
border-color: #666666;
|
||||||
color: #9f9f9f;
|
color: #9f9f9f;
|
||||||
@@ -480,7 +467,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
|
|
||||||
#searchEntry,
|
#searchEntry,
|
||||||
.modal-dialog-button,
|
.modal-dialog-button,
|
||||||
.notification-button,
|
|
||||||
.hotplug-notification-item,
|
.hotplug-notification-item,
|
||||||
.app-view-controls,
|
.app-view-controls,
|
||||||
#screenShieldNotifications {
|
#screenShieldNotifications {
|
||||||
@@ -1511,99 +1497,65 @@ StScrollBar StButton#vhandle:active {
|
|||||||
height: 72px;
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.url-highlighter {
|
.url-highlighter {
|
||||||
link-color: #ccccff;
|
link-color: #ccccff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-messages-label {
|
|
||||||
color: #999999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification, #notification-container {
|
.notification, #notification-container {
|
||||||
font-size: 11pt;
|
font-size: 11pt;
|
||||||
width: 34em;
|
width: 34em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification.multi-line-notification {
|
.notification-main-button,
|
||||||
padding-bottom: 8px;
|
.notification-button {
|
||||||
|
background: rgba(0,0,0,0.9);
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-unexpanded {
|
.notification-main-button {
|
||||||
/* We want to force the actor at a specific size, irrespective
|
border-radius: 10px 10px 0px 0px;
|
||||||
of its minimum and preferred size, so we override both */
|
|
||||||
min-height: 36px;
|
|
||||||
height: 36px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We use row-span = 2 for the image cell, which prevents its height preferences to be
|
.notification-main-content {
|
||||||
taken into account during allocation, so its height ends up being limited by the height
|
padding: 8px;
|
||||||
of the content in the other rows. To avoid showing a stretched image, we set the minimum
|
spacing: 8px;
|
||||||
height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */
|
|
||||||
.notification-with-image {
|
|
||||||
min-height: 159px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer {
|
.notification-close-button {
|
||||||
-arrow-border-radius: 15px;
|
padding: 8px;
|
||||||
-arrow-background-color: rgba(0,0,0,0.9);
|
border-radius: 4px;
|
||||||
-arrow-base: 36px;
|
|
||||||
-arrow-rise: 18px;
|
|
||||||
color: white;
|
|
||||||
-boxpointer-gap: 4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer .notification {
|
.notification-action-area {
|
||||||
border-radius: 9px;
|
padding: 8px;
|
||||||
background: rgba(0,0,0,0) !important;
|
|
||||||
padding-bottom: 12px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer #summary-right-click-menu {
|
.notification-action-area,
|
||||||
padding-top: 12px;
|
.notification-button {
|
||||||
padding-bottom: 12px;
|
border-top: 1px solid #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-notification-stack-scrollview {
|
.notification-button {
|
||||||
max-height: 18em;
|
padding: 8px 0px;
|
||||||
padding-top: 8px;
|
border-right: 1px solid #666;
|
||||||
padding-bottom: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-notification-stack-scrollview:ltr {
|
.notification-main-button:hover,
|
||||||
padding-right: 8px;
|
.notification-button:hover,
|
||||||
|
.notification-close-button:hover {
|
||||||
|
background: rgba(100,100,100,0.9);
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-notification-stack-scrollview:rtl {
|
.notification-main-button:active,
|
||||||
padding-left: 8px;
|
.notification-button:active {
|
||||||
|
background: rgba(255,255,255,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-scrollview {
|
.notification-button:last-child {
|
||||||
max-height: 10em;
|
border-right-width: 0px;
|
||||||
-st-vfade-offset: 24px;
|
}
|
||||||
|
|
||||||
|
.notification-title-box {
|
||||||
|
spacing: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-scrollview:ltr > StScrollBar {
|
.notification-scrollview:ltr > StScrollBar {
|
||||||
@@ -1614,37 +1566,9 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-right: 6px;
|
padding-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-body {
|
.notification-scrollview {
|
||||||
spacing: 5px;
|
max-height: 10em;
|
||||||
}
|
-st-vfade-offset: 24px;
|
||||||
|
|
||||||
.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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.secondary-icon {
|
.secondary-icon {
|
||||||
@@ -1669,45 +1593,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding: 2px 5px;
|
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 {
|
.chat-log-message {
|
||||||
color: #888888;
|
color: #888888;
|
||||||
}
|
}
|
||||||
@@ -1747,7 +1632,11 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-notification-scrollview{
|
.chat-notification-body-box {
|
||||||
|
spacing: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-notification-scrollview {
|
||||||
max-height: 22em;
|
max-height: 22em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2666,8 +2555,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#screenShieldNotifications .notification-button,
|
#screenShieldNotifications .notification-button {
|
||||||
#screenShieldNotifications .notification-icon-button {
|
|
||||||
border: 1px rgba(255,255,255,0.5);
|
border: 1px rgba(255,255,255,0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2703,3 +2591,7 @@ StScrollBar StButton#vhandle:active {
|
|||||||
-boxpointer-gap: 4px;
|
-boxpointer-gap: 4px;
|
||||||
-arrow-rise: 0px;
|
-arrow-rise: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top-bar-notification-preview {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
@@ -16,6 +16,7 @@ const Atk = imports.gi.Atk;
|
|||||||
const AppFavorites = imports.ui.appFavorites;
|
const AppFavorites = imports.ui.appFavorites;
|
||||||
const BoxPointer = imports.ui.boxpointer;
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
|
const GrabHelper = imports.ui.grabHelper;
|
||||||
const IconGrid = imports.ui.iconGrid;
|
const IconGrid = imports.ui.iconGrid;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Overview = imports.ui.overview;
|
const Overview = imports.ui.overview;
|
||||||
@@ -1249,18 +1250,7 @@ const AppFolderPopup = new Lang.Class({
|
|||||||
function() {
|
function() {
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
}));
|
}));
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
|
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
|
||||||
},
|
|
||||||
|
|
||||||
_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;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
toggle: function() {
|
toggle: function() {
|
||||||
@@ -1274,6 +1264,12 @@ const AppFolderPopup = new Lang.Class({
|
|||||||
if (this._isOpen)
|
if (this._isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this._isOpen = this._grabHelper.grab({ actor: this.actor,
|
||||||
|
onUngrab: Lang.bind(this, this.popdown) });
|
||||||
|
|
||||||
|
if (!this._isOpen)
|
||||||
|
return;
|
||||||
|
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
|
|
||||||
this._boxPointer.setArrowActor(this._source.actor);
|
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.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
|
|
||||||
this._isOpen = true;
|
|
||||||
this.emit('open-state-changed', true);
|
this.emit('open-state-changed', true);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1290,6 +1285,8 @@ const AppFolderPopup = new Lang.Class({
|
|||||||
if (!this._isOpen)
|
if (!this._isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this._grabHelper.ungrab({ actor: this.actor });
|
||||||
|
|
||||||
this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
|
this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
|
||||||
BoxPointer.PopupAnimation.SLIDE);
|
BoxPointer.PopupAnimation.SLIDE);
|
||||||
this._isOpen = false;
|
this._isOpen = false;
|
||||||
|
@@ -170,17 +170,6 @@ const AutorunManager = new Lang.Class({
|
|||||||
this._transDispatcher = new AutorunTransientDispatcher(this);
|
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() {
|
enable: function() {
|
||||||
this._scanMounts();
|
this._scanMounts();
|
||||||
|
|
||||||
@@ -189,17 +178,12 @@ const AutorunManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
disable: function() {
|
disable: function() {
|
||||||
if (this._residentSource)
|
|
||||||
this._residentSource.destroy();
|
|
||||||
this._volumeMonitor.disconnect(this._mountAddedId);
|
this._volumeMonitor.disconnect(this._mountAddedId);
|
||||||
this._volumeMonitor.disconnect(this._mountRemovedId);
|
this._volumeMonitor.disconnect(this._mountRemovedId);
|
||||||
},
|
},
|
||||||
|
|
||||||
_processMount: function(mount, hotplug) {
|
_processMount: function(mount, hotplug) {
|
||||||
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
|
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
|
||||||
this._ensureResidentSource();
|
|
||||||
this._residentSource.addMount(mount, apps);
|
|
||||||
|
|
||||||
if (hotplug)
|
if (hotplug)
|
||||||
this._transDispatcher.addMount(mount, apps, contentTypes);
|
this._transDispatcher.addMount(mount, apps, contentTypes);
|
||||||
}));
|
}));
|
||||||
@@ -224,8 +208,6 @@ const AutorunManager = new Lang.Class({
|
|||||||
|
|
||||||
_onMountRemoved: function(monitor, mount) {
|
_onMountRemoved: function(monitor, mount) {
|
||||||
this._transDispatcher.removeMount(mount);
|
this._transDispatcher.removeMount(mount);
|
||||||
if (this._residentSource)
|
|
||||||
this._residentSource.removeMount(mount);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
ejectMount: function(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({
|
const AutorunTransientDispatcher = new Lang.Class({
|
||||||
Name: 'AutorunTransientDispatcher',
|
Name: 'AutorunTransientDispatcher',
|
||||||
|
|
||||||
@@ -559,12 +394,12 @@ const AutorunTransientNotification = new Lang.Class({
|
|||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(manager, source) {
|
_init: function(manager, source) {
|
||||||
this.parent(source, source.title, null, { customContent: true });
|
this.parent(source, source.title);
|
||||||
|
|
||||||
this._manager = manager;
|
this._manager = manager;
|
||||||
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
|
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
this.addActor(this._box);
|
this._bodyBin.child = this._box;
|
||||||
|
|
||||||
this._mount = source.mount;
|
this._mount = source.mount;
|
||||||
|
|
||||||
@@ -581,7 +416,6 @@ const AutorunTransientNotification = new Lang.Class({
|
|||||||
|
|
||||||
// set the notification to transient and urgent, so that it
|
// set the notification to transient and urgent, so that it
|
||||||
// expands out
|
// expands out
|
||||||
this.setTransient(true);
|
|
||||||
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -102,15 +102,6 @@ const TelepathyClient = new Lang.Class({
|
|||||||
this._tpClient.set_handle_channels_func(
|
this._tpClient.set_handle_channels_func(
|
||||||
Lang.bind(this, this._handleChannels));
|
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
|
// Allow other clients (such as Empathy) to pre-empt our channels if
|
||||||
// needed
|
// needed
|
||||||
this._tpClient.set_delegated_channels_callback(
|
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);
|
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()))
|
if (!this._accountManager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
|
||||||
this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared));
|
this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared));
|
||||||
},
|
},
|
||||||
|
|
||||||
disable: function() {
|
disable: function() {
|
||||||
this._tpClient.unregister();
|
this._tpClient.unregister();
|
||||||
this._accountManager.disconnect(this._accountManagerValidityChangedId);
|
|
||||||
this._accountManagerValidityChangedId = 0;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_observeChannels: function(observer, account, conn, channels,
|
_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,
|
_approveChannels: function(approver, account, conn, channels,
|
||||||
dispatchOp, context) {
|
dispatchOp, context) {
|
||||||
let channel = channels[0];
|
let channel = channels[0];
|
||||||
@@ -259,10 +218,6 @@ const TelepathyClient = new Lang.Class({
|
|||||||
|
|
||||||
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
|
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
|
||||||
this._approveTextChannel(account, conn, channel, dispatchOp, context);
|
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
|
else
|
||||||
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
|
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
|
||||||
message: 'Unsupported channel type' }));
|
message: 'Unsupported channel type' }));
|
||||||
@@ -283,45 +238,9 @@ const TelepathyClient = new Lang.Class({
|
|||||||
}}));
|
}}));
|
||||||
|
|
||||||
context.accept();
|
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) {
|
_delegatedChannelsCb: function(client, channels) {
|
||||||
// Nothing to do as we don't make a distinction between observed and
|
// Nothing to do as we don't make a distinction between observed and
|
||||||
// handled channels.
|
// handled channels.
|
||||||
@@ -329,105 +248,7 @@ const TelepathyClient = new Lang.Class({
|
|||||||
|
|
||||||
_accountManagerPrepared: function(am, result) {
|
_accountManagerPrepared: function(am, result) {
|
||||||
am.prepare_finish(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({
|
const ChatSource = new Lang.Class({
|
||||||
@@ -545,7 +366,7 @@ const ChatSource = new Lang.Class({
|
|||||||
|
|
||||||
_updateAvatarIcon: function() {
|
_updateAvatarIcon: function() {
|
||||||
this.iconUpdated();
|
this.iconUpdated();
|
||||||
this._notification.update(this._notification.title, null, { customContent: true });
|
this._notification.update(this._notification.title);
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function() {
|
open: function() {
|
||||||
@@ -737,7 +558,7 @@ const ChatSource = new Lang.Class({
|
|||||||
|
|
||||||
title = GLib.markup_escape_text(this.title, -1);
|
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)
|
if (message)
|
||||||
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||||
@@ -764,8 +585,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
|
this.parent(source, source.title, null, { secondaryGIcon: source.getSecondaryIcon() });
|
||||||
this.setResident(true);
|
|
||||||
|
|
||||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||||
can_focus: true });
|
can_focus: true });
|
||||||
@@ -781,15 +601,17 @@ const ChatNotification = new Lang.Class({
|
|||||||
this.emit('unfocused');
|
this.emit('unfocused');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._createScrollArea();
|
|
||||||
this._lastGroup = null;
|
this._lastGroup = 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
|
// 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
|
// force a scroll to the bottom if things change while we were at the
|
||||||
// bottom
|
// bottom
|
||||||
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
|
this._oldMaxScrollValue = this._bodyScrollArea.vscroll.adjustment.value;
|
||||||
this._scrollArea.add_style_class_name('chat-notification-scrollview');
|
this._bodyScrollArea.add_style_class_name('chat-notification-scrollview');
|
||||||
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
this._bodyScrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||||
if (adjustment.value == this._oldMaxScrollValue)
|
if (adjustment.value == this._oldMaxScrollValue)
|
||||||
this.scrollTo(St.Side.BOTTOM);
|
this.scrollTo(St.Side.BOTTOM);
|
||||||
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
|
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
|
||||||
@@ -826,8 +648,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (message.direction == NotificationDirection.RECEIVED) {
|
if (message.direction == NotificationDirection.RECEIVED) {
|
||||||
this.update(this.source.title, messageBody, { customContent: true,
|
this.update(this.source.title, messageBody, { bannerMarkup: true });
|
||||||
bannerMarkup: true });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let group = (message.direction == NotificationDirection.RECEIVED ?
|
let group = (message.direction == NotificationDirection.RECEIVED ?
|
||||||
@@ -864,7 +685,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
expired[i].actor.destroy();
|
expired[i].actor.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
let groups = this._contentArea.get_children();
|
let groups = this._bodyBox.get_children();
|
||||||
for (let i = 0; i < groups.length; i++) {
|
for (let i = 0; i < groups.length; i++) {
|
||||||
let group = groups[i];
|
let group = groups[i];
|
||||||
if (group.get_n_children() == 0)
|
if (group.get_n_children() == 0)
|
||||||
@@ -896,9 +717,9 @@ const ChatNotification = new Lang.Class({
|
|||||||
if (this._timestampTimeoutId)
|
if (this._timestampTimeoutId)
|
||||||
Mainloop.source_remove(this._timestampTimeoutId);
|
Mainloop.source_remove(this._timestampTimeoutId);
|
||||||
|
|
||||||
let highlighter = new MessageTray.URLHighlighter(props.body,
|
let highlighter = new MessageTray.URLHighlighter();
|
||||||
true, // line wrap?
|
highlighter.actor.clutter_text.line_wrap = true;
|
||||||
true); // allow markup?
|
highlighter.setMarkup(props.body, true);
|
||||||
|
|
||||||
let body = highlighter.actor;
|
let body = highlighter.actor;
|
||||||
|
|
||||||
@@ -910,14 +731,12 @@ const ChatNotification = new Lang.Class({
|
|||||||
if (group != this._lastGroup) {
|
if (group != this._lastGroup) {
|
||||||
this._lastGroup = group;
|
this._lastGroup = group;
|
||||||
let emptyLine = new St.Label({ style_class: 'chat-empty-line' });
|
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 = new St.BoxLayout({ vertical: false });
|
||||||
this._lastMessageBox.add(body, props.childProps);
|
this._lastMessageBox.add(body, props.childProps);
|
||||||
this.addActor(this._lastMessageBox);
|
this._bodyBox.add_child(this._lastMessageBox);
|
||||||
|
|
||||||
this.updated();
|
|
||||||
|
|
||||||
let timestamp = props.timestamp;
|
let timestamp = props.timestamp;
|
||||||
this._history.unshift({ actor: body, time: timestamp,
|
this._history.unshift({ actor: body, time: timestamp,
|
||||||
@@ -1052,7 +871,7 @@ const ChatNotification = new Lang.Class({
|
|||||||
group: 'meta',
|
group: 'meta',
|
||||||
styles: ['chat-meta-message'] });
|
styles: ['chat-meta-message'] });
|
||||||
|
|
||||||
this.update(newAlias, null, { customContent: true });
|
this.update(newAlias);
|
||||||
|
|
||||||
this._filterMessages();
|
this._filterMessages();
|
||||||
},
|
},
|
||||||
@@ -1105,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;
|
const Component = TelepathyClient;
|
||||||
|
@@ -18,8 +18,7 @@ const PanelMenu = imports.ui.panelMenu;
|
|||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Calendar = imports.ui.calendar;
|
const Calendar = imports.ui.calendar;
|
||||||
|
|
||||||
function _onVertSepRepaint (area)
|
function _onVertSepRepaint(area) {
|
||||||
{
|
|
||||||
let cr = area.get_context();
|
let cr = area.get_context();
|
||||||
let themeNode = area.get_theme_node();
|
let themeNode = area.get_theme_node();
|
||||||
let [width, height] = area.get_surface_size();
|
let [width, height] = area.get_surface_size();
|
||||||
@@ -33,7 +32,7 @@ function _onVertSepRepaint (area)
|
|||||||
cr.setLineWidth(stippleWidth);
|
cr.setLineWidth(stippleWidth);
|
||||||
cr.stroke();
|
cr.stroke();
|
||||||
cr.$dispose();
|
cr.$dispose();
|
||||||
};
|
}
|
||||||
|
|
||||||
const DateMenuButton = new Lang.Class({
|
const DateMenuButton = new Lang.Class({
|
||||||
Name: 'DateMenuButton',
|
Name: 'DateMenuButton',
|
||||||
|
@@ -150,7 +150,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
|
|
||||||
this._keyboardIndex = -1;
|
this._keyboardIndex = -1;
|
||||||
this._rightPanelBarrier = null;
|
this._rightPanelBarrier = null;
|
||||||
this._trayBarrier = null;
|
|
||||||
|
|
||||||
this._inOverview = false;
|
this._inOverview = false;
|
||||||
this._updateRegionIdle = 0;
|
this._updateRegionIdle = 0;
|
||||||
@@ -210,7 +209,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
this.trayBox = new St.Widget({ name: 'trayBox',
|
this.trayBox = new St.Widget({ name: 'trayBox',
|
||||||
layout_manager: new Clutter.BinLayout() });
|
layout_manager: new Clutter.BinLayout() });
|
||||||
this.addChrome(this.trayBox);
|
this.addChrome(this.trayBox);
|
||||||
this._setupTrayPressure();
|
|
||||||
|
|
||||||
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
|
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
|
||||||
layout_manager: new Clutter.BinLayout() });
|
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() {
|
_monitorsChanged: function() {
|
||||||
this._updateMonitors();
|
this._updateMonitors();
|
||||||
this._updateBoxes();
|
this._updateBoxes();
|
||||||
this._updateTrayBarrier();
|
|
||||||
this._updateHotCorners();
|
this._updateHotCorners();
|
||||||
this._updateBackgrounds();
|
this._updateBackgrounds();
|
||||||
this._updateFullscreen();
|
this._updateFullscreen();
|
||||||
@@ -1017,43 +974,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
else
|
else
|
||||||
continue;
|
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 strutRect = new Meta.Rectangle({ x: x1, y: y1, width: x2 - x1, height: y2 - y1});
|
||||||
let strut = new Meta.Strut({ rect: strutRect, side: side });
|
let strut = new Meta.Strut({ rect: strutRect, side: side });
|
||||||
struts.push(strut);
|
struts.push(strut);
|
||||||
|
@@ -74,7 +74,6 @@ let _startDate;
|
|||||||
let _defaultCssStylesheet = null;
|
let _defaultCssStylesheet = null;
|
||||||
let _cssStylesheet = null;
|
let _cssStylesheet = null;
|
||||||
let _a11ySettings = null;
|
let _a11ySettings = null;
|
||||||
let dynamicWorkspacesSchema = null;
|
|
||||||
|
|
||||||
function _sessionUpdated() {
|
function _sessionUpdated() {
|
||||||
_loadDefaultStylesheet();
|
_loadDefaultStylesheet();
|
||||||
@@ -111,7 +110,6 @@ function start() {
|
|||||||
|
|
||||||
sessionMode = new SessionMode.SessionMode();
|
sessionMode = new SessionMode.SessionMode();
|
||||||
sessionMode.connect('updated', _sessionUpdated);
|
sessionMode.connect('updated', _sessionUpdated);
|
||||||
_initializePrefs();
|
|
||||||
_initializeUI();
|
_initializeUI();
|
||||||
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
@@ -120,17 +118,6 @@ function start() {
|
|||||||
_sessionUpdated();
|
_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() {
|
function _initializeUI() {
|
||||||
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
||||||
// also initialize ShellAppSystem first. ShellAppSystem
|
// also initialize ShellAppSystem first. ShellAppSystem
|
||||||
@@ -163,8 +150,8 @@ function _initializeUI() {
|
|||||||
if (LoginManager.canLock())
|
if (LoginManager.canLock())
|
||||||
screenShield = new ScreenShield.ScreenShield();
|
screenShield = new ScreenShield.ScreenShield();
|
||||||
|
|
||||||
panel = new Panel.Panel();
|
|
||||||
messageTray = new MessageTray.MessageTray();
|
messageTray = new MessageTray.MessageTray();
|
||||||
|
panel = new Panel.Panel();
|
||||||
keyboard = new Keyboard.Keyboard();
|
keyboard = new Keyboard.Keyboard();
|
||||||
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
||||||
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
|
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
|
||||||
@@ -294,7 +281,6 @@ function notify(msg, details) {
|
|||||||
let source = new MessageTray.SystemNotificationSource();
|
let source = new MessageTray.SystemNotificationSource();
|
||||||
messageTray.add(source);
|
messageTray.add(source);
|
||||||
let notification = new MessageTray.Notification(source, msg, details);
|
let notification = new MessageTray.Notification(source, msg, details);
|
||||||
notification.setTransient(true);
|
|
||||||
source.notify(notification);
|
source.notify(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2260
js/ui/messageTray.js
2260
js/ui/messageTray.js
File diff suppressed because it is too large
Load Diff
@@ -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({
|
const FdoNotificationDaemon = new Lang.Class({
|
||||||
Name: 'FdoNotificationDaemon',
|
Name: 'FdoNotificationDaemon',
|
||||||
|
|
||||||
@@ -129,7 +114,7 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
Main.overview.connect('hidden',
|
Main.overview.connect('hidden',
|
||||||
Lang.bind(this, this._onFocusAppChanged));
|
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) {
|
_imageForNotificationData: function(hints) {
|
||||||
@@ -195,10 +180,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
if (!pid && !(ndata && ndata.notification))
|
if (!pid && !(ndata && ndata.notification))
|
||||||
return null;
|
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)
|
if (ndata && ndata.notification)
|
||||||
return ndata.notification.source;
|
return ndata.notification.source;
|
||||||
|
|
||||||
@@ -334,13 +315,14 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_makeButton: function(id, label, useActionIcons) {
|
_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';
|
let iconName = id.endsWith('-symbolic') ? id : id + '-symbolic';
|
||||||
|
|
||||||
if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
|
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, icon_size: 16 });
|
||||||
button.child = new St.Icon({ icon_name: iconName });
|
|
||||||
} else {
|
} else {
|
||||||
button.add_style_class_name('notification-button');
|
|
||||||
button.label = label;
|
button.label = label;
|
||||||
}
|
}
|
||||||
return button;
|
return button;
|
||||||
@@ -379,8 +361,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
let gicon = this._iconForNotificationData(icon, hints);
|
let gicon = this._iconForNotificationData(icon, hints);
|
||||||
let gimage = this._imageForNotificationData(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
|
// 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
|
// 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
|
// 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
|
// 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
|
// one of 'image-data' or 'image-path' are specified, we show both an icon and
|
||||||
// a large image.
|
// a large image.
|
||||||
if (gicon && gimage)
|
if (!gicon && gimage)
|
||||||
image = new St.Icon({ gicon: gimage,
|
|
||||||
icon_size: notification.IMAGE_SIZE });
|
|
||||||
else if (!gicon && gimage)
|
|
||||||
gicon = gimage;
|
gicon = gimage;
|
||||||
else if (!gicon)
|
else if (!gicon)
|
||||||
gicon = this._fallbackIconForNotificationData(hints);
|
gicon = this._fallbackIconForNotificationData(hints);
|
||||||
@@ -402,7 +379,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
clear: true,
|
clear: true,
|
||||||
soundFile: hints['sound-file'],
|
soundFile: hints['sound-file'],
|
||||||
soundName: hints['sound-name'] });
|
soundName: hints['sound-name'] });
|
||||||
notification.setImage(image);
|
|
||||||
|
|
||||||
let hasDefaultAction = false;
|
let hasDefaultAction = false;
|
||||||
|
|
||||||
@@ -442,10 +418,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||||
break;
|
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;
|
let sourceGIcon = source.useNotificationIcon ? gicon : null;
|
||||||
source.processNotification(notification, sourceGIcon);
|
source.processNotification(notification, sourceGIcon);
|
||||||
@@ -470,7 +442,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
'body-markup',
|
'body-markup',
|
||||||
// 'icon-multi',
|
// 'icon-multi',
|
||||||
'icon-static',
|
'icon-static',
|
||||||
'persistence',
|
|
||||||
'sound',
|
'sound',
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
@@ -492,7 +463,7 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
for (let i = 0; i < this._sources.length; i++) {
|
for (let i = 0; i < this._sources.length; i++) {
|
||||||
let source = this._sources[i];
|
let source = this._sources[i];
|
||||||
if (source.app == tracker.focus_app) {
|
if (source.app == tracker.focus_app) {
|
||||||
source.destroyNonResidentNotifications();
|
source.destroyNotifications();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -509,10 +480,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onTrayIconAdded: function(o, icon) {
|
_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);
|
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();
|
this.iconUpdated();
|
||||||
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
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);
|
this.pushNotification(notification);
|
||||||
else
|
else
|
||||||
this.notify(notification);
|
this.notify(notification);
|
||||||
@@ -651,7 +618,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
|
|||||||
|
|
||||||
open: function() {
|
open: function() {
|
||||||
this.openApp();
|
this.openApp();
|
||||||
this.destroyNonResidentNotifications();
|
this.destroyNotifications();
|
||||||
},
|
},
|
||||||
|
|
||||||
_lastNotificationRemoved: function() {
|
_lastNotificationRemoved: function() {
|
||||||
|
@@ -72,7 +72,6 @@ const ShellInfo = new Lang.Class({
|
|||||||
let notification = null;
|
let notification = null;
|
||||||
if (this._source.notifications.length == 0) {
|
if (this._source.notifications.length == 0) {
|
||||||
notification = new MessageTray.Notification(this._source, text, null);
|
notification = new MessageTray.Notification(this._source, text, null);
|
||||||
notification.setTransient(true);
|
|
||||||
notification.setForFeedback(forFeedback);
|
notification.setForFeedback(forFeedback);
|
||||||
} else {
|
} else {
|
||||||
notification = this._source.notifications[0];
|
notification = this._source.notifications[0];
|
||||||
|
@@ -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 = {
|
const PANEL_ITEM_IMPLEMENTATIONS = {
|
||||||
'activities': ActivitiesButton,
|
'activities': ActivitiesButton,
|
||||||
'aggregateMenu': AggregateMenu,
|
'aggregateMenu': AggregateMenu,
|
||||||
'appMenu': AppMenuButton,
|
'appMenu': AppMenuButton,
|
||||||
'dateMenu': imports.ui.dateMenu.DateMenuButton,
|
'dateMenu': DateMenuButton2,
|
||||||
'a11y': imports.ui.status.accessibility.ATIndicator,
|
'a11y': imports.ui.status.accessibility.ATIndicator,
|
||||||
'a11yGreeter': imports.ui.status.accessibility.ATGreeterIndicator,
|
'a11yGreeter': imports.ui.status.accessibility.ATGreeterIndicator,
|
||||||
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||||
|
@@ -41,8 +41,7 @@ const ButtonBox = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||||
let children = actor.get_children();
|
let child = actor.get_first_child();
|
||||||
let child = children.length > 0 ? children[0] : null;
|
|
||||||
|
|
||||||
if (child) {
|
if (child) {
|
||||||
[alloc.min_size, alloc.natural_size] = child.get_preferred_width(-1);
|
[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) {
|
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||||
let children = actor.get_children();
|
let child = actor.get_first_child();
|
||||||
let child = children.length > 0 ? children[0] : null;
|
|
||||||
|
|
||||||
if (child) {
|
if (child) {
|
||||||
[alloc.min_size, alloc.natural_size] = child.get_preferred_height(-1);
|
[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) {
|
_allocate: function(actor, box, flags) {
|
||||||
let children = actor.get_children();
|
let child = actor.get_first_child();
|
||||||
if (children.length == 0)
|
if (!child)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let child = children[0];
|
|
||||||
let [minWidth, natWidth] = child.get_preferred_width(-1);
|
let [minWidth, natWidth] = child.get_preferred_width(-1);
|
||||||
let [minHeight, natHeight] = child.get_preferred_height(-1);
|
|
||||||
|
|
||||||
let availWidth = box.x2 - box.x1;
|
let availWidth = box.x2 - box.x1;
|
||||||
let availHeight = box.y2 - box.y1;
|
let availHeight = box.y2 - box.y1;
|
||||||
|
@@ -68,6 +68,13 @@ const ScreenshotService = new Lang.Class({
|
|||||||
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
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) {
|
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
|
||||||
if (flash && result) {
|
if (flash && result) {
|
||||||
let flashspot = new Flashspot(area);
|
let flashspot = new Flashspot(area);
|
||||||
@@ -80,11 +87,10 @@ const ScreenshotService = new Lang.Class({
|
|||||||
|
|
||||||
ScreenshotAreaAsync : function (params, invocation) {
|
ScreenshotAreaAsync : function (params, invocation) {
|
||||||
let [x, y, width, height, flash, filename, callback] = params;
|
let [x, y, width, height, flash, filename, callback] = params;
|
||||||
if (x < 0 || y < 0 ||
|
if (!this._checkArea(x, y, width, height)) {
|
||||||
width <= 0 || height <= 0 ||
|
invocation.return_error_literal(Gio.IOErrorEnum,
|
||||||
x + width > global.screen_width || y + height > global.screen_height) {
|
Gio.IOErrorEnum.CANCELLED,
|
||||||
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
|
"Invalid params");
|
||||||
"Invalid params");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let screenshot = new Shell.Screenshot();
|
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});
|
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
|
||||||
flashspot.fire();
|
flashspot.fire();
|
||||||
|
invocation.return_value(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -18,7 +18,6 @@ const _modes = {
|
|||||||
'restrictive': {
|
'restrictive': {
|
||||||
parentMode: null,
|
parentMode: null,
|
||||||
stylesheetName: 'gnome-shell.css',
|
stylesheetName: 'gnome-shell.css',
|
||||||
overridesSchema: 'org.gnome.shell.overrides',
|
|
||||||
hasOverview: false,
|
hasOverview: false,
|
||||||
showCalendarEvents: false,
|
showCalendarEvents: false,
|
||||||
allowSettings: false,
|
allowSettings: false,
|
||||||
|
@@ -253,7 +253,6 @@ const ShellUnmountNotifier = new Lang.Class({
|
|||||||
|
|
||||||
if (!this._notification) {
|
if (!this._notification) {
|
||||||
this._notification = new MessageTray.Notification(this, header, text);
|
this._notification = new MessageTray.Notification(this, header, text);
|
||||||
this._notification.setTransient(true);
|
|
||||||
this._notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
this._notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||||
} else {
|
} else {
|
||||||
this._notification.update(header, text);
|
this._notification.update(header, text);
|
||||||
@@ -270,7 +269,6 @@ const ShellUnmountNotifier = new Lang.Class({
|
|||||||
|
|
||||||
if (message) {
|
if (message) {
|
||||||
let notification = new MessageTray.Notification(this, message, null);
|
let notification = new MessageTray.Notification(this, message, null);
|
||||||
notification.setTransient(true);
|
|
||||||
|
|
||||||
this.notify(notification);
|
this.notify(notification);
|
||||||
}
|
}
|
||||||
|
@@ -1632,7 +1632,6 @@ const NMApplet = new Lang.Class({
|
|||||||
let gicon = new Gio.ThemedIcon({ name: iconName });
|
let gicon = new Gio.ThemedIcon({ name: iconName });
|
||||||
this._notification = new MessageTray.Notification(this._source, title, text, { gicon: gicon });
|
this._notification = new MessageTray.Notification(this._source, title, text, { gicon: gicon });
|
||||||
this._notification.setUrgency(urgency);
|
this._notification.setUrgency(urgency);
|
||||||
this._notification.setTransient(true);
|
|
||||||
this._notification.connect('destroy', function() {
|
this._notification.connect('destroy', function() {
|
||||||
this._notification = null;
|
this._notification = null;
|
||||||
});
|
});
|
||||||
|
@@ -285,10 +285,10 @@ const ViewSelector = new Lang.Class({
|
|||||||
} else if (!this._searchActive && !global.stage.key_focus) {
|
} else if (!this._searchActive && !global.stage.key_focus) {
|
||||||
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
|
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
|
||||||
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
return true;
|
return Clutter.EVENT_STOP;
|
||||||
} else if (symbol == Clutter.ISO_Left_Tab) {
|
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||||
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
||||||
return true;
|
return Clutter.EVENT_STOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
@@ -199,12 +199,19 @@ const WorkspaceTracker = new Lang.Class({
|
|||||||
global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor));
|
global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor));
|
||||||
global.screen.connect('restacked', Lang.bind(this, this._windowsRestacked));
|
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._workspaceSettings.connect('changed::dynamic-workspaces', Lang.bind(this, this._queueCheckWorkspaces));
|
||||||
|
|
||||||
this._nWorkspacesChanged();
|
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() {
|
_checkWorkspaces: function() {
|
||||||
let i;
|
let i;
|
||||||
let emptyWorkspaces = [];
|
let emptyWorkspaces = [];
|
||||||
|
209
po/es.po
209
po/es.po
@@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2014-05-20 07:27+0000\n"
|
"POT-Creation-Date: 2014-06-11 07:31+0000\n"
|
||||||
"PO-Revision-Date: 2014-05-20 19:10+0200\n"
|
"PO-Revision-Date: 2014-06-12 17:23+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@@ -55,7 +55,6 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Gestión de ventanas e inicio de aplicaciones"
|
msgstr "Gestión de ventanas e inicio de aplicaciones"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:155
|
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferencias de las extensiones de GNOME Shell"
|
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."
|
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../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"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
||||||
"ventana"
|
"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"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Las áreas de trabajo se gestionan dinámicamente"
|
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"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Áreas de trabajo solo en la pantalla principal"
|
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"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
|
"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
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
|
msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:167
|
#: ../js/extensionPrefs/main.js:157
|
||||||
msgid "Extension"
|
#| msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Extensión"
|
msgid "GNOME Shell Extensions"
|
||||||
|
msgstr "Extensiones de GNOME Shell"
|
||||||
#: ../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/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
@@ -335,25 +318,25 @@ msgctxt "button"
|
|||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:271
|
#: ../js/gdm/loginDialog.js:269
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Elegir sesión"
|
msgstr "Elegir sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:431
|
#: ../js/gdm/loginDialog.js:429
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "¿No está en la lista?"
|
msgstr "¿No está en la lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:616
|
#: ../js/gdm/loginDialog.js:614
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(ej., usuario o %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
|
#: ../js/ui/components/networkAgent.js:280
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nombre de usuario:"
|
msgstr "Nombre de usuario:"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:924
|
#: ../js/gdm/loginDialog.js:922
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ventana de inicio de sesión"
|
msgstr "Ventana de inicio de sesión"
|
||||||
|
|
||||||
@@ -541,11 +524,11 @@ msgctxt "list saturday"
|
|||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:453
|
#: ../js/ui/calendar.js:454
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Mes anterior"
|
msgstr "Mes anterior"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:463
|
#: ../js/ui/calendar.js:464
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Siguiente mes"
|
msgstr "Siguiente mes"
|
||||||
|
|
||||||
@@ -731,77 +714,77 @@ msgid "Mute"
|
|||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:958
|
#: ../js/ui/components/telepathyClient.js:957
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
msgstr "%H∶%M"
|
msgstr "%H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
#. 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"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "Ayer, %H∶%M"
|
msgstr "Ayer, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
#. 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"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A, %H∶%M"
|
msgstr "%A, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 24h format.
|
#. followed by a time string in 24h format.
|
||||||
#. i.e. "May 25, 14:30" */
|
#. i.e. "May 25, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:979
|
#: ../js/ui/components/telepathyClient.js:978
|
||||||
msgid "%B %d, %H∶%M"
|
msgid "%B %d, %H∶%M"
|
||||||
msgstr "%d de %B, %H∶%M"
|
msgstr "%d de %B, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 24h format.
|
#. number followed by a time string in 24h format.
|
||||||
#. i.e. "May 25 2012, 14:30" */
|
#. 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"
|
msgid "%B %d %Y, %H∶%M"
|
||||||
msgstr "%d de %B de %Y, %H∶%M"
|
msgstr "%d de %B de %Y, %H∶%M"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:994
|
#: ../js/ui/components/telepathyClient.js:990
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%l∶%M %p"
|
msgstr "%l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
#. 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"
|
msgid "Yesterday, %l∶%M %p"
|
||||||
msgstr "Ayer a las %l∶%M %p"
|
msgstr "Ayer a las %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
#. 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"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A, %l∶%M %p"
|
msgstr "%A, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm" */
|
#. 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"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%d de %B, %l∶%M %p"
|
msgstr "%d de %B, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
#. 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"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%d de %B de %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
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1054
|
#: ../js/ui/components/telepathyClient.js:1049
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Ahora %s se llama %s"
|
msgstr "Ahora %s se llama %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example. */
|
#. * room@jabber.org for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1158
|
#: ../js/ui/components/telepathyClient.js:1153
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitación a %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
|
#. 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
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example. */
|
#. * for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1166
|
#: ../js/ui/components/telepathyClient.js:1161
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s le está invitando a unirse a %s"
|
msgstr "%s le está invitando a unirse a %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1168
|
#: ../js/ui/components/telepathyClient.js:1163
|
||||||
#: ../js/ui/components/telepathyClient.js:1203
|
#: ../js/ui/components/telepathyClient.js:1198
|
||||||
#: ../js/ui/components/telepathyClient.js:1237
|
#: ../js/ui/components/telepathyClient.js:1232
|
||||||
#: ../js/ui/components/telepathyClient.js:1295
|
#: ../js/ui/components/telepathyClient.js:1290
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1174
|
#: ../js/ui/components/telepathyClient.js:1169
|
||||||
#: ../js/ui/components/telepathyClient.js:1243
|
#: ../js/ui/components/telepathyClient.js:1238
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1295
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example. */
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1193
|
#: ../js/ui/components/telepathyClient.js:1188
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videollamada de %s"
|
msgstr "Videollamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example. */
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1196
|
#: ../js/ui/components/telepathyClient.js:1191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Llamada de %s"
|
msgstr "Llamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun */
|
#. translators: this is a button label (verb), not a noun */
|
||||||
#: ../js/ui/components/telepathyClient.js:1210
|
#: ../js/ui/components/telepathyClient.js:1205
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Responder"
|
msgstr "Responder"
|
||||||
|
|
||||||
@@ -849,112 +832,112 @@ msgstr "Responder"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1231
|
#: ../js/ui/components/telepathyClient.js:1226
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s le está enviando %s"
|
msgstr "%s le está enviando %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias */
|
#. To translators: The parameter is the contact's alias */
|
||||||
#: ../js/ui/components/telepathyClient.js:1260
|
#: ../js/ui/components/telepathyClient.js:1255
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s solicita permiso para ver cuándo está en línea"
|
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"
|
msgid "Network error"
|
||||||
msgstr "Error de la red"
|
msgstr "Error de la red"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1348
|
#: ../js/ui/components/telepathyClient.js:1343
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Falló la autenticación"
|
msgstr "Falló la autenticación"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1350
|
#: ../js/ui/components/telepathyClient.js:1345
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Error de cifrado"
|
msgstr "Error de cifrado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1352
|
#: ../js/ui/components/telepathyClient.js:1347
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificado no proporcionado"
|
msgstr "Certificado no proporcionado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1354
|
#: ../js/ui/components/telepathyClient.js:1349
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "No se confía en el certificado"
|
msgstr "No se confía en el certificado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1356
|
#: ../js/ui/components/telepathyClient.js:1351
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificado caducado"
|
msgstr "Certificado caducado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1358
|
#: ../js/ui/components/telepathyClient.js:1353
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificado no activado"
|
msgstr "Certificado no activado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1360
|
#: ../js/ui/components/telepathyClient.js:1355
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "El nombre del servidor dle certificado no coincide"
|
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"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "La huella del certificado no coincide"
|
msgstr "La huella del certificado no coincide"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1364
|
#: ../js/ui/components/telepathyClient.js:1359
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificado autofirmado"
|
msgstr "Certificado autofirmado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1366
|
#: ../js/ui/components/telepathyClient.js:1361
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "El estado está establecido a «desconectado»"
|
msgstr "El estado está establecido a «desconectado»"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1368
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "El cifrado no está disponible"
|
msgstr "El cifrado no está disponible"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1370
|
#: ../js/ui/components/telepathyClient.js:1365
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "El certificado no es válido"
|
msgstr "El certificado no es válido"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1372
|
#: ../js/ui/components/telepathyClient.js:1367
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Se ha rechazado la conexión"
|
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"
|
msgid "Connection can't be established"
|
||||||
msgstr "No se puede establecer la conexión"
|
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"
|
msgid "Connection has been lost"
|
||||||
msgstr "Se ha perdido la conexión"
|
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"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Esta cuenta ya está conectada al servidor"
|
msgstr "Esta cuenta ya está conectada al servidor"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1380
|
#: ../js/ui/components/telepathyClient.js:1375
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
"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"
|
msgid "The account already exists on the server"
|
||||||
msgstr "La cuenta ya existe en el servidor"
|
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"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
"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"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Se ha revocado el certificado"
|
msgstr "Se ha revocado el certificado"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1388
|
#: ../js/ui/components/telepathyClient.js:1383
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
||||||
"débil"
|
"débil"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1390
|
#: ../js/ui/components/telepathyClient.js:1385
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"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 "
|
"certificado del servidor exceden los límites impuestos por la biblioteca de "
|
||||||
"criptografía"
|
"criptografía"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1392
|
#: ../js/ui/components/telepathyClient.js:1387
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Error interno"
|
msgstr "Error interno"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example. */
|
#. * name@jabber.org for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1402
|
#: ../js/ui/components/telepathyClient.js:1397
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Unable to connect to %s"
|
msgid "Unable to connect to %s"
|
||||||
msgstr "No se pudo conectar a %s"
|
msgstr "No se pudo conectar a %s"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1407
|
#: ../js/ui/components/telepathyClient.js:1402
|
||||||
msgid "View account"
|
msgid "View account"
|
||||||
msgstr "Ver cuenta"
|
msgstr "Ver cuenta"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1444
|
#: ../js/ui/components/telepathyClient.js:1439
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón desconocida"
|
msgstr "Razón desconocida"
|
||||||
|
|
||||||
@@ -1153,7 +1136,7 @@ msgstr "Instalar"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "¿Descargar e instalar «%s» desde 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"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
@@ -1287,7 +1270,7 @@ msgstr "Actividades"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
#: ../js/ui/popupMenu.js:271
|
#: ../js/ui/popupMenu.js:279
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -1295,7 +1278,7 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Introducir un comando"
|
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"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
@@ -1434,7 +1417,7 @@ msgstr "No conectado"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brillo"
|
msgstr "Brillo"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:403
|
#: ../js/ui/status/keyboard.js:407
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostrar la distribución del teclado"
|
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[0] "La configuración se revertirá en %d segundo"
|
||||||
msgstr[1] "La configuración se revertirá en %d segundos"
|
msgstr[1] "La configuración se revertirá en %d segundos"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:33
|
#: ../js/ui/windowMenu.js:34
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Minimizar"
|
msgstr "Minimizar"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:40
|
#: ../js/ui/windowMenu.js:41
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr "Desmaximizar"
|
msgstr "Desmaximizar"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:44
|
#: ../js/ui/windowMenu.js:45
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr "Maximizar"
|
msgstr "Maximizar"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:51
|
#: ../js/ui/windowMenu.js:52
|
||||||
msgid "Move"
|
msgid "Move"
|
||||||
msgstr "Mover"
|
msgstr "Mover"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:57
|
#: ../js/ui/windowMenu.js:58
|
||||||
msgid "Resize"
|
msgid "Resize"
|
||||||
msgstr "Redimensionar"
|
msgstr "Redimensionar"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:64
|
#: ../js/ui/windowMenu.js:65
|
||||||
msgid "Move Titlebar Onscreen"
|
msgid "Move Titlebar Onscreen"
|
||||||
msgstr "Mover la barra de título a la pantalla"
|
msgstr "Mover la barra de título a la pantalla"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:69
|
#: ../js/ui/windowMenu.js:70
|
||||||
msgid "Always on Top"
|
msgid "Always on Top"
|
||||||
msgstr "Siempre encima"
|
msgstr "Siempre encima"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:86
|
#: ../js/ui/windowMenu.js:89
|
||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "Siempre en el área de trabajo visible"
|
msgstr "Siempre en el área de trabajo visible"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:103
|
#: ../js/ui/windowMenu.js:106
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Subir a un área de trabajo"
|
msgstr "Subir a un área de trabajo"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:108
|
#: ../js/ui/windowMenu.js:111
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Bajar a un área de trabajo"
|
msgstr "Bajar a un área de trabajo"
|
||||||
|
|
||||||
@@ -1786,21 +1769,21 @@ msgstr[1] "%u entradas"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
#: ../src/main.c:349
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:355
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
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"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
||||||
"sesión"
|
"sesión"
|
||||||
|
|
||||||
#: ../src/main.c:367
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Listar los modos posibles"
|
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"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
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"
|
#~ msgid "calendar:MY"
|
||||||
#~ msgstr "calendario:MA"
|
#~ msgstr "calendario:MA"
|
||||||
|
|
||||||
|
405
po/tr.po
405
po/tr.po
@@ -11,10 +11,9 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2014-06-05 07:25+0000\n"
|
||||||
"POT-Creation-Date: 2014-05-17 23:09+0000\n"
|
"PO-Revision-Date: 2014-06-05 23:19+0000\n"
|
||||||
"PO-Revision-Date: 2014-05-19 14:40+0300\n"
|
|
||||||
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
||||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
@@ -22,7 +21,6 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -58,7 +56,6 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Pencere yönetimi ve uygulama başlatma"
|
msgstr "Pencere yönetimi ve uygulama başlatma"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:155
|
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "GNOME Kabuğu Eklenti Tercihleri"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr ""
|
msgstr "Geliştirici ve deneme yapanlar için Alt-F2' den ulaşılan araçları etkinleştir"
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
msgstr ""
|
msgstr "Alt-F2 kutucuğu ile bütünleşik hata ayıklama ve izleme uygulamalarına erişim sağlar."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
msgid "UUIDs of extensions to enable"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
"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 "
|
" 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 "
|
" list. You can also manipulate this list with the EnableExtension and "
|
||||||
"DisableExtension D-Bus methods on org.gnome.Shell."
|
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||||
msgstr ""
|
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."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
msgid "Disables the validation of extension version compatibility"
|
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 "
|
"GNOME Shell will only load extensions that claim to support the current "
|
||||||
"running version. Enabling this option will disable this check and try to "
|
"running version. Enabling this option will disable this check and try to "
|
||||||
"load all extensions regardless of the versions they claim to support."
|
"load all extensions regardless of the versions they claim to support."
|
||||||
msgstr ""
|
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."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||||
msgid ""
|
msgid ""
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the"
|
||||||
"favorites area."
|
" favorites area."
|
||||||
msgstr ""
|
msgstr "Bu tanımlayıcıya sahip uygulamalar sık kullanılanlar bölümünde gösterilecek."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "History for command (Alt-F2) dialog"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
"This key overrides the automatic hiding of the 'Log out' menu item in "
|
||||||
"user, single-session situations."
|
"single-user, single-session situations."
|
||||||
msgstr ""
|
msgstr "Bu ayar tek kullanıcı oturum açtığında 'Oturumu Kapat' menü ögesinin gizlenmesini önler."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||||
msgstr ""
|
msgstr "Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
|
||||||
"Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -158,11 +139,7 @@ msgid ""
|
|||||||
"filesystem is mounted. If the password can be saved for future use a "
|
"filesystem is mounted. If the password can be saved for future use a "
|
||||||
"'Remember Password' checkbox will be present. This key sets the default "
|
"'Remember Password' checkbox will be present. This key sets the default "
|
||||||
"state of the checkbox."
|
"state of the checkbox."
|
||||||
msgstr ""
|
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."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid "Show the week date in the calendar"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities "
|
||||||
msgstr ""
|
"Overview."
|
||||||
"Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için "
|
msgstr "Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için klavye kısayolu."
|
||||||
"klavye kısayolu."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
@@ -235,14 +211,7 @@ msgid ""
|
|||||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
"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 "
|
"allow applications to see and they can find user's location on their own "
|
||||||
"using network resources (albeit with street-level accuracy at best)."
|
"using network resources (albeit with street-level accuracy at best)."
|
||||||
msgstr ""
|
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."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
@@ -251,13 +220,9 @@ msgstr "Uygulama simge kipi."
|
|||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
|
||||||
"only' (shows only the application icon) or 'both'."
|
"(shows only the application icon) or 'both'."
|
||||||
msgstr ""
|
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."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Attach modal dialog to the parent window"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr "Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı geçersiz kılar."
|
||||||
"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
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "Arrangement of buttons on the titlebar"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr "Düğmelerin başlık çubuğundaki düzeni"
|
msgstr "Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../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"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Çalışma alanları dinamik olarak yönetilir"
|
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"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Çalışma alanları sadece birincil ekranda"
|
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"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
|
||||||
"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
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "%s için tercihler iletişim penceresi yüklenirken hata oluştu:"
|
msgstr "%s için tercihler iletişim penceresi yüklenirken hata oluştu:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:167
|
#: ../js/extensionPrefs/main.js:157
|
||||||
msgid "Extension"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Eklenti"
|
msgstr "GNOME Kabuğu Uzantıları"
|
||||||
|
|
||||||
#: ../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/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
@@ -334,25 +279,25 @@ msgctxt "button"
|
|||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Giriş"
|
msgstr "Giriş"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:271
|
#: ../js/gdm/loginDialog.js:269
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Oturum Seçin"
|
msgstr "Oturum Seçin"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:431
|
#: ../js/gdm/loginDialog.js:429
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Listede yok mu?"
|
msgstr "Listede yok mu?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:616
|
#: ../js/gdm/loginDialog.js:614
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(örneğin, kullanıcı veya %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
|
#: ../js/ui/components/networkAgent.js:280
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Kullanıcı Adı: "
|
msgstr "Kullanıcı Adı: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:924
|
#: ../js/gdm/loginDialog.js:922
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Oturum Açma Penceresi"
|
msgstr "Oturum Açma Penceresi"
|
||||||
|
|
||||||
@@ -402,7 +347,6 @@ msgid "Add to Favorites"
|
|||||||
msgstr "Sık Kullanılanlara Ekle"
|
msgstr "Sık Kullanılanlara Ekle"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1608
|
#: ../js/ui/appDisplay.js:1608
|
||||||
#| msgid "Show Text"
|
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Ayrıntıları Göster"
|
msgstr "Ayrıntıları Göster"
|
||||||
|
|
||||||
@@ -541,11 +485,11 @@ msgctxt "list saturday"
|
|||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Ct"
|
msgstr "Ct"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:453
|
#: ../js/ui/calendar.js:454
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Önceki ay"
|
msgstr "Önceki ay"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:463
|
#: ../js/ui/calendar.js:464
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Gelecek ay"
|
msgstr "Gelecek ay"
|
||||||
|
|
||||||
@@ -554,13 +498,15 @@ msgstr "Gelecek ay"
|
|||||||
msgid "Nothing Scheduled"
|
msgid "Nothing Scheduled"
|
||||||
msgstr "Planınız Boş"
|
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
|
#: ../js/ui/calendar.js:793
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d %B"
|
msgstr "%A, %d %B"
|
||||||
|
|
||||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
#. Translators: Shown on calendar heading when selected day occurs on
|
||||||
|
#. different year */
|
||||||
#: ../js/ui/calendar.js:796
|
#: ../js/ui/calendar.js:796
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
@@ -649,9 +595,7 @@ msgstr "Kablosuz ağ için kimlik doğrulama gerekiyor"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
"“%s”."
|
"“%s”."
|
||||||
msgstr ""
|
msgstr "“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları gerekiyor."
|
||||||
"“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları "
|
|
||||||
"gerekiyor."
|
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:316
|
#: ../js/ui/components/networkAgent.js:316
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
@@ -731,77 +675,78 @@ msgid "Mute"
|
|||||||
msgstr "Sesi Kapat"
|
msgstr "Sesi Kapat"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:958
|
#: ../js/ui/components/telepathyClient.js:957
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
msgstr "%H∶%M"
|
msgstr "%H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
#. 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"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "Dün, %H∶%M"
|
msgstr "Dün, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
#. 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"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A, %H∶%M"
|
msgstr "%A, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 24h format.
|
#. followed by a time string in 24h format.
|
||||||
#. i.e. "May 25, 14:30" */
|
#. i.e. "May 25, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:979
|
#: ../js/ui/components/telepathyClient.js:978
|
||||||
msgid "%B %d, %H∶%M"
|
msgid "%B %d, %H∶%M"
|
||||||
msgstr "%d %B, %H∶%M"
|
msgstr "%d %B, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 24h format.
|
#. number followed by a time string in 24h format.
|
||||||
#. i.e. "May 25 2012, 14:30" */
|
#. 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"
|
msgid "%B %d %Y, %H∶%M"
|
||||||
msgstr "%d %B %Y, %H∶%M"
|
msgstr "%d %B %Y, %H∶%M"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:994
|
#: ../js/ui/components/telepathyClient.js:990
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%l∶%M %p"
|
msgstr "%l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
#. 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"
|
msgid "Yesterday, %l∶%M %p"
|
||||||
msgstr "Dün, %l∶%M %p"
|
msgstr "Dün, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
#. 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"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A, %l∶%M %p"
|
msgstr "%A, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm" */
|
#. 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"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%d %B, %l∶%M %p"
|
msgstr "%d %B, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
#. 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"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%d %B %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. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1054
|
#: ../js/ui/components/telepathyClient.js:1049
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s, şimdi %s olarak biliniyor"
|
msgstr "%s, şimdi %s olarak biliniyor"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example. */
|
#. * room@jabber.org for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1158
|
#: ../js/ui/components/telepathyClient.js:1153
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s'e Davet"
|
msgstr "%s'e Davet"
|
||||||
@@ -809,38 +754,38 @@ msgstr "%s'e Davet"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. 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
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example. */
|
#. * for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1166
|
#: ../js/ui/components/telepathyClient.js:1161
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
|
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1168
|
#: ../js/ui/components/telepathyClient.js:1163
|
||||||
#: ../js/ui/components/telepathyClient.js:1203
|
#: ../js/ui/components/telepathyClient.js:1198
|
||||||
#: ../js/ui/components/telepathyClient.js:1237
|
#: ../js/ui/components/telepathyClient.js:1232
|
||||||
#: ../js/ui/components/telepathyClient.js:1295
|
#: ../js/ui/components/telepathyClient.js:1290
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Reddet"
|
msgstr "Reddet"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1174
|
#: ../js/ui/components/telepathyClient.js:1169
|
||||||
#: ../js/ui/components/telepathyClient.js:1243
|
#: ../js/ui/components/telepathyClient.js:1238
|
||||||
#: ../js/ui/components/telepathyClient.js:1300
|
#: ../js/ui/components/telepathyClient.js:1295
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Kabul Et"
|
msgstr "Kabul Et"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example. */
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1193
|
#: ../js/ui/components/telepathyClient.js:1188
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s'den görüntülü arama"
|
msgstr "%s'den görüntülü arama"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example. */
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1196
|
#: ../js/ui/components/telepathyClient.js:1191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s'den çağrı"
|
msgstr "%s'den çağrı"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun */
|
#. translators: this is a button label (verb), not a noun */
|
||||||
#: ../js/ui/components/telepathyClient.js:1210
|
#: ../js/ui/components/telepathyClient.js:1205
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Cevapla"
|
msgstr "Cevapla"
|
||||||
|
|
||||||
@@ -849,133 +794,129 @@ msgstr "Cevapla"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1231
|
#: ../js/ui/components/telepathyClient.js:1226
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s, size %s dosyasını gönderiyor"
|
msgstr "%s, size %s dosyasını gönderiyor"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias */
|
#. To translators: The parameter is the contact's alias */
|
||||||
#: ../js/ui/components/telepathyClient.js:1260
|
#: ../js/ui/components/telepathyClient.js:1255
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s would like permission to see when you are online"
|
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"
|
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"
|
msgid "Network error"
|
||||||
msgstr "Ağ hatası"
|
msgstr "Ağ hatası"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1348
|
#: ../js/ui/components/telepathyClient.js:1343
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Kimlik doğrulama başarısız"
|
msgstr "Kimlik doğrulama başarısız"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1350
|
#: ../js/ui/components/telepathyClient.js:1345
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Şifreleme hatası"
|
msgstr "Şifreleme hatası"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1352
|
#: ../js/ui/components/telepathyClient.js:1347
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Sertifika sağlanmamış"
|
msgstr "Sertifika sağlanmamış"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1354
|
#: ../js/ui/components/telepathyClient.js:1349
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Sertifika güvenilmez"
|
msgstr "Sertifika güvenilmez"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1356
|
#: ../js/ui/components/telepathyClient.js:1351
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Sertifikanın süresi dolmuş"
|
msgstr "Sertifikanın süresi dolmuş"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1358
|
#: ../js/ui/components/telepathyClient.js:1353
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Sertifika etkinleştirilmemiş"
|
msgstr "Sertifika etkinleştirilmemiş"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1360
|
#: ../js/ui/components/telepathyClient.js:1355
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Sertifikanın makine adı uyuşmuyor"
|
msgstr "Sertifikanın makine adı uyuşmuyor"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1362
|
#: ../js/ui/components/telepathyClient.js:1357
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Sertifikanın parmak izi uyuşmuyor"
|
msgstr "Sertifikanın parmak izi uyuşmuyor"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1364
|
#: ../js/ui/components/telepathyClient.js:1359
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Sertifika kendinden-imzalı"
|
msgstr "Sertifika kendinden-imzalı"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1366
|
#: ../js/ui/components/telepathyClient.js:1361
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Durum çevrimdışına ayarlı"
|
msgstr "Durum çevrimdışına ayarlı"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1368
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Şifreleme kullanılabilir değil"
|
msgstr "Şifreleme kullanılabilir değil"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1370
|
#: ../js/ui/components/telepathyClient.js:1365
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Sertifika geçersiz"
|
msgstr "Sertifika geçersiz"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1372
|
#: ../js/ui/components/telepathyClient.js:1367
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Bağlantı reddedildi"
|
msgstr "Bağlantı reddedildi"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1374
|
#: ../js/ui/components/telepathyClient.js:1369
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Bağlantı kurulamıyor"
|
msgstr "Bağlantı kurulamıyor"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1376
|
#: ../js/ui/components/telepathyClient.js:1371
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Bağlantı koptu"
|
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"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Bu hesap zaten sunucuya bağlı"
|
msgstr "Bu hesap zaten sunucuya bağlı"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1380
|
#: ../js/ui/components/telepathyClient.js:1375
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"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"
|
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"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Sunucuda böyle bir hesap zaten var"
|
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"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
|
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"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Sertifika hükümsüz kılınmış"
|
msgstr "Sertifika hükümsüz kılınmış"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1388
|
#: ../js/ui/components/telepathyClient.js:1383
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf"
|
||||||
"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 ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate"
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
" chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr ""
|
msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırları aşıyor"
|
||||||
"Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin "
|
|
||||||
"derinliği, şifreleme kütüphanesi tarafından koyulan sınırları aşıyor"
|
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1392
|
#: ../js/ui/components/telepathyClient.js:1387
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "İç hata"
|
msgstr "İç hata"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example. */
|
#. * name@jabber.org for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1402
|
#: ../js/ui/components/telepathyClient.js:1397
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Unable to connect to %s"
|
msgid "Unable to connect to %s"
|
||||||
msgstr "%s bağlantısı sağlanamadı"
|
msgstr "%s bağlantısı sağlanamadı"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1407
|
#: ../js/ui/components/telepathyClient.js:1402
|
||||||
msgid "View account"
|
msgid "View account"
|
||||||
msgstr "Hesabı göster"
|
msgstr "Hesabı göster"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1444
|
#: ../js/ui/components/telepathyClient.js:1439
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Bilinmeyen sebep"
|
msgstr "Bilinmeyen sebep"
|
||||||
|
|
||||||
@@ -1004,7 +945,8 @@ msgid "Date & Time Settings"
|
|||||||
msgstr "Tarih ve Saat Ayarları"
|
msgstr "Tarih ve Saat Ayarları"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29
|
||||||
|
#. AM").
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/dateMenu.js:205
|
#: ../js/ui/dateMenu.js:205
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
@@ -1087,12 +1029,11 @@ msgstr "Yeniden Başlat ve Güncelleştirmeleri Kur"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:123
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, 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 ""
|
msgid_plural ""
|
||||||
"The system will automatically restart and install updates in %d seconds."
|
"The system will automatically restart and install updates in %d seconds."
|
||||||
msgstr[0] ""
|
msgstr[0] "Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve güncelleştirmeleri kuracak."
|
||||||
"Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve "
|
|
||||||
"güncelleştirmeleri kuracak."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
@@ -1111,8 +1052,7 @@ msgstr "Güncelleştirmeler kurulduktan sonra kapat"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:315
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr "Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
|
||||||
"Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:332
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
@@ -1143,7 +1083,7 @@ msgstr "Kur"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
|
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"
|
msgid "Keyboard"
|
||||||
msgstr "Klavye"
|
msgstr "Klavye"
|
||||||
|
|
||||||
@@ -1276,7 +1216,7 @@ msgstr "Etkinlikler"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Tepe Çubuğu"
|
msgstr "Tepe Çubuğu"
|
||||||
|
|
||||||
#: ../js/ui/popupMenu.js:271
|
#: ../js/ui/popupMenu.js:279
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@@ -1284,7 +1224,7 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Komut Girin"
|
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"
|
msgid "Close"
|
||||||
msgstr "Kapat"
|
msgstr "Kapat"
|
||||||
|
|
||||||
@@ -1421,7 +1361,7 @@ msgstr "Bağlı Değil"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Parlaklık"
|
msgstr "Parlaklık"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:403
|
#: ../js/ui/status/keyboard.js:407
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Klavye Düzenini Göster"
|
msgstr "Klavye Düzenini Göster"
|
||||||
|
|
||||||
@@ -1454,15 +1394,14 @@ msgstr "Kapalı"
|
|||||||
msgid "Connected"
|
msgid "Connected"
|
||||||
msgstr "Bağlı"
|
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) */
|
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||||
#: ../js/ui/status/network.js:426
|
#: ../js/ui/status/network.js:426
|
||||||
#| msgid "unmanaged"
|
|
||||||
msgid "Unmanaged"
|
msgid "Unmanaged"
|
||||||
msgstr "Yönetilmeyen"
|
msgstr "Yönetilmeyen"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:428
|
#: ../js/ui/status/network.js:428
|
||||||
#| msgid "disconnecting..."
|
|
||||||
msgid "Disconnecting"
|
msgid "Disconnecting"
|
||||||
msgstr "Bağlantı Kesiliyor"
|
msgstr "Bağlantı Kesiliyor"
|
||||||
|
|
||||||
@@ -1470,23 +1409,23 @@ msgstr "Bağlantı Kesiliyor"
|
|||||||
msgid "Connecting"
|
msgid "Connecting"
|
||||||
msgstr "Bağlantı Kuruluyor"
|
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
|
#: ../js/ui/status/network.js:437
|
||||||
#| msgid "authentication required"
|
|
||||||
msgid "Authentication required"
|
msgid "Authentication required"
|
||||||
msgstr "Kimlik doğrulama gerekir"
|
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 */
|
#. module, which is missing */
|
||||||
#: ../js/ui/status/network.js:445
|
#: ../js/ui/status/network.js:445
|
||||||
#| msgid "firmware missing"
|
|
||||||
msgid "Firmware missing"
|
msgid "Firmware missing"
|
||||||
msgstr "Ürün Bilgisi eksik"
|
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 */
|
#. is disabled by rfkill, or it has no coverage */
|
||||||
#: ../js/ui/status/network.js:449
|
#: ../js/ui/status/network.js:449
|
||||||
#| msgid "unavailable"
|
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Kullanılamaz"
|
msgstr "Kullanılamaz"
|
||||||
|
|
||||||
@@ -1570,7 +1509,8 @@ msgstr "Hotspot Etkin"
|
|||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "bağlanıyor..."
|
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
|
#: ../js/ui/status/network.js:1365
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "kimlik doğrulaması gerekli"
|
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"
|
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"
|
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"
|
msgid "Minimize"
|
||||||
msgstr ""
|
msgstr "Simge durumuna küçült"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:40
|
#: ../js/ui/windowMenu.js:41
|
||||||
msgid "Unmaximize"
|
msgid "Unmaximize"
|
||||||
msgstr ""
|
msgstr "Önceki Boyut"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:44
|
#: ../js/ui/windowMenu.js:45
|
||||||
msgid "Maximize"
|
msgid "Maximize"
|
||||||
msgstr ""
|
msgstr "En üst düzeye çıkar"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:51
|
#: ../js/ui/windowMenu.js:52
|
||||||
msgid "Move"
|
msgid "Move"
|
||||||
msgstr "Taşı"
|
msgstr "Taşı"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:57
|
#: ../js/ui/windowMenu.js:58
|
||||||
msgid "Resize"
|
msgid "Resize"
|
||||||
msgstr "Yeniden Boyutlandır"
|
msgstr "Yeniden Boyutlandır"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:64
|
#: ../js/ui/windowMenu.js:65
|
||||||
msgid "Move Titlebar Onscreen"
|
msgid "Move Titlebar Onscreen"
|
||||||
msgstr "Başlık Çubuğunu Ekranda Taşı"
|
msgstr "Başlık Çubuğunu Ekranda Taşı"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:69
|
#: ../js/ui/windowMenu.js:70
|
||||||
msgid "Always on Top"
|
msgid "Always on Top"
|
||||||
msgstr "Her Zaman Üstte"
|
msgstr "Her Zaman Üstte"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:86
|
#: ../js/ui/windowMenu.js:89
|
||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "Her Zaman Görünür Çalışma Alanında"
|
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"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Üstteki Çalışma Alanına Taşı"
|
msgstr "Üstteki Çalışma Alanına Taşı"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:108
|
#: ../js/ui/windowMenu.js:111
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Alttaki Çalışma Alanına Taşı"
|
msgstr "Alttaki Çalışma Alanına Taşı"
|
||||||
|
|
||||||
@@ -1807,72 +1747,3 @@ msgstr "Parola boş bırakılamaz"
|
|||||||
#: ../src/shell-polkit-authentication-agent.c:346
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
|
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"
|
|
||||||
|
24
src/main.c
24
src/main.c
@@ -34,6 +34,8 @@ extern GType gnome_shell_plugin_get_type (void);
|
|||||||
#define SHELL_DBUS_SERVICE "org.gnome.Shell"
|
#define SHELL_DBUS_SERVICE "org.gnome.Shell"
|
||||||
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
|
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
|
||||||
|
|
||||||
|
#define OVERRIDES_SCHEMA "org.gnome.shell.overrides"
|
||||||
|
|
||||||
#define WM_NAME "GNOME Shell"
|
#define WM_NAME "GNOME Shell"
|
||||||
#define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell"
|
#define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell"
|
||||||
|
|
||||||
@@ -167,6 +169,26 @@ shell_dbus_init (gboolean replace)
|
|||||||
g_object_unref (session);
|
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
|
static void
|
||||||
shell_introspection_init (void)
|
shell_introspection_init (void)
|
||||||
{
|
{
|
||||||
@@ -434,6 +456,8 @@ main (int argc, char **argv)
|
|||||||
|
|
||||||
_shell_global_init ("session-mode", session_mode, NULL);
|
_shell_global_init ("session-mode", session_mode, NULL);
|
||||||
|
|
||||||
|
shell_prefs_init ();
|
||||||
|
|
||||||
ecode = meta_run ();
|
ecode = meta_run ();
|
||||||
|
|
||||||
if (g_getenv ("GNOME_SHELL_ENABLE_CLEANUP"))
|
if (g_getenv ("GNOME_SHELL_ENABLE_CLEANUP"))
|
||||||
|
@@ -1355,6 +1355,37 @@ shell_global_get_settings (ShellGlobal *global)
|
|||||||
return global->settings;
|
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:
|
* shell_global_get_current_time:
|
||||||
* @global: A #ShellGlobal
|
* @global: A #ShellGlobal
|
||||||
|
@@ -35,6 +35,7 @@ GdkScreen *shell_global_get_gdk_screen (ShellGlobal *global);
|
|||||||
MetaDisplay *shell_global_get_display (ShellGlobal *global);
|
MetaDisplay *shell_global_get_display (ShellGlobal *global);
|
||||||
GList *shell_global_get_window_actors (ShellGlobal *global);
|
GList *shell_global_get_window_actors (ShellGlobal *global);
|
||||||
GSettings *shell_global_get_settings (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);
|
guint32 shell_global_get_current_time (ShellGlobal *global);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -21,10 +21,6 @@ struct _ShellTpClientPrivate
|
|||||||
ShellTpClientHandleChannelsImpl handle_channels_impl;
|
ShellTpClientHandleChannelsImpl handle_channels_impl;
|
||||||
gpointer user_data_handle_channels;
|
gpointer user_data_handle_channels;
|
||||||
GDestroyNotify destroy_handle_channels;
|
GDestroyNotify destroy_handle_channels;
|
||||||
|
|
||||||
ShellTpClientContactListChangedImpl contact_list_changed_impl;
|
|
||||||
gpointer user_data_contact_list_changed;
|
|
||||||
GDestroyNotify destroy_contact_list_changed;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -83,16 +79,6 @@ struct _ShellTpClientPrivate
|
|||||||
* Signature of the implementation of the HandleChannels method.
|
* 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
|
static void
|
||||||
shell_tp_client_init (ShellTpClient *self)
|
shell_tp_client_init (ShellTpClient *self)
|
||||||
{
|
{
|
||||||
@@ -226,13 +212,6 @@ shell_tp_client_dispose (GObject *object)
|
|||||||
self->priv->user_data_handle_channels = NULL;
|
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)
|
if (dispose != NULL)
|
||||||
dispose (object);
|
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->user_data_handle_channels = user_data;
|
||||||
self->priv->destroy_handle_channels = destroy;
|
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);
|
|
||||||
}
|
|
||||||
|
@@ -86,19 +86,5 @@ void shell_tp_client_set_handle_channels_func (ShellTpClient *self,
|
|||||||
gpointer user_data,
|
gpointer user_data,
|
||||||
GDestroyNotify destroy);
|
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
|
G_END_DECLS
|
||||||
#endif /* __SHELL_TP_CLIENT_H__ */
|
#endif /* __SHELL_TP_CLIENT_H__ */
|
||||||
|
Reference in New Issue
Block a user