Compare commits
54 Commits
3.13.2
...
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 | |||
829e7623df | |||
89675c9061 | |||
f9df83802d | |||
e51eb723fc | |||
5b61f2d642 | |||
094669baee | |||
f6b5385495 | |||
524e2df708 | |||
9f887d9a28 | |||
214a41793f | |||
2e40ffc558 | |||
3584887938 | |||
0d6c002b8e | |||
ec714864f2 | |||
1b77149ec9 | |||
93c9e031e3 | |||
3ff4277f86 | |||
2a63267be0 | |||
2b365627ed | |||
b8f0d0f0dc | |||
df1bed941d | |||
604085fdb9 |
@ -1,5 +1,4 @@
|
||||
[org.gnome.shell.overrides]
|
||||
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
|
||||
button-layout = /desktop/gnome/shell/windows/button_layout
|
||||
edge-tiling = /desktop/gnome/shell/windows/edge_tiling
|
||||
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary
|
||||
|
@ -403,13 +403,18 @@ StScrollBar StButton#vhandle:active {
|
||||
icon-size: 16px;
|
||||
}
|
||||
|
||||
.no-networks-label {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.no-networks-box {
|
||||
spacing: 12px;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
|
||||
.candidate-page-button,
|
||||
.notification-button,
|
||||
.notification-icon-button,
|
||||
.hotplug-notification-item,
|
||||
.hotplug-resident-eject-button,
|
||||
.modal-dialog-button,
|
||||
.app-view-control {
|
||||
border: 1px solid #8b8b8b;
|
||||
@ -423,17 +428,12 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.candidate-page-button:hover,
|
||||
.notification-button:hover,
|
||||
.notification-icon-button:hover,
|
||||
.hotplug-notification-item:hover,
|
||||
.hotplug-resident-eject-button:hover,
|
||||
.modal-dialog-button:hover {
|
||||
background-gradient-start: rgba(255, 255, 255, 0.3);
|
||||
background-gradient-end: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.notification-button:focus,
|
||||
.notification-icon-button:focus,
|
||||
.hotplug-notification-item:focus,
|
||||
.modal-dialog-button:focus,
|
||||
.app-view-control:focus {
|
||||
@ -447,10 +447,7 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
.candidate-page-button:active,
|
||||
.candidate-page-button:pressed,
|
||||
.notification-button:active,
|
||||
.notification-icon-button:active,
|
||||
.hotplug-notification-item:active,
|
||||
.hotplug-resident-eject-button:active,
|
||||
.modal-dialog-button:active,
|
||||
.modal-dialog-button:pressed,
|
||||
.app-view-control:checked {
|
||||
@ -459,8 +456,6 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.candidate-page-button:insensitive,
|
||||
.notification-button:insensitive,
|
||||
.notification-icon-button:insensitive,
|
||||
.modal-dialog-button:insensitive {
|
||||
border-color: #666666;
|
||||
color: #9f9f9f;
|
||||
@ -472,7 +467,6 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
#searchEntry,
|
||||
.modal-dialog-button,
|
||||
.notification-button,
|
||||
.hotplug-notification-item,
|
||||
.app-view-controls,
|
||||
#screenShieldNotifications {
|
||||
@ -1300,8 +1294,6 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
.calendar {
|
||||
padding: .4em 1.75em .8em 1.75em;
|
||||
spacing-rows: 0px;
|
||||
spacing-columns: 0px;
|
||||
}
|
||||
|
||||
.calendar-month-label {
|
||||
@ -1497,48 +1489,16 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-right: 8pt;
|
||||
}
|
||||
|
||||
.url-highlighter {
|
||||
link-color: #ccccff;
|
||||
}
|
||||
|
||||
/* Message Tray */
|
||||
|
||||
#message-tray {
|
||||
background: #2e3436 url(message-tray-background.png);
|
||||
background-repeat: repeat;
|
||||
height: 72px;
|
||||
}
|
||||
|
||||
.message-tray-summary {
|
||||
height: 72px;
|
||||
}
|
||||
|
||||
.message-tray-menu-button StIcon {
|
||||
padding: 0 20px;
|
||||
color: #aaaaaa;
|
||||
icon-size: 24px;
|
||||
}
|
||||
|
||||
.message-tray-menu-button:hover StIcon,
|
||||
.message-tray-menu-button:active StIcon,
|
||||
.message-tray-menu-button:focus StIcon {
|
||||
color: #eeeeee;
|
||||
}
|
||||
|
||||
.no-messages-label,
|
||||
.no-networks-label {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.no-networks-box {
|
||||
spacing: 12px;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
background: rgba(0,0,0,0.9);
|
||||
padding: 8px 8px 4px 8px;
|
||||
spacing-rows: 4px;
|
||||
spacing-columns: 10px;
|
||||
.url-highlighter {
|
||||
link-color: #ccccff;
|
||||
}
|
||||
|
||||
.notification, #notification-container {
|
||||
@ -1546,62 +1506,56 @@ StScrollBar StButton#vhandle:active {
|
||||
width: 34em;
|
||||
}
|
||||
|
||||
.notification.multi-line-notification {
|
||||
padding-bottom: 8px;
|
||||
.notification-main-button,
|
||||
.notification-button {
|
||||
background: rgba(0,0,0,0.9);
|
||||
}
|
||||
|
||||
.notification-unexpanded {
|
||||
/* We want to force the actor at a specific size, irrespective
|
||||
of its minimum and preferred size, so we override both */
|
||||
min-height: 36px;
|
||||
height: 36px;
|
||||
.notification-main-button {
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
}
|
||||
|
||||
/* We use row-span = 2 for the image cell, which prevents its height preferences to be
|
||||
taken into account during allocation, so its height ends up being limited by the height
|
||||
of the content in the other rows. To avoid showing a stretched image, we set the minimum
|
||||
height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */
|
||||
.notification-with-image {
|
||||
min-height: 159px;
|
||||
.notification-main-content {
|
||||
padding: 8px;
|
||||
spacing: 8px;
|
||||
}
|
||||
|
||||
.summary-boxpointer {
|
||||
-arrow-border-radius: 15px;
|
||||
-arrow-background-color: rgba(0,0,0,0.9);
|
||||
-arrow-base: 36px;
|
||||
-arrow-rise: 18px;
|
||||
color: white;
|
||||
-boxpointer-gap: 4px;
|
||||
.notification-close-button {
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.summary-boxpointer .notification {
|
||||
border-radius: 9px;
|
||||
background: rgba(0,0,0,0) !important;
|
||||
padding-bottom: 12px;
|
||||
.notification-action-area {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.summary-boxpointer #summary-right-click-menu {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
.notification-action-area,
|
||||
.notification-button {
|
||||
border-top: 1px solid #666;
|
||||
}
|
||||
|
||||
.summary-notification-stack-scrollview {
|
||||
max-height: 18em;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
.notification-button {
|
||||
padding: 8px 0px;
|
||||
border-right: 1px solid #666;
|
||||
}
|
||||
|
||||
.summary-notification-stack-scrollview:ltr {
|
||||
padding-right: 8px;
|
||||
.notification-main-button:hover,
|
||||
.notification-button:hover,
|
||||
.notification-close-button:hover {
|
||||
background: rgba(100,100,100,0.9);
|
||||
}
|
||||
|
||||
.summary-notification-stack-scrollview:rtl {
|
||||
padding-left: 8px;
|
||||
.notification-main-button:active,
|
||||
.notification-button:active {
|
||||
background: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.notification-scrollview {
|
||||
max-height: 10em;
|
||||
-st-vfade-offset: 24px;
|
||||
.notification-button:last-child {
|
||||
border-right-width: 0px;
|
||||
}
|
||||
|
||||
.notification-title-box {
|
||||
spacing: 8px;
|
||||
}
|
||||
|
||||
.notification-scrollview:ltr > StScrollBar {
|
||||
@ -1612,37 +1566,9 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
.notification-body {
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
.notification-actions {
|
||||
padding-top: 18px;
|
||||
spacing: 10px;
|
||||
}
|
||||
|
||||
.notification-button {
|
||||
-st-natural-width: 140px;
|
||||
padding: 4px 4px 5px;
|
||||
}
|
||||
|
||||
.notification-button:focus {
|
||||
-st-natural-width: 138px;
|
||||
padding: 3px 4px 4px;
|
||||
}
|
||||
|
||||
.notification-icon-button {
|
||||
border-radius: 5px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.notification-icon-button:focus {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.notification-icon-button > StIcon {
|
||||
icon-size: 16px;
|
||||
padding: 8px;
|
||||
.notification-scrollview {
|
||||
max-height: 10em;
|
||||
-st-vfade-offset: 24px;
|
||||
}
|
||||
|
||||
.secondary-icon {
|
||||
@ -1667,45 +1593,6 @@ StScrollBar StButton#vhandle:active {
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
.hotplug-resident-box {
|
||||
spacing: 8px;
|
||||
}
|
||||
|
||||
.hotplug-resident-mount {
|
||||
spacing: 8px;
|
||||
border-radius: 4px;
|
||||
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.hotplug-resident-mount:hover {
|
||||
background-gradient-direction: horizontal;
|
||||
background-gradient-start: rgba(255, 255, 255, 0.1);
|
||||
background-gradient-end: rgba(255, 255, 255, 0);
|
||||
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.hotplug-resident-mount-label {
|
||||
color: inherit;
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.hotplug-resident-mount-icon {
|
||||
icon-size: 24px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.hotplug-resident-eject-icon {
|
||||
icon-size: 16px;
|
||||
}
|
||||
|
||||
.hotplug-resident-eject-button {
|
||||
padding: 7px;
|
||||
border-radius: 5px;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.chat-log-message {
|
||||
color: #888888;
|
||||
}
|
||||
@ -1745,7 +1632,11 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
.chat-notification-scrollview{
|
||||
.chat-notification-body-box {
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
.chat-notification-scrollview {
|
||||
max-height: 22em;
|
||||
}
|
||||
|
||||
@ -2664,8 +2555,7 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
#screenShieldNotifications .notification-button,
|
||||
#screenShieldNotifications .notification-icon-button {
|
||||
#screenShieldNotifications .notification-button {
|
||||
border: 1px rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
@ -2701,3 +2591,7 @@ StScrollBar StButton#vhandle:active {
|
||||
-boxpointer-gap: 4px;
|
||||
-arrow-rise: 0px;
|
||||
}
|
||||
|
||||
.top-bar-notification-preview {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
@ -66,6 +66,7 @@ IGNORE_HFILES= \
|
||||
gactionmuxer.h \
|
||||
gactionobservable.h \
|
||||
gactionobserver.h \
|
||||
shell-network-agent.h \
|
||||
shell-recorder-src.h
|
||||
|
||||
if !BUILD_RECORDER
|
||||
|
@ -50,7 +50,6 @@
|
||||
<xi:include href="xml/shell-wm.xml"/>
|
||||
<xi:include href="xml/shell-util.xml"/>
|
||||
<xi:include href="xml/shell-mount-operation.xml"/>
|
||||
<xi:include href="xml/shell-network-agent.xml"/>
|
||||
<xi:include href="xml/shell-polkit-authentication-agent.xml"/>
|
||||
<xi:include href="xml/shell-tp-client.xml"/>
|
||||
</chapter>
|
||||
|
@ -48,8 +48,6 @@ const _SCROLL_ANIMATION_TIME = 0.5;
|
||||
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
||||
const _LOGO_ICON_HEIGHT = 48;
|
||||
|
||||
let _loginDialog = null;
|
||||
|
||||
const UserListItem = new Lang.Class({
|
||||
Name: 'UserListItem',
|
||||
|
||||
|
@ -372,7 +372,7 @@ const WindowSwitcherPopup = new Lang.Class({
|
||||
|
||||
_getWindowList: function() {
|
||||
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
|
||||
return global.display.get_tab_list(Meta.TabList.NORMAL, global.screen, workspace);
|
||||
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
||||
},
|
||||
|
||||
_createSwitcher: function() {
|
||||
@ -459,8 +459,7 @@ const AppSwitcher = new Lang.Class({
|
||||
let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' });
|
||||
let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace()
|
||||
: null;
|
||||
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL,
|
||||
global.screen, workspace);
|
||||
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
||||
|
||||
// Construct the AppIcons, add to the popup
|
||||
for (let i = 0; i < apps.length; i++) {
|
||||
|
@ -16,6 +16,7 @@ const Atk = imports.gi.Atk;
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const DND = imports.ui.dnd;
|
||||
const GrabHelper = imports.ui.grabHelper;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const Main = imports.ui.main;
|
||||
const Overview = imports.ui.overview;
|
||||
@ -1249,18 +1250,7 @@ const AppFolderPopup = new Lang.Class({
|
||||
function() {
|
||||
this.actor.destroy();
|
||||
}));
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
|
||||
},
|
||||
|
||||
_onKeyPress: function(actor, event) {
|
||||
if (!this._isOpen)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (event.get_key_symbol() != Clutter.KEY_Escape)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
this.popdown();
|
||||
return Clutter.EVENT_STOP;
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
@ -1274,6 +1264,12 @@ const AppFolderPopup = new Lang.Class({
|
||||
if (this._isOpen)
|
||||
return;
|
||||
|
||||
this._isOpen = this._grabHelper.grab({ actor: this.actor,
|
||||
onUngrab: Lang.bind(this, this.popdown) });
|
||||
|
||||
if (!this._isOpen)
|
||||
return;
|
||||
|
||||
this.actor.show();
|
||||
|
||||
this._boxPointer.setArrowActor(this._source.actor);
|
||||
@ -1282,7 +1278,6 @@ const AppFolderPopup = new Lang.Class({
|
||||
|
||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
|
||||
this._isOpen = true;
|
||||
this.emit('open-state-changed', true);
|
||||
},
|
||||
|
||||
@ -1290,6 +1285,8 @@ const AppFolderPopup = new Lang.Class({
|
||||
if (!this._isOpen)
|
||||
return;
|
||||
|
||||
this._grabHelper.ungrab({ actor: this.actor });
|
||||
|
||||
this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
|
||||
BoxPointer.PopupAnimation.SLIDE);
|
||||
this._isOpen = false;
|
||||
|
@ -408,9 +408,9 @@ const Calendar = new Lang.Class({
|
||||
|
||||
this._shouldDateGrabFocus = false;
|
||||
|
||||
this.actor = new St.Table({ homogeneous: false,
|
||||
style_class: 'calendar',
|
||||
reactive: true });
|
||||
this.actor = new St.Widget({ style_class: 'calendar',
|
||||
layout_manager: new Clutter.TableLayout(),
|
||||
reactive: true });
|
||||
|
||||
this.actor.connect('scroll-event',
|
||||
Lang.bind(this, this._onScroll));
|
||||
@ -441,13 +441,14 @@ const Calendar = new Lang.Class({
|
||||
},
|
||||
|
||||
_buildHeader: function() {
|
||||
let layout = this.actor.layout_manager;
|
||||
let offsetCols = this._useWeekdate ? 1 : 0;
|
||||
this.actor.destroy_all_children();
|
||||
|
||||
// Top line of the calendar '<| September 2009 |>'
|
||||
this._topBox = new St.BoxLayout();
|
||||
this.actor.add(this._topBox,
|
||||
{ row: 0, col: 0, col_span: offsetCols + 7 });
|
||||
layout.pack(this._topBox, 0, 0);
|
||||
layout.set_span(this._topBox, offsetCols + 7, 1);
|
||||
|
||||
this._backButton = new St.Button({ style_class: 'calendar-change-month-back',
|
||||
accessible_name: _("Previous month"),
|
||||
@ -479,10 +480,8 @@ const Calendar = new Lang.Class({
|
||||
let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay());
|
||||
let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading',
|
||||
text: customDayAbbrev });
|
||||
this.actor.add(label,
|
||||
{ row: 1,
|
||||
col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7,
|
||||
x_fill: false, x_align: St.Align.MIDDLE });
|
||||
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
|
||||
layout.pack(label, col, 1);
|
||||
iter.setTime(iter.getTime() + MSECS_IN_DAY);
|
||||
}
|
||||
|
||||
@ -601,6 +600,7 @@ const Calendar = new Lang.Class({
|
||||
|
||||
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
|
||||
|
||||
let layout = this.actor.layout_manager;
|
||||
let iter = new Date(beginDate);
|
||||
let row = 2;
|
||||
// nRows here means 6 weeks + one header + one navbar
|
||||
@ -648,16 +648,15 @@ const Calendar = new Lang.Class({
|
||||
button.style_class = styleClass;
|
||||
|
||||
let offsetCols = this._useWeekdate ? 1 : 0;
|
||||
this.actor.add(button,
|
||||
{ row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 });
|
||||
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
|
||||
layout.pack(button, col, row);
|
||||
|
||||
this._buttons.push(button);
|
||||
|
||||
if (this._useWeekdate && iter.getDay() == 4) {
|
||||
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
|
||||
style_class: 'calendar-day-base calendar-week-number'});
|
||||
this.actor.add(label,
|
||||
{ row: row, col: 0, y_align: St.Align.MIDDLE });
|
||||
layout.pack(label, 0, row);
|
||||
}
|
||||
|
||||
iter.setTime(iter.getTime() + MSECS_IN_DAY);
|
||||
@ -700,7 +699,10 @@ const EventsList = new Lang.Class({
|
||||
Name: 'EventsList',
|
||||
|
||||
_init: function() {
|
||||
this.actor = new St.Table({ style_class: 'events-table' });
|
||||
let layout = new Clutter.TableLayout();
|
||||
this.actor = new St.Widget({ style_class: 'events-table',
|
||||
layout_manager: layout });
|
||||
layout.hookup_style(this.actor);
|
||||
this._date = new Date();
|
||||
this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
|
||||
this._desktopSettings.connect('changed', Lang.bind(this, this._update));
|
||||
@ -724,9 +726,11 @@ const EventsList = new Lang.Class({
|
||||
dayLabel.clutter_text.line_wrap = false;
|
||||
dayLabel.clutter_text.ellipsize = false;
|
||||
|
||||
this.actor.add(dayLabel, { row: index, col: 0,
|
||||
x_expand: false, x_align: St.Align.END,
|
||||
y_fill: false, y_align: St.Align.START });
|
||||
let layout = this.actor.layout_manager;
|
||||
layout.pack(dayLabel, 0, index);
|
||||
layout.child_set(dayLabel, { x_expand: false,
|
||||
x_align: Clutter.TableAlignment.END,
|
||||
y_align: Clutter.TableAlignment.START });
|
||||
|
||||
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
|
||||
let timeString = _formatEventTime(event, clockFormat);
|
||||
@ -735,18 +739,17 @@ const EventsList = new Lang.Class({
|
||||
timeLabel.clutter_text.line_wrap = false;
|
||||
timeLabel.clutter_text.ellipsize = false;
|
||||
|
||||
this.actor.add(timeLabel, { row: index, col: 1,
|
||||
x_expand: false, x_align: St.Align.MIDDLE,
|
||||
y_fill: false, y_align: St.Align.START });
|
||||
layout.pack(timeLabel, 1, index);
|
||||
layout.child_set(timeLabel, { x_expand: false,
|
||||
y_align: Clutter.TableAlignment.START });
|
||||
|
||||
let titleLabel = new St.Label({ style_class: 'events-day-task',
|
||||
text: event.summary });
|
||||
titleLabel.clutter_text.line_wrap = true;
|
||||
titleLabel.clutter_text.ellipsize = false;
|
||||
|
||||
this.actor.add(titleLabel, { row: index, col: 2,
|
||||
x_expand: true, x_align: St.Align.START,
|
||||
y_fill: false, y_align: St.Align.START });
|
||||
layout.pack(titleLabel, 2, index);
|
||||
layout.child_set(titleLabel, { x_expand: true });
|
||||
},
|
||||
|
||||
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
|
||||
@ -755,13 +758,10 @@ const EventsList = new Lang.Class({
|
||||
if (events.length == 0 && !showNothingScheduled)
|
||||
return index;
|
||||
|
||||
this.actor.add(new St.Label({ style_class: 'events-day-header', text: header }),
|
||||
{ row: index, col: 0, col_span: 3,
|
||||
// In theory, x_expand should be true here, but x_expand
|
||||
// is a property of the column for StTable, ie all day cells
|
||||
// get it too
|
||||
x_expand: false, x_align: St.Align.START,
|
||||
y_fill: false, y_align: St.Align.START });
|
||||
let label = new St.Label({ style_class: 'events-day-header', text: header });
|
||||
let layout = this.actor.layout_manager;
|
||||
layout.pack(label, 0, index);
|
||||
layout.child_set(label, { column_span: 3, x_expand: false });
|
||||
index++;
|
||||
|
||||
for (let n = 0; n < events.length; n++) {
|
||||
|
@ -170,17 +170,6 @@ const AutorunManager = new Lang.Class({
|
||||
this._transDispatcher = new AutorunTransientDispatcher(this);
|
||||
},
|
||||
|
||||
_ensureResidentSource: function() {
|
||||
if (this._residentSource)
|
||||
return;
|
||||
|
||||
this._residentSource = new AutorunResidentSource(this);
|
||||
let destroyId = this._residentSource.connect('destroy', Lang.bind(this, function() {
|
||||
this._residentSource.disconnect(destroyId);
|
||||
this._residentSource = null;
|
||||
}));
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
this._scanMounts();
|
||||
|
||||
@ -189,17 +178,12 @@ const AutorunManager = new Lang.Class({
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
if (this._residentSource)
|
||||
this._residentSource.destroy();
|
||||
this._volumeMonitor.disconnect(this._mountAddedId);
|
||||
this._volumeMonitor.disconnect(this._mountRemovedId);
|
||||
},
|
||||
|
||||
_processMount: function(mount, hotplug) {
|
||||
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
|
||||
this._ensureResidentSource();
|
||||
this._residentSource.addMount(mount, apps);
|
||||
|
||||
if (hotplug)
|
||||
this._transDispatcher.addMount(mount, apps, contentTypes);
|
||||
}));
|
||||
@ -224,8 +208,6 @@ const AutorunManager = new Lang.Class({
|
||||
|
||||
_onMountRemoved: function(monitor, mount) {
|
||||
this._transDispatcher.removeMount(mount);
|
||||
if (this._residentSource)
|
||||
this._residentSource.removeMount(mount);
|
||||
},
|
||||
|
||||
ejectMount: function(mount) {
|
||||
@ -288,153 +270,6 @@ const AutorunManager = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const AutorunResidentSource = new Lang.Class({
|
||||
Name: 'AutorunResidentSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(manager) {
|
||||
this.parent(_("Removable Devices"), 'media-removable');
|
||||
this.resident = true;
|
||||
|
||||
this._mounts = [];
|
||||
|
||||
this._manager = manager;
|
||||
this._notification = new AutorunResidentNotification(this._manager, this);
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
return new MessageTray.NotificationPolicy({ showInLockScreen: false });
|
||||
},
|
||||
|
||||
buildRightClickMenu: function() {
|
||||
return null;
|
||||
},
|
||||
|
||||
addMount: function(mount, apps) {
|
||||
if (!shouldAutorunMount(mount, false))
|
||||
return;
|
||||
|
||||
let filtered = this._mounts.filter(function (element) {
|
||||
return (element.mount == mount);
|
||||
});
|
||||
|
||||
if (filtered.length != 0)
|
||||
return;
|
||||
|
||||
let element = { mount: mount, apps: apps };
|
||||
this._mounts.push(element);
|
||||
this._redisplay();
|
||||
},
|
||||
|
||||
removeMount: function(mount) {
|
||||
this._mounts =
|
||||
this._mounts.filter(function (element) {
|
||||
return (element.mount != mount);
|
||||
});
|
||||
|
||||
this._redisplay();
|
||||
},
|
||||
|
||||
_redisplay: function() {
|
||||
if (this._mounts.length == 0) {
|
||||
this._notification.destroy();
|
||||
this.destroy();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this._notification.updateForMounts(this._mounts);
|
||||
|
||||
// add ourselves as a source, and push the notification
|
||||
if (!Main.messageTray.contains(this)) {
|
||||
Main.messageTray.add(this);
|
||||
this.pushNotification(this._notification);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const AutorunResidentNotification = new Lang.Class({
|
||||
Name: 'AutorunResidentNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(manager, source) {
|
||||
this.parent(source, source.title, null, { customContent: true });
|
||||
|
||||
// set the notification as resident
|
||||
this.setResident(true);
|
||||
|
||||
this._layout = new St.BoxLayout ({ style_class: 'hotplug-resident-box',
|
||||
vertical: true });
|
||||
this._manager = manager;
|
||||
|
||||
this.addActor(this._layout,
|
||||
{ x_expand: true,
|
||||
x_fill: true });
|
||||
},
|
||||
|
||||
updateForMounts: function(mounts) {
|
||||
// remove all the layout content
|
||||
this._layout.destroy_all_children();
|
||||
|
||||
for (let idx = 0; idx < mounts.length; idx++) {
|
||||
let element = mounts[idx];
|
||||
|
||||
let actor = this._itemForMount(element.mount, element.apps);
|
||||
this._layout.add(actor, { x_fill: true,
|
||||
expand: true });
|
||||
}
|
||||
},
|
||||
|
||||
_itemForMount: function(mount, apps) {
|
||||
let item = new St.BoxLayout();
|
||||
|
||||
// prepare the mount button content
|
||||
let mountLayout = new St.BoxLayout();
|
||||
|
||||
let mountIcon = new St.Icon({ gicon: mount.get_icon(),
|
||||
style_class: 'hotplug-resident-mount-icon' });
|
||||
mountLayout.add_actor(mountIcon);
|
||||
|
||||
let labelBin = new St.Bin({ y_align: St.Align.MIDDLE });
|
||||
let mountLabel =
|
||||
new St.Label({ text: mount.get_name(),
|
||||
style_class: 'hotplug-resident-mount-label',
|
||||
track_hover: true,
|
||||
reactive: true });
|
||||
labelBin.add_actor(mountLabel);
|
||||
mountLayout.add_actor(labelBin);
|
||||
|
||||
let mountButton = new St.Button({ child: mountLayout,
|
||||
x_align: St.Align.START,
|
||||
x_fill: true,
|
||||
style_class: 'hotplug-resident-mount',
|
||||
button_mask: St.ButtonMask.ONE });
|
||||
item.add(mountButton, { x_align: St.Align.START,
|
||||
expand: true });
|
||||
|
||||
let ejectIcon =
|
||||
new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'hotplug-resident-eject-icon' });
|
||||
|
||||
let ejectButton =
|
||||
new St.Button({ style_class: 'hotplug-resident-eject-button',
|
||||
button_mask: St.ButtonMask.ONE,
|
||||
child: ejectIcon });
|
||||
item.add(ejectButton, { x_align: St.Align.END });
|
||||
|
||||
// now connect signals
|
||||
mountButton.connect('clicked', Lang.bind(this, function(actor, event) {
|
||||
startAppForMount(apps[0], mount);
|
||||
}));
|
||||
|
||||
ejectButton.connect('clicked', Lang.bind(this, function() {
|
||||
this._manager.ejectMount(mount);
|
||||
}));
|
||||
|
||||
return item;
|
||||
},
|
||||
});
|
||||
|
||||
const AutorunTransientDispatcher = new Lang.Class({
|
||||
Name: 'AutorunTransientDispatcher',
|
||||
|
||||
@ -559,12 +394,12 @@ const AutorunTransientNotification = new Lang.Class({
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(manager, source) {
|
||||
this.parent(source, source.title, null, { customContent: true });
|
||||
this.parent(source, source.title);
|
||||
|
||||
this._manager = manager;
|
||||
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
|
||||
vertical: true });
|
||||
this.addActor(this._box);
|
||||
this._bodyBin.child = this._box;
|
||||
|
||||
this._mount = source.mount;
|
||||
|
||||
@ -581,7 +416,6 @@ const AutorunTransientNotification = new Lang.Class({
|
||||
|
||||
// set the notification to transient and urgent, so that it
|
||||
// expands out
|
||||
this.setTransient(true);
|
||||
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||
},
|
||||
|
||||
|
@ -102,15 +102,6 @@ const TelepathyClient = new Lang.Class({
|
||||
this._tpClient.set_handle_channels_func(
|
||||
Lang.bind(this, this._handleChannels));
|
||||
|
||||
// Watch subscription requests and connection errors
|
||||
this._subscriptionSource = null;
|
||||
this._accountSource = null;
|
||||
|
||||
// Workaround for gjs not supporting GPtrArray in signals.
|
||||
// See BGO bug #653941 for context.
|
||||
this._tpClient.set_contact_list_changed_func(
|
||||
Lang.bind(this, this._contactListChanged));
|
||||
|
||||
// Allow other clients (such as Empathy) to pre-empt our channels if
|
||||
// needed
|
||||
this._tpClient.set_delegated_channels_callback(
|
||||
@ -124,17 +115,12 @@ const TelepathyClient = new Lang.Class({
|
||||
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
|
||||
}
|
||||
|
||||
this._accountManagerValidityChangedId = this._accountManager.connect('account-validity-changed',
|
||||
Lang.bind(this, this._accountValidityChanged));
|
||||
|
||||
if (!this._accountManager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
|
||||
this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared));
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
this._tpClient.unregister();
|
||||
this._accountManager.disconnect(this._accountManagerValidityChangedId);
|
||||
this._accountManagerValidityChangedId = 0;
|
||||
},
|
||||
|
||||
_observeChannels: function(observer, account, conn, channels,
|
||||
@ -219,33 +205,6 @@ const TelepathyClient = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_displayRoomInvitation: function(conn, channel, dispatchOp, context) {
|
||||
// We can only approve the rooms if we have been invited to it
|
||||
let selfContact = channel.group_get_self_contact();
|
||||
if (selfContact == null) {
|
||||
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
|
||||
message: 'Not invited to the room' }));
|
||||
return;
|
||||
}
|
||||
|
||||
let [invited, inviter, reason, msg] = channel.group_get_local_pending_contact_info(selfContact);
|
||||
if (!invited) {
|
||||
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
|
||||
message: 'Not invited to the room' }));
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||
// system-users for now as Empathy does.
|
||||
let source = new ApproverSource(dispatchOp, _("Invitation"),
|
||||
Gio.icon_new_for_string('system-users'));
|
||||
Main.messageTray.add(source);
|
||||
|
||||
let notif = new RoomInviteNotification(source, dispatchOp, channel, inviter);
|
||||
source.notify(notif);
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_approveChannels: function(approver, account, conn, channels,
|
||||
dispatchOp, context) {
|
||||
let channel = channels[0];
|
||||
@ -259,10 +218,6 @@ const TelepathyClient = new Lang.Class({
|
||||
|
||||
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
|
||||
this._approveTextChannel(account, conn, channel, dispatchOp, context);
|
||||
else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL)
|
||||
this._approveCall(account, conn, channel, dispatchOp, context);
|
||||
else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER)
|
||||
this._approveFileTransfer(account, conn, channel, dispatchOp, context);
|
||||
else
|
||||
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
|
||||
message: 'Unsupported channel type' }));
|
||||
@ -283,45 +238,9 @@ const TelepathyClient = new Lang.Class({
|
||||
}}));
|
||||
|
||||
context.accept();
|
||||
} else {
|
||||
this._displayRoomInvitation(conn, channel, dispatchOp, context);
|
||||
}
|
||||
},
|
||||
|
||||
_approveCall: function(account, conn, channel, dispatchOp, context) {
|
||||
let isVideo = false;
|
||||
|
||||
let props = channel.borrow_immutable_properties();
|
||||
|
||||
if (props[Tp.PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO])
|
||||
isVideo = true;
|
||||
|
||||
// We got the TpContact
|
||||
let source = new ApproverSource(dispatchOp, _("Call"), isVideo ?
|
||||
Gio.icon_new_for_string('camera-web') :
|
||||
Gio.icon_new_for_string('audio-input-microphone'));
|
||||
Main.messageTray.add(source);
|
||||
|
||||
let notif = new AudioVideoNotification(source, dispatchOp, channel,
|
||||
channel.get_target_contact(), isVideo);
|
||||
source.notify(notif);
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_approveFileTransfer: function(account, conn, channel, dispatchOp, context) {
|
||||
// Use the icon of the file being transferred
|
||||
let gicon = Gio.content_type_get_icon(channel.get_mime_type());
|
||||
|
||||
// We got the TpContact
|
||||
let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon);
|
||||
Main.messageTray.add(source);
|
||||
|
||||
let notif = new FileTransferNotification(source, dispatchOp, channel,
|
||||
channel.get_target_contact());
|
||||
source.notify(notif);
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_delegatedChannelsCb: function(client, channels) {
|
||||
// Nothing to do as we don't make a distinction between observed and
|
||||
// handled channels.
|
||||
@ -329,105 +248,7 @@ const TelepathyClient = new Lang.Class({
|
||||
|
||||
_accountManagerPrepared: function(am, result) {
|
||||
am.prepare_finish(result);
|
||||
|
||||
let accounts = am.get_valid_accounts();
|
||||
for (let i = 0; i < accounts.length; i++) {
|
||||
this._accountValidityChanged(am, accounts[i], true);
|
||||
}
|
||||
},
|
||||
|
||||
_accountValidityChanged: function(am, account, valid) {
|
||||
if (!valid)
|
||||
return;
|
||||
|
||||
// It would be better to connect to "status-changed" but we cannot.
|
||||
// See discussion in https://bugzilla.gnome.org/show_bug.cgi?id=654159
|
||||
account.connect("notify::connection-status",
|
||||
Lang.bind(this, this._accountConnectionStatusNotifyCb));
|
||||
|
||||
account.connect('notify::connection',
|
||||
Lang.bind(this, this._connectionChanged));
|
||||
this._connectionChanged(account);
|
||||
},
|
||||
|
||||
_connectionChanged: function(account) {
|
||||
let conn = account.get_connection();
|
||||
if (conn == null)
|
||||
return;
|
||||
|
||||
this._tpClient.grab_contact_list_changed(conn);
|
||||
if (conn.get_contact_list_state() == Tp.ContactListState.SUCCESS) {
|
||||
this._contactListChanged(conn, conn.dup_contact_list(), []);
|
||||
}
|
||||
},
|
||||
|
||||
_contactListChanged: function(conn, added, removed) {
|
||||
for (let i = 0; i < added.length; i++) {
|
||||
let contact = added[i];
|
||||
|
||||
contact.connect('subscription-states-changed',
|
||||
Lang.bind(this, this._subscriptionStateChanged));
|
||||
this._subscriptionStateChanged(contact);
|
||||
}
|
||||
},
|
||||
|
||||
_subscriptionStateChanged: function(contact) {
|
||||
if (contact.get_publish_state() != Tp.SubscriptionState.ASK)
|
||||
return;
|
||||
|
||||
/* Implicitly accept publish requests if contact is already subscribed */
|
||||
if (contact.get_subscribe_state() == Tp.SubscriptionState.YES ||
|
||||
contact.get_subscribe_state() == Tp.SubscriptionState.ASK) {
|
||||
|
||||
contact.authorize_publication_async(function(src, result) {
|
||||
src.authorize_publication_finish(result)});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* Display notification to ask user to accept/reject request */
|
||||
let source = this._ensureAppSource();
|
||||
|
||||
let notif = new SubscriptionRequestNotification(source, contact);
|
||||
source.notify(notif);
|
||||
},
|
||||
|
||||
_accountConnectionStatusNotifyCb: function(account) {
|
||||
let connectionError = account.connection_error;
|
||||
|
||||
if (account.connection_status != Tp.ConnectionStatus.DISCONNECTED ||
|
||||
connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED)) {
|
||||
return;
|
||||
}
|
||||
|
||||
let notif = this._accountNotifications[account.get_object_path()];
|
||||
if (notif)
|
||||
return;
|
||||
|
||||
/* Display notification that account failed to connect */
|
||||
let source = this._ensureAppSource();
|
||||
|
||||
notif = new AccountNotification(source, account, connectionError);
|
||||
this._accountNotifications[account.get_object_path()] = notif;
|
||||
notif.connect('destroy', Lang.bind(this, function() {
|
||||
delete this._accountNotifications[account.get_object_path()];
|
||||
}));
|
||||
source.notify(notif);
|
||||
},
|
||||
|
||||
_ensureAppSource: function() {
|
||||
if (this._appSource == null) {
|
||||
this._appSource = new MessageTray.Source(_("Chat"), 'empathy');
|
||||
this._appSource.policy = new MessageTray.NotificationApplicationPolicy('empathy');
|
||||
|
||||
Main.messageTray.add(this._appSource);
|
||||
this._appSource.connect('destroy', Lang.bind(this, function () {
|
||||
this._appSource = null;
|
||||
}));
|
||||
}
|
||||
|
||||
return this._appSource;
|
||||
}
|
||||
});
|
||||
|
||||
const ChatSource = new Lang.Class({
|
||||
@ -545,7 +366,7 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
_updateAvatarIcon: function() {
|
||||
this.iconUpdated();
|
||||
this._notification.update(this._notification.title, null, { customContent: true });
|
||||
this._notification.update(this._notification.title);
|
||||
},
|
||||
|
||||
open: function() {
|
||||
@ -737,7 +558,7 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
title = GLib.markup_escape_text(this.title, -1);
|
||||
|
||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
|
||||
this._notification.update(this._notification.title, null, { secondaryGIcon: this.getSecondaryIcon() });
|
||||
|
||||
if (message)
|
||||
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||
@ -764,8 +585,7 @@ const ChatNotification = new Lang.Class({
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source) {
|
||||
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
|
||||
this.setResident(true);
|
||||
this.parent(source, source.title, null, { secondaryGIcon: source.getSecondaryIcon() });
|
||||
|
||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||
can_focus: true });
|
||||
@ -781,16 +601,17 @@ const ChatNotification = new Lang.Class({
|
||||
this.emit('unfocused');
|
||||
}));
|
||||
|
||||
this._createScrollArea();
|
||||
this._lastGroup = null;
|
||||
this._lastGroupActor = null;
|
||||
|
||||
this._bodyBox = new St.BoxLayout({ style_class: 'chat-notification-body-box' });
|
||||
this._bodyBin.child = this._bodyBox;
|
||||
|
||||
// Keep track of the bottom position for the current adjustment and
|
||||
// force a scroll to the bottom if things change while we were at the
|
||||
// bottom
|
||||
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
|
||||
this._scrollArea.add_style_class_name('chat-notification-scrollview');
|
||||
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||
this._oldMaxScrollValue = this._bodyScrollArea.vscroll.adjustment.value;
|
||||
this._bodyScrollArea.add_style_class_name('chat-notification-scrollview');
|
||||
this._bodyScrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||
if (adjustment.value == this._oldMaxScrollValue)
|
||||
this.scrollTo(St.Side.BOTTOM);
|
||||
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
|
||||
@ -827,8 +648,7 @@ const ChatNotification = new Lang.Class({
|
||||
}
|
||||
|
||||
if (message.direction == NotificationDirection.RECEIVED) {
|
||||
this.update(this.source.title, messageBody, { customContent: true,
|
||||
bannerMarkup: true });
|
||||
this.update(this.source.title, messageBody, { bannerMarkup: true });
|
||||
}
|
||||
|
||||
let group = (message.direction == NotificationDirection.RECEIVED ?
|
||||
@ -865,7 +685,7 @@ const ChatNotification = new Lang.Class({
|
||||
expired[i].actor.destroy();
|
||||
}
|
||||
|
||||
let groups = this._contentArea.get_children();
|
||||
let groups = this._bodyBox.get_children();
|
||||
for (let i = 0; i < groups.length; i++) {
|
||||
let group = groups[i];
|
||||
if (group.get_n_children() == 0)
|
||||
@ -897,9 +717,9 @@ const ChatNotification = new Lang.Class({
|
||||
if (this._timestampTimeoutId)
|
||||
Mainloop.source_remove(this._timestampTimeoutId);
|
||||
|
||||
let highlighter = new MessageTray.URLHighlighter(props.body,
|
||||
true, // line wrap?
|
||||
true); // allow markup?
|
||||
let highlighter = new MessageTray.URLHighlighter();
|
||||
highlighter.actor.clutter_text.line_wrap = true;
|
||||
highlighter.setMarkup(props.body, true);
|
||||
|
||||
let body = highlighter.actor;
|
||||
|
||||
@ -911,14 +731,12 @@ const ChatNotification = new Lang.Class({
|
||||
if (group != this._lastGroup) {
|
||||
this._lastGroup = group;
|
||||
let emptyLine = new St.Label({ style_class: 'chat-empty-line' });
|
||||
this.addActor(emptyLine);
|
||||
this._bodyBox.add_child(emptyLine);
|
||||
}
|
||||
|
||||
this._lastMessageBox = new St.BoxLayout({ vertical: false });
|
||||
this._lastMessageBox.add(body, props.childProps);
|
||||
this.addActor(this._lastMessageBox);
|
||||
|
||||
this.updated();
|
||||
this._bodyBox.add_child(this._lastMessageBox);
|
||||
|
||||
let timestamp = props.timestamp;
|
||||
this._history.unshift({ actor: body, time: timestamp,
|
||||
@ -949,78 +767,74 @@ const ChatNotification = new Lang.Class({
|
||||
|
||||
let desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
|
||||
let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY);
|
||||
let hasAmPm = date.toLocaleFormat('%p') != '';
|
||||
|
||||
switch (clockFormat) {
|
||||
case '24h':
|
||||
// Show only the time if date is on today
|
||||
if(daysAgo < 1){
|
||||
/* Translators: Time in 24h format */
|
||||
format = _("%H\u2236%M");
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is the word "Yesterday" followed by a
|
||||
time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("Yesterday, %H\u2236%M");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is the week day name followed by a time
|
||||
string in 24h format. i.e. "Monday, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%A, %H\u2236%M");
|
||||
if (clockFormat == '24h' || !hasAmPm) {
|
||||
// Show only the time if date is on today
|
||||
if(daysAgo < 1){
|
||||
/* Translators: Time in 24h format */
|
||||
format = _("%H\u2236%M");
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is the word "Yesterday" followed by a
|
||||
time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("Yesterday, %H\u2236%M");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is the week day name followed by a time
|
||||
string in 24h format. i.e. "Monday, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%A, %H\u2236%M");
|
||||
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is the month name and day number
|
||||
followed by a time string in 24h format.
|
||||
i.e. "May 25, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d, %H\u2236%M");
|
||||
} else {
|
||||
/* Translators: this is the month name, day number, year
|
||||
number followed by a time string in 24h format.
|
||||
i.e. "May 25 2012, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d %Y, %H\u2236%M");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* explicit fall-through */
|
||||
case '12h':
|
||||
// Show only the time if date is on today
|
||||
if(daysAgo < 1){
|
||||
/* Translators: Time in 24h format */
|
||||
format = _("%l\u2236%M %p");
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is the word "Yesterday" followed by a
|
||||
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("Yesterday, %l\u2236%M %p");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is the week day name followed by a time
|
||||
string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%A, %l\u2236%M %p");
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is the month name and day number
|
||||
followed by a time string in 24h format.
|
||||
i.e. "May 25, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d, %H\u2236%M");
|
||||
} else {
|
||||
/* Translators: this is the month name, day number, year
|
||||
number followed by a time string in 24h format.
|
||||
i.e. "May 25 2012, 14:30" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d %Y, %H\u2236%M");
|
||||
}
|
||||
} else {
|
||||
// Show only the time if date is on today
|
||||
if(daysAgo < 1){
|
||||
/* Translators: Time in 24h format */
|
||||
format = _("%l\u2236%M %p");
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is the word "Yesterday" followed by a
|
||||
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("Yesterday, %l\u2236%M %p");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is the week day name followed by a time
|
||||
string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%A, %l\u2236%M %p");
|
||||
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is the month name and day number
|
||||
followed by a time string in 12h format.
|
||||
i.e. "May 25, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d, %l\u2236%M %p");
|
||||
} else {
|
||||
/* Translators: this is the month name, day number, year
|
||||
number followed by a time string in 12h format.
|
||||
i.e. "May 25 2012, 2:30 pm"*/
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d %Y, %l\u2236%M %p");
|
||||
}
|
||||
break;
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is the month name and day number
|
||||
followed by a time string in 12h format.
|
||||
i.e. "May 25, 2:30 pm" */
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d, %l\u2236%M %p");
|
||||
} else {
|
||||
/* Translators: this is the month name, day number, year
|
||||
number followed by a time string in 12h format.
|
||||
i.e. "May 25 2012, 2:30 pm"*/
|
||||
// xgettext:no-c-format
|
||||
format = _("%B %d %Y, %l\u2236%M %p");
|
||||
}
|
||||
}
|
||||
return date.toLocaleFormat(format);
|
||||
},
|
||||
@ -1057,7 +871,7 @@ const ChatNotification = new Lang.Class({
|
||||
group: 'meta',
|
||||
styles: ['chat-meta-message'] });
|
||||
|
||||
this.update(newAlias, null, { customContent: true });
|
||||
this.update(newAlias);
|
||||
|
||||
this._filterMessages();
|
||||
},
|
||||
@ -1110,359 +924,4 @@ const ChatNotification = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const ApproverSource = new Lang.Class({
|
||||
Name: 'ApproverSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(dispatchOp, text, gicon) {
|
||||
this._gicon = gicon;
|
||||
|
||||
this.parent(text);
|
||||
|
||||
this._dispatchOp = dispatchOp;
|
||||
|
||||
// Destroy the source if the channel dispatch operation is invalidated
|
||||
// as we can't approve any more.
|
||||
this._invalidId = dispatchOp.connect('invalidated',
|
||||
Lang.bind(this, function(domain, code, msg) {
|
||||
this.destroy();
|
||||
}));
|
||||
},
|
||||
|
||||
_createPolicy: function() {
|
||||
return new MessageTray.NotificationApplicationPolicy('empathy');
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this._invalidId != 0) {
|
||||
this._dispatchOp.disconnect(this._invalidId);
|
||||
this._invalidId = 0;
|
||||
}
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
return this._gicon;
|
||||
}
|
||||
});
|
||||
|
||||
const RoomInviteNotification = new Lang.Class({
|
||||
Name: 'RoomInviteNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, dispatchOp, channel, inviter) {
|
||||
this.parent(source,
|
||||
/* translators: argument is a room name like
|
||||
* room@jabber.org for example. */
|
||||
_("Invitation to %s").format(channel.get_identifier()),
|
||||
null,
|
||||
{ customContent: true });
|
||||
this.setResident(true);
|
||||
|
||||
/* translators: first argument is the name of a contact and the second
|
||||
* one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
* for example. */
|
||||
this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier()));
|
||||
|
||||
this.addAction(_("Decline"), Lang.bind(this, function() {
|
||||
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
|
||||
src.leave_channels_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
this.addAction(_("Accept"), Lang.bind(this, function() {
|
||||
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
|
||||
src.handle_with_time_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
// Audio Video
|
||||
const AudioVideoNotification = new Lang.Class({
|
||||
Name: 'AudioVideoNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, dispatchOp, channel, contact, isVideo) {
|
||||
let title = '';
|
||||
|
||||
if (isVideo)
|
||||
/* translators: argument is a contact name like Alice for example. */
|
||||
title = _("Video call from %s").format(contact.get_alias());
|
||||
else
|
||||
/* translators: argument is a contact name like Alice for example. */
|
||||
title = _("Call from %s").format(contact.get_alias());
|
||||
|
||||
this.parent(source, title, null, { customContent: true });
|
||||
this.setResident(true);
|
||||
|
||||
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||
|
||||
this.addAction(_("Decline"), Lang.bind(this, function() {
|
||||
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
|
||||
src.leave_channels_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
/* translators: this is a button label (verb), not a noun */
|
||||
this.addAction(_("Answer"), Lang.bind(this, function() {
|
||||
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
|
||||
src.handle_with_time_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
// File Transfer
|
||||
const FileTransferNotification = new Lang.Class({
|
||||
Name: 'FileTransferNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, dispatchOp, channel, contact) {
|
||||
this.parent(source,
|
||||
/* To translators: The first parameter is
|
||||
* the contact's alias and the second one is the
|
||||
* file name. The string will be something
|
||||
* like: "Alice is sending you test.ogg"
|
||||
*/
|
||||
_("%s is sending you %s").format(contact.get_alias(),
|
||||
channel.get_filename()),
|
||||
null,
|
||||
{ customContent: true });
|
||||
this.setResident(true);
|
||||
|
||||
this.addAction(_("Decline"), Lang.bind(this, function() {
|
||||
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
|
||||
src.leave_channels_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
this.addAction(_("Accept"), Lang.bind(this, function() {
|
||||
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
|
||||
src.handle_with_time_finish(result);
|
||||
});
|
||||
this.destroy();
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
// Subscription request
|
||||
const SubscriptionRequestNotification = new Lang.Class({
|
||||
Name: 'SubscriptionRequestNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, contact) {
|
||||
this.parent(source,
|
||||
/* To translators: The parameter is the contact's alias */
|
||||
_("%s would like permission to see when you are online").format(contact.get_alias()),
|
||||
null, { customContent: true });
|
||||
|
||||
this._contact = contact;
|
||||
this._connection = contact.get_connection();
|
||||
|
||||
let layout = new St.BoxLayout({ vertical: false });
|
||||
|
||||
// Display avatar
|
||||
let iconBox = new St.Bin({ style_class: 'avatar-box' });
|
||||
iconBox._size = 48;
|
||||
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
let file = contact.get_avatar_file();
|
||||
|
||||
if (file) {
|
||||
let uri = file.get_uri();
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
|
||||
}
|
||||
else {
|
||||
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||
icon_size: iconBox._size });
|
||||
}
|
||||
|
||||
layout.add(iconBox);
|
||||
|
||||
// subscription request message
|
||||
let label = new St.Label({ style_class: 'subscription-message',
|
||||
text: contact.get_publish_request() });
|
||||
|
||||
layout.add(label);
|
||||
|
||||
this.addActor(layout);
|
||||
|
||||
this.addAction(_("Decline"), Lang.bind(this, function() {
|
||||
contact.remove_async(function(src, result) {
|
||||
src.remove_finish(result);
|
||||
});
|
||||
}));
|
||||
this.addAction(_("Accept"), Lang.bind(this, function() {
|
||||
// Authorize the contact and request to see his status as well
|
||||
contact.authorize_publication_async(function(src, result) {
|
||||
src.authorize_publication_finish(result);
|
||||
});
|
||||
|
||||
contact.request_subscription_async('', function(src, result) {
|
||||
src.request_subscription_finish(result);
|
||||
});
|
||||
}));
|
||||
|
||||
this._changedId = contact.connect('subscription-states-changed',
|
||||
Lang.bind(this, this._subscriptionStatesChangedCb));
|
||||
this._invalidatedId = this._connection.connect('invalidated',
|
||||
Lang.bind(this, this.destroy));
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this._changedId != 0) {
|
||||
this._contact.disconnect(this._changedId);
|
||||
this._changedId = 0;
|
||||
}
|
||||
|
||||
if (this._invalidatedId != 0) {
|
||||
this._connection.disconnect(this._invalidatedId);
|
||||
this._invalidatedId = 0;
|
||||
}
|
||||
|
||||
this.parent();
|
||||
},
|
||||
|
||||
_subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) {
|
||||
// Destroy the notification if the subscription request has been
|
||||
// answered
|
||||
if (publish != Tp.SubscriptionState.ASK)
|
||||
this.destroy();
|
||||
}
|
||||
});
|
||||
|
||||
// Messages from empathy/libempathy/empathy-utils.c
|
||||
// create_errors_to_message_hash()
|
||||
|
||||
/* Translator note: these should be the same messages that are
|
||||
* used in Empathy, so just copy and paste from there. */
|
||||
let _connectionErrorMessages = {};
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.NETWORK_ERROR)]
|
||||
= _("Network error");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.AUTHENTICATION_FAILED)]
|
||||
= _("Authentication failed");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_ERROR)]
|
||||
= _("Encryption error");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_PROVIDED)]
|
||||
= _("Certificate not provided");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_UNTRUSTED)]
|
||||
= _("Certificate untrusted");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_EXPIRED)]
|
||||
= _("Certificate expired");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_ACTIVATED)]
|
||||
= _("Certificate not activated");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_HOSTNAME_MISMATCH)]
|
||||
= _("Certificate hostname mismatch");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_FINGERPRINT_MISMATCH)]
|
||||
= _("Certificate fingerprint mismatch");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_SELF_SIGNED)]
|
||||
= _("Certificate self-signed");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CANCELLED)]
|
||||
= _("Status is set to offline");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_NOT_AVAILABLE)]
|
||||
= _("Encryption is not available");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INVALID)]
|
||||
= _("Certificate is invalid");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REFUSED)]
|
||||
= _("Connection has been refused");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_FAILED)]
|
||||
= _("Connection can't be established");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_LOST)]
|
||||
= _("Connection has been lost");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ALREADY_CONNECTED)]
|
||||
= _("This account is already connected to the server");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REPLACED)]
|
||||
= _("Connection has been replaced by a new connection using the same resource");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.REGISTRATION_EXISTS)]
|
||||
= _("The account already exists on the server");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.SERVICE_BUSY)]
|
||||
= _("Server is currently too busy to handle the connection");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_REVOKED)]
|
||||
= _("Certificate has been revoked");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INSECURE)]
|
||||
= _("Certificate uses an insecure cipher algorithm or is cryptographically weak");
|
||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)]
|
||||
= _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library");
|
||||
_connectionErrorMessages['org.freedesktop.DBus.Error.NoReply']
|
||||
= _("Internal error");
|
||||
|
||||
const AccountNotification = new Lang.Class({
|
||||
Name: 'AccountNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, account, connectionError) {
|
||||
this.parent(source,
|
||||
/* translators: argument is the account name, like
|
||||
* name@jabber.org for example. */
|
||||
_("Unable to connect to %s").format(account.get_display_name()),
|
||||
this._getMessage(connectionError));
|
||||
|
||||
this._account = account;
|
||||
|
||||
this.addAction(_("View account"), Lang.bind(this, function() {
|
||||
let cmd = 'empathy-accounts --select-account=' +
|
||||
account.get_path_suffix();
|
||||
let app_info = Gio.app_info_create_from_commandline(cmd, null, 0);
|
||||
app_info.launch([], global.create_app_launch_context(0, -1));
|
||||
}));
|
||||
|
||||
this._enabledId = account.connect('notify::enabled',
|
||||
Lang.bind(this, function() {
|
||||
if (!account.is_enabled())
|
||||
this.destroy();
|
||||
}));
|
||||
|
||||
this._invalidatedId = account.connect('invalidated',
|
||||
Lang.bind(this, this.destroy));
|
||||
|
||||
this._connectionStatusId = account.connect('notify::connection-status',
|
||||
Lang.bind(this, function() {
|
||||
let status = account.connection_status;
|
||||
if (status == Tp.ConnectionStatus.CONNECTED) {
|
||||
this.destroy();
|
||||
} else if (status == Tp.ConnectionStatus.DISCONNECTED) {
|
||||
let connectionError = account.connection_error;
|
||||
|
||||
if (connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED))
|
||||
this.destroy();
|
||||
else
|
||||
this.update(this.title, this._getMessage(connectionError));
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
_getMessage: function(connectionError) {
|
||||
let message;
|
||||
if (connectionError in _connectionErrorMessages) {
|
||||
message = _connectionErrorMessages[connectionError];
|
||||
} else {
|
||||
message = _("Unknown reason");
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this._enabledId != 0) {
|
||||
this._account.disconnect(this._enabledId);
|
||||
this._enabledId = 0;
|
||||
}
|
||||
|
||||
if (this._invalidatedId != 0) {
|
||||
this._account.disconnect(this._invalidatedId);
|
||||
this._invalidatedId = 0;
|
||||
}
|
||||
|
||||
if (this._connectionStatusId != 0) {
|
||||
this._account.disconnect(this._connectionStatusId);
|
||||
this._connectionStatusId = 0;
|
||||
}
|
||||
|
||||
this.parent();
|
||||
}
|
||||
});
|
||||
const Component = TelepathyClient;
|
||||
|
@ -87,7 +87,7 @@ const CtrlAltTabManager = new Lang.Class({
|
||||
if (Main.sessionMode.hasWindows && !Main.overview.visible) {
|
||||
let screen = global.screen;
|
||||
let display = screen.get_display();
|
||||
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ());
|
||||
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen.get_active_workspace ());
|
||||
let windowTracker = Shell.WindowTracker.get_default();
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
|
@ -18,8 +18,7 @@ const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Calendar = imports.ui.calendar;
|
||||
|
||||
function _onVertSepRepaint (area)
|
||||
{
|
||||
function _onVertSepRepaint(area) {
|
||||
let cr = area.get_context();
|
||||
let themeNode = area.get_theme_node();
|
||||
let [width, height] = area.get_surface_size();
|
||||
@ -33,7 +32,7 @@ function _onVertSepRepaint (area)
|
||||
cr.setLineWidth(stippleWidth);
|
||||
cr.stroke();
|
||||
cr.$dispose();
|
||||
};
|
||||
}
|
||||
|
||||
const DateMenuButton = new Lang.Class({
|
||||
Name: 'DateMenuButton',
|
||||
|
@ -150,7 +150,6 @@ const LayoutManager = new Lang.Class({
|
||||
|
||||
this._keyboardIndex = -1;
|
||||
this._rightPanelBarrier = null;
|
||||
this._trayBarrier = null;
|
||||
|
||||
this._inOverview = false;
|
||||
this._updateRegionIdle = 0;
|
||||
@ -210,7 +209,6 @@ const LayoutManager = new Lang.Class({
|
||||
this.trayBox = new St.Widget({ name: 'trayBox',
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
this.addChrome(this.trayBox);
|
||||
this._setupTrayPressure();
|
||||
|
||||
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
@ -449,50 +447,9 @@ const LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_setupTrayPressure: function() {
|
||||
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
|
||||
MESSAGE_TRAY_PRESSURE_TIMEOUT,
|
||||
Shell.KeyBindingMode.NORMAL |
|
||||
Shell.KeyBindingMode.OVERVIEW);
|
||||
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
|
||||
this._trayPressure.connect('trigger', function(barrier) {
|
||||
if (Main.layoutManager.bottomMonitor.inFullscreen)
|
||||
return;
|
||||
|
||||
Main.messageTray.openTray();
|
||||
});
|
||||
},
|
||||
|
||||
_updateTrayBarrier: function() {
|
||||
let monitor = this.bottomMonitor;
|
||||
|
||||
if (this._trayBarrier) {
|
||||
this._trayPressure.removeBarrier(this._trayBarrier);
|
||||
this._trayBarrier.destroy();
|
||||
this._trayBarrier = null;
|
||||
}
|
||||
|
||||
this._trayBarrier = new Meta.Barrier({ display: global.display,
|
||||
x1: monitor.x, x2: monitor.x + monitor.width,
|
||||
y1: monitor.y + monitor.height, y2: monitor.y + monitor.height,
|
||||
directions: Meta.BarrierDirection.NEGATIVE_Y });
|
||||
this._trayPressure.addBarrier(this._trayBarrier);
|
||||
},
|
||||
|
||||
_trayBarrierEventFilter: function(event) {
|
||||
// Throw out all events where the pointer was grabbed by another
|
||||
// client, as the client that grabbed the pointer expects to have
|
||||
// complete control over it
|
||||
if (event.grabbed && Main.modalCount == 0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
this._updateMonitors();
|
||||
this._updateBoxes();
|
||||
this._updateTrayBarrier();
|
||||
this._updateHotCorners();
|
||||
this._updateBackgrounds();
|
||||
this._updateFullscreen();
|
||||
@ -1017,43 +974,6 @@ const LayoutManager = new Lang.Class({
|
||||
else
|
||||
continue;
|
||||
|
||||
// Ensure that the strut rects goes all the way to the screen edge,
|
||||
// as this really what mutter expects. However skip this step
|
||||
// in cases where this would render an entire monitor unusable.
|
||||
switch (side) {
|
||||
case Meta.Side.TOP:
|
||||
let hasMonitorsAbove = this.monitors.some(Lang.bind(this,
|
||||
function(mon) {
|
||||
return this._isAboveOrBelowPrimary(mon) &&
|
||||
mon.y < primary.y;
|
||||
}));
|
||||
if (!hasMonitorsAbove)
|
||||
y1 = 0;
|
||||
break;
|
||||
case Meta.Side.BOTTOM:
|
||||
if (this.primaryIndex == this.bottomIndex)
|
||||
y2 = global.screen_height;
|
||||
break;
|
||||
case Meta.Side.LEFT:
|
||||
let hasMonitorsLeft = this.monitors.some(Lang.bind(this,
|
||||
function(mon) {
|
||||
return !this._isAboveOrBelowPrimary(mon) &&
|
||||
mon.x < primary.x;
|
||||
}));
|
||||
if (!hasMonitorsLeft)
|
||||
x1 = 0;
|
||||
break;
|
||||
case Meta.Side.RIGHT:
|
||||
let hasMonitorsRight = this.monitors.some(Lang.bind(this,
|
||||
function(mon) {
|
||||
return !this._isAboveOrBelowPrimary(mon) &&
|
||||
mon.x > primary.x;
|
||||
}));
|
||||
if (!hasMonitorsRight)
|
||||
x2 = global.screen_width;
|
||||
break;
|
||||
}
|
||||
|
||||
let strutRect = new Meta.Rectangle({ x: x1, y: y1, width: x2 - x1, height: y2 - y1});
|
||||
let strut = new Meta.Strut({ rect: strutRect, side: side });
|
||||
struts.push(strut);
|
||||
|
@ -74,7 +74,6 @@ let _startDate;
|
||||
let _defaultCssStylesheet = null;
|
||||
let _cssStylesheet = null;
|
||||
let _a11ySettings = null;
|
||||
let dynamicWorkspacesSchema = null;
|
||||
|
||||
function _sessionUpdated() {
|
||||
_loadDefaultStylesheet();
|
||||
@ -111,7 +110,6 @@ function start() {
|
||||
|
||||
sessionMode = new SessionMode.SessionMode();
|
||||
sessionMode.connect('updated', _sessionUpdated);
|
||||
_initializePrefs();
|
||||
_initializeUI();
|
||||
|
||||
shellDBusService = new ShellDBus.GnomeShell();
|
||||
@ -120,17 +118,6 @@ function start() {
|
||||
_sessionUpdated();
|
||||
}
|
||||
|
||||
function _initializePrefs() {
|
||||
let keys = new Gio.Settings({ schema: sessionMode.overridesSchema }).list_keys();
|
||||
for (let i = 0; i < keys.length; i++)
|
||||
Meta.prefs_override_preference_schema(keys[i], sessionMode.overridesSchema);
|
||||
|
||||
if (keys.indexOf('dynamic-workspaces') > -1)
|
||||
dynamicWorkspacesSchema = sessionMode.overridesSchema;
|
||||
else
|
||||
dynamicWorkspacesSchema = 'org.gnome.mutter';
|
||||
}
|
||||
|
||||
function _initializeUI() {
|
||||
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
||||
// also initialize ShellAppSystem first. ShellAppSystem
|
||||
@ -163,8 +150,8 @@ function _initializeUI() {
|
||||
if (LoginManager.canLock())
|
||||
screenShield = new ScreenShield.ScreenShield();
|
||||
|
||||
panel = new Panel.Panel();
|
||||
messageTray = new MessageTray.MessageTray();
|
||||
panel = new Panel.Panel();
|
||||
keyboard = new Keyboard.Keyboard();
|
||||
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
||||
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
|
||||
@ -294,7 +281,6 @@ function notify(msg, details) {
|
||||
let source = new MessageTray.SystemNotificationSource();
|
||||
messageTray.add(source);
|
||||
let notification = new MessageTray.Notification(source, msg, details);
|
||||
notification.setTransient(true);
|
||||
source.notify(notification);
|
||||
}
|
||||
|
||||
|
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({
|
||||
Name: 'FdoNotificationDaemon',
|
||||
|
||||
@ -129,7 +114,7 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
Main.overview.connect('hidden',
|
||||
Lang.bind(this, this._onFocusAppChanged));
|
||||
|
||||
this._trayManager.manage_screen(global.screen, Main.messageTray.actor);
|
||||
// this._trayManager.manage_screen(global.screen, Main.messageTray.actor);
|
||||
},
|
||||
|
||||
_imageForNotificationData: function(hints) {
|
||||
@ -195,10 +180,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
if (!pid && !(ndata && ndata.notification))
|
||||
return null;
|
||||
|
||||
// We use notification's source for the notifications we still have
|
||||
// around that are getting replaced because we don't keep sources
|
||||
// for transient notifications in this._sources, but we still want
|
||||
// the notification associated with them to get replaced correctly.
|
||||
if (ndata && ndata.notification)
|
||||
return ndata.notification.source;
|
||||
|
||||
@ -334,13 +315,14 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
},
|
||||
|
||||
_makeButton: function(id, label, useActionIcons) {
|
||||
let button = new St.Button({ can_focus: true });
|
||||
let button = new St.Button({ can_focus: true,
|
||||
x_expand: true,
|
||||
style_class: 'notification-button' });
|
||||
let iconName = id.endsWith('-symbolic') ? id : id + '-symbolic';
|
||||
|
||||
if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
|
||||
button.add_style_class_name('notification-icon-button');
|
||||
button.child = new St.Icon({ icon_name: iconName });
|
||||
button.child = new St.Icon({ icon_name: iconName, icon_size: 16 });
|
||||
} else {
|
||||
button.add_style_class_name('notification-button');
|
||||
button.label = label;
|
||||
}
|
||||
return button;
|
||||
@ -379,8 +361,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
let gicon = this._iconForNotificationData(icon, hints);
|
||||
let gimage = this._imageForNotificationData(hints);
|
||||
|
||||
let image = null;
|
||||
|
||||
// If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon
|
||||
// and don't show a large image. There are currently many applications that use
|
||||
// notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets
|
||||
@ -389,10 +369,7 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
// So the logic here does the right thing for this case. If both an icon and either
|
||||
// one of 'image-data' or 'image-path' are specified, we show both an icon and
|
||||
// a large image.
|
||||
if (gicon && gimage)
|
||||
image = new St.Icon({ gicon: gimage,
|
||||
icon_size: notification.IMAGE_SIZE });
|
||||
else if (!gicon && gimage)
|
||||
if (!gicon && gimage)
|
||||
gicon = gimage;
|
||||
else if (!gicon)
|
||||
gicon = this._fallbackIconForNotificationData(hints);
|
||||
@ -402,7 +379,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
clear: true,
|
||||
soundFile: hints['sound-file'],
|
||||
soundName: hints['sound-name'] });
|
||||
notification.setImage(image);
|
||||
|
||||
let hasDefaultAction = false;
|
||||
|
||||
@ -442,10 +418,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||
break;
|
||||
}
|
||||
notification.setResident(hints.resident == true);
|
||||
// 'transient' is a reserved keyword in JS, so we have to retrieve the value
|
||||
// of the 'transient' hint with hints['transient'] rather than hints.transient
|
||||
notification.setTransient(hints['transient'] == true);
|
||||
|
||||
let sourceGIcon = source.useNotificationIcon ? gicon : null;
|
||||
source.processNotification(notification, sourceGIcon);
|
||||
@ -470,7 +442,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
'body-markup',
|
||||
// 'icon-multi',
|
||||
'icon-static',
|
||||
'persistence',
|
||||
'sound',
|
||||
];
|
||||
},
|
||||
@ -492,7 +463,7 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
for (let i = 0; i < this._sources.length; i++) {
|
||||
let source = this._sources[i];
|
||||
if (source.app == tracker.focus_app) {
|
||||
source.destroyNonResidentNotifications();
|
||||
source.destroyNotifications();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -509,10 +480,6 @@ const FdoNotificationDaemon = new Lang.Class({
|
||||
},
|
||||
|
||||
_onTrayIconAdded: function(o, icon) {
|
||||
let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
|
||||
if (STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass] !== undefined)
|
||||
return;
|
||||
|
||||
let source = this._getSource(icon.title || icon.wm_class || C_("program", "Unknown"), icon.pid, null, null, icon);
|
||||
},
|
||||
|
||||
@ -584,7 +551,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
|
||||
this.iconUpdated();
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
if (notification.resident && this.app && tracker.focus_app == this.app)
|
||||
if (this.app && tracker.focus_app == this.app)
|
||||
this.pushNotification(notification);
|
||||
else
|
||||
this.notify(notification);
|
||||
@ -651,7 +618,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
|
||||
|
||||
open: function() {
|
||||
this.openApp();
|
||||
this.destroyNonResidentNotifications();
|
||||
this.destroyNotifications();
|
||||
},
|
||||
|
||||
_lastNotificationRemoved: function() {
|
||||
|
@ -72,7 +72,6 @@ const ShellInfo = new Lang.Class({
|
||||
let notification = null;
|
||||
if (this._source.notifications.length == 0) {
|
||||
notification = new MessageTray.Notification(this._source, text, null);
|
||||
notification.setTransient(true);
|
||||
notification.setForFeedback(forFeedback);
|
||||
} else {
|
||||
notification = this._source.notifications[0];
|
||||
|
@ -862,11 +862,56 @@ const AggregateMenu = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const DateMenuButton2 = new Lang.Class({
|
||||
Name: 'DateMenuButton2',
|
||||
|
||||
_init: function() {
|
||||
this.container = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
|
||||
this._notificationPreview = Main.messageTray.notificationPreview;
|
||||
this.container.add_child(this._notificationPreview.actor);
|
||||
this._notificationPreview.actor.x_expand = true;
|
||||
this._notificationPreview.actor.x_align = Clutter.ActorAlign.CENTER;
|
||||
this._notificationPreview.connect('updated', Lang.bind(this, this._sync));
|
||||
|
||||
let dateMenu = new imports.ui.dateMenu.DateMenuButton();
|
||||
this._clock = dateMenu.container;
|
||||
this._clock.x_expand = true;
|
||||
this._clock.x_align = Clutter.ActorAlign.CENTER;
|
||||
this.container.add_child(this._clock);
|
||||
|
||||
this._currentlyShowing = 'clock';
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_show: function(which, animate) {
|
||||
if (this._currentlyShowing == which)
|
||||
return;
|
||||
|
||||
this._currentlyShowing = which;
|
||||
if (this._currentlyShowing == 'clock') {
|
||||
this._notificationPreview.actor.visible = false;
|
||||
this._clock.visible = true;
|
||||
} else if (this._currentlyShowing == 'notification') {
|
||||
this._notificationPreview.actor.visible = true;
|
||||
this._clock.visible = false;
|
||||
}
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
if (this._currentlyShowing == 'clock' && this._notificationPreview.hasNotification)
|
||||
this._show('notification', true);
|
||||
else if (this._currentlyShowing == 'notification' && !this._notificationPreview.hasNotification)
|
||||
this._show('clock', false);
|
||||
},
|
||||
});
|
||||
Signals.addSignalMethods(DateMenuButton2.prototype);
|
||||
|
||||
const PANEL_ITEM_IMPLEMENTATIONS = {
|
||||
'activities': ActivitiesButton,
|
||||
'aggregateMenu': AggregateMenu,
|
||||
'appMenu': AppMenuButton,
|
||||
'dateMenu': imports.ui.dateMenu.DateMenuButton,
|
||||
'dateMenu': DateMenuButton2,
|
||||
'a11y': imports.ui.status.accessibility.ATIndicator,
|
||||
'a11yGreeter': imports.ui.status.accessibility.ATGreeterIndicator,
|
||||
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||
|
@ -41,8 +41,7 @@ const ButtonBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_getPreferredWidth: function(actor, forHeight, alloc) {
|
||||
let children = actor.get_children();
|
||||
let child = children.length > 0 ? children[0] : null;
|
||||
let child = actor.get_first_child();
|
||||
|
||||
if (child) {
|
||||
[alloc.min_size, alloc.natural_size] = child.get_preferred_width(-1);
|
||||
@ -55,8 +54,7 @@ const ButtonBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
let children = actor.get_children();
|
||||
let child = children.length > 0 ? children[0] : null;
|
||||
let child = actor.get_first_child();
|
||||
|
||||
if (child) {
|
||||
[alloc.min_size, alloc.natural_size] = child.get_preferred_height(-1);
|
||||
@ -66,13 +64,11 @@ const ButtonBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
let children = actor.get_children();
|
||||
if (children.length == 0)
|
||||
let child = actor.get_first_child();
|
||||
if (!child)
|
||||
return;
|
||||
|
||||
let child = children[0];
|
||||
let [minWidth, natWidth] = child.get_preferred_width(-1);
|
||||
let [minHeight, natHeight] = child.get_preferred_height(-1);
|
||||
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
|
@ -68,6 +68,13 @@ const ScreenshotService = new Lang.Class({
|
||||
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
},
|
||||
|
||||
_checkArea: function(x, y, width, height) {
|
||||
return x >= 0 && y >= 0 &&
|
||||
width > 0 && height > 0 &&
|
||||
x + width <= global.screen_width &&
|
||||
y + height <= global.screen_height;
|
||||
},
|
||||
|
||||
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
|
||||
if (flash && result) {
|
||||
let flashspot = new Flashspot(area);
|
||||
@ -80,11 +87,10 @@ const ScreenshotService = new Lang.Class({
|
||||
|
||||
ScreenshotAreaAsync : function (params, invocation) {
|
||||
let [x, y, width, height, flash, filename, callback] = params;
|
||||
if (x < 0 || y < 0 ||
|
||||
width <= 0 || height <= 0 ||
|
||||
x + width > global.screen_width || y + height > global.screen_height) {
|
||||
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
|
||||
"Invalid params");
|
||||
if (!this._checkArea(x, y, width, height)) {
|
||||
invocation.return_error_literal(Gio.IOErrorEnum,
|
||||
Gio.IOErrorEnum.CANCELLED,
|
||||
"Invalid params");
|
||||
return;
|
||||
}
|
||||
let screenshot = new Shell.Screenshot();
|
||||
@ -126,9 +132,17 @@ const ScreenshotService = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
FlashArea: function(x, y, width, height) {
|
||||
FlashAreaAsync: function(params, invocation) {
|
||||
let [x, y, width, height] = params;
|
||||
if (!this._checkArea(x, y, width, height)) {
|
||||
invocation.return_error_literal(Gio.IOErrorEnum,
|
||||
Gio.IOErrorEnum.CANCELLED,
|
||||
"Invalid params");
|
||||
return;
|
||||
}
|
||||
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
|
||||
flashspot.fire();
|
||||
invocation.return_value(null);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -18,7 +18,6 @@ const _modes = {
|
||||
'restrictive': {
|
||||
parentMode: null,
|
||||
stylesheetName: 'gnome-shell.css',
|
||||
overridesSchema: 'org.gnome.shell.overrides',
|
||||
hasOverview: false,
|
||||
showCalendarEvents: false,
|
||||
allowSettings: false,
|
||||
|
@ -253,7 +253,6 @@ const ShellUnmountNotifier = new Lang.Class({
|
||||
|
||||
if (!this._notification) {
|
||||
this._notification = new MessageTray.Notification(this, header, text);
|
||||
this._notification.setTransient(true);
|
||||
this._notification.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||
} else {
|
||||
this._notification.update(header, text);
|
||||
@ -270,7 +269,6 @@ const ShellUnmountNotifier = new Lang.Class({
|
||||
|
||||
if (message) {
|
||||
let notification = new MessageTray.Notification(this, message, null);
|
||||
notification.setTransient(true);
|
||||
|
||||
this.notify(notification);
|
||||
}
|
||||
|
@ -1632,7 +1632,6 @@ const NMApplet = new Lang.Class({
|
||||
let gicon = new Gio.ThemedIcon({ name: iconName });
|
||||
this._notification = new MessageTray.Notification(this._source, title, text, { gicon: gicon });
|
||||
this._notification.setUrgency(urgency);
|
||||
this._notification.setTransient(true);
|
||||
this._notification.connect('destroy', function() {
|
||||
this._notification = null;
|
||||
});
|
||||
|
@ -285,10 +285,10 @@ const ViewSelector = new Lang.Class({
|
||||
} else if (!this._searchActive && !global.stage.key_focus) {
|
||||
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
|
||||
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
return true;
|
||||
return Clutter.EVENT_STOP;
|
||||
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
||||
return true;
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
}
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
@ -199,12 +199,19 @@ const WorkspaceTracker = new Lang.Class({
|
||||
global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor));
|
||||
global.screen.connect('restacked', Lang.bind(this, this._windowsRestacked));
|
||||
|
||||
this._workspaceSettings = new Gio.Settings({ schema: Main.dynamicWorkspacesSchema });
|
||||
this._workspaceSettings = this._getWorkspaceSettings();
|
||||
this._workspaceSettings.connect('changed::dynamic-workspaces', Lang.bind(this, this._queueCheckWorkspaces));
|
||||
|
||||
this._nWorkspacesChanged();
|
||||
},
|
||||
|
||||
_getWorkspaceSettings: function() {
|
||||
let settings = global.get_overrides_settings();
|
||||
if (settings.list_keys().indexOf('dynamic-workspaces') > -1)
|
||||
return settings;
|
||||
return new Gio.Settings({ schema: 'org.gnome.mutter' });
|
||||
},
|
||||
|
||||
_checkWorkspaces: function() {
|
||||
let i;
|
||||
let emptyWorkspaces = [];
|
||||
@ -464,8 +471,6 @@ const WindowManager = new Lang.Class({
|
||||
|
||||
this._dimmedWindows = [];
|
||||
|
||||
this._animationBlockCount = 0;
|
||||
|
||||
this._allowedKeybindings = {};
|
||||
|
||||
this._switchData = null;
|
||||
@ -708,16 +713,8 @@ const WindowManager = new Lang.Class({
|
||||
this._allowedKeybindings[name] = modes;
|
||||
},
|
||||
|
||||
blockAnimations: function() {
|
||||
this._animationBlockCount++;
|
||||
},
|
||||
|
||||
unblockAnimations: function() {
|
||||
this._animationBlockCount = Math.max(0, this._animationBlockCount - 1);
|
||||
},
|
||||
|
||||
_shouldAnimate: function() {
|
||||
return !(Main.overview.visible || this._animationBlockCount > 0);
|
||||
return !Main.overview.visible;
|
||||
},
|
||||
|
||||
_shouldAnimateActor: function(actor) {
|
||||
@ -1163,8 +1160,8 @@ const WindowManager = new Lang.Class({
|
||||
this._tilePreview.hide();
|
||||
},
|
||||
|
||||
_showWindowMenu: function(shellwm, window, menu, x, y) {
|
||||
this._windowMenuManager.showWindowMenuForWindow(window, menu, x, y);
|
||||
_showWindowMenu: function(shellwm, window, menu, rect) {
|
||||
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
|
||||
},
|
||||
|
||||
_startAppSwitcher : function(display, screen, window, binding) {
|
||||
|
@ -15,8 +15,8 @@ const WindowMenu = new Lang.Class({
|
||||
Name: 'WindowMenu',
|
||||
Extends: PopupMenu.PopupMenu,
|
||||
|
||||
_init: function(window) {
|
||||
this.parent(Main.layoutManager.dummyCursor, 0, St.Side.TOP);
|
||||
_init: function(window, sourceActor) {
|
||||
this.parent(sourceActor, 0, St.Side.TOP);
|
||||
|
||||
this.actor.add_style_class_name('window-menu');
|
||||
|
||||
@ -129,10 +129,10 @@ const AppMenu = new Lang.Class({
|
||||
Name: 'AppMenu',
|
||||
Extends: RemoteMenu.RemoteMenu,
|
||||
|
||||
_init: function(window) {
|
||||
_init: function(window, sourceActor) {
|
||||
let app = Shell.WindowTracker.get_default().get_window_app(window);
|
||||
|
||||
this.parent(Main.layoutManager.dummyCursor, app.menu, app.action_group);
|
||||
this.parent(sourceActor, app.menu, app.action_group);
|
||||
|
||||
this.actor.add_style_class_name('fallback-app-menu');
|
||||
let variant = window.get_gtk_theme_variant();
|
||||
@ -149,11 +149,18 @@ const WindowMenuManager = new Lang.Class({
|
||||
|
||||
_init: function() {
|
||||
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
|
||||
|
||||
this._sourceActor = new St.Widget({ reactive: true, visible: false });
|
||||
this._sourceActor.connect('button-press-event', Lang.bind(this,
|
||||
function() {
|
||||
this._manager.activeMenu.toggle();
|
||||
}));
|
||||
Main.uiGroup.add_actor(this._sourceActor);
|
||||
},
|
||||
|
||||
showWindowMenuForWindow: function(window, type, x, y) {
|
||||
let menu = (type == Meta.WindowMenuType.WM) ? new WindowMenu(window)
|
||||
: new AppMenu(window);
|
||||
showWindowMenuForWindow: function(window, type, rect) {
|
||||
let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu;
|
||||
let menu = new menuType(window, this._sourceActor);
|
||||
|
||||
this._manager.addMenu(menu);
|
||||
|
||||
@ -161,12 +168,18 @@ const WindowMenuManager = new Lang.Class({
|
||||
window.check_alive(global.get_current_time());
|
||||
});
|
||||
|
||||
Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
|
||||
this._sourceActor.set_size(rect.width, rect.height);
|
||||
this._sourceActor.set_position(rect.x, rect.y);
|
||||
this._sourceActor.show();
|
||||
|
||||
menu.open(BoxPointer.PopupAnimation.NONE);
|
||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
menu.connect('open-state-changed', Lang.bind(this, function(menu_, isOpen) {
|
||||
if (!isOpen)
|
||||
menu.destroy();
|
||||
if (isOpen)
|
||||
return;
|
||||
|
||||
this._sourceActor.hide();
|
||||
menu.destroy();
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -200,6 +200,10 @@ const WindowClone = new Lang.Class({
|
||||
this.emit('size-changed');
|
||||
},
|
||||
|
||||
hasAttachedDialogs: function() {
|
||||
return this.actor.get_n_children() > 1;
|
||||
},
|
||||
|
||||
_doAddAttachedDialog: function(metaWin, realWin) {
|
||||
let clone = new Clutter.Clone({ source: realWin });
|
||||
clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() {
|
||||
@ -582,7 +586,8 @@ const WindowOverlay = new Lang.Class({
|
||||
},
|
||||
|
||||
_windowCanClose: function() {
|
||||
return this._windowClone.metaWindow.can_close();
|
||||
return this._windowClone.metaWindow.can_close() &&
|
||||
!this._windowClone.hasAttachedDialogs();
|
||||
},
|
||||
|
||||
_onWindowAdded: function(workspace, win) {
|
||||
|
1428
po/en_GB.po
1428
po/en_GB.po
File diff suppressed because it is too large
Load Diff
209
po/es.po
209
po/es.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-05-20 07:27+0000\n"
|
||||
"PO-Revision-Date: 2014-05-20 19:10+0200\n"
|
||||
"POT-Creation-Date: 2014-06-11 07:31+0000\n"
|
||||
"PO-Revision-Date: 2014-06-12 17:23+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
||||
"Language: es\n"
|
||||
@ -55,7 +55,6 @@ msgid "Window management and application launching"
|
||||
msgstr "Gestión de ventanas e inicio de aplicaciones"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Preferencias de las extensiones de GNOME Shell"
|
||||
|
||||
@ -270,49 +269,33 @@ msgstr ""
|
||||
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Orden de los botones en la barra de título"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
|
||||
"ejecutar GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
||||
"ventana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Las áreas de trabajo se gestionan dinámicamente"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Áreas de trabajo solo en la pantalla principal"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:127
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
msgstr "Extensión"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:191
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||
#: ../js/extensionPrefs/main.js:157
|
||||
#| msgid "Configure GNOME Shell Extensions"
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Extensiones de GNOME Shell"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
@ -335,25 +318,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:269
|
||||
msgid "Choose Session"
|
||||
msgstr "Elegir sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:429
|
||||
msgid "Not listed?"
|
||||
msgstr "¿No está en la lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(ej., usuario o %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Nombre de usuario:"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:924
|
||||
#: ../js/gdm/loginDialog.js:922
|
||||
msgid "Login Window"
|
||||
msgstr "Ventana de inicio de sesión"
|
||||
|
||||
@ -541,11 +524,11 @@ msgctxt "list saturday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#: ../js/ui/calendar.js:453
|
||||
#: ../js/ui/calendar.js:454
|
||||
msgid "Previous month"
|
||||
msgstr "Mes anterior"
|
||||
|
||||
#: ../js/ui/calendar.js:463
|
||||
#: ../js/ui/calendar.js:464
|
||||
msgid "Next month"
|
||||
msgstr "Siguiente mes"
|
||||
|
||||
@ -731,77 +714,77 @@ msgid "Mute"
|
||||
msgstr "Silenciar"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:958
|
||||
#: ../js/ui/components/telepathyClient.js:957
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:965
|
||||
#: ../js/ui/components/telepathyClient.js:964
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Ayer, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:972
|
||||
#: ../js/ui/components/telepathyClient.js:971
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:979
|
||||
#: ../js/ui/components/telepathyClient.js:978
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%d de %B, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:985
|
||||
#: ../js/ui/components/telepathyClient.js:984
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%d de %B de %Y, %H∶%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:994
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1001
|
||||
#: ../js/ui/components/telepathyClient.js:997
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Ayer a las %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1008
|
||||
#: ../js/ui/components/telepathyClient.js:1004
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1015
|
||||
#: ../js/ui/components/telepathyClient.js:1011
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%d de %B, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/ui/components/telepathyClient.js:1021
|
||||
#: ../js/ui/components/telepathyClient.js:1017
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%d de %B de %Y, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:1054
|
||||
#: ../js/ui/components/telepathyClient.js:1049
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Ahora %s se llama %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1158
|
||||
#: ../js/ui/components/telepathyClient.js:1153
|
||||
#, javascript-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Invitación a %s"
|
||||
@ -809,38 +792,38 @@ msgstr "Invitación a %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1166
|
||||
#: ../js/ui/components/telepathyClient.js:1161
|
||||
#, javascript-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s le está invitando a unirse a %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1168
|
||||
#: ../js/ui/components/telepathyClient.js:1203
|
||||
#: ../js/ui/components/telepathyClient.js:1237
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
#: ../js/ui/components/telepathyClient.js:1163
|
||||
#: ../js/ui/components/telepathyClient.js:1198
|
||||
#: ../js/ui/components/telepathyClient.js:1232
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "Rechazar"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1174
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1169
|
||||
#: ../js/ui/components/telepathyClient.js:1238
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1193
|
||||
#: ../js/ui/components/telepathyClient.js:1188
|
||||
#, javascript-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Videollamada de %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1196
|
||||
#: ../js/ui/components/telepathyClient.js:1191
|
||||
#, javascript-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Llamada de %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun */
|
||||
#: ../js/ui/components/telepathyClient.js:1210
|
||||
#: ../js/ui/components/telepathyClient.js:1205
|
||||
msgid "Answer"
|
||||
msgstr "Responder"
|
||||
|
||||
@ -849,112 +832,112 @@ msgstr "Responder"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#. */
|
||||
#: ../js/ui/components/telepathyClient.js:1231
|
||||
#: ../js/ui/components/telepathyClient.js:1226
|
||||
#, javascript-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s le está enviando %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias */
|
||||
#: ../js/ui/components/telepathyClient.js:1260
|
||||
#: ../js/ui/components/telepathyClient.js:1255
|
||||
#, javascript-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s solicita permiso para ver cuándo está en línea"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "Error de la red"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "Falló la autenticación"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "Error de cifrado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Certificado no proporcionado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "No se confía en el certificado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certificado caducado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certificado no activado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "El nombre del servidor dle certificado no coincide"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "La huella del certificado no coincide"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certificado autofirmado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "El estado está establecido a «desconectado»"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "El cifrado no está disponible"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "El certificado no es válido"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Se ha rechazado la conexión"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "No se puede establecer la conexión"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Se ha perdido la conexión"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Esta cuenta ya está conectada al servidor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "La cuenta ya existe en el servidor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Se ha revocado el certificado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
||||
"débil"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1390
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -963,22 +946,22 @@ msgstr ""
|
||||
"certificado del servidor exceden los límites impuestos por la biblioteca de "
|
||||
"criptografía"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1392
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "Error interno"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "No se pudo conectar a %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1407
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "Ver cuenta"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1444
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón desconocida"
|
||||
|
||||
@ -1153,7 +1136,7 @@ msgstr "Instalar"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
@ -1287,7 +1270,7 @@ msgstr "Actividades"
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
#: ../js/ui/popupMenu.js:271
|
||||
#: ../js/ui/popupMenu.js:279
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1295,7 +1278,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Introducir un comando"
|
||||
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
@ -1434,7 +1417,7 @@ msgstr "No conectado"
|
||||
msgid "Brightness"
|
||||
msgstr "Brillo"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:407
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Mostrar la distribución del teclado"
|
||||
|
||||
@ -1720,43 +1703,43 @@ msgid_plural "Settings changes will revert in %d seconds"
|
||||
msgstr[0] "La configuración se revertirá en %d segundo"
|
||||
msgstr[1] "La configuración se revertirá en %d segundos"
|
||||
|
||||
#: ../js/ui/windowMenu.js:33
|
||||
#: ../js/ui/windowMenu.js:34
|
||||
msgid "Minimize"
|
||||
msgstr "Minimizar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:40
|
||||
#: ../js/ui/windowMenu.js:41
|
||||
msgid "Unmaximize"
|
||||
msgstr "Desmaximizar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:44
|
||||
#: ../js/ui/windowMenu.js:45
|
||||
msgid "Maximize"
|
||||
msgstr "Maximizar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:51
|
||||
#: ../js/ui/windowMenu.js:52
|
||||
msgid "Move"
|
||||
msgstr "Mover"
|
||||
|
||||
#: ../js/ui/windowMenu.js:57
|
||||
#: ../js/ui/windowMenu.js:58
|
||||
msgid "Resize"
|
||||
msgstr "Redimensionar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:64
|
||||
#: ../js/ui/windowMenu.js:65
|
||||
msgid "Move Titlebar Onscreen"
|
||||
msgstr "Mover la barra de título a la pantalla"
|
||||
|
||||
#: ../js/ui/windowMenu.js:69
|
||||
#: ../js/ui/windowMenu.js:70
|
||||
msgid "Always on Top"
|
||||
msgstr "Siempre encima"
|
||||
|
||||
#: ../js/ui/windowMenu.js:86
|
||||
#: ../js/ui/windowMenu.js:89
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Siempre en el área de trabajo visible"
|
||||
|
||||
#: ../js/ui/windowMenu.js:103
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Subir a un área de trabajo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:108
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Bajar a un área de trabajo"
|
||||
|
||||
@ -1786,21 +1769,21 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#: ../src/main.c:349
|
||||
#: ../src/main.c:371
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:355
|
||||
#: ../src/main.c:377
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||
|
||||
#: ../src/main.c:361
|
||||
#: ../src/main.c:383
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
||||
"sesión"
|
||||
|
||||
#: ../src/main.c:367
|
||||
#: ../src/main.c:389
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar los modos posibles"
|
||||
|
||||
@ -1821,6 +1804,24 @@ msgstr "La contraseña no puede estar vacía"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||
|
||||
#~ msgid "Arrangement of buttons on the titlebar"
|
||||
#~ msgstr "Orden de los botones en la barra de título"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||
#~ "running GNOME Shell."
|
||||
#~ msgstr ""
|
||||
#~ "Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al "
|
||||
#~ "ejecutar GNOME Shell."
|
||||
|
||||
#~ msgid "Extension"
|
||||
#~ msgstr "Extensión"
|
||||
|
||||
#~ msgid "Select an extension to configure using the combobox above."
|
||||
#~ msgstr ""
|
||||
#~ "Seleccione una extensión que configurar usando la caja combinada de "
|
||||
#~ "arriba."
|
||||
|
||||
#~ msgid "calendar:MY"
|
||||
#~ msgstr "calendario:MA"
|
||||
|
||||
|
44
po/it.po
44
po/it.po
@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-04-06 07:54+0000\n"
|
||||
"PO-Revision-Date: 2014-04-06 14:15+0100\n"
|
||||
"POT-Creation-Date: 2014-05-27 19:20+0000\n"
|
||||
"PO-Revision-Date: 2014-05-31 14:54+0100\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||
"Language-Team: Italiano <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
@ -421,7 +421,7 @@ msgid "%s has been removed from your favorites."
|
||||
msgstr "%s è stato rimosso dai preferiti."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
|
||||
#: ../js/ui/status/system.js:334
|
||||
#: ../js/ui/status/system.js:337
|
||||
msgid "Settings"
|
||||
msgstr "Impostazioni"
|
||||
|
||||
@ -1076,7 +1076,7 @@ msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi."
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Installa gli aggiornamenti software in sospeso"
|
||||
msgstr "Installare gli aggiornamenti software in sospeso"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||
msgctxt "button"
|
||||
@ -1130,7 +1130,7 @@ msgstr "Installa e spegni"
|
||||
#: ../js/ui/endSessionDialog.js:131
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Spegne dopo aver installato gli aggiornamenti"
|
||||
msgstr "Spegnere dopo aver installato gli aggiornamenti"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:315
|
||||
msgid "Running on battery power: please plug in before installing updates."
|
||||
@ -1167,7 +1167,7 @@ msgstr "Installa"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
|
||||
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:339
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastiera"
|
||||
|
||||
@ -1328,7 +1328,7 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d nuova notifica"
|
||||
msgstr[1] "%d nuove notifiche"
|
||||
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
|
||||
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
|
||||
msgid "Lock"
|
||||
msgstr "Blocca"
|
||||
|
||||
@ -1344,11 +1344,11 @@ msgstr "Impossibile bloccare"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Il blocco è stato impedito da un'applicazione."
|
||||
|
||||
#: ../js/ui/search.js:603
|
||||
#: ../js/ui/search.js:606
|
||||
msgid "Searching…"
|
||||
msgstr "Ricerca…"
|
||||
|
||||
#: ../js/ui/search.js:649
|
||||
#: ../js/ui/search.js:652
|
||||
msgid "No results."
|
||||
msgstr "Nessun risultato."
|
||||
|
||||
@ -1427,8 +1427,8 @@ msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
|
||||
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
|
||||
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
|
||||
#: ../js/ui/status/rfkill.js:105
|
||||
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
|
||||
#: ../js/ui/status/rfkill.js:114
|
||||
msgid "Turn Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
@ -1451,7 +1451,7 @@ msgstr "Non collegato"
|
||||
msgid "Brightness"
|
||||
msgstr "Luminosità"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:407
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Mostra disposizione tastiera"
|
||||
|
||||
@ -1461,13 +1461,11 @@ msgstr "Posizione"
|
||||
|
||||
# (ndt) o disabilitata?
|
||||
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
|
||||
#| msgid "Disabled"
|
||||
msgid "Disable"
|
||||
msgstr "Disabilitato"
|
||||
|
||||
# (ndt) o abilitata?
|
||||
#: ../js/ui/status/location.js:165
|
||||
#| msgid "Enabled"
|
||||
msgid "Enable"
|
||||
msgstr "Abilita"
|
||||
|
||||
@ -1577,7 +1575,7 @@ msgstr "Seleziona una rete"
|
||||
msgid "No Networks"
|
||||
msgstr "Nessuna rete"
|
||||
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
|
||||
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "Usare l'interruttore hardware per disattivare"
|
||||
|
||||
@ -1601,7 +1599,7 @@ msgstr "Hotspot attivo"
|
||||
msgid "Connecting"
|
||||
msgstr "Connessione"
|
||||
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
|
||||
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
|
||||
msgid "Network Settings"
|
||||
msgstr "Impostazioni rete"
|
||||
|
||||
@ -1656,31 +1654,31 @@ msgstr "UPS"
|
||||
msgid "Battery"
|
||||
msgstr "Batteria"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:82
|
||||
#: ../js/ui/status/rfkill.js:83
|
||||
msgid "Airplane Mode"
|
||||
msgstr "Modalità aereo"
|
||||
|
||||
#: ../js/ui/status/rfkill.js:84
|
||||
#: ../js/ui/status/rfkill.js:85
|
||||
msgid "On"
|
||||
msgstr "On"
|
||||
|
||||
#: ../js/ui/status/system.js:314
|
||||
#: ../js/ui/status/system.js:317
|
||||
msgid "Switch User"
|
||||
msgstr "Cambia utente"
|
||||
|
||||
#: ../js/ui/status/system.js:319
|
||||
#: ../js/ui/status/system.js:322
|
||||
msgid "Log Out"
|
||||
msgstr "Termina sessione"
|
||||
|
||||
#: ../js/ui/status/system.js:338
|
||||
#: ../js/ui/status/system.js:341
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Blocco orientazione"
|
||||
|
||||
#: ../js/ui/status/system.js:346
|
||||
#: ../js/ui/status/system.js:349
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:352
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
|
183
po/lt.po
183
po/lt.po
@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-05-18 07:27+0000\n"
|
||||
"PO-Revision-Date: 2014-05-18 22:25+0300\n"
|
||||
"POT-Creation-Date: 2014-06-02 19:26+0000\n"
|
||||
"PO-Revision-Date: 2014-06-02 23:35+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
@ -58,7 +58,6 @@ msgid "Window management and application launching"
|
||||
msgstr "Langų valdymas ir programų paleidimas"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "GNOME Shell plėtinių nustatymai"
|
||||
|
||||
@ -267,45 +266,30 @@ msgid ""
|
||||
msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Mygtukų išdėstymas pavadinimo juostoje"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Šis raktas perrašo org.gnome.desktop.wm.preferences raktą, kai vykdoma GNOME "
|
||||
"Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Darbalaukiai yra valdomi dinamiškai"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Darbalaukiai tik pagrindiniame monitoriuje"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:127
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Kilo klaida įkeliant %s nustatymų dialogą:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
msgstr "Plėtinys"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:191
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
|
||||
#: ../js/extensionPrefs/main.js:157
|
||||
#| msgid "Configure GNOME Shell Extensions"
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "GNOME Shell plėtiniai"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
@ -328,25 +312,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prisijungti"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:269
|
||||
msgid "Choose Session"
|
||||
msgstr "Pasirinkite seansą"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:429
|
||||
msgid "Not listed?"
|
||||
msgstr "Nėra sąraše?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(pvz., naudotojas arba %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Naudotojo vardas: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:924
|
||||
#: ../js/gdm/loginDialog.js:922
|
||||
msgid "Login Window"
|
||||
msgstr "Prisijungimo langas"
|
||||
|
||||
@ -534,11 +518,11 @@ msgctxt "list saturday"
|
||||
msgid "S"
|
||||
msgstr "Št"
|
||||
|
||||
#: ../js/ui/calendar.js:453
|
||||
#: ../js/ui/calendar.js:454
|
||||
msgid "Previous month"
|
||||
msgstr "Ankstesnis mėnuo"
|
||||
|
||||
#: ../js/ui/calendar.js:463
|
||||
#: ../js/ui/calendar.js:464
|
||||
msgid "Next month"
|
||||
msgstr "Kitas mėnuo"
|
||||
|
||||
@ -724,77 +708,77 @@ msgid "Mute"
|
||||
msgstr "Nutildyti"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:958
|
||||
#: ../js/ui/components/telepathyClient.js:957
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:965
|
||||
#: ../js/ui/components/telepathyClient.js:964
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Vakar, %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:972
|
||||
#: ../js/ui/components/telepathyClient.js:971
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:979
|
||||
#: ../js/ui/components/telepathyClient.js:978
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%B %d, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:985
|
||||
#: ../js/ui/components/telepathyClient.js:984
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%Y %m %d, %H∶%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:994
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1001
|
||||
#: ../js/ui/components/telepathyClient.js:997
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Vakar, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1008
|
||||
#: ../js/ui/components/telepathyClient.js:1004
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1015
|
||||
#: ../js/ui/components/telepathyClient.js:1011
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%B %d, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/ui/components/telepathyClient.js:1021
|
||||
#: ../js/ui/components/telepathyClient.js:1017
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%Y %B %d, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:1054
|
||||
#: ../js/ui/components/telepathyClient.js:1049
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s nuo šiol vadinasi %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1158
|
||||
#: ../js/ui/components/telepathyClient.js:1153
|
||||
#, javascript-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Kvietimas į %s"
|
||||
@ -802,38 +786,38 @@ msgstr "Kvietimas į %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1166
|
||||
#: ../js/ui/components/telepathyClient.js:1161
|
||||
#, javascript-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s jus kviečia prisijungti prie %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1168
|
||||
#: ../js/ui/components/telepathyClient.js:1203
|
||||
#: ../js/ui/components/telepathyClient.js:1237
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
#: ../js/ui/components/telepathyClient.js:1163
|
||||
#: ../js/ui/components/telepathyClient.js:1198
|
||||
#: ../js/ui/components/telepathyClient.js:1232
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "Atmesti"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1174
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1169
|
||||
#: ../js/ui/components/telepathyClient.js:1238
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "Priimti"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1193
|
||||
#: ../js/ui/components/telepathyClient.js:1188
|
||||
#, javascript-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Vaizdo skambutis nuo %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1196
|
||||
#: ../js/ui/components/telepathyClient.js:1191
|
||||
#, javascript-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Skambutis nuo %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun */
|
||||
#: ../js/ui/components/telepathyClient.js:1210
|
||||
#: ../js/ui/components/telepathyClient.js:1205
|
||||
msgid "Answer"
|
||||
msgstr "Atsiliepti"
|
||||
|
||||
@ -842,110 +826,110 @@ msgstr "Atsiliepti"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#. */
|
||||
#: ../js/ui/components/telepathyClient.js:1231
|
||||
#: ../js/ui/components/telepathyClient.js:1226
|
||||
#, javascript-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s jums siunčia %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias */
|
||||
#: ../js/ui/components/telepathyClient.js:1260
|
||||
#: ../js/ui/components/telepathyClient.js:1255
|
||||
#, javascript-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "Tinklo klaida"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "Nepavyko patvirtinti tapatybės"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "Šifravimo klaida"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Liudijimas nepateiktas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Liudijimas nepatikimas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "Liudijimo galiojimas pasibaigęs"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Liudijimas neaktyvuotas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Liudijimo serverio vardo nesutapimas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Liudijimo piršto atspaudo nesutapimas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Liudijimas pačių pasirašytas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Nustatyta atsijungimo būsena"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Šifravimas negalimas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Liudijimas netinkamas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Ryšys atmestas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Nepavyko užmegzti ryšio"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Ryšys nutrūko"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Ši paskyra jau prijungta prie serverio"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Tokia paskyra serveryje jau yra"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Liudijimas atšauktas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
|
||||
"silpnas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1390
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -953,22 +937,22 @@ msgstr ""
|
||||
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
|
||||
"bibliotekos apribojimus"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1392
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "Vidinė klaida"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "Nepavyksta prisijungti prie %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1407
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "Rodyti paskyrą"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1444
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nežinoma priežastis"
|
||||
|
||||
@ -1148,7 +1132,7 @@ msgstr "Įdiegti"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
|
||||
msgid "Keyboard"
|
||||
msgstr "Klaviatūra"
|
||||
|
||||
@ -1283,7 +1267,7 @@ msgstr "Apžvalga"
|
||||
msgid "Top Bar"
|
||||
msgstr "Viršutinė juosta"
|
||||
|
||||
#: ../js/ui/popupMenu.js:271
|
||||
#: ../js/ui/popupMenu.js:279
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1291,7 +1275,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Įveskite komandą"
|
||||
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
|
||||
msgid "Close"
|
||||
msgstr "Užverti"
|
||||
|
||||
@ -1432,7 +1416,7 @@ msgstr "Atsijungta"
|
||||
msgid "Brightness"
|
||||
msgstr "Ryškumas"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:407
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Rodyti klaviatūros išdėstymą"
|
||||
|
||||
@ -1719,43 +1703,43 @@ msgstr[0] "Pakeitimai bus grąžinti po %d sekundės"
|
||||
msgstr[1] "Pakeitimai bus grąžinti po %d sekundžių"
|
||||
msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
|
||||
|
||||
#: ../js/ui/windowMenu.js:33
|
||||
#: ../js/ui/windowMenu.js:34
|
||||
msgid "Minimize"
|
||||
msgstr "Sumažinti"
|
||||
|
||||
#: ../js/ui/windowMenu.js:40
|
||||
#: ../js/ui/windowMenu.js:41
|
||||
msgid "Unmaximize"
|
||||
msgstr "Grąžinti iš išdidinimo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:44
|
||||
#: ../js/ui/windowMenu.js:45
|
||||
msgid "Maximize"
|
||||
msgstr "Išdidinti"
|
||||
|
||||
#: ../js/ui/windowMenu.js:51
|
||||
#: ../js/ui/windowMenu.js:52
|
||||
msgid "Move"
|
||||
msgstr "Perkelti"
|
||||
|
||||
#: ../js/ui/windowMenu.js:57
|
||||
#: ../js/ui/windowMenu.js:58
|
||||
msgid "Resize"
|
||||
msgstr "Keisti dydį"
|
||||
|
||||
#: ../js/ui/windowMenu.js:64
|
||||
#: ../js/ui/windowMenu.js:65
|
||||
msgid "Move Titlebar Onscreen"
|
||||
msgstr "Perkelti pavadinimo juostą į ekraną"
|
||||
|
||||
#: ../js/ui/windowMenu.js:69
|
||||
#: ../js/ui/windowMenu.js:70
|
||||
msgid "Always on Top"
|
||||
msgstr "Visada viršuje"
|
||||
|
||||
#: ../js/ui/windowMenu.js:86
|
||||
#: ../js/ui/windowMenu.js:89
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Visada matomame darbalaukyje"
|
||||
|
||||
#: ../js/ui/windowMenu.js:103
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Perkelti į aukščiau esantį darbalaukį"
|
||||
|
||||
#: ../js/ui/windowMenu.js:108
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Perkelti į žemiau esantį darbalaukį"
|
||||
|
||||
@ -1819,3 +1803,4 @@ msgstr "Slaptažodis negali būti tuščias"
|
||||
#: ../src/shell-polkit-authentication-agent.c:346
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
||||
|
||||
|
211
po/pt_BR.po
211
po/pt_BR.po
@ -13,25 +13,24 @@
|
||||
# Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013.
|
||||
# Fábio Nogueira <fnogueira@gnome.org>, 2014.
|
||||
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
|
||||
# Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2014.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-05-19 11:46+0000\n"
|
||||
"PO-Revision-Date: 2014-05-19 16:48-0300\n"
|
||||
"Last-Translator: Georges Basile Stavracas Neto <georges.stavracas@gmail."
|
||||
"com>\n"
|
||||
"POT-Creation-Date: 2014-06-03 07:28+0000\n"
|
||||
"PO-Revision-Date: 2014-06-03 10:26-0300\n"
|
||||
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.6.4\n"
|
||||
"X-Generator: Poedit 1.6.5\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
@ -68,13 +67,12 @@ msgid "Window management and application launching"
|
||||
msgstr "Gerenciamento de janelas e lançador de aplicativos"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Preferências de extensões do GNOME Shell"
|
||||
msgstr "Preferências de extensões do Shell do GNOME"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configurar extensões do GNOME Shell"
|
||||
msgstr "Configurar extensões do Shell do GNOME"
|
||||
|
||||
# Traduções do Xfce e da Microsoft usam compositor --Enrico
|
||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||
@ -287,47 +285,31 @@ msgstr ""
|
||||
"GNOME."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Organização dos botões na barra de título"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
|
||||
"executar o Shell do GNOME."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Espaços de trabalho são gerenciados dinamicamente"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Espaços de trabalho apenas no monitor primário"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:127
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
msgstr "Extensão"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:191
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Selecione uma extensão para configurar usando a caixa de seleção abaixo."
|
||||
#: ../js/extensionPrefs/main.js:157
|
||||
#| msgid "Configure GNOME Shell Extensions"
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "Extensões do Shell do GNOME"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
@ -350,25 +332,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Entrar"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:269
|
||||
msgid "Choose Session"
|
||||
msgstr "Escolher sessão"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:429
|
||||
msgid "Not listed?"
|
||||
msgstr "Não está listado?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(ex.: usuário ou %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Nome de usuário: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:924
|
||||
#: ../js/gdm/loginDialog.js:922
|
||||
msgid "Login Window"
|
||||
msgstr "Janela de sessão"
|
||||
|
||||
@ -556,11 +538,11 @@ msgctxt "list saturday"
|
||||
msgid "S"
|
||||
msgstr "Sab"
|
||||
|
||||
#: ../js/ui/calendar.js:453
|
||||
#: ../js/ui/calendar.js:454
|
||||
msgid "Previous month"
|
||||
msgstr "Mês anterior"
|
||||
|
||||
#: ../js/ui/calendar.js:463
|
||||
#: ../js/ui/calendar.js:464
|
||||
msgid "Next month"
|
||||
msgstr "Próximo mês"
|
||||
|
||||
@ -746,77 +728,77 @@ msgid "Mute"
|
||||
msgstr "Sem áudio"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:958
|
||||
#: ../js/ui/components/telepathyClient.js:957
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:965
|
||||
#: ../js/ui/components/telepathyClient.js:964
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Ontem, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:972
|
||||
#: ../js/ui/components/telepathyClient.js:971
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:979
|
||||
#: ../js/ui/components/telepathyClient.js:978
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%d de %B, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:985
|
||||
#: ../js/ui/components/telepathyClient.js:984
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%d de %B de %Y, %H∶%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:994
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1001
|
||||
#: ../js/ui/components/telepathyClient.js:997
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Ontem, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1008
|
||||
#: ../js/ui/components/telepathyClient.js:1004
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1015
|
||||
#: ../js/ui/components/telepathyClient.js:1011
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%d de %B, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/ui/components/telepathyClient.js:1021
|
||||
#: ../js/ui/components/telepathyClient.js:1017
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%d de %B de %Y, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:1054
|
||||
#: ../js/ui/components/telepathyClient.js:1049
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s agora é conhecido como %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1158
|
||||
#: ../js/ui/components/telepathyClient.js:1153
|
||||
#, javascript-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Convite para %s"
|
||||
@ -824,38 +806,38 @@ msgstr "Convite para %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1166
|
||||
#: ../js/ui/components/telepathyClient.js:1161
|
||||
#, javascript-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s está convidando você para participar de %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1168
|
||||
#: ../js/ui/components/telepathyClient.js:1203
|
||||
#: ../js/ui/components/telepathyClient.js:1237
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
#: ../js/ui/components/telepathyClient.js:1163
|
||||
#: ../js/ui/components/telepathyClient.js:1198
|
||||
#: ../js/ui/components/telepathyClient.js:1232
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "Recusar"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1174
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1169
|
||||
#: ../js/ui/components/telepathyClient.js:1238
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "Aceitar"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1193
|
||||
#: ../js/ui/components/telepathyClient.js:1188
|
||||
#, javascript-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Chamada de vídeo para %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1196
|
||||
#: ../js/ui/components/telepathyClient.js:1191
|
||||
#, javascript-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Chamada de %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun */
|
||||
#: ../js/ui/components/telepathyClient.js:1210
|
||||
#: ../js/ui/components/telepathyClient.js:1205
|
||||
msgid "Answer"
|
||||
msgstr "Atender"
|
||||
|
||||
@ -864,110 +846,110 @@ msgstr "Atender"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#. */
|
||||
#: ../js/ui/components/telepathyClient.js:1231
|
||||
#: ../js/ui/components/telepathyClient.js:1226
|
||||
#, javascript-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s está enviando %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias */
|
||||
#: ../js/ui/components/telepathyClient.js:1260
|
||||
#: ../js/ui/components/telepathyClient.js:1255
|
||||
#, javascript-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s quer permissão para vê-lo quando conectado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "Erro de rede"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "Falha de autenticação"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "Erro de criptografia"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Certificado não fornecido"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Certificado não confiável"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certificado expirado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certificado não ativado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Máquina do certificado não confere"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Impressão digital do certificado não confere"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certificado auto-assinado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "O status está definido como desconectado."
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Criptografia não disponível"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "O certificado é inválido"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "A conexão foi recusada"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "A conexão não pode ser estabelecida"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Conexão perdida"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Esta conta já está conectada ao servidor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "A conexão foi substituída por uma nova conexão usando o mesmo recurso"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "A conta já existe no servidor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "O servidor está atualmente muito ocupado para controlar a conexão"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "O certificado foi revogado"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"O certificado usa um algoritmo de cifragem inseguro ou é criptograficamente "
|
||||
"fraco"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1390
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -975,22 +957,22 @@ msgstr ""
|
||||
"O comprimento do certificado do servidor, ou a profundidade da cadeia do "
|
||||
"certificado excedeu os limites impostos pela biblioteca de criptografia"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1392
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "Erro interno"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "Não foi possível conectar-se a %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1407
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "Visualizar conta"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1444
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razão desconhecida"
|
||||
|
||||
@ -1167,7 +1149,7 @@ msgstr "Instalar"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
@ -1301,7 +1283,7 @@ msgstr "Atividades"
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
#: ../js/ui/popupMenu.js:271
|
||||
#: ../js/ui/popupMenu.js:279
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1309,7 +1291,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Digite um comando"
|
||||
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
|
||||
msgid "Close"
|
||||
msgstr "Fechar"
|
||||
|
||||
@ -1448,7 +1430,7 @@ msgstr "Não conectado"
|
||||
msgid "Brightness"
|
||||
msgstr "Brilho"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:407
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Exibir disposição de teclado"
|
||||
|
||||
@ -1737,43 +1719,43 @@ msgid_plural "Settings changes will revert in %d seconds"
|
||||
msgstr[0] "Alterações nas configurações serão revertidas em %d segundo"
|
||||
msgstr[1] "Alterações nas configurações serão revertidas em %d segundos"
|
||||
|
||||
#: ../js/ui/windowMenu.js:33
|
||||
#: ../js/ui/windowMenu.js:34
|
||||
msgid "Minimize"
|
||||
msgstr "Minimizar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:40
|
||||
#: ../js/ui/windowMenu.js:41
|
||||
msgid "Unmaximize"
|
||||
msgstr "Restaurar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:44
|
||||
#: ../js/ui/windowMenu.js:45
|
||||
msgid "Maximize"
|
||||
msgstr "Maximizar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:51
|
||||
#: ../js/ui/windowMenu.js:52
|
||||
msgid "Move"
|
||||
msgstr "Mover"
|
||||
|
||||
#: ../js/ui/windowMenu.js:57
|
||||
#: ../js/ui/windowMenu.js:58
|
||||
msgid "Resize"
|
||||
msgstr "Redimensionar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:64
|
||||
#: ../js/ui/windowMenu.js:65
|
||||
msgid "Move Titlebar Onscreen"
|
||||
msgstr "Mover barra de título na tela"
|
||||
|
||||
#: ../js/ui/windowMenu.js:69
|
||||
#: ../js/ui/windowMenu.js:70
|
||||
msgid "Always on Top"
|
||||
msgstr "Sempre no topo"
|
||||
|
||||
#: ../js/ui/windowMenu.js:86
|
||||
#: ../js/ui/windowMenu.js:89
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Sempre na área de trabalho visível"
|
||||
|
||||
#: ../js/ui/windowMenu.js:103
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Mover para a área de trabalho acima"
|
||||
|
||||
#: ../js/ui/windowMenu.js:108
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Mover para a área de trabalho abaixo"
|
||||
|
||||
@ -1836,6 +1818,23 @@ msgstr "A senha não pode estar em branco"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "O diálogo de autenticação foi descartado pelo usuário"
|
||||
|
||||
#~ msgid "Arrangement of buttons on the titlebar"
|
||||
#~ msgstr "Organização dos botões na barra de título"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
|
||||
#~ "running GNOME Shell."
|
||||
#~ msgstr ""
|
||||
#~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
|
||||
#~ "executar o Shell do GNOME."
|
||||
|
||||
#~ msgid "Extension"
|
||||
#~ msgstr "Extensão"
|
||||
|
||||
#~ msgid "Select an extension to configure using the combobox above."
|
||||
#~ msgstr ""
|
||||
#~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo."
|
||||
|
||||
#~ msgid "calendar:MY"
|
||||
#~ msgstr "calendar:MY"
|
||||
|
||||
|
405
po/tr.po
405
po/tr.po
@ -11,10 +11,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-05-17 23:09+0000\n"
|
||||
"PO-Revision-Date: 2014-05-19 14:40+0300\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-06-05 07:25+0000\n"
|
||||
"PO-Revision-Date: 2014-06-05 23:19+0000\n"
|
||||
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
||||
"Language: tr\n"
|
||||
@ -22,7 +21,6 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -58,7 +56,6 @@ msgid "Window management and application launching"
|
||||
msgstr "Pencere yönetimi ve uygulama başlatma"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "GNOME Kabuğu Eklenti Tercihleri"
|
||||
|
||||
@ -72,16 +69,13 @@ msgstr "GNOME Kabuğu (wayland bestecisi)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
"Geliştirici ve deneme yapanlar için Alt-F2' den ulaşılan araçları etkinleştir"
|
||||
msgstr "Geliştirici ve deneme yapanlar için Alt-F2' den ulaşılan araçları etkinleştir"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Alt-F2 kutucuğu ile bütünleşik hata ayıklama ve izleme uygulamalarına erişim "
|
||||
"sağlar."
|
||||
msgstr "Alt-F2 kutucuğu ile bütünleşik hata ayıklama ve izleme uygulamalarına erişim sağlar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||
msgid "UUIDs of extensions to enable"
|
||||
@ -89,16 +83,11 @@ msgstr "Etkinleştirilecek uzantıların UUID'si"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||
msgid ""
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||
"list. You can also manipulate this list with the EnableExtension and "
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which"
|
||||
" should be loaded. Any extension that wants to be loaded needs to be in this"
|
||||
" list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"GNOME Kabuğu eklentilerinde UUID adlı bir özellik bulunur; bu anahtar, "
|
||||
"yüklenmesi gereken uzantıları listeler. Yüklenmesi istenen her tür uzantının "
|
||||
"bu listede olması gerekir. Ayrıca bu listeyi, org.gnome.Shell üzerindeki "
|
||||
"EnableExtension ve DisableExtension DBus yöntemleri ile de "
|
||||
"değiştirebilirsiniz."
|
||||
msgstr "GNOME Kabuğu eklentilerinde UUID adlı bir özellik bulunur; bu anahtar, yüklenmesi gereken uzantıları listeler. Yüklenmesi istenen her tür uzantının bu listede olması gerekir. Ayrıca bu listeyi, org.gnome.Shell üzerindeki EnableExtension ve DisableExtension DBus yöntemleri ile de değiştirebilirsiniz."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "Disables the validation of extension version compatibility"
|
||||
@ -109,11 +98,7 @@ msgid ""
|
||||
"GNOME Shell will only load extensions that claim to support the current "
|
||||
"running version. Enabling this option will disable this check and try to "
|
||||
"load all extensions regardless of the versions they claim to support."
|
||||
msgstr ""
|
||||
"GNOME Kabuğu sadece mevcut çalışan sürümü desteklediklerini ileri süren "
|
||||
"uzantıları yükleyecektir. Bu seçeneği etkinleştirmek bu denetimi devre dışı "
|
||||
"bırakacak ve desteklendiği ileri sürülen sürümleri dikkate almaksızın, tüm "
|
||||
"uygulamaları yüklemeye çalışacaktır."
|
||||
msgstr "GNOME Kabuğu sadece mevcut çalışan sürümü desteklediklerini ileri süren uzantıları yükleyecektir. Bu seçeneği etkinleştirmek bu denetimi devre dışı bırakacak ve desteklendiği ileri sürülen sürümleri dikkate almaksızın, tüm uygulamaları yüklemeye çalışacaktır."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
@ -121,10 +106,9 @@ msgstr "Sık kullanılan uygulamalar için masa üstü dosyalarının ID listesi
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Bu tanımlayıcıya sahip uygulamalar sık kullanılanlar bölümünde gösterilecek."
|
||||
"The applications corresponding to these identifiers will be displayed in the"
|
||||
" favorites area."
|
||||
msgstr "Bu tanımlayıcıya sahip uygulamalar sık kullanılanlar bölümünde gösterilecek."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@ -140,17 +124,14 @@ msgstr "Kullanıcı menüsünde 'Oturumu Kapat' menü öğesini daima göster."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Bu ayar tek kullanıcı oturum açtığında 'Oturumu Kapat' menü ögesinin "
|
||||
"gizlenmesini önler."
|
||||
"This key overrides the automatic hiding of the 'Log out' menu item in "
|
||||
"single-user, single-session situations."
|
||||
msgstr "Bu ayar tek kullanıcı oturum açtığında 'Oturumu Kapat' menü ögesinin gizlenmesini önler."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid ""
|
||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
|
||||
msgstr "Şifreli ya da uzak dosya sistemlerini bağlamak için parolanın hatırlanması"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
@ -158,11 +139,7 @@ msgid ""
|
||||
"filesystem is mounted. If the password can be saved for future use a "
|
||||
"'Remember Password' checkbox will be present. This key sets the default "
|
||||
"state of the checkbox."
|
||||
msgstr ""
|
||||
"Kabuk, şifreli bir cihaz ya da uzak dosya sistemi bağlandığında parola "
|
||||
"isteyecek. Eğer parola gelecekte kullanılmak üzere kaydedilebiliyorsa, "
|
||||
"'Parolayı Hatırla' onay kutusu sunulacak. Bu anahtar, onay kutusunun "
|
||||
"öntanımlı durumunu belirler."
|
||||
msgstr "Kabuk, şifreli bir cihaz ya da uzak dosya sistemi bağlandığında parola isteyecek. Eğer parola gelecekte kullanılmak üzere kaydedilebiliyorsa, 'Parolayı Hatırla' onay kutusu sunulacak. Bu anahtar, onay kutusunun öntanımlı durumunu belirler."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
@ -186,10 +163,9 @@ msgstr "\"Uygulamaları Göster\" görünümünü açmak için klavye kısayolu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için "
|
||||
"klavye kısayolu."
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities "
|
||||
"Overview."
|
||||
msgstr "Etkinlikler Genel Görünümünün \"Uygulamaları Göster\" görünümünü açmak için klavye kısayolu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to open the overview"
|
||||
@ -235,14 +211,7 @@ msgid ""
|
||||
"receiver). Please keep in mind that this only controls what GeoClue will "
|
||||
"allow applications to see and they can find user's location on their own "
|
||||
"using network resources (albeit with street-level accuracy at best)."
|
||||
msgstr ""
|
||||
"Uygulamaların görmesine izin verilen en yüksek konum hassasiyetini "
|
||||
"yapılandırır. Geçerli seçenekler: 'kapalı' (konum izlemeyi devre dışı "
|
||||
"bırak), 'ülke', 'şehir', 'semt', 'sokak' ve 'kesin' (genelde GPS alıcısı "
|
||||
"gerektirir). Lütfen unutmayın: Bu, sadece GeoClue'nun uygulamaların neleri "
|
||||
"görmesine izin vereceğini denetler. Uygulamalar, kullanıcının konumunu (en "
|
||||
"fazla sokak düzeyindeki bir hassasiyetle de olsa) ağ kaynaklarını kullanarak "
|
||||
"kendi imkanlarıyla bulabilirler."
|
||||
msgstr "Uygulamaların görmesine izin verilen en yüksek konum hassasiyetini yapılandırır. Geçerli seçenekler: 'kapalı' (konum izlemeyi devre dışı bırak), 'ülke', 'şehir', 'semt', 'sokak' ve 'kesin' (genelde GPS alıcısı gerektirir). Lütfen unutmayın: Bu, sadece GeoClue'nun uygulamaların neleri görmesine izin vereceğini denetler. Uygulamalar, kullanıcının konumunu (en fazla sokak düzeyindeki bir hassasiyetle de olsa) ağ kaynaklarını kullanarak kendi imkanlarıyla bulabilirler."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "The application icon mode."
|
||||
@ -251,13 +220,9 @@ msgstr "Uygulama simge kipi."
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||
"only' (shows only the application icon) or 'both'."
|
||||
msgstr ""
|
||||
"Pencerelerin değiştiricideki gösterim şeklini yapılandırır. Uygun "
|
||||
"olasılıklar; 'thumbnail-only' (pencerenin küçük bir resmini gösterir), 'app-"
|
||||
"icon-only' (sadece uygulama simgesini gösterir) ya da 'both' (her ikisi) "
|
||||
"değerleridir."
|
||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
|
||||
"(shows only the application icon) or 'both'."
|
||||
msgstr "Pencerelerin değiştiricideki gösterim şeklini yapılandırır. Uygun olasılıklar; 'thumbnail-only' (pencerenin küçük bir resmini gösterir), 'app-icon-only' (sadece uygulama simgesini gösterir) ya da 'both' (her ikisi) değerleridir."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
@ -266,52 +231,32 @@ msgstr "Yardımcı iletişim penceresini üst pencereye iliştir"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı "
|
||||
"geçersiz kılar."
|
||||
msgstr "Bu anahtar, GNOME Shell çalışırken org.gnome.mutter içindeki anahtarı geçersiz kılar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Düğmelerin başlık çubuğundaki düzeni"
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Bu anahtar, GNOME Shell çalışırken org.gnome.desktop.wm.preferences içindeki "
|
||||
"anahtarı geçersiz kılar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Çalışma alanları dinamik olarak yönetilir"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Çalışma alanları sadece birincil ekranda"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
|
||||
msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:127
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "%s için tercihler iletişim penceresi yüklenirken hata oluştu:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:167
|
||||
msgid "Extension"
|
||||
msgstr "Eklenti"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:191
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Ayarlamak için yukarıdaki açılan kutudan bir eklenti seçin."
|
||||
#: ../js/extensionPrefs/main.js:157
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "GNOME Kabuğu Uzantıları"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||
@ -334,25 +279,25 @@ msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Giriş"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:271
|
||||
#: ../js/gdm/loginDialog.js:269
|
||||
msgid "Choose Session"
|
||||
msgstr "Oturum Seçin"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
#: ../js/gdm/loginDialog.js:429
|
||||
msgid "Not listed?"
|
||||
msgstr "Listede yok mu?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:616
|
||||
#: ../js/gdm/loginDialog.js:614
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(örneğin, kullanıcı veya %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
|
||||
#: ../js/ui/components/networkAgent.js:280
|
||||
msgid "Username: "
|
||||
msgstr "Kullanıcı Adı: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:924
|
||||
#: ../js/gdm/loginDialog.js:922
|
||||
msgid "Login Window"
|
||||
msgstr "Oturum Açma Penceresi"
|
||||
|
||||
@ -402,7 +347,6 @@ msgid "Add to Favorites"
|
||||
msgstr "Sık Kullanılanlara Ekle"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1608
|
||||
#| msgid "Show Text"
|
||||
msgid "Show Details"
|
||||
msgstr "Ayrıntıları Göster"
|
||||
|
||||
@ -541,11 +485,11 @@ msgctxt "list saturday"
|
||||
msgid "S"
|
||||
msgstr "Ct"
|
||||
|
||||
#: ../js/ui/calendar.js:453
|
||||
#: ../js/ui/calendar.js:454
|
||||
msgid "Previous month"
|
||||
msgstr "Önceki ay"
|
||||
|
||||
#: ../js/ui/calendar.js:463
|
||||
#: ../js/ui/calendar.js:464
|
||||
msgid "Next month"
|
||||
msgstr "Gelecek ay"
|
||||
|
||||
@ -554,13 +498,15 @@ msgstr "Gelecek ay"
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Planınız Boş"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current
|
||||
#. year */
|
||||
#: ../js/ui/calendar.js:793
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
#. Translators: Shown on calendar heading when selected day occurs on
|
||||
#. different year */
|
||||
#: ../js/ui/calendar.js:796
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
@ -649,9 +595,7 @@ msgstr "Kablosuz ağ için kimlik doğrulama gerekiyor"
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr ""
|
||||
"“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları "
|
||||
"gerekiyor."
|
||||
msgstr "“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları gerekiyor."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:316
|
||||
msgid "Wired 802.1X authentication"
|
||||
@ -731,77 +675,78 @@ msgid "Mute"
|
||||
msgstr "Sesi Kapat"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:958
|
||||
#: ../js/ui/components/telepathyClient.js:957
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:965
|
||||
#: ../js/ui/components/telepathyClient.js:964
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Dün, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:972
|
||||
#: ../js/ui/components/telepathyClient.js:971
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:979
|
||||
#: ../js/ui/components/telepathyClient.js:978
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%d %B, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#: ../js/ui/components/telepathyClient.js:985
|
||||
#: ../js/ui/components/telepathyClient.js:984
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%d %B %Y, %H∶%M"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#: ../js/ui/components/telepathyClient.js:994
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1001
|
||||
#: ../js/ui/components/telepathyClient.js:997
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Dün, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1008
|
||||
#: ../js/ui/components/telepathyClient.js:1004
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#: ../js/ui/components/telepathyClient.js:1015
|
||||
#: ../js/ui/components/telepathyClient.js:1011
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%d %B, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#: ../js/ui/components/telepathyClient.js:1021
|
||||
#: ../js/ui/components/telepathyClient.js:1017
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%d %B %Y, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. Translators: this is the other person changing their old IM name to their
|
||||
#. new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:1054
|
||||
#: ../js/ui/components/telepathyClient.js:1049
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s, şimdi %s olarak biliniyor"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1158
|
||||
#: ../js/ui/components/telepathyClient.js:1153
|
||||
#, javascript-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "%s'e Davet"
|
||||
@ -809,38 +754,38 @@ msgstr "%s'e Davet"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1166
|
||||
#: ../js/ui/components/telepathyClient.js:1161
|
||||
#, javascript-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1168
|
||||
#: ../js/ui/components/telepathyClient.js:1203
|
||||
#: ../js/ui/components/telepathyClient.js:1237
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
#: ../js/ui/components/telepathyClient.js:1163
|
||||
#: ../js/ui/components/telepathyClient.js:1198
|
||||
#: ../js/ui/components/telepathyClient.js:1232
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
msgid "Decline"
|
||||
msgstr "Reddet"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1174
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1169
|
||||
#: ../js/ui/components/telepathyClient.js:1238
|
||||
#: ../js/ui/components/telepathyClient.js:1295
|
||||
msgid "Accept"
|
||||
msgstr "Kabul Et"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1193
|
||||
#: ../js/ui/components/telepathyClient.js:1188
|
||||
#, javascript-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "%s'den görüntülü arama"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1196
|
||||
#: ../js/ui/components/telepathyClient.js:1191
|
||||
#, javascript-format
|
||||
msgid "Call from %s"
|
||||
msgstr "%s'den çağrı"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun */
|
||||
#: ../js/ui/components/telepathyClient.js:1210
|
||||
#: ../js/ui/components/telepathyClient.js:1205
|
||||
msgid "Answer"
|
||||
msgstr "Cevapla"
|
||||
|
||||
@ -849,133 +794,129 @@ msgstr "Cevapla"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#. */
|
||||
#: ../js/ui/components/telepathyClient.js:1231
|
||||
#: ../js/ui/components/telepathyClient.js:1226
|
||||
#, javascript-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s, size %s dosyasını gönderiyor"
|
||||
|
||||
#. To translators: The parameter is the contact's alias */
|
||||
#: ../js/ui/components/telepathyClient.js:1260
|
||||
#: ../js/ui/components/telepathyClient.js:1255
|
||||
#, javascript-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
#: ../js/ui/components/telepathyClient.js:1341
|
||||
msgid "Network error"
|
||||
msgstr "Ağ hatası"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
#: ../js/ui/components/telepathyClient.js:1343
|
||||
msgid "Authentication failed"
|
||||
msgstr "Kimlik doğrulama başarısız"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1345
|
||||
msgid "Encryption error"
|
||||
msgstr "Şifreleme hatası"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1352
|
||||
#: ../js/ui/components/telepathyClient.js:1347
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Sertifika sağlanmamış"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Sertifika güvenilmez"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#: ../js/ui/components/telepathyClient.js:1351
|
||||
msgid "Certificate expired"
|
||||
msgstr "Sertifikanın süresi dolmuş"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#: ../js/ui/components/telepathyClient.js:1353
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Sertifika etkinleştirilmemiş"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1360
|
||||
#: ../js/ui/components/telepathyClient.js:1355
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Sertifikanın makine adı uyuşmuyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1362
|
||||
#: ../js/ui/components/telepathyClient.js:1357
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Sertifikanın parmak izi uyuşmuyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1359
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Sertifika kendinden-imzalı"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
#: ../js/ui/components/telepathyClient.js:1361
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Durum çevrimdışına ayarlı"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Şifreleme kullanılabilir değil"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1370
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Sertifika geçersiz"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1372
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Bağlantı reddedildi"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1374
|
||||
#: ../js/ui/components/telepathyClient.js:1369
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Bağlantı kurulamıyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1376
|
||||
#: ../js/ui/components/telepathyClient.js:1371
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Bağlantı koptu"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1378
|
||||
#: ../js/ui/components/telepathyClient.js:1373
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Bu hesap zaten sunucuya bağlı"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1380
|
||||
#: ../js/ui/components/telepathyClient.js:1375
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1382
|
||||
#: ../js/ui/components/telepathyClient.js:1377
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Sunucuda böyle bir hesap zaten var"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1384
|
||||
#: ../js/ui/components/telepathyClient.js:1379
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1386
|
||||
#: ../js/ui/components/telepathyClient.js:1381
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Sertifika hükümsüz kılınmış"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1388
|
||||
#: ../js/ui/components/telepathyClient.js:1383
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik "
|
||||
"olarak zayıf"
|
||||
msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1390
|
||||
#: ../js/ui/components/telepathyClient.js:1385
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr ""
|
||||
"Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin "
|
||||
"derinliği, şifreleme kütüphanesi tarafından koyulan sınırları aşıyor"
|
||||
"The length of the server certificate, or the depth of the server certificate"
|
||||
" chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırları aşıyor"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1392
|
||||
#: ../js/ui/components/telepathyClient.js:1387
|
||||
msgid "Internal error"
|
||||
msgstr "İç hata"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example. */
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
#: ../js/ui/components/telepathyClient.js:1397
|
||||
#, javascript-format
|
||||
msgid "Unable to connect to %s"
|
||||
msgstr "%s bağlantısı sağlanamadı"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1407
|
||||
#: ../js/ui/components/telepathyClient.js:1402
|
||||
msgid "View account"
|
||||
msgstr "Hesabı göster"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1444
|
||||
#: ../js/ui/components/telepathyClient.js:1439
|
||||
msgid "Unknown reason"
|
||||
msgstr "Bilinmeyen sebep"
|
||||
|
||||
@ -1004,7 +945,8 @@ msgid "Date & Time Settings"
|
||||
msgstr "Tarih ve Saat Ayarları"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29
|
||||
#. AM").
|
||||
#. */
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%A %B %e, %Y"
|
||||
@ -1087,12 +1029,11 @@ msgstr "Yeniden Başlat ve Güncelleştirmeleri Kur"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:123
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid ""
|
||||
"The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] ""
|
||||
"Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve "
|
||||
"güncelleştirmeleri kuracak."
|
||||
msgstr[0] "Sistem %d saniye içinde kendiliğinden yeniden başlayacak ve güncelleştirmeleri kuracak."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:129
|
||||
msgctxt "button"
|
||||
@ -1111,8 +1052,7 @@ msgstr "Güncelleştirmeler kurulduktan sonra kapat"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:315
|
||||
msgid "Running on battery power: please plug in before installing updates."
|
||||
msgstr ""
|
||||
"Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
|
||||
msgstr "Pil gücünde çalışıyor: Lütfen güncelleştirmeleri kurmadan önce fişi takın."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:332
|
||||
msgid "Some applications are busy or have unsaved work."
|
||||
@ -1143,7 +1083,7 @@ msgstr "Kur"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
|
||||
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
|
||||
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
|
||||
msgid "Keyboard"
|
||||
msgstr "Klavye"
|
||||
|
||||
@ -1276,7 +1216,7 @@ msgstr "Etkinlikler"
|
||||
msgid "Top Bar"
|
||||
msgstr "Tepe Çubuğu"
|
||||
|
||||
#: ../js/ui/popupMenu.js:271
|
||||
#: ../js/ui/popupMenu.js:279
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1284,7 +1224,7 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Enter a Command"
|
||||
msgstr "Komut Girin"
|
||||
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
|
||||
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
|
||||
msgid "Close"
|
||||
msgstr "Kapat"
|
||||
|
||||
@ -1421,7 +1361,7 @@ msgstr "Bağlı Değil"
|
||||
msgid "Brightness"
|
||||
msgstr "Parlaklık"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:403
|
||||
#: ../js/ui/status/keyboard.js:407
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Klavye Düzenini Göster"
|
||||
|
||||
@ -1454,15 +1394,14 @@ msgstr "Kapalı"
|
||||
msgid "Connected"
|
||||
msgstr "Bağlı"
|
||||
|
||||
#. Translators: this is for network devices that are physically present but are not
|
||||
#. Translators: this is for network devices that are physically present but
|
||||
#. are not
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||
#: ../js/ui/status/network.js:426
|
||||
#| msgid "unmanaged"
|
||||
msgid "Unmanaged"
|
||||
msgstr "Yönetilmeyen"
|
||||
|
||||
#: ../js/ui/status/network.js:428
|
||||
#| msgid "disconnecting..."
|
||||
msgid "Disconnecting"
|
||||
msgstr "Bağlantı Kesiliyor"
|
||||
|
||||
@ -1470,23 +1409,23 @@ msgstr "Bağlantı Kesiliyor"
|
||||
msgid "Connecting"
|
||||
msgstr "Bağlantı Kuruluyor"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#. Translators: this is for network connections that require some kind of key
|
||||
#. or password */
|
||||
#: ../js/ui/status/network.js:437
|
||||
#| msgid "authentication required"
|
||||
msgid "Authentication required"
|
||||
msgstr "Kimlik doğrulama gerekir"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. Translators: this is for devices that require some kind of firmware or
|
||||
#. kernel
|
||||
#. module, which is missing */
|
||||
#: ../js/ui/status/network.js:445
|
||||
#| msgid "firmware missing"
|
||||
msgid "Firmware missing"
|
||||
msgstr "Ürün Bilgisi eksik"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. Translators: this is for a network device that cannot be activated (for
|
||||
#. example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#: ../js/ui/status/network.js:449
|
||||
#| msgid "unavailable"
|
||||
msgid "Unavailable"
|
||||
msgstr "Kullanılamaz"
|
||||
|
||||
@ -1570,7 +1509,8 @@ msgstr "Hotspot Etkin"
|
||||
msgid "connecting..."
|
||||
msgstr "bağlanıyor..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#. Translators: this is for network connections that require some kind of key
|
||||
#. or password */
|
||||
#: ../js/ui/status/network.js:1365
|
||||
msgid "authentication required"
|
||||
msgstr "kimlik doğrulaması gerekli"
|
||||
@ -1711,43 +1651,43 @@ msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
msgstr[0] "Ayarlardaki değişiklikler %d saniye içinde eski haline döndürülecek"
|
||||
|
||||
#: ../js/ui/windowMenu.js:33
|
||||
#: ../js/ui/windowMenu.js:34
|
||||
msgid "Minimize"
|
||||
msgstr ""
|
||||
msgstr "Simge durumuna küçült"
|
||||
|
||||
#: ../js/ui/windowMenu.js:40
|
||||
#: ../js/ui/windowMenu.js:41
|
||||
msgid "Unmaximize"
|
||||
msgstr ""
|
||||
msgstr "Önceki Boyut"
|
||||
|
||||
#: ../js/ui/windowMenu.js:44
|
||||
#: ../js/ui/windowMenu.js:45
|
||||
msgid "Maximize"
|
||||
msgstr ""
|
||||
msgstr "En üst düzeye çıkar"
|
||||
|
||||
#: ../js/ui/windowMenu.js:51
|
||||
#: ../js/ui/windowMenu.js:52
|
||||
msgid "Move"
|
||||
msgstr "Taşı"
|
||||
|
||||
#: ../js/ui/windowMenu.js:57
|
||||
#: ../js/ui/windowMenu.js:58
|
||||
msgid "Resize"
|
||||
msgstr "Yeniden Boyutlandır"
|
||||
|
||||
#: ../js/ui/windowMenu.js:64
|
||||
#: ../js/ui/windowMenu.js:65
|
||||
msgid "Move Titlebar Onscreen"
|
||||
msgstr "Başlık Çubuğunu Ekranda Taşı"
|
||||
|
||||
#: ../js/ui/windowMenu.js:69
|
||||
#: ../js/ui/windowMenu.js:70
|
||||
msgid "Always on Top"
|
||||
msgstr "Her Zaman Üstte"
|
||||
|
||||
#: ../js/ui/windowMenu.js:86
|
||||
#: ../js/ui/windowMenu.js:89
|
||||
msgid "Always on Visible Workspace"
|
||||
msgstr "Her Zaman Görünür Çalışma Alanında"
|
||||
|
||||
#: ../js/ui/windowMenu.js:103
|
||||
#: ../js/ui/windowMenu.js:106
|
||||
msgid "Move to Workspace Up"
|
||||
msgstr "Üstteki Çalışma Alanına Taşı"
|
||||
|
||||
#: ../js/ui/windowMenu.js:108
|
||||
#: ../js/ui/windowMenu.js:111
|
||||
msgid "Move to Workspace Down"
|
||||
msgstr "Alttaki Çalışma Alanına Taşı"
|
||||
|
||||
@ -1807,72 +1747,3 @@ msgstr "Parola boş bırakılamaz"
|
||||
#: ../src/shell-polkit-authentication-agent.c:346
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
|
||||
|
||||
#~ msgid "calendar:MY"
|
||||
#~ msgstr "takvim:AY"
|
||||
|
||||
#~ msgid "List of categories that should be displayed as folders"
|
||||
#~ msgstr "Klasör olarak görüntülenecek kategorilerin listesi"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Each category name in this list will be represented as folder in the "
|
||||
#~ "application view, rather than being displayed inline in the main view."
|
||||
#~ msgstr ""
|
||||
#~ "Bu listedeki her bir kategori adı, genel görünümde satıriçi olarak "
|
||||
#~ "gösterilmek yerine, uygulama görünümünde klasör olarak temsil edilecektir."
|
||||
|
||||
#~ msgid "<b>%A</b>, <b>%H:%M</b>"
|
||||
#~ msgstr "<b>%A</b>,<b>%H:%M</b>"
|
||||
|
||||
#~ msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
|
||||
#~ msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>"
|
||||
|
||||
#~ msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
|
||||
#~ msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
|
||||
|
||||
#~ msgid "Authorization request from %s"
|
||||
#~ msgstr "%s 'den yetkilendirme isteği"
|
||||
|
||||
#~ msgid "Device %s wants to pair with this computer"
|
||||
#~ msgstr "%s aygıtı bu bilgisayarla eşleşmek istiyor"
|
||||
|
||||
#~ msgid "Allow"
|
||||
#~ msgstr "İzin ver"
|
||||
|
||||
#~ msgid "Deny"
|
||||
#~ msgstr "Reddet"
|
||||
|
||||
#~ msgid "Device %s wants access to the service '%s'"
|
||||
#~ msgstr "%s aygıtı '%s' hizmetine erişmek istiyor"
|
||||
|
||||
#~ msgid "Always grant access"
|
||||
#~ msgstr "Her zaman erişim izni ver"
|
||||
|
||||
#~ msgid "Grant this time only"
|
||||
#~ msgstr "Sadece bu seferlik izin ver"
|
||||
|
||||
#~ msgid "Reject"
|
||||
#~ msgstr "Reddet"
|
||||
|
||||
#~ msgid "Pairing confirmation for %s"
|
||||
#~ msgstr "%s için eşleşme onayı"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
#~ msgstr ""
|
||||
#~ "Lütfen '%06d' Geçiş Anahtarının, aygıttakiyle eşleştiğini doğrulayın."
|
||||
|
||||
#~ msgid "Matches"
|
||||
#~ msgstr "Eşleşiyor"
|
||||
|
||||
#~ msgid "Does not match"
|
||||
#~ msgstr "Eşleşmiyor"
|
||||
|
||||
#~ msgid "Pairing request for %s"
|
||||
#~ msgstr "%s için eşleşme isteği"
|
||||
|
||||
#~ msgid "Please enter the PIN mentioned on the device."
|
||||
#~ msgstr "Lütfen cihazdaki PIN numarasını girin."
|
||||
|
||||
#~ msgid "OK"
|
||||
#~ msgstr "TAMAM"
|
||||
|
@ -320,7 +320,7 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
|
||||
CLEANFILES += ShellMenu-0.1.gir
|
||||
|
||||
Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
|
||||
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
|
||||
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4
|
||||
if HAVE_NETWORKMANAGER
|
||||
Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
|
||||
endif
|
||||
|
@ -78,6 +78,10 @@ static void gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
|
||||
MetaWindowMenuType menu,
|
||||
int x,
|
||||
int y);
|
||||
static void gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
|
||||
MetaWindow *window,
|
||||
MetaWindowMenuType menu,
|
||||
MetaRectangle *rect);
|
||||
|
||||
static gboolean gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
|
||||
XEvent *event);
|
||||
@ -145,6 +149,7 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
||||
plugin_class->show_tile_preview = gnome_shell_plugin_show_tile_preview;
|
||||
plugin_class->hide_tile_preview = gnome_shell_plugin_hide_tile_preview;
|
||||
plugin_class->show_window_menu = gnome_shell_plugin_show_window_menu;
|
||||
plugin_class->show_window_menu_for_rect = gnome_shell_plugin_show_window_menu_for_rect;
|
||||
|
||||
plugin_class->xevent_filter = gnome_shell_plugin_xevent_filter;
|
||||
plugin_class->keybinding_filter = gnome_shell_plugin_keybinding_filter;
|
||||
@ -318,6 +323,15 @@ gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
|
||||
_shell_wm_show_window_menu (get_shell_wm (), window, menu, x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
|
||||
MetaWindow *window,
|
||||
MetaWindowMenuType menu,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
_shell_wm_show_window_menu_for_rect (get_shell_wm (), window, menu, rect);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
|
||||
XEvent *xev)
|
||||
|
@ -778,7 +778,7 @@ emit_changed_accels (GtkActionMuxer *muxer,
|
||||
/**
|
||||
* gtk_action_muxer_set_parent:
|
||||
* @muxer: a #GtkActionMuxer
|
||||
* @parent: (allow-none): the new parent #GtkActionMuxer
|
||||
* @parent: (nullable): the new parent #GtkActionMuxer
|
||||
*
|
||||
* Sets the parent of @muxer to @parent.
|
||||
*/
|
||||
|
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 MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
|
||||
|
||||
#define OVERRIDES_SCHEMA "org.gnome.shell.overrides"
|
||||
|
||||
#define WM_NAME "GNOME Shell"
|
||||
#define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell"
|
||||
|
||||
@ -167,6 +169,26 @@ shell_dbus_init (gboolean replace)
|
||||
g_object_unref (session);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_prefs_init (void)
|
||||
{
|
||||
ShellGlobal *global = shell_global_get ();
|
||||
GSettings *settings = shell_global_get_overrides_settings (global);
|
||||
char **keys, **k, *schema_id;
|
||||
|
||||
if (!settings)
|
||||
return;
|
||||
|
||||
g_object_get (G_OBJECT (settings), "schema-id", &schema_id, NULL);
|
||||
|
||||
keys = g_settings_list_keys (settings);
|
||||
for (keys = k = g_settings_list_keys (settings); *k; k++)
|
||||
meta_prefs_override_preference_schema (*k, schema_id);
|
||||
|
||||
g_strfreev (keys);
|
||||
g_free (schema_id);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_introspection_init (void)
|
||||
{
|
||||
@ -434,6 +456,8 @@ main (int argc, char **argv)
|
||||
|
||||
_shell_global_init ("session-mode", session_mode, NULL);
|
||||
|
||||
shell_prefs_init ();
|
||||
|
||||
ecode = meta_run ();
|
||||
|
||||
if (g_getenv ("GNOME_SHELL_ENABLE_CLEANUP"))
|
||||
|
@ -252,7 +252,7 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
||||
/**
|
||||
* shell_app_system_lookup_desktop_wmclass:
|
||||
* @system: a #ShellAppSystem
|
||||
* @wmclass: (allow-none): A WM_CLASS value
|
||||
* @wmclass: (nullable): A WM_CLASS value
|
||||
*
|
||||
* Find a valid application whose .desktop file, without the extension
|
||||
* and properly canonicalized, matches @wmclass.
|
||||
@ -303,7 +303,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
|
||||
/**
|
||||
* shell_app_system_lookup_startup_wmclass:
|
||||
* @system: a #ShellAppSystem
|
||||
* @wmclass: (allow-none): A WM_CLASS value
|
||||
* @wmclass: (nullable): A WM_CLASS value
|
||||
*
|
||||
* Find a valid application whose .desktop file contains a
|
||||
* StartupWMClass entry matching @wmclass.
|
||||
|
@ -516,7 +516,7 @@ find_most_recent_transient_on_same_workspace (MetaDisplay *display,
|
||||
/**
|
||||
* shell_app_activate_window:
|
||||
* @app: a #ShellApp
|
||||
* @window: (allow-none): Window to be focused
|
||||
* @window: (nullable): Window to be focused
|
||||
* @timestamp: Event timestamp
|
||||
*
|
||||
* Bring all windows for the given app to the foreground,
|
||||
|
@ -34,7 +34,6 @@
|
||||
#endif
|
||||
|
||||
#ifdef __OpenBSD__
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
@ -1156,28 +1155,19 @@ shell_global_reexec_self (ShellGlobal *global)
|
||||
{
|
||||
GPtrArray *arr;
|
||||
gsize len;
|
||||
|
||||
#if defined __linux__
|
||||
char *buf;
|
||||
char *buf_p;
|
||||
char *buf_end;
|
||||
GError *error = NULL;
|
||||
|
||||
#if defined __linux__
|
||||
if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error))
|
||||
{
|
||||
g_warning ("failed to get /proc/self/cmdline: %s", error->message);
|
||||
return;
|
||||
}
|
||||
#elif defined __OpenBSD__
|
||||
int pid = getpid();
|
||||
int mib[] = { CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV };
|
||||
if (sysctl(mib, G_N_ELEMENTS (mib), &buf, &len, NULL, 0) == -1) {
|
||||
g_warning ("failed to get command line args: %d", errno);
|
||||
return;
|
||||
}
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
||||
buf_end = buf+len;
|
||||
arr = g_ptr_array_new ();
|
||||
/* The cmdline file is NUL-separated */
|
||||
@ -1185,6 +1175,30 @@ shell_global_reexec_self (ShellGlobal *global)
|
||||
g_ptr_array_add (arr, buf_p);
|
||||
|
||||
g_ptr_array_add (arr, NULL);
|
||||
#elif defined __OpenBSD__
|
||||
gchar **args, **args_p;
|
||||
gint mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV };
|
||||
|
||||
if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1)
|
||||
return;
|
||||
|
||||
args = g_malloc0 (len);
|
||||
|
||||
if (sysctl (mib, G_N_ELEMENTS (mib), args, &len, NULL, 0) == -1) {
|
||||
g_warning ("failed to get command line args: %d", errno);
|
||||
g_free (args);
|
||||
return;
|
||||
}
|
||||
|
||||
arr = g_ptr_array_new ();
|
||||
for (args_p = args; *args_p != NULL; args_p++) {
|
||||
g_ptr_array_add (arr, *args_p);
|
||||
}
|
||||
|
||||
g_ptr_array_add (arr, NULL);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
/* Close all file descriptors other than stdin/stdout/stderr, otherwise
|
||||
* they will leak and stay open after the exec. In particular, this is
|
||||
@ -1200,6 +1214,11 @@ shell_global_reexec_self (ShellGlobal *global)
|
||||
execvp (arr->pdata[0], (char**)arr->pdata);
|
||||
g_warning ("failed to reexec: %s", g_strerror (errno));
|
||||
g_ptr_array_free (arr, TRUE);
|
||||
#if defined __linux__
|
||||
g_free (buf);
|
||||
#elif defined __OpenBSD__
|
||||
g_free (args);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1336,6 +1355,37 @@ shell_global_get_settings (ShellGlobal *global)
|
||||
return global->settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_get_overrides_settings:
|
||||
* @global: A #ShellGlobal
|
||||
*
|
||||
* Get the session overrides GSettings instance.
|
||||
*
|
||||
* Return value: (transfer none): The GSettings object
|
||||
*/
|
||||
GSettings *
|
||||
shell_global_get_overrides_settings (ShellGlobal *global)
|
||||
{
|
||||
static GSettings *settings = NULL;
|
||||
const char *schema;
|
||||
|
||||
g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL);
|
||||
|
||||
if (!settings)
|
||||
{
|
||||
if (strcmp (global->session_mode, "classic") == 0)
|
||||
schema = "org.gnome.shell.extensions.classic-overrides";
|
||||
else if (strcmp (global->session_mode, "user") == 0)
|
||||
schema = "org.gnome.shell.overrides";
|
||||
else
|
||||
return NULL;
|
||||
|
||||
settings = g_settings_new (schema);
|
||||
}
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_global_get_current_time:
|
||||
* @global: A #ShellGlobal
|
||||
@ -1583,7 +1633,7 @@ build_ca_proplist_for_event (ca_proplist *props,
|
||||
* @global: the #ShellGlobal
|
||||
* @id: an id, used to cancel later (0 if not needed)
|
||||
* @name: the sound name
|
||||
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
|
||||
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
|
||||
*
|
||||
* Plays a simple sound picked according to Freedesktop sound theme.
|
||||
* Really just a workaround for libcanberra not being introspected.
|
||||
@ -1611,7 +1661,7 @@ shell_global_play_theme_sound (ShellGlobal *global,
|
||||
* @id: an id, used to cancel later (0 if not needed)
|
||||
* @name: the sound name
|
||||
* @description: the localized description of the event that triggered this alert
|
||||
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
|
||||
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
|
||||
* @application_id: application on behalf of which the sound is played
|
||||
* @application_name:
|
||||
*
|
||||
@ -1645,7 +1695,7 @@ shell_global_play_theme_sound_full (ShellGlobal *global,
|
||||
* @id: an id, used to cancel later (0 if not needed)
|
||||
* @file_name: the file name to play
|
||||
* @description: the localized description of the event that triggered this alert
|
||||
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
|
||||
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
|
||||
* @application_id: application on behalf of which the sound is played
|
||||
* @application_name:
|
||||
*
|
||||
@ -1679,7 +1729,7 @@ shell_global_play_sound_file_full (ShellGlobal *global,
|
||||
* @id: an id, used to cancel later (0 if not needed)
|
||||
* @file_name: the file name to play
|
||||
* @description: the localized description of the event that triggered this alert
|
||||
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
|
||||
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
|
||||
*
|
||||
* Like shell_global_play_theme_sound(), but with an explicit path
|
||||
* instead of a themed sound.
|
||||
@ -1840,7 +1890,7 @@ load_variant (GFile *dir,
|
||||
* shell_global_set_runtime_state:
|
||||
* @global: a #ShellGlobal
|
||||
* @property_name: Name of the property
|
||||
* @variant: (allow-none): A #GVariant, or %NULL to unset
|
||||
* @variant: (nullable): A #GVariant, or %NULL to unset
|
||||
*
|
||||
* Change the value of serialized runtime state.
|
||||
*/
|
||||
@ -1875,7 +1925,7 @@ shell_global_get_runtime_state (ShellGlobal *global,
|
||||
* shell_global_set_persistent_state:
|
||||
* @global: a #ShellGlobal
|
||||
* @property_name: Name of the property
|
||||
* @variant: (allow-none): A #GVariant, or %NULL to unset
|
||||
* @variant: (nullable): A #GVariant, or %NULL to unset
|
||||
*
|
||||
* Change the value of serialized persistent state.
|
||||
*/
|
||||
|
@ -35,6 +35,7 @@ GdkScreen *shell_global_get_gdk_screen (ShellGlobal *global);
|
||||
MetaDisplay *shell_global_get_display (ShellGlobal *global);
|
||||
GList *shell_global_get_window_actors (ShellGlobal *global);
|
||||
GSettings *shell_global_get_settings (ShellGlobal *global);
|
||||
GSettings *shell_global_get_overrides_settings (ShellGlobal *global);
|
||||
guint32 shell_global_get_current_time (ShellGlobal *global);
|
||||
|
||||
|
||||
|
@ -516,7 +516,7 @@ shell_keyring_prompt_new (void)
|
||||
*
|
||||
* Get the prompt password text actor
|
||||
*
|
||||
* Returns: (transfer none) (allow-none): the password actor
|
||||
* Returns: (transfer none) (nullable): the password actor
|
||||
*/
|
||||
ClutterText *
|
||||
shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
|
||||
@ -531,7 +531,7 @@ shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
|
||||
*
|
||||
* Get the prompt password text actor
|
||||
*
|
||||
* Returns: (transfer none) (allow-none): the password actor
|
||||
* Returns: (transfer none) (nullable): the password actor
|
||||
*/
|
||||
ClutterText *
|
||||
shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self)
|
||||
@ -616,7 +616,7 @@ on_password_changed (ClutterText *text,
|
||||
/**
|
||||
* shell_keyring_prompt_set_password_actor:
|
||||
* @self: the internal prompt
|
||||
* @password_actor: (allow-none): the password actor
|
||||
* @password_actor: (nullable): the password actor
|
||||
*
|
||||
* Set the prompt password text actor
|
||||
*/
|
||||
@ -651,7 +651,7 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self,
|
||||
/**
|
||||
* shell_keyring_prompt_set_confirm_actor:
|
||||
* @self: the internal prompt
|
||||
* @confirm_actor: (allow-none): the confirm password actor
|
||||
* @confirm_actor: (nullable): the confirm password actor
|
||||
*
|
||||
* Set the prompt password confirmation text actor
|
||||
*/
|
||||
|
@ -64,7 +64,7 @@ shell_menu_tracker_remove_func (gint position,
|
||||
* shell_menu_tracker_new:
|
||||
* @observable:
|
||||
* @model:
|
||||
* @action_namespace: (allow-none):
|
||||
* @action_namespace: (nullable):
|
||||
* @insert_func:
|
||||
* @insert_user_data:
|
||||
* @insert_notify:
|
||||
|
@ -1629,7 +1629,7 @@ shell_recorder_set_draw_cursor (ShellRecorder *recorder,
|
||||
/**
|
||||
* shell_recorder_set_pipeline:
|
||||
* @recorder: the #ShellRecorder
|
||||
* @pipeline: (allow-none): the GStreamer pipeline used to encode recordings
|
||||
* @pipeline: (nullable): the GStreamer pipeline used to encode recordings
|
||||
* or %NULL for the default value.
|
||||
*
|
||||
* Sets the GStreamer pipeline used to encode recordings.
|
||||
@ -1681,7 +1681,7 @@ shell_recorder_set_area (ShellRecorder *recorder,
|
||||
/**
|
||||
* shell_recorder_record:
|
||||
* @recorder: the #ShellRecorder
|
||||
* @filename_used: (out) (allow-none): actual filename used for recording
|
||||
* @filename_used: (out) (optional): actual filename used for recording
|
||||
*
|
||||
* Starts recording, Starting the recording may fail if the output file
|
||||
* cannot be opened, or if the output stream cannot be created
|
||||
|
@ -21,10 +21,6 @@ struct _ShellTpClientPrivate
|
||||
ShellTpClientHandleChannelsImpl handle_channels_impl;
|
||||
gpointer user_data_handle_channels;
|
||||
GDestroyNotify destroy_handle_channels;
|
||||
|
||||
ShellTpClientContactListChangedImpl contact_list_changed_impl;
|
||||
gpointer user_data_contact_list_changed;
|
||||
GDestroyNotify destroy_contact_list_changed;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -35,7 +31,7 @@ struct _ShellTpClientPrivate
|
||||
* if possible
|
||||
* @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel,
|
||||
* all having %TP_CHANNEL_FEATURE_CORE prepared if possible
|
||||
* @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL;
|
||||
* @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL;
|
||||
* the dispatch_operation is not guaranteed to be prepared
|
||||
* @requests: (element-type TelepathyGLib.ChannelRequest): a #GList of
|
||||
* #TpChannelRequest, all having their object-path defined but are not
|
||||
@ -54,7 +50,7 @@ struct _ShellTpClientPrivate
|
||||
* if possible
|
||||
* @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel,
|
||||
* all having %TP_CHANNEL_FEATURE_CORE prepared if possible
|
||||
* @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL;
|
||||
* @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL;
|
||||
* the dispatch_operation is not guaranteed to be prepared
|
||||
* @context: a #TpAddDispatchOperationContext representing the context of this
|
||||
* D-Bus call
|
||||
@ -83,16 +79,6 @@ struct _ShellTpClientPrivate
|
||||
* Signature of the implementation of the HandleChannels method.
|
||||
*/
|
||||
|
||||
/**
|
||||
* ShellTpClientContactListChangedImpl:
|
||||
* @connection: a #TpConnection having %TP_CONNECTION_FEATURE_CORE prepared
|
||||
* if possible
|
||||
* @added: (element-type TelepathyGLib.Contact): a #GPtrArray of added #TpContact
|
||||
* @removed: (element-type TelepathyGLib.Contact): a #GPtrArray of removed #TpContact
|
||||
*
|
||||
* Signature of the implementation of the ContactListChanged method.
|
||||
*/
|
||||
|
||||
static void
|
||||
shell_tp_client_init (ShellTpClient *self)
|
||||
{
|
||||
@ -226,13 +212,6 @@ shell_tp_client_dispose (GObject *object)
|
||||
self->priv->user_data_handle_channels = NULL;
|
||||
}
|
||||
|
||||
if (self->priv->destroy_contact_list_changed != NULL)
|
||||
{
|
||||
self->priv->destroy_contact_list_changed (self->priv->user_data_contact_list_changed);
|
||||
self->priv->destroy_contact_list_changed = NULL;
|
||||
self->priv->user_data_contact_list_changed = NULL;
|
||||
}
|
||||
|
||||
if (dispose != NULL)
|
||||
dispose (object);
|
||||
}
|
||||
@ -290,40 +269,3 @@ shell_tp_client_set_handle_channels_func (ShellTpClient *self,
|
||||
self->priv->user_data_handle_channels = user_data;
|
||||
self->priv->destroy_handle_channels = destroy;
|
||||
}
|
||||
|
||||
void
|
||||
shell_tp_client_set_contact_list_changed_func (ShellTpClient *self,
|
||||
ShellTpClientContactListChangedImpl contact_list_changed_impl,
|
||||
gpointer user_data,
|
||||
GDestroyNotify destroy)
|
||||
{
|
||||
g_assert (self->priv->contact_list_changed_impl == NULL);
|
||||
|
||||
self->priv->contact_list_changed_impl = contact_list_changed_impl;
|
||||
self->priv->user_data_handle_channels = user_data;
|
||||
self->priv->destroy_handle_channels = destroy;
|
||||
}
|
||||
|
||||
static void
|
||||
on_contact_list_changed (TpConnection *conn,
|
||||
GPtrArray *added,
|
||||
GPtrArray *removed,
|
||||
gpointer user_data)
|
||||
{
|
||||
ShellTpClient *self = (ShellTpClient *) user_data;
|
||||
|
||||
g_assert (self->priv->contact_list_changed_impl != NULL);
|
||||
|
||||
self->priv->contact_list_changed_impl (conn,
|
||||
added, removed,
|
||||
self->priv->user_data_contact_list_changed);
|
||||
}
|
||||
|
||||
void
|
||||
shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
|
||||
TpConnection *conn)
|
||||
{
|
||||
g_signal_connect (conn, "contact-list-changed",
|
||||
G_CALLBACK (on_contact_list_changed),
|
||||
self);
|
||||
}
|
||||
|
@ -86,19 +86,5 @@ void shell_tp_client_set_handle_channels_func (ShellTpClient *self,
|
||||
gpointer user_data,
|
||||
GDestroyNotify destroy);
|
||||
|
||||
typedef void (*ShellTpClientContactListChangedImpl) (
|
||||
TpConnection *connection,
|
||||
GPtrArray *added,
|
||||
GPtrArray *removed,
|
||||
gpointer user_data);
|
||||
|
||||
void shell_tp_client_set_contact_list_changed_func (ShellTpClient *self,
|
||||
ShellTpClientContactListChangedImpl contact_list_changed_impl,
|
||||
gpointer user_data,
|
||||
GDestroyNotify destroy);
|
||||
|
||||
void shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
|
||||
TpConnection *conn);
|
||||
|
||||
G_END_DECLS
|
||||
#endif /* __SHELL_TP_CLIENT_H__ */
|
||||
|
@ -45,6 +45,10 @@ void _shell_wm_show_window_menu (ShellWM *wm,
|
||||
MetaWindowMenuType menu,
|
||||
int x,
|
||||
int y);
|
||||
void _shell_wm_show_window_menu_for_rect (ShellWM *wm,
|
||||
MetaWindow *window,
|
||||
MetaWindowMenuType menu,
|
||||
MetaRectangle *rect);
|
||||
|
||||
gboolean _shell_wm_filter_keybinding (ShellWM *wm,
|
||||
MetaKeyBinding *binding);
|
||||
|
@ -141,8 +141,8 @@ shell_wm_class_init (ShellWMClass *klass)
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 4,
|
||||
META_TYPE_WINDOW, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||
G_TYPE_NONE, 3,
|
||||
META_TYPE_WINDOW, G_TYPE_INT, META_TYPE_RECTANGLE);
|
||||
shell_wm_signals[FILTER_KEYBINDING] =
|
||||
g_signal_new ("filter-keybinding",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
@ -303,7 +303,22 @@ _shell_wm_show_window_menu (ShellWM *wm,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
g_signal_emit (wm, shell_wm_signals[SHOW_WINDOW_MENU], 0, window, menu, x, y);
|
||||
MetaRectangle rect;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = rect.height = 0;
|
||||
|
||||
_shell_wm_show_window_menu_for_rect (wm, window, menu, &rect);
|
||||
}
|
||||
|
||||
void
|
||||
_shell_wm_show_window_menu_for_rect (ShellWM *wm,
|
||||
MetaWindow *window,
|
||||
MetaWindowMenuType menu,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
g_signal_emit (wm, shell_wm_signals[SHOW_WINDOW_MENU], 0, window, menu, rect);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -414,7 +414,7 @@ st_bin_new (void)
|
||||
/**
|
||||
* st_bin_set_child:
|
||||
* @bin: a #StBin
|
||||
* @child: (allow-none): a #ClutterActor, or %NULL
|
||||
* @child: (nullable): a #ClutterActor, or %NULL
|
||||
*
|
||||
* Sets @child as the child of @bin.
|
||||
*
|
||||
|
@ -908,7 +908,7 @@ st_entry_get_text (StEntry *entry)
|
||||
/**
|
||||
* st_entry_set_text:
|
||||
* @entry: a #StEntry
|
||||
* @text: (allow-none): text to set the entry to
|
||||
* @text: (nullable): text to set the entry to
|
||||
*
|
||||
* Sets the text displayed on the entry
|
||||
*/
|
||||
@ -963,7 +963,7 @@ st_entry_get_clutter_text (StEntry *entry)
|
||||
/**
|
||||
* st_entry_set_hint_text:
|
||||
* @entry: a #StEntry
|
||||
* @text: (allow-none): text to set as the entry hint
|
||||
* @text: (nullable): text to set as the entry hint
|
||||
*
|
||||
* Sets the text to display when the entry is empty and unfocused. When the
|
||||
* entry is displaying the hint, it has a pseudo class of "indeterminate".
|
||||
@ -1136,7 +1136,7 @@ _st_entry_set_icon (StEntry *entry,
|
||||
/**
|
||||
* st_entry_set_primary_icon:
|
||||
* @entry: a #StEntry
|
||||
* @icon: (allow-none): a #ClutterActor
|
||||
* @icon: (nullable): a #ClutterActor
|
||||
*
|
||||
* Set the primary icon of the entry to @icon
|
||||
*/
|
||||
@ -1156,7 +1156,7 @@ st_entry_set_primary_icon (StEntry *entry,
|
||||
/**
|
||||
* st_entry_set_secondary_icon:
|
||||
* @entry: a #StEntry
|
||||
* @icon: (allow-none): an #ClutterActor
|
||||
* @icon: (nullable): an #ClutterActor
|
||||
*
|
||||
* Set the secondary icon of the entry to @icon
|
||||
*/
|
||||
|
@ -532,7 +532,7 @@ st_icon_get_gicon (StIcon *icon)
|
||||
/**
|
||||
* st_icon_set_gicon:
|
||||
* @icon: an icon
|
||||
* @gicon: (allow-none): a #GIcon to override :icon-name
|
||||
* @gicon: (nullable): a #GIcon to override :icon-name
|
||||
*/
|
||||
void
|
||||
st_icon_set_gicon (StIcon *icon, GIcon *gicon)
|
||||
|
@ -131,8 +131,8 @@ st_scrollable_set_adjustments (StScrollable *scrollable,
|
||||
|
||||
/**
|
||||
* st_scroll_bar_get_adjustments:
|
||||
* @hadjustment: (transfer none) (out) (allow-none): location to store the horizontal adjustment, or %NULL
|
||||
* @vadjustment: (transfer none) (out) (allow-none): location to store the vertical adjustment, or %NULL
|
||||
* @hadjustment: (transfer none) (out) (optional) (nullable): location to store the horizontal adjustment, or %NULL
|
||||
* @vadjustment: (transfer none) (out) (optional) (nullable): location to store the vertical adjustment, or %NULL
|
||||
*
|
||||
* Gets the adjustment objects that store the offsets of the scrollable widget
|
||||
* into its possible scrolling area.
|
||||
|
@ -1022,7 +1022,7 @@ load_gicon_with_colors (StTextureCache *cache,
|
||||
/**
|
||||
* st_texture_cache_load_gicon:
|
||||
* @cache: The texture cache instance
|
||||
* @theme_node: (allow-none): The #StThemeNode to use for colors, or NULL
|
||||
* @theme_node: (nullable): The #StThemeNode to use for colors, or NULL
|
||||
* if the icon must not be recolored
|
||||
* @icon: the #GIcon to load
|
||||
* @size: Size of themed
|
||||
@ -1235,7 +1235,7 @@ load_sliced_image (GSimpleAsyncResult *result,
|
||||
* @grid_width: Width in pixels
|
||||
* @grid_height: Height in pixels
|
||||
* @scale: Scale factor of the display
|
||||
* @load_callback: (scope async) (allow-none): Function called when the image is loaded, or %NULL
|
||||
* @load_callback: (scope async) (nullable): Function called when the image is loaded, or %NULL
|
||||
* @user_data: Data to pass to the load callback
|
||||
*
|
||||
* This function reads a single image file which contains multiple images internally.
|
||||
|
@ -204,17 +204,17 @@ split_on_whitespace (const gchar *s)
|
||||
/**
|
||||
* st_theme_node_new:
|
||||
* @context: the context representing global state for this themed tree
|
||||
* @parent_node: (allow-none): the parent node of this node
|
||||
* @theme: (allow-none): a theme (stylesheet set) that overrides the
|
||||
* @parent_node: (nullable): the parent node of this node
|
||||
* @theme: (nullable): a theme (stylesheet set) that overrides the
|
||||
* theme inherited from the parent node
|
||||
* @element_type: the type of the GObject represented by this node
|
||||
* in the tree (corresponding to an element if we were theming an XML
|
||||
* document. %G_TYPE_NONE means this style was created for the stage
|
||||
* actor and matches a selector element name of 'stage'.
|
||||
* @element_id: (allow-none): the ID to match CSS rules against
|
||||
* @element_class: (allow-none): a whitespace-separated list of classes
|
||||
* @element_id: (nullable): the ID to match CSS rules against
|
||||
* @element_class: (nullable): a whitespace-separated list of classes
|
||||
* to match CSS rules against
|
||||
* @pseudo_class: (allow-none): a whitespace-separated list of pseudo-classes
|
||||
* @pseudo_class: (nullable): a whitespace-separated list of pseudo-classes
|
||||
* (like 'hover' or 'visited') to match CSS rules against
|
||||
*
|
||||
* Creates a new #StThemeNode. Once created, a node is immutable. Of any
|
||||
@ -3536,7 +3536,7 @@ st_theme_node_adjust_for_height (StThemeNode *node,
|
||||
/**
|
||||
* st_theme_node_adjust_preferred_width:
|
||||
* @node: a #StThemeNode
|
||||
* @min_width_p: (inout) (allow-none): the minimum width to adjust
|
||||
* @min_width_p: (inout) (nullable): the minimum width to adjust
|
||||
* @natural_width_p: (inout): the natural width to adjust
|
||||
*
|
||||
* Adjusts the minimum and natural width computed for an actor by
|
||||
@ -3603,7 +3603,7 @@ st_theme_node_adjust_for_width (StThemeNode *node,
|
||||
/**
|
||||
* st_theme_node_adjust_preferred_height:
|
||||
* @node: a #StThemeNode
|
||||
* @min_height_p: (inout) (allow-none): the minimum height to adjust
|
||||
* @min_height_p: (inout) (nullable): the minimum height to adjust
|
||||
* @natural_height_p: (inout): the natural height to adjust
|
||||
*
|
||||
* Adjusts the minimum and natural height computed for an actor by
|
||||
@ -3815,8 +3815,8 @@ st_theme_node_geometry_equal (StThemeNode *node,
|
||||
|
||||
/**
|
||||
* st_theme_node_paint_equal:
|
||||
* @node: (allow-none): a #StThemeNode
|
||||
* @other: (allow-none): a different #StThemeNode
|
||||
* @node: (nullable): a #StThemeNode
|
||||
* @other: (nullable): a different #StThemeNode
|
||||
*
|
||||
* Check if st_theme_node_paint() will paint identically for @node as it does
|
||||
* for @other. Note that in some cases this function may return %TRUE even
|
||||
|
@ -1173,7 +1173,7 @@ remove_class_name (gchar **class_list,
|
||||
/**
|
||||
* st_widget_set_style_class_name:
|
||||
* @actor: a #StWidget
|
||||
* @style_class_list: (allow-none): a new style class list string
|
||||
* @style_class_list: (nullable): a new style class list string
|
||||
*
|
||||
* Set the style class name list. @style_class_list can either be
|
||||
* %NULL, for no classes, or a space-separated list of style class
|
||||
@ -1316,7 +1316,7 @@ st_widget_has_style_pseudo_class (StWidget *actor,
|
||||
/**
|
||||
* st_widget_set_style_pseudo_class:
|
||||
* @actor: a #StWidget
|
||||
* @pseudo_class_list: (allow-none): a new pseudo class list string
|
||||
* @pseudo_class_list: (nullable): a new pseudo class list string
|
||||
*
|
||||
* Set the style pseudo class list. @pseudo_class_list can either be
|
||||
* %NULL, for no classes, or a space-separated list of pseudo class
|
||||
@ -1382,7 +1382,7 @@ st_widget_remove_style_pseudo_class (StWidget *actor,
|
||||
/**
|
||||
* st_widget_set_style:
|
||||
* @actor: a #StWidget
|
||||
* @style: (allow-none): a inline style string, or %NULL
|
||||
* @style: (nullable): a inline style string, or %NULL
|
||||
*
|
||||
* Set the inline style string for this widget. The inline style string is an
|
||||
* optional ';'-separated list of CSS properties that override the style as
|
||||
@ -2051,7 +2051,7 @@ st_widget_real_navigate_focus (StWidget *widget,
|
||||
/**
|
||||
* st_widget_navigate_focus:
|
||||
* @widget: the "top level" container
|
||||
* @from: (allow-none): the actor that the focus is coming from
|
||||
* @from: (nullable): the actor that the focus is coming from
|
||||
* @direction: the direction focus is moving in
|
||||
* @wrap_around: whether focus should wrap around
|
||||
*
|
||||
@ -2270,7 +2270,7 @@ st_widget_set_label_actor (StWidget *widget,
|
||||
/**
|
||||
* st_widget_set_accessible_name:
|
||||
* @widget: widget to set the accessible name for
|
||||
* @name: (allow-none): a character string to be set as the accessible name
|
||||
* @name: (nullable): a character string to be set as the accessible name
|
||||
*
|
||||
* This method sets @name as the accessible name for @widget.
|
||||
*
|
||||
@ -2845,8 +2845,8 @@ st_widget_get_focus_chain (StWidget *widget)
|
||||
* st_get_align_factors:
|
||||
* @x_align: an #StAlign
|
||||
* @y_align: an #StAlign
|
||||
* @x_align_out: (out) (allow-none): @x_align as a #gdouble
|
||||
* @y_align_out: (out) (allow-none): @y_align as a #gdouble
|
||||
* @x_align_out: (out) (optional): @x_align as a #gdouble
|
||||
* @y_align_out: (out) (optional): @y_align as a #gdouble
|
||||
*
|
||||
* Converts @x_align and @y_align to #gdouble values.
|
||||
*/
|
||||
|
@ -80,7 +80,7 @@ struct _StWidgetClass
|
||||
/**
|
||||
* StWidgetClass::navigate_focus:
|
||||
* @self: the "top level" container
|
||||
* @from: (allow-none): the actor that the focus is coming from
|
||||
* @from: (nullable): the actor that the focus is coming from
|
||||
* @direction: the direction focus is moving in
|
||||
*/
|
||||
gboolean (* navigate_focus) (StWidget *self,
|
||||
|
Reference in New Issue
Block a user