Merge remote branch 'origin/master' into zeitgeist

This commit is contained in:
Federico Mena Quintero 2011-03-14 18:35:33 -04:00
commit 9551e1c2f5
57 changed files with 3742 additions and 1408 deletions

View File

@ -89,6 +89,8 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
GJS_VERSION=`$PKG_CONFIG --modversion gjs-internals-1.0`
AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're linking to])
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
@ -190,20 +192,6 @@ AC_ARG_ENABLE(jhbuild-wrapper-script,
AS_HELP_STRING([--jhbuild-wrapper-script=yes],[Make "gnome-shell" script work for jhbuild]),,enable_jhbuild_wrapper_script=no)
AM_CONDITIONAL(USE_JHBUILD_WRAPPER_SCRIPT, test "x$enable_jhbuild_wrapper_script" = xyes)
AC_MSG_CHECKING([for Ubuntu])
if test -f /etc/ubuntu_version; then
enable_dynamic_mozjs_hack_default=yes
AC_MSG_RESULT([yes])
else
enable_dynamic_mozjs_hack_default=no
AC_MSG_RESULT([no])
fi
AC_ARG_ENABLE(dynamic-mozjs-hack,
AS_HELP_STRING([--dynamic-mozjs-hack=no],[Look for libmozjs.so using pkg-config]),,enable_dynamic_mozjs_hack=$enable_dynamic_mozjs_hack_default)
ENABLE_DYNAMIC_MOZJS_HACK=$enable_dynamic_mozjs_hack
AC_SUBST(ENABLE_DYNAMIC_MOZJS_HACK)
AC_CONFIG_FILES([
Makefile
data/Makefile

View File

@ -150,6 +150,8 @@ StTooltip StLabel {
-slider-height: 0.3em;
-slider-background-color: #333333;
-slider-border-color: #5f5f5f;
-slider-active-background-color: #76b0ec;
-slider-active-border-color: #1f6dbc;
-slider-border-width: 1px;
-slider-handle-radius: 0.5em;
}
@ -464,15 +466,6 @@ StTooltip StLabel {
height: 24px;
}
.view-tab-boxpointer {
-arrow-border-radius: 9px;
-arrow-background-color: rgba(0,0,0,0.5);
-arrow-border-width: 2px;
-arrow-border-color: rgba(255,255,255,0.5);
-arrow-base: 30px;
-arrow-rise: 15px;
}
#searchResults {
padding: 20px 10px 10px 10px;
spacing: 18px;
@ -1484,12 +1477,12 @@ StTooltip StLabel {
}
.polkit-dialog-main-layout {
spacing: 10px;
spacing: 24px;
padding: 10px;
}
.polkit-dialog-message-layout {
spacing: 10px;
spacing: 16px;
}
.polkit-dialog-headline {
@ -1513,6 +1506,10 @@ StTooltip StLabel {
padding-right: 10px;
}
.polkit-dialog-user-root-label {
color: #ff0000;
}
.polkit-dialog-password-label:ltr {
padding-right: 0.5em;
}
@ -1528,33 +1525,21 @@ StTooltip StLabel {
}
.polkit-dialog-error-label {
font-size: 12px;
color: white;
}
.polkit-dialog-error-box {
padding-top: 15px;
spacing: 5px;
}
.polkit-dialog-checking-label {
font-size: 12px;
color: white;
}
.polkit-dialog-checking-box {
padding-top: 15px;
spacing: 5px;
font-size: 10pt;
color: #ffff00;
padding-bottom: 8px;
}
.polkit-dialog-info-label {
font-size: 12px;
color: white;
font-size: 10pt;
padding-bottom: 8px;
}
.polkit-dialog-info-box {
padding-top: 15px;
spacing: 5px;
/* intentionally left transparent to avoid dialog changing size */
.polkit-dialog-null-label {
font-size: 10pt;
color: rgba(0,0,0,0);
padding-bottom: 8px;
}

View File

@ -102,3 +102,24 @@ Inhibitor.prototype = {
};
DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface);
Signals.addSignalMethods(Inhibitor.prototype);
// Not the full interface, only the methods we use
const SessionManagerIface = {
name: 'org.gnome.SessionManager',
methods: [
{ name: 'Logout', inSignature: 'u', outSignature: '' },
{ name: 'Shutdown', inSignature: '', outSignature: '' }
]
};
function SessionManager() {
this._init();
}
SessionManager.prototype = {
_init: function() {
DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager');
}
};
DBus.proxifyPrototype(SessionManager.prototype, SessionManagerIface);

View File

@ -21,26 +21,77 @@ let METRICS = {
overviewFpsSubsequent:
{ description: "Frames rate when going to the overview, second time",
units: "frames / s" },
overviewFps5Windows:
{ description: "Frames rate when going to the overview, 5 windows open",
units: "frames / s" },
overviewFps10Windows:
{ description: "Frames rate when going to the overview, 10 windows open",
units: "frames / s" },
overviewFps5Maximized:
{ description: "Frames rate when going to the overview, 5 maximized windows open",
units: "frames / s" },
overviewFps10Maximized:
{ description: "Frames rate when going to the overview, 10 maximized windows open",
units: "frames / s" },
overviewFps5Alpha:
{ description: "Frames rate when going to the overview, 5 alpha-transparent windows open",
units: "frames / s" },
overviewFps10Alpha:
{ description: "Frames rate when going to the overview, 10 alpha-transparent windows open",
units: "frames / s" },
usedAfterOverview:
{ description: "Malloc'ed bytes after the overview is shown once",
units: "B" },
leakedAfterOverview:
{ description: "Additional malloc'ed bytes the second time the overview is shown",
units: "B" }
units: "B" },
applicationsShowTimeFirst:
{ description: "Time to switch to applications view, first time",
units: "us" },
applicationsShowTimeSubsequent:
{ description: "Time to switch to applications view, second time",
units: "us"}
};
let WINDOW_CONFIGS = [
{ width: 640, height: 480, alpha: false, maximized: false, count: 1, metric: 'overviewFpsSubsequent' },
{ width: 640, height: 480, alpha: false, maximized: false, count: 5, metric: 'overviewFps5Windows' },
{ width: 640, height: 480, alpha: false, maximized: false, count: 10, metric: 'overviewFps10Windows' },
{ width: 640, height: 480, alpha: false, maximized: true, count: 5, metric: 'overviewFps5Maximized' },
{ width: 640, height: 480, alpha: false, maximized: true, count: 10, metric: 'overviewFps10Maximized' },
{ width: 640, height: 480, alpha: true, maximized: false, count: 5, metric: 'overviewFps5Alpha' },
{ width: 640, height: 480, alpha: true, maximized: false, count: 10, metric: 'overviewFps10Alpha' }
];
function run() {
Scripting.defineScriptEvent("overviewShowStart", "Starting to show the overview");
Scripting.defineScriptEvent("overviewShowDone", "Overview finished showing");
Scripting.defineScriptEvent("afterShowHide", "After a show/hide cycle for the overview");
Scripting.defineScriptEvent("applicationsShowStart", "Starting to switch to applications view");
Scripting.defineScriptEvent("applicationsShowDone", "Done switching to applications view");
Main.overview.connect('shown', function() {
Scripting.scriptEvent('overviewShowDone');
});
yield Scripting.sleep(1000);
for (let i = 0; i < 2 * WINDOW_CONFIGS.length; i++) {
// We go to the overview twice for each configuration; the first time
// to calculate the mipmaps for the windows, the second time to get
// a clean set of numbers.
if ((i % 2) == 0) {
let config = WINDOW_CONFIGS[i / 2];
yield Scripting.destroyTestWindows();
for (let k = 0; k < config.count; k++)
yield Scripting.createTestWindow(config.width, config.height, config.alpha, config.maximized);
yield Scripting.waitTestWindows();
yield Scripting.sleep(1000);
yield Scripting.waitLeisure();
for (let i = 0; i < 2; i++) {
}
Scripting.scriptEvent('overviewShowStart');
Main.overview.show();
@ -53,6 +104,21 @@ function run() {
Scripting.collectStatistics();
Scripting.scriptEvent('afterShowHide');
}
yield Scripting.destroyTestWindows();
yield Scripting.sleep(1000);
Main.overview.show();
yield Scripting.waitLeisure();
for (let i = 0; i < 2; i++) {
Scripting.scriptEvent('applicationsShowStart');
Main.overview.viewSelector.switchTab('applications');
yield Scripting.waitLeisure();
Scripting.scriptEvent('applicationsShowDone');
Main.overview.viewSelector.switchTab('windows');
yield Scripting.waitLeisure();
}
}
let showingOverview = false;
@ -64,6 +130,8 @@ let mallocUsedSize = 0;
let overviewShowCount = 0;
let firstOverviewUsedSize;
let haveSwapComplete = false;
let applicationsShowStart;
let applicationsShowCount = 0;
function script_overviewShowStart(time) {
showingOverview = true;
@ -79,6 +147,18 @@ function script_overviewShowDone(time) {
finishedShowingOverview = true;
}
function script_applicationsShowStart(time) {
applicationsShowStart = time;
}
function script_applicationsShowDone(time) {
applicationsShowCount++;
if (applicationsShowCount == 1)
METRICS.applicationsShowTimeFirst.value = time - applicationsShowStart;
else
METRICS.applicationsShowTimeSubsequent.value = time - applicationsShowStart;
}
function script_afterShowHide(time) {
if (overviewShowCount == 1) {
METRICS.usedAfterOverview.value = mallocUsedSize;
@ -113,9 +193,15 @@ function _frameDone(time) {
if (overviewShowCount == 1) {
METRICS.overviewLatencyFirst.value = overviewLatency;
METRICS.overviewFpsFirst.value = fps;
} else {
} else if (overviewShowCount == 2) {
METRICS.overviewLatencySubsequent.value = overviewLatency;
METRICS.overviewFpsSubsequent.value = fps;
}
// Other than overviewFpsFirst, we collect FPS metrics the second
// we show each window configuration. overviewShowCount is 1,2,3...
if (overviewShowCount % 2 == 0) {
let config = WINDOW_CONFIGS[(overviewShowCount / 2) - 1];
METRICS[config.metric].value = fps;
}
}
}

View File

@ -185,21 +185,6 @@ DateMenuButton.prototype = {
}
let displayDate = new Date();
let msecRemaining;
if (showSeconds) {
msecRemaining = 1000 - displayDate.getMilliseconds();
if (msecRemaining < 50) {
displayDate.setSeconds(displayDate.getSeconds() + 1);
msecRemaining += 1000;
}
} else {
msecRemaining = 60000 - (1000 * displayDate.getSeconds() +
displayDate.getMilliseconds());
if (msecRemaining < 500) {
displayDate.setMinutes(displayDate.getMinutes() + 1);
msecRemaining += 60000;
}
}
this._clock.set_text(displayDate.toLocaleFormat(clockFormat));
@ -209,7 +194,7 @@ DateMenuButton.prototype = {
dateFormat = _("%A %B %e, %Y");
this._date.set_text(displayDate.toLocaleFormat(dateFormat));
Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClockAndDate));
Mainloop.timeout_add_seconds(1, Lang.bind(this, this._updateClockAndDate));
return false;
},

View File

@ -64,6 +64,11 @@ function init() {
Tweener.init();
String.prototype.format = Format.format;
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
Date.prototype.toLocaleFormat = function(format) {
return Shell.util_format_date(format, this.getTime());
};
// Set the default direction for St widgets (this needs to be done before any use of St)
if (Gettext_gtk30.gettext('default:LTR') == 'default:RTL') {
St.Widget.set_default_direction(St.TextDirection.RTL);

View File

@ -263,9 +263,13 @@ function _checkWorkspaces() {
}
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
let currentWorkspaceEmpty = emptyWorkspaces[activeWorkspaceIndex];
let removingCurrentWorkspace = (emptyWorkspaces[activeWorkspaceIndex] &&
activeWorkspaceIndex < emptyWorkspaces.length - 1);
// Don't enter the overview when removing multiple empty workspaces at startup
let showOverview = (removingCurrentWorkspace &&
!emptyWorkspaces.every(function(x) { return x; }));
if (currentWorkspaceEmpty) {
if (removingCurrentWorkspace) {
// "Merge" the empty workspace we are removing with the one at the end
wm.blockAnimations();
}
@ -276,11 +280,11 @@ function _checkWorkspaces() {
global.screen.remove_workspace(_workspaces[i], global.get_current_time());
}
if (currentWorkspaceEmpty) {
if (removingCurrentWorkspace) {
global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time());
wm.unblockAnimations();
if (!overview.visible)
if (!overview.visible && showOverview)
overview.show();
}

View File

@ -180,10 +180,10 @@ Overview.prototype = {
this._group.add_actor(this.viewSelector.actor);
this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay();
this.viewSelector.addViewTab(_("Windows"), this._workspacesDisplay.actor, 'text-x-generic');
this.viewSelector.addViewTab('windows', _("Windows"), this._workspacesDisplay.actor, 'text-x-generic');
let appView = new AppDisplay.AllAppDisplay();
this.viewSelector.addViewTab(_("Applications"), appView.actor, 'system-run');
this.viewSelector.addViewTab('applications', _("Applications"), appView.actor, 'system-run');
// Default search providers
this.viewSelector.addSearchProvider(new AppDisplay.AppSearchProvider());
@ -224,6 +224,7 @@ Overview.prototype = {
this._resetWindowSwitchTimeout();
this._lastHoveredWindow = null;
DND.removeMonitor(this._dragMonitor);
this.endItemDrag();
},
_resetWindowSwitchTimeout: function() {

View File

@ -176,37 +176,8 @@ PlacesManager.prototype = {
Util.spawn(['nautilus-connect-server']);
});
let networkApp = null;
try {
networkApp = Shell.AppSystem.get_default().load_from_desktop_file('gnome-network-scheme.desktop');
} catch(e) {
try {
networkApp = Shell.AppSystem.get_default().load_from_desktop_file('network-scheme.desktop');
} catch(e) {
log('Cannot create "Network" item, .desktop file not found or corrupt.');
}
}
if (networkApp != null) {
this._network = new PlaceInfo('special:network', networkApp.get_name(),
function(size) {
return networkApp.create_icon_texture(size);
},
function (params) {
params = Params.parse(params, { workspace: null,
timestamp: 0 });
networkApp.launch_full(params.timestamp, [],
params.workspace ? params.workspace.index() : -1);
});
}
this._defaultPlaces.push(this._home);
this._defaultPlaces.push(this._desktopMenu);
if (this._network)
this._defaultPlaces.push(this._network);
this._defaultPlaces.push(this._connect);
/*

View File

@ -49,6 +49,8 @@ AuthenticationDialog.prototype = {
this.actionId = actionId;
this.message = message;
this.userNames = userNames;
this._wasDismissed = false;
this._completed = false;
let mainContentBox = new St.BoxLayout({ style_class: 'polkit-dialog-main-layout',
vertical: false });
@ -100,17 +102,24 @@ AuthenticationDialog.prototype = {
Lang.bind(this, this._onUserChanged));
// Special case 'root'
if (userName == 'root')
let userIsRoot = false;
if (userName == 'root') {
userIsRoot = true;
userRealName = _('Administrator');
}
// Work around Gdm.UserManager returning an empty string for the real name
if (userRealName.length == 0)
userRealName = userName;
if (userIsRoot) {
let userLabel = new St.Label(({ style_class: 'polkit-dialog-user-root-label',
text: userRealName }));
messageBox.add(userLabel);
} else {
let userBox = new St.BoxLayout({ style_class: 'polkit-dialog-user-layout',
vertical: false });
messageBox.add(userBox);
this._userIcon = new St.Icon();
this._userIcon.hide();
userBox.add(this._userIcon,
@ -118,7 +127,6 @@ AuthenticationDialog.prototype = {
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.START });
let userLabel = new St.Label(({ style_class: 'polkit-dialog-user-label',
text: userRealName }));
userBox.add(userLabel,
@ -126,6 +134,7 @@ AuthenticationDialog.prototype = {
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.MIDDLE });
}
this._onUserChanged();
@ -141,32 +150,28 @@ AuthenticationDialog.prototype = {
{expand: true });
this._passwordBox.hide();
this._errorBox = new St.BoxLayout({ style_class: 'polkit-dialog-error-box' });
messageBox.add(this._errorBox);
let errorIcon = new St.Icon({ icon_name: 'dialog-error',
icon_size: 24,
style_class: 'polkit-dialog-error-icon' });
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
this._errorMessage = new St.Label({ style_class: 'polkit-dialog-error-label' });
this._errorMessage.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._errorMessage.clutter_text.line_wrap = true;
this._errorBox.add(this._errorMessage, { expand: true,
y_align: St.Align.MIDDLE,
y_fill: true });
this._errorBox.hide();
this._errorMessageLabel = new St.Label({ style_class: 'polkit-dialog-error-label' });
this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._errorMessageLabel.clutter_text.line_wrap = true;
messageBox.add(this._errorMessageLabel);
this._errorMessageLabel.hide();
this._infoBox = new St.BoxLayout({ style_class: 'polkit-dialog-info-box' });
messageBox.add(this._infoBox);
let infoIcon = new St.Icon({ icon_name: 'dialog-information',
icon_size: 24,
style_class: 'polkit-dialog-info-icon' });
this._infoBox.add(infoIcon, { y_align: St.Align.MIDDLE });
this._infoMessage = new St.Label({ style_class: 'polkit-dialog-info-label'});
this._infoMessage.clutter_text.line_wrap = true;
this._infoBox.add(this._infoMessage, { expand: true,
y_align: St.Align.MIDDLE,
y_fill: true });
this._infoBox.hide();
this._infoMessageLabel = new St.Label({ style_class: 'polkit-dialog-info-label' });
this._infoMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._infoMessageLabel.clutter_text.line_wrap = true;
messageBox.add(this._infoMessageLabel);
this._infoMessageLabel.hide();
/* text is intentionally non-blank otherwise the height is not the same as for
* infoMessage and errorMessageLabel - but it is still invisible because
* gnome-shell.css sets the color to be transparent
*/
this._nullMessageLabel = new St.Label({ style_class: 'polkit-dialog-null-label',
text: 'abc'});
this._nullMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._nullMessageLabel.clutter_text.line_wrap = true;
messageBox.add(this._nullMessageLabel);
this._nullMessageLabel.show();
this.setButtons([{ label: _('Cancel'),
action: Lang.bind(this, this.cancel),
@ -234,8 +239,9 @@ AuthenticationDialog.prototype = {
this._session.response(response);
// When the user responds, dismiss already shown info and
// error texts (if any)
this._errorBox.hide();
this._infoBox.hide();
this._errorMessageLabel.hide();
this._infoMessageLabel.hide();
this._nullMessageLabel.show();
},
_onAuthenticateButtonPressed: function() {
@ -243,7 +249,24 @@ AuthenticationDialog.prototype = {
},
_onSessionCompleted: function(session, gainedAuthorization) {
this._passwordBox.hide();
if (this._completed)
return;
this._completed = true;
if (!gainedAuthorization) {
/* Unless we are showing an existing error message from the PAM
* module (the PAM module could be reporting the authentication
* error providing authentication-method specific information),
* show "Sorry, that didn't work. Please try again."
*/
if (!this._errorMessageLabel.visible && !this._wasDismissed) {
this._errorMessageLabel.set_text(_('Sorry, that didn\'t work. Please try again.'));
this._errorMessageLabel.show();
this._infoMessageLabel.hide();
this._nullMessageLabel.hide();
}
}
this._emitDone(!gainedAuthorization, false);
},
@ -267,20 +290,25 @@ AuthenticationDialog.prototype = {
_onSessionShowError: function(session, text) {
this._passwordEntry.set_text('');
this._errorMessage.set_text(text);
this._errorBox.show();
this._errorMessageLabel.set_text(text);
this._errorMessageLabel.show();
this._infoMessageLabel.hide();
this._nullMessageLabel.hide();
this._ensureOpen();
},
_onSessionShowInfo: function(session, text) {
this._passwordEntry.set_text('');
this._infoMessage.set_text(text);
this._infoBox.show();
this._infoMessageLabel.set_text(text);
this._infoMessageLabel.show();
this._errorMessageLabel.hide();
this._nullMessageLabel.hide();
this._ensureOpen();
},
destroySession: function() {
if (this._session) {
if (!this._completed)
this._session.cancel();
this._session = null;
}
@ -288,6 +316,7 @@ AuthenticationDialog.prototype = {
_onUserChanged: function() {
if (this._user.is_loaded) {
if (this._userIcon) {
let iconFileName = this._user.get_icon_file();
let iconFile = Gio.file_new_for_path(iconFileName);
let icon;
@ -299,9 +328,11 @@ AuthenticationDialog.prototype = {
this._userIcon.set_gicon (icon);
this._userIcon.show();
}
}
},
cancel: function() {
this._wasDismissed = true;
this.close(global.get_current_time());
this._emitDone(false, true);
},

View File

@ -485,12 +485,30 @@ PopupSliderMenuItem.prototype = {
let sliderBorderColor = themeNode.get_color('-slider-border-color');
let sliderColor = themeNode.get_color('-slider-background-color');
let sliderActiveBorderColor = themeNode.get_color('-slider-active-border-color');
let sliderActiveColor = themeNode.get_color('-slider-active-background-color');
cr.setSourceRGBA (
sliderActiveColor.red / 255,
sliderActiveColor.green / 255,
sliderActiveColor.blue / 255,
sliderActiveColor.alpha / 255);
cr.rectangle(handleRadius, (height - sliderHeight) / 2, sliderWidth * this._value, sliderHeight);
cr.fillPreserve();
cr.setSourceRGBA (
sliderActiveBorderColor.red / 255,
sliderActiveBorderColor.green / 255,
sliderActiveBorderColor.blue / 255,
sliderActiveBorderColor.alpha / 255);
cr.setLineWidth(sliderBorderWidth);
cr.stroke();
cr.setSourceRGBA (
sliderColor.red / 255,
sliderColor.green / 255,
sliderColor.blue / 255,
sliderColor.alpha / 255);
cr.rectangle(handleRadius, (height - sliderHeight) / 2, sliderWidth, sliderHeight);
cr.rectangle(handleRadius + sliderWidth * this._value, (height - sliderHeight) / 2, sliderWidth * (1 - this._value), sliderHeight);
cr.fillPreserve();
cr.setSourceRGBA (
sliderBorderColor.red / 255,
@ -806,6 +824,8 @@ PopupMenuBase.prototype = {
let columnWidths = [];
let items = this.box.get_children();
for (let i = 0; i < items.length; i++) {
if (!items[i].visible)
continue;
if (items[i]._delegate instanceof PopupBaseMenuItem || items[i]._delegate instanceof PopupMenuBase) {
let itemColumnWidths = items[i]._delegate.getColumnWidths();
for (let j = 0; j < itemColumnWidths.length; j++) {

View File

@ -1,5 +1,6 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const DBus = imports.dbus;
const Gio = imports.gi.Gio;
const Mainloop = imports.mainloop;
@ -68,6 +69,104 @@ function waitLeisure() {
};
}
const PerfHelperIface = {
name: 'org.gnome.Shell.PerfHelper',
methods: [{ name: 'CreateWindow', inSignature: 'iibb', outSignature: '' },
{ name: 'WaitWindows', inSignature: '', outSignature: '' },
{ name: 'DestroyWindows', inSignature: '', outSignature: ''}]
};
const PerfHelper = function () {
this._init();
};
PerfHelper.prototype = {
_init: function() {
DBus.session.proxifyObject(this, 'org.gnome.Shell.PerfHelper', '/org/gnome/Shell/PerfHelper');
}
};
DBus.proxifyPrototype(PerfHelper.prototype, PerfHelperIface);
let _perfHelper = null;
function _getPerfHelper() {
if (_perfHelper == null)
_perfHelper = new PerfHelper();
return _perfHelper;
}
/**
* createTestWindow:
* @width: width of window, in pixels
* @height: height of window, in pixels
* @alpha: whether the window should be alpha transparent
* @maximized: whethe the window should be created maximized
*
* Creates a window using gnome-shell-perf-helper for testing purposes.
* While this function can be used with yield in an automation
* script to pause until the D-Bus call to the helper process returns,
* because of the normal X asynchronous mapping process, to actually wait
* until the window has been mapped and exposed, use waitTestWindows().
*/
function createTestWindow(width, height, alpha, maximized) {
let cb;
let perfHelper = _getPerfHelper();
perfHelper.CreateWindowRemote(width, height, alpha, maximized,
function(result, excp) {
if (cb)
cb();
});
return function(callback) {
cb = callback;
};
}
/**
* waitTestWindows:
*
* Used within an automation script to pause until all windows previously
* created with createTestWindow have been mapped and exposed.
*/
function waitTestWindows() {
let cb;
let perfHelper = _getPerfHelper();
perfHelper.WaitWindowsRemote(function(result, excp) {
if (cb)
cb();
});
return function(callback) {
cb = callback;
};
}
/**
* destroyTestWindows:
*
* Destroys all windows previously created with createTestWindow().
* While this function can be used with yield in an automation
* script to pause until the D-Bus call to the helper process returns,
* this doesn't guarantee that Mutter has actually finished the destroy
* process because of normal X asynchronicity.
*/
function destroyTestWindows() {
let cb;
let perfHelper = _getPerfHelper();
perfHelper.DestroyWindowsRemote(function(result, excp) {
if (cb)
cb();
});
return function(callback) {
cb = callback;
};
}
/**
* defineScriptEvent
* @name: The event will be called script.<name>
@ -147,8 +246,8 @@ function _collect(scriptModule, outputFile) {
Shell.write_string_to_stream(out, '"events":\n');
Shell.PerfLog.get_default().dump_events(out);
let monitors = global.get_monitors()
let primary = global.get_primary_monitor()
let monitors = global.get_monitors();
let primary = global.get_primary_monitor();
Shell.write_string_to_stream(out, ',\n"monitors":\n[');
for (let i = 0; i < monitors.length; i++) {
let monitor = monitors[i];
@ -168,6 +267,20 @@ function _collect(scriptModule, outputFile) {
let first = true;
for (let name in scriptModule.METRICS) {
let metric = scriptModule.METRICS[name];
// Extra checks here because JSON.stringify generates
// invalid JSON for undefined values
if (metric.description == null) {
log("Error: No description found for metric " + name);
continue;
}
if (metric.units == null) {
log("Error: No units found for metric " + name);
continue;
}
if (metric.value == null) {
log("Error: No value found for metric " + name);
continue;
}
if (!first)
Shell.write_string_to_stream(out, ',\n ');

View File

@ -471,9 +471,15 @@ PinNotification.prototype = {
this.connect('action-invoked', Lang.bind(this, function(self, action) {
if (action == 'ok') {
if (this._numeric)
this._applet.agent_reply_passkey(this._devicePath, parseInt(this._entry.text));
else
if (this._numeric) {
let num = parseInt(this._entry.text);
if (isNaN(num)) {
// user reply was empty, or was invalid
// cancel the operation
num = -1;
}
this._applet.agent_reply_passkey(this._devicePath, num);
} else
this._applet.agent_reply_pincode(this._devicePath, this._entry.text);
} else {
if (this._numeric)

View File

@ -16,7 +16,6 @@ const Util = imports.misc.util;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const VOLUME_MAX = 65536.0; /* PA_VOLUME_NORM */
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
const VOLUME_NOTIFY_ID = 1;
@ -37,6 +36,8 @@ Indicator.prototype = {
this._control.connect('default-source-changed', Lang.bind(this, this._readInput));
this._control.connect('stream-added', Lang.bind(this, this._maybeShowInput));
this._control.connect('stream-removed', Lang.bind(this, this._maybeShowInput));
this._volumeMax = this._control.get_vol_max_norm();
this._volumeMaxAmplified = this._control.get_vol_max_amplified();
this._output = null;
this._outputVolumeId = 0;
@ -72,9 +73,9 @@ Indicator.prototype = {
_getMaxVolume: function(property) {
if (this[property].get_can_decibel())
return (VOLUME_MAX * 1.5);
return this._volumeMaxAmplified;
else
return VOLUME_MAX;
return this._volumeMax;
},
_onScrollEvent: function(actor, event) {

View File

@ -50,6 +50,7 @@ StatusMenuButton.prototype = {
this._user = this._gdm.get_user(GLib.get_user_name());
this._presence = new GnomeSession.Presence();
this._presenceItems = {};
this._session = new GnomeSession.SessionManager();
this._account_mgr = Tp.AccountManager.dup()
@ -210,7 +211,7 @@ StatusMenuButton.prototype = {
_onQuitSessionActivate: function() {
Main.overview.hide();
Util.spawn(['gnome-session-quit', '--logout']);
this._session.LogoutRemote(0);
},
_onSuspendOrPowerOffActivate: function() {
@ -222,7 +223,7 @@ StatusMenuButton.prototype = {
this._upClient.suspend_sync(null);
}));
} else {
Util.spawn(['gnome-session-quit', '--power-off']);
this._session.ShutdownRemote();
}
},

View File

@ -77,14 +77,16 @@ BaseTab.prototype = {
Signals.addSignalMethods(BaseTab.prototype);
function ViewTab(label, pageActor, a11yIcon) {
this._init(label, pageActor, a11yIcon);
function ViewTab(id, label, pageActor, a11yIcon) {
this._init(id, label, pageActor, a11yIcon);
}
ViewTab.prototype = {
__proto__: BaseTab.prototype,
_init: function(label, pageActor, a11yIcon) {
_init: function(id, label, pageActor, a11yIcon) {
this.id = id;
let titleActor = new St.Button({ label: label,
style_class: 'view-tab-title' });
titleActor.connect('clicked', Lang.bind(this, this._activate));
@ -383,8 +385,8 @@ ViewSelector.prototype = {
}));
},
addViewTab: function(title, pageActor, a11yIcon) {
let viewTab = new ViewTab(title, pageActor, a11yIcon);
addViewTab: function(id, title, pageActor, a11yIcon) {
let viewTab = new ViewTab(id, title, pageActor, a11yIcon);
this._tabs.push(viewTab);
this._tabBox.add(viewTab.title);
this._addTab(viewTab);
@ -433,6 +435,14 @@ ViewSelector.prototype = {
}
},
switchTab: function(id) {
for (let i = 0; i < this._tabs.length; i++)
if (this._tabs[i].id == id) {
this._switchTab(this._tabs[i]);
break;
}
},
_switchDefaultTab: function() {
if (this._tabs.length > 0)
this._switchTab(this._tabs[0]);

View File

@ -320,6 +320,9 @@ WorkspacesView.prototype = {
Main.overview.disconnect(this._overviewShownId);
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
if (this._inDrag)
this._dragEnd();
if (this._timeoutId) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;

View File

@ -1,3 +1,4 @@
af
ar
bg
ca

1004
po/af.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell.po.master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-08 14:59+0200\n"
"POT-Creation-Date: 2011-03-13 19:13+0200\n"
"PO-Revision-Date: 2011-01-23 00:04+0200\n"
"Last-Translator: Kostas Papadimas <pkst@gnome.org>\n"
"Language-Team: Greek <team@gnome.gr>\n"
@ -622,7 +622,7 @@ msgstr "ΤΟΠΟΘΕΣΙΕΣ $ ΣΥΣΚΕΥΕΣ"
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"

View File

@ -2,6 +2,7 @@
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011.
#
msgid ""
@ -9,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&component=general\n"
"POT-Creation-Date: 2011-03-09 18:36+0000\n"
"PO-Revision-Date: 2011-03-09 19:37+0100\n"
"POT-Creation-Date: 2011-03-09 21:00+0000\n"
"PO-Revision-Date: 2011-03-10 10:59+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n"
@ -95,16 +96,16 @@ msgid ""
"at the optimal thread count on the system."
msgstr ""
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se "
"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida "
"de ese punto se escibirá en el archivo de salida. No obstante la tubería "
"también puede tomar parte en su propia salida; esto se puede usar para "
"enviar la salida a un servidor «icecast» a través de shout2send o similar. "
"Cuando no está establecido o lo está a un valor vacío, se usará la tubería "
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 "
"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T "
"como suposición para el número de hilos óptimos en el sistema."
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. "
"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese "
"punto se escibirá en el archivo de salida. No obstante la tubería también "
"puede tomar parte en su propia salida; esto se puede usar para enviar la "
"salida a un servidor «icecast» a través de shout2send o similar. Cuando no "
"está establecido o lo está a un valor vacío, se usará la tubería "
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads="
"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como "
"suposición para el número de hilos óptimos en el sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
@ -373,7 +374,7 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "La semana que viene"
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
msgid "Remove"
msgstr "Quitar"
@ -476,7 +477,7 @@ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
#: ../js/ui/endSessionDialog.js:76
#, c-format
msgid "The system will shut down automatically in %d seconds."
msgstr "El sistema se apagará automáticamente en %d segundo."
msgstr "El sistema se apagará automáticamente en %d segundos."
#: ../js/ui/endSessionDialog.js:77
msgid "Shutting down the system."
@ -538,11 +539,11 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: ../js/ui/messageTray.js:926
#: ../js/ui/messageTray.js:924
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1961
msgid "System Information"
msgstr "Información del sistema"
@ -618,39 +619,39 @@ msgstr "Buscando…"
msgid "No matching results."
msgstr "No se encontró ningún resultado coincidente."
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
msgid "Power Off..."
msgstr "Apagar…"
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
msgid "Suspend"
msgstr "Suspender"
#: ../js/ui/statusMenu.js:125
#: ../js/ui/statusMenu.js:136
msgid "Available"
msgstr "Disponible"
#: ../js/ui/statusMenu.js:130
#: ../js/ui/statusMenu.js:141
msgid "Busy"
msgstr "Ocupado"
#: ../js/ui/statusMenu.js:138
#: ../js/ui/statusMenu.js:149
msgid "My Account"
msgstr "Mi cuenta"
#: ../js/ui/statusMenu.js:142
#: ../js/ui/statusMenu.js:153
msgid "System Settings"
msgstr "Configuración del sistema"
#: ../js/ui/statusMenu.js:149
#: ../js/ui/statusMenu.js:160
msgid "Lock Screen"
msgstr "Bloquear la pantalla"
#: ../js/ui/statusMenu.js:153
#: ../js/ui/statusMenu.js:164
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/statusMenu.js:158
#: ../js/ui/statusMenu.js:169
msgid "Log Out..."
msgstr "Cerrar la sesión…"
@ -696,7 +697,7 @@ msgstr "Contraste alto"
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "<b>Texto:</b>"
msgstr "Texto grande"
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
@ -851,7 +852,7 @@ msgstr[1] "horas"
#: ../js/ui/status/power.js:122
msgid "minute"
msgid_plural "minutes"
msgstr[0] "miuto"
msgstr[0] "minuto"
msgstr[1] "minutos"
#: ../js/ui/status/power.js:125
@ -940,7 +941,7 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:348
#: ../js/ui/telepathyClient.js:357
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Enviado a las %X el %A"
@ -1223,8 +1224,8 @@ msgstr "%1$s: %2$s"
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
#~ "in time."
#~ msgstr ""
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
#~ "segundos en la hora."
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
#~ "en la hora."
#~ msgid ""
#~ "This key specifies the format used by the panel clock when the format key "
@ -1241,19 +1242,18 @@ msgstr "%1$s: %2$s"
#~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
#~ "to the format specified in the custom_format key. Note that if set to "
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
#~ "ignored."
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
#~ "01-01. If set to \"custom\", the clock will display time according to the "
#~ "format specified in the custom_format key. Note that if set to either "
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
#~ msgstr ""
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
#~ "especificado en la clave «custom_format». Note que si se establece a "
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
#~ "ignoran las claves «show_date» y «show_seconds»."
#~ msgid "Clock Format"
#~ msgstr "Formato del reloj"

177
po/he.po
View File

@ -8,14 +8,17 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-02 19:57+0200\n"
"PO-Revision-Date: 2011-03-02 19:58+0200\n"
"POT-Creation-Date: 2011-03-10 18:43+0200\n"
"PO-Revision-Date: 2011-03-10 18:45+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <he@li.org>\n"
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 :2;\n"
"X-Poedit-Language: Hebrew\n"
"X-Poedit-Country: ISRAEL\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -188,27 +191,27 @@ msgid "Execution of '%s' failed:"
msgstr "ההרצה של '%s' נכשלה:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:195
#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "הכול"
#: ../js/ui/appDisplay.js:282
#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "יישומים"
#: ../js/ui/appDisplay.js:312
#: ../js/ui/appDisplay.js:350
msgid "SETTINGS"
msgstr "הגדרות"
#: ../js/ui/appDisplay.js:572
#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "חלון חדש"
#: ../js/ui/appDisplay.js:575
#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "הסרה מהמועדפים"
#: ../js/ui/appDisplay.js:576
#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "הוספה למועדפים"
@ -368,7 +371,7 @@ msgstr "השבוע"
msgid "Next week"
msgstr "בשבוע הבא"
#: ../js/ui/dash.js:174
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
msgid "Remove"
msgstr "הסרה"
@ -376,54 +379,54 @@ msgstr "הסרה"
msgid "Date and Time Settings"
msgstr "הגדרות תאריך ושעה"
#: ../js/ui/dateMenu.js:110
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "פתיחת היומן"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:162
#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
#: ../js/ui/dateMenu.js:163
#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:167
#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:168
#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:176
#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:180
#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:207
#: ../js/ui/dateMenu.js:209
msgid "%A %B %e, %Y"
msgstr "%A ה־%e ב%B, %Y"
@ -500,37 +503,41 @@ msgstr "אישור"
msgid "Cancel"
msgstr "ביטול"
#: ../js/ui/lookingGlass.js:587
#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "לא מותקנות הרחבות"
#: ../js/ui/lookingGlass.js:624
#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "פעיל"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
msgid "Disabled"
msgstr "מנוטרל"
#: ../js/ui/lookingGlass.js:628
#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "שגיאה"
#: ../js/ui/lookingGlass.js:630
#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "לא בתוקף"
#: ../js/ui/lookingGlass.js:655
#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "צפייה במקור"
#: ../js/ui/lookingGlass.js:661
#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "דף אינטרנט"
#: ../js/ui/messageTray.js:1902
#: ../js/ui/messageTray.js:924
msgid "Open"
msgstr "פתיחה"
#: ../js/ui/messageTray.js:1961
msgid "System Information"
msgstr "פרטי המערכת"
@ -546,18 +553,28 @@ msgstr "חלונות"
msgid "Applications"
msgstr "יישומים"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
msgstr "חלונית"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:529
#: ../js/ui/panel.js:560
#, c-format
msgid "Quit %s"
msgstr "יציאה מ־%s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:897
#: ../js/ui/panel.js:919
msgid "Activities"
msgstr "פעילויות"
#: ../js/ui/panel.js:1020
msgid "Panel"
msgstr "לוח"
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@ -580,7 +597,7 @@ msgstr "מקומות והתקנים"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:612
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -588,91 +605,91 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "נא להזין פקודה:"
#: ../js/ui/searchDisplay.js:295
#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "בחיפוש..."
#: ../js/ui/searchDisplay.js:309
#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "אין תוצאות תואמות."
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
msgid "Power Off..."
msgstr "כיבוי..."
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
msgid "Suspend"
msgstr "השהיה"
#: ../js/ui/statusMenu.js:125
#: ../js/ui/statusMenu.js:136
msgid "Available"
msgstr "זמין"
#: ../js/ui/statusMenu.js:130
#: ../js/ui/statusMenu.js:141
msgid "Busy"
msgstr "עסוק"
#: ../js/ui/statusMenu.js:138
#: ../js/ui/statusMenu.js:149
msgid "My Account"
msgstr "החשבון שלי"
#: ../js/ui/statusMenu.js:142
#: ../js/ui/statusMenu.js:153
msgid "System Settings"
msgstr "הגדרות המערכת"
#: ../js/ui/statusMenu.js:149
#: ../js/ui/statusMenu.js:160
msgid "Lock Screen"
msgstr "נעילת המסך"
#: ../js/ui/statusMenu.js:153
#: ../js/ui/statusMenu.js:164
msgid "Switch User"
msgstr "החלפת משתמש"
#: ../js/ui/statusMenu.js:158
#: ../js/ui/statusMenu.js:169
msgid "Log Out..."
msgstr "ניתוק..."
#: ../js/ui/status/accessibility.js:81
#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "תקריב"
#: ../js/ui/status/accessibility.js:88
#: ../js/ui/status/accessibility.js:69
msgid "Screen Reader"
msgstr "מקריא מסך"
#: ../js/ui/status/accessibility.js:92
#: ../js/ui/status/accessibility.js:73
msgid "Screen Keyboard"
msgstr "מקלדת מסך"
#: ../js/ui/status/accessibility.js:96
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "התראות חזותיות"
#: ../js/ui/status/accessibility.js:99
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "מקשים דביקים"
#: ../js/ui/status/accessibility.js:102
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "מקשים אטיים"
#: ../js/ui/status/accessibility.js:105
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "מקשים קופצים"
#: ../js/ui/status/accessibility.js:108
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "מקשי עכבר"
#: ../js/ui/status/accessibility.js:112
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "הגדרות גישה אוניברסלית"
#: ../js/ui/status/accessibility.js:164
#: ../js/ui/status/accessibility.js:145
msgid "High Contrast"
msgstr "ניגודיות גבוהה"
#: ../js/ui/status/accessibility.js:209
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "טקסט גדול"
@ -843,51 +860,51 @@ msgstr[0] "דקה אחת נותרה"
msgstr[1] "%d דקות נותרו"
msgstr[2] "שתי דקות נותרו"
#: ../js/ui/status/power.js:241
#: ../js/ui/status/power.js:227
msgid "AC adapter"
msgstr "מתאם חשמל"
#: ../js/ui/status/power.js:243
#: ../js/ui/status/power.js:229
msgid "Laptop battery"
msgstr "סוללת נייד"
#: ../js/ui/status/power.js:245
#: ../js/ui/status/power.js:231
msgid "UPS"
msgstr "אל־פסק"
#: ../js/ui/status/power.js:247
#: ../js/ui/status/power.js:233
msgid "Monitor"
msgstr "צג"
#: ../js/ui/status/power.js:249
#: ../js/ui/status/power.js:235
msgid "Mouse"
msgstr "עכבר"
#: ../js/ui/status/power.js:251
#: ../js/ui/status/power.js:237
msgid "Keyboard"
msgstr "מקלדת"
#: ../js/ui/status/power.js:253
#: ../js/ui/status/power.js:239
msgid "PDA"
msgstr "מחשב כף יד"
#: ../js/ui/status/power.js:255
#: ../js/ui/status/power.js:241
msgid "Cell phone"
msgstr "טלפון סלולרי"
#: ../js/ui/status/power.js:257
#: ../js/ui/status/power.js:243
msgid "Media player"
msgstr "נגן מדיה"
#: ../js/ui/status/power.js:259
#: ../js/ui/status/power.js:245
msgid "Tablet"
msgstr "טבלת שליטה"
#: ../js/ui/status/power.js:261
#: ../js/ui/status/power.js:247
msgid "Computer"
msgstr "מחשב"
#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
msgid "Unknown"
msgstr "לא ידוע"
@ -922,7 +939,7 @@ msgstr "%s עסוק/ה."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:348
#: ../js/ui/telepathyClient.js:357
#, no-c-format
msgid "Sent at %X on %A"
msgstr "נשלח ב־%X בשעה %A"
@ -931,16 +948,20 @@ msgstr "נשלח ב־%X בשעה %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/viewSelector.js:103
#: ../js/ui/viewSelector.js:117
msgid "Type to search..."
msgstr "יש להקליד כדי לחפש..."
#: ../js/ui/windowAttentionHandler.js:43
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
msgid "Search"
msgstr "חיפוש"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s סיים את תהליך ההתחלה"
#: ../js/ui/windowAttentionHandler.js:45
#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "'%s' מוכן"
@ -969,11 +990,15 @@ msgstr[2] "2 קלטים"
msgid "System Sounds"
msgstr "צלילי מערכת"
#: ../src/shell-global.c:1298
#: ../src/main.c:395
msgid "Print version"
msgstr "Print version"
#: ../src/shell-global.c:1308
msgid "Less than a minute ago"
msgstr "לפני פחות מדקה"
#: ../src/shell-global.c:1302
#: ../src/shell-global.c:1312
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -981,7 +1006,7 @@ msgstr[0] "לפני דקה"
msgstr[1] "לפני %d דקות"
msgstr[2] "לפני 2 דקות"
#: ../src/shell-global.c:1307
#: ../src/shell-global.c:1317
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -989,7 +1014,7 @@ msgstr[0] "לפני שעה"
msgstr[1] "לפני %d שעות"
msgstr[2] "לפני שעתיים"
#: ../src/shell-global.c:1312
#: ../src/shell-global.c:1322
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -997,7 +1022,7 @@ msgstr[0] "לפני יום"
msgstr[1] "לפני %d ימים"
msgstr[2] "לפני יומיים"
#: ../src/shell-global.c:1317
#: ../src/shell-global.c:1327
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -1019,10 +1044,6 @@ msgstr "תיקיית הבית"
msgid "File System"
msgstr "מערכת הקבצים"
#: ../src/shell-util.c:250
msgid "Search"
msgstr "חיפוש"
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the

173
po/it.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-02 13:37+0100\n"
"PO-Revision-Date: 2011-03-02 13:37+0100\n"
"POT-Creation-Date: 2011-03-11 01:54+0100\n"
"PO-Revision-Date: 2011-03-11 01:56+0100\n"
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
@ -194,27 +194,27 @@ msgid "Execution of '%s' failed:"
msgstr "Esecuzione di «%s» non riuscita:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:195
#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "Tutte"
#: ../js/ui/appDisplay.js:282
#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "APPLICAZIONI"
#: ../js/ui/appDisplay.js:312
#: ../js/ui/appDisplay.js:350
msgid "SETTINGS"
msgstr "IMPOSTAZIONI"
#: ../js/ui/appDisplay.js:572
#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "Nuova finestra"
#: ../js/ui/appDisplay.js:575
#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti"
#: ../js/ui/appDisplay.js:576
#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti"
@ -376,7 +376,7 @@ msgstr "Questa settimana"
msgid "Next week"
msgstr "Prossima settimana"
#: ../js/ui/dash.js:174
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
msgid "Remove"
msgstr "Rimuovi"
@ -384,54 +384,54 @@ msgstr "Rimuovi"
msgid "Date and Time Settings"
msgstr "Impostazioni data e ora"
#: ../js/ui/dateMenu.js:110
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Apri calendario"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:162
#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %k.%M.%S"
#: ../js/ui/dateMenu.js:163
#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e %b, %k.%M"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:167
#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %k.%M.%S"
#: ../js/ui/dateMenu.js:168
#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %k.%M"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %l.%M.%S %P"
#: ../js/ui/dateMenu.js:176
#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %l.%M %P"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:180
#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l.%M.%S %P"
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l.%M %P"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:207
#: ../js/ui/dateMenu.js:209
msgid "%A %B %e, %Y"
msgstr "%a %e %B %Y"
@ -516,39 +516,43 @@ msgstr "Conferma"
msgid "Cancel"
msgstr "Annulla"
#: ../js/ui/lookingGlass.js:587
#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "Nessuna estensione installata"
# (ndt) o abilitata?
#: ../js/ui/lookingGlass.js:624
#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "Abilitato"
# (ndt) o disabilitata?
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
msgid "Disabled"
msgstr "Disabilitato"
#: ../js/ui/lookingGlass.js:628
#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "Errore"
#: ../js/ui/lookingGlass.js:630
#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "Non aggiornato"
#: ../js/ui/lookingGlass.js:655
#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "Visualizza sorgente"
#: ../js/ui/lookingGlass.js:661
#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "Pagina web"
#: ../js/ui/messageTray.js:1902
#: ../js/ui/messageTray.js:924
msgid "Open"
msgstr "Apri"
#: ../js/ui/messageTray.js:1961
msgid "System Information"
msgstr "Informazione di sistema"
@ -564,18 +568,29 @@ msgstr "Finestre"
msgid "Applications"
msgstr "Applicazioni"
# cruscotto?!?!?!?!?!?!?
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:529
#: ../js/ui/panel.js:560
#, c-format
msgid "Quit %s"
msgstr "Chiudi %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:897
#: ../js/ui/panel.js:919
msgid "Activities"
msgstr "Attività"
#: ../js/ui/panel.js:1020
msgid "Panel"
msgstr "Pannello"
# (ndt) libera, ma unmount non si può proprio vedere...
#: ../js/ui/placeDisplay.js:122
#, c-format
@ -599,7 +614,7 @@ msgstr "RISORSE E DISPOSITIVI"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:612
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -607,91 +622,91 @@ msgstr "toggle-switch-us"
msgid "Please enter a command:"
msgstr "Inserire un comando:"
#: ../js/ui/searchDisplay.js:295
#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "Ricerca..."
#: ../js/ui/searchDisplay.js:309
#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "Nessun risultato corrispondente."
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
msgid "Power Off..."
msgstr "Spegni..."
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
msgid "Suspend"
msgstr "Sospendi"
#: ../js/ui/statusMenu.js:125
#: ../js/ui/statusMenu.js:136
msgid "Available"
msgstr "Disponibile"
#: ../js/ui/statusMenu.js:130
#: ../js/ui/statusMenu.js:141
msgid "Busy"
msgstr "Non disponibile"
#: ../js/ui/statusMenu.js:138
#: ../js/ui/statusMenu.js:149
msgid "My Account"
msgstr "Account personale"
#: ../js/ui/statusMenu.js:142
#: ../js/ui/statusMenu.js:153
msgid "System Settings"
msgstr "Impostazioni di sistema"
#: ../js/ui/statusMenu.js:149
#: ../js/ui/statusMenu.js:160
msgid "Lock Screen"
msgstr "Blocca schermo"
#: ../js/ui/statusMenu.js:153
#: ../js/ui/statusMenu.js:164
msgid "Switch User"
msgstr "Cambia utente"
#: ../js/ui/statusMenu.js:158
#: ../js/ui/statusMenu.js:169
msgid "Log Out..."
msgstr "Termina sessione..."
#: ../js/ui/status/accessibility.js:81
#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Ingrandimento"
#: ../js/ui/status/accessibility.js:88
#: ../js/ui/status/accessibility.js:69
msgid "Screen Reader"
msgstr "Lettore schermo"
#: ../js/ui/status/accessibility.js:92
#: ../js/ui/status/accessibility.js:73
msgid "Screen Keyboard"
msgstr "Tastiera a schermo"
#: ../js/ui/status/accessibility.js:96
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Allerte visive"
#: ../js/ui/status/accessibility.js:99
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Permanenza tasti"
#: ../js/ui/status/accessibility.js:102
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Rallentamento tasti"
#: ../js/ui/status/accessibility.js:105
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Pressione ravvicinata tasti"
#: ../js/ui/status/accessibility.js:108
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Mouse da tastiera"
#: ../js/ui/status/accessibility.js:112
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Impostazioni accesso universale"
#: ../js/ui/status/accessibility.js:164
#: ../js/ui/status/accessibility.js:145
msgid "High Contrast"
msgstr "Contrasto elevato"
#: ../js/ui/status/accessibility.js:209
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Caratteri grandi"
@ -861,52 +876,52 @@ msgid_plural "%d minutes remaining"
msgstr[0] "%d minuto rimanente"
msgstr[1] "%d minuti rimanenti"
#: ../js/ui/status/power.js:241
#: ../js/ui/status/power.js:227
msgid "AC adapter"
msgstr "Alimentatore di corrente"
#: ../js/ui/status/power.js:243
#: ../js/ui/status/power.js:229
msgid "Laptop battery"
msgstr "Batteria del portatile"
#: ../js/ui/status/power.js:245
#: ../js/ui/status/power.js:231
msgid "UPS"
msgstr "UPS"
#: ../js/ui/status/power.js:247
#: ../js/ui/status/power.js:233
msgid "Monitor"
msgstr "Monitor"
#: ../js/ui/status/power.js:249
#: ../js/ui/status/power.js:235
msgid "Mouse"
msgstr "Mouse"
#: ../js/ui/status/power.js:251
#: ../js/ui/status/power.js:237
msgid "Keyboard"
msgstr "Tastiera"
#: ../js/ui/status/power.js:253
#: ../js/ui/status/power.js:239
msgid "PDA"
msgstr "PDS"
# c'era una discussione su tp...
#: ../js/ui/status/power.js:255
#: ../js/ui/status/power.js:241
msgid "Cell phone"
msgstr "Cellulare"
#: ../js/ui/status/power.js:257
#: ../js/ui/status/power.js:243
msgid "Media player"
msgstr "Lettore multimediale"
#: ../js/ui/status/power.js:259
#: ../js/ui/status/power.js:245
msgid "Tablet"
msgstr "Tablet"
#: ../js/ui/status/power.js:261
#: ../js/ui/status/power.js:247
msgid "Computer"
msgstr "Computer"
#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
msgid "Unknown"
msgstr "Sconosciuto"
@ -941,7 +956,7 @@ msgstr "%s non è disponibile."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:348
#: ../js/ui/telepathyClient.js:357
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Inviato alle %-H.%M di %A"
@ -950,17 +965,21 @@ msgstr "Inviato alle %-H.%M di %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/viewSelector.js:103
#: ../js/ui/viewSelector.js:117
msgid "Type to search..."
msgstr "Digitare per cercare..."
#: ../js/ui/windowAttentionHandler.js:43
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
msgid "Search"
msgstr "Cerca"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "Avvio di %s completato"
# (ndt) dovrebbe essere il nome dell'applicazione
#: ../js/ui/windowAttentionHandler.js:45
#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "«%s» è pronto"
@ -987,32 +1006,36 @@ msgstr[1] "%u ingressi"
msgid "System Sounds"
msgstr "Audio di sistema"
#: ../src/shell-global.c:1298
#: ../src/main.c:395
msgid "Print version"
msgstr "Stampa la versione"
#: ../src/shell-global.c:1308
msgid "Less than a minute ago"
msgstr "Meno di un minuto fa"
#: ../src/shell-global.c:1302
#: ../src/shell-global.c:1312
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minuto fa"
msgstr[1] "%d minuti fa"
#: ../src/shell-global.c:1307
#: ../src/shell-global.c:1317
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d ora fa"
msgstr[1] "%d ore fa"
#: ../src/shell-global.c:1312
#: ../src/shell-global.c:1322
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d giorno fa"
msgstr[1] "%d giorni fa"
#: ../src/shell-global.c:1317
#: ../src/shell-global.c:1327
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -1035,10 +1058,6 @@ msgstr "Cartella home"
msgid "File System"
msgstr "File system"
#: ../src/shell-util.c:250
msgid "Search"
msgstr "Cerca"
# (ndt) valutare...
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For

251
po/ko.po
View File

@ -5,15 +5,16 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=general\n"
"POT-Creation-Date: 2011-02-27 06:38+0900\n"
"PO-Revision-Date: 2011-02-27 06:40+0900\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&component=general\n"
"POT-Creation-Date: 2011-03-08 05:43+0000\n"
"PO-Revision-Date: 2011-03-14 10:40+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: Korean\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@ -180,27 +181,27 @@ msgid "Execution of '%s' failed:"
msgstr "'%s' 실행이 실패했습니다:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:175
#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "모두"
#: ../js/ui/appDisplay.js:262
#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "프로그램"
#: ../js/ui/appDisplay.js:292
msgid "PREFERENCES"
msgstr "기본 설정"
#: ../js/ui/appDisplay.js:350
msgid "SETTINGS"
msgstr "설정"
#: ../js/ui/appDisplay.js:552
#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "새 창"
#: ../js/ui/appDisplay.js:555
#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "즐겨찾기에서 제거"
#: ../js/ui/appDisplay.js:556
#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "즐겨찾기에 추가"
@ -217,19 +218,19 @@ msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다."
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#: ../js/ui/calendar.js:65
#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "종일"
#. Translators: Shown in calendar event list, if 24h format
#: ../js/ui/calendar.js:70
#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
#: ../js/ui/calendar.js:77
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
msgstr "%p %l:%M"
@ -239,43 +240,43 @@ msgstr "%p %l:%M"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "일"
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "월"
#. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "화"
#. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "수"
#. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
msgstr "목"
#. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:127
#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "금"
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:129
#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
msgstr "토"
@ -286,136 +287,136 @@ msgstr "토"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "일"
#. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "월"
#. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "화"
#. Translators: Event list abbreviation for Wednesday
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "수"
#. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "목"
#. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:152
#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "금"
#. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:154
#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
msgstr "토"
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:701
#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "일정이 없습니다"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:717
#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%B %d일 %A"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:720
#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%Y년 %B %d일 %A"
#: ../js/ui/calendar.js:730
#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "오늘"
#: ../js/ui/calendar.js:734
#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "내일"
#: ../js/ui/calendar.js:743
#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "이번주"
#: ../js/ui/calendar.js:751
#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "다음주"
#: ../js/ui/dash.js:174
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "제거"
#: ../js/ui/dateMenu.js:93
#: ../js/ui/dateMenu.js:91
msgid "Date and Time Settings"
msgstr "날짜 및 시각 설정"
#: ../js/ui/dateMenu.js:112
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "달력 열기"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:151
#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%b %e일 (%a), %R:%S"
#: ../js/ui/dateMenu.js:152
#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%b %e일 (%a), %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:156
#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "(%a) %R:%S"
#: ../js/ui/dateMenu.js:157
#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "(%a) %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:164
#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%b %e일 (%a), %p %l:%M:%S"
#: ../js/ui/dateMenu.js:165
#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%b %e일 (%a), %p %l:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:169
#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "(%a) %p %l:%M:%S"
#: ../js/ui/dateMenu.js:170
#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "(%a) %p %l:%M"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:196
#: ../js/ui/dateMenu.js:209
msgid "%A %B %e, %Y"
msgstr "%Y년 %B %e일 %A"
@ -492,37 +493,41 @@ msgstr "확인"
msgid "Cancel"
msgstr "취소"
#: ../js/ui/lookingGlass.js:587
#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "확장 기능을 설치하지 않았습니다"
#: ../js/ui/lookingGlass.js:624
#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "사용"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
msgid "Disabled"
msgstr "사용 않음"
#: ../js/ui/lookingGlass.js:628
#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "오류"
#: ../js/ui/lookingGlass.js:630
#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "오래 된 버전"
#: ../js/ui/lookingGlass.js:655
#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "소스 보기"
#: ../js/ui/lookingGlass.js:661
#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "웹페이지"
#: ../js/ui/messageTray.js:1902
#: ../js/ui/messageTray.js:926
msgid "Open"
msgstr "열기"
#: ../js/ui/messageTray.js:1963
msgid "System Information"
msgstr "시스템 정보"
@ -538,17 +543,27 @@ msgstr "창"
msgid "Applications"
msgstr "프로그램"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
msgstr "대시보드"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:537
#: ../js/ui/panel.js:532
#, c-format
msgid "Quit %s"
msgstr "%s 끝내기"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:905
#: ../js/ui/panel.js:893
msgid "Activities"
msgstr "요약"
msgstr "현재 활동"
#: ../js/ui/panel.js:994
msgid "Panel"
msgstr "패널"
#: ../js/ui/placeDisplay.js:122
#, c-format
@ -572,7 +587,7 @@ msgstr "위치 및 장치"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:612
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -580,91 +595,91 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "명령을 입력하십시오:"
#: ../js/ui/searchDisplay.js:295
#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "검색하는 중..."
#: ../js/ui/searchDisplay.js:309
#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "일치하는 결과가 없습니다."
#: ../js/ui/statusMenu.js:99 ../js/ui/statusMenu.js:163
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
msgid "Power Off..."
msgstr "컴퓨터 끄기..."
#: ../js/ui/statusMenu.js:101 ../js/ui/statusMenu.js:162
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
msgid "Suspend"
msgstr "절전"
#: ../js/ui/statusMenu.js:122
#: ../js/ui/statusMenu.js:125
msgid "Available"
msgstr "대화 가능"
#: ../js/ui/statusMenu.js:127
#: ../js/ui/statusMenu.js:130
msgid "Busy"
msgstr "다른 용무 중"
#: ../js/ui/statusMenu.js:135
#: ../js/ui/statusMenu.js:138
msgid "My Account"
msgstr "내 계정"
#: ../js/ui/statusMenu.js:139
#: ../js/ui/statusMenu.js:142
msgid "System Settings"
msgstr "시스템 설정"
#: ../js/ui/statusMenu.js:146
#: ../js/ui/statusMenu.js:149
msgid "Lock Screen"
msgstr "화면 잠그기"
#: ../js/ui/statusMenu.js:150
#: ../js/ui/statusMenu.js:153
msgid "Switch User"
msgstr "사용자 바꾸기"
#: ../js/ui/statusMenu.js:155
#: ../js/ui/statusMenu.js:158
msgid "Log Out..."
msgstr "로그아웃..."
#: ../js/ui/status/accessibility.js:81
#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "크기 조정"
#: ../js/ui/status/accessibility.js:88
#: ../js/ui/status/accessibility.js:69
msgid "Screen Reader"
msgstr "화면 읽기"
#: ../js/ui/status/accessibility.js:92
#: ../js/ui/status/accessibility.js:73
msgid "Screen Keyboard"
msgstr "화면 키보드"
#: ../js/ui/status/accessibility.js:96
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "화면 알림"
#: ../js/ui/status/accessibility.js:99
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "고정 키"
#: ../js/ui/status/accessibility.js:102
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "느린 키"
#: ../js/ui/status/accessibility.js:105
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "탄력 키"
#: ../js/ui/status/accessibility.js:108
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "마우스 키"
#: ../js/ui/status/accessibility.js:112
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "보편적 접근성 설정"
#: ../js/ui/status/accessibility.js:164
#: ../js/ui/status/accessibility.js:145
msgid "High Contrast"
msgstr "고대비"
#: ../js/ui/status/accessibility.js:209
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "큰 글자"
@ -793,79 +808,85 @@ msgstr "지역화 설정"
msgid "Power Settings"
msgstr "전원 설정"
#: ../js/ui/status/power.js:112
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#: ../js/ui/status/power.js:110
msgid "Estimating..."
msgstr "예상치 계산 중..."
#: ../js/ui/status/power.js:117
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "%d시간 남음"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
#: ../js/ui/status/power.js:115
#: ../js/ui/status/power.js:120
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d%s %d%s 남음"
#: ../js/ui/status/power.js:117
#: ../js/ui/status/power.js:122
msgid "hour"
msgid_plural "hours"
msgstr[0] "시간"
#: ../js/ui/status/power.js:117
#: ../js/ui/status/power.js:122
msgid "minute"
msgid_plural "minutes"
msgstr[0] "분"
#: ../js/ui/status/power.js:120
#: ../js/ui/status/power.js:125
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d분 남음"
#: ../js/ui/status/power.js:235
#: ../js/ui/status/power.js:227
msgid "AC adapter"
msgstr "AC 어댑터"
#: ../js/ui/status/power.js:237
#: ../js/ui/status/power.js:229
msgid "Laptop battery"
msgstr "노트북 배터리"
#: ../js/ui/status/power.js:239
#: ../js/ui/status/power.js:231
msgid "UPS"
msgstr "UPS"
#: ../js/ui/status/power.js:241
#: ../js/ui/status/power.js:233
msgid "Monitor"
msgstr "모니터"
#: ../js/ui/status/power.js:243
#: ../js/ui/status/power.js:235
msgid "Mouse"
msgstr "마우스"
#: ../js/ui/status/power.js:245
#: ../js/ui/status/power.js:237
msgid "Keyboard"
msgstr "키보드"
#: ../js/ui/status/power.js:247
#: ../js/ui/status/power.js:239
msgid "PDA"
msgstr "PDA"
#: ../js/ui/status/power.js:249
#: ../js/ui/status/power.js:241
msgid "Cell phone"
msgstr "휴대전화"
#: ../js/ui/status/power.js:251
#: ../js/ui/status/power.js:243
msgid "Media player"
msgstr "미디어 플레이어"
#: ../js/ui/status/power.js:253
#: ../js/ui/status/power.js:245
msgid "Tablet"
msgstr "태블릿"
#: ../js/ui/status/power.js:255
#: ../js/ui/status/power.js:247
msgid "Computer"
msgstr "컴퓨터"
#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
msgid "Unknown"
msgstr "알 수 없음"
@ -910,16 +931,20 @@ msgstr "보낸 때: %A %H시 %M분"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/viewSelector.js:103
#: ../js/ui/viewSelector.js:117
msgid "Type to search..."
msgstr "검색하려면 입력하십시오..."
#: ../js/ui/windowAttentionHandler.js:43
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
msgid "Search"
msgstr "검색"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s 프로그램이 시작했습니다"
#: ../js/ui/windowAttentionHandler.js:45
#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "'%s' 프로그램이 준비되었습니다"
@ -944,29 +969,34 @@ msgstr[0] "%u개 입력"
msgid "System Sounds"
msgstr "시스템 소리"
#: ../src/shell-global.c:1363
# 커맨드라인 옵션 설명
#: ../src/main.c:395
msgid "Print version"
msgstr "버전을 표시합니다"
#: ../src/shell-global.c:1308
msgid "Less than a minute ago"
msgstr "1분 이내"
#: ../src/shell-global.c:1367
#: ../src/shell-global.c:1312
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d분 전"
#: ../src/shell-global.c:1372
#: ../src/shell-global.c:1317
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d시간 전"
#: ../src/shell-global.c:1377
#: ../src/shell-global.c:1322
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d일 전"
#: ../src/shell-global.c:1382
#: ../src/shell-global.c:1327
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -986,10 +1016,6 @@ msgstr "내 폴더"
msgid "File System"
msgstr "파일시스템"
#: ../src/shell-util.c:250
msgid "Search"
msgstr "검색"
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@ -999,3 +1025,6 @@ msgstr "검색"
#, c-format
msgid "%1$s: %2$s"
msgstr "%s: %s"
#~ msgid "PREFERENCES"
#~ msgstr "기본 설정"

366
po/nl.po
View File

@ -8,10 +8,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-11 23:09+0100\n"
"PO-Revision-Date: 2011-02-11 23:09+0100\n"
"POT-Creation-Date: 2011-03-12 23:52+0100\n"
"PO-Revision-Date: 2011-03-12 23:52+0100\n"
"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@ -60,26 +60,30 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Geschiedenis voor het opdracht-dialoogvenster (Alt-F2)"
msgstr "Geschiedenis voor het opdrachtvenster (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
msgid "History for the looking glass dialog"
msgstr "Geschiedenis voor het looking glass-venster"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
msgstr ""
"Indien ingeschakeld wordt naast de tijd ook de datum in de klok getoond"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display seconds in time."
msgstr "Indien ingeschakeld worden de secondes van de tijd getoond"
#: ../data/org.gnome.shell.gschema.xml.in.h:9
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
msgstr "Indien ingeschakeld worden weeknummers in de kalender getoond."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "Lijst van desktopbestand-id's voor favoriete toepassingen"
#: ../data/org.gnome.shell.gschema.xml.in.h:12
#: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -105,19 +109,19 @@ msgstr ""
"met de VP8-codec. %T wordt gebruikt voor een schatting van het optimaal "
"aantal threads op dit systeem."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "Datum tonen in klok"
#: ../data/org.gnome.shell.gschema.xml.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "Weeknummers tonen in kalender"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "Tijd tonen inclusief seconden"
#: ../data/org.gnome.shell.gschema.xml.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@ -125,7 +129,7 @@ msgstr ""
"De toepassingen die aan deze identifiers voldoen worden in het "
"favorietengebied weergegeven"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -135,7 +139,7 @@ msgstr ""
"de huidige datum en gebruikt deze extensie. Dit moet aangepast worden bij "
"het gebruik van een ander containerformaat."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -143,11 +147,11 @@ msgstr ""
"De framerate (in frames per seconde) voor de opnames die door de "
"schermopname van Gnome Shell gemaakt worden."
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "De gstreamer-pijplijn voor het coderen van de screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@ -159,15 +163,15 @@ msgstr ""
"deze gebruiker zijn, kan het wenselijk zijn dit om privacy-redenen uit te "
"schakelen. Let er wel op dat dit historische gegevens niet verwijdert."
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "Uuid's van uit te schakelen uitbreidingen"
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Whether to collect stats about applications usage"
msgstr "Of statistieken worden bijgehouden over toepassingsgebruik"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Of statistieken worden bijgehouden over gebruik van toepassingen"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "disabled OpenSearch providers"
msgstr "uitgeschakelde OpenSearch-providers"
@ -191,27 +195,27 @@ msgid "Execution of '%s' failed:"
msgstr "Uitvoeren van %s mislukt:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:174
#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "Alles"
#: ../js/ui/appDisplay.js:261
#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "TOEPASSINGEN"
#: ../js/ui/appDisplay.js:291
msgid "PREFERENCES"
msgstr "VOORKEUREN"
#: ../js/ui/appDisplay.js:350
msgid "SETTINGS"
msgstr "INSTELLINGEN"
#: ../js/ui/appDisplay.js:592
#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "Nieuw venster"
#: ../js/ui/appDisplay.js:596
#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "Uit favorieten verwijderen"
#: ../js/ui/appDisplay.js:597
#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "Aan favorieten toevoegen"
@ -228,19 +232,19 @@ msgstr "%s is verwijderd uit uw favorieten."
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#: ../js/ui/calendar.js:65
#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "Gehele dag"
#. Translators: Shown in calendar event list, if 24h format
#: ../js/ui/calendar.js:70
#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
#: ../js/ui/calendar.js:77
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
msgstr "%l:%M %p"
@ -250,43 +254,43 @@ msgstr "%l:%M %p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "Z"
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "M"
#. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "D"
#. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
msgstr "D"
#. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:127
#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:129
#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
msgstr "Z"
@ -297,81 +301,81 @@ msgstr "Z"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "Zo"
#. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "Ma"
#. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "Di"
#. Translators: Event list abbreviation for Wednesday
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "Wo"
#. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "Do"
#. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:152
#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "Vr"
#. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:154
#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
msgstr "Za"
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:701
#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "Niets gepland"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:717
#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%a %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:720
#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%a %d %B %Y"
#: ../js/ui/calendar.js:730
#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "Vandaag"
#: ../js/ui/calendar.js:734
#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "Morgen"
#: ../js/ui/calendar.js:743
#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "Deze week"
#: ../js/ui/calendar.js:751
#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "Volgende week"
#: ../js/ui/dash.js:174
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
msgid "Remove"
msgstr "Verwijderen"
@ -379,47 +383,47 @@ msgstr "Verwijderen"
msgid "Date and Time Settings"
msgstr "Datum- en tijdinstellingen"
#: ../js/ui/dateMenu.js:110
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Agenda openen"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:149
#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %R:%S"
#: ../js/ui/dateMenu.js:150
#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:154
#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:155
#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:162
#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:163
#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:167
#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:168
#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
@ -427,7 +431,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:194
#: ../js/ui/dateMenu.js:209
msgid "%A %B %e, %Y"
msgstr "%a %e %B %Y"
@ -509,37 +513,41 @@ msgstr "Bevestigen"
msgid "Cancel"
msgstr "Annuleren"
#: ../js/ui/lookingGlass.js:584
#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "Geen uitbreidingen geïnstalleerd"
#: ../js/ui/lookingGlass.js:621
#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "Ingeschakeld"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:623 ../src/gvc/gvc-mixer-control.c:1087
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Uitgeschakeld"
#: ../js/ui/lookingGlass.js:625
#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "Fout"
#: ../js/ui/lookingGlass.js:627
#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "Gedateerd"
#: ../js/ui/lookingGlass.js:652
#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "Broncode weergeven"
#: ../js/ui/lookingGlass.js:658
#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "Webpagina"
#: ../js/ui/messageTray.js:1854
#: ../js/ui/messageTray.js:924
msgid "Open"
msgstr "Openen"
#: ../js/ui/messageTray.js:1961
msgid "System Information"
msgstr "Systeeminformatie"
@ -547,26 +555,37 @@ msgstr "Systeeminformatie"
msgid "Undo"
msgstr "Ongedaan maken"
#: ../js/ui/overview.js:159
#: ../js/ui/overview.js:183
msgid "Windows"
msgstr "Vensters"
#: ../js/ui/overview.js:162
#: ../js/ui/overview.js:186
msgid "Applications"
msgstr "Toepassingen"
# Betere vertaling is welkom (Wouter Bolsterlee)
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
msgstr "Zijbalk"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:480
#: ../js/ui/panel.js:560
#, c-format
msgid "Quit %s"
msgstr "%s afsluiten"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:614
#: ../js/ui/panel.js:919
msgid "Activities"
msgstr "Activiteiten"
#: ../js/ui/panel.js:1020
msgid "Panel"
msgstr "Paneel"
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@ -589,101 +608,99 @@ msgstr "LOCATIES & APPARATEN"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:512
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:209
#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
msgstr "Voer een opdracht in:"
#: ../js/ui/searchDisplay.js:295
#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "Zoeken…"
#: ../js/ui/searchDisplay.js:309
#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "Geen overeenkomende resultaten."
#: ../js/ui/statusMenu.js:102
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
msgid "Power Off..."
msgstr "Uitschakelen…"
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
msgid "Suspend"
msgstr "Slaapstand"
#: ../js/ui/statusMenu.js:136
msgid "Available"
msgstr "Beschikbaar"
#: ../js/ui/statusMenu.js:107
#: ../js/ui/statusMenu.js:141
msgid "Busy"
msgstr "Bezig"
#: ../js/ui/statusMenu.js:115
#: ../js/ui/statusMenu.js:149
msgid "My Account"
msgstr "Mijn account"
#: ../js/ui/statusMenu.js:119
#: ../js/ui/statusMenu.js:153
msgid "System Settings"
msgstr "Systeeminstellingen"
#: ../js/ui/statusMenu.js:126
#: ../js/ui/statusMenu.js:160
msgid "Lock Screen"
msgstr "Scherm vergrendelen"
#: ../js/ui/statusMenu.js:130
#: ../js/ui/statusMenu.js:164
msgid "Switch User"
msgstr "Gebruiker wisselen"
#: ../js/ui/statusMenu.js:135
#: ../js/ui/statusMenu.js:169
msgid "Log Out..."
msgstr "Afmelden…"
#. This is temporarily removed, see
#. http://bugzilla.gnome.org/show_bug.cgi?id=636680
#. for details.
#. item = new PopupMenu.PopupMenuItem(_("Suspend..."));
#. item.connect('activate', Lang.bind(this, this._onShutDownActivate));
#. this.menu.addMenuItem(item);
#: ../js/ui/statusMenu.js:149
msgid "Shut Down..."
msgstr "Afsluiten…"
#: ../js/ui/status/accessibility.js:83
#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Zoomen"
#: ../js/ui/status/accessibility.js:89
#: ../js/ui/status/accessibility.js:69
msgid "Screen Reader"
msgstr "Schermlezer"
#: ../js/ui/status/accessibility.js:92
#: ../js/ui/status/accessibility.js:73
msgid "Screen Keyboard"
msgstr "Schermtoetsenbord"
#: ../js/ui/status/accessibility.js:95
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Visuele attenderingen"
msgstr "Visuele alerteringen"
#: ../js/ui/status/accessibility.js:98
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "PlakToetsen"
msgstr "Plaktoetsen"
#: ../js/ui/status/accessibility.js:101
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Trage Toetsen"
#: ../js/ui/status/accessibility.js:104
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Springende toetsen"
#: ../js/ui/status/accessibility.js:107
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "MuisToetsen"
msgstr "Muistoetsen"
#: ../js/ui/status/accessibility.js:111
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Toegankelijkheidsinstellingen"
msgstr "Instellingen voor toegankelijkheid"
#: ../js/ui/status/accessibility.js:163
#: ../js/ui/status/accessibility.js:145
msgid "High Contrast"
msgstr "Hoog contrast"
#: ../js/ui/status/accessibility.js:205
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Grote tekst"
@ -738,7 +755,7 @@ msgstr "Toetsenbordvoorkeuren"
msgid "Mouse Settings"
msgstr "Muisvoorkeuren"
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Geluidsvoorkeuren"
@ -767,7 +784,7 @@ msgstr "Afwijzen"
#: ../js/ui/status/bluetooth.js:412
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Koppelbevestiging van voor %s"
msgstr "Koppelbevestiging voor %s"
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
#, c-format
@ -781,11 +798,11 @@ msgstr "Bevestig dat de PIN-code %s hetzelfde is als die van het apparaat.
#: ../js/ui/status/bluetooth.js:421
msgid "Matches"
msgstr "PIN is hetzelfde"
msgstr "Komt overeen"
#: ../js/ui/status/bluetooth.js:422
msgid "Does not match"
msgstr "PIN is niet hezelfde"
msgstr "Komt niet overeen"
#: ../js/ui/status/bluetooth.js:445
#, c-format
@ -794,13 +811,17 @@ msgstr "Verzoek tot koppelen met %s"
#: ../js/ui/status/bluetooth.js:453
msgid "Please enter the PIN mentioned on the device."
msgstr "Geef de PIN-code die apparaat aangeef."
msgstr "Geef de op het apparaat aangegeven PIN-code."
#: ../js/ui/status/bluetooth.js:469
msgid "OK"
msgstr "OK"
#: ../js/ui/status/keyboard.js:72
#: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout..."
msgstr "Toetsenbordindeling tonen…"
#: ../js/ui/status/keyboard.js:76
msgid "Localization Settings"
msgstr "Regionale instellingen"
@ -808,7 +829,13 @@ msgstr "Regionale instellingen"
msgid "Power Settings"
msgstr "Energievoorkeuren"
#: ../js/ui/status/power.js:112
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#: ../js/ui/status/power.js:110
msgid "Estimating..."
msgstr "Schatten…"
#: ../js/ui/status/power.js:117
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@ -816,102 +843,102 @@ msgstr[0] "%d uur resterend"
msgstr[1] "%d uur resterend"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
#: ../js/ui/status/power.js:115
#: ../js/ui/status/power.js:120
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s resterend"
#: ../js/ui/status/power.js:117
#: ../js/ui/status/power.js:122
msgid "hour"
msgid_plural "hours"
msgstr[0] "uur"
msgstr[1] "uur"
#: ../js/ui/status/power.js:117
#: ../js/ui/status/power.js:122
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuut"
msgstr[1] "minuten"
#: ../js/ui/status/power.js:120
#: ../js/ui/status/power.js:125
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minuut resterend"
msgstr[1] "%d minuten resterend"
#: ../js/ui/status/power.js:235
#: ../js/ui/status/power.js:227
msgid "AC adapter"
msgstr "Netstroom"
#: ../js/ui/status/power.js:237
#: ../js/ui/status/power.js:229
msgid "Laptop battery"
msgstr "Laptop-accu"
#: ../js/ui/status/power.js:239
#: ../js/ui/status/power.js:231
msgid "UPS"
msgstr "UPS"
#: ../js/ui/status/power.js:241
#: ../js/ui/status/power.js:233
msgid "Monitor"
msgstr "Monitor"
#: ../js/ui/status/power.js:243
#: ../js/ui/status/power.js:235
msgid "Mouse"
msgstr "Muis"
#: ../js/ui/status/power.js:245
#: ../js/ui/status/power.js:237
msgid "Keyboard"
msgstr "Toetsenbord"
#: ../js/ui/status/power.js:247
#: ../js/ui/status/power.js:239
msgid "PDA"
msgstr "PDA"
#: ../js/ui/status/power.js:249
#: ../js/ui/status/power.js:241
msgid "Cell phone"
msgstr "Mobiele telefoon"
#: ../js/ui/status/power.js:251
#: ../js/ui/status/power.js:243
msgid "Media player"
msgstr "Mediaspeler"
#: ../js/ui/status/power.js:253
#: ../js/ui/status/power.js:245
msgid "Tablet"
msgstr "Tablet"
#: ../js/ui/status/power.js:255
#: ../js/ui/status/power.js:247
msgid "Computer"
msgstr "Computer"
#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
msgid "Unknown"
msgstr "Onbekend"
#: ../js/ui/status/volume.js:42
#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volume"
#: ../js/ui/status/volume.js:55
#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Microfoon"
#: ../js/ui/telepathyClient.js:563
#: ../js/ui/telepathyClient.js:239
#, c-format
msgid "%s is online."
msgstr "%s is online."
#: ../js/ui/telepathyClient.js:568
#: ../js/ui/telepathyClient.js:244
#, c-format
msgid "%s is offline."
msgstr "%s is offline."
#: ../js/ui/telepathyClient.js:571
#: ../js/ui/telepathyClient.js:247
#, c-format
msgid "%s is away."
msgstr "%s is afwezig."
#: ../js/ui/telepathyClient.js:574
#: ../js/ui/telepathyClient.js:250
#, c-format
msgid "%s is busy."
msgstr "%s is bezig."
@ -919,28 +946,36 @@ msgstr "%s is bezig."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:669
#: ../js/ui/telepathyClient.js:357
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Verzonden om %H:%M op %A %e %B %Y"
#: ../js/ui/viewSelector.js:26
msgid "Search your computer"
msgstr "De computer doorzoeken"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/viewSelector.js:119
msgid "Type to search..."
msgstr "Typ om te zoeken…"
#: ../js/ui/windowAttentionHandler.js:43
#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
msgid "Search"
msgstr "Zoeken"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s is opgestart"
#: ../js/ui/windowAttentionHandler.js:45
#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "%s is klaar"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1094
#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -949,49 +984,57 @@ msgstr[1] "%u uitvoerkanalen"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1104
#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u invoerkanaal"
msgstr[1] "%u invoerkanalen"
#: ../src/gvc/gvc-mixer-control.c:1402
#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Systeemgeluiden"
#: ../src/shell-global.c:1363
#: ../src/main.c:395
msgid "Print version"
msgstr "Versie weergeven"
#: ../src/shell-global.c:1308
msgid "Less than a minute ago"
msgstr "Minder dan een minuut geleden"
#: ../src/shell-global.c:1367
#: ../src/shell-global.c:1312
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minuut geleden"
msgstr[1] "%d minuten geleden"
#: ../src/shell-global.c:1372
#: ../src/shell-global.c:1317
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d uur geleden"
msgstr[1] "%d uur geleden"
#: ../src/shell-global.c:1377
#: ../src/shell-global.c:1322
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d dag geleden"
msgstr[1] "%d dagen geleden"
#: ../src/shell-global.c:1382
#: ../src/shell-global.c:1327
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d week geleden"
msgstr[1] "%d weken geleden"
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Authenticatievenster is door de gebruiker afgesloten"
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Persoonlijke map"
@ -1002,10 +1045,6 @@ msgstr "Persoonlijke map"
msgid "File System"
msgstr "Bestandssysteem"
#: ../src/shell-util.c:250
msgid "Search"
msgstr "Zoeken"
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@ -1016,6 +1055,15 @@ msgstr "Zoeken"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "PREFERENCES"
#~ msgstr "VOORKEUREN"
#~ msgid "Shut Down..."
#~ msgstr "Afsluiten…"
#~ msgid "Search your computer"
#~ msgstr "De computer doorzoeken"
#~ msgid "Clock"
#~ msgstr "Klok"

1443
po/ro.po

File diff suppressed because it is too large Load Diff

172
po/uk.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-02 17:36+0200\n"
"PO-Revision-Date: 2011-03-02 17:37+0300\n"
"POT-Creation-Date: 2011-03-10 18:48+0200\n"
"PO-Revision-Date: 2011-03-10 20:18+0300\n"
"Last-Translator: Korostil Daniel <ted.korostiled@gmail.com>\n"
"Language-Team: translation@linux.org.ua\n"
"Language: uk\n"
@ -193,27 +193,27 @@ msgid "Execution of '%s' failed:"
msgstr "Не вдалось виконати «%s»:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:195
#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "Всі"
#: ../js/ui/appDisplay.js:282
#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "ПРОГРАМИ"
#: ../js/ui/appDisplay.js:312
#: ../js/ui/appDisplay.js:350
msgid "SETTINGS"
msgstr "ПАРАМЕТРИ"
#: ../js/ui/appDisplay.js:572
#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "Нове вікно"
#: ../js/ui/appDisplay.js:575
#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "Вилучити з улюбленого"
#: ../js/ui/appDisplay.js:576
#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "Додати до улюбленого"
@ -373,7 +373,7 @@ msgstr "Цей тиждень"
msgid "Next week"
msgstr "Наступний тиждень"
#: ../js/ui/dash.js:174
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
msgid "Remove"
msgstr "Вилучити"
@ -381,54 +381,54 @@ msgstr "Вилучити"
msgid "Date and Time Settings"
msgstr "Параметри дати і часу"
#: ../js/ui/dateMenu.js:110
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Відкрити календар"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:162
#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
#: ../js/ui/dateMenu.js:163
#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:167
#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:168
#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:176
#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:180
#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:181
#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:207
#: ../js/ui/dateMenu.js:209
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
@ -506,37 +506,41 @@ msgstr "Підтвердити"
msgid "Cancel"
msgstr "Скасувати"
#: ../js/ui/lookingGlass.js:587
#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "Не встановлено розширення"
#: ../js/ui/lookingGlass.js:624
#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "Увімкнено"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
msgid "Disabled"
msgstr "Вимкнено"
#: ../js/ui/lookingGlass.js:628
#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "Помилка"
#: ../js/ui/lookingGlass.js:630
#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "Застаріло"
#: ../js/ui/lookingGlass.js:655
#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "Переглянути джерело"
#: ../js/ui/lookingGlass.js:661
#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "Веб-сторінка"
#: ../js/ui/messageTray.js:1902
#: ../js/ui/messageTray.js:924
msgid "Open"
msgstr "Відкрити"
#: ../js/ui/messageTray.js:1961
msgid "System Information"
msgstr "Інформація про систему"
@ -552,18 +556,28 @@ msgstr "Вікна"
msgid "Applications"
msgstr "Програми"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
msgstr "Риска"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:529
#: ../js/ui/panel.js:560
#, c-format
msgid "Quit %s"
msgstr "Вийти з %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:897
#: ../js/ui/panel.js:919
msgid "Activities"
msgstr "Дії"
#: ../js/ui/panel.js:1020
msgid "Panel"
msgstr "Панель"
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@ -586,7 +600,7 @@ msgstr "МІСЦЯ ТА ПРИСТРОЇ"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:612
#: ../js/ui/popupMenu.js:618
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -594,91 +608,91 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Будь ласка, введіть команду:"
#: ../js/ui/searchDisplay.js:295
#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "Пошук…"
#: ../js/ui/searchDisplay.js:309
#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "Нема збігів."
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
msgid "Power Off..."
msgstr "Вимкнення живлення…"
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
msgid "Suspend"
msgstr "Призупинити"
#: ../js/ui/statusMenu.js:125
#: ../js/ui/statusMenu.js:136
msgid "Available"
msgstr "Доступний"
#: ../js/ui/statusMenu.js:130
#: ../js/ui/statusMenu.js:141
msgid "Busy"
msgstr "Зайнятий"
#: ../js/ui/statusMenu.js:138
#: ../js/ui/statusMenu.js:149
msgid "My Account"
msgstr "Мій обліковий запис"
#: ../js/ui/statusMenu.js:142
#: ../js/ui/statusMenu.js:153
msgid "System Settings"
msgstr "Системні параметри"
#: ../js/ui/statusMenu.js:149
#: ../js/ui/statusMenu.js:160
msgid "Lock Screen"
msgstr "Заблокувати екран"
#: ../js/ui/statusMenu.js:153
#: ../js/ui/statusMenu.js:164
msgid "Switch User"
msgstr "Змінити користувача"
#: ../js/ui/statusMenu.js:158
#: ../js/ui/statusMenu.js:169
msgid "Log Out..."
msgstr "Завершити сеанс…"
#: ../js/ui/status/accessibility.js:81
#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Масштаб"
#: ../js/ui/status/accessibility.js:88
#: ../js/ui/status/accessibility.js:69
msgid "Screen Reader"
msgstr "Читання з екрану"
#: ../js/ui/status/accessibility.js:92
#: ../js/ui/status/accessibility.js:73
msgid "Screen Keyboard"
msgstr "Екранна клавіатура"
#: ../js/ui/status/accessibility.js:96
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Візуальні тривоги"
#: ../js/ui/status/accessibility.js:99
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Липкі клавіші"
#: ../js/ui/status/accessibility.js:102
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Повільні клавіші"
#: ../js/ui/status/accessibility.js:105
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Пружні клавіші"
#: ../js/ui/status/accessibility.js:108
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Клавіші миші"
#: ../js/ui/status/accessibility.js:112
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Параметри універсального доступу"
#: ../js/ui/status/accessibility.js:164
#: ../js/ui/status/accessibility.js:145
msgid "High Contrast"
msgstr "Висока контрастність"
#: ../js/ui/status/accessibility.js:209
#: ../js/ui/status/accessibility.js:182
msgid "Large Text"
msgstr "Більший текст"
@ -849,51 +863,51 @@ msgstr[0] "Залишилось %d хвилина"
msgstr[1] "Залишилось %d хвилини"
msgstr[2] "Залишилось %d хвилин"
#: ../js/ui/status/power.js:241
#: ../js/ui/status/power.js:227
msgid "AC adapter"
msgstr "Блок живлення"
#: ../js/ui/status/power.js:243
#: ../js/ui/status/power.js:229
msgid "Laptop battery"
msgstr "Батарея ноутбука"
#: ../js/ui/status/power.js:245
#: ../js/ui/status/power.js:231
msgid "UPS"
msgstr "UPS"
#: ../js/ui/status/power.js:247
#: ../js/ui/status/power.js:233
msgid "Monitor"
msgstr "Монітор"
#: ../js/ui/status/power.js:249
#: ../js/ui/status/power.js:235
msgid "Mouse"
msgstr "Миша"
#: ../js/ui/status/power.js:251
#: ../js/ui/status/power.js:237
msgid "Keyboard"
msgstr "Клавіатура"
#: ../js/ui/status/power.js:253
#: ../js/ui/status/power.js:239
msgid "PDA"
msgstr "КПК"
#: ../js/ui/status/power.js:255
#: ../js/ui/status/power.js:241
msgid "Cell phone"
msgstr "Мобільний телефон"
#: ../js/ui/status/power.js:257
#: ../js/ui/status/power.js:243
msgid "Media player"
msgstr "Програвач"
#: ../js/ui/status/power.js:259
#: ../js/ui/status/power.js:245
msgid "Tablet"
msgstr "Планшет"
#: ../js/ui/status/power.js:261
#: ../js/ui/status/power.js:247
msgid "Computer"
msgstr "Комп'ютер"
#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
msgid "Unknown"
msgstr "Невідомо"
@ -928,7 +942,7 @@ msgstr "%s зайнятий."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/telepathyClient.js:348
#: ../js/ui/telepathyClient.js:357
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Відправити на %X в %A"
@ -937,16 +951,20 @@ msgstr "Відправити на %X в %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/viewSelector.js:103
#: ../js/ui/viewSelector.js:117
msgid "Type to search..."
msgstr "Введіть для пошуку…"
#: ../js/ui/windowAttentionHandler.js:43
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
msgid "Search"
msgstr "Пошук"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s завершив запуск"
#: ../js/ui/windowAttentionHandler.js:45
#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "«%s» готовий"
@ -975,11 +993,15 @@ msgstr[2] "%u входів"
msgid "System Sounds"
msgstr "Системні звуки"
#: ../src/shell-global.c:1298
#: ../src/main.c:395
msgid "Print version"
msgstr "Показати версію"
#: ../src/shell-global.c:1308
msgid "Less than a minute ago"
msgstr "Менше хвилини тому"
#: ../src/shell-global.c:1302
#: ../src/shell-global.c:1312
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -987,7 +1009,7 @@ msgstr[0] "%d хвилина тому"
msgstr[1] "%d хвилини тому"
msgstr[2] "%d хвилин тому"
#: ../src/shell-global.c:1307
#: ../src/shell-global.c:1317
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -995,7 +1017,7 @@ msgstr[0] "%d година тому"
msgstr[1] "%d години тому"
msgstr[2] "%d годин тому"
#: ../src/shell-global.c:1312
#: ../src/shell-global.c:1322
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -1003,7 +1025,7 @@ msgstr[0] "%d день тому"
msgstr[1] "%d дні тому"
msgstr[2] "%d днів тому"
#: ../src/shell-global.c:1317
#: ../src/shell-global.c:1327
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -1025,10 +1047,6 @@ msgstr "Домашня тека"
msgid "File System"
msgstr "Файлова система"
#: ../src/shell-util.c:250
msgid "Search"
msgstr "Пошук"
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the

View File

@ -44,7 +44,7 @@ libgvc_la_SOURCES = \
$(libgvc_la_private_sources)
Gvc-1.0.gir: libgvc.la
Gvc_1_0_gir_INCLUDES = GObject-2.0
Gvc_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
Gvc_1_0_gir_CFLAGS = $(INCLUDES) -I$(srcdir)/gvc -DWITH_INTROSPECTION
Gvc_1_0_gir_LIBS = libgvc.la
Gvc_1_0_gir_FILES = $(addprefix $(srcdir)/,$(libgvc_la_gir_sources))

View File

@ -39,7 +39,6 @@ generated_script_substitutions = \
-e "s|@libexecdir[@]|$(libexecdir)|" \
-e "s|@libdir[@]|$(libdir)|" \
-e "s|@pkgdatadir[@]|$(pkgdatadir)|" \
-e "s|@ENABLE_DYNAMIC_MOZJS_HACK[@]|$(ENABLE_DYNAMIC_MOZJS_HACK)|" \
-e "s|@PYTHON[@]|$(PYTHON)|" \
-e "s|@VERSION[@]|$(VERSION)|" \
-e "s|@sysconfdir[@]|$(sysconfdir)|"
@ -169,6 +168,14 @@ endif BUILD_RECORDER
########################################
libexec_PROGRAMS += gnome-shell-perf-helper
gnome_shell_perf_helper_SOURCES = shell-perf-helper.c
gnome_shell_perf_helper_CPPFLAGS = $(SHELL_PERF_HELPER_CFLAGS)
gnome_shell_perf_helper_LDADD = $(SHELL_PERF_HELPER_LIBS)
########################################
# In order to run the interactive tests for GUI components, we need to have
# an executable that exports the St components. Libtool doesn't have a way
# to include all the symbols from a convenience library into a executable

View File

@ -79,11 +79,56 @@ def get_running_session_environs():
result[key] = environs[key]
return result
_bus = None
_bus_iface = None
_name_owner_changed_hook = None
def on_name_owner_changed(name, prev_owner, new_owner):
if _name_owner_changed_hook:
_name_owner_changed_hook(name, prev_owner, new_owner)
def get_bus():
global _bus
if _bus is None:
dbus_loop = DBusGMainLoop()
_bus = dbus.SessionBus(mainloop=dbus_loop)
return _bus
def get_bus_iface():
global _bus_iface
if _bus_iface is None:
bus = get_bus()
bus_proxy = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
_bus_iface = dbus.Interface(bus_proxy, 'org.freedesktop.DBus')
_bus_iface.connect_to_signal('NameOwnerChanged', on_name_owner_changed)
return _bus_iface
def wait_for_dbus_name(wait_name):
global _name_owner_changed_hook
bus_iface = get_bus_iface()
loop = gobject.MainLoop()
def on_name_owner_changed(name, prev_owner, new_owner):
if not (name == wait_name and new_owner != ''):
return
loop.quit()
return
_name_owner_changed_hook = on_name_owner_changed
def on_timeout():
print "\nFailed to start %s: timed out" % (wait_name,)
sys.exit(1)
gobject.timeout_add_seconds(7, on_timeout)
loop.run()
_name_owner_changed_hook = None
def start_dconf_await_service():
DCONF_NAME = 'ca.desrt.dconf'
dbus_loop = DBusGMainLoop()
bus = dbus.SessionBus(mainloop=dbus_loop)
bus = get_bus()
get_bus_iface() # connect to NameOwnerChanged signal
# See if the service is already running or normal D-Bus activation works
need_manual_activate = False
@ -122,25 +167,30 @@ def start_dconf_await_service():
print "\nFailed to start %s: %s" % (dconf_path, e)
sys.exit(1)
bus_proxy = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
bus_iface = dbus.Interface(bus_proxy, 'org.freedesktop.DBus')
wait_for_dbus_name (DCONF_NAME)
loop = gobject.MainLoop()
PERF_HELPER_NAME = "org.gnome.Shell.PerfHelper"
PERF_HELPER_IFACE = "org.gnome.Shell.PerfHelper"
PERF_HELPER_PATH = "/org/gnome/Shell/PerfHelper"
def on_name_owner_changed(name, prev_owner, new_owner):
if not (name == DCONF_NAME and new_owner != ''):
return
print "started"
loop.quit()
return
bus_iface.connect_to_signal('NameOwnerChanged', on_name_owner_changed)
def start_perf_helper():
get_bus_iface() # connect to NameOwnerChanged signal
def on_timeout():
print "\nFailed to start %s: timed out" % (dconf_path,)
sys.exit(1)
gobject.timeout_add_seconds(7, on_timeout)
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
running_from_source_tree = os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in'))
loop.run()
if running_from_source_tree:
perf_helper_path = os.path.join(self_dir, "gnome-shell-perf-helper")
else:
perf_helper_path = "@libexecdir@/gnome-shell-perf-helper"
subprocess.Popen([perf_helper_path])
wait_for_dbus_name (PERF_HELPER_NAME)
def stop_perf_helper():
bus = get_bus()
proxy = bus.get_object(PERF_HELPER_NAME, PERF_HELPER_PATH)
proxy.Exit(dbus_interface=PERF_HELPER_IFACE)
def start_shell(perf_output=None):
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
@ -185,6 +235,7 @@ def start_shell(perf_output=None):
if options.perf is not None:
env['SHELL_PERF_MODULE'] = options.perf
env['MUTTER_WM_CLASS_FILTER'] = 'Gnome-shell-perf-helper'
if perf_output is not None:
env['SHELL_PERF_OUTPUT'] = perf_output
@ -362,6 +413,8 @@ def run_performance_test():
logs = []
metric_summaries = {}
start_perf_helper()
for i in xrange(0, iters):
# We create an empty temporary file that the shell will overwrite
# with the contents.
@ -372,17 +425,24 @@ def run_performance_test():
normal_exit = False
try:
normal_exit = run_shell(perf_output=output_file)
except:
stop_perf_helper()
raise
finally:
if not normal_exit:
os.remove(output_file)
if not normal_exit:
stop_perf_helper()
return False
try:
f = open(output_file)
output = json.load(f)
f.close()
except:
stop_perf_helper()
raise
finally:
os.remove(output_file)
@ -409,6 +469,8 @@ def run_performance_test():
logs.append(output['log'])
stop_perf_helper()
if options.perf_output or options.perf_upload:
# Write a complete report, formatted as JSON. The Javascript/C code that
# generates the individual reports we are summarizing here is very careful
@ -548,3 +610,8 @@ try:
finally:
if options.replace and (options.perf or not normal_exit):
restore_gnome()
if normal_exit:
sys.exit(0)
else:
sys.exit(1)

View File

@ -157,7 +157,7 @@ gvc_mixer_card_get_profile (GvcMixerCard *card)
GList *l;
g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL);
g_return_val_if_fail (card->priv->profiles != NULL, FALSE);
g_return_val_if_fail (card->priv->profiles != NULL, NULL);
for (l = card->priv->profiles; l != NULL; l = l->next) {
GvcMixerCardProfile *p = l->data;
@ -266,7 +266,7 @@ gvc_mixer_card_change_profile (GvcMixerCard *card,
const GList *
gvc_mixer_card_get_profiles (GvcMixerCard *card)
{
g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL);
return card->priv->profiles;
}

View File

@ -615,13 +615,13 @@ static void
update_default_source_from_name (GvcMixerControl *control,
const char *name)
{
gboolean changed;
gboolean changed = FALSE;
if ((control->priv->default_source_name == NULL
&& name != NULL)
|| (control->priv->default_source_name != NULL
&& name == NULL)
|| strcmp (control->priv->default_source_name, name) != 0) {
|| (name != NULL && strcmp (control->priv->default_source_name, name) != 0)) {
changed = TRUE;
}
@ -640,13 +640,13 @@ static void
update_default_sink_from_name (GvcMixerControl *control,
const char *name)
{
gboolean changed;
gboolean changed = FALSE;
if ((control->priv->default_sink_name == NULL
&& name != NULL)
|| (control->priv->default_sink_name != NULL
&& name == NULL)
|| strcmp (control->priv->default_sink_name, name) != 0) {
|| (name != NULL && strcmp (control->priv->default_sink_name, name) != 0)) {
changed = TRUE;
}
@ -710,6 +710,58 @@ add_stream (GvcMixerControl *control,
gvc_mixer_stream_get_id (stream));
}
static void
set_icon_name_from_proplist (GvcMixerStream *stream,
pa_proplist *l,
const char *default_icon_name)
{
const char *t;
if ((t = pa_proplist_gets (l, PA_PROP_DEVICE_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_WINDOW_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) {
if (strcmp (t, "video") == 0 ||
strcmp (t, "phone") == 0) {
goto finish;
}
if (strcmp (t, "music") == 0) {
t = "audio";
goto finish;
}
if (strcmp (t, "game") == 0) {
t = "applications-games";
goto finish;
}
if (strcmp (t, "event") == 0) {
t = "dialog-information";
goto finish;
}
}
t = default_icon_name;
finish:
gvc_mixer_stream_set_icon_name (stream, t);
}
static void
update_sink (GvcMixerControl *control,
const pa_sink_info *info)
@ -767,7 +819,7 @@ update_sink (GvcMixerControl *control,
gvc_mixer_stream_set_name (stream, info->name);
gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
gvc_mixer_stream_set_icon_name (stream, "audio-card");
set_icon_name_from_proplist (stream, info->proplist, "audio-card");
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SINK_DECIBEL_VOLUME));
@ -856,7 +908,7 @@ update_source (GvcMixerControl *control,
gvc_mixer_stream_set_name (stream, info->name);
gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
gvc_mixer_stream_set_icon_name (stream, "audio-input-microphone");
set_icon_name_from_proplist (stream, info->proplist, "audio-input-microphone");
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SOURCE_DECIBEL_VOLUME));
@ -880,54 +932,6 @@ update_source (GvcMixerControl *control,
}
}
static void
set_icon_name_from_proplist (GvcMixerStream *stream,
pa_proplist *l,
const char *default_icon_name)
{
const char *t;
if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_WINDOW_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ICON_NAME))) {
goto finish;
}
if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) {
if (strcmp (t, "video") == 0 ||
strcmp (t, "phone") == 0) {
goto finish;
}
if (strcmp (t, "music") == 0) {
t = "audio";
goto finish;
}
if (strcmp (t, "game") == 0) {
t = "applications-games";
goto finish;
}
if (strcmp (t, "event") == 0) {
t = "dialog-information";
goto finish;
}
}
t = default_icon_name;
finish:
gvc_mixer_stream_set_icon_name (stream, t);
}
static void
set_is_event_stream_from_proplist (GvcMixerStream *stream,
pa_proplist *l)
@ -1121,7 +1125,7 @@ update_card (GvcMixerControl *control,
const pa_card_info *info)
{
GvcMixerCard *card;
gboolean is_new;
gboolean is_new = FALSE;
#if 1
guint i;
const char *key;
@ -1989,6 +1993,11 @@ gvc_mixer_control_dispose (GObject *object)
{
GvcMixerControl *control = GVC_MIXER_CONTROL (object);
if (control->priv->reconnect_id != 0) {
g_source_remove (control->priv->reconnect_id);
control->priv->reconnect_id = 0;
}
if (control->priv->pa_context != NULL) {
pa_context_unref (control->priv->pa_context);
control->priv->pa_context = NULL;
@ -2230,3 +2239,20 @@ gvc_mixer_control_new (const char *name)
NULL);
return GVC_MIXER_CONTROL (control);
}
/* FIXME: Remove when PA 0.9.23 is used */
#ifndef PA_VOLUME_UI_MAX
#define PA_VOLUME_UI_MAX pa_sw_volume_from_dB(+11.0)
#endif
gdouble
gvc_mixer_control_get_vol_max_norm (GvcMixerControl *control)
{
return (gdouble) PA_VOLUME_NORM;
}
gdouble
gvc_mixer_control_get_vol_max_amplified (GvcMixerControl *control)
{
return (gdouble) PA_VOLUME_UI_MAX;
}

View File

@ -91,6 +91,9 @@ gboolean gvc_mixer_control_set_default_sink (GvcMixerControl *con
gboolean gvc_mixer_control_set_default_source (GvcMixerControl *control,
GvcMixerStream *stream);
gdouble gvc_mixer_control_get_vol_max_norm (GvcMixerControl *control);
gdouble gvc_mixer_control_get_vol_max_amplified (GvcMixerControl *control);
G_END_DECLS
#endif /* __GVC_MIXER_CONTROL_H */

View File

@ -156,25 +156,12 @@ gvc_mixer_event_role_get_property (GObject *object,
}
}
static GObject *
gvc_mixer_event_role_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params)
{
GObject *object;
object = G_OBJECT_CLASS (gvc_mixer_event_role_parent_class)->constructor (type, n_construct_properties, construct_params);
return object;
}
static void
gvc_mixer_event_role_class_init (GvcMixerEventRoleClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
object_class->constructor = gvc_mixer_event_role_constructor;
object_class->finalize = gvc_mixer_event_role_finalize;
object_class->set_property = gvc_mixer_event_role_set_property;
object_class->get_property = gvc_mixer_event_role_get_property;

View File

@ -43,7 +43,6 @@ struct GvcMixerSinkInputPrivate
static void gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass);
static void gvc_mixer_sink_input_init (GvcMixerSinkInput *mixer_sink_input);
static void gvc_mixer_sink_input_finalize (GObject *object);
static void gvc_mixer_sink_input_dispose (GObject *object);
G_DEFINE_TYPE (GvcMixerSinkInput, gvc_mixer_sink_input, GVC_TYPE_MIXER_STREAM)
@ -107,26 +106,12 @@ gvc_mixer_sink_input_change_is_muted (GvcMixerStream *stream,
return TRUE;
}
static GObject *
gvc_mixer_sink_input_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params)
{
GObject *object;
object = G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->constructor (type, n_construct_properties, construct_params);
return object;
}
static void
gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
object_class->constructor = gvc_mixer_sink_input_constructor;
object_class->dispose = gvc_mixer_sink_input_dispose;
object_class->finalize = gvc_mixer_sink_input_finalize;
stream_class->push_volume = gvc_mixer_sink_input_push_volume;
@ -141,15 +126,6 @@ gvc_mixer_sink_input_init (GvcMixerSinkInput *sink_input)
sink_input->priv = GVC_MIXER_SINK_INPUT_GET_PRIVATE (sink_input);
}
static void
gvc_mixer_sink_input_dispose (GObject *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (GVC_IS_MIXER_SINK_INPUT (object));
G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->dispose (object);
}
static void
gvc_mixer_sink_input_finalize (GObject *object)
{

View File

@ -43,7 +43,6 @@ struct GvcMixerSinkPrivate
static void gvc_mixer_sink_class_init (GvcMixerSinkClass *klass);
static void gvc_mixer_sink_init (GvcMixerSink *mixer_sink);
static void gvc_mixer_sink_finalize (GObject *object);
static void gvc_mixer_sink_dispose (GObject *object);
G_DEFINE_TYPE (GvcMixerSink, gvc_mixer_sink, GVC_TYPE_MIXER_STREAM)
@ -139,26 +138,12 @@ gvc_mixer_sink_change_port (GvcMixerStream *stream,
#endif /* PA_MICRO > 15 */
}
static GObject *
gvc_mixer_sink_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params)
{
GObject *object;
object = G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->constructor (type, n_construct_properties, construct_params);
return object;
}
static void
gvc_mixer_sink_class_init (GvcMixerSinkClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
object_class->constructor = gvc_mixer_sink_constructor;
object_class->dispose = gvc_mixer_sink_dispose;
object_class->finalize = gvc_mixer_sink_finalize;
stream_class->push_volume = gvc_mixer_sink_push_volume;
@ -174,15 +159,6 @@ gvc_mixer_sink_init (GvcMixerSink *sink)
sink->priv = GVC_MIXER_SINK_GET_PRIVATE (sink);
}
static void
gvc_mixer_sink_dispose (GObject *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (GVC_IS_MIXER_SINK (object));
G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->dispose (object);
}
static void
gvc_mixer_sink_finalize (GObject *object)
{

View File

@ -60,25 +60,12 @@ gvc_mixer_source_output_change_is_muted (GvcMixerStream *stream,
return TRUE;
}
static GObject *
gvc_mixer_source_output_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params)
{
GObject *object;
object = G_OBJECT_CLASS (gvc_mixer_source_output_parent_class)->constructor (type, n_construct_properties, construct_params);
return object;
}
static void
gvc_mixer_source_output_class_init (GvcMixerSourceOutputClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
object_class->constructor = gvc_mixer_source_output_constructor;
object_class->finalize = gvc_mixer_source_output_finalize;
stream_class->push_volume = gvc_mixer_source_output_push_volume;

View File

@ -43,7 +43,6 @@ struct GvcMixerSourcePrivate
static void gvc_mixer_source_class_init (GvcMixerSourceClass *klass);
static void gvc_mixer_source_init (GvcMixerSource *mixer_source);
static void gvc_mixer_source_finalize (GObject *object);
static void gvc_mixer_source_dispose (GObject *object);
G_DEFINE_TYPE (GvcMixerSource, gvc_mixer_source, GVC_TYPE_MIXER_STREAM)
@ -139,26 +138,12 @@ gvc_mixer_source_change_port (GvcMixerStream *stream,
#endif /* PA_MICRO > 15 */
}
static GObject *
gvc_mixer_source_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params)
{
GObject *object;
object = G_OBJECT_CLASS (gvc_mixer_source_parent_class)->constructor (type, n_construct_properties, construct_params);
return object;
}
static void
gvc_mixer_source_class_init (GvcMixerSourceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
object_class->constructor = gvc_mixer_source_constructor;
object_class->dispose = gvc_mixer_source_dispose;
object_class->finalize = gvc_mixer_source_finalize;
stream_class->push_volume = gvc_mixer_source_push_volume;
@ -174,15 +159,6 @@ gvc_mixer_source_init (GvcMixerSource *source)
source->priv = GVC_MIXER_SOURCE_GET_PRIVATE (source);
}
static void
gvc_mixer_source_dispose (GObject *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (GVC_IS_MIXER_SOURCE (object));
G_OBJECT_CLASS (gvc_mixer_source_parent_class)->dispose (object);
}
static void
gvc_mixer_source_finalize (GObject *object)
{

View File

@ -390,6 +390,21 @@ gvc_mixer_stream_get_icon_name (GvcMixerStream *stream)
return stream->priv->icon_name;
}
/**
* gvc_mixer_stream_get_gicon:
* @stream: a #GvcMixerStream
*
* Returns: (transfer full): a new #GIcon
*/
GIcon *
gvc_mixer_stream_get_gicon (GvcMixerStream *stream)
{
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
if (stream->priv->icon_name == NULL)
return NULL;
return g_themed_icon_new_with_default_fallbacks (stream->priv->icon_name);
}
gboolean
gvc_mixer_stream_set_icon_name (GvcMixerStream *stream,
const char *icon_name)
@ -496,7 +511,7 @@ gvc_mixer_stream_change_port (GvcMixerStream *stream,
const GList *
gvc_mixer_stream_get_ports (GvcMixerStream *stream)
{
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
return stream->priv->ports;
}

View File

@ -24,6 +24,7 @@
#include <glib-object.h>
#include "gvc-pulseaudio-fake.h"
#include "gvc-channel-map.h"
#include <gio/gio.h>
G_BEGIN_DECLS
@ -84,6 +85,7 @@ gboolean gvc_mixer_stream_change_is_muted (GvcMixerStream *stream,
gboolean gvc_mixer_stream_is_running (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_name (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_icon_name (GvcMixerStream *stream);
GIcon * gvc_mixer_stream_get_gicon (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_description (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_application_id (GvcMixerStream *stream);
gboolean gvc_mixer_stream_is_event_stream (GvcMixerStream *stream);

View File

@ -77,7 +77,8 @@ main(int argc, char **argv)
clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
clutter_x11_disable_event_retrieval ();
clutter_init (&argc, &argv);
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
return 1;
gdk_window_add_filter (NULL, event_filter, NULL);

346
src/shell-perf-helper.c Normal file
View File

@ -0,0 +1,346 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* gnome-shell-perf-helper: a program to create windows for performance tests
*
* Running performance tests with whatever windows a user has open results
* in unreliable results, so instead we hide all other windows and talk
* to this program over D-Bus to create just the windows we want.
*/
#include "config.h"
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#define BUS_NAME "org.gnome.Shell.PerfHelper"
static void destroy_windows (void);
static void finish_wait_windows (void);
static void check_finish_wait_windows (void);
static const gchar introspection_xml[] =
"<node>"
" <interface name='org.gnome.Shell.PerfHelper'>"
" <method name='Exit'/>"
" <method name='CreateWindow'>"
" <arg type='i' name='width' direction='in'/>"
" <arg type='i' name='height' direction='in'/>"
" <arg type='b' name='alpha' direction='in'/>"
" <arg type='b' name='maximized' direction='in'/>"
" </method>"
" <method name='WaitWindows'/>"
" <method name='DestroyWindows'/>"
" </interface>"
"</node>";
typedef struct {
GtkWidget *window;
int width;
int height;
guint alpha : 1;
guint maximized : 1;
guint mapped : 1;
guint exposed : 1;
guint pending : 1;
} WindowInfo;
static int opt_idle_timeout = 30;
static GOptionEntry opt_entries[] =
{
{ "idle-timeout", 'r', 0, G_OPTION_ARG_INT, &opt_idle_timeout, "Exit after N seconds", "N" },
{ NULL }
};
static Display *xdisplay;
static Window xroot;
static Atom atom_wm_state;
static Atom atom__net_wm_name;
static Atom atom_utf8_string;
static guint timeout_id;
static GList *our_windows;
static GList *wait_windows_invocations;
static gboolean
on_timeout (gpointer data)
{
timeout_id = 0;
destroy_windows ();
gtk_main_quit ();
return FALSE;
}
static void
establish_timeout ()
{
if (timeout_id != 0)
g_source_remove (timeout_id);
timeout_id = g_timeout_add (opt_idle_timeout * 1000, on_timeout, NULL);
}
static void
destroy_windows (void)
{
GList *l;
for (l = our_windows; l; l = l->next)
{
WindowInfo *info = l->data;
gtk_widget_destroy (info->window);
g_free (info);
}
g_list_free (our_windows);
our_windows = NULL;
check_finish_wait_windows ();
}
static gboolean
on_window_map_event (GtkWidget *window,
GdkEventAny *event,
WindowInfo *info)
{
info->mapped = TRUE;
return FALSE;
}
static gboolean
on_window_draw (GtkWidget *window,
cairo_t *cr,
WindowInfo *info)
{
cairo_rectangle_int_t allocation;
gtk_widget_get_allocation (window, &allocation);
/* We draw an arbitrary pattern of red lines near the border of the
* window to make it more clear than empty windows if something
* is drastrically wrong.
*/
cairo_save (cr);
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
if (info->alpha)
cairo_set_source_rgba (cr, 1, 1, 1, 0.5);
else
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_paint (cr);
cairo_restore (cr);
cairo_set_source_rgb (cr, 1, 0, 0);
cairo_set_line_width (cr, 10);
cairo_move_to (cr, 0, 40);
cairo_line_to (cr, allocation.width, 40);
cairo_move_to (cr, 0, allocation.height - 40);
cairo_line_to (cr, allocation.width, allocation.height - 40);
cairo_move_to (cr, 40, 0);
cairo_line_to (cr, 40, allocation.height);
cairo_move_to (cr, allocation.width - 40, 0);
cairo_line_to (cr, allocation.width - 40, allocation.height);
cairo_stroke (cr);
info->exposed = TRUE;
if (info->exposed && info->mapped && info->pending)
{
info->pending = FALSE;
check_finish_wait_windows ();
}
return FALSE;
}
static void
create_window (int width,
int height,
gboolean alpha,
gboolean maximized)
{
WindowInfo *info;
info = g_new0 (WindowInfo, 1);
info->width = width;
info->height = height;
info->alpha = alpha;
info->maximized = maximized;
info->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
if (alpha)
gtk_widget_set_visual (info->window, gdk_screen_get_rgba_visual (gdk_screen_get_default ()));
if (maximized)
gtk_window_maximize (GTK_WINDOW (info->window));
info->pending = TRUE;
gtk_widget_set_size_request (info->window, width, height);
gtk_widget_set_app_paintable (info->window, TRUE);
g_signal_connect (info->window, "map-event", G_CALLBACK (on_window_map_event), info);
g_signal_connect (info->window, "draw", G_CALLBACK (on_window_draw), info);
gtk_widget_show (info->window);
our_windows = g_list_prepend (our_windows, info);
}
static void
finish_wait_windows (void)
{
GList *l;
for (l = wait_windows_invocations; l; l = l->next)
g_dbus_method_invocation_return_value (l->data, NULL);
g_list_free (wait_windows_invocations);
wait_windows_invocations = NULL;
}
static void
check_finish_wait_windows (void)
{
GList *l;
gboolean have_pending = FALSE;
for (l = our_windows; l; l = l->next)
{
WindowInfo *info = l->data;
if (info->pending)
have_pending = TRUE;
}
if (!have_pending)
finish_wait_windows ();
}
static void
handle_method_call (GDBusConnection *connection,
const gchar *sender,
const gchar *object_path,
const gchar *interface_name,
const gchar *method_name,
GVariant *parameters,
GDBusMethodInvocation *invocation,
gpointer user_data)
{
/* Push off the idle timeout */
establish_timeout ();
if (g_strcmp0 (method_name, "Exit") == 0)
{
destroy_windows ();
g_dbus_method_invocation_return_value (invocation, NULL);
g_dbus_connection_flush_sync (connection, NULL, NULL);
gtk_main_quit ();
}
else if (g_strcmp0 (method_name, "CreateWindow") == 0)
{
int width, height;
gboolean alpha, maximized;
g_variant_get (parameters, "(iibb)", &width, &height, &alpha, &maximized);
create_window (width, height, alpha, maximized);
g_dbus_method_invocation_return_value (invocation, NULL);
}
else if (g_strcmp0 (method_name, "WaitWindows") == 0)
{
wait_windows_invocations = g_list_prepend (wait_windows_invocations, invocation);
check_finish_wait_windows ();
}
else if (g_strcmp0 (method_name, "DestroyWindows") == 0)
{
destroy_windows ();
g_dbus_method_invocation_return_value (invocation, NULL);
}
}
static const GDBusInterfaceVTable interface_vtable =
{
handle_method_call,
NULL,
NULL
};
static void
on_bus_acquired (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
GDBusNodeInfo *introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
g_dbus_connection_register_object (connection,
"/org/gnome/Shell/PerfHelper",
introspection_data->interfaces[0],
&interface_vtable,
NULL, /* user_data */
NULL, /* user_data_free_func */
NULL); /* GError** */
}
static void
on_name_acquired (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
}
static void
on_name_lost (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
destroy_windows ();
gtk_main_quit ();
}
int
main (int argc, char **argv)
{
GdkDisplay *display;
GdkScreen *screen;
GOptionContext *context;
GError *error = NULL;
/* Since we depend on this, avoid the possibility of lt-gnome-shell-perf-helper */
g_set_prgname ("gnome-shell-perf-helper");
context = g_option_context_new (" - server to create windows for performance testing");
g_option_context_add_main_entries (context, opt_entries, NULL);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
if (!g_option_context_parse (context, &argc, &argv, &error))
{
g_print ("option parsing failed: %s\n", error->message);
return 1;
}
display = gdk_display_get_default ();
screen = gdk_screen_get_default ();
xdisplay = gdk_x11_display_get_xdisplay (display);
xroot = gdk_x11_window_get_xid (gdk_screen_get_root_window (screen));
atom_wm_state = gdk_x11_get_xatom_by_name_for_display (display, "WM_STATE");
atom__net_wm_name = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_NAME");
atom_utf8_string = gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING");
g_bus_own_name (G_BUS_TYPE_SESSION,
BUS_NAME,
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
G_BUS_NAME_OWNER_FLAGS_REPLACE,
on_bus_acquired,
on_name_acquired,
on_name_lost,
NULL,
NULL);
establish_timeout ();
gtk_main ();
return 0;
}

View File

@ -439,3 +439,42 @@ shell_util_set_hidden_from_pick (ClutterActor *actor,
g_object_set_data (G_OBJECT (actor), "shell-stop-pick", NULL);
}
}
/**
* shell_util_format_date:
* @format: a strftime-style string format, as parsed by
* g_date_time_format()
* @time_ms: milliseconds since 1970-01-01 00:00:00 UTC; the
* value returned by Date.getTime()
*
* Formats a date for the current locale. This should be
* used instead of the Spidermonkey Date.toLocaleFormat()
* extension because Date.toLocaleFormat() is buggy for
* Unicode format strings:
* https://bugzilla.mozilla.org/show_bug.cgi?id=508783
*
* Return value: the formatted date. If the date is
* outside of the range of a GDateTime (which contains
* any plausible dates we actually care about), will
* return an empty string.
*/
char *
shell_util_format_date (const char *format,
gint64 time_ms)
{
GDateTime *datetime;
GTimeVal tv;
char *result;
tv.tv_sec = time_ms / 1000;
tv.tv_usec = (time_ms % 1000) * 1000;
datetime = g_date_time_new_from_timeval_local (&tv);
if (!datetime) /* time_ms is out of range of GDateTime */
return g_strdup ("");
result = g_date_time_format (datetime, format);
g_date_time_unref (datetime);
return result;
}

View File

@ -13,6 +13,9 @@ GIcon *shell_util_get_icon_for_uri (const char *text_uri);
GIcon *shell_util_icon_from_string (const char *string, GError **error);
void shell_util_set_hidden_from_pick (ClutterActor *actor, gboolean hidden);
char *shell_util_format_date (const char *format,
gint64 time_ms);
G_END_DECLS
#endif /* __SHELL_UTIL_H__ */

View File

@ -735,7 +735,7 @@ st_entry_new (const gchar *text)
*
* Returns: the text for the entry. This must not be freed by the application
*/
G_CONST_RETURN gchar *
const gchar *
st_entry_get_text (StEntry *entry)
{
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
@ -843,8 +843,7 @@ st_entry_set_hint_text (StEntry *entry,
* Returns: the current value of the hint property. This string is owned by the
* #StEntry and should not be freed or modified.
*/
G_CONST_RETURN
gchar *
const gchar *
st_entry_get_hint_text (StEntry *entry)
{
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);

View File

@ -65,14 +65,14 @@ struct _StEntryClass
GType st_entry_get_type (void) G_GNUC_CONST;
StWidget * st_entry_new (const gchar *text);
G_CONST_RETURN gchar *st_entry_get_text (StEntry *entry);
const gchar * st_entry_get_text (StEntry *entry);
void st_entry_set_text (StEntry *entry,
const gchar *text);
ClutterActor* st_entry_get_clutter_text (StEntry *entry);
void st_entry_set_hint_text (StEntry *entry,
const gchar *text);
G_CONST_RETURN gchar *st_entry_get_hint_text (StEntry *entry);
const gchar * st_entry_get_hint_text (StEntry *entry);
void st_entry_set_primary_icon (StEntry *entry,
ClutterActor *icon);

View File

@ -355,7 +355,7 @@ st_label_new (const gchar *text)
*
* Returns: the text for the label. This must not be freed by the application
*/
G_CONST_RETURN gchar *
const gchar *
st_label_get_text (StLabel *label)
{
g_return_val_if_fail (ST_IS_LABEL (label), NULL);

View File

@ -61,7 +61,7 @@ struct _StLabelClass
GType st_label_get_type (void) G_GNUC_CONST;
StWidget * st_label_new (const gchar *text);
G_CONST_RETURN gchar *st_label_get_text (StLabel *label);
const gchar * st_label_get_text (StLabel *label);
void st_label_set_text (StLabel *label,
const gchar *text);
ClutterActor * st_label_get_clutter_text (StLabel *label);

View File

@ -49,21 +49,23 @@ static const gchar *fade_glsl_shader =
" vec4 color = cogl_color_in * texture2D (tex, vec2 (cogl_tex_coord_in[0].xy));\n"
" float y = height * cogl_tex_coord_in[0].y;\n"
" float x = width * cogl_tex_coord_in[0].x;\n"
" float ratio = 0.0;\n"
" float ratio = 1.0;\n"
" float fade_bottom_start = height - offset_bottom;\n"
" \n"
" if (offset_top != 0.0 && y < offset_top && ((rtl && x > scrollbar_width) || (!rtl && x < (width - scrollbar_width)))) {\n"
" ratio = y / offset_top;\n"
" float ratio_top = y / offset_top;\n"
" float ratio_bottom = (height - y)/(height - fade_bottom_start);\n"
" bool in_scroll_area = ((rtl && x > scrollbar_width) || (!rtl && x < (width - scrollbar_width)));\n"
" bool fade_top = y < offset_top && in_scroll_area;\n"
" bool fade_bottom = y > fade_bottom_start && in_scroll_area;\n"
"\n"
" if (fade_top) {\n"
" ratio = ratio_top;\n"
" }\n"
" else if (fade_bottom) {\n"
" ratio = ratio_bottom;\n"
" }\n"
"\n"
" cogl_color_out = color * ratio;\n"
" }\n"
" else if (offset_bottom != 0.0 && y > fade_bottom_start && ((rtl && x > scrollbar_width) || (!rtl && x < (width - scrollbar_width)))) {\n"
" ratio = (height - y)/(height - fade_bottom_start);\n"
" cogl_color_out = color * ratio;\n"
" }\n"
" else { \n"
" cogl_color_out = color;\n"
" }\n"
"}\n";
"}";
struct _StScrollViewFade
{

View File

@ -1398,10 +1398,11 @@ static char **
symbolic_names_for_icon (const char *name)
{
char **parts, **names;
int i;
int i, numnames;
parts = g_strsplit (name, "-", -1);
names = g_new (char *, g_strv_length (parts) + 1);
numnames = g_strv_length (parts);
names = g_new (char *, numnames + 1);
for (i = 0; parts[i]; i++)
{
if (i == 0)
@ -1418,6 +1419,15 @@ symbolic_names_for_icon (const char *name)
names[i] = NULL;
g_strfreev (parts);
/* need to reverse here, because longest (most specific)
name has to come first */
for (i = 0; i < (numnames / 2); i++) {
char *tmp = names[i];
names[i] = names[numnames - i - 1];
names[numnames - i - 1] = tmp;
}
return names;
}

View File

@ -377,7 +377,7 @@ st_tooltip_update_position (StTooltip *tooltip)
*
* Returns: the text for the tooltip. This must not be freed by the application
*/
G_CONST_RETURN gchar *
const gchar *
st_tooltip_get_label (StTooltip *tooltip)
{
g_return_val_if_fail (ST_IS_TOOLTIP (tooltip), NULL);
@ -489,7 +489,7 @@ st_tooltip_set_tip_area (StTooltip *tooltip,
* Returns: the #ClutterGeometry, owned by the tooltip which must not be freed
* by the application.
*/
G_CONST_RETURN ClutterGeometry*
const ClutterGeometry*
st_tooltip_get_tip_area (StTooltip *tooltip)
{
g_return_val_if_fail (ST_IS_TOOLTIP (tooltip), NULL);

View File

@ -60,13 +60,13 @@ struct _StTooltipClass
GType st_tooltip_get_type (void) G_GNUC_CONST;
G_CONST_RETURN gchar *st_tooltip_get_label (StTooltip *tooltip);
const gchar * st_tooltip_get_label (StTooltip *tooltip);
void st_tooltip_set_label (StTooltip *tooltip,
const gchar *text);
void st_tooltip_set_tip_area (StTooltip *tooltip,
const ClutterGeometry *area);
G_CONST_RETURN ClutterGeometry* st_tooltip_get_tip_area (StTooltip *tooltip);
const ClutterGeometry* st_tooltip_get_tip_area (StTooltip *tooltip);
G_END_DECLS

View File

@ -96,7 +96,7 @@ void st_widget_add_style_pseudo_class (StWidget *acto
const gchar *pseudo_class);
void st_widget_remove_style_pseudo_class (StWidget *actor,
const gchar *pseudo_class);
G_CONST_RETURN gchar *st_widget_get_style_pseudo_class (StWidget *actor);
const gchar * st_widget_get_style_pseudo_class (StWidget *actor);
gboolean st_widget_has_style_pseudo_class (StWidget *actor,
const gchar *pseudo_class);
@ -106,13 +106,13 @@ void st_widget_add_style_class_name (StWidget *acto
const gchar *style_class);
void st_widget_remove_style_class_name (StWidget *actor,
const gchar *style_class);
G_CONST_RETURN gchar *st_widget_get_style_class_name (StWidget *actor);
const gchar * st_widget_get_style_class_name (StWidget *actor);
gboolean st_widget_has_style_class_name (StWidget *actor,
const gchar *style_class);
void st_widget_set_style (StWidget *actor,
const gchar *style);
G_CONST_RETURN gchar *st_widget_get_style (StWidget *actor);
const gchar * st_widget_get_style (StWidget *actor);
void st_widget_set_theme (StWidget *actor,
StTheme *theme);
StTheme * st_widget_get_theme (StWidget *actor);

View File

@ -426,7 +426,8 @@ main (int argc, char **argv)
StTheme *theme;
StThemeContext *context;
clutter_init (&argc, &argv);
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
return 1;
theme = st_theme_new ("st/test-theme.css",
NULL, NULL);

View File

@ -31,7 +31,8 @@ int main (int argc, char **argv)
g_thread_init (NULL);
gst_init (&argc, &argv);
clutter_init (&argc, &argv);
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
return 1;
clutter_color_from_string (&red, "red");
clutter_color_from_string (&green, "green");

View File

@ -184,7 +184,9 @@
<autotools id="libcanberra" autogen-sh="configure">
<branch repo="0pointer.de" module="libcanberra/libcanberra-0.26.tar.gz" version="0.26"
hash="sha256:4b5d8d2c2835133620adbc53745dd107b6e58b9a2963059e8f457143fee00982"
md5sum="ee2c66ada7c851a4e7b6eb1682285a24" size="463209" />
md5sum="ee2c66ada7c851a4e7b6eb1682285a24" size="463209">
<patch file="libcanberra-quit-add.patch" strip="1"/>
</branch>
<dependencies>
<dep package="gtk3"/>
</dependencies>

View File

@ -0,0 +1,24 @@
diff -up libcanberra-0.26/src/canberra-gtk-module.c.quit-add libcanberra-0.26/src/canberra-gtk-module.c
--- libcanberra-0.26/src/canberra-gtk-module.c.quit-add 2011-01-07 22:48:49.388992626 -0500
+++ libcanberra-0.26/src/canberra-gtk-module.c 2011-01-07 22:49:02.339995153 -0500
@@ -932,11 +932,6 @@ static void connect_settings(void) {
connected = TRUE;
}
-static gboolean quit_handler(gpointer data) {
- dispatch_queue();
- return FALSE;
-}
-
G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {
/* This is the same quark libgnomeui uses! */
@@ -963,8 +958,6 @@ G_MODULE_EXPORT void gtk_module_init(gin
install_hook(GTK_TYPE_WIDGET, "drag-drop", &signal_id_widget_drag_drop);
install_hook(GTK_TYPE_WIDGET, "drag-failed", &signal_id_widget_drag_failed);
install_hook(GTK_TYPE_EXPANDER, "activate", &signal_id_expander_activate);
-
- gtk_quit_add(1, quit_handler, NULL);
}
G_MODULE_EXPORT gchar* g_module_check_init(GModule *module);