Compare commits
40 Commits
Author | SHA1 | Date | |
---|---|---|---|
90a691ed25 | |||
eadb41b3bb | |||
6829590c8f | |||
29da720e6a | |||
c5932c0f07 | |||
6195386a06 | |||
0080440118 | |||
b5be62cd1b | |||
1bac40fbe3 | |||
11637bae43 | |||
301bacec9f | |||
8943b3b0e9 | |||
f59018f2d7 | |||
235cb9c505 | |||
3f328463a8 | |||
e58c82fc04 | |||
91ca86ffe4 | |||
33d4518e50 | |||
b087191d2b | |||
64baea1693 | |||
b88b743428 | |||
c606cf076d | |||
d205d7e7c2 | |||
efdd3375d0 | |||
abcca3d3bc | |||
f4d13b9801 | |||
7da39031e1 | |||
6cdb1bd60c | |||
7c108e267c | |||
5cf06fe9a7 | |||
41f6956197 | |||
417cbea79c | |||
225c807550 | |||
ff78d2655b | |||
bde15f7c61 | |||
30300f1aeb | |||
d42c3a15d6 | |||
14a65559af | |||
ba1e7bd095 | |||
951705a4b2 |
53
NEWS
53
NEWS
@ -1,3 +1,41 @@
|
|||||||
|
3.3.4
|
||||||
|
=====
|
||||||
|
* https://live.gnome.org/EveryDetailMatters
|
||||||
|
- Add "browse" for labels for dash items - once a tooltip is
|
||||||
|
showing, switch to other items without a delay [Seif; #666170]
|
||||||
|
- Always scale down windows in the overview at least to 70% [Vit; #646704]
|
||||||
|
- Fix the new-workspace drop indicator sometimes getting stuck
|
||||||
|
[Stefano; #664201]
|
||||||
|
- Delay rearranging windows in the overview as long as the pointer
|
||||||
|
is over a window [Vit; #645325]
|
||||||
|
* Add a GConf => DConf migration file for overriden Mutter settings
|
||||||
|
[Florian; #667636]
|
||||||
|
* When a VPN connection is active, show that as the network icon
|
||||||
|
[Giovanni; #665115]
|
||||||
|
* Handle the "ExtendedAway" IM status as away, not offline [Guillaume; #667813]
|
||||||
|
* Improve the appearance of the labels in "Applications" [Alex; #642392]
|
||||||
|
* Adjust for GTK+ and Mutter API changes for application menu [Ryan; #668118]
|
||||||
|
* Add section label support to the application menu [Giovanni; #666681]
|
||||||
|
* Fix screenshot methods to work again [Cosimo; #667662]
|
||||||
|
* Fix several crashers related to updating workspace thumbnails [Owen; #667652]
|
||||||
|
* Fix memory management error causing gnome-shell-hotplug-sniffer to crash
|
||||||
|
[Owen; #667378]
|
||||||
|
* Build fixes [Emmanuele, Rico; #667864]
|
||||||
|
* Code cleanups [Adel; #668087]
|
||||||
|
* Misc bug fixes [Colin, Florian, Giovanni, Owen, Xavier; #633028, #658817,
|
||||||
|
#664138, #667881, #668048, #668050]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Emmanuele Bassi, Giovanni Campagna, Cosimo Cecchi, Xavier Claessens,
|
||||||
|
Guillaume Desmottes, Stefano Facchini, Adel Gadllah, Alex Hultman,
|
||||||
|
Ryan Lortie, Seif Lotfy, Florian Müllner, Vit Stanislav, Owen Taylor,
|
||||||
|
Rico Tzschichholz, Colin Walters
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Ihar Hrachyshka [be], Alexander Shopov [bg], Arash Mousavi [fa],
|
||||||
|
Jiri Grönroos, Timo Jyrinki [fi], Fran Diéguez [gl], Kjartan Maraas [nb],
|
||||||
|
Yuri Myasoedov [ru], Matej Urbančič [sl], Nguyễn Thái Ngọc Duy [vi]
|
||||||
|
|
||||||
3.3.3
|
3.3.3
|
||||||
=====
|
=====
|
||||||
* https://live.gnome.org/EveryDetailMatters
|
* https://live.gnome.org/EveryDetailMatters
|
||||||
@ -24,20 +62,23 @@
|
|||||||
* Network menu bug fixes
|
* Network menu bug fixes
|
||||||
Giovanni; #664124, #665194, #665680, #666429, #666614]
|
Giovanni; #664124, #665194, #665680, #666429, #666614]
|
||||||
* Misc bug fixes [Florian, Jasper, Jonny, Marina, Ron; #647587, #659272,
|
* Misc bug fixes [Florian, Jasper, Jonny, Marina, Ron; #647587, #659272,
|
||||||
#665261, #666020, #666243]
|
#664138, #665261, #666020, #666243]
|
||||||
|
* Build fixes [Owen]
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
Jürg Billeter, Giovanni Campagna, Stefano Candori, Cosimo Cecchi,
|
Jürg Billeter, Giovanni Campagna, Stefano Candori, Cosimo Cecchi,
|
||||||
Matthias Clasen, Zan Dobersek, Quentin Glidic, Jonny Lamb, Ryan Lortie,
|
Matthias Clasen, Zan Dobersek, Quentin Glidic, Jonny Lamb, Ryan Lortie,
|
||||||
Seif Lotfy, Rui Matos, Florian Müllner, Bastien Nocera, Jasper St. Pierre,
|
Seif Lotfy, Rui Matos, Florian Müllner, Bastien Nocera, Jasper St. Pierre,
|
||||||
Marc Plano-Lesay, Colin Walters, Ron Yorsten, Marina Zhurakhinskaya
|
Marc Plano-Lesay, Owen Taylor, Colin Walters, Ron Yorsten,
|
||||||
|
Marina Zhurakhinskaya
|
||||||
|
|
||||||
Translations:
|
Translations:
|
||||||
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
|
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
|
||||||
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Žygimantas Beručka [lt],
|
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
|
||||||
Jovan Naumovski [mk], Kjartan Maraas [nb], "Andreas N" [nn],
|
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
|
||||||
Lucian Adrian Grijincu [ro], Matej Urbančič [sl], Praveen Illa [te],
|
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
|
||||||
Muhammet Kara [tr], Daniel Korostil [uk], Aron Xu [zh_CN]
|
Matej Urbančič [sl], Praveen Illa [te], Muhammet Kara [tr],
|
||||||
|
Daniel Korostil [uk], Aron Xu [zh_CN]
|
||||||
|
|
||||||
3.3.2
|
3.3.2
|
||||||
=====
|
=====
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.3.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.3.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@ -65,12 +65,12 @@ GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
|||||||
GJS_MIN_VERSION=1.29.18
|
GJS_MIN_VERSION=1.29.18
|
||||||
MUTTER_MIN_VERSION=3.3.3
|
MUTTER_MIN_VERSION=3.3.3
|
||||||
FOLKS_MIN_VERSION=0.5.2
|
FOLKS_MIN_VERSION=0.5.2
|
||||||
GTK_MIN_VERSION=3.0.0
|
GTK_MIN_VERSION=3.3.9
|
||||||
GIO_MIN_VERSION=2.31.0
|
GIO_MIN_VERSION=2.31.6
|
||||||
LIBECAL_MIN_VERSION=2.32.0
|
LIBECAL_MIN_VERSION=2.32.0
|
||||||
LIBEDATASERVER_MIN_VERSION=1.2.0
|
LIBEDATASERVER_MIN_VERSION=1.2.0
|
||||||
LIBEDATASERVERUI_MIN_VERSION=2.91.6
|
LIBEDATASERVERUI_MIN_VERSION=2.91.6
|
||||||
TELEPATHY_GLIB_MIN_VERSION=0.15.5
|
TELEPATHY_GLIB_MIN_VERSION=0.15.6
|
||||||
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||||
POLKIT_MIN_VERSION=0.100
|
POLKIT_MIN_VERSION=0.100
|
||||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||||
@ -84,6 +84,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||||
libgnome-menu-3.0 $recorder_modules
|
libgnome-menu-3.0 $recorder_modules
|
||||||
gdk-x11-3.0 libsoup-2.4
|
gdk-x11-3.0 libsoup-2.4
|
||||||
|
gl
|
||||||
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
||||||
|
@ -59,6 +59,8 @@ gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid)
|
|||||||
|
|
||||||
all-local: gschemas.compiled
|
all-local: gschemas.compiled
|
||||||
|
|
||||||
|
convertdir = $(datadir)/GConf/gsettings
|
||||||
|
convert_DATA = gnome-shell-overrides.convert
|
||||||
|
|
||||||
shadersdir = $(pkgdatadir)/shaders
|
shadersdir = $(pkgdatadir)/shaders
|
||||||
shaders_DATA = \
|
shaders_DATA = \
|
||||||
@ -69,6 +71,7 @@ EXTRA_DIST = \
|
|||||||
gnome-shell.desktop.in.in \
|
gnome-shell.desktop.in.in \
|
||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(shaders_DATA) \
|
$(shaders_DATA) \
|
||||||
|
$(convert_DATA) \
|
||||||
org.gnome.shell.gschema.xml.in
|
org.gnome.shell.gschema.xml.in
|
||||||
|
|
||||||
CLEANFILES = \
|
CLEANFILES = \
|
||||||
|
5
data/gnome-shell-overrides.convert
Normal file
5
data/gnome-shell-overrides.convert
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[org.gnome.shell.overrides]
|
||||||
|
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
|
||||||
|
button-layout = /desktop/gnome/shell/windows/button_layout
|
||||||
|
edge-tiling = /desktop/gnome/shell/windows/edge_tiling
|
||||||
|
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary
|
@ -661,7 +661,7 @@ StTooltip StLabel {
|
|||||||
background-color: rgba(0,0,0,0.5);
|
background-color: rgba(0,0,0,0.5);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
font-weight: bold;;
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
-x-offset: 8px;
|
-x-offset: 8px;
|
||||||
}
|
}
|
||||||
@ -740,7 +740,8 @@ StTooltip StLabel {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
border: 1px rgba(0,0,0,0);
|
border: 1px rgba(0,0,0,0);
|
||||||
font-size: 7.5pt;
|
font-size: 8pt;
|
||||||
|
font-weight: bold;
|
||||||
color: white;
|
color: white;
|
||||||
transition-duration: 100;
|
transition-duration: 100;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -205,7 +205,8 @@ const UserListItem = new Lang.Class({
|
|||||||
// We use background-image instead of, say, St.TextureCache
|
// We use background-image instead of, say, St.TextureCache
|
||||||
// so the theme writers can add a rounded frame around the image
|
// so the theme writers can add a rounded frame around the image
|
||||||
// and so theme writers can pick the icon size.
|
// and so theme writers can pick the icon size.
|
||||||
this._iconBin.set_style('background-image: url("' + iconFile + '");');
|
this._iconBin.set_style('background-image: url("' + iconFile + '");' +
|
||||||
|
'background-size: contain;');
|
||||||
} else {
|
} else {
|
||||||
this._iconBin.hide();
|
this._iconBin.hide();
|
||||||
}
|
}
|
||||||
|
@ -298,7 +298,9 @@ const Dash = new Lang.Class({
|
|||||||
this._dragPlaceholderPos = -1;
|
this._dragPlaceholderPos = -1;
|
||||||
this._animatingPlaceholdersCount = 0;
|
this._animatingPlaceholdersCount = 0;
|
||||||
this._favRemoveTarget = null;
|
this._favRemoveTarget = null;
|
||||||
this._labelTimeoutId = 0;
|
this._showLabelTimeoutId = 0;
|
||||||
|
this._resetHoverTimeoutId = 0;
|
||||||
|
this._labelShowing = false;
|
||||||
|
|
||||||
this._box = new St.BoxLayout({ name: 'dash',
|
this._box = new St.BoxLayout({ name: 'dash',
|
||||||
vertical: true,
|
vertical: true,
|
||||||
@ -448,18 +450,31 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
_onHover: function (item, display) {
|
_onHover: function (item, display) {
|
||||||
if (display.actor.get_hover() && !display.isMenuUp) {
|
if (display.actor.get_hover() && !display.isMenuUp) {
|
||||||
if (this._labelTimeoutId == 0) {
|
if (this._showLabelTimeoutId == 0) {
|
||||||
this._labelTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT,
|
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
|
||||||
|
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
|
this._labelShowing = true;
|
||||||
item.showLabel();
|
item.showLabel();
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
|
if (this._resetHoverTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._resetHoverTimeoutId);
|
||||||
|
this._resetHoverTimeoutId = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this._labelTimeoutId > 0)
|
if (this._showLabelTimeoutId > 0)
|
||||||
Mainloop.source_remove(this._labelTimeoutId);
|
Mainloop.source_remove(this._showLabelTimeoutId);
|
||||||
this._labelTimeoutId = 0;
|
this._showLabelTimeoutId = 0;
|
||||||
item.hideLabel();
|
item.hideLabel();
|
||||||
|
if (this._labelShowing) {
|
||||||
|
this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT,
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this._labelShowing = false;
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -333,7 +333,8 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._iconBin.child = null;
|
this._iconBin.child = null;
|
||||||
if (iconFile) {
|
if (iconFile) {
|
||||||
this._iconBin.show();
|
this._iconBin.show();
|
||||||
this._iconBin.set_style('background-image: url("' + iconFile + '");');
|
this._iconBin.set_style('background-image: url("' + iconFile + '");' +
|
||||||
|
'background-size: contain;');
|
||||||
} else {
|
} else {
|
||||||
this._iconBin.hide();
|
this._iconBin.hide();
|
||||||
}
|
}
|
||||||
|
@ -332,6 +332,7 @@ function _windowRemoved(workspace, window) {
|
|||||||
workspace._lastRemovedWindow = null;
|
workspace._lastRemovedWindow = null;
|
||||||
_queueCheckWorkspaces();
|
_queueCheckWorkspaces();
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,7 +487,7 @@ const NotificationDaemon = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onTrayIconRemoved: function(o, icon) {
|
_onTrayIconRemoved: function(o, icon) {
|
||||||
let source = this._lookupSource(icon.pid, null, true);
|
let source = this._lookupSource(null, icon.pid, true);
|
||||||
if (source)
|
if (source)
|
||||||
source.destroy();
|
source.destroy();
|
||||||
}
|
}
|
||||||
|
@ -528,6 +528,9 @@ const AppMenuButton = new Lang.Class({
|
|||||||
if (targetApp) {
|
if (targetApp) {
|
||||||
this._appMenuNotifyId = targetApp.connect('notify::menu', Lang.bind(this, this._sync));
|
this._appMenuNotifyId = targetApp.connect('notify::menu', Lang.bind(this, this._sync));
|
||||||
this._actionGroupNotifyId = targetApp.connect('notify::action-group', Lang.bind(this, this._sync));
|
this._actionGroupNotifyId = targetApp.connect('notify::action-group', Lang.bind(this, this._sync));
|
||||||
|
} else {
|
||||||
|
this._appMenuNotifyId = 0;
|
||||||
|
this._actionGroupNotifyId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._targetApp = targetApp;
|
this._targetApp = targetApp;
|
||||||
@ -549,7 +552,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
_maybeSetMenu: function() {
|
_maybeSetMenu: function() {
|
||||||
let menu;
|
let menu;
|
||||||
|
|
||||||
if (this._targetApp.action_group) {
|
if (this._targetApp.action_group && this._targetApp.menu) {
|
||||||
if (this.menu instanceof PopupMenu.RemoteMenu &&
|
if (this.menu instanceof PopupMenu.RemoteMenu &&
|
||||||
this.menu.actionGroup == this._targetApp.action_group)
|
this.menu.actionGroup == this._targetApp.action_group)
|
||||||
return;
|
return;
|
||||||
|
@ -155,9 +155,12 @@ const PlacesManager = new Lang.Class({
|
|||||||
|
|
||||||
this._connect = new PlaceInfo('special:connect', _("Connect to..."),
|
this._connect = new PlaceInfo('special:connect', _("Connect to..."),
|
||||||
function (size) {
|
function (size) {
|
||||||
return new St.Icon({ icon_name: 'applications-internet',
|
// do NOT use St.Icon here, it crashes the shell
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
// see wanda.js for details
|
||||||
icon_size: size });
|
return St.TextureCache.get_default().load_icon_name('applications-internet',
|
||||||
|
null,
|
||||||
|
St.IconType.FULLCOLOR,
|
||||||
|
size);
|
||||||
},
|
},
|
||||||
function (params) {
|
function (params) {
|
||||||
// BUG: nautilus-connect-server doesn't have a desktop file, so we can't
|
// BUG: nautilus-connect-server doesn't have a desktop file, so we can't
|
||||||
|
@ -393,6 +393,7 @@ const AuthenticationAgent = new Lang.Class({
|
|||||||
Lang.bind(this,
|
Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
this._reallyCompleteRequest(wasDismissed);
|
this._reallyCompleteRequest(wasDismissed);
|
||||||
|
return false;
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
this._reallyCompleteRequest(wasDismissed);
|
this._reallyCompleteRequest(wasDismissed);
|
||||||
|
@ -1398,12 +1398,23 @@ const PopupMenuSection = new Lang.Class({
|
|||||||
this.actor = this.box;
|
this.actor = this.box;
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
|
|
||||||
|
// an array of externally managed separators
|
||||||
|
this.separators = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
// deliberately ignore any attempt to open() or close(), but emit the
|
// deliberately ignore any attempt to open() or close(), but emit the
|
||||||
// corresponding signal so children can still pick it up
|
// corresponding signal so children can still pick it up
|
||||||
open: function(animate) { this.emit('open-state-changed', true); },
|
open: function(animate) { this.emit('open-state-changed', true); },
|
||||||
close: function() { this.emit('open-state-changed', false); },
|
close: function() { this.emit('open-state-changed', false); },
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
for (let i = 0; i < this.separators.length; i++)
|
||||||
|
this.separators[i].destroy();
|
||||||
|
this.separators = [];
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const PopupSubMenuMenuItem = new Lang.Class({
|
const PopupSubMenuMenuItem = new Lang.Class({
|
||||||
@ -1737,17 +1748,25 @@ const RemoteMenu = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_createMenuItem: function(model, index) {
|
_createMenuItem: function(model, index) {
|
||||||
|
let labelValue = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_LABEL, null);
|
||||||
|
let label = labelValue ? labelValue.deep_unpack() : '';
|
||||||
|
// remove all underscores that are not followed by another underscore
|
||||||
|
label = label.replace(/_([^_])/, '$1');
|
||||||
|
|
||||||
let section_link = model.get_item_link(index, Gio.MENU_LINK_SECTION);
|
let section_link = model.get_item_link(index, Gio.MENU_LINK_SECTION);
|
||||||
if (section_link) {
|
if (section_link) {
|
||||||
let item = new PopupMenuSection();
|
let item = new PopupMenuSection();
|
||||||
|
if (label) {
|
||||||
|
let title = new PopupMenuItem(label, { reactive: false,
|
||||||
|
style_class: 'popup-subtitle-menu-item' });
|
||||||
|
item._titleMenuItem = title;
|
||||||
|
title._ignored = true;
|
||||||
|
item.addMenuItem(title);
|
||||||
|
}
|
||||||
this._modelChanged(section_link, 0, 0, section_link.get_n_items(), item);
|
this._modelChanged(section_link, 0, 0, section_link.get_n_items(), item);
|
||||||
return [item, true, ''];
|
return [item, true, ''];
|
||||||
}
|
}
|
||||||
|
|
||||||
// labels are not checked for existance, as they're required for all items
|
|
||||||
let label = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_LABEL, null).deep_unpack();
|
|
||||||
// remove all underscores that are not followed by another underscore
|
|
||||||
label = label.replace(/_([^_])/, '$1');
|
|
||||||
let submenu_link = model.get_item_link(index, Gio.MENU_LINK_SUBMENU);
|
let submenu_link = model.get_item_link(index, Gio.MENU_LINK_SUBMENU);
|
||||||
|
|
||||||
if (submenu_link) {
|
if (submenu_link) {
|
||||||
@ -1831,8 +1850,13 @@ const RemoteMenu = new Lang.Class({
|
|||||||
|
|
||||||
let currentItems = target._getMenuItems();
|
let currentItems = target._getMenuItems();
|
||||||
|
|
||||||
for (j0 = 0, k0 = 0; j0 < position; j0++, k0++) {
|
k0 = 0;
|
||||||
if (currentItems[k0] instanceof PopupSeparatorMenuItem)
|
// skip ignored items at the beginning
|
||||||
|
while (k0 < currentItems.length && currentItems[k0]._ignored)
|
||||||
|
k0++;
|
||||||
|
// find the right menu item matching the model item
|
||||||
|
for (j0 = 0; j0 < position; j0++, k0++) {
|
||||||
|
if (currentItems[k0]._ignored)
|
||||||
k0++;
|
k0++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1844,7 +1868,7 @@ const RemoteMenu = new Lang.Class({
|
|||||||
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
|
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
|
||||||
currentItems[k].destroy();
|
currentItems[k].destroy();
|
||||||
|
|
||||||
if (currentItems[k] instanceof PopupSeparatorMenuItem)
|
if (currentItems[k]._ignored)
|
||||||
j--;
|
j--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1855,14 +1879,20 @@ const RemoteMenu = new Lang.Class({
|
|||||||
if (item) {
|
if (item) {
|
||||||
// separators must be added in the parent to make autohiding work
|
// separators must be added in the parent to make autohiding work
|
||||||
if (addSeparator) {
|
if (addSeparator) {
|
||||||
target.addMenuItem(new PopupSeparatorMenuItem(), k+1);
|
let separator = new PopupSeparatorMenuItem();
|
||||||
|
item.separators.push(separator);
|
||||||
|
separator._ignored = true;
|
||||||
|
target.addMenuItem(separator, k+1);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.addMenuItem(item, k);
|
target.addMenuItem(item, k);
|
||||||
|
|
||||||
if (addSeparator) {
|
if (addSeparator) {
|
||||||
target.addMenuItem(new PopupSeparatorMenuItem(), k+1);
|
let separator = new PopupSeparatorMenuItem();
|
||||||
|
item.separators.push(separator);
|
||||||
|
separator._ignored = true;
|
||||||
|
target.addMenuItem(separator, k+1);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
} else if (changeSignal) {
|
} else if (changeSignal) {
|
||||||
@ -1888,7 +1918,10 @@ const RemoteMenu = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (target instanceof PopupMenuSection) {
|
if (target instanceof PopupMenuSection) {
|
||||||
target.actor.visible = target.numMenuItems != 0;
|
if (target._titleMenuItem)
|
||||||
|
target.actor.visible = target.numMenuItems != 1;
|
||||||
|
else
|
||||||
|
target.actor.visible = target.numMenuItems != 0;
|
||||||
} else {
|
} else {
|
||||||
let sourceItem = target.sourceActor._delegate;
|
let sourceItem = target.sourceActor._delegate;
|
||||||
if (sourceItem instanceof PopupSubMenuMenuItem)
|
if (sourceItem instanceof PopupSubMenuMenuItem)
|
||||||
|
@ -122,8 +122,13 @@ const GnomeShell = new Lang.Class({
|
|||||||
* indicating whether the operation was successful or not.
|
* indicating whether the operation was successful or not.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ScreenshotAreaAsync : function (x, y, width, height, filename, callback) {
|
ScreenshotAreaAsync : function (params, invocation) {
|
||||||
global.screenshot_area (x, y, width, height, filename, function (obj, result) { callback(result); });
|
let [x, y, width, height, filename, callback] = params;
|
||||||
|
global.screenshot_area (x, y, width, height, filename,
|
||||||
|
function (obj, result) {
|
||||||
|
let retval = GLib.Variant.new('(b)', [result]);
|
||||||
|
invocation.return_value(retval);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -149,8 +154,13 @@ const GnomeShell = new Lang.Class({
|
|||||||
* indicating whether the operation was successful or not.
|
* indicating whether the operation was successful or not.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ScreenshotAsync : function (filename, callback) {
|
ScreenshotAsync : function (params, invocation) {
|
||||||
global.screenshot(filename, function (obj, result) { callback(result); });
|
let [filename] = params;
|
||||||
|
global.screenshot(filename,
|
||||||
|
function (obj, result) {
|
||||||
|
let retval = GLib.Variant.new('(b)', [result]);
|
||||||
|
invocation.return_value(retval);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
ListExtensions: function() {
|
ListExtensions: function() {
|
||||||
|
@ -1803,6 +1803,7 @@ const NMApplet = new Lang.Class({
|
|||||||
let activating = null;
|
let activating = null;
|
||||||
let default_ip4 = null;
|
let default_ip4 = null;
|
||||||
let default_ip6 = null;
|
let default_ip6 = null;
|
||||||
|
let active_vpn = null;
|
||||||
for (let i = 0; i < this._activeConnections.length; i++) {
|
for (let i = 0; i < this._activeConnections.length; i++) {
|
||||||
let a = this._activeConnections[i];
|
let a = this._activeConnections[i];
|
||||||
|
|
||||||
@ -1832,6 +1833,8 @@ const NMApplet = new Lang.Class({
|
|||||||
default_ip4 = a;
|
default_ip4 = a;
|
||||||
if (a.default6)
|
if (a.default6)
|
||||||
default_ip6 = a;
|
default_ip6 = a;
|
||||||
|
if (a._type == 'vpn')
|
||||||
|
active_vpn = a;
|
||||||
|
|
||||||
if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING)
|
if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING)
|
||||||
activating = a;
|
activating = a;
|
||||||
@ -1862,7 +1865,7 @@ const NMApplet = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this._mainConnection = activating || default_ip4 || default_ip6 || this._activeConnections[0] || null;
|
this._mainConnection = activating || active_vpn || default_ip4 || default_ip6 || this._activeConnections[0] || null;
|
||||||
},
|
},
|
||||||
|
|
||||||
_notifyActivated: function(activeConnection) {
|
_notifyActivated: function(activeConnection) {
|
||||||
|
@ -33,10 +33,6 @@ const NotificationDirection = {
|
|||||||
RECEIVED: 'chat-received'
|
RECEIVED: 'chat-received'
|
||||||
};
|
};
|
||||||
|
|
||||||
let contactFeatures = [Tp.ContactFeature.ALIAS,
|
|
||||||
Tp.ContactFeature.AVATAR_DATA,
|
|
||||||
Tp.ContactFeature.PRESENCE];
|
|
||||||
|
|
||||||
// This is GNOME Shell's implementation of the Telepathy 'Client'
|
// This is GNOME Shell's implementation of the Telepathy 'Client'
|
||||||
// interface. Specifically, the shell is a Telepathy 'Observer', which
|
// interface. Specifically, the shell is a Telepathy 'Observer', which
|
||||||
// lets us see messages even if they belong to another app (eg,
|
// lets us see messages even if they belong to another app (eg,
|
||||||
@ -83,11 +79,21 @@ const Client = new Lang.Class({
|
|||||||
// account path -> AccountNotification
|
// account path -> AccountNotification
|
||||||
this._accountNotifications = {};
|
this._accountNotifications = {};
|
||||||
|
|
||||||
|
// Define features we want
|
||||||
|
this._accountManager = Tp.AccountManager.dup();
|
||||||
|
let factory = this._accountManager.get_factory();
|
||||||
|
factory.add_account_features([Tp.Account.get_feature_quark_connection()]);
|
||||||
|
factory.add_connection_features([Tp.Connection.get_feature_quark_contact_list()]);
|
||||||
|
factory.add_channel_features([Tp.Channel.get_feature_quark_contacts()]);
|
||||||
|
factory.add_contact_features([Tp.ContactFeature.ALIAS,
|
||||||
|
Tp.ContactFeature.AVATAR_DATA,
|
||||||
|
Tp.ContactFeature.PRESENCE,
|
||||||
|
Tp.ContactFeature.SUBSCRIPTION_STATES]);
|
||||||
|
|
||||||
// Set up a SimpleObserver, which will call _observeChannels whenever a
|
// Set up a SimpleObserver, which will call _observeChannels whenever a
|
||||||
// channel matching its filters is detected.
|
// channel matching its filters is detected.
|
||||||
// The second argument, recover, means _observeChannels will be run
|
// The second argument, recover, means _observeChannels will be run
|
||||||
// for any existing channel as well.
|
// for any existing channel as well.
|
||||||
this._accountManager = Tp.AccountManager.dup();
|
|
||||||
this._tpClient = new Shell.TpClient({ 'account-manager': this._accountManager,
|
this._tpClient = new Shell.TpClient({ 'account-manager': this._accountManager,
|
||||||
'name': 'GnomeShell',
|
'name': 'GnomeShell',
|
||||||
'uniquify-name': true })
|
'uniquify-name': true })
|
||||||
@ -114,16 +120,9 @@ const Client = new Lang.Class({
|
|||||||
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
|
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Watch subscription requests and connection errors
|
// Watch subscription requests and connection errors
|
||||||
this._subscriptionSource = null;
|
this._subscriptionSource = null;
|
||||||
this._accountSource = null;
|
this._accountSource = null;
|
||||||
let factory = this._accountManager.get_factory();
|
|
||||||
factory.add_account_features([Tp.Account.get_feature_quark_connection()]);
|
|
||||||
factory.add_connection_features([Tp.Connection.get_feature_quark_contact_list()]);
|
|
||||||
factory.add_contact_features([Tp.ContactFeature.SUBSCRIPTION_STATES,
|
|
||||||
Tp.ContactFeature.ALIAS,
|
|
||||||
Tp.ContactFeature.AVATAR_DATA]);
|
|
||||||
|
|
||||||
this._accountManager.connect('account-validity-changed',
|
this._accountManager.connect('account-validity-changed',
|
||||||
Lang.bind(this, this._accountValidityChanged));
|
Lang.bind(this, this._accountValidityChanged));
|
||||||
@ -133,22 +132,6 @@ const Client = new Lang.Class({
|
|||||||
|
|
||||||
_observeChannels: function(observer, account, conn, channels,
|
_observeChannels: function(observer, account, conn, channels,
|
||||||
dispatchOp, requests, context) {
|
dispatchOp, requests, context) {
|
||||||
// If the self_contact doesn't have the ALIAS, make sure
|
|
||||||
// to fetch it before trying to grab the channels.
|
|
||||||
let self_contact = conn.get_self_contact();
|
|
||||||
if (self_contact.has_feature(Tp.ContactFeature.ALIAS)) {
|
|
||||||
this._finishObserveChannels(account, conn, channels, context);
|
|
||||||
} else {
|
|
||||||
Shell.get_self_contact_features(conn,
|
|
||||||
contactFeatures,
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._finishObserveChannels(account, conn, channels, context);
|
|
||||||
}));
|
|
||||||
context.delay();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_finishObserveChannels: function(account, conn, channels, context) {
|
|
||||||
let len = channels.length;
|
let len = channels.length;
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
let channel = channels[i];
|
let channel = channels[i];
|
||||||
@ -159,16 +142,7 @@ const Client = new Lang.Class({
|
|||||||
targetHandleType != Tp.HandleType.CONTACT)
|
targetHandleType != Tp.HandleType.CONTACT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Request a TpContact */
|
this._createChatSource(account, conn, channel, channel.get_target_contact());
|
||||||
Shell.get_tp_contacts(conn, [targetHandle],
|
|
||||||
contactFeatures,
|
|
||||||
Lang.bind(this, function (connection, contacts, failed) {
|
|
||||||
if (contacts.length < 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* We got the TpContact */
|
|
||||||
this._createChatSource(account, conn, channel, contacts[0]);
|
|
||||||
}), null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
context.accept();
|
context.accept();
|
||||||
@ -234,41 +208,25 @@ const Client = new Lang.Class({
|
|||||||
|
|
||||||
_displayRoomInvitation: function(conn, channel, dispatchOp, context) {
|
_displayRoomInvitation: function(conn, channel, dispatchOp, context) {
|
||||||
// We can only approve the rooms if we have been invited to it
|
// We can only approve the rooms if we have been invited to it
|
||||||
let selfHandle = channel.group_get_self_handle();
|
let selfContact = channel.group_get_self_contact();
|
||||||
if (selfHandle == 0) {
|
if (selfContact == null) {
|
||||||
Shell.decline_dispatch_op(context, 'Not invited to the room');
|
Shell.decline_dispatch_op(context, 'Not invited to the room');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let [invited, inviter, reason, msg] = channel.group_get_local_pending_info(selfHandle);
|
let [invited, inviter, reason, msg] = channel.group_get_local_pending_contact_info(selfContact);
|
||||||
if (!invited) {
|
if (!invited) {
|
||||||
Shell.decline_dispatch_op(context, 'Not invited to the room');
|
Shell.decline_dispatch_op(context, 'Not invited to the room');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request a TpContact for the inviter
|
|
||||||
Shell.get_tp_contacts(conn, [inviter],
|
|
||||||
contactFeatures,
|
|
||||||
Lang.bind(this, this._createRoomInviteSource, channel, context, dispatchOp));
|
|
||||||
|
|
||||||
context.delay();
|
|
||||||
},
|
|
||||||
|
|
||||||
_createRoomInviteSource: function(connection, contacts, failed, channel, context, dispatchOp) {
|
|
||||||
if (contacts.length < 1) {
|
|
||||||
Shell.decline_dispatch_op(context, 'Failed to get inviter');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We got the TpContact
|
|
||||||
|
|
||||||
// FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
// FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
// system-users for now as Empathy does.
|
// system-users for now as Empathy does.
|
||||||
let source = new ApproverSource(dispatchOp, _("Invitation"),
|
let source = new ApproverSource(dispatchOp, _("Invitation"),
|
||||||
Gio.icon_new_for_string('system-users'));
|
Gio.icon_new_for_string('system-users'));
|
||||||
Main.messageTray.add(source);
|
Main.messageTray.add(source);
|
||||||
|
|
||||||
let notif = new RoomInviteNotification(source, dispatchOp, channel, contacts[0]);
|
let notif = new RoomInviteNotification(source, dispatchOp, channel, inviter);
|
||||||
source.notify(notif);
|
source.notify(notif);
|
||||||
context.accept();
|
context.accept();
|
||||||
},
|
},
|
||||||
@ -308,21 +266,6 @@ const Client = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_approveCall: function(account, conn, channel, dispatchOp, context) {
|
_approveCall: function(account, conn, channel, dispatchOp, context) {
|
||||||
let [targetHandle, targetHandleType] = channel.get_handle();
|
|
||||||
|
|
||||||
Shell.get_tp_contacts(conn, [targetHandle],
|
|
||||||
contactFeatures,
|
|
||||||
Lang.bind(this, this._createAudioVideoSource, channel, context, dispatchOp));
|
|
||||||
|
|
||||||
context.delay();
|
|
||||||
},
|
|
||||||
|
|
||||||
_createAudioVideoSource: function(connection, contacts, failed, channel, context, dispatchOp) {
|
|
||||||
if (contacts.length < 1) {
|
|
||||||
Shell.decline_dispatch_op(context, 'Failed to get inviter');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let isVideo = false;
|
let isVideo = false;
|
||||||
|
|
||||||
let props = channel.borrow_immutable_properties();
|
let props = channel.borrow_immutable_properties();
|
||||||
@ -337,27 +280,13 @@ const Client = new Lang.Class({
|
|||||||
Gio.icon_new_for_string('audio-input-microphone'));
|
Gio.icon_new_for_string('audio-input-microphone'));
|
||||||
Main.messageTray.add(source);
|
Main.messageTray.add(source);
|
||||||
|
|
||||||
let notif = new AudioVideoNotification(source, dispatchOp, channel, contacts[0], isVideo);
|
let notif = new AudioVideoNotification(source, dispatchOp, channel,
|
||||||
|
channel.get_target_contact(), isVideo);
|
||||||
source.notify(notif);
|
source.notify(notif);
|
||||||
context.accept();
|
context.accept();
|
||||||
},
|
},
|
||||||
|
|
||||||
_approveFileTransfer: function(account, conn, channel, dispatchOp, context) {
|
_approveFileTransfer: function(account, conn, channel, dispatchOp, context) {
|
||||||
let [targetHandle, targetHandleType] = channel.get_handle();
|
|
||||||
|
|
||||||
Shell.get_tp_contacts(conn, [targetHandle],
|
|
||||||
contactFeatures,
|
|
||||||
Lang.bind(this, this._createFileTransferSource, channel, context, dispatchOp));
|
|
||||||
|
|
||||||
context.delay();
|
|
||||||
},
|
|
||||||
|
|
||||||
_createFileTransferSource: function(connection, contacts, failed, channel, context, dispatchOp) {
|
|
||||||
if (contacts.length < 1) {
|
|
||||||
Shell.decline_dispatch_op(context, 'Failed to get file sender');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use the icon of the file being transferred
|
// Use the icon of the file being transferred
|
||||||
let gicon = Gio.content_type_get_icon(channel.get_mime_type());
|
let gicon = Gio.content_type_get_icon(channel.get_mime_type());
|
||||||
|
|
||||||
@ -365,7 +294,8 @@ const Client = new Lang.Class({
|
|||||||
let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon);
|
let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon);
|
||||||
Main.messageTray.add(source);
|
Main.messageTray.add(source);
|
||||||
|
|
||||||
let notif = new FileTransferNotification(source, dispatchOp, channel, contacts[0]);
|
let notif = new FileTransferNotification(source, dispatchOp, channel,
|
||||||
|
channel.get_target_contact());
|
||||||
source.notify(notif);
|
source.notify(notif);
|
||||||
context.accept();
|
context.accept();
|
||||||
},
|
},
|
||||||
@ -739,12 +669,12 @@ const ChatSource = new Lang.Class({
|
|||||||
if (presence == Tp.ConnectionPresenceType.AVAILABLE) {
|
if (presence == Tp.ConnectionPresenceType.AVAILABLE) {
|
||||||
msg = _("%s is online.").format(title);
|
msg = _("%s is online.").format(title);
|
||||||
shouldNotify = (this._presence == Tp.ConnectionPresenceType.OFFLINE);
|
shouldNotify = (this._presence == Tp.ConnectionPresenceType.OFFLINE);
|
||||||
} else if (presence == Tp.ConnectionPresenceType.OFFLINE ||
|
} else if (presence == Tp.ConnectionPresenceType.OFFLINE) {
|
||||||
presence == Tp.ConnectionPresenceType.EXTENDED_AWAY) {
|
|
||||||
presence = Tp.ConnectionPresenceType.OFFLINE;
|
presence = Tp.ConnectionPresenceType.OFFLINE;
|
||||||
msg = _("%s is offline.").format(title);
|
msg = _("%s is offline.").format(title);
|
||||||
shouldNotify = (this._presence != Tp.ConnectionPresenceType.OFFLINE);
|
shouldNotify = (this._presence != Tp.ConnectionPresenceType.OFFLINE);
|
||||||
} else if (presence == Tp.ConnectionPresenceType.AWAY) {
|
} else if (presence == Tp.ConnectionPresenceType.AWAY ||
|
||||||
|
presence == Tp.ConnectionPresenceType.EXTENDED_AWAY) {
|
||||||
msg = _("%s is away.").format(title);
|
msg = _("%s is away.").format(title);
|
||||||
shouldNotify = false;
|
shouldNotify = false;
|
||||||
} else if (presence == Tp.ConnectionPresenceType.BUSY) {
|
} else if (presence == Tp.ConnectionPresenceType.BUSY) {
|
||||||
|
@ -239,7 +239,8 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_setIconFromFile: function(iconFile) {
|
_setIconFromFile: function(iconFile) {
|
||||||
this._iconBin.set_style('background-image: url("' + iconFile + '");');
|
this._iconBin.set_style('background-image: url("' + iconFile + '");' +
|
||||||
|
'background-size: contain;');
|
||||||
this._iconBin.child = null;
|
this._iconBin.child = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ const WINDOW_DND_SIZE = 256;
|
|||||||
|
|
||||||
const SCROLL_SCALE_AMOUNT = 100 / 5;
|
const SCROLL_SCALE_AMOUNT = 100 / 5;
|
||||||
|
|
||||||
|
const WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
|
||||||
|
|
||||||
const LIGHTBOX_FADE_TIME = 0.1;
|
const LIGHTBOX_FADE_TIME = 0.1;
|
||||||
const CLOSE_BUTTON_FADE_TIME = 0.1;
|
const CLOSE_BUTTON_FADE_TIME = 0.1;
|
||||||
|
|
||||||
@ -964,7 +966,7 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
let scale = Math.min((width - buttonOuterWidth) / rect.width,
|
let scale = Math.min((width - buttonOuterWidth) / rect.width,
|
||||||
(height - buttonOuterHeight - captionHeight) / rect.height,
|
(height - buttonOuterHeight - captionHeight) / rect.height,
|
||||||
1.0);
|
WINDOW_CLONE_MAXIMUM_SCALE);
|
||||||
|
|
||||||
x = Math.floor(x + (width - scale * rect.width) / 2);
|
x = Math.floor(x + (width - scale * rect.width) / 2);
|
||||||
|
|
||||||
@ -1155,6 +1157,12 @@ const Workspace = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let actorUnderPointer = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||||
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
|
if (this._windows[i].actor == actorUnderPointer)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
@ -154,6 +154,8 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
this.metaWorkspace = metaWorkspace;
|
this.metaWorkspace = metaWorkspace;
|
||||||
this.monitorIndex = Main.layoutManager.primaryIndex;
|
this.monitorIndex = Main.layoutManager.primaryIndex;
|
||||||
|
|
||||||
|
this._removed = false;
|
||||||
|
|
||||||
this.actor = new St.Group({ reactive: true,
|
this.actor = new St.Group({ reactive: true,
|
||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
style_class: 'workspace-thumbnail' });
|
style_class: 'workspace-thumbnail' });
|
||||||
@ -179,17 +181,21 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
let monitor = Main.layoutManager.primaryMonitor;
|
let monitor = Main.layoutManager.primaryMonitor;
|
||||||
this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height);
|
this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height);
|
||||||
|
|
||||||
let windows = global.get_window_actors().filter(this._isMyWindow, this);
|
let windows = global.get_window_actors().filter(this._isWorkspaceWindow, this);
|
||||||
|
|
||||||
// Create clones for windows that should be visible in the Overview
|
// Create clones for windows that should be visible in the Overview
|
||||||
this._windows = [];
|
this._windows = [];
|
||||||
|
this._allWindows = [];
|
||||||
|
this._minimizedChangedIds = [];
|
||||||
for (let i = 0; i < windows.length; i++) {
|
for (let i = 0; i < windows.length; i++) {
|
||||||
windows[i].meta_window._minimizedChangedId =
|
let minimizedChangedId =
|
||||||
windows[i].meta_window.connect('notify::minimized',
|
windows[i].meta_window.connect('notify::minimized',
|
||||||
Lang.bind(this,
|
Lang.bind(this,
|
||||||
this._updateMinimized));
|
this._updateMinimized));
|
||||||
|
this._allWindows.push(windows[i].meta_window);
|
||||||
|
this._minimizedChangedIds.push(minimizedChangedId);
|
||||||
|
|
||||||
if (this._isOverviewWindow(windows[i])) {
|
if (this._isMyWindow(windows[i]) && this._isOverviewWindow(windows[i])) {
|
||||||
this._addWindowClone(windows[i]);
|
this._addWindowClone(windows[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -274,17 +280,11 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
let clone = this._windows[index];
|
let clone = this._windows[index];
|
||||||
this._windows.splice(index, 1);
|
this._windows.splice(index, 1);
|
||||||
|
|
||||||
if (win && this._isOverviewWindow(win)) {
|
|
||||||
if (metaWin._minimizedChangedId) {
|
|
||||||
metaWin.disconnect(metaWin._minimizedChangedId);
|
|
||||||
delete metaWin._minimizedChangedId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clone.destroy();
|
clone.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_doAddWindow : function(metaWin) {
|
_doAddWindow : function(metaWin) {
|
||||||
if (this.leavingOverview)
|
if (this._removed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let win = metaWin.get_compositor_private();
|
let win = metaWin.get_compositor_private();
|
||||||
@ -294,7 +294,7 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
// the compositor finds out about them...
|
// the compositor finds out about them...
|
||||||
Mainloop.idle_add(Lang.bind(this,
|
Mainloop.idle_add(Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
if (this.actor &&
|
if (!this._removed &&
|
||||||
metaWin.get_compositor_private() &&
|
metaWin.get_compositor_private() &&
|
||||||
metaWin.get_workspace() == this.metaWorkspace)
|
metaWin.get_workspace() == this.metaWorkspace)
|
||||||
this._doAddWindow(metaWin);
|
this._doAddWindow(metaWin);
|
||||||
@ -303,16 +303,19 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this._allWindows.indexOf(metaWin) == -1) {
|
||||||
|
let minimizedChangedId = metaWin.connect('notify::minimized',
|
||||||
|
Lang.bind(this,
|
||||||
|
this._updateMinimized));
|
||||||
|
this._allWindows.push(metaWin);
|
||||||
|
this._minimizedChangedIds.push(minimizedChangedId);
|
||||||
|
}
|
||||||
|
|
||||||
// We might have the window in our list already if it was on all workspaces and
|
// We might have the window in our list already if it was on all workspaces and
|
||||||
// now was moved to this workspace
|
// now was moved to this workspace
|
||||||
if (this._lookupIndex (metaWin) != -1)
|
if (this._lookupIndex (metaWin) != -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!metaWin._minimizedChangedId)
|
|
||||||
metaWin._minimizedChangedId = metaWin.connect('notify::minimized',
|
|
||||||
Lang.bind(this,
|
|
||||||
this._updateMinimized));
|
|
||||||
|
|
||||||
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -324,6 +327,13 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_windowRemoved : function(metaWorkspace, metaWin) {
|
_windowRemoved : function(metaWorkspace, metaWin) {
|
||||||
|
let index = this._allWindows.indexOf(metaWin);
|
||||||
|
if (index != -1) {
|
||||||
|
metaWin.disconnect(this._minimizedChangedIds[index]);
|
||||||
|
this._allWindows.splice(index, 1);
|
||||||
|
this._minimizedChangedIds.splice(index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
this._doRemoveWindow(metaWin);
|
this._doRemoveWindow(metaWin);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -350,27 +360,36 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function(actor) {
|
workspaceRemoved : function() {
|
||||||
|
if (this._removed)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._removed = true;
|
||||||
|
|
||||||
this.metaWorkspace.disconnect(this._windowAddedId);
|
this.metaWorkspace.disconnect(this._windowAddedId);
|
||||||
this.metaWorkspace.disconnect(this._windowRemovedId);
|
this.metaWorkspace.disconnect(this._windowRemovedId);
|
||||||
global.screen.disconnect(this._windowEnteredMonitorId);
|
global.screen.disconnect(this._windowEnteredMonitorId);
|
||||||
global.screen.disconnect(this._windowLeftMonitorId);
|
global.screen.disconnect(this._windowLeftMonitorId);
|
||||||
|
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._allWindows.length; i++)
|
||||||
let metaWin = this._windows[i].metaWindow;
|
this._allWindows[i].disconnect(this._minimizedChangedIds[i]);
|
||||||
if (metaWin._minimizedChangedId) {
|
},
|
||||||
metaWin.disconnect(metaWin._minimizedChangedId);
|
|
||||||
delete metaWin._minimizedChangedId;
|
_onDestroy: function(actor) {
|
||||||
}
|
this.workspaceRemoved();
|
||||||
}
|
|
||||||
|
|
||||||
this._windows = [];
|
this._windows = [];
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Tests if @win belongs to this workspace
|
||||||
|
_isWorkspaceWindow : function (win) {
|
||||||
|
return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index());
|
||||||
|
},
|
||||||
|
|
||||||
// Tests if @win belongs to this workspace and monitor
|
// Tests if @win belongs to this workspace and monitor
|
||||||
_isMyWindow : function (win) {
|
_isMyWindow : function (win) {
|
||||||
return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index()) &&
|
return this._isWorkspaceWindow(win) &&
|
||||||
(!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
|
(!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -528,6 +547,59 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
this._stateCounts[ThumbnailState[key]] = 0;
|
this._stateCounts[ThumbnailState[key]] = 0;
|
||||||
|
|
||||||
this._thumbnails = [];
|
this._thumbnails = [];
|
||||||
|
|
||||||
|
Main.overview.connect('item-drag-begin',
|
||||||
|
Lang.bind(this, this._onDragBegin));
|
||||||
|
Main.overview.connect('item-drag-end',
|
||||||
|
Lang.bind(this, this._onDragEnd));
|
||||||
|
Main.overview.connect('item-drag-cancelled',
|
||||||
|
Lang.bind(this, this._onDragCancelled));
|
||||||
|
Main.overview.connect('window-drag-begin',
|
||||||
|
Lang.bind(this, this._onDragBegin));
|
||||||
|
Main.overview.connect('window-drag-end',
|
||||||
|
Lang.bind(this, this._onDragEnd));
|
||||||
|
Main.overview.connect('window-drag-cancelled',
|
||||||
|
Lang.bind(this, this._onDragCancelled));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragBegin: function() {
|
||||||
|
this._dragCancelled = false;
|
||||||
|
this._dragMonitor = {
|
||||||
|
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||||
|
};
|
||||||
|
DND.addDragMonitor(this._dragMonitor);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragEnd: function() {
|
||||||
|
if (this._dragCancelled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._endDrag();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragCancelled: function() {
|
||||||
|
this._dragCancelled = true;
|
||||||
|
this._endDrag();
|
||||||
|
},
|
||||||
|
|
||||||
|
_endDrag: function() {
|
||||||
|
this._clearDragPlaceholder();
|
||||||
|
DND.removeDragMonitor(this._dragMonitor);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDragMotion: function(dragEvent) {
|
||||||
|
if (!this.actor.contains(dragEvent.targetActor))
|
||||||
|
this._onLeave();
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onLeave: function() {
|
||||||
|
this._clearDragPlaceholder();
|
||||||
|
},
|
||||||
|
|
||||||
|
_clearDragPlaceholder: function() {
|
||||||
|
this._dropPlaceholderPos = -1;
|
||||||
|
this.actor.queue_relayout();
|
||||||
},
|
},
|
||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface
|
||||||
@ -679,8 +751,10 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
if (thumbnail.state > ThumbnailState.NORMAL)
|
if (thumbnail.state > ThumbnailState.NORMAL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (currentPos >= start && currentPos < start + count)
|
if (currentPos >= start && currentPos < start + count) {
|
||||||
|
thumbnail.workspaceRemoved();
|
||||||
this._setThumbnailState(thumbnail, ThumbnailState.REMOVING);
|
this._setThumbnailState(thumbnail, ThumbnailState.REMOVING);
|
||||||
|
}
|
||||||
|
|
||||||
currentPos++;
|
currentPos++;
|
||||||
}
|
}
|
||||||
|
399
po/nb.po
399
po/nb.po
@ -2,16 +2,16 @@
|
|||||||
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
#
|
#
|
||||||
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2011.
|
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2012.
|
||||||
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 3.3.x\n"
|
"Project-Id-Version: gnome-shell 3.3.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-12-01 20:16+0100\n"
|
"POT-Creation-Date: 2012-01-06 21:16+0100\n"
|
||||||
"PO-Revision-Date: 2011-12-01 20:18+0100\n"
|
"PO-Revision-Date: 2012-01-06 21:18+0100\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -27,6 +27,10 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Vindushåndtering og oppstart av programmer"
|
msgstr "Vindushåndtering og oppstart av programmer"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
msgstr "Aktiver interne verktøy for utviklere og testere fra Alt-F2"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
@ -34,51 +38,111 @@ msgstr ""
|
|||||||
"Tillat tilgang til interne feilsøkings- og overvåkingsverktøy ved å bruke "
|
"Tillat tilgang til interne feilsøkings- og overvåkingsverktøy ved å bruke "
|
||||||
"Alt-F2-dialogen."
|
"Alt-F2-dialogen."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
|
||||||
msgstr "Aktiver interne verktøy for utviklere og testere fra Alt-F2"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "Filendelse i bruk ved lagring av skjermvideo"
|
msgstr "Uuider på utvidelser som skal slås på"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
|
||||||
msgstr "Bildefrekvens i bruk ved lagring av skjermvideoer."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
"list. You can also manipulate this list with the EnableExtension and "
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
"DisableExtension DBus methods on org.gnome.Shell."
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr "GNOME Shell-utvidelser har en uuid-egenskap. Denne nøkkelen lister utvidelser som skal lastes. Alle utvidelser som ønsker å bli lastet må være i denne listen. Du kan også manipulere denne listen med DBus-metodene EnablExtension og DisableExtension på org.gnome.Shell."
|
msgstr ""
|
||||||
|
"GNOME Shell-utvidelser har en uuid-egenskap. Denne nøkkelen lister "
|
||||||
|
"utvidelser som skal lastes. Alle utvidelser som ønsker å bli lastet må være "
|
||||||
|
"i denne listen. Du kan også manipulere denne listen med DBus-metodene "
|
||||||
|
"EnablExtension og DisableExtension på org.gnome.Shell."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "Om det skal samles statistikk om bruk av programmer"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid ""
|
||||||
msgstr "Historikk for kommandodialog (Alt-F2)"
|
"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 "
|
||||||
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
|
"remove already saved data."
|
||||||
|
msgstr ""
|
||||||
|
"GNOME Shell vil normalt holde øye med åpne programmer for å kunne vise de "
|
||||||
|
"mest bruke (for eksempel i oppstartsmenyer). Denne informasjonen vil bli "
|
||||||
|
"holdt privat, men du kan deaktivere denne lagringen av personvernårsaker. "
|
||||||
|
"Hvis du slår det av, vil det ikke fjerne allerede lagret informasjon."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
msgid "History for the looking glass dialog"
|
|
||||||
msgstr "Historikk for forstørrelsesglass-dialogen"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
|
||||||
msgstr "Viser dato i tillegg til tid i klokken hvis «true»."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
|
||||||
msgid "If true, display seconds in time."
|
|
||||||
msgstr "Viser sekunder i klokken hvis «true»."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
|
||||||
msgstr "Viser ISO-ukedato i kalenderen hvis «true»."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "Liste av skrivebordfil-ider for favorittprogrammer"
|
msgstr "Liste av skrivebordfil-ider for favorittprogrammer"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr ""
|
||||||
|
"Programmene som passer til disse identifikatorene vil bli vist i "
|
||||||
|
"favorittområdet."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
|
msgid "disabled OpenSearch providers"
|
||||||
|
msgstr "OpenSearch tilbydere slått av"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
|
msgid "History for command (Alt-F2) dialog"
|
||||||
|
msgstr "Historikk for kommandodialog (Alt-F2)"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
|
msgid "History for the looking glass dialog"
|
||||||
|
msgstr "Historikk for forstørrelsesglass-dialogen"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
|
msgid "Show the week date in the calendar"
|
||||||
|
msgstr "Vis dato for uken i kalender"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
|
msgstr "Viser ISO-ukedato i kalenderen hvis «true»."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "Tastatur som skal brukes"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "Type tastatur som skal brukes."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Show time with seconds"
|
||||||
|
msgstr "Vis tid med sekunder"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid "If true, display seconds in time."
|
||||||
|
msgstr "Viser sekunder i klokken hvis «true»."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Show date in clock"
|
||||||
|
msgstr "Vis dato i klokken"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
|
msgstr "Viser dato i tillegg til tid i klokken hvis «true»."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "Bildefrekvens i bruk ved lagring av skjermvideoer."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
|
msgid ""
|
||||||
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
|
"screencast recorder in frames-per-second."
|
||||||
|
msgstr ""
|
||||||
|
"Bildefrekvensen i den ferdige skjermvideoen tatt opp med GNOME Shells "
|
||||||
|
"skjermvideoopptaker i bilder per sekund."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
|
msgstr "Gstreamer-kommandokø brukt til å kode skjermvideoen"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
#, fuzzy, no-c-format
|
#, fuzzy, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -95,27 +159,11 @@ msgstr ""
|
|||||||
"Setter GStreamer-rør som brukes til å kode opptak. Den følger syntaksen som "
|
"Setter GStreamer-rør som brukes til å kode opptak. Den følger syntaksen som "
|
||||||
"brukes for gst-launch. Røret må ha en..."
|
"brukes for gst-launch. Røret må ha en..."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "Show date in clock"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Vis dato i klokken"
|
msgstr "Filendelse i bruk ved lagring av skjermvideo"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Show the week date in the calendar"
|
|
||||||
msgstr "Vis dato for uken i kalender"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
|
||||||
msgid "Show time with seconds"
|
|
||||||
msgstr "Vis tid med sekunder"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
|
||||||
msgid ""
|
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
|
||||||
"favorites area."
|
|
||||||
msgstr ""
|
|
||||||
"Programmene som passer til disse identifikatorene vil bli vist i "
|
|
||||||
"favorittområdet."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -125,50 +173,6 @@ msgstr ""
|
|||||||
"og bruke denne filendelsen. Den bør endres når du gjør opptak til et nytt "
|
"og bruke denne filendelsen. Den bør endres når du gjør opptak til et nytt "
|
||||||
"oppbevaringsformat."
|
"oppbevaringsformat."
|
||||||
|
|
||||||
#: ../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."
|
|
||||||
msgstr ""
|
|
||||||
"Bildefrekvensen i den ferdige skjermvideoen tatt opp med GNOME Shells "
|
|
||||||
"skjermvideoopptaker i bilder per sekund."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
|
||||||
msgstr "Gstreamer-kommandokø brukt til å kode skjermvideoen"
|
|
||||||
|
|
||||||
#: ../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 "
|
|
||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
|
||||||
"remove already saved data."
|
|
||||||
msgstr ""
|
|
||||||
"GNOME Shell vil normalt holde øye med åpne programmer for å kunne vise de "
|
|
||||||
"mest bruke (for eksempel i oppstartsmenyer). Denne informasjonen vil bli "
|
|
||||||
"holdt privat, men du kan deaktivere denne lagringen av personvernårsaker. "
|
|
||||||
"Hvis du slår det av, vil det ikke fjerne allerede lagret informasjon."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr "Type tastatur som skal brukes."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
|
||||||
msgid "Uuids of extensions to enable"
|
|
||||||
msgstr "Uuider på utvidelser som skal slås på"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
|
||||||
msgstr "Om det skal samles statistikk om bruk av programmer"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
|
||||||
msgid "Which keyboard to use"
|
|
||||||
msgstr "Tastatur som skal brukes"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "OpenSearch tilbydere slått av"
|
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../js/gdm/loginDialog.js:623
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Økt …"
|
msgstr "Økt …"
|
||||||
@ -247,15 +251,15 @@ msgstr "PROGRAMMER"
|
|||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "INNSTILLINGER"
|
msgstr "INNSTILLINGER"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:664
|
#: ../js/ui/appDisplay.js:666
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nytt vindu"
|
msgstr "Nytt vindu"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:667
|
#: ../js/ui/appDisplay.js:669
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Fjern fra favoritter"
|
msgstr "Fjern fra favoritter"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:668
|
#: ../js/ui/appDisplay.js:670
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Legg til i favoritter"
|
msgstr "Legg til i favoritter"
|
||||||
|
|
||||||
@ -428,8 +432,8 @@ msgstr "Denne uken"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Neste uke"
|
msgstr "Neste uke"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:466
|
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:350
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:394
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukjent"
|
msgstr "Ukjent"
|
||||||
|
|
||||||
@ -453,7 +457,7 @@ msgstr "Frakoblet"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTER"
|
msgstr "KONTAKTER"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:169 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Fjern"
|
msgstr "Fjern"
|
||||||
|
|
||||||
@ -685,7 +689,7 @@ msgstr "Fjern demping"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Demp"
|
msgstr "Demp"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2424
|
#: ../js/ui/messageTray.js:2444
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformasjon"
|
msgstr "Systeminformasjon"
|
||||||
|
|
||||||
@ -770,37 +774,35 @@ msgstr "Nettverkspassord for mobilt bredbånd"
|
|||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "Et passord kreves for å koble til «%s»."
|
msgstr "Et passord kreves for å koble til «%s»."
|
||||||
|
|
||||||
#: ../js/ui/overview.js:89
|
#: ../js/ui/overview.js:90
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Angre"
|
msgstr "Angre"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:198
|
#: ../js/ui/overview.js:199
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Vinduer"
|
msgstr "Vinduer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:201
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:223
|
#: ../js/ui/overview.js:226
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Favoritter"
|
msgstr "Favoritter"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#: ../js/ui/panel.js:564
|
||||||
#: ../js/ui/panel.js:532
|
msgid "Quit"
|
||||||
#, c-format
|
msgstr "Avslutt"
|
||||||
msgid "Quit %s"
|
|
||||||
msgstr "Avslutt %s"
|
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:565
|
#: ../js/ui/panel.js:595
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktiviteter"
|
msgstr "Aktiviteter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:953
|
#: ../js/ui/panel.js:982
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Topp-panel"
|
msgstr "Topp-panel"
|
||||||
|
|
||||||
@ -850,7 +852,7 @@ msgstr "Passord:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:717
|
#: ../js/ui/popupMenu.js:719
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -932,6 +934,7 @@ msgstr "Stor tekst"
|
|||||||
#: ../js/ui/status/bluetooth.js:35 ../js/ui/status/bluetooth.js:258
|
#: ../js/ui/status/bluetooth.js:35 ../js/ui/status/bluetooth.js:258
|
||||||
#: ../js/ui/status/bluetooth.js:341 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:341 ../js/ui/status/bluetooth.js:371
|
||||||
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:436
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:436
|
||||||
|
#: ../js/ui/status/network.js:892
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -952,7 +955,7 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "Innstillinger for Bluetooth"
|
msgstr "Innstillinger for Bluetooth"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107
|
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:255
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "maskinvare slått av"
|
msgstr "maskinvare slått av"
|
||||||
|
|
||||||
@ -960,11 +963,11 @@ msgstr "maskinvare slått av"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Tilkobling"
|
msgstr "Tilkobling"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:475
|
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:490
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "kobler fra …"
|
msgstr "kobler fra …"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:481
|
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:496
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "kobler til …"
|
msgstr "kobler til …"
|
||||||
|
|
||||||
@ -1015,7 +1018,7 @@ msgstr "Alltid gi tilgang"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Gi tilgang kun denne ene gangen"
|
msgstr "Gi tilgang kun denne ene gangen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1181
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1168
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Avvis"
|
msgstr "Avvis"
|
||||||
|
|
||||||
@ -1068,75 +1071,75 @@ msgid "<unknown>"
|
|||||||
msgstr "<ukjent>"
|
msgstr "<ukjent>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:275
|
#: ../js/ui/status/network.js:277
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "slått av"
|
msgstr "slått av"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:473
|
#: ../js/ui/status/network.js:488
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "ikke håndtert"
|
msgstr "ikke håndtert"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:484
|
#: ../js/ui/status/network.js:499
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "autentisering kreves"
|
msgstr "autentisering kreves"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:494
|
#: ../js/ui/status/network.js:509
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "fastvare mangler"
|
msgstr "fastvare mangler"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:501
|
#: ../js/ui/status/network.js:516
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "kabel koblet fra"
|
msgstr "kabel koblet fra"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:506
|
#: ../js/ui/status/network.js:521
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "ikke tilgjengelig"
|
msgstr "ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:508
|
#: ../js/ui/status/network.js:523
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "tilkobling feilet"
|
msgstr "tilkobling feilet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:564 ../js/ui/status/network.js:1506
|
#: ../js/ui/status/network.js:584 ../js/ui/status/network.js:1504
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Mer …"
|
msgstr "Mer …"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:600 ../js/ui/status/network.js:1441
|
#: ../js/ui/status/network.js:620 ../js/ui/status/network.js:1439
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Tilkoblet (privat)"
|
msgstr "Tilkoblet (privat)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:675
|
#: ../js/ui/status/network.js:695
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Automatisk Ethernet"
|
msgstr "Automatisk Ethernet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:736
|
#: ../js/ui/status/network.js:756
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Automatisk bredbånd"
|
msgstr "Automatisk bredbånd"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:739
|
#: ../js/ui/status/network.js:759
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Automatisk oppringt"
|
msgstr "Automatisk oppringt"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:858 ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1451
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Automatisk %s"
|
msgstr "Automatisk %s"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:860
|
#: ../js/ui/status/network.js:880
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Automatisk Bluetooth"
|
msgstr "Automatisk Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1455
|
#: ../js/ui/status/network.js:1453
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Automatisk trådløst"
|
msgstr "Automatisk trådløst"
|
||||||
|
|
||||||
@ -1279,44 +1282,44 @@ msgstr "Mikrofon"
|
|||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:256
|
#: ../js/ui/telepathyClient.js:267
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Invitasjon"
|
msgstr "Invitasjon"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:324
|
#: ../js/ui/telepathyClient.js:335
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Ring"
|
msgstr "Ring"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:354
|
#: ../js/ui/telepathyClient.js:365
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Filoverføring"
|
msgstr "Filoverføring"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:435
|
#: ../js/ui/telepathyClient.js:446
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Forespørsel om abbonering"
|
msgstr "Forespørsel om abbonering"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:471
|
#: ../js/ui/telepathyClient.js:482
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Feil ved tilkobling"
|
msgstr "Feil ved tilkobling"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:735
|
#: ../js/ui/telepathyClient.js:740
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s er tilkoblet."
|
msgstr "%s er tilkoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:745
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s er frakoblet."
|
msgstr "%s er frakoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:743
|
#: ../js/ui/telepathyClient.js:748
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "«%s» er borte."
|
msgstr "«%s» er borte."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:746
|
#: ../js/ui/telepathyClient.js:751
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s er opptatt."
|
msgstr "%s er opptatt."
|
||||||
@ -1324,35 +1327,35 @@ msgstr "%s er opptatt."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:977
|
#: ../js/ui/telepathyClient.js:964
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:983
|
#: ../js/ui/telepathyClient.js:970
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:988
|
#: ../js/ui/telepathyClient.js:975
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1030
|
#: ../js/ui/telepathyClient.js:1017
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s er nå kjent som %s"
|
msgstr "%s er nå kjent som %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitasjon til %s"
|
msgstr "Invitasjon til %s"
|
||||||
@ -1360,35 +1363,35 @@ msgstr "Invitasjon til %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1140
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s inviterer deg til å bli med i %s"
|
msgstr "%s inviterer deg til å bli med i %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1142 ../js/ui/telepathyClient.js:1222
|
#: ../js/ui/telepathyClient.js:1129 ../js/ui/telepathyClient.js:1209
|
||||||
#: ../js/ui/telepathyClient.js:1320
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Avslå"
|
msgstr "Avslå"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1143 ../js/ui/telepathyClient.js:1223
|
#: ../js/ui/telepathyClient.js:1130 ../js/ui/telepathyClient.js:1210
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1308
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Godta"
|
msgstr "Godta"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1173
|
#: ../js/ui/telepathyClient.js:1160
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videosamtale fra %s"
|
msgstr "Videosamtale fra %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1176
|
#: ../js/ui/telepathyClient.js:1163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Samtale fra %s"
|
msgstr "Samtale fra %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1183
|
#: ../js/ui/telepathyClient.js:1170
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Svar"
|
msgstr "Svar"
|
||||||
|
|
||||||
@ -1397,110 +1400,110 @@ msgstr "Svar"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1216
|
#: ../js/ui/telepathyClient.js:1203
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s sender deg %s"
|
msgstr "%s sender deg %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1285
|
#: ../js/ui/telepathyClient.js:1272
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1378
|
#: ../js/ui/telepathyClient.js:1365
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Nettverksfeil"
|
msgstr "Nettverksfeil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1380
|
#: ../js/ui/telepathyClient.js:1367
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Autentisering feilet"
|
msgstr "Autentisering feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1382
|
#: ../js/ui/telepathyClient.js:1369
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Feil ved kryptering"
|
msgstr "Feil ved kryptering"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1384
|
#: ../js/ui/telepathyClient.js:1371
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Sertifikat ikke oppgitt"
|
msgstr "Sertifikat ikke oppgitt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1386
|
#: ../js/ui/telepathyClient.js:1373
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Stoler ikke på sertifikatet"
|
msgstr "Stoler ikke på sertifikatet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1388
|
#: ../js/ui/telepathyClient.js:1375
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Sertifikatet er utløpt"
|
msgstr "Sertifikatet er utløpt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1390
|
#: ../js/ui/telepathyClient.js:1377
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Sertifikatet er ikke aktivert"
|
msgstr "Sertifikatet er ikke aktivert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1392
|
#: ../js/ui/telepathyClient.js:1379
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Feil vertsnavn for sertifikat"
|
msgstr "Feil vertsnavn for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1394
|
#: ../js/ui/telepathyClient.js:1381
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Feil fingeravtrykk for sertifikat"
|
msgstr "Feil fingeravtrykk for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1396
|
#: ../js/ui/telepathyClient.js:1383
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Sertifikatet er selvsignert"
|
msgstr "Sertifikatet er selvsignert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1398
|
#: ../js/ui/telepathyClient.js:1385
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Status er satt til frakoblet"
|
msgstr "Status er satt til frakoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1400
|
#: ../js/ui/telepathyClient.js:1387
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Kryptering er ikke tilgjengelig"
|
msgstr "Kryptering er ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1402
|
#: ../js/ui/telepathyClient.js:1389
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Sertifikatet er ugyldig"
|
msgstr "Sertifikatet er ugyldig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1404
|
#: ../js/ui/telepathyClient.js:1391
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Tilkobling ble nektet"
|
msgstr "Tilkobling ble nektet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1406
|
#: ../js/ui/telepathyClient.js:1393
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Tilkobling kan ikke etableres"
|
msgstr "Tilkobling kan ikke etableres"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1408
|
#: ../js/ui/telepathyClient.js:1395
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Tilkobling tapt"
|
msgstr "Tilkobling tapt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1410
|
#: ../js/ui/telepathyClient.js:1397
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Denne ressursen er allerede koblet til tjeneren"
|
msgstr "Denne ressursen er allerede koblet til tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1412
|
#: ../js/ui/telepathyClient.js:1399
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1414
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Kontoen eksisterer allerede på tjeneren"
|
msgstr "Kontoen eksisterer allerede på tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1416
|
#: ../js/ui/telepathyClient.js:1403
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1418
|
#: ../js/ui/telepathyClient.js:1405
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Sertifikatet er tilbaketrukket"
|
msgstr "Sertifikatet er tilbaketrukket"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1420
|
#: ../js/ui/telepathyClient.js:1407
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1422
|
#: ../js/ui/telepathyClient.js:1409
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1510,20 +1513,20 @@ msgstr ""
|
|||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1432
|
#: ../js/ui/telepathyClient.js:1419
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Tilkobling til %s feilet"
|
msgstr "Tilkobling til %s feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1441
|
#: ../js/ui/telepathyClient.js:1428
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Koble til på nytt"
|
msgstr "Koble til på nytt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1442
|
#: ../js/ui/telepathyClient.js:1429
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Rediger konto"
|
msgstr "Rediger konto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1488
|
#: ../js/ui/telepathyClient.js:1475
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Ukjent årsak"
|
msgstr "Ukjent årsak"
|
||||||
|
|
||||||
@ -1592,6 +1595,24 @@ msgstr "Skriv for å søke …"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Søk"
|
msgstr "Søk"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:124
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Sorry, no wisdom for you today:\n"
|
||||||
|
"%s"
|
||||||
|
msgstr ""
|
||||||
|
"Beklager, ingen visdom til deg i dag:\n"
|
||||||
|
"%s"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:128
|
||||||
|
#, c-format
|
||||||
|
msgid "%s the Oracle says"
|
||||||
|
msgstr "Orakelet sier %s"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:168
|
||||||
|
msgid "Your favorite Easter Egg"
|
||||||
|
msgstr "Favorittpåskeegget ditt"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:33
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
@ -1619,15 +1640,15 @@ msgstr[1] "%u innganger"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemlyder"
|
msgstr "Systemlyder"
|
||||||
|
|
||||||
#: ../src/main.c:508
|
#: ../src/main.c:262
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Skriv ut versjon"
|
msgstr "Skriv ut versjon"
|
||||||
|
|
||||||
#: ../src/main.c:514
|
#: ../src/main.c:268
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modus som brukes av GDM for innloggingsskjermen"
|
msgstr "Modus som brukes av GDM for innloggingsskjermen"
|
||||||
|
|
||||||
#: ../src/shell-app.c:567
|
#: ../src/shell-app.c:639
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Klarte ikke å starte «%s»"
|
msgstr "Klarte ikke å starte «%s»"
|
||||||
|
333
po/sl.po
333
po/sl.po
@ -2,14 +2,14 @@
|
|||||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
#
|
#
|
||||||
# Matej Urbančič <mateju@svn.gnome.org>, 2009 - 2011.
|
# Matej Urbančič <mateju@svn.gnome.org>, 2009 - 2012.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-11-24 08:51+0000\n"
|
"POT-Creation-Date: 2012-01-15 01:35+0000\n"
|
||||||
"PO-Revision-Date: 2011-11-25 20:55+0100\n"
|
"PO-Revision-Date: 2012-01-15 13:44+0100\n"
|
||||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||||
"Language: Slovenian\n"
|
"Language: Slovenian\n"
|
||||||
@ -130,50 +130,50 @@ msgstr "Katera tipkovnica naj bo uporabljena?"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "ponudniki OpenSearch so bili onemogočeni"
|
msgstr "ponudniki OpenSearch so bili onemogočeni"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../js/gdm/loginDialog.js:624
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Seja ..."
|
msgstr "Seja ..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:786
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prijava"
|
msgstr "Prijava"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:831
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ali pa povlecite prst)"
|
msgstr "(ali pa povlecite prst)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:852
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ali je ni na seznamu?"
|
msgstr "Ali je ni na seznamu?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019
|
#: ../js/gdm/loginDialog.js:1020
|
||||||
#: ../js/ui/endSessionDialog.js:418
|
#: ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/extensionSystem.js:516
|
#: ../js/ui/extensionSystem.js:516
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:145
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||||
#: ../js/ui/status/bluetooth.js:463
|
#: ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Prekliči"
|
msgstr "Prekliči"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1025
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prijava"
|
msgstr "Prijava"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1376
|
#: ../js/gdm/loginDialog.js:1377
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Prijavno okno"
|
msgstr "Prijavno okno"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113
|
#: ../js/gdm/powerMenu.js:113
|
||||||
#: ../js/ui/userMenu.js:578
|
#: ../js/ui/userMenu.js:579
|
||||||
#: ../js/ui/userMenu.js:580
|
#: ../js/ui/userMenu.js:581
|
||||||
#: ../js/ui/userMenu.js:649
|
#: ../js/ui/userMenu.js:650
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Zaustavi"
|
msgstr "Zaustavi"
|
||||||
|
|
||||||
@ -213,15 +213,15 @@ msgstr "Programi"
|
|||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "NASTAVITVE"
|
msgstr "NASTAVITVE"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:664
|
#: ../js/ui/appDisplay.js:666
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Novo okno"
|
msgstr "Novo okno"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:667
|
#: ../js/ui/appDisplay.js:669
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Odstrani iz priljubljenih"
|
msgstr "Odstrani iz priljubljenih"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:668
|
#: ../js/ui/appDisplay.js:670
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Dodaj med priljubljene"
|
msgstr "Dodaj med priljubljene"
|
||||||
|
|
||||||
@ -395,9 +395,9 @@ msgid "Next week"
|
|||||||
msgstr "Naslednji teden"
|
msgstr "Naslednji teden"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63
|
#: ../js/ui/contactDisplay.js:63
|
||||||
#: ../js/ui/notificationDaemon.js:466
|
#: ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215
|
#: ../js/ui/status/power.js:215
|
||||||
#: ../src/shell-app.c:350
|
#: ../src/shell-app.c:394
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Neznano"
|
msgstr "Neznano"
|
||||||
|
|
||||||
@ -424,7 +424,7 @@ msgstr "Nepovezano"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "Stiki"
|
msgstr "Stiki"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:169
|
#: ../js/ui/dash.js:229
|
||||||
#: ../js/ui/messageTray.js:1204
|
#: ../js/ui/messageTray.js:1204
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Odstrani"
|
msgstr "Odstrani"
|
||||||
@ -665,7 +665,7 @@ msgstr "Povrni glasnost"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Utišaj"
|
msgstr "Utišaj"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2424
|
#: ../js/ui/messageTray.js:2444
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Podrobnosti sistema"
|
msgstr "Podrobnosti sistema"
|
||||||
|
|
||||||
@ -749,15 +749,15 @@ msgstr "Geslo mobilnega širokopasovnega dostopa"
|
|||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "Za povezavo z omrežjem '%s' je zahtevano geslo."
|
msgstr "Za povezavo z omrežjem '%s' je zahtevano geslo."
|
||||||
|
|
||||||
#: ../js/ui/overview.js:89
|
#: ../js/ui/overview.js:90
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Razveljavi"
|
msgstr "Razveljavi"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:201
|
#: ../js/ui/overview.js:199
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Okna"
|
msgstr "Okna"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:204
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programi"
|
msgstr "Programi"
|
||||||
|
|
||||||
@ -767,19 +767,17 @@ msgstr "Programi"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Armaturna plošča"
|
msgstr "Armaturna plošča"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#: ../js/ui/panel.js:564
|
||||||
#: ../js/ui/panel.js:532
|
msgid "Quit"
|
||||||
#, c-format
|
msgstr "Končaj"
|
||||||
msgid "Quit %s"
|
|
||||||
msgstr "Končaj %s"
|
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:565
|
#: ../js/ui/panel.js:595
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Dejavnosti"
|
msgstr "Dejavnosti"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:953
|
#: ../js/ui/panel.js:982
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Vrhnja vrstica"
|
msgstr "Vrhnja vrstica"
|
||||||
|
|
||||||
@ -796,7 +794,7 @@ msgstr "Poskusi znova"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Povezava z ..."
|
msgstr "Povezava z ..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:364
|
#: ../js/ui/placeDisplay.js:367
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "Mesta in naprave"
|
msgstr "Mesta in naprave"
|
||||||
|
|
||||||
@ -829,7 +827,7 @@ msgstr "Geslo:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:717
|
#: ../js/ui/popupMenu.js:719
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -908,137 +906,139 @@ msgstr "Visok kontrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Veliko besedilo"
|
msgstr "Veliko besedilo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:36
|
#: ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:259
|
#: ../js/ui/status/bluetooth.js:258
|
||||||
#: ../js/ui/status/bluetooth.js:342
|
#: ../js/ui/status/bluetooth.js:341
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:371
|
||||||
#: ../js/ui/status/bluetooth.js:408
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
#: ../js/ui/status/bluetooth.js:437
|
#: ../js/ui/status/bluetooth.js:436
|
||||||
|
#: ../js/ui/status/network.js:892
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:49
|
#: ../js/ui/status/bluetooth.js:48
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr "Vidnost"
|
msgstr "Vidnost"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:63
|
#: ../js/ui/status/bluetooth.js:62
|
||||||
msgid "Send Files to Device..."
|
msgid "Send Files to Device..."
|
||||||
msgstr "Pošilji datoteke na napravo ..."
|
msgstr "Pošilji datoteke na napravo ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:64
|
#: ../js/ui/status/bluetooth.js:63
|
||||||
msgid "Set up a New Device..."
|
msgid "Set up a New Device..."
|
||||||
msgstr "Nastavitev nove naprave ..."
|
msgstr "Nastavitev nove naprave ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:88
|
#: ../js/ui/status/bluetooth.js:87
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Nastavitve za Bluetooth"
|
msgstr "Nastavitve za Bluetooth"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:108
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
|
#: ../js/ui/status/network.js:255
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "strojno onemogočen"
|
msgstr "strojno onemogočen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:204
|
#: ../js/ui/status/bluetooth.js:203
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Povezava"
|
msgstr "Povezava"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:215
|
#: ../js/ui/status/bluetooth.js:214
|
||||||
#: ../js/ui/status/network.js:475
|
#: ../js/ui/status/network.js:490
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "prekinjanje povezave ..."
|
msgstr "prekinjanje povezave ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:227
|
||||||
#: ../js/ui/status/network.js:481
|
#: ../js/ui/status/network.js:496
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "povezovanje ..."
|
msgstr "povezovanje ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:246
|
#: ../js/ui/status/bluetooth.js:245
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Pošlji datoteke ..."
|
msgstr "Pošlji datoteke ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:250
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Brskanje datotek ..."
|
msgstr "Brskanje datotek ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:260
|
#: ../js/ui/status/bluetooth.js:259
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Napaka med brskanjem po napravi"
|
msgstr "Napaka med brskanjem po napravi"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:261
|
#: ../js/ui/status/bluetooth.js:260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Po zahtevani naprave ni mogoče brskati, napaka je '%s'"
|
msgstr "Po zahtevani naprave ni mogoče brskati, napaka je '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:269
|
#: ../js/ui/status/bluetooth.js:268
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Nastavitve tipkovnice"
|
msgstr "Nastavitve tipkovnice"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:272
|
#: ../js/ui/status/bluetooth.js:271
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Nastavitve miške"
|
msgstr "Nastavitve miške"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:277
|
#: ../js/ui/status/bluetooth.js:276
|
||||||
#: ../js/ui/status/volume.js:58
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Nastavitve zvoka"
|
msgstr "Nastavitve zvoka"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:373
|
#: ../js/ui/status/bluetooth.js:372
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Zahteva za pooblastitev od %s"
|
msgstr "Zahteva za pooblastitev od %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:379
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Naprava %s želi dostop do storitve '%s'."
|
msgstr "Naprava %s želi dostop do storitve '%s'."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:380
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Vedno odobri dostop"
|
msgstr "Vedno odobri dostop"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:381
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Odobri le tokrat"
|
msgstr "Odobri le tokrat"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:383
|
#: ../js/ui/status/bluetooth.js:382
|
||||||
#: ../js/ui/telepathyClient.js:1181
|
#: ../js/ui/telepathyClient.js:1098
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Zavrni"
|
msgstr "Zavrni"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:409
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Potrditev razčlenjevanja za %s"
|
msgstr "Potrditev razčlenjevanja za %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:415
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:444
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Naprava %s se poskuša seznaniti s tem računalnikom"
|
msgstr "Naprava %s se poskuša seznaniti s tem računalnikom"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:416
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Potrdite, ali se PIN '%s' ujema s tistim na napravi."
|
msgstr "Potrdite, ali se PIN '%s' ujema s tistim na napravi."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Ujemanja"
|
msgstr "Ujemanja"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Se ne ujema"
|
msgstr "Se ne ujema"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:438
|
#: ../js/ui/status/bluetooth.js:437
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Zahteva razčlenjevanja za %s"
|
msgstr "Zahteva razčlenjevanja za %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:446
|
#: ../js/ui/status/bluetooth.js:445
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Vnesite PIN, ki je naveden na napravi."
|
msgstr "Vnesite PIN, ki je naveden na napravi."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/status/bluetooth.js:461
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "V redu"
|
msgstr "V redu"
|
||||||
|
|
||||||
@ -1055,78 +1055,78 @@ msgid "<unknown>"
|
|||||||
msgstr "<neznano>"
|
msgstr "<neznano>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:275
|
#: ../js/ui/status/network.js:277
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "onemogočeno"
|
msgstr "onemogočeno"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:473
|
#: ../js/ui/status/network.js:488
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "neupravljano"
|
msgstr "neupravljano"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:484
|
#: ../js/ui/status/network.js:499
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "zahtevana je overitev"
|
msgstr "zahtevana je overitev"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:494
|
#: ../js/ui/status/network.js:509
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "manjka strojna programska oprema"
|
msgstr "manjka strojna programska oprema"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:501
|
#: ../js/ui/status/network.js:516
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "kabel ni priklopljen"
|
msgstr "kabel ni priklopljen"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:506
|
#: ../js/ui/status/network.js:521
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "ni na voljo"
|
msgstr "ni na voljo"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:508
|
#: ../js/ui/status/network.js:523
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "povezovanje je spodletelo"
|
msgstr "povezovanje je spodletelo"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:564
|
#: ../js/ui/status/network.js:584
|
||||||
#: ../js/ui/status/network.js:1506
|
#: ../js/ui/status/network.js:1504
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Več ..."
|
msgstr "Več ..."
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:600
|
#: ../js/ui/status/network.js:620
|
||||||
#: ../js/ui/status/network.js:1441
|
#: ../js/ui/status/network.js:1439
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Povezano (zasebna povezava)"
|
msgstr "Povezano (zasebna povezava)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:675
|
#: ../js/ui/status/network.js:695
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Samodejni eternet"
|
msgstr "Samodejni eternet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:736
|
#: ../js/ui/status/network.js:756
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Samodejni širokopasovni dostop"
|
msgstr "Samodejni širokopasovni dostop"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:739
|
#: ../js/ui/status/network.js:759
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Samodejni klicni dostop"
|
msgstr "Samodejni klicni dostop"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:858
|
#: ../js/ui/status/network.js:878
|
||||||
#: ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:1451
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Samodejna povezava z %s"
|
msgstr "Samodejna povezava z %s"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:860
|
#: ../js/ui/status/network.js:880
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Samodejna povezava z Bluetooth"
|
msgstr "Samodejna povezava z Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1455
|
#: ../js/ui/status/network.js:1453
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Samodejni brezžični dostop"
|
msgstr "Samodejni brezžični dostop"
|
||||||
|
|
||||||
@ -1275,47 +1275,46 @@ msgstr "Glasnost"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:256
|
#: ../js/ui/telepathyClient.js:225
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Povabilo"
|
msgstr "Povabilo"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:324
|
#: ../js/ui/telepathyClient.js:278
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Pokliči"
|
msgstr "Pokliči"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:354
|
#: ../js/ui/telepathyClient.js:294
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Prenos datotek"
|
msgstr "Prenos datotek"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:435
|
#: ../js/ui/telepathyClient.js:376
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Zahteva po naročilu"
|
msgstr "Zahteva po naročilu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:471
|
#: ../js/ui/telepathyClient.js:412
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Napaka povezovanja"
|
msgstr "Napaka povezovanja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:735
|
#: ../js/ui/telepathyClient.js:670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s je povezan."
|
msgstr "%s je povezan."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s ni povezan."
|
msgstr "%s ni povezan."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:743
|
#: ../js/ui/telepathyClient.js:678
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s je odsoten."
|
msgstr "%s je odsoten."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:746
|
#: ../js/ui/telepathyClient.js:681
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s je zaposlen."
|
msgstr "%s je zaposlen."
|
||||||
@ -1323,35 +1322,35 @@ msgstr "%s je zaposlen."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:977
|
#: ../js/ui/telepathyClient.js:894
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Poslano <b>%A</b> ob <b>%X</b>"
|
msgstr "Poslano <b>%A</b> ob <b>%X</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:983
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Poslano <b>%A</b>, <b>%d. %Ba</b>"
|
msgstr "Poslano <b>%A</b>, <b>%d. %Ba</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:988
|
#: ../js/ui/telepathyClient.js:905
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Poslano <b>%A</b>, <b>%d. %Ba</b>, %Y"
|
msgstr "Poslano <b>%A</b>, <b>%d. %Ba</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1030
|
#: ../js/ui/telepathyClient.js:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s je sedaj znan kot v %s"
|
msgstr "%s je sedaj znan kot v %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1049
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Povabilo v %s"
|
msgstr "Povabilo v %s"
|
||||||
@ -1359,37 +1358,37 @@ msgstr "Povabilo v %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1140
|
#: ../js/ui/telepathyClient.js:1057
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s vas vabi, da se pridružite v %s"
|
msgstr "%s vas vabi, da se pridružite v %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1142
|
#: ../js/ui/telepathyClient.js:1059
|
||||||
#: ../js/ui/telepathyClient.js:1222
|
#: ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1320
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Zavrni"
|
msgstr "Zavrni"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1143
|
#: ../js/ui/telepathyClient.js:1060
|
||||||
#: ../js/ui/telepathyClient.js:1223
|
#: ../js/ui/telepathyClient.js:1140
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1238
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Sprejmi"
|
msgstr "Sprejmi"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1173
|
#: ../js/ui/telepathyClient.js:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s želi vzpostaviti video klic"
|
msgstr "%s želi vzpostaviti video klic"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1176
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s kliče"
|
msgstr "%s kliče"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1183
|
#: ../js/ui/telepathyClient.js:1100
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Odgovori"
|
msgstr "Odgovori"
|
||||||
|
|
||||||
@ -1398,125 +1397,125 @@ msgstr "Odgovori"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1216
|
#: ../js/ui/telepathyClient.js:1133
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s pošilja %s"
|
msgstr "%s pošilja %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1285
|
#: ../js/ui/telepathyClient.js:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s želi dovoljenje za pogled dosegljivosti"
|
msgstr "%s želi dovoljenje za pogled dosegljivosti"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1378
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Napaka omrežja"
|
msgstr "Napaka omrežja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1380
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Overitev je spodletela"
|
msgstr "Overitev je spodletela"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1382
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Napaka šifriranja"
|
msgstr "Napaka šifriranja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1384
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Potrdilo ni na voljo"
|
msgstr "Potrdilo ni na voljo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1386
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Potrdilo ni zaupljivo"
|
msgstr "Potrdilo ni zaupljivo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1388
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Potrdilo je preteklo"
|
msgstr "Potrdilo je preteklo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1390
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Potrdilo ni potrjeno"
|
msgstr "Potrdilo ni potrjeno"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1392
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Neustrezno ime gostitelja potrdila"
|
msgstr "Neustrezno ime gostitelja potrdila"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1394
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Neustrezen prstni odtis potrdila"
|
msgstr "Neustrezen prstni odtis potrdila"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1396
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Potrdilo je samo-podpisano"
|
msgstr "Potrdilo je samo-podpisano"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1398
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Stanje je nastavljeno na brez povezave"
|
msgstr "Stanje je nastavljeno na brez povezave"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1400
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Šifriranje ni na voljo."
|
msgstr "Šifriranje ni na voljo."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1402
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Potrdilo je neveljavno."
|
msgstr "Potrdilo je neveljavno."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1404
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Povezava je zavrnjena."
|
msgstr "Povezava je zavrnjena."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1406
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Povezave ni mogoče vzpostaviti."
|
msgstr "Povezave ni mogoče vzpostaviti."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1408
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Povezava je prekinjena."
|
msgstr "Povezava je prekinjena."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1410
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Vir je s strežnikom že povezan"
|
msgstr "Vir je s strežnikom že povezan"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1412
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Connection has been replaced by a new connection using the same resource"
|
msgid "Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir."
|
msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1414
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Račun na strežniku že obstaja"
|
msgstr "Račun na strežniku že obstaja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1416
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo."
|
msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1418
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Potrdilo je preklicano"
|
msgstr "Potrdilo je preklicano"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1420
|
#: ../js/ui/telepathyClient.js:1337
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje."
|
msgstr "Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1422
|
#: ../js/ui/telepathyClient.js:1339
|
||||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr "Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, ki je določena s šifrirno knjižnico."
|
msgstr "Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, ki je določena s šifrirno knjižnico."
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1432
|
#: ../js/ui/telepathyClient.js:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Povezava z %s je spodletela"
|
msgstr "Povezava z %s je spodletela"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1441
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Ponovno se poveži"
|
msgstr "Ponovno se poveži"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1442
|
#: ../js/ui/telepathyClient.js:1359
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Uredi račun"
|
msgstr "Uredi račun"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1488
|
#: ../js/ui/telepathyClient.js:1405
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Neznan vzrok"
|
msgstr "Neznan vzrok"
|
||||||
|
|
||||||
@ -1532,41 +1531,41 @@ msgstr "Nedejavno"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nedostopno"
|
msgstr "Nedostopno"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:576
|
#: ../js/ui/userMenu.js:577
|
||||||
#: ../js/ui/userMenu.js:580
|
#: ../js/ui/userMenu.js:581
|
||||||
#: ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:651
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Izklop ..."
|
msgstr "Izklop ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:613
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Obvestila"
|
msgstr "Obvestila"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:621
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Spletni računi"
|
msgstr "Spletni računi"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:624
|
#: ../js/ui/userMenu.js:625
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Sistemske nastavitve"
|
msgstr "Sistemske nastavitve"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:632
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Zakleni zaslon"
|
msgstr "Zakleni zaslon"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:636
|
#: ../js/ui/userMenu.js:637
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Preklopi uporabnika"
|
msgstr "Preklopi uporabnika"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:642
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Odjava ..."
|
msgstr "Odjava ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:670
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:671
|
||||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||||
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
||||||
|
|
||||||
@ -1583,6 +1582,24 @@ msgstr "Vtipkajte za iskanje ..."
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Poišči"
|
msgstr "Poišči"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:124
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Sorry, no wisdom for you today:\n"
|
||||||
|
"%s"
|
||||||
|
msgstr ""
|
||||||
|
"Za danes ni modrosti:\n"
|
||||||
|
"%s"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:128
|
||||||
|
#, c-format
|
||||||
|
msgid "%s the Oracle says"
|
||||||
|
msgstr "Riba %s pravi"
|
||||||
|
|
||||||
|
#: ../js/ui/wanda.js:168
|
||||||
|
msgid "Your favorite Easter Egg"
|
||||||
|
msgstr "Vaše priljubljeno velikonočno jajce"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:33
|
#: ../js/ui/windowAttentionHandler.js:33
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
@ -1614,15 +1631,15 @@ msgstr[3] "%u dovodi naprave"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sistemski zvoki"
|
msgstr "Sistemski zvoki"
|
||||||
|
|
||||||
#: ../src/main.c:508
|
#: ../src/main.c:262
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Izpiši različico"
|
msgstr "Izpiši različico"
|
||||||
|
|
||||||
#: ../src/main.c:514
|
#: ../src/main.c:268
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Način uporabljen v GDM za prijavni naslov"
|
msgstr "Način uporabljen v GDM za prijavni naslov"
|
||||||
|
|
||||||
#: ../src/shell-app.c:567
|
#: ../src/shell-app.c:639
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Zaganjanje '%s' je spodletelo"
|
msgstr "Zaganjanje '%s' je spodletelo"
|
||||||
|
@ -114,10 +114,7 @@ sniff_async_ready_cb (GObject *source,
|
|||||||
{
|
{
|
||||||
InvocationData *data = user_data;
|
InvocationData *data = user_data;
|
||||||
gchar **types;
|
gchar **types;
|
||||||
gint idx;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GVariantBuilder *builder;
|
|
||||||
GVariant *result;
|
|
||||||
|
|
||||||
types = shell_mime_sniffer_sniff_finish (SHELL_MIME_SNIFFER (source),
|
types = shell_mime_sniffer_sniff_finish (SHELL_MIME_SNIFFER (source),
|
||||||
res, &error);
|
res, &error);
|
||||||
@ -129,16 +126,8 @@ sniff_async_ready_cb (GObject *source,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
|
g_dbus_method_invocation_return_value (data->invocation,
|
||||||
|
g_variant_new ("(^as)", types));
|
||||||
for (idx = 0; types[idx] != NULL; idx++)
|
|
||||||
g_variant_builder_add (builder, "s", types[idx]);
|
|
||||||
|
|
||||||
result = g_variant_new ("(as)", builder);
|
|
||||||
g_dbus_method_invocation_return_value (data->invocation, result);
|
|
||||||
|
|
||||||
g_variant_unref (result);
|
|
||||||
g_variant_builder_unref (builder);
|
|
||||||
g_strfreev (types);
|
g_strfreev (types);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
265
src/shell-app.c
265
src/shell-app.c
@ -40,13 +40,8 @@ typedef struct {
|
|||||||
gboolean window_sort_stale : 1;
|
gboolean window_sort_stale : 1;
|
||||||
|
|
||||||
/* See GApplication documentation */
|
/* See GApplication documentation */
|
||||||
gint name_watcher_id;
|
GDBusMenuModel *remote_menu;
|
||||||
gchar *dbus_name;
|
|
||||||
GDBusProxy *app_proxy;
|
|
||||||
GActionGroup *remote_actions;
|
|
||||||
GMenuModel *remote_menu;
|
|
||||||
GActionMuxer *muxer;
|
GActionMuxer *muxer;
|
||||||
GCancellable *dbus_cancellable;
|
|
||||||
} ShellAppRunningState;
|
} ShellAppRunningState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -99,14 +94,8 @@ enum {
|
|||||||
static guint shell_app_signals[LAST_SIGNAL] = { 0 };
|
static guint shell_app_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
static void create_running_state (ShellApp *app);
|
static void create_running_state (ShellApp *app);
|
||||||
|
static void setup_running_state (ShellApp *app, MetaWindow *window);
|
||||||
static void unref_running_state (ShellAppRunningState *state);
|
static void unref_running_state (ShellAppRunningState *state);
|
||||||
static void on_dbus_name_appeared (GDBusConnection *bus,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *name_owner,
|
|
||||||
gpointer user_data);
|
|
||||||
static void on_dbus_name_disappeared (GDBusConnection *bus,
|
|
||||||
const gchar *name,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (ShellApp, shell_app, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (ShellApp, shell_app, G_TYPE_OBJECT)
|
||||||
|
|
||||||
@ -126,9 +115,6 @@ shell_app_get_property (GObject *gobject,
|
|||||||
case PROP_ID:
|
case PROP_ID:
|
||||||
g_value_set_string (value, shell_app_get_id (app));
|
g_value_set_string (value, shell_app_get_id (app));
|
||||||
break;
|
break;
|
||||||
case PROP_DBUS_ID:
|
|
||||||
g_value_set_string (value, shell_app_get_dbus_id (app));
|
|
||||||
break;
|
|
||||||
case PROP_ACTION_GROUP:
|
case PROP_ACTION_GROUP:
|
||||||
if (app->running_state)
|
if (app->running_state)
|
||||||
g_value_set_object (value, app->running_state->muxer);
|
g_value_set_object (value, app->running_state->muxer);
|
||||||
@ -186,15 +172,6 @@ window_backed_app_get_icon (ShellApp *app,
|
|||||||
return actor;
|
return actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
|
||||||
shell_app_get_dbus_id (ShellApp *app)
|
|
||||||
{
|
|
||||||
if (app->running_state)
|
|
||||||
return app->running_state->dbus_name;
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_create_icon_texture:
|
* shell_app_create_icon_texture:
|
||||||
*
|
*
|
||||||
@ -563,7 +540,7 @@ shell_app_update_window_actions (ShellApp *app, MetaWindow *window)
|
|||||||
{
|
{
|
||||||
const char *object_path;
|
const char *object_path;
|
||||||
|
|
||||||
object_path = meta_window_get_dbus_object_path (window);
|
object_path = meta_window_get_gtk_window_object_path (window);
|
||||||
if (object_path != NULL)
|
if (object_path != NULL)
|
||||||
{
|
{
|
||||||
GActionGroup *actions;
|
GActionGroup *actions;
|
||||||
@ -571,8 +548,8 @@ shell_app_update_window_actions (ShellApp *app, MetaWindow *window)
|
|||||||
actions = g_object_get_data (G_OBJECT (window), "actions");
|
actions = g_object_get_data (G_OBJECT (window), "actions");
|
||||||
if (actions == NULL)
|
if (actions == NULL)
|
||||||
{
|
{
|
||||||
actions = G_ACTION_GROUP (g_dbus_action_group_get (g_dbus_proxy_get_connection (app->running_state->app_proxy),
|
actions = G_ACTION_GROUP (g_dbus_action_group_get (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL),
|
||||||
meta_window_get_dbus_unique_name (window),
|
meta_window_get_gtk_unique_bus_name (window),
|
||||||
object_path));
|
object_path));
|
||||||
g_object_set_data_full (G_OBJECT (window), "actions", actions, g_object_unref);
|
g_object_set_data_full (G_OBJECT (window), "actions", actions, g_object_unref);
|
||||||
}
|
}
|
||||||
@ -975,34 +952,6 @@ shell_app_on_ws_switch (MetaScreen *screen,
|
|||||||
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
on_dbus_application_id_changed (MetaWindow *window,
|
|
||||||
GParamSpec *pspec,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
const char *appid;
|
|
||||||
ShellApp *app = SHELL_APP (user_data);
|
|
||||||
|
|
||||||
/* Ignore changes in the appid after it's set, shouldn't happen */
|
|
||||||
if (app->running_state->dbus_name != NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
appid = meta_window_get_dbus_application_id (window);
|
|
||||||
|
|
||||||
if (!appid)
|
|
||||||
return;
|
|
||||||
|
|
||||||
g_assert (app->running_state != NULL);
|
|
||||||
app->running_state->dbus_name = g_strdup (appid);
|
|
||||||
app->running_state->name_watcher_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
|
|
||||||
appid,
|
|
||||||
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
|
||||||
on_dbus_name_appeared,
|
|
||||||
on_dbus_name_disappeared,
|
|
||||||
g_object_ref (app),
|
|
||||||
g_object_unref);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_shell_app_add_window (ShellApp *app,
|
_shell_app_add_window (ShellApp *app,
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
@ -1020,12 +969,11 @@ _shell_app_add_window (ShellApp *app,
|
|||||||
g_signal_connect (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app);
|
g_signal_connect (window, "unmanaged", G_CALLBACK(shell_app_on_unmanaged), app);
|
||||||
g_signal_connect (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app);
|
g_signal_connect (window, "notify::user-time", G_CALLBACK(shell_app_on_user_time_changed), app);
|
||||||
|
|
||||||
|
setup_running_state (app, window);
|
||||||
|
|
||||||
if (app->state != SHELL_APP_STATE_STARTING)
|
if (app->state != SHELL_APP_STATE_STARTING)
|
||||||
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
||||||
|
|
||||||
g_signal_connect (window, "notify::dbus-application-id", G_CALLBACK(on_dbus_application_id_changed), app);
|
|
||||||
on_dbus_application_id_changed (window, NULL, app);
|
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (app));
|
g_object_thaw_notify (G_OBJECT (app));
|
||||||
|
|
||||||
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
||||||
@ -1042,7 +990,6 @@ _shell_app_remove_window (ShellApp *app,
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_unmanaged), app);
|
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_unmanaged), app);
|
||||||
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_user_time_changed), app);
|
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_user_time_changed), app);
|
||||||
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(on_dbus_application_id_changed), app);
|
|
||||||
g_object_unref (window);
|
g_object_unref (window);
|
||||||
app->running_state->windows = g_slist_remove (app->running_state->windows, window);
|
app->running_state->windows = g_slist_remove (app->running_state->windows, window);
|
||||||
|
|
||||||
@ -1052,137 +999,6 @@ _shell_app_remove_window (ShellApp *app,
|
|||||||
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
on_dbus_proxy_gotten (GObject *initable,
|
|
||||||
GAsyncResult *result,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
ShellApp *self = SHELL_APP (user_data);
|
|
||||||
ShellAppRunningState *state = self->running_state;
|
|
||||||
GError *error = NULL;
|
|
||||||
GVariant *menu_property;
|
|
||||||
|
|
||||||
state->app_proxy = g_dbus_proxy_new_finish (result,
|
|
||||||
&error);
|
|
||||||
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
|
|
||||||
!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD))
|
|
||||||
{
|
|
||||||
g_warning ("Unexpected error while creating application proxy: %s", error->message);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_clear_object (&state->dbus_cancellable);
|
|
||||||
|
|
||||||
if (state->name_watcher_id)
|
|
||||||
{
|
|
||||||
g_bus_unwatch_name (state->name_watcher_id);
|
|
||||||
state->name_watcher_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (state->dbus_name);
|
|
||||||
state->dbus_name = NULL;
|
|
||||||
|
|
||||||
g_object_unref (self);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* on to the second step, the primary action group */
|
|
||||||
|
|
||||||
state->remote_actions = (GActionGroup*)g_dbus_action_group_get (
|
|
||||||
g_dbus_proxy_get_connection (state->app_proxy),
|
|
||||||
g_dbus_proxy_get_name (state->app_proxy),
|
|
||||||
g_dbus_proxy_get_object_path (state->app_proxy));
|
|
||||||
|
|
||||||
if (!state->muxer)
|
|
||||||
state->muxer = g_action_muxer_new ();
|
|
||||||
|
|
||||||
g_action_muxer_insert (state->muxer, "app", state->remote_actions);
|
|
||||||
g_strfreev (g_action_group_list_actions (state->remote_actions));
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), "action-group");
|
|
||||||
|
|
||||||
menu_property = g_dbus_proxy_get_cached_property (state->app_proxy, "AppMenu");
|
|
||||||
|
|
||||||
if (menu_property && g_variant_n_children (menu_property) > 0)
|
|
||||||
{
|
|
||||||
const gchar *object_path;
|
|
||||||
|
|
||||||
g_variant_get_child (menu_property, 0, "&o", &object_path);
|
|
||||||
|
|
||||||
state->remote_menu = G_MENU_MODEL (g_dbus_menu_model_get (g_dbus_proxy_get_connection (state->app_proxy),
|
|
||||||
state->dbus_name,
|
|
||||||
object_path));
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), "menu");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_dbus_name_appeared (GDBusConnection *bus,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *name_owner,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
ShellApp *self = SHELL_APP (user_data);
|
|
||||||
ShellAppRunningState *state = self->running_state;
|
|
||||||
char *object_path;
|
|
||||||
|
|
||||||
g_assert (state != NULL);
|
|
||||||
|
|
||||||
object_path = g_strconcat ("/", name, NULL);
|
|
||||||
g_strdelimit (object_path, ".", '/');
|
|
||||||
|
|
||||||
if (!state->dbus_cancellable)
|
|
||||||
state->dbus_cancellable = g_cancellable_new ();
|
|
||||||
|
|
||||||
/* first step: the application proxy */
|
|
||||||
|
|
||||||
g_dbus_proxy_new (bus,
|
|
||||||
G_DBUS_PROXY_FLAGS_NONE,
|
|
||||||
NULL, /* interface info */
|
|
||||||
name_owner,
|
|
||||||
object_path,
|
|
||||||
"org.gtk.Application",
|
|
||||||
state->dbus_cancellable,
|
|
||||||
on_dbus_proxy_gotten,
|
|
||||||
g_object_ref (self));
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), "dbus-id");
|
|
||||||
|
|
||||||
g_free (object_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_dbus_name_disappeared (GDBusConnection *bus,
|
|
||||||
const gchar *name,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
ShellApp *self = SHELL_APP (user_data);
|
|
||||||
ShellAppRunningState *state = self->running_state;
|
|
||||||
|
|
||||||
g_assert (state != NULL);
|
|
||||||
|
|
||||||
if (state->dbus_cancellable)
|
|
||||||
{
|
|
||||||
g_cancellable_cancel (state->dbus_cancellable);
|
|
||||||
g_clear_object (&state->dbus_cancellable);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_object (&state->app_proxy);
|
|
||||||
g_clear_object (&state->remote_actions);
|
|
||||||
g_clear_object (&state->remote_menu);
|
|
||||||
g_clear_object (&state->muxer);
|
|
||||||
|
|
||||||
g_free (state->dbus_name);
|
|
||||||
state->dbus_name = NULL;
|
|
||||||
|
|
||||||
g_bus_unwatch_name (state->name_watcher_id);
|
|
||||||
state->name_watcher_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_get_pids:
|
* shell_app_get_pids:
|
||||||
* @app: a #ShellApp
|
* @app: a #ShellApp
|
||||||
@ -1395,6 +1211,47 @@ create_running_state (ShellApp *app)
|
|||||||
app->running_state->refcount = 1;
|
app->running_state->refcount = 1;
|
||||||
app->running_state->workspace_switch_id =
|
app->running_state->workspace_switch_id =
|
||||||
g_signal_connect (screen, "workspace-switched", G_CALLBACK(shell_app_on_ws_switch), app);
|
g_signal_connect (screen, "workspace-switched", G_CALLBACK(shell_app_on_ws_switch), app);
|
||||||
|
|
||||||
|
app->running_state->muxer = g_action_muxer_new ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
setup_running_state (ShellApp *app,
|
||||||
|
MetaWindow *window)
|
||||||
|
{
|
||||||
|
/* We assume that 'gtk-unique-bus-name', gtk-application-object-path'
|
||||||
|
* and 'gtk-app-menu-object-path' are the same for all windows which
|
||||||
|
* have it set.
|
||||||
|
*
|
||||||
|
* It could be possible, however, that the first window we see
|
||||||
|
* belonging to the app didn't have them set. For this reason, we
|
||||||
|
* take the values from the first window that has them set and ignore
|
||||||
|
* all the rest (until the app is stopped and restarted).
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (app->running_state->remote_menu == NULL)
|
||||||
|
{
|
||||||
|
const gchar *application_object_path;
|
||||||
|
const gchar *app_menu_object_path;
|
||||||
|
const gchar *unique_bus_name;
|
||||||
|
GDBusConnection *session;
|
||||||
|
GDBusActionGroup *actions;
|
||||||
|
|
||||||
|
application_object_path = meta_window_get_gtk_application_object_path (window);
|
||||||
|
app_menu_object_path = meta_window_get_gtk_app_menu_object_path (window);
|
||||||
|
unique_bus_name = meta_window_get_gtk_unique_bus_name (window);
|
||||||
|
|
||||||
|
if (application_object_path == NULL || app_menu_object_path == NULL || unique_bus_name == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
|
||||||
|
g_assert (session != NULL);
|
||||||
|
app->running_state->remote_menu = g_dbus_menu_model_get (session, unique_bus_name, app_menu_object_path);
|
||||||
|
actions = g_dbus_action_group_get (session, unique_bus_name, application_object_path);
|
||||||
|
g_action_muxer_insert (app->running_state->muxer, "app", G_ACTION_GROUP (actions));
|
||||||
|
g_object_unref (actions);
|
||||||
|
g_object_unref (session);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1411,20 +1268,8 @@ unref_running_state (ShellAppRunningState *state)
|
|||||||
screen = shell_global_get_screen (shell_global_get ());
|
screen = shell_global_get_screen (shell_global_get ());
|
||||||
g_signal_handler_disconnect (screen, state->workspace_switch_id);
|
g_signal_handler_disconnect (screen, state->workspace_switch_id);
|
||||||
|
|
||||||
if (state->dbus_cancellable)
|
|
||||||
{
|
|
||||||
g_cancellable_cancel (state->dbus_cancellable);
|
|
||||||
g_object_unref (state->dbus_cancellable);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_object (&state->app_proxy);
|
|
||||||
g_clear_object (&state->remote_actions);
|
|
||||||
g_clear_object (&state->remote_menu);
|
g_clear_object (&state->remote_menu);
|
||||||
g_clear_object (&state->muxer);
|
g_clear_object (&state->muxer);
|
||||||
g_free (state->dbus_name);
|
|
||||||
|
|
||||||
if (state->name_watcher_id)
|
|
||||||
g_bus_unwatch_name (state->name_watcher_id);
|
|
||||||
|
|
||||||
g_slice_free (ShellAppRunningState, state);
|
g_slice_free (ShellAppRunningState, state);
|
||||||
}
|
}
|
||||||
@ -1669,20 +1514,6 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
/**
|
|
||||||
* ShellApp:dbus-id:
|
|
||||||
*
|
|
||||||
* The DBus well-known name of the application, if one can be associated
|
|
||||||
* to this ShellApp (it means that the application is using GApplication)
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_DBUS_ID,
|
|
||||||
g_param_spec_string ("dbus-id",
|
|
||||||
"Application DBus Id",
|
|
||||||
"The DBus well-known name of the application",
|
|
||||||
NULL,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellApp:action-group:
|
* ShellApp:action-group:
|
||||||
*
|
*
|
||||||
|
@ -41,8 +41,6 @@ const char *shell_app_get_id (ShellApp *app);
|
|||||||
GMenuTreeEntry *shell_app_get_tree_entry (ShellApp *app);
|
GMenuTreeEntry *shell_app_get_tree_entry (ShellApp *app);
|
||||||
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);
|
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);
|
||||||
|
|
||||||
const char *shell_app_get_dbus_id (ShellApp *app);
|
|
||||||
|
|
||||||
ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size);
|
ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size);
|
||||||
ClutterActor *shell_app_get_faded_icon (ShellApp *app, int size);
|
ClutterActor *shell_app_get_faded_icon (ShellApp *app, int size);
|
||||||
const char *shell_app_get_name (ShellApp *app);
|
const char *shell_app_get_name (ShellApp *app);
|
||||||
|
@ -84,7 +84,8 @@ shell_embedded_window_hide (GtkWidget *widget)
|
|||||||
{
|
{
|
||||||
ShellEmbeddedWindow *window = SHELL_EMBEDDED_WINDOW (widget);
|
ShellEmbeddedWindow *window = SHELL_EMBEDDED_WINDOW (widget);
|
||||||
|
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (window->priv->actor));
|
if (window->priv->actor)
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (window->priv->actor));
|
||||||
|
|
||||||
GTK_WIDGET_CLASS (shell_embedded_window_parent_class)->hide (widget);
|
GTK_WIDGET_CLASS (shell_embedded_window_parent_class)->hide (widget);
|
||||||
}
|
}
|
||||||
|
@ -340,104 +340,6 @@ shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
|
|||||||
|
|
||||||
/* Telepathy utility functions */
|
/* Telepathy utility functions */
|
||||||
|
|
||||||
/**
|
|
||||||
* ShellGetTpContactCb:
|
|
||||||
* @connection: The connection
|
|
||||||
* @contacts: (element-type TelepathyGLib.Contact): List of contacts
|
|
||||||
* @failed: Array of failed contacts
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
shell_global_get_tp_contacts_cb (TpConnection *self,
|
|
||||||
guint n_contacts,
|
|
||||||
TpContact * const *contacts,
|
|
||||||
guint n_failed,
|
|
||||||
const TpHandle *failed,
|
|
||||||
const GError *error,
|
|
||||||
gpointer user_data,
|
|
||||||
GObject *weak_object)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
GList *contact_list = NULL;
|
|
||||||
for (i = 0; i < n_contacts; i++) {
|
|
||||||
contact_list = g_list_append(contact_list, contacts[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
TpHandle *failed_list = g_new0 (TpHandle, n_failed + 1);
|
|
||||||
memcpy(failed_list, failed, n_failed);
|
|
||||||
|
|
||||||
((ShellGetTpContactCb)user_data)(self, contact_list, failed_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* shell_get_tp_contacts:
|
|
||||||
* @self: A connection, which must be ready
|
|
||||||
* @n_handles: Number of handles in handles
|
|
||||||
* @handles: (array length=n_handles) (element-type uint): Array of handles
|
|
||||||
* @n_features: Number of features in features
|
|
||||||
* @features: (array length=n_features) (allow-none) (element-type uint):
|
|
||||||
* Array of features
|
|
||||||
* @callback: (scope async): User callback to run when the contacts are ready
|
|
||||||
*
|
|
||||||
* Wrap tp_connection_get_contacts_by_handle so we can transform the array
|
|
||||||
* into a null-terminated one, which gjs can handle.
|
|
||||||
* We send the original callback to tp_connection_get_contacts_by_handle as
|
|
||||||
* user_data, and we have our own function as callback, which does the
|
|
||||||
* transforming.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
shell_get_tp_contacts (TpConnection *self,
|
|
||||||
guint n_handles,
|
|
||||||
const TpHandle *handles,
|
|
||||||
guint n_features,
|
|
||||||
const TpContactFeature *features,
|
|
||||||
ShellGetTpContactCb callback)
|
|
||||||
{
|
|
||||||
tp_connection_get_contacts_by_handle(self, n_handles, handles,
|
|
||||||
n_features, features,
|
|
||||||
shell_global_get_tp_contacts_cb,
|
|
||||||
callback, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
shell_global_get_self_contact_features_cb (TpConnection *connection,
|
|
||||||
guint n_contacts,
|
|
||||||
TpContact * const *contacts,
|
|
||||||
const GError *error,
|
|
||||||
gpointer user_data,
|
|
||||||
GObject *weak_object)
|
|
||||||
{
|
|
||||||
if (error != NULL) {
|
|
||||||
g_print ("Failed to upgrade self contact: %s", error->message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
((ShellGetSelfContactFeaturesCb)user_data)(connection, *contacts);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* shell_get_self_contact_features:
|
|
||||||
* @self: A connection, which must be ready
|
|
||||||
* @n_features: Number of features in features
|
|
||||||
* @features: (array length=n_features) (allow-none) (element-type uint):
|
|
||||||
* Array of features
|
|
||||||
* @callback: (scope async): User callback to run when the contact is ready
|
|
||||||
*
|
|
||||||
* Wrap tp_connection_upgrade_contacts due to the lack of support for
|
|
||||||
* proper arrays arguments in GJS.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
shell_get_self_contact_features (TpConnection *self,
|
|
||||||
guint n_features,
|
|
||||||
const TpContactFeature *features,
|
|
||||||
ShellGetSelfContactFeaturesCb callback)
|
|
||||||
{
|
|
||||||
TpContact *self_contact = tp_connection_get_self_contact (self);
|
|
||||||
|
|
||||||
tp_connection_upgrade_contacts (self, 1, &self_contact,
|
|
||||||
n_features, features,
|
|
||||||
shell_global_get_self_contact_features_cb,
|
|
||||||
callback, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_get_contact_events:
|
* shell_get_contact_events:
|
||||||
|
@ -102,24 +102,6 @@ void shell_tp_client_grab_contact_list_changed (ShellTpClient *self,
|
|||||||
TpConnection *conn);
|
TpConnection *conn);
|
||||||
|
|
||||||
/* Telepathy utility functions */
|
/* Telepathy utility functions */
|
||||||
typedef void (*ShellGetTpContactCb) (TpConnection *connection,
|
|
||||||
GList *contacts,
|
|
||||||
TpHandle *failed);
|
|
||||||
|
|
||||||
void shell_get_tp_contacts (TpConnection *self,
|
|
||||||
guint n_handles,
|
|
||||||
const TpHandle *handles,
|
|
||||||
guint n_features,
|
|
||||||
const TpContactFeature *features,
|
|
||||||
ShellGetTpContactCb callback);
|
|
||||||
|
|
||||||
typedef void (*ShellGetSelfContactFeaturesCb) (TpConnection *connection,
|
|
||||||
TpContact *contact);
|
|
||||||
|
|
||||||
void shell_get_self_contact_features (TpConnection *self,
|
|
||||||
guint n_features,
|
|
||||||
const TpContactFeature *features,
|
|
||||||
ShellGetSelfContactFeaturesCb callback);
|
|
||||||
|
|
||||||
void shell_get_contact_events (TplLogManager *log_manager,
|
void shell_get_contact_events (TplLogManager *log_manager,
|
||||||
TpAccount *account,
|
TpAccount *account,
|
||||||
|
@ -1306,6 +1306,8 @@ st_theme_node_render_resources (StThemeNode *node,
|
|||||||
StShadow *background_image_shadow_spec;
|
StShadow *background_image_shadow_spec;
|
||||||
const char *background_image;
|
const char *background_image;
|
||||||
|
|
||||||
|
g_return_if_fail (width > 0 && height > 0);
|
||||||
|
|
||||||
texture_cache = st_texture_cache_get_default ();
|
texture_cache = st_texture_cache_get_default ();
|
||||||
|
|
||||||
/* FIXME - need to separate this into things that need to be recomputed on
|
/* FIXME - need to separate this into things that need to be recomputed on
|
||||||
@ -1409,9 +1411,11 @@ st_theme_node_render_resources (StThemeNode *node,
|
|||||||
else if (node->background_color.alpha > 0 || has_border)
|
else if (node->background_color.alpha > 0 || has_border)
|
||||||
{
|
{
|
||||||
CoglHandle buffer, offscreen;
|
CoglHandle buffer, offscreen;
|
||||||
|
int texture_width = ceil (width);
|
||||||
|
int texture_height = ceil (height);
|
||||||
|
|
||||||
buffer = cogl_texture_new_with_size (width,
|
buffer = cogl_texture_new_with_size (texture_width,
|
||||||
height,
|
texture_height,
|
||||||
COGL_TEXTURE_NO_SLICING,
|
COGL_TEXTURE_NO_SLICING,
|
||||||
COGL_PIXEL_FORMAT_ANY);
|
COGL_PIXEL_FORMAT_ANY);
|
||||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||||
@ -1419,9 +1423,14 @@ st_theme_node_render_resources (StThemeNode *node,
|
|||||||
if (offscreen != COGL_INVALID_HANDLE)
|
if (offscreen != COGL_INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
ClutterActorBox box = { 0, 0, width, height };
|
ClutterActorBox box = { 0, 0, width, height };
|
||||||
|
CoglColor clear_color;
|
||||||
|
|
||||||
cogl_push_framebuffer (offscreen);
|
cogl_push_framebuffer (offscreen);
|
||||||
cogl_ortho (0, width, height, 0, 0, 1.0);
|
cogl_ortho (0, width, height, 0, 0, 1.0);
|
||||||
|
|
||||||
|
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||||
|
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||||
|
|
||||||
st_theme_node_paint_borders (node, &box, 0xFF);
|
st_theme_node_paint_borders (node, &box, 0xFF);
|
||||||
cogl_pop_framebuffer ();
|
cogl_pop_framebuffer ();
|
||||||
cogl_handle_unref (offscreen);
|
cogl_handle_unref (offscreen);
|
||||||
@ -1920,6 +1929,9 @@ st_theme_node_paint (StThemeNode *node,
|
|||||||
allocation.x2 = width;
|
allocation.x2 = width;
|
||||||
allocation.y2 = height;
|
allocation.y2 = height;
|
||||||
|
|
||||||
|
if (width <= 0 || height <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (node->alloc_width != width || node->alloc_height != height)
|
if (node->alloc_width != width || node->alloc_height != height)
|
||||||
st_theme_node_render_resources (node, width, height);
|
st_theme_node_render_resources (node, width, height);
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ function main() {
|
|||||||
section = new Gio.Menu();
|
section = new Gio.Menu();
|
||||||
section.append('Checkbox', 'app.toggle');
|
section.append('Checkbox', 'app.toggle');
|
||||||
section.append('Disabled', 'app.disable');
|
section.append('Disabled', 'app.disable');
|
||||||
menu.append_section(null, section);
|
menu.append_section('Subsection', section);
|
||||||
|
|
||||||
// empty sections or submenus should be invisible
|
// empty sections or submenus should be invisible
|
||||||
menu.append_section('Empty section', new Gio.Menu());
|
menu.append_section('Empty section', new Gio.Menu());
|
||||||
|
Reference in New Issue
Block a user