Compare commits
1 Commits
3.20.2
...
wip/halfli
Author | SHA1 | Date | |
---|---|---|---|
832240a80b |
6
.gitignore
vendored
6
.gitignore
vendored
@ -17,8 +17,10 @@ config.status
|
|||||||
config
|
config
|
||||||
configure
|
configure
|
||||||
data/50-gnome-shell-*.xml
|
data/50-gnome-shell-*.xml
|
||||||
data/org.gnome.Shell.desktop
|
data/gnome-shell.desktop
|
||||||
data/org.gnome.Shell.desktop.in
|
data/gnome-shell.desktop.in
|
||||||
|
data/gnome-shell-wayland.desktop
|
||||||
|
data/gnome-shell-wayland.desktop.in
|
||||||
data/gnome-shell-extension-prefs.desktop
|
data/gnome-shell-extension-prefs.desktop
|
||||||
data/gnome-shell-extension-prefs.desktop.in
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
data/gnome-shell-theme.gresource
|
data/gnome-shell-theme.gresource
|
||||||
|
187
NEWS
187
NEWS
@ -1,190 +1,3 @@
|
|||||||
3.20.2
|
|
||||||
======
|
|
||||||
* Save screencasts in HOME if XDG_VIDEO_DIR doesn't exist [Florian; #765015]
|
|
||||||
* Don't show orientation lock when g-s-d won't rotate [Florian; #765267]
|
|
||||||
* Misc. bug fixes [Heiher, Florian, Marek; #722752, #765061, #763068, #765607,
|
|
||||||
#757676]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Heiher, Marek Chalupa, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Arash Mousavi [fa], Kristjan SCHMIDT [eo], Tiago Santos [pt],
|
|
||||||
Kjartan Maraas [nb]
|
|
||||||
|
|
||||||
3.20.1
|
|
||||||
======
|
|
||||||
* Plug a memory leak [Aaron; #735705]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Aaron Plattner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Daniel Korostil [uk], Matej Urbančič [sl], Inaki Larranaga Murgoitio [eu],
|
|
||||||
Cheng-Chia Tseng [zh_TW], Fabio Tomat [fur], Trần Ngọc Quân [vi],
|
|
||||||
YunQiang Su [zh_CN], Marek Černocký [cs], Arash Mousavi [fa],
|
|
||||||
Alexander Shopov [bg], Khaled Hosny [ar]
|
|
||||||
|
|
||||||
3.20.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Milo Casagrande [it],
|
|
||||||
Anders Jonsson [sv], Muhammet Kara [tr], Alexandre Franke [fr],
|
|
||||||
Rūdolfs Mazurs [lv], Ask Hjorth Larsen [da], Jiro Matsuzawa [ja]
|
|
||||||
|
|
||||||
3.19.92
|
|
||||||
=======
|
|
||||||
* Update location dialog according to latest mockups [Zeeshan; #762480]
|
|
||||||
* Fix deleting chat notifications in calendar [Florian; #747991]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Zeeshan Ali (Khattak), Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Rūdolfs Mazurs [lv], Changwoo Ryu [ko], Matej Urbančič [sl],
|
|
||||||
Justin van Steijn [nl], Fabio Tomat [fur], Kris Thomsen [da],
|
|
||||||
Marek Černocký [cs], Piotr Drąg [pl], Dušan Kazik [sk],
|
|
||||||
Мирослав Николић [sr, sr@latin], Balázs Úr [hu], Yosef Or Boczko [he],
|
|
||||||
Daniel Mustieles [es], Fran Dieguez [gl], Bernd Homuth [de],
|
|
||||||
Tom Tryfonidis [el], Jiri Grönroos [fi], Gil Forcada [ca],
|
|
||||||
Artur Morais [pt_BR], Aurimas Černius [lt], Stas Solovey [ru]
|
|
||||||
|
|
||||||
3.19.91
|
|
||||||
=======
|
|
||||||
* location: Ask user only once [Zeeshan; #762559]
|
|
||||||
* Fix jiggling when auto-hiding legacy tray [Florian; #747957]
|
|
||||||
* Misc. bug fixes [Florian, Michael, Ting-Wei; #762475, #762507, #755659]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Zeeshan Ali (Khattak), Michael Catanzaro, Ting-Wei Lan, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Мирослав Николић [sr, sr@latin], Piotr Drąg [pl], A S Alam [pa],
|
|
||||||
Artur de Aquino Morais [pt_BR], Daniel Mustieles [es],
|
|
||||||
Chao-Hsiung Liao [zh_TW], Daniel Korostil [uk], Fran Dieguez [gl],
|
|
||||||
Tom Tryfonidis [el], Bernd Homuth [de], Sebastian Rasmussen [sv],
|
|
||||||
Jordi Mas [ca], Piotr Drąg [ga], Cédric Valmary [oc], Gábor Kelemen [hu],
|
|
||||||
Baurzhan Muftakhidinov [kk], Friedel Wolff [af], Marek Černocký [cs],
|
|
||||||
Mingye Wang (Arthur2e5) [zh_CN], Aron Xu [zh_CN], Khaled Hosny [ar],
|
|
||||||
Aurimas Černius [lt], Stas Solovey [ru], Yosef Or Boczko [he]
|
|
||||||
|
|
||||||
3.19.90
|
|
||||||
=======
|
|
||||||
* Correctly identify VPN secret requests [Lubomir; #760999]
|
|
||||||
* Improve week number presentation [Jakub; #683245]
|
|
||||||
* Add audio device selection dialog [Florian; #760284]
|
|
||||||
* Add media controls to the time and date drop down [Florian; #756491]
|
|
||||||
* Fix IBus candidate popup position under wayland [Rui; #753476]
|
|
||||||
* Ask user to grant applications access to location [Zeeshan; #762119]
|
|
||||||
* Misc. bug fixes [Mario, Jakub, Florian; #761208, #761772, #762270]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Zeeshan Ali (Khattak), Michael Catanzaro, Rui Matos, Florian Müllner,
|
|
||||||
Lubomir Rintel, Mario Sanchez Prada, Jakub Steiner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Alexander Shopov [bg], Balázs Meskó [hu], Fabio Tomat [fur],
|
|
||||||
Dušan Kazik [sk], Piotr Drąg [pl], Alexandre Franke [fr],
|
|
||||||
Mario Blättermann [de], Milo Casagrande [it], Jordi Mas [ca]
|
|
||||||
|
|
||||||
3.19.4
|
|
||||||
======
|
|
||||||
* gdm: Do not allow bypassing disabled Sign In button [Michael; #746180]
|
|
||||||
* Style week numbers in calendar [Jakub; #683245]
|
|
||||||
* Misc. bug fixes [Christophe, Jakub, Rui; #759708, #760577, #760945]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Michael Catanzaro, Marek Černocký, Christophe Fergeau, Rui Matos,
|
|
||||||
Jakub Steiner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Aurimas Černius [lt], Enrico Nicoletto [pt_BR], Andika Triwidada [id],
|
|
||||||
Mario Blättermann [de], Marek Černocký [cs], Kjartan Maraas [nb],
|
|
||||||
Muhammet Kara [tr], Stas Solovey [ru]
|
|
||||||
|
|
||||||
3.19.3
|
|
||||||
======
|
|
||||||
* Fix thumbnail scaling in window switcher on HiDPI [Florian; #758676]
|
|
||||||
* Update animated backgrounds on timezone changes [Florian; #758939]
|
|
||||||
* loginDialog: Update user list on user changes [Michael; #758568]
|
|
||||||
* Fix touch interaction on wayland [Carlos; #756748]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Michael Catanzaro, Carlos Garnacho, Kalev Lember, Florian Müllner
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Daniel Korostil [uk], Muhammet Kara [tr], Dušan Kazik [sk],
|
|
||||||
Baurzhan Muftakhidinov [kk], Marek Černocký [cs]
|
|
||||||
|
|
||||||
3.19.2
|
|
||||||
======
|
|
||||||
* Make gnome-shell DBus activatable [Ray; #741666]
|
|
||||||
* Fix browser plugin crash in Firefox [Carlos; #737932, #757940]
|
|
||||||
* Optionally show battery percentage in system status area [Bastien; #735771]
|
|
||||||
* Misc. bug fixes [Kalev, Florian, Bastien; #757418, #757668, #757779, #757816,
|
|
||||||
#745626, #758220]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Michael Biebl, Michael Catanzaro, Piotr Drąg, Carlos Garcia Campos,
|
|
||||||
Kalev Lember, Florian Müllner, Bastien Nocera, Ray Strode
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Pedro Albuquerque [pt], liushuyu [zh_CN], Yosef Or Boczko [he],
|
|
||||||
Jiri Grönroos [fi], Kjartan Maraas [nb], GNOME Translation Robot [gd],
|
|
||||||
Daniel Mustieles [es], Marek Černocký [cs], Kristjan SCHMIDT [eo],
|
|
||||||
Stas Solovey [ru]
|
|
||||||
|
|
||||||
3.19.1
|
|
||||||
======
|
|
||||||
* Respect text-scaling factor under wayland [Owen; #756447]
|
|
||||||
* Show the Bluetooth submenu when there were setup devices [Bastien; #723848]
|
|
||||||
* Misc. bug fixes [Florian, Cosimo, Rui, Ray, Owen, Jakub, Bastien;
|
|
||||||
#756697, #756714, #756605, #754814, #738942, #756983, #756925,
|
|
||||||
#757011, #673235, #757150]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Cosimo Cecchi, Rui Matos, Florian Müllner, Bastien Nocera, Jakub Steiner,
|
|
||||||
Ray Strode, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Kjartan Maraas [nb], Khaled Hosny [ar], Balázs Meskó [hu],
|
|
||||||
Daniel Șerbănescu [ro], Marek Černocký [cs]
|
|
||||||
|
|
||||||
3.18.1
|
|
||||||
======
|
|
||||||
* Fix screen freezes when a notification is pushed [Carlos; #755425]
|
|
||||||
* Fix overzealous ellipsization in system status menu [Adel, Florian; #708472]
|
|
||||||
* Hide app menu when disabled by setting [Florian; #745919]
|
|
||||||
* Fix lightbox effect when animations are disabled [Rui; #755827]
|
|
||||||
* Do not mark hotplug notifications as critical [Florian; #657923]
|
|
||||||
* Fix icons getting cut off in dash [Florian; #745649]
|
|
||||||
* Animate fullscreen/unfullscreen operations [Cosimo; #707248]
|
|
||||||
* Misc. bug fixes [Florian, Owen; #748919, #674799, #754581]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Emmanuele Bassi, Michael Catanzaro, Cosimo Cecchi, Matthias Clasen,
|
|
||||||
Adel Gadllah, Carlos Garnacho, Ekaterina Gerasimova, Rui Matos,
|
|
||||||
Florian Müllner, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Марко Костић [sr], Милош Поповић [sr@latin], Khaled Hosny [ar],
|
|
||||||
Trần Ngọc Quân [vi], Petr Kovar [cs], Alexandre Franke [fr],
|
|
||||||
Fran Dieguez [gl], Anders Jonsson [sv], Piotr Drąg [pl], Dušan Kazik [sk],
|
|
||||||
Milo Casagrande [it], Changwoo Ryu [ko], Stas Solovey [ru],
|
|
||||||
Rafael Fontenelle [pt_BR], Tom Tryfonidis [el], Aurimas Černius [lt],
|
|
||||||
Seán de Búrca [ga], Christian Kirbach [de], Jiri Grönroos [fi],
|
|
||||||
Pedro Albuquerque [pt], Baurzhan Muftakhidinov [kk], Daniel Mustieles [es],
|
|
||||||
Marek Černocký [cs], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu]
|
|
||||||
|
|
||||||
3.18.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Sendy Aditya Suryana [id], Kris Thomsen [da], Seán de Búrca [ga],
|
|
||||||
Andika Triwidada [id], Enrico Nicoletto [pt_BR], Anders Jonsson [sv],
|
|
||||||
Rūdolfs Mazurs [lv]
|
|
||||||
|
|
||||||
3.17.92
|
3.17.92
|
||||||
=======
|
=======
|
||||||
* Fix race when loading multiple background animations [Josselin; #741453]
|
* Fix race when loading multiple background animations [Josselin; #741453]
|
||||||
|
@ -3,10 +3,7 @@ mozillalibdir = $(BROWSER_PLUGIN_DIR)
|
|||||||
|
|
||||||
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
|
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
|
||||||
|
|
||||||
# Browsers can unload and reload the module while browsing, which is not supported by GObject.
|
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||||
# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded.
|
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=737932
|
|
||||||
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete
|
|
||||||
|
|
||||||
libgnome_shell_browser_plugin_la_LIBADD = \
|
libgnome_shell_browser_plugin_la_LIBADD = \
|
||||||
$(BROWSER_PLUGIN_LIBS)
|
$(BROWSER_PLUGIN_LIBS)
|
||||||
|
@ -33,16 +33,20 @@
|
|||||||
#include <json-glib/json-glib.h>
|
#include <json-glib/json-glib.h>
|
||||||
|
|
||||||
#define ORIGIN "extensions.gnome.org"
|
#define ORIGIN "extensions.gnome.org"
|
||||||
#define PLUGIN_NAME "GNOME Shell Integration"
|
#define PLUGIN_NAME "Gnome Shell Integration"
|
||||||
#define PLUGIN_DESCRIPTION "This plugin provides integration with GNOME Shell " \
|
#define PLUGIN_DESCRIPTION "This plugin provides integration with Gnome Shell " \
|
||||||
"for live extension enabling and disabling. " \
|
"for live extension enabling and disabling. " \
|
||||||
"It can be used only by extensions.gnome.org"
|
"It can be used only by extensions.gnome.org"
|
||||||
#define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::GNOME Shell Integration Dummy Content-Type";
|
#define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::Gnome Shell Integration Dummy Content-Type";
|
||||||
|
|
||||||
#define PLUGIN_API_VERSION 5
|
#define PLUGIN_API_VERSION 5
|
||||||
|
|
||||||
#define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation"
|
#define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GDBusProxy *proxy;
|
||||||
|
} PluginData;
|
||||||
|
|
||||||
static NPNetscapeFuncs funcs;
|
static NPNetscapeFuncs funcs;
|
||||||
|
|
||||||
static inline gchar *
|
static inline gchar *
|
||||||
@ -141,6 +145,121 @@ check_origin_and_protocol (NPP instance)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* =============== public entry points =================== */
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
||||||
|
{
|
||||||
|
/* global initialization routine, called once when plugin
|
||||||
|
is loaded */
|
||||||
|
|
||||||
|
g_debug ("plugin loaded");
|
||||||
|
|
||||||
|
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||||
|
|
||||||
|
plugin->size = sizeof(NPPluginFuncs);
|
||||||
|
plugin->newp = NPP_New;
|
||||||
|
plugin->destroy = NPP_Destroy;
|
||||||
|
plugin->getvalue = NPP_GetValue;
|
||||||
|
plugin->setwindow = NPP_SetWindow;
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_Shutdown(void)
|
||||||
|
{
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
NP_GetMIMEDescription(void)
|
||||||
|
{
|
||||||
|
return PLUGIN_MIME_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_GetValue(void *instance,
|
||||||
|
NPPVariable variable,
|
||||||
|
void *value)
|
||||||
|
{
|
||||||
|
switch (variable) {
|
||||||
|
case NPPVpluginNameString:
|
||||||
|
*(char**)value = PLUGIN_NAME;
|
||||||
|
break;
|
||||||
|
case NPPVpluginDescriptionString:
|
||||||
|
*(char**)value = PLUGIN_DESCRIPTION;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NPP_New(NPMIMEType mimetype,
|
||||||
|
NPP instance,
|
||||||
|
uint16_t mode,
|
||||||
|
int16_t argc,
|
||||||
|
char **argn,
|
||||||
|
char **argv,
|
||||||
|
NPSavedData *saved)
|
||||||
|
{
|
||||||
|
/* instance initialization function */
|
||||||
|
PluginData *data;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
|
g_debug ("plugin created");
|
||||||
|
|
||||||
|
if (!check_origin_and_protocol (instance))
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
|
||||||
|
data = g_slice_new (PluginData);
|
||||||
|
instance->pdata = data;
|
||||||
|
|
||||||
|
data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||||
|
G_DBUS_PROXY_FLAGS_NONE,
|
||||||
|
NULL, /* interface info */
|
||||||
|
"org.gnome.Shell",
|
||||||
|
"/org/gnome/Shell",
|
||||||
|
"org.gnome.Shell.Extensions",
|
||||||
|
NULL, /* GCancellable */
|
||||||
|
&error);
|
||||||
|
if (!data->proxy)
|
||||||
|
{
|
||||||
|
/* ignore error if the shell is not running, otherwise warn */
|
||||||
|
if (error->domain != G_DBUS_ERROR ||
|
||||||
|
error->code != G_DBUS_ERROR_NAME_HAS_NO_OWNER)
|
||||||
|
{
|
||||||
|
g_warning ("Failed to set up Shell proxy: %s", error->message);
|
||||||
|
}
|
||||||
|
g_clear_error (&error);
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_debug ("plugin created successfully");
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NPP_Destroy(NPP instance,
|
||||||
|
NPSavedData **saved)
|
||||||
|
{
|
||||||
|
/* instance finalization function */
|
||||||
|
|
||||||
|
PluginData *data = instance->pdata;
|
||||||
|
|
||||||
|
g_debug ("plugin destroyed");
|
||||||
|
|
||||||
|
g_object_unref (data->proxy);
|
||||||
|
|
||||||
|
g_slice_free (PluginData, data);
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/* =================== scripting interface =================== */
|
/* =================== scripting interface =================== */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -211,18 +330,45 @@ static NPObject *
|
|||||||
plugin_object_allocate (NPP instance,
|
plugin_object_allocate (NPP instance,
|
||||||
NPClass *klass)
|
NPClass *klass)
|
||||||
{
|
{
|
||||||
PluginObject *obj = (PluginObject *) funcs.memalloc (sizeof (PluginObject));
|
PluginData *data = instance->pdata;
|
||||||
|
PluginObject *obj = g_slice_new0 (PluginObject);
|
||||||
|
|
||||||
memset (obj, 0, sizeof (PluginObject));
|
|
||||||
obj->instance = instance;
|
obj->instance = instance;
|
||||||
|
obj->proxy = g_object_ref (data->proxy);
|
||||||
|
obj->settings = g_settings_new (SHELL_SCHEMA);
|
||||||
|
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
||||||
|
G_CALLBACK (on_shell_signal), obj);
|
||||||
|
|
||||||
return (NPObject*) obj;
|
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
|
||||||
|
"org.gnome.Shell",
|
||||||
|
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
||||||
|
on_shell_appeared,
|
||||||
|
NULL,
|
||||||
|
obj,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
g_debug ("plugin object created");
|
||||||
|
|
||||||
|
return (NPObject*)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
plugin_object_deallocate (NPObject *npobj)
|
plugin_object_deallocate (NPObject *npobj)
|
||||||
{
|
{
|
||||||
funcs.memfree (npobj);
|
PluginObject *obj = (PluginObject*)npobj;
|
||||||
|
|
||||||
|
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
|
||||||
|
g_object_unref (obj->proxy);
|
||||||
|
|
||||||
|
if (obj->listener)
|
||||||
|
funcs.releaseobject (obj->listener);
|
||||||
|
|
||||||
|
if (obj->watch_name_id)
|
||||||
|
g_bus_unwatch_name (obj->watch_name_id);
|
||||||
|
|
||||||
|
g_debug ("plugin object destroyed");
|
||||||
|
|
||||||
|
g_slice_free (PluginObject, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
@ -873,149 +1019,6 @@ init_methods_and_properties (void)
|
|||||||
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =============== public entry points =================== */
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
|
||||||
{
|
|
||||||
/* global initialization routine, called once when plugin
|
|
||||||
is loaded */
|
|
||||||
|
|
||||||
g_debug ("plugin loaded");
|
|
||||||
|
|
||||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
|
||||||
|
|
||||||
plugin->size = sizeof(NPPluginFuncs);
|
|
||||||
plugin->newp = NPP_New;
|
|
||||||
plugin->destroy = NPP_Destroy;
|
|
||||||
plugin->getvalue = NPP_GetValue;
|
|
||||||
plugin->setwindow = NPP_SetWindow;
|
|
||||||
plugin->event = NPP_HandleEvent;
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_Shutdown(void)
|
|
||||||
{
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*
|
|
||||||
NP_GetMIMEDescription(void)
|
|
||||||
{
|
|
||||||
return PLUGIN_MIME_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_GetValue(void *instance,
|
|
||||||
NPPVariable variable,
|
|
||||||
void *value)
|
|
||||||
{
|
|
||||||
switch (variable) {
|
|
||||||
case NPPVpluginNameString:
|
|
||||||
*(char**)value = PLUGIN_NAME;
|
|
||||||
break;
|
|
||||||
case NPPVpluginDescriptionString:
|
|
||||||
*(char**)value = PLUGIN_DESCRIPTION;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NPP_New(NPMIMEType mimetype,
|
|
||||||
NPP instance,
|
|
||||||
uint16_t mode,
|
|
||||||
int16_t argc,
|
|
||||||
char **argn,
|
|
||||||
char **argv,
|
|
||||||
NPSavedData *saved)
|
|
||||||
{
|
|
||||||
/* instance initialization function */
|
|
||||||
PluginObject *obj;
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
g_debug ("plugin created");
|
|
||||||
|
|
||||||
if (!check_origin_and_protocol (instance))
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
|
|
||||||
/* set windowless mode */
|
|
||||||
funcs.setvalue(instance, NPPVpluginWindowBool, NULL);
|
|
||||||
|
|
||||||
g_debug ("creating scriptable object");
|
|
||||||
init_methods_and_properties ();
|
|
||||||
obj = (PluginObject *) funcs.createobject (instance, &plugin_class);
|
|
||||||
instance->pdata = obj;
|
|
||||||
|
|
||||||
obj->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
|
||||||
G_DBUS_PROXY_FLAGS_NONE,
|
|
||||||
NULL, /* interface info */
|
|
||||||
"org.gnome.Shell",
|
|
||||||
"/org/gnome/Shell",
|
|
||||||
"org.gnome.Shell.Extensions",
|
|
||||||
NULL, /* GCancellable */
|
|
||||||
&error);
|
|
||||||
if (!obj->proxy)
|
|
||||||
{
|
|
||||||
/* ignore error if the shell is not running, otherwise warn */
|
|
||||||
if (!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER))
|
|
||||||
{
|
|
||||||
g_warning ("Failed to set up Shell proxy: %s", error->message);
|
|
||||||
}
|
|
||||||
g_clear_error (&error);
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
obj->settings = g_settings_new (SHELL_SCHEMA);
|
|
||||||
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
|
||||||
G_CALLBACK (on_shell_signal), obj);
|
|
||||||
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
|
|
||||||
"org.gnome.Shell",
|
|
||||||
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
|
||||||
on_shell_appeared,
|
|
||||||
NULL,
|
|
||||||
obj,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
g_debug ("plugin created successfully");
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NPP_Destroy(NPP instance,
|
|
||||||
NPSavedData **saved)
|
|
||||||
{
|
|
||||||
/* instance finalization function */
|
|
||||||
PluginObject *obj = (PluginObject *) instance->pdata;
|
|
||||||
|
|
||||||
if (!obj)
|
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
|
||||||
|
|
||||||
g_debug ("plugin destroyed");
|
|
||||||
|
|
||||||
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
|
|
||||||
g_object_unref (obj->proxy);
|
|
||||||
|
|
||||||
if (obj->listener)
|
|
||||||
funcs.releaseobject (obj->listener);
|
|
||||||
|
|
||||||
if (obj->restart_listener)
|
|
||||||
funcs.releaseobject (obj->restart_listener);
|
|
||||||
|
|
||||||
if (obj->watch_name_id)
|
|
||||||
g_bus_unwatch_name (obj->watch_name_id);
|
|
||||||
|
|
||||||
funcs.releaseobject((NPObject *)obj);
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
NPError
|
||||||
NPP_GetValue(NPP instance,
|
NPP_GetValue(NPP instance,
|
||||||
NPPVariable variable,
|
NPPVariable variable,
|
||||||
@ -1026,10 +1029,13 @@ NPP_GetValue(NPP instance,
|
|||||||
switch (variable) {
|
switch (variable) {
|
||||||
case NPPVpluginScriptableNPObject:
|
case NPPVpluginScriptableNPObject:
|
||||||
g_debug ("creating scriptable object");
|
g_debug ("creating scriptable object");
|
||||||
if (!instance->pdata)
|
init_methods_and_properties ();
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
|
||||||
|
|
||||||
*(NPObject**)value = instance->pdata;
|
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NPPVpluginNeedsXEmbed:
|
||||||
|
*(bool *)value = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1047,11 +1053,3 @@ NPP_SetWindow(NPP instance,
|
|||||||
{
|
{
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t
|
|
||||||
NPP_HandleEvent(NPP instance,
|
|
||||||
void *event)
|
|
||||||
{
|
|
||||||
/* Ignore the event */
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
13
configure.ac
13
configure.ac
@ -1,6 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.20.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.17.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
AX_IS_RELEASE([git-directory])
|
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@ -77,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
|
|||||||
CLUTTER_MIN_VERSION=1.21.5
|
CLUTTER_MIN_VERSION=1.21.5
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
||||||
GJS_MIN_VERSION=1.39.0
|
GJS_MIN_VERSION=1.39.0
|
||||||
MUTTER_MIN_VERSION=3.20.2
|
MUTTER_MIN_VERSION=3.17.92
|
||||||
GTK_MIN_VERSION=3.15.0
|
GTK_MIN_VERSION=3.15.0
|
||||||
GIO_MIN_VERSION=2.45.3
|
GIO_MIN_VERSION=2.45.3
|
||||||
LIBECAL_MIN_VERSION=3.5.3
|
LIBECAL_MIN_VERSION=3.5.3
|
||||||
@ -117,9 +116,9 @@ PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
|||||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
||||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||||
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
||||||
PKG_CHECK_MODULES(TRAY, clutter-1.0 gtk+-3.0)
|
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||||
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
||||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.19.2)
|
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.13.1)
|
||||||
|
|
||||||
AC_ARG_ENABLE(browser-plugin,
|
AC_ARG_ENABLE(browser-plugin,
|
||||||
[AS_HELP_STRING([--enable-browser-plugin],
|
[AS_HELP_STRING([--enable-browser-plugin],
|
||||||
@ -221,7 +220,7 @@ if test "$enable_man" != no; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
||||||
|
|
||||||
AX_COMPILER_FLAGS()
|
GNOME_COMPILE_WARNINGS([error])
|
||||||
case "$WARN_CFLAGS" in
|
case "$WARN_CFLAGS" in
|
||||||
*-Werror*)
|
*-Werror*)
|
||||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
||||||
@ -270,7 +269,7 @@ Build configuration:
|
|||||||
Prefix: ${prefix}
|
Prefix: ${prefix}
|
||||||
Source code location: ${srcdir}
|
Source code location: ${srcdir}
|
||||||
Compiler: ${CC}
|
Compiler: ${CC}
|
||||||
Compiler Warnings: $ax_enable_compile_warnings
|
Compiler Warnings: $enable_compile_warnings
|
||||||
|
|
||||||
Support for NetworkManager: $have_networkmanager
|
Support for NetworkManager: $have_networkmanager
|
||||||
Support for GStreamer recording: $build_recorder
|
Support for GStreamer recording: $build_recorder
|
||||||
|
@ -2,7 +2,7 @@ CLEANFILES =
|
|||||||
NULL =
|
NULL =
|
||||||
|
|
||||||
desktopdir=$(datadir)/applications
|
desktopdir=$(datadir)/applications
|
||||||
desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop
|
desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop gnome-shell-extension-prefs.desktop
|
||||||
|
|
||||||
if HAVE_NETWORKMANAGER
|
if HAVE_NETWORKMANAGER
|
||||||
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
|
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
|
||||||
@ -104,7 +104,8 @@ convertdir = $(datadir)/GConf/gsettings
|
|||||||
convert_DATA = gnome-shell-overrides.convert
|
convert_DATA = gnome-shell-overrides.convert
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
org.gnome.Shell.desktop.in.in \
|
gnome-shell.desktop.in.in \
|
||||||
|
gnome-shell-wayland.desktop.in.in \
|
||||||
gnome-shell-extension-prefs.desktop.in.in \
|
gnome-shell-extension-prefs.desktop.in.in \
|
||||||
$(introspection_DATA) \
|
$(introspection_DATA) \
|
||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
@ -120,7 +121,8 @@ EXTRA_DIST = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
org.gnome.Shell.desktop.in \
|
gnome-shell.desktop.in \
|
||||||
|
gnome-shell-wayland.desktop.in \
|
||||||
gnome-shell-extension-prefs.in \
|
gnome-shell-extension-prefs.in \
|
||||||
$(desktop_DATA) \
|
$(desktop_DATA) \
|
||||||
$(keys_DATA) \
|
$(keys_DATA) \
|
||||||
|
15
data/gnome-shell-wayland.desktop.in.in
Normal file
15
data/gnome-shell-wayland.desktop.in.in
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
_Name=GNOME Shell (wayland compositor)
|
||||||
|
_Comment=Window management and application launching
|
||||||
|
Exec=@bindir@/gnome-shell --wayland --display-server
|
||||||
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Component=general
|
||||||
|
X-GNOME-Bugzilla-Version=@VERSION@
|
||||||
|
Categories=GNOME;GTK;Core;
|
||||||
|
OnlyShowIn=GNOME;
|
||||||
|
NoDisplay=true
|
||||||
|
X-GNOME-Autostart-Phase=DisplayServer
|
||||||
|
X-GNOME-Autostart-Notify=true
|
||||||
|
X-GNOME-AutoRestart=false
|
@ -10,7 +10,7 @@ X-GNOME-Bugzilla-Version=@VERSION@
|
|||||||
Categories=GNOME;GTK;Core;
|
Categories=GNOME;GTK;Core;
|
||||||
OnlyShowIn=GNOME;
|
OnlyShowIn=GNOME;
|
||||||
NoDisplay=true
|
NoDisplay=true
|
||||||
X-GNOME-Autostart-Phase=DisplayServer
|
X-GNOME-Autostart-Phase=WindowManager
|
||||||
X-GNOME-Provides=panel;windowmanager;
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
X-GNOME-Autostart-Notify=true
|
X-GNOME-Autostart-Notify=true
|
||||||
X-GNOME-AutoRestart=false
|
X-GNOME-AutoRestart=false
|
@ -72,16 +72,6 @@
|
|||||||
This key sets the default state of the checkbox.
|
This key sets the default state of the checkbox.
|
||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
<key name="had-bluetooth-devices-setup" type="b">
|
|
||||||
<default>false</default>
|
|
||||||
<_summary>Whether the default Bluetooth adapter had set up devices associated to it</_summary>
|
|
||||||
<_description>
|
|
||||||
The shell will only show a Bluetooth menu item if a Bluetooth
|
|
||||||
adapter is powered, or if there were devices set up associated
|
|
||||||
with the default adapter. This will be reset if the default
|
|
||||||
adapter is ever seen not to have devices associated to it.
|
|
||||||
</_description>
|
|
||||||
</key>
|
|
||||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
||||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||||
|
@ -199,7 +199,7 @@ StScrollBar {
|
|||||||
border-radius: 9px;
|
border-radius: 9px;
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
background-color: rgba(23, 25, 26, 0.95);
|
background-color: rgba(23, 25, 26, 0.95);
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2); }
|
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||||
.modal-dialog .modal-dialog-content-box {
|
.modal-dialog .modal-dialog-content-box {
|
||||||
padding: 24px; }
|
padding: 24px; }
|
||||||
.modal-dialog .run-dialog-entry {
|
.modal-dialog .run-dialog-entry {
|
||||||
@ -224,7 +224,7 @@ StScrollBar {
|
|||||||
/* End Session Dialog */
|
/* End Session Dialog */
|
||||||
.end-session-dialog {
|
.end-session-dialog {
|
||||||
spacing: 42px;
|
spacing: 42px;
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2); }
|
border: 3px solid rgba(238, 238, 236, 0.2); }
|
||||||
|
|
||||||
.end-session-dialog-list {
|
.end-session-dialog-list {
|
||||||
padding-top: 20px; }
|
padding-top: 20px; }
|
||||||
@ -399,54 +399,6 @@ StScrollBar {
|
|||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px; }
|
height: 48px; }
|
||||||
|
|
||||||
/* Audio selection dialog */
|
|
||||||
.audio-device-selection-dialog {
|
|
||||||
spacing: 30px; }
|
|
||||||
|
|
||||||
.audio-selection-content {
|
|
||||||
spacing: 20px;
|
|
||||||
padding: 24px; }
|
|
||||||
|
|
||||||
.audio-selection-title {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center; }
|
|
||||||
|
|
||||||
.audio-selection-box {
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.audio-selection-device {
|
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2);
|
|
||||||
border-radius: 12px; }
|
|
||||||
.audio-selection-device:active, .audio-selection-device:hover, .audio-selection-device:focus {
|
|
||||||
background-color: #215d9c; }
|
|
||||||
|
|
||||||
.audio-selection-device-box {
|
|
||||||
padding: 20px;
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.audio-selection-device-icon {
|
|
||||||
icon-size: 64px; }
|
|
||||||
|
|
||||||
/* Geolocation Dialog */
|
|
||||||
.geolocation-dialog {
|
|
||||||
spacing: 30px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-main-layout {
|
|
||||||
spacing: 12px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-content {
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-icon {
|
|
||||||
icon-size: 48px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-title {
|
|
||||||
font-weight: bold; }
|
|
||||||
|
|
||||||
.geolocation-dialog-reason {
|
|
||||||
color: #999999;
|
|
||||||
font-weight: bold; }
|
|
||||||
|
|
||||||
/* Network Agent Dialog */
|
/* Network Agent Dialog */
|
||||||
.network-dialog-secret-table {
|
.network-dialog-secret-table {
|
||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
@ -456,9 +408,9 @@ StScrollBar {
|
|||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
spacing-columns: 1em; }
|
spacing-columns: 1em; }
|
||||||
|
|
||||||
/* Popovers/Menus */
|
/* Popvers/Menus */
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
min-width: 15em; }
|
min-width: 200px; }
|
||||||
.popup-menu .popup-sub-menu {
|
.popup-menu .popup-sub-menu {
|
||||||
background-color: black;
|
background-color: black;
|
||||||
box-shadow: inset 0 -1px 0px #0d0d0d; }
|
box-shadow: inset 0 -1px 0px #0d0d0d; }
|
||||||
@ -673,8 +625,6 @@ StScrollBar {
|
|||||||
#panel .panel-status-indicators-box,
|
#panel .panel-status-indicators-box,
|
||||||
#panel .panel-status-menu-box {
|
#panel .panel-status-menu-box {
|
||||||
spacing: 2px; }
|
spacing: 2px; }
|
||||||
#panel .power-status.panel-status-indicators-box {
|
|
||||||
spacing: 0; }
|
|
||||||
#panel .screencast-indicator {
|
#panel .screencast-indicator {
|
||||||
color: #f57900; }
|
color: #f57900; }
|
||||||
|
|
||||||
@ -800,20 +750,9 @@ StScrollBar {
|
|||||||
color: rgba(255, 255, 255, 0.15);
|
color: rgba(255, 255, 255, 0.15);
|
||||||
opacity: 0.5; }
|
opacity: 0.5; }
|
||||||
|
|
||||||
.calendar-week-number {
|
|
||||||
font-size: 70%;
|
|
||||||
font-weight: bold;
|
|
||||||
width: 2.3em;
|
|
||||||
height: 1.8em;
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 0.5em 0 0;
|
|
||||||
margin: 6px;
|
|
||||||
background-color: rgba(255, 255, 255, 0.3);
|
|
||||||
color: #000; }
|
|
||||||
|
|
||||||
/* Message list */
|
/* Message list */
|
||||||
.message-list {
|
.message-list {
|
||||||
width: 31.5em; }
|
width: 420px; }
|
||||||
|
|
||||||
.message-list-sections {
|
.message-list-sections {
|
||||||
spacing: 1.5em; }
|
spacing: 1.5em; }
|
||||||
@ -869,23 +808,6 @@ StScrollBar {
|
|||||||
padding: 8px;
|
padding: 8px;
|
||||||
font-size: .9em; }
|
font-size: .9em; }
|
||||||
|
|
||||||
.message-media-control {
|
|
||||||
padding: 6px; }
|
|
||||||
.message-media-control:last-child:ltr {
|
|
||||||
padding-right: 18px; }
|
|
||||||
.message-media-control:last-child:rtl {
|
|
||||||
padding-left: 18px; }
|
|
||||||
|
|
||||||
.media-message-cover-icon {
|
|
||||||
icon-size: 32px; }
|
|
||||||
.media-message-cover-icon.fallback {
|
|
||||||
color: #1a1a1a;
|
|
||||||
background-color: #000;
|
|
||||||
border: 2px solid #000;
|
|
||||||
border-radius: 2px;
|
|
||||||
icon-size: 16px;
|
|
||||||
padding: 8px; }
|
|
||||||
|
|
||||||
.system-switch-user-submenu-icon.user-icon {
|
.system-switch-user-submenu-icon.user-icon {
|
||||||
icon-size: 20px;
|
icon-size: 20px;
|
||||||
padding: 0 2px; }
|
padding: 0 2px; }
|
||||||
@ -901,7 +823,7 @@ StScrollBar {
|
|||||||
color: transparent; }
|
color: transparent; }
|
||||||
|
|
||||||
.aggregate-menu {
|
.aggregate-menu {
|
||||||
min-width: 21em; }
|
width: 360px; }
|
||||||
.aggregate-menu .popup-menu-icon {
|
.aggregate-menu .popup-menu-icon {
|
||||||
padding: 0 4px; }
|
padding: 0 4px; }
|
||||||
|
|
||||||
@ -1038,14 +960,10 @@ StScrollBar {
|
|||||||
.search-entry {
|
.search-entry {
|
||||||
width: 320px;
|
width: 320px;
|
||||||
padding: 7px 9px;
|
padding: 7px 9px;
|
||||||
border-radius: 6px;
|
border-radius: 6px; }
|
||||||
border-color: #747467;
|
|
||||||
color: #eeeeec;
|
|
||||||
background-color: #2e3436; }
|
|
||||||
.search-entry:focus {
|
.search-entry:focus {
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
border-width: 2px;
|
border-width: 2px; }
|
||||||
border-color: #215d9c; }
|
|
||||||
.search-entry .search-entry-icon {
|
.search-entry .search-entry-icon {
|
||||||
icon-size: 1em;
|
icon-size: 1em;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
|
Submodule data/theme/gnome-shell-sass updated: 6ccc180811...034d0b775b
@ -199,7 +199,7 @@ StScrollBar {
|
|||||||
border-radius: 9px;
|
border-radius: 9px;
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
background-color: rgba(23, 25, 26, 0.95);
|
background-color: rgba(23, 25, 26, 0.95);
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2); }
|
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||||
.modal-dialog .modal-dialog-content-box {
|
.modal-dialog .modal-dialog-content-box {
|
||||||
padding: 24px; }
|
padding: 24px; }
|
||||||
.modal-dialog .run-dialog-entry {
|
.modal-dialog .run-dialog-entry {
|
||||||
@ -224,7 +224,7 @@ StScrollBar {
|
|||||||
/* End Session Dialog */
|
/* End Session Dialog */
|
||||||
.end-session-dialog {
|
.end-session-dialog {
|
||||||
spacing: 42px;
|
spacing: 42px;
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2); }
|
border: 3px solid rgba(238, 238, 236, 0.2); }
|
||||||
|
|
||||||
.end-session-dialog-list {
|
.end-session-dialog-list {
|
||||||
padding-top: 20px; }
|
padding-top: 20px; }
|
||||||
@ -399,54 +399,6 @@ StScrollBar {
|
|||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px; }
|
height: 48px; }
|
||||||
|
|
||||||
/* Audio selection dialog */
|
|
||||||
.audio-device-selection-dialog {
|
|
||||||
spacing: 30px; }
|
|
||||||
|
|
||||||
.audio-selection-content {
|
|
||||||
spacing: 20px;
|
|
||||||
padding: 24px; }
|
|
||||||
|
|
||||||
.audio-selection-title {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center; }
|
|
||||||
|
|
||||||
.audio-selection-box {
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.audio-selection-device {
|
|
||||||
border: 1px solid rgba(238, 238, 236, 0.2);
|
|
||||||
border-radius: 12px; }
|
|
||||||
.audio-selection-device:active, .audio-selection-device:hover, .audio-selection-device:focus {
|
|
||||||
background-color: #215d9c; }
|
|
||||||
|
|
||||||
.audio-selection-device-box {
|
|
||||||
padding: 20px;
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.audio-selection-device-icon {
|
|
||||||
icon-size: 64px; }
|
|
||||||
|
|
||||||
/* Geolocation Dialog */
|
|
||||||
.geolocation-dialog {
|
|
||||||
spacing: 30px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-main-layout {
|
|
||||||
spacing: 12px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-content {
|
|
||||||
spacing: 20px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-icon {
|
|
||||||
icon-size: 48px; }
|
|
||||||
|
|
||||||
.geolocation-dialog-title {
|
|
||||||
font-weight: bold; }
|
|
||||||
|
|
||||||
.geolocation-dialog-reason {
|
|
||||||
color: #8e8e80;
|
|
||||||
font-weight: bold; }
|
|
||||||
|
|
||||||
/* Network Agent Dialog */
|
/* Network Agent Dialog */
|
||||||
.network-dialog-secret-table {
|
.network-dialog-secret-table {
|
||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
@ -456,9 +408,9 @@ StScrollBar {
|
|||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
spacing-columns: 1em; }
|
spacing-columns: 1em; }
|
||||||
|
|
||||||
/* Popovers/Menus */
|
/* Popvers/Menus */
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
min-width: 15em; }
|
min-width: 200px; }
|
||||||
.popup-menu .popup-sub-menu {
|
.popup-menu .popup-sub-menu {
|
||||||
background-color: #343a3a;
|
background-color: #343a3a;
|
||||||
box-shadow: inset 0 -1px 0px #282c2c; }
|
box-shadow: inset 0 -1px 0px #282c2c; }
|
||||||
@ -673,8 +625,6 @@ StScrollBar {
|
|||||||
#panel .panel-status-indicators-box,
|
#panel .panel-status-indicators-box,
|
||||||
#panel .panel-status-menu-box {
|
#panel .panel-status-menu-box {
|
||||||
spacing: 2px; }
|
spacing: 2px; }
|
||||||
#panel .power-status.panel-status-indicators-box {
|
|
||||||
spacing: 0; }
|
|
||||||
#panel .screencast-indicator {
|
#panel .screencast-indicator {
|
||||||
color: #f57900; }
|
color: #f57900; }
|
||||||
|
|
||||||
@ -800,20 +750,9 @@ StScrollBar {
|
|||||||
color: rgba(238, 238, 236, 0.15);
|
color: rgba(238, 238, 236, 0.15);
|
||||||
opacity: 0.5; }
|
opacity: 0.5; }
|
||||||
|
|
||||||
.calendar-week-number {
|
|
||||||
font-size: 70%;
|
|
||||||
font-weight: bold;
|
|
||||||
width: 2.3em;
|
|
||||||
height: 1.8em;
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 0.5em 0 0;
|
|
||||||
margin: 6px;
|
|
||||||
background-color: rgba(238, 238, 236, 0.3);
|
|
||||||
color: #393f3f; }
|
|
||||||
|
|
||||||
/* Message list */
|
/* Message list */
|
||||||
.message-list {
|
.message-list {
|
||||||
width: 31.5em; }
|
width: 420px; }
|
||||||
|
|
||||||
.message-list-sections {
|
.message-list-sections {
|
||||||
spacing: 1.5em; }
|
spacing: 1.5em; }
|
||||||
@ -869,23 +808,6 @@ StScrollBar {
|
|||||||
padding: 8px;
|
padding: 8px;
|
||||||
font-size: .9em; }
|
font-size: .9em; }
|
||||||
|
|
||||||
.message-media-control {
|
|
||||||
padding: 6px; }
|
|
||||||
.message-media-control:last-child:ltr {
|
|
||||||
padding-right: 18px; }
|
|
||||||
.message-media-control:last-child:rtl {
|
|
||||||
padding-left: 18px; }
|
|
||||||
|
|
||||||
.media-message-cover-icon {
|
|
||||||
icon-size: 32px; }
|
|
||||||
.media-message-cover-icon.fallback {
|
|
||||||
color: #515a5a;
|
|
||||||
background-color: #393f3f;
|
|
||||||
border: 2px solid #393f3f;
|
|
||||||
border-radius: 2px;
|
|
||||||
icon-size: 16px;
|
|
||||||
padding: 8px; }
|
|
||||||
|
|
||||||
.system-switch-user-submenu-icon.user-icon {
|
.system-switch-user-submenu-icon.user-icon {
|
||||||
icon-size: 20px;
|
icon-size: 20px;
|
||||||
padding: 0 2px; }
|
padding: 0 2px; }
|
||||||
@ -901,7 +823,7 @@ StScrollBar {
|
|||||||
color: transparent; }
|
color: transparent; }
|
||||||
|
|
||||||
.aggregate-menu {
|
.aggregate-menu {
|
||||||
min-width: 21em; }
|
width: 280px; }
|
||||||
.aggregate-menu .popup-menu-icon {
|
.aggregate-menu .popup-menu-icon {
|
||||||
padding: 0 4px; }
|
padding: 0 4px; }
|
||||||
|
|
||||||
@ -1038,14 +960,10 @@ StScrollBar {
|
|||||||
.search-entry {
|
.search-entry {
|
||||||
width: 320px;
|
width: 320px;
|
||||||
padding: 7px 9px;
|
padding: 7px 9px;
|
||||||
border-radius: 6px;
|
border-radius: 6px; }
|
||||||
border-color: #747467;
|
|
||||||
color: #eeeeec;
|
|
||||||
background-color: #2e3436; }
|
|
||||||
.search-entry:focus {
|
.search-entry:focus {
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
border-width: 2px;
|
border-width: 2px; }
|
||||||
border-color: #215d9c; }
|
|
||||||
.search-entry .search-entry-icon {
|
.search-entry .search-entry-icon {
|
||||||
icon-size: 1em;
|
icon-size: 1em;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
|
@ -23,6 +23,11 @@ const GnomeShellIface = '<node> \
|
|||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
|
const customCss = '.prefs-button { \
|
||||||
|
padding: 8px; \
|
||||||
|
border-radius: 20px; \
|
||||||
|
}';
|
||||||
|
|
||||||
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
|
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
|
||||||
|
|
||||||
function stripPrefix(string, prefix) {
|
function stripPrefix(string, prefix) {
|
||||||
@ -171,6 +176,21 @@ const Application = new Lang.Class({
|
|||||||
this._window.show_all();
|
this._window.show_all();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_addCustomStyle: function() {
|
||||||
|
let provider = new Gtk.CssProvider();
|
||||||
|
|
||||||
|
try {
|
||||||
|
provider.load_from_data(customCss, -1);
|
||||||
|
} catch(e) {
|
||||||
|
log('Failed to add application style');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let screen = this._window.window.get_screen();
|
||||||
|
let priority = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION;
|
||||||
|
Gtk.StyleContext.add_provider_for_screen(screen, provider, priority);
|
||||||
|
},
|
||||||
|
|
||||||
_sortList: function(row1, row2) {
|
_sortList: function(row1, row2) {
|
||||||
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
|
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
|
||||||
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
|
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
|
||||||
@ -219,6 +239,7 @@ const Application = new Lang.Class({
|
|||||||
|
|
||||||
_onStartup: function(app) {
|
_onStartup: function(app) {
|
||||||
this._buildUI(app);
|
this._buildUI(app);
|
||||||
|
this._addCustomStyle();
|
||||||
this._scanExtensions();
|
this._scanExtensions();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -295,7 +316,7 @@ const ExtensionRow = new Lang.Class({
|
|||||||
button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
|
button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
|
||||||
icon_size: Gtk.IconSize.BUTTON,
|
icon_size: Gtk.IconSize.BUTTON,
|
||||||
visible: true }));
|
visible: true }));
|
||||||
button.get_style_context().add_class('circular');
|
button.get_style_context().add_class('prefs-button');
|
||||||
hbox.add(button);
|
hbox.add(button);
|
||||||
|
|
||||||
this.prefsButton = button;
|
this.prefsButton = button;
|
||||||
|
@ -189,8 +189,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
this._updateNextButtonSensitivity(this._entry.text.length > 0);
|
this._updateNextButtonSensitivity(this._entry.text.length > 0);
|
||||||
}));
|
}));
|
||||||
this._entry.clutter_text.connect('activate', Lang.bind(this, function() {
|
this._entry.clutter_text.connect('activate', Lang.bind(this, function() {
|
||||||
if (this.nextButton.reactive)
|
this.emit('next');
|
||||||
this.emit('next');
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16,34 +16,6 @@
|
|||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* In order for transformation animations to look good, they need to be
|
|
||||||
* incremental and have some order to them (e.g., fade out hidden items,
|
|
||||||
* then shrink to close the void left over). Chaining animations in this way can
|
|
||||||
* be error-prone and wordy using just Tweener callbacks.
|
|
||||||
*
|
|
||||||
* The classes in this file help with this:
|
|
||||||
*
|
|
||||||
* - Task. encapsulates schedulable work to be run in a specific scope.
|
|
||||||
*
|
|
||||||
* - ConsecutiveBatch. runs a series of tasks in order and completes
|
|
||||||
* when the last in the series finishes.
|
|
||||||
*
|
|
||||||
* - ConcurrentBatch. runs a set of tasks at the same time and completes
|
|
||||||
* when the last to finish completes.
|
|
||||||
*
|
|
||||||
* - Hold. prevents a batch from completing the pending task until
|
|
||||||
* the hold is released.
|
|
||||||
*
|
|
||||||
* The tasks associated with a batch are specified in a list at batch
|
|
||||||
* construction time as either task objects or plain functions.
|
|
||||||
* Batches are task objects, themselves, so they can be nested.
|
|
||||||
*
|
|
||||||
* These classes aren't specific to GDM, but were found to be unintuitive and so
|
|
||||||
* are not used elsewhere. These APIs may ultimately get dropped entirely and
|
|
||||||
* replaced by something else.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ const UserListItem = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
this.user.disconnect(this._userChangedId);
|
this._user.disconnect(this._userChangedId);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onClicked: function() {
|
_onClicked: function() {
|
||||||
@ -212,10 +212,6 @@ const UserList = new Lang.Class({
|
|||||||
return item;
|
return item;
|
||||||
},
|
},
|
||||||
|
|
||||||
containsUser: function(user) {
|
|
||||||
return this._items[user.get_user_name()] != null;
|
|
||||||
},
|
|
||||||
|
|
||||||
addUser: function(user) {
|
addUser: function(user) {
|
||||||
if (!user.is_loaded)
|
if (!user.is_loaded)
|
||||||
return;
|
return;
|
||||||
@ -928,7 +924,11 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
onUpdateScope: this,
|
onUpdateScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
let id = Mainloop.idle_add(Lang.bind(this, function() {
|
||||||
|
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
}));
|
||||||
|
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
|
||||||
},
|
},
|
||||||
onCompleteScope: this });
|
onCompleteScope: this });
|
||||||
},
|
},
|
||||||
@ -1130,10 +1130,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userManager.disconnect(this._userRemovedId);
|
this._userManager.disconnect(this._userRemovedId);
|
||||||
this._userRemovedId = 0;
|
this._userRemovedId = 0;
|
||||||
}
|
}
|
||||||
if (this._userChangedId) {
|
|
||||||
this._userManager.disconnect(this._userChangedId);
|
|
||||||
this._userChangedId = 0;
|
|
||||||
}
|
|
||||||
this._textureCache.disconnect(this._updateLogoTextureId);
|
this._textureCache.disconnect(this._updateLogoTextureId);
|
||||||
Main.layoutManager.disconnect(this._startupCompleteId);
|
Main.layoutManager.disconnect(this._startupCompleteId);
|
||||||
if (this._settings) {
|
if (this._settings) {
|
||||||
@ -1180,14 +1176,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userList.removeUser(user);
|
this._userList.removeUser(user);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._userChangedId = this._userManager.connect('user-changed',
|
|
||||||
Lang.bind(this, function(userManager, user) {
|
|
||||||
if (this._userList.containsUser(user) && user.locked)
|
|
||||||
this._userList.removeUser(user);
|
|
||||||
else if (!this._userList.containsUser(user) && !user.locked)
|
|
||||||
this._userList.addUser(user);
|
|
||||||
}));
|
|
||||||
|
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
<file>ui/animation.js</file>
|
<file>ui/animation.js</file>
|
||||||
<file>ui/appDisplay.js</file>
|
<file>ui/appDisplay.js</file>
|
||||||
<file>ui/appFavorites.js</file>
|
<file>ui/appFavorites.js</file>
|
||||||
<file>ui/audioDeviceSelection.js</file>
|
|
||||||
<file>ui/backgroundMenu.js</file>
|
<file>ui/backgroundMenu.js</file>
|
||||||
<file>ui/background.js</file>
|
<file>ui/background.js</file>
|
||||||
<file>ui/boxpointer.js</file>
|
<file>ui/boxpointer.js</file>
|
||||||
@ -63,9 +62,7 @@
|
|||||||
<file>ui/magnifierDBus.js</file>
|
<file>ui/magnifierDBus.js</file>
|
||||||
<file>ui/main.js</file>
|
<file>ui/main.js</file>
|
||||||
<file>ui/messageTray.js</file>
|
<file>ui/messageTray.js</file>
|
||||||
<file>ui/messageList.js</file>
|
|
||||||
<file>ui/modalDialog.js</file>
|
<file>ui/modalDialog.js</file>
|
||||||
<file>ui/mpris.js</file>
|
|
||||||
<file>ui/notificationDaemon.js</file>
|
<file>ui/notificationDaemon.js</file>
|
||||||
<file>ui/osdWindow.js</file>
|
<file>ui/osdWindow.js</file>
|
||||||
<file>ui/osdMonitorLabeler.js</file>
|
<file>ui/osdMonitorLabeler.js</file>
|
||||||
|
@ -448,6 +448,8 @@ const AppSwitcher = new Lang.Class({
|
|||||||
});
|
});
|
||||||
if (appIcon.cachedWindows.length > 0)
|
if (appIcon.cachedWindows.length > 0)
|
||||||
this._addIcon(appIcon);
|
this._addIcon(appIcon);
|
||||||
|
else if (workspace == null)
|
||||||
|
throw new Error('%s appears to be running, but doesn\'t have any windows'.format(appIcon.app.get_name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
this._curApp = -1;
|
this._curApp = -1;
|
||||||
@ -685,17 +687,15 @@ const WindowIcon = new Lang.Class({
|
|||||||
|
|
||||||
this._icon.destroy_all_children();
|
this._icon.destroy_all_children();
|
||||||
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case AppIconMode.THUMBNAIL_ONLY:
|
case AppIconMode.THUMBNAIL_ONLY:
|
||||||
size = WINDOW_PREVIEW_SIZE;
|
size = WINDOW_PREVIEW_SIZE;
|
||||||
this._icon.add_actor(_createWindowClone(mutterWindow, size * scaleFactor));
|
this._icon.add_actor(_createWindowClone(mutterWindow, WINDOW_PREVIEW_SIZE));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AppIconMode.BOTH:
|
case AppIconMode.BOTH:
|
||||||
size = WINDOW_PREVIEW_SIZE;
|
size = WINDOW_PREVIEW_SIZE;
|
||||||
this._icon.add_actor(_createWindowClone(mutterWindow, size * scaleFactor));
|
this._icon.add_actor(_createWindowClone(mutterWindow, WINDOW_PREVIEW_SIZE));
|
||||||
|
|
||||||
if (this.app)
|
if (this.app)
|
||||||
this._icon.add_actor(this._createAppIcon(this.app,
|
this._icon.add_actor(this._createAppIcon(this.app,
|
||||||
@ -707,7 +707,7 @@ const WindowIcon = new Lang.Class({
|
|||||||
this._icon.add_actor(this._createAppIcon(this.app, size));
|
this._icon.add_actor(this._createAppIcon(this.app, size));
|
||||||
}
|
}
|
||||||
|
|
||||||
this._icon.set_size(size * scaleFactor, size * scaleFactor);
|
this._icon.set_size(size, size);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createAppIcon: function(app, size) {
|
_createAppIcon: function(app, size) {
|
||||||
|
@ -7,7 +7,7 @@ const St = imports.gi.St;
|
|||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const Atk = imports.gi.Atk;
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 16;
|
const ANIMATED_ICON_UPDATE_TIMEOUT = 14;
|
||||||
|
|
||||||
const Animation = new Lang.Class({
|
const Animation = new Lang.Class({
|
||||||
Name: 'Animation',
|
Name: 'Animation',
|
||||||
@ -33,7 +33,7 @@ const Animation = new Lang.Class({
|
|||||||
if (this._frame == 0)
|
if (this._frame == 0)
|
||||||
this._showFrame(0);
|
this._showFrame(0);
|
||||||
|
|
||||||
this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, Lang.bind(this, this._update));
|
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
|
||||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
|
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,18 +16,16 @@ const RENAMED_DESKTOP_IDS = {
|
|||||||
'glchess.desktop': 'gnome-chess.desktop',
|
'glchess.desktop': 'gnome-chess.desktop',
|
||||||
'glines.desktop': 'five-or-more.desktop',
|
'glines.desktop': 'five-or-more.desktop',
|
||||||
'gnect.desktop': 'four-in-a-row.desktop',
|
'gnect.desktop': 'four-in-a-row.desktop',
|
||||||
'gnibbles.desktop': 'org.gnome.Nibbles.desktop',
|
'gnibbles.desktop': 'gnome-nibbles.desktop',
|
||||||
'gnobots2.desktop': 'gnome-robots.desktop',
|
'gnobots2.desktop': 'gnome-robots.desktop',
|
||||||
'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
|
'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
|
||||||
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
|
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
|
||||||
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
|
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
|
||||||
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
|
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
|
||||||
'gnome-font-viewer.desktop': 'org.gnome.font-viewer.desktop',
|
'gnome-font-viewer.desktop': 'org.gnome.font-viewer.desktop',
|
||||||
'gnome-nibbles.desktop': 'org.gnome.Nibbles.desktop',
|
|
||||||
'gnome-photos.desktop': 'org.gnome.Photos.desktop',
|
'gnome-photos.desktop': 'org.gnome.Photos.desktop',
|
||||||
'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop',
|
'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop',
|
||||||
'gnome-software.desktop': 'org.gnome.Software.desktop',
|
'gnome-software.desktop': 'org.gnome.Software.desktop',
|
||||||
'gnome-terminal.desktop': 'org.gnome.Terminal.desktop',
|
|
||||||
'gnome-weather.desktop': 'org.gnome.Weather.Application.desktop',
|
'gnome-weather.desktop': 'org.gnome.Weather.Application.desktop',
|
||||||
'gnomine.desktop': 'gnome-mines.desktop',
|
'gnomine.desktop': 'gnome-mines.desktop',
|
||||||
'gnotravex.desktop': 'gnome-tetravex.desktop',
|
'gnotravex.desktop': 'gnome-tetravex.desktop',
|
||||||
|
@ -1,216 +0,0 @@
|
|||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
|
||||||
|
|
||||||
const AudioDevice = {
|
|
||||||
HEADPHONES: 1 << 0,
|
|
||||||
HEADSET: 1 << 1,
|
|
||||||
MICROPHONE: 1 << 2
|
|
||||||
};
|
|
||||||
|
|
||||||
const AudioDeviceSelectionIface = '<node> \
|
|
||||||
<interface name="org.gnome.Shell.AudioDeviceSelection"> \
|
|
||||||
<method name="Open"> \
|
|
||||||
<arg name="devices" direction="in" type="as" /> \
|
|
||||||
</method> \
|
|
||||||
<method name="Close"> \
|
|
||||||
</method> \
|
|
||||||
<signal name="DeviceSelected"> \
|
|
||||||
<arg name="device" type="s" /> \
|
|
||||||
</signal> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
|
|
||||||
const AudioDeviceSelectionDialog = new Lang.Class({
|
|
||||||
Name: 'AudioDeviceSelectionDialog',
|
|
||||||
Extends: ModalDialog.ModalDialog,
|
|
||||||
|
|
||||||
_init: function(devices) {
|
|
||||||
this.parent({ styleClass: 'audio-device-selection-dialog' });
|
|
||||||
|
|
||||||
this._deviceItems = {};
|
|
||||||
|
|
||||||
this._buildLayout();
|
|
||||||
|
|
||||||
if (devices & AudioDevice.HEADPHONES)
|
|
||||||
this._addDevice(AudioDevice.HEADPHONES);
|
|
||||||
if (devices & AudioDevice.HEADSET)
|
|
||||||
this._addDevice(AudioDevice.HEADSET);
|
|
||||||
if (devices & AudioDevice.MICROPHONE)
|
|
||||||
this._addDevice(AudioDevice.MICROPHONE);
|
|
||||||
|
|
||||||
if (this._selectionBox.get_n_children() < 2)
|
|
||||||
throw new Error('Too few devices for a selection');
|
|
||||||
},
|
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
this.parent();
|
|
||||||
},
|
|
||||||
|
|
||||||
_buildLayout: function(devices) {
|
|
||||||
let title = new St.Label({ style_class: 'audio-selection-title',
|
|
||||||
text: _("Select Audio Device"),
|
|
||||||
x_align: Clutter.ActorAlign.CENTER });
|
|
||||||
|
|
||||||
this.contentLayout.style_class = 'audio-selection-content';
|
|
||||||
this.contentLayout.add(title);
|
|
||||||
|
|
||||||
this._selectionBox = new St.BoxLayout({ style_class: 'audio-selection-box' });
|
|
||||||
this.contentLayout.add(this._selectionBox, { expand: true });
|
|
||||||
|
|
||||||
this.addButton({ action: Lang.bind(this, this._openSettings),
|
|
||||||
label: _("Sound Settings") });
|
|
||||||
this.addButton({ action: Lang.bind(this, this.close),
|
|
||||||
label: _("Cancel"),
|
|
||||||
key: Clutter.Escape });
|
|
||||||
},
|
|
||||||
|
|
||||||
_getDeviceLabel: function(device) {
|
|
||||||
switch(device) {
|
|
||||||
case AudioDevice.HEADPHONES:
|
|
||||||
return _("Headphones");
|
|
||||||
case AudioDevice.HEADSET:
|
|
||||||
return _("Headset");
|
|
||||||
case AudioDevice.MICROPHONE:
|
|
||||||
return _("Microphone");
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getDeviceIcon: function(device) {
|
|
||||||
switch(device) {
|
|
||||||
case AudioDevice.HEADPHONES:
|
|
||||||
return 'audio-headphones-symbolic';
|
|
||||||
case AudioDevice.HEADSET:
|
|
||||||
return 'audio-headset-symbolic';
|
|
||||||
case AudioDevice.MICROPHONE:
|
|
||||||
return 'audio-input-microphone-symbolic';
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_addDevice: function(device) {
|
|
||||||
let box = new St.BoxLayout({ style_class: 'audio-selection-device-box',
|
|
||||||
vertical: true });
|
|
||||||
box.connect('notify::height',
|
|
||||||
function() {
|
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
|
||||||
function() {
|
|
||||||
box.width = box.height;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
let icon = new St.Icon({ style_class: 'audio-selection-device-icon',
|
|
||||||
icon_name: this._getDeviceIcon(device) });
|
|
||||||
box.add(icon);
|
|
||||||
|
|
||||||
let label = new St.Label({ style_class: 'audio-selection-device-label',
|
|
||||||
text: this._getDeviceLabel(device),
|
|
||||||
x_align: Clutter.ActorAlign.CENTER });
|
|
||||||
box.add(label);
|
|
||||||
|
|
||||||
let button = new St.Button({ style_class: 'audio-selection-device',
|
|
||||||
can_focus: true,
|
|
||||||
child: box });
|
|
||||||
this._selectionBox.add(button);
|
|
||||||
|
|
||||||
button.connect('clicked', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
this.emit('device-selected', device);
|
|
||||||
this.close();
|
|
||||||
Main.overview.hide();
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
_openSettings: function() {
|
|
||||||
let desktopFile = 'gnome-sound-panel.desktop'
|
|
||||||
let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
|
|
||||||
|
|
||||||
if (!app) {
|
|
||||||
log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.close();
|
|
||||||
Main.overview.hide();
|
|
||||||
app.activate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const AudioDeviceSelectionDBus = new Lang.Class({
|
|
||||||
Name: 'AudioDeviceSelectionDBus',
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
this._audioSelectionDialog = null;
|
|
||||||
|
|
||||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(AudioDeviceSelectionIface, this);
|
|
||||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/AudioDeviceSelection');
|
|
||||||
|
|
||||||
Gio.DBus.session.own_name('org.gnome.Shell.AudioDeviceSelection', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDialogClosed: function() {
|
|
||||||
this._audioSelectionDialog = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDeviceSelected: function(dialog, device) {
|
|
||||||
let connection = this._dbusImpl.get_connection();
|
|
||||||
let info = this._dbusImpl.get_info();
|
|
||||||
let deviceName = Object.keys(AudioDevice).filter(
|
|
||||||
function(dev) {
|
|
||||||
return AudioDevice[dev] == device;
|
|
||||||
})[0].toLowerCase();
|
|
||||||
connection.emit_signal(this._audioSelectionDialog._sender,
|
|
||||||
this._dbusImpl.get_object_path(),
|
|
||||||
info ? info.name : null,
|
|
||||||
'DeviceSelected',
|
|
||||||
GLib.Variant.new('(s)', [deviceName]));
|
|
||||||
},
|
|
||||||
|
|
||||||
OpenAsync: function(params, invocation) {
|
|
||||||
if (this._audioSelectionDialog) {
|
|
||||||
invocation.return_value(null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let [deviceNames] = params;
|
|
||||||
let devices = 0;
|
|
||||||
deviceNames.forEach(function(n) {
|
|
||||||
devices |= AudioDevice[n.toUpperCase()];
|
|
||||||
});
|
|
||||||
|
|
||||||
let dialog;
|
|
||||||
try {
|
|
||||||
dialog = new AudioDeviceSelectionDialog(devices);
|
|
||||||
} catch(e) {
|
|
||||||
invocation.return_value(null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dialog._sender = invocation.get_sender();
|
|
||||||
|
|
||||||
dialog.connect('closed', Lang.bind(this, this._onDialogClosed));
|
|
||||||
dialog.connect('device-selected',
|
|
||||||
Lang.bind(this, this._onDeviceSelected));
|
|
||||||
dialog.open();
|
|
||||||
|
|
||||||
this._audioSelectionDialog = dialog;
|
|
||||||
invocation.return_value(null);
|
|
||||||
},
|
|
||||||
|
|
||||||
CloseAsync: function(params, invocation) {
|
|
||||||
if (this._audioSelectionDialog &&
|
|
||||||
this._audioSelectionDialog._sender == invocation.get_sender())
|
|
||||||
this._audioSelectionDialog.close();
|
|
||||||
|
|
||||||
invocation.return_value(null);
|
|
||||||
}
|
|
||||||
});
|
|
@ -247,13 +247,6 @@ const Background = new Lang.Class({
|
|||||||
this._cancellable = new Gio.Cancellable();
|
this._cancellable = new Gio.Cancellable();
|
||||||
this.isLoaded = false;
|
this.isLoaded = false;
|
||||||
|
|
||||||
this._clock = new GnomeDesktop.WallClock();
|
|
||||||
this._timezoneChangedId = this._clock.connect('notify::timezone',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
if (this._animation)
|
|
||||||
this._loadAnimation(this._animation.file);
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
|
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
|
||||||
this.emit('changed');
|
this.emit('changed');
|
||||||
}));
|
}));
|
||||||
@ -272,10 +265,6 @@ const Background = new Lang.Class({
|
|||||||
}
|
}
|
||||||
this._fileWatches = null;
|
this._fileWatches = null;
|
||||||
|
|
||||||
if (this._timezoneChangedId != 0)
|
|
||||||
this._clock.disconnect(this._timezoneChangedId);
|
|
||||||
this._timezoneChangedId = 0;
|
|
||||||
|
|
||||||
if (this._settingsChangedSignalId != 0)
|
if (this._settingsChangedSignalId != 0)
|
||||||
this._settings.disconnect(this._settingsChangedSignalId);
|
this._settings.disconnect(this._settingsChangedSignalId);
|
||||||
this._settingsChangedSignalId = 0;
|
this._settingsChangedSignalId = 0;
|
||||||
|
@ -1,19 +1,23 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const Atk = imports.gi.Atk;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
const Gettext_gtk30 = imports.gettext.domain('gtk30');
|
const Gettext_gtk30 = imports.gettext.domain('gtk30');
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageList = imports.ui.messageList;
|
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const Mpris = imports.ui.mpris;
|
const Tweener = imports.ui.tweener;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||||
@ -22,24 +26,28 @@ const ELLIPSIS_CHAR = '\u2026';
|
|||||||
|
|
||||||
const MESSAGE_ICON_SIZE = 32;
|
const MESSAGE_ICON_SIZE = 32;
|
||||||
|
|
||||||
|
const MESSAGE_ANIMATION_TIME = 0.1;
|
||||||
|
|
||||||
|
const DEFAULT_EXPAND_LINES = 6;
|
||||||
|
|
||||||
// alias to prevent xgettext from picking up strings translated in GTK+
|
// alias to prevent xgettext from picking up strings translated in GTK+
|
||||||
const gtk30_ = Gettext_gtk30.gettext;
|
const gtk30_ = Gettext_gtk30.gettext;
|
||||||
const NC_ = function(context, str) { return context + '\u0004' + str; };
|
const NC_ = function(context, str) { return context + '\u0004' + str; };
|
||||||
|
|
||||||
function sameYear(dateA, dateB) {
|
function _sameYear(dateA, dateB) {
|
||||||
return (dateA.getYear() == dateB.getYear());
|
return (dateA.getYear() == dateB.getYear());
|
||||||
}
|
}
|
||||||
|
|
||||||
function sameMonth(dateA, dateB) {
|
function _sameMonth(dateA, dateB) {
|
||||||
return sameYear(dateA, dateB) && (dateA.getMonth() == dateB.getMonth());
|
return _sameYear(dateA, dateB) && (dateA.getMonth() == dateB.getMonth());
|
||||||
}
|
}
|
||||||
|
|
||||||
function sameDay(dateA, dateB) {
|
function _sameDay(dateA, dateB) {
|
||||||
return sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
|
return _sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
|
||||||
}
|
}
|
||||||
|
|
||||||
function isToday(date) {
|
function _isToday(date) {
|
||||||
return sameDay(new Date(), date);
|
return _sameDay(new Date(), date);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _isWorkDay(date) {
|
function _isWorkDay(date) {
|
||||||
@ -90,6 +98,148 @@ function _getCalendarDayAbbreviation(dayNumber) {
|
|||||||
return Shell.util_translate_time_string(abbreviations[dayNumber]);
|
return Shell.util_translate_time_string(abbreviations[dayNumber]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _fixMarkup(text, allowMarkup) {
|
||||||
|
if (allowMarkup) {
|
||||||
|
// Support &, ", ', < and >, escape all other
|
||||||
|
// occurrences of '&'.
|
||||||
|
let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&');
|
||||||
|
|
||||||
|
// Support <b>, <i>, and <u>, escape anything else
|
||||||
|
// so it displays as raw markup.
|
||||||
|
_text = _text.replace(/<(?!\/?[biu]>)/g, '<');
|
||||||
|
|
||||||
|
try {
|
||||||
|
Pango.parse_markup(_text, -1, '');
|
||||||
|
return _text;
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// !allowMarkup, or invalid markup
|
||||||
|
return GLib.markup_escape_text(text, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const URLHighlighter = new Lang.Class({
|
||||||
|
Name: 'URLHighlighter',
|
||||||
|
|
||||||
|
_init: function(text, lineWrap, allowMarkup) {
|
||||||
|
if (!text)
|
||||||
|
text = '';
|
||||||
|
this.actor = new St.Label({ reactive: true, style_class: 'url-highlighter',
|
||||||
|
x_expand: true, x_align: Clutter.ActorAlign.START });
|
||||||
|
this._linkColor = '#ccccff';
|
||||||
|
this.actor.connect('style-changed', Lang.bind(this, function() {
|
||||||
|
let [hasColor, color] = this.actor.get_theme_node().lookup_color('link-color', false);
|
||||||
|
if (hasColor) {
|
||||||
|
let linkColor = color.to_string().substr(0, 7);
|
||||||
|
if (linkColor != this._linkColor) {
|
||||||
|
this._linkColor = linkColor;
|
||||||
|
this._highlightUrls();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
this.actor.clutter_text.line_wrap = lineWrap;
|
||||||
|
this.actor.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
|
||||||
|
|
||||||
|
this.setMarkup(text, allowMarkup);
|
||||||
|
this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) {
|
||||||
|
// Don't try to URL highlight when invisible.
|
||||||
|
// The MessageTray doesn't actually hide us, so
|
||||||
|
// we need to check for paint opacities as well.
|
||||||
|
if (!actor.visible || actor.get_paint_opacity() == 0)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
// Keep Notification.actor from seeing this and taking
|
||||||
|
// a pointer grab, which would block our button-release-event
|
||||||
|
// handler, if an URL is clicked
|
||||||
|
return this._findUrlAtPos(event) != -1;
|
||||||
|
}));
|
||||||
|
this.actor.connect('button-release-event', Lang.bind(this, function (actor, event) {
|
||||||
|
if (!actor.visible || actor.get_paint_opacity() == 0)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
let urlId = this._findUrlAtPos(event);
|
||||||
|
if (urlId != -1) {
|
||||||
|
let url = this._urls[urlId].url;
|
||||||
|
if (url.indexOf(':') == -1)
|
||||||
|
url = 'http://' + url;
|
||||||
|
|
||||||
|
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context(0, -1));
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
this.actor.connect('motion-event', Lang.bind(this, function(actor, event) {
|
||||||
|
if (!actor.visible || actor.get_paint_opacity() == 0)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
let urlId = this._findUrlAtPos(event);
|
||||||
|
if (urlId != -1 && !this._cursorChanged) {
|
||||||
|
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
|
||||||
|
this._cursorChanged = true;
|
||||||
|
} else if (urlId == -1) {
|
||||||
|
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||||
|
this._cursorChanged = false;
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
this.actor.connect('leave-event', Lang.bind(this, function() {
|
||||||
|
if (!this.actor.visible || this.actor.get_paint_opacity() == 0)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
if (this._cursorChanged) {
|
||||||
|
this._cursorChanged = false;
|
||||||
|
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
setMarkup: function(text, allowMarkup) {
|
||||||
|
text = text ? _fixMarkup(text, allowMarkup) : '';
|
||||||
|
this._text = text;
|
||||||
|
|
||||||
|
this.actor.clutter_text.set_markup(text);
|
||||||
|
/* clutter_text.text contain text without markup */
|
||||||
|
this._urls = Util.findUrls(this.actor.clutter_text.text);
|
||||||
|
this._highlightUrls();
|
||||||
|
},
|
||||||
|
|
||||||
|
_highlightUrls: function() {
|
||||||
|
// text here contain markup
|
||||||
|
let urls = Util.findUrls(this._text);
|
||||||
|
let markup = '';
|
||||||
|
let pos = 0;
|
||||||
|
for (let i = 0; i < urls.length; i++) {
|
||||||
|
let url = urls[i];
|
||||||
|
let str = this._text.substr(pos, url.pos - pos);
|
||||||
|
markup += str + '<span foreground="' + this._linkColor + '"><u>' + url.url + '</u></span>';
|
||||||
|
pos = url.pos + url.url.length;
|
||||||
|
}
|
||||||
|
markup += this._text.substr(pos);
|
||||||
|
this.actor.clutter_text.set_markup(markup);
|
||||||
|
},
|
||||||
|
|
||||||
|
_findUrlAtPos: function(event) {
|
||||||
|
let success;
|
||||||
|
let [x, y] = event.get_coords();
|
||||||
|
[success, x, y] = this.actor.transform_stage_point(x, y);
|
||||||
|
let find_pos = -1;
|
||||||
|
for (let i = 0; i < this.actor.clutter_text.text.length; i++) {
|
||||||
|
let [success, px, py, line_height] = this.actor.clutter_text.position_to_coords(i);
|
||||||
|
if (py > y || py + line_height < y || x < px)
|
||||||
|
continue;
|
||||||
|
find_pos = i;
|
||||||
|
}
|
||||||
|
if (find_pos != -1) {
|
||||||
|
for (let i = 0; i < this._urls.length; i++)
|
||||||
|
if (find_pos >= this._urls[i].pos &&
|
||||||
|
this._urls[i].pos + this._urls[i].url.length > find_pos)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Abstraction for an appointment/event in a calendar
|
// Abstraction for an appointment/event in a calendar
|
||||||
|
|
||||||
const CalendarEvent = new Lang.Class({
|
const CalendarEvent = new Lang.Class({
|
||||||
@ -394,7 +544,7 @@ const Calendar = new Lang.Class({
|
|||||||
|
|
||||||
// Sets the calendar to show a specific date
|
// Sets the calendar to show a specific date
|
||||||
setDate: function(date) {
|
setDate: function(date) {
|
||||||
if (sameDay(date, this._selectedDate))
|
if (_sameDay(date, this._selectedDate))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._selectedDate = date;
|
this._selectedDate = date;
|
||||||
@ -575,8 +725,7 @@ const Calendar = new Lang.Class({
|
|||||||
// nRows here means 6 weeks + one header + one navbar
|
// nRows here means 6 weeks + one header + one navbar
|
||||||
let nRows = 8;
|
let nRows = 8;
|
||||||
while (row < 8) {
|
while (row < 8) {
|
||||||
// xgettext:no-javascript-format
|
let button = new St.Button({ label: iter.getDate().toString(),
|
||||||
let button = new St.Button({ label: iter.toLocaleFormat(C_("date day number format", "%d")),
|
|
||||||
can_focus: true });
|
can_focus: true });
|
||||||
let rtl = button.get_text_direction() == Clutter.TextDirection.RTL;
|
let rtl = button.get_text_direction() == Clutter.TextDirection.RTL;
|
||||||
|
|
||||||
@ -607,7 +756,7 @@ const Calendar = new Lang.Class({
|
|||||||
if (leftMost)
|
if (leftMost)
|
||||||
styleClass = 'calendar-day-left ' + styleClass;
|
styleClass = 'calendar-day-left ' + styleClass;
|
||||||
|
|
||||||
if (sameDay(now, iter))
|
if (_sameDay(now, iter))
|
||||||
styleClass += ' calendar-today';
|
styleClass += ' calendar-today';
|
||||||
else if (iter.getMonth() != this._selectedDate.getMonth())
|
else if (iter.getMonth() != this._selectedDate.getMonth())
|
||||||
styleClass += ' calendar-other-month-day';
|
styleClass += ' calendar-other-month-day';
|
||||||
@ -650,16 +799,16 @@ const Calendar = new Lang.Class({
|
|||||||
_update: function() {
|
_update: function() {
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
|
|
||||||
if (sameYear(this._selectedDate, now))
|
if (_sameYear(this._selectedDate, now))
|
||||||
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormatWithoutYear);
|
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormatWithoutYear);
|
||||||
else
|
else
|
||||||
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
|
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
|
||||||
|
|
||||||
if (!this._calendarBegin || !sameMonth(this._selectedDate, this._calendarBegin) || !sameDay(now, this._markedAsToday))
|
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin) || !_sameDay(now, this._markedAsToday))
|
||||||
this._rebuildCalendar();
|
this._rebuildCalendar();
|
||||||
|
|
||||||
this._buttons.forEach(Lang.bind(this, function(button) {
|
this._buttons.forEach(Lang.bind(this, function(button) {
|
||||||
if (sameDay(button._date, this._selectedDate)) {
|
if (_sameDay(button._date, this._selectedDate)) {
|
||||||
button.add_style_pseudo_class('active');
|
button.add_style_pseudo_class('active');
|
||||||
if (this._shouldDateGrabFocus)
|
if (this._shouldDateGrabFocus)
|
||||||
button.grab_key_focus();
|
button.grab_key_focus();
|
||||||
@ -671,9 +820,353 @@ const Calendar = new Lang.Class({
|
|||||||
});
|
});
|
||||||
Signals.addSignalMethods(Calendar.prototype);
|
Signals.addSignalMethods(Calendar.prototype);
|
||||||
|
|
||||||
|
const ScaleLayout = new Lang.Class({
|
||||||
|
Name: 'ScaleLayout',
|
||||||
|
Extends: Clutter.BinLayout,
|
||||||
|
|
||||||
|
_connectContainer: function(container) {
|
||||||
|
if (this._container == container)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this._container)
|
||||||
|
for (let id of this._signals)
|
||||||
|
this._container.disconnect(id);
|
||||||
|
|
||||||
|
this._container = container;
|
||||||
|
this._signals = [];
|
||||||
|
|
||||||
|
if (this._container)
|
||||||
|
for (let signal of ['notify::scale-x', 'notify::scale-y']) {
|
||||||
|
let id = this._container.connect(signal, Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
this.layout_changed();
|
||||||
|
}));
|
||||||
|
this._signals.push(id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_width: function(container, forHeight) {
|
||||||
|
this._connectContainer(container);
|
||||||
|
|
||||||
|
let [min, nat] = this.parent(container, forHeight);
|
||||||
|
return [Math.floor(min * container.scale_x),
|
||||||
|
Math.floor(nat * container.scale_x)];
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_height: function(container, forWidth) {
|
||||||
|
this._connectContainer(container);
|
||||||
|
|
||||||
|
let [min, nat] = this.parent(container, forWidth);
|
||||||
|
return [Math.floor(min * container.scale_y),
|
||||||
|
Math.floor(nat * container.scale_y)];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const LabelExpanderLayout = new Lang.Class({
|
||||||
|
Name: 'LabelExpanderLayout',
|
||||||
|
Extends: Clutter.LayoutManager,
|
||||||
|
Properties: { 'expansion': GObject.ParamSpec.double('expansion',
|
||||||
|
'Expansion',
|
||||||
|
'Expansion of the layout, between 0 (collapsed) ' +
|
||||||
|
'and 1 (fully expanded',
|
||||||
|
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
||||||
|
0, 1, 0)},
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
this._expansion = 0;
|
||||||
|
this._expandLines = DEFAULT_EXPAND_LINES;
|
||||||
|
|
||||||
|
this.parent(params);
|
||||||
|
},
|
||||||
|
|
||||||
|
get expansion() {
|
||||||
|
return this._expansion;
|
||||||
|
},
|
||||||
|
|
||||||
|
set expansion(v) {
|
||||||
|
if (v == this._expansion)
|
||||||
|
return;
|
||||||
|
this._expansion = v;
|
||||||
|
this.notify('expansion');
|
||||||
|
|
||||||
|
let visibleIndex = this._expansion > 0 ? 1 : 0;
|
||||||
|
for (let i = 0; this._container && i < this._container.get_n_children(); i++)
|
||||||
|
this._container.get_child_at_index(i).visible = (i == visibleIndex);
|
||||||
|
|
||||||
|
this.layout_changed();
|
||||||
|
},
|
||||||
|
|
||||||
|
set expandLines(v) {
|
||||||
|
if (v == this._expandLines)
|
||||||
|
return;
|
||||||
|
this._expandLines = v;
|
||||||
|
if (this._expansion > 0)
|
||||||
|
this.layout_changed();
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_set_container: function(container) {
|
||||||
|
this._container = container;
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_width: function(container, forHeight) {
|
||||||
|
let [min, nat] = [0, 0];
|
||||||
|
|
||||||
|
for (let i = 0; i < container.get_n_children(); i++) {
|
||||||
|
if (i > 1)
|
||||||
|
break; // we support one unexpanded + one expanded child
|
||||||
|
|
||||||
|
let child = container.get_child_at_index(i);
|
||||||
|
let [childMin, childNat] = child.get_preferred_width(forHeight);
|
||||||
|
[min, nat] = [Math.max(min, childMin), Math.max(nat, childNat)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [min, nat];
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_height: function(container, forWidth) {
|
||||||
|
let [min, nat] = [0, 0];
|
||||||
|
|
||||||
|
let children = container.get_children();
|
||||||
|
if (children[0])
|
||||||
|
[min, nat] = children[0].get_preferred_height(forWidth);
|
||||||
|
|
||||||
|
if (children[1]) {
|
||||||
|
let [min2, nat2] = children[1].get_preferred_height(forWidth);
|
||||||
|
let [expMin, expNat] = [Math.min(min2, min * this._expandLines),
|
||||||
|
Math.min(nat2, nat * this._expandLines)];
|
||||||
|
[min, nat] = [min + this._expansion * (expMin - min),
|
||||||
|
nat + this._expansion * (expNat - nat)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [min, nat];
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_allocate: function(container, box, flags) {
|
||||||
|
for (let i = 0; i < container.get_n_children(); i++) {
|
||||||
|
let child = container.get_child_at_index(i);
|
||||||
|
|
||||||
|
if (child.visible)
|
||||||
|
child.allocate(box, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Message = new Lang.Class({
|
||||||
|
Name: 'Message',
|
||||||
|
|
||||||
|
_init: function(title, body) {
|
||||||
|
this.expanded = false;
|
||||||
|
|
||||||
|
this.actor = new St.Button({ style_class: 'message',
|
||||||
|
accessible_role: Atk.Role.NOTIFICATION,
|
||||||
|
can_focus: true,
|
||||||
|
x_expand: true, x_fill: true });
|
||||||
|
this.actor.connect('key-press-event',
|
||||||
|
Lang.bind(this, this._onKeyPressed));
|
||||||
|
|
||||||
|
let vbox = new St.BoxLayout({ vertical: true });
|
||||||
|
this.actor.set_child(vbox);
|
||||||
|
|
||||||
|
let hbox = new St.BoxLayout();
|
||||||
|
vbox.add_actor(hbox);
|
||||||
|
|
||||||
|
this._actionBin = new St.Widget({ layout_manager: new ScaleLayout(),
|
||||||
|
visible: false });
|
||||||
|
vbox.add_actor(this._actionBin);
|
||||||
|
|
||||||
|
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
|
||||||
|
y_expand: true,
|
||||||
|
visible: false });
|
||||||
|
hbox.add_actor(this._iconBin);
|
||||||
|
|
||||||
|
let contentBox = new St.BoxLayout({ style_class: 'message-content',
|
||||||
|
vertical: true, x_expand: true });
|
||||||
|
hbox.add_actor(contentBox);
|
||||||
|
|
||||||
|
let titleBox = new St.BoxLayout();
|
||||||
|
contentBox.add_actor(titleBox);
|
||||||
|
|
||||||
|
this.titleLabel = new St.Label({ style_class: 'message-title',
|
||||||
|
x_expand: true,
|
||||||
|
x_align: Clutter.ActorAlign.START });
|
||||||
|
this.setTitle(title);
|
||||||
|
titleBox.add_actor(this.titleLabel);
|
||||||
|
|
||||||
|
this._secondaryBin = new St.Bin({ style_class: 'message-secondary-bin' });
|
||||||
|
titleBox.add_actor(this._secondaryBin);
|
||||||
|
|
||||||
|
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic',
|
||||||
|
icon_size: 16 });
|
||||||
|
this._closeButton = new St.Button({ child: closeIcon, visible: false });
|
||||||
|
titleBox.add_actor(this._closeButton);
|
||||||
|
|
||||||
|
this._bodyStack = new St.Widget({ x_expand: true });
|
||||||
|
this._bodyStack.layout_manager = new LabelExpanderLayout();
|
||||||
|
contentBox.add_actor(this._bodyStack);
|
||||||
|
|
||||||
|
this.bodyLabel = new URLHighlighter('', false, this._useBodyMarkup);
|
||||||
|
this.bodyLabel.actor.add_style_class_name('message-body');
|
||||||
|
this._bodyStack.add_actor(this.bodyLabel.actor);
|
||||||
|
this.setBody(body);
|
||||||
|
|
||||||
|
this._closeButton.connect('clicked', Lang.bind(this, this.close));
|
||||||
|
this.actor.connect('notify::hover', Lang.bind(this, this._sync));
|
||||||
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
this._sync();
|
||||||
|
},
|
||||||
|
|
||||||
|
close: function() {
|
||||||
|
this.emit('close');
|
||||||
|
},
|
||||||
|
|
||||||
|
setIcon: function(actor) {
|
||||||
|
this._iconBin.child = actor;
|
||||||
|
this._iconBin.visible = (actor != null);
|
||||||
|
},
|
||||||
|
|
||||||
|
setSecondaryActor: function(actor) {
|
||||||
|
this._secondaryBin.child = actor;
|
||||||
|
},
|
||||||
|
|
||||||
|
setTitle: function(text) {
|
||||||
|
let title = text ? _fixMarkup(text.replace(/\n/g, ' '), false) : '';
|
||||||
|
this.titleLabel.clutter_text.set_markup(title);
|
||||||
|
},
|
||||||
|
|
||||||
|
setBody: function(text) {
|
||||||
|
this._bodyText = text;
|
||||||
|
this.bodyLabel.setMarkup(text ? text.replace(/\n/g, ' ') : '',
|
||||||
|
this._useBodyMarkup);
|
||||||
|
if (this._expandedLabel)
|
||||||
|
this._expandedLabel.setMarkup(text, this._useBodyMarkup);
|
||||||
|
},
|
||||||
|
|
||||||
|
setUseBodyMarkup: function(enable) {
|
||||||
|
if (this._useBodyMarkup === enable)
|
||||||
|
return;
|
||||||
|
this._useBodyMarkup = enable;
|
||||||
|
if (this.bodyLabel)
|
||||||
|
this.setBody(this._bodyText);
|
||||||
|
},
|
||||||
|
|
||||||
|
setActionArea: function(actor) {
|
||||||
|
if (actor == null) {
|
||||||
|
if (this._actionBin.get_n_children() > 0)
|
||||||
|
this._actionBin.get_child_at_index(0).destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._actionBin.get_n_children() > 0)
|
||||||
|
throw new Error('Message already has an action area');
|
||||||
|
|
||||||
|
this._actionBin.add_actor(actor);
|
||||||
|
this._actionBin.visible = this.expanded;
|
||||||
|
},
|
||||||
|
|
||||||
|
setExpandedBody: function(actor) {
|
||||||
|
if (actor == null) {
|
||||||
|
if (this._bodyStack.get_n_children() > 1)
|
||||||
|
this._bodyStack.get_child_at_index(1).destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._bodyStack.get_n_children() > 1)
|
||||||
|
throw new Error('Message already has an expanded body actor');
|
||||||
|
|
||||||
|
this._bodyStack.insert_child_at_index(actor, 1);
|
||||||
|
},
|
||||||
|
|
||||||
|
setExpandedLines: function(nLines) {
|
||||||
|
this._bodyStack.layout_manager.expandLines = nLines;
|
||||||
|
},
|
||||||
|
|
||||||
|
expand: function(animate) {
|
||||||
|
this.expanded = true;
|
||||||
|
|
||||||
|
this._actionBin.visible = (this._actionBin.get_n_children() > 0);
|
||||||
|
|
||||||
|
if (this._bodyStack.get_n_children() < 2) {
|
||||||
|
this._expandedLabel = new URLHighlighter(this._bodyText,
|
||||||
|
true, this._useBodyMarkup);
|
||||||
|
this.setExpandedBody(this._expandedLabel.actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animate) {
|
||||||
|
Tweener.addTween(this._bodyStack.layout_manager,
|
||||||
|
{ expansion: 1,
|
||||||
|
time: MessageTray.ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
||||||
|
this._actionBin.scale_y = 0;
|
||||||
|
Tweener.addTween(this._actionBin,
|
||||||
|
{ scale_y: 1,
|
||||||
|
time: MessageTray.ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
||||||
|
} else {
|
||||||
|
this._bodyStack.layout_manager.expansion = 1;
|
||||||
|
this._actionBin.scale_y = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.emit('expanded');
|
||||||
|
},
|
||||||
|
|
||||||
|
unexpand: function(animate) {
|
||||||
|
if (animate) {
|
||||||
|
Tweener.addTween(this._bodyStack.layout_manager,
|
||||||
|
{ expansion: 0,
|
||||||
|
time: MessageTray.ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
||||||
|
Tweener.addTween(this._actionBin,
|
||||||
|
{ scale_y: 0,
|
||||||
|
time: MessageTray.ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onCompleteScope: this,
|
||||||
|
onComplete: function() {
|
||||||
|
this._actionBin.hide();
|
||||||
|
this.expanded = false;
|
||||||
|
}});
|
||||||
|
} else {
|
||||||
|
this._bodyStack.layout_manager.expansion = 0;
|
||||||
|
this._actionBin.scale_y = 0;
|
||||||
|
this.expanded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.emit('unexpanded');
|
||||||
|
},
|
||||||
|
|
||||||
|
canClose: function() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_sync: function() {
|
||||||
|
let hovered = this.actor.hover;
|
||||||
|
this._closeButton.visible = hovered && this.canClose();
|
||||||
|
this._secondaryBin.visible = !hovered;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClicked: function() {
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
},
|
||||||
|
|
||||||
|
_onKeyPressed: function(a, event) {
|
||||||
|
let keysym = event.get_key_symbol();
|
||||||
|
|
||||||
|
if (keysym == Clutter.KEY_Delete ||
|
||||||
|
keysym == Clutter.KEY_KP_Delete) {
|
||||||
|
this.close();
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(Message.prototype);
|
||||||
|
|
||||||
const EventMessage = new Lang.Class({
|
const EventMessage = new Lang.Class({
|
||||||
Name: 'EventMessage',
|
Name: 'EventMessage',
|
||||||
Extends: MessageList.Message,
|
Extends: Message,
|
||||||
|
|
||||||
_init: function(event, date) {
|
_init: function(event, date) {
|
||||||
this._event = event;
|
this._event = event;
|
||||||
@ -716,13 +1209,13 @@ const EventMessage = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
canClose: function() {
|
canClose: function() {
|
||||||
return isToday(this._date);
|
return _isToday(this._date);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const NotificationMessage = new Lang.Class({
|
const NotificationMessage = new Lang.Class({
|
||||||
Name: 'NotificationMessage',
|
Name: 'NotificationMessage',
|
||||||
Extends: MessageList.Message,
|
Extends: Message,
|
||||||
|
|
||||||
_init: function(notification) {
|
_init: function(notification) {
|
||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
@ -737,7 +1230,7 @@ const NotificationMessage = new Lang.Class({
|
|||||||
this._closed = true;
|
this._closed = true;
|
||||||
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
||||||
}));
|
}));
|
||||||
this._destroyId = notification.connect('destroy', Lang.bind(this,
|
notification.connect('destroy', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
if (!this._closed)
|
if (!this._closed)
|
||||||
this.close();
|
this.close();
|
||||||
@ -769,16 +1262,220 @@ const NotificationMessage = new Lang.Class({
|
|||||||
if (this._updatedId)
|
if (this._updatedId)
|
||||||
this.notification.disconnect(this._updatedId);
|
this.notification.disconnect(this._updatedId);
|
||||||
this._updatedId = 0;
|
this._updatedId = 0;
|
||||||
|
|
||||||
if (this._destroyId)
|
|
||||||
this.notification.disconnect(this._destroyId);
|
|
||||||
this._destroyId = 0;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const MessageListSection = new Lang.Class({
|
||||||
|
Name: 'MessageListSection',
|
||||||
|
|
||||||
|
_init: function(title) {
|
||||||
|
this.actor = new St.BoxLayout({ style_class: 'message-list-section',
|
||||||
|
clip_to_allocation: true,
|
||||||
|
x_expand: true, vertical: true });
|
||||||
|
let titleBox = new St.BoxLayout({ style_class: 'message-list-section-title-box' });
|
||||||
|
this.actor.add_actor(titleBox);
|
||||||
|
|
||||||
|
this._title = new St.Button({ style_class: 'message-list-section-title',
|
||||||
|
label: title,
|
||||||
|
can_focus: true,
|
||||||
|
x_expand: true,
|
||||||
|
x_align: St.Align.START });
|
||||||
|
titleBox.add_actor(this._title);
|
||||||
|
|
||||||
|
this._title.connect('clicked', Lang.bind(this, this._onTitleClicked));
|
||||||
|
this._title.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
|
||||||
|
|
||||||
|
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic' });
|
||||||
|
this._closeButton = new St.Button({ style_class: 'message-list-section-close',
|
||||||
|
child: closeIcon,
|
||||||
|
accessible_name: _("Clear section"),
|
||||||
|
can_focus: true });
|
||||||
|
this._closeButton.set_x_align(Clutter.ActorAlign.END);
|
||||||
|
titleBox.add_actor(this._closeButton);
|
||||||
|
|
||||||
|
this._closeButton.connect('clicked', Lang.bind(this, this.clear));
|
||||||
|
|
||||||
|
this._list = new St.BoxLayout({ style_class: 'message-list-section-list',
|
||||||
|
vertical: true });
|
||||||
|
this.actor.add_actor(this._list);
|
||||||
|
|
||||||
|
this._list.connect('actor-added', Lang.bind(this, this._sync));
|
||||||
|
this._list.connect('actor-removed', Lang.bind(this, this._sync));
|
||||||
|
|
||||||
|
let id = Main.sessionMode.connect('updated',
|
||||||
|
Lang.bind(this, this._sync));
|
||||||
|
this.actor.connect('destroy', function() {
|
||||||
|
Main.sessionMode.disconnect(id);
|
||||||
|
});
|
||||||
|
|
||||||
|
this._messages = new Map();
|
||||||
|
this._date = new Date();
|
||||||
|
this.empty = true;
|
||||||
|
this._sync();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onTitleClicked: function() {
|
||||||
|
Main.overview.hide();
|
||||||
|
Main.panel.closeCalendar();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onKeyFocusIn: function(actor) {
|
||||||
|
this.emit('key-focus-in', actor);
|
||||||
|
},
|
||||||
|
|
||||||
|
get allowed() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
setDate: function(date) {
|
||||||
|
if (_sameDay(date, this._date))
|
||||||
|
return;
|
||||||
|
this._date = date;
|
||||||
|
this._sync();
|
||||||
|
},
|
||||||
|
|
||||||
|
addMessage: function(message, animate) {
|
||||||
|
this.addMessageAtIndex(message, -1, animate);
|
||||||
|
},
|
||||||
|
|
||||||
|
addMessageAtIndex: function(message, index, animate) {
|
||||||
|
let obj = {
|
||||||
|
container: null,
|
||||||
|
destroyId: 0,
|
||||||
|
keyFocusId: 0,
|
||||||
|
closeId: 0
|
||||||
|
};
|
||||||
|
let pivot = new Clutter.Point({ x: .5, y: .5 });
|
||||||
|
let scale = animate ? 0 : 1;
|
||||||
|
obj.container = new St.Widget({ layout_manager: new ScaleLayout(),
|
||||||
|
pivot_point: pivot,
|
||||||
|
scale_x: scale, scale_y: scale });
|
||||||
|
obj.keyFocusId = message.actor.connect('key-focus-in',
|
||||||
|
Lang.bind(this, this._onKeyFocusIn));
|
||||||
|
obj.destroyId = message.actor.connect('destroy',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this.removeMessage(message, false);
|
||||||
|
}));
|
||||||
|
obj.closeId = message.connect('close',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this.removeMessage(message, true);
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._messages.set(message, obj);
|
||||||
|
obj.container.add_actor(message.actor);
|
||||||
|
|
||||||
|
this._list.insert_child_at_index(obj.container, index);
|
||||||
|
|
||||||
|
if (animate)
|
||||||
|
Tweener.addTween(obj.container, { scale_x: 1,
|
||||||
|
scale_y: 1,
|
||||||
|
time: MESSAGE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
||||||
|
},
|
||||||
|
|
||||||
|
moveMessage: function(message, index, animate) {
|
||||||
|
let obj = this._messages.get(message);
|
||||||
|
|
||||||
|
if (!animate) {
|
||||||
|
this._list.set_child_at_index(obj.container, index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let onComplete = Lang.bind(this, function() {
|
||||||
|
this._list.set_child_at_index(obj.container, index);
|
||||||
|
Tweener.addTween(obj.container, { scale_x: 1,
|
||||||
|
scale_y: 1,
|
||||||
|
time: MESSAGE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad' });
|
||||||
|
});
|
||||||
|
Tweener.addTween(obj.container, { scale_x: 0,
|
||||||
|
scale_y: 0,
|
||||||
|
time: MESSAGE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: onComplete });
|
||||||
|
},
|
||||||
|
|
||||||
|
removeMessage: function(message, animate) {
|
||||||
|
let obj = this._messages.get(message);
|
||||||
|
|
||||||
|
message.actor.disconnect(obj.destroyId);
|
||||||
|
message.actor.disconnect(obj.keyFocusId);
|
||||||
|
message.disconnect(obj.closeId);
|
||||||
|
|
||||||
|
this._messages.delete(message);
|
||||||
|
|
||||||
|
if (animate) {
|
||||||
|
Tweener.addTween(obj.container, { scale_x: 0, scale_y: 0,
|
||||||
|
time: MESSAGE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: function() {
|
||||||
|
obj.container.destroy();
|
||||||
|
global.sync_pointer();
|
||||||
|
}});
|
||||||
|
} else {
|
||||||
|
obj.container.destroy();
|
||||||
|
global.sync_pointer();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
clear: function() {
|
||||||
|
let messages = [...this._messages.keys()].filter(function(message) {
|
||||||
|
return message.canClose();
|
||||||
|
});
|
||||||
|
|
||||||
|
// If there are few messages, letting them all zoom out looks OK
|
||||||
|
if (messages.length < 2) {
|
||||||
|
messages.forEach(function(message) {
|
||||||
|
message.close();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Otherwise we slide them out one by one, and then zoom them
|
||||||
|
// out "off-screen" in the end to smoothly shrink the parent
|
||||||
|
let delay = MESSAGE_ANIMATION_TIME / Math.max(messages.length, 5);
|
||||||
|
for (let i = 0; i < messages.length; i++) {
|
||||||
|
let message = messages[i];
|
||||||
|
let obj = this._messages.get(message);
|
||||||
|
Tweener.addTween(obj.container,
|
||||||
|
{ anchor_x: this._list.width,
|
||||||
|
opacity: 0,
|
||||||
|
time: MESSAGE_ANIMATION_TIME,
|
||||||
|
delay: i * delay,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: function() {
|
||||||
|
message.close();
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_canClear: function() {
|
||||||
|
for (let message of this._messages.keys())
|
||||||
|
if (message.canClose())
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_shouldShow: function() {
|
||||||
|
return !this.empty;
|
||||||
|
},
|
||||||
|
|
||||||
|
_sync: function() {
|
||||||
|
let empty = this._list.get_n_children() == 0;
|
||||||
|
let changed = this.empty !== empty;
|
||||||
|
this.empty = empty;
|
||||||
|
|
||||||
|
if (changed)
|
||||||
|
this.emit('empty-changed');
|
||||||
|
|
||||||
|
this._closeButton.visible = this._canClear();
|
||||||
|
this.actor.visible = this.allowed && this._shouldShow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(MessageListSection.prototype);
|
||||||
|
|
||||||
const EventsSection = new Lang.Class({
|
const EventsSection = new Lang.Class({
|
||||||
Name: 'EventsSection',
|
Name: 'EventsSection',
|
||||||
Extends: MessageList.MessageListSection,
|
Extends: MessageListSection,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
||||||
@ -817,14 +1514,14 @@ const EventsSection = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateTitle: function() {
|
_updateTitle: function() {
|
||||||
if (isToday(this._date)) {
|
if (_isToday(this._date)) {
|
||||||
this._title.label = _("Events");
|
this._title.label = _("Events");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let dayFormat;
|
let dayFormat;
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
if (sameYear(this._date, now))
|
if (_sameYear(this._date, now))
|
||||||
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
||||||
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
|
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
|
||||||
"%A, %B %d"));
|
"%A, %B %d"));
|
||||||
@ -900,7 +1597,7 @@ const EventsSection = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_shouldShow: function() {
|
_shouldShow: function() {
|
||||||
return !this.empty || !isToday(this._date);
|
return !this.empty || !_isToday(this._date);
|
||||||
},
|
},
|
||||||
|
|
||||||
_sync: function() {
|
_sync: function() {
|
||||||
@ -913,7 +1610,7 @@ const EventsSection = new Lang.Class({
|
|||||||
|
|
||||||
const NotificationSection = new Lang.Class({
|
const NotificationSection = new Lang.Class({
|
||||||
Name: 'NotificationSection',
|
Name: 'NotificationSection',
|
||||||
Extends: MessageList.MessageListSection,
|
Extends: MessageListSection,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(_("Notifications"));
|
this.parent(_("Notifications"));
|
||||||
@ -1019,7 +1716,7 @@ const NotificationSection = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_shouldShow: function() {
|
_shouldShow: function() {
|
||||||
return !this.empty && isToday(this._date);
|
return !this.empty && _isToday(this._date);
|
||||||
},
|
},
|
||||||
|
|
||||||
_sync: function() {
|
_sync: function() {
|
||||||
@ -1052,20 +1749,20 @@ const Placeholder = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setDate: function(date) {
|
setDate: function(date) {
|
||||||
if (sameDay(this._date, date))
|
if (_sameDay(this._date, date))
|
||||||
return;
|
return;
|
||||||
this._date = date;
|
this._date = date;
|
||||||
this._sync();
|
this._sync();
|
||||||
},
|
},
|
||||||
|
|
||||||
_sync: function() {
|
_sync: function() {
|
||||||
let today = isToday(this._date);
|
let isToday = _isToday(this._date);
|
||||||
if (today && this._icon.gicon == this._todayIcon)
|
if (isToday && this._icon.gicon == this._todayIcon)
|
||||||
return;
|
return;
|
||||||
if (!today && this._icon.gicon == this._otherIcon)
|
if (!isToday && this._icon.gicon == this._otherIcon)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (today) {
|
if (isToday) {
|
||||||
this._icon.gicon = this._todayIcon;
|
this._icon.gicon = this._todayIcon;
|
||||||
this._label.text = _("No Notifications");
|
this._label.text = _("No Notifications");
|
||||||
} else {
|
} else {
|
||||||
@ -1075,8 +1772,8 @@ const Placeholder = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const CalendarMessageList = new Lang.Class({
|
const MessageList = new Lang.Class({
|
||||||
Name: 'CalendarMessageList',
|
Name: 'MessageList',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.Widget({ style_class: 'message-list',
|
this.actor = new St.Widget({ style_class: 'message-list',
|
||||||
@ -1100,9 +1797,6 @@ const CalendarMessageList = new Lang.Class({
|
|||||||
this._scrollView.add_actor(this._sectionList);
|
this._scrollView.add_actor(this._sectionList);
|
||||||
this._sections = new Map();
|
this._sections = new Map();
|
||||||
|
|
||||||
this._mediaSection = new Mpris.MediaSection();
|
|
||||||
this._addSection(this._mediaSection);
|
|
||||||
|
|
||||||
this._notificationSection = new NotificationSection();
|
this._notificationSection = new NotificationSection();
|
||||||
this._addSection(this._notificationSection);
|
this._addSection(this._notificationSection);
|
||||||
|
|
||||||
|
@ -313,10 +313,6 @@ const AutorunSource = new Lang.Class({
|
|||||||
|
|
||||||
getIcon: function() {
|
getIcon: function() {
|
||||||
return this.mount.get_icon();
|
return this.mount.get_icon();
|
||||||
},
|
|
||||||
|
|
||||||
_createPolicy: function() {
|
|
||||||
return new MessageTray.NotificationApplicationPolicy('org.gnome.Nautilus');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -329,6 +325,9 @@ const AutorunNotification = new Lang.Class({
|
|||||||
|
|
||||||
this._manager = manager;
|
this._manager = manager;
|
||||||
this._mount = source.mount;
|
this._mount = source.mount;
|
||||||
|
|
||||||
|
// set the notification to urgent, so that it expands out
|
||||||
|
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
||||||
},
|
},
|
||||||
|
|
||||||
createBanner: function() {
|
createBanner: function() {
|
||||||
|
@ -12,9 +12,9 @@ const St = imports.gi.St;
|
|||||||
const Tpl = imports.gi.TelepathyLogger;
|
const Tpl = imports.gi.TelepathyLogger;
|
||||||
const Tp = imports.gi.TelepathyGLib;
|
const Tp = imports.gi.TelepathyGLib;
|
||||||
|
|
||||||
|
const Calendar = imports.ui.calendar;
|
||||||
const History = imports.misc.history;
|
const History = imports.misc.history;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageList = imports.ui.messageList;
|
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
@ -469,7 +469,6 @@ const ChatSource = new Lang.Class({
|
|||||||
|
|
||||||
destroy: function(reason) {
|
destroy: function(reason) {
|
||||||
if (this._client.is_handling_channel(this._channel)) {
|
if (this._client.is_handling_channel(this._channel)) {
|
||||||
this._ackMessages();
|
|
||||||
// The chat box has been destroyed so it can't
|
// The chat box has been destroyed so it can't
|
||||||
// handle the channel any more.
|
// handle the channel any more.
|
||||||
this._channel.close_async(function(channel, result) {
|
this._channel.close_async(function(channel, result) {
|
||||||
@ -867,7 +866,7 @@ const ChatNotificationBanner = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_addMessage: function(message) {
|
_addMessage: function(message) {
|
||||||
let highlighter = new MessageList.URLHighlighter(message.body, true, true);
|
let highlighter = new Calendar.URLHighlighter(message.body, true, true);
|
||||||
let body = highlighter.actor;
|
let body = highlighter.actor;
|
||||||
|
|
||||||
let styles = message.styles;
|
let styles = message.styles;
|
||||||
|
@ -259,7 +259,7 @@ const ShowAppsIcon = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_createIcon: function(size) {
|
_createIcon: function(size) {
|
||||||
this._iconActor = new St.Icon({ icon_name: 'view-app-grid-symbolic',
|
this._iconActor = new St.Icon({ icon_name: 'view-grid-symbolic',
|
||||||
icon_size: size,
|
icon_size: size,
|
||||||
style_class: 'show-apps-icon',
|
style_class: 'show-apps-icon',
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
@ -644,14 +644,15 @@ const Dash = new Lang.Class({
|
|||||||
let firstIcon = firstButton._delegate.icon;
|
let firstIcon = firstButton._delegate.icon;
|
||||||
|
|
||||||
let minHeight, natHeight;
|
let minHeight, natHeight;
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
|
|
||||||
// Enforce the current icon size during the size request
|
// Enforce the current icon size during the size request
|
||||||
firstIcon.icon.ensure_style();
|
firstIcon.setIconSize(this.iconSize);
|
||||||
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
|
|
||||||
firstIcon.icon.set_size(this.iconSize * scaleFactor, this.iconSize * scaleFactor);
|
|
||||||
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
||||||
firstIcon.icon.set_size(currentWidth, currentHeight);
|
|
||||||
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
|
let iconSizes = baseIconSizes.map(function(s) {
|
||||||
|
return s * scaleFactor;
|
||||||
|
});
|
||||||
|
|
||||||
// Subtract icon padding and box spacing from the available height
|
// Subtract icon padding and box spacing from the available height
|
||||||
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
||||||
@ -659,10 +660,6 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
let availSize = availHeight / iconChildren.length;
|
let availSize = availHeight / iconChildren.length;
|
||||||
|
|
||||||
let iconSizes = baseIconSizes.map(function(s) {
|
|
||||||
return s * scaleFactor;
|
|
||||||
});
|
|
||||||
|
|
||||||
let newIconSize = baseIconSizes[0];
|
let newIconSize = baseIconSizes[0];
|
||||||
for (let i = 0; i < iconSizes.length; i++) {
|
for (let i = 0; i < iconSizes.length; i++) {
|
||||||
if (iconSizes[i] < availSize)
|
if (iconSizes[i] < availSize)
|
||||||
|
@ -360,7 +360,7 @@ const DateMenuButton = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
// Fill up the first column
|
// Fill up the first column
|
||||||
this._messageList = new Calendar.CalendarMessageList();
|
this._messageList = new Calendar.MessageList();
|
||||||
hbox.add(this._messageList.actor, { expand: true, y_fill: false, y_align: St.Align.START });
|
hbox.add(this._messageList.actor, { expand: true, y_fill: false, y_align: St.Align.START });
|
||||||
|
|
||||||
// Fill up the second column
|
// Fill up the second column
|
||||||
|
141
js/ui/dnd.js
141
js/ui/dnd.js
@ -79,12 +79,9 @@ const _Draggable = new Lang.Class({
|
|||||||
dragActorOpacity: undefined });
|
dragActorOpacity: undefined });
|
||||||
|
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
if (!params.manualMode) {
|
if (!params.manualMode)
|
||||||
this.actor.connect('button-press-event',
|
this.actor.connect('button-press-event',
|
||||||
Lang.bind(this, this._onButtonPress));
|
Lang.bind(this, this._onButtonPress));
|
||||||
this.actor.connect('touch-event',
|
|
||||||
Lang.bind(this, this._onTouchEvent));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, function() {
|
this.actor.connect('destroy', Lang.bind(this, function() {
|
||||||
this._actorDestroyed = true;
|
this._actorDestroyed = true;
|
||||||
@ -124,50 +121,8 @@ const _Draggable = new Lang.Class({
|
|||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onTouchEvent: function (actor, event) {
|
|
||||||
if (event.type() != Clutter.EventType.TOUCH_BEGIN ||
|
|
||||||
!global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
if (Tweener.getTweenCount(actor))
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
this._touchSequence = event.get_event_sequence();
|
|
||||||
|
|
||||||
this._buttonDown = true;
|
|
||||||
this._grabActor();
|
|
||||||
|
|
||||||
let [stageX, stageY] = event.get_coords();
|
|
||||||
this._dragStartX = stageX;
|
|
||||||
this._dragStartY = stageY;
|
|
||||||
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
},
|
|
||||||
|
|
||||||
_grabDevice: function(actor) {
|
|
||||||
let manager = Clutter.DeviceManager.get_default();
|
|
||||||
let pointer = manager.get_core_device(Clutter.InputDeviceType.POINTER_DEVICE);
|
|
||||||
|
|
||||||
if (pointer && this._touchSequence)
|
|
||||||
pointer.sequence_grab(this._touchSequence, actor);
|
|
||||||
else if (pointer)
|
|
||||||
pointer.grab (actor);
|
|
||||||
|
|
||||||
this._grabbedDevice = pointer;
|
|
||||||
},
|
|
||||||
|
|
||||||
_ungrabDevice: function() {
|
|
||||||
if (this._touchSequence)
|
|
||||||
this._grabbedDevice.sequence_ungrab (this._touchSequence);
|
|
||||||
else
|
|
||||||
this._grabbedDevice.ungrab();
|
|
||||||
|
|
||||||
this._touchSequence = null;
|
|
||||||
this._grabbedDevice = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_grabActor: function() {
|
_grabActor: function() {
|
||||||
this._grabDevice(this.actor);
|
Clutter.grab_pointer(this.actor);
|
||||||
this._onEventId = this.actor.connect('event',
|
this._onEventId = this.actor.connect('event',
|
||||||
Lang.bind(this, this._onEvent));
|
Lang.bind(this, this._onEvent));
|
||||||
},
|
},
|
||||||
@ -176,7 +131,7 @@ const _Draggable = new Lang.Class({
|
|||||||
if (!this._onEventId)
|
if (!this._onEventId)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._ungrabDevice();
|
Clutter.ungrab_pointer();
|
||||||
this.actor.disconnect(this._onEventId);
|
this.actor.disconnect(this._onEventId);
|
||||||
this._onEventId = null;
|
this._onEventId = null;
|
||||||
},
|
},
|
||||||
@ -185,13 +140,13 @@ const _Draggable = new Lang.Class({
|
|||||||
if (!this._eventsGrabbed) {
|
if (!this._eventsGrabbed) {
|
||||||
this._eventsGrabbed = Main.pushModal(_getEventHandlerActor());
|
this._eventsGrabbed = Main.pushModal(_getEventHandlerActor());
|
||||||
if (this._eventsGrabbed)
|
if (this._eventsGrabbed)
|
||||||
this._grabDevice(_getEventHandlerActor());
|
Clutter.grab_pointer(_getEventHandlerActor());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_ungrabEvents: function() {
|
_ungrabEvents: function() {
|
||||||
if (this._eventsGrabbed) {
|
if (this._eventsGrabbed) {
|
||||||
this._ungrabDevice();
|
Clutter.ungrab_pointer();
|
||||||
Main.popModal(_getEventHandlerActor());
|
Main.popModal(_getEventHandlerActor());
|
||||||
this._eventsGrabbed = false;
|
this._eventsGrabbed = false;
|
||||||
}
|
}
|
||||||
@ -202,9 +157,7 @@ const _Draggable = new Lang.Class({
|
|||||||
// didn't start the drag, to drop the draggable in case the drag was in progress, and
|
// didn't start the drag, to drop the draggable in case the drag was in progress, and
|
||||||
// to complete the drag and ensure that whatever happens to be under the pointer does
|
// to complete the drag and ensure that whatever happens to be under the pointer does
|
||||||
// not get triggered if the drag was cancelled with Esc.
|
// not get triggered if the drag was cancelled with Esc.
|
||||||
if (event.type() == Clutter.EventType.BUTTON_RELEASE ||
|
if (event.type() == Clutter.EventType.BUTTON_RELEASE) {
|
||||||
(event.type() == Clutter.EventType.TOUCH_END &&
|
|
||||||
global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
|
|
||||||
this._buttonDown = false;
|
this._buttonDown = false;
|
||||||
if (this._dragInProgress) {
|
if (this._dragInProgress) {
|
||||||
return this._dragActorDropped(event);
|
return this._dragActorDropped(event);
|
||||||
@ -219,9 +172,7 @@ const _Draggable = new Lang.Class({
|
|||||||
}
|
}
|
||||||
// We intercept MOTION event to figure out if the drag has started and to draw
|
// We intercept MOTION event to figure out if the drag has started and to draw
|
||||||
// this._dragActor under the pointer when dragging is in progress
|
// this._dragActor under the pointer when dragging is in progress
|
||||||
} else if (event.type() == Clutter.EventType.MOTION ||
|
} else if (event.type() == Clutter.EventType.MOTION) {
|
||||||
(event.type() == Clutter.EventType.TOUCH_UPDATE &&
|
|
||||||
global.display.is_pointer_emulating_sequence(event.get_event_sequence()))) {
|
|
||||||
if (this._dragInProgress) {
|
if (this._dragInProgress) {
|
||||||
return this._updateDragPosition(event);
|
return this._updateDragPosition(event);
|
||||||
} else if (this._dragActor == null) {
|
} else if (this._dragActor == null) {
|
||||||
@ -263,7 +214,7 @@ const _Draggable = new Lang.Class({
|
|||||||
* This function is useful to call if you've specified manualMode
|
* This function is useful to call if you've specified manualMode
|
||||||
* for the draggable.
|
* for the draggable.
|
||||||
*/
|
*/
|
||||||
startDrag: function (stageX, stageY, time, sequence) {
|
startDrag: function (stageX, stageY, time) {
|
||||||
currentDraggable = this;
|
currentDraggable = this;
|
||||||
this._dragInProgress = true;
|
this._dragInProgress = true;
|
||||||
|
|
||||||
@ -277,8 +228,6 @@ const _Draggable = new Lang.Class({
|
|||||||
this.emit('drag-begin', time);
|
this.emit('drag-begin', time);
|
||||||
if (this._onEventId)
|
if (this._onEventId)
|
||||||
this._ungrabActor();
|
this._ungrabActor();
|
||||||
|
|
||||||
this._touchSequence = sequence;
|
|
||||||
this._grabEvents();
|
this._grabEvents();
|
||||||
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
|
||||||
|
|
||||||
@ -389,8 +338,8 @@ const _Draggable = new Lang.Class({
|
|||||||
let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold;
|
let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold;
|
||||||
if ((Math.abs(stageX - this._dragStartX) > threshold ||
|
if ((Math.abs(stageX - this._dragStartX) > threshold ||
|
||||||
Math.abs(stageY - this._dragStartY) > threshold)) {
|
Math.abs(stageY - this._dragStartY) > threshold)) {
|
||||||
this.startDrag(stageX, stageY, event.get_time(), this._touchSequence);
|
this.startDrag(stageX, stageY, event.get_time());
|
||||||
this._updateDragPosition(event);
|
this._updateDragPosition(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -571,13 +520,20 @@ const _Draggable = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._animateDragEnd(eventTime,
|
this._animationInProgress = true;
|
||||||
{ x: snapBackX,
|
// No target, so snap back
|
||||||
y: snapBackY,
|
Tweener.addTween(this._dragActor,
|
||||||
scale_x: snapBackScale,
|
{ x: snapBackX,
|
||||||
scale_y: snapBackScale,
|
y: snapBackY,
|
||||||
time: SNAP_BACK_ANIMATION_TIME,
|
scale_x: snapBackScale,
|
||||||
});
|
scale_y: snapBackScale,
|
||||||
|
opacity: this._dragOrigOpacity,
|
||||||
|
time: SNAP_BACK_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: this._onAnimationComplete,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [this._dragActor, eventTime]
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_restoreDragActor: function(eventTime) {
|
_restoreDragActor: function(eventTime) {
|
||||||
@ -589,44 +545,18 @@ const _Draggable = new Lang.Class({
|
|||||||
this._dragActor.set_scale(restoreScale, restoreScale);
|
this._dragActor.set_scale(restoreScale, restoreScale);
|
||||||
this._dragActor.opacity = 0;
|
this._dragActor.opacity = 0;
|
||||||
|
|
||||||
this._animateDragEnd(eventTime,
|
|
||||||
{ time: REVERT_ANIMATION_TIME });
|
|
||||||
},
|
|
||||||
|
|
||||||
_animateDragEnd: function (eventTime, params) {
|
|
||||||
this._animationInProgress = true;
|
this._animationInProgress = true;
|
||||||
|
Tweener.addTween(this._dragActor,
|
||||||
// finish animation if the actor gets destroyed
|
{ opacity: this._dragOrigOpacity,
|
||||||
// during it
|
time: REVERT_ANIMATION_TIME,
|
||||||
this._dragActorDestroyId =
|
transition: 'easeOutQuad',
|
||||||
this._dragActor.connect('destroy',
|
onComplete: this._onAnimationComplete,
|
||||||
Lang.bind(this, this._finishAnimation));
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [this._dragActor, eventTime]
|
||||||
params['opacity'] = this._dragOrigOpacity;
|
});
|
||||||
params['transition'] = 'easeOutQuad';
|
|
||||||
params['onComplete'] = this._onAnimationComplete;
|
|
||||||
params['onCompleteScope'] = this;
|
|
||||||
params['onCompleteParams'] = [this._dragActor, eventTime];
|
|
||||||
|
|
||||||
// start the animation
|
|
||||||
Tweener.addTween(this._dragActor, params)
|
|
||||||
},
|
|
||||||
|
|
||||||
_finishAnimation : function () {
|
|
||||||
if (!this._animationInProgress)
|
|
||||||
return
|
|
||||||
|
|
||||||
this._animationInProgress = false;
|
|
||||||
if (!this._buttonDown)
|
|
||||||
this._dragComplete();
|
|
||||||
|
|
||||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAnimationComplete : function (dragActor, eventTime) {
|
_onAnimationComplete : function (dragActor, eventTime) {
|
||||||
dragActor.disconnect(this._dragActorDestroyId);
|
|
||||||
this._dragActorDestroyId = 0;
|
|
||||||
|
|
||||||
if (this._dragOrigParent) {
|
if (this._dragOrigParent) {
|
||||||
Main.uiGroup.remove_child(this._dragActor);
|
Main.uiGroup.remove_child(this._dragActor);
|
||||||
this._dragOrigParent.add_actor(this._dragActor);
|
this._dragOrigParent.add_actor(this._dragActor);
|
||||||
@ -635,9 +565,12 @@ const _Draggable = new Lang.Class({
|
|||||||
} else {
|
} else {
|
||||||
dragActor.destroy();
|
dragActor.destroy();
|
||||||
}
|
}
|
||||||
|
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
||||||
this.emit('drag-end', eventTime, false);
|
this.emit('drag-end', eventTime, false);
|
||||||
this._finishAnimation();
|
|
||||||
|
this._animationInProgress = false;
|
||||||
|
if (!this._buttonDown)
|
||||||
|
this._dragComplete();
|
||||||
},
|
},
|
||||||
|
|
||||||
_dragComplete: function() {
|
_dragComplete: function() {
|
||||||
|
@ -334,7 +334,7 @@ function _sessionUpdated() {
|
|||||||
// from allowExtensions in the future
|
// from allowExtensions in the future
|
||||||
if (Main.sessionMode.allowExtensions) {
|
if (Main.sessionMode.allowExtensions) {
|
||||||
if (initted)
|
if (initted)
|
||||||
enabledExtensions = getEnabledExtensions();
|
onEnabledExtensionsChanged();
|
||||||
enableAllExtensions();
|
enableAllExtensions();
|
||||||
} else {
|
} else {
|
||||||
disableAllExtensions();
|
disableAllExtensions();
|
||||||
|
@ -158,22 +158,10 @@ const CandidatePopup = new Lang.Class({
|
|||||||
|
|
||||||
panelService.connect('set-cursor-location',
|
panelService.connect('set-cursor-location',
|
||||||
Lang.bind(this, function(ps, x, y, w, h) {
|
Lang.bind(this, function(ps, x, y, w, h) {
|
||||||
this._setDummyCursorGeometry(x, y, w, h);
|
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
||||||
|
if (this._boxPointer.actor.visible)
|
||||||
|
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||||
}));
|
}));
|
||||||
try {
|
|
||||||
panelService.connect('set-cursor-location-relative',
|
|
||||||
Lang.bind(this, function(ps, x, y, w, h) {
|
|
||||||
if (!global.display.focus_window)
|
|
||||||
return;
|
|
||||||
let window = global.display.focus_window.get_compositor_private();
|
|
||||||
this._setDummyCursorGeometry(window.x + x, window.y + y, w, h);
|
|
||||||
}));
|
|
||||||
} catch(e) {
|
|
||||||
// Only recent IBus versions have support for this signal
|
|
||||||
// which is used for wayland clients. In order to work
|
|
||||||
// with older IBus versions we can silently ignore the
|
|
||||||
// signal's absence.
|
|
||||||
}
|
|
||||||
panelService.connect('update-preedit-text',
|
panelService.connect('update-preedit-text',
|
||||||
Lang.bind(this, function(ps, text, cursorPosition, visible) {
|
Lang.bind(this, function(ps, text, cursorPosition, visible) {
|
||||||
this._preeditText.visible = visible;
|
this._preeditText.visible = visible;
|
||||||
@ -258,12 +246,6 @@ const CandidatePopup = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_setDummyCursorGeometry: function(x, y, w, h) {
|
|
||||||
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
|
||||||
if (this._boxPointer.actor.visible)
|
|
||||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
let isVisible = (this._preeditText.visible ||
|
let isVisible = (this._preeditText.visible ||
|
||||||
this._auxText.visible ||
|
this._auxText.visible ||
|
||||||
|
@ -50,14 +50,15 @@ const LegacyTray = new Lang.Class({
|
|||||||
this._slideLayout.translationX = 0;
|
this._slideLayout.translationX = 0;
|
||||||
this._slideLayout.slideDirection = OverviewControls.SlideDirection.LEFT;
|
this._slideLayout.slideDirection = OverviewControls.SlideDirection.LEFT;
|
||||||
|
|
||||||
this._slider = new St.Widget({ x_expand: true, y_expand: true,
|
this._slider = new St.Widget({ style_class: 'legacy-tray',
|
||||||
|
x_expand: true, y_expand: true,
|
||||||
x_align: Clutter.ActorAlign.START,
|
x_align: Clutter.ActorAlign.START,
|
||||||
y_align: Clutter.ActorAlign.END,
|
y_align: Clutter.ActorAlign.END,
|
||||||
layout_manager: this._slideLayout });
|
layout_manager: this._slideLayout });
|
||||||
this.actor.add_actor(this._slider);
|
this.actor.add_actor(this._slider);
|
||||||
this._slider.connect('notify::allocation', Lang.bind(this, this._syncBarrier));
|
this._slider.connect('notify::allocation', Lang.bind(this, this._syncBarrier));
|
||||||
|
|
||||||
this._box = new St.BoxLayout({ style_class: 'legacy-tray' });
|
this._box = new St.BoxLayout();
|
||||||
this._slider.add_actor(this._box);
|
this._slider.add_actor(this._box);
|
||||||
|
|
||||||
this._concealHandle = new St.Button({ style_class: 'legacy-tray-handle',
|
this._concealHandle = new St.Button({ style_class: 'legacy-tray-handle',
|
||||||
|
@ -11,7 +11,6 @@ const Meta = imports.gi.Meta;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const AudioDeviceSelection = imports.ui.audioDeviceSelection;
|
|
||||||
const Components = imports.ui.components;
|
const Components = imports.ui.components;
|
||||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||||
const EndSessionDialog = imports.ui.endSessionDialog;
|
const EndSessionDialog = imports.ui.endSessionDialog;
|
||||||
@ -63,7 +62,6 @@ let ctrlAltTabManager = null;
|
|||||||
let osdWindowManager = null;
|
let osdWindowManager = null;
|
||||||
let osdMonitorLabeler = null;
|
let osdMonitorLabeler = null;
|
||||||
let sessionMode = null;
|
let sessionMode = null;
|
||||||
let shellAudioSelectionDBusService = null;
|
|
||||||
let shellDBusService = null;
|
let shellDBusService = null;
|
||||||
let shellMountOpDBusService = null;
|
let shellMountOpDBusService = null;
|
||||||
let screenSaverDBus = null;
|
let screenSaverDBus = null;
|
||||||
@ -80,7 +78,6 @@ let _startDate;
|
|||||||
let _defaultCssStylesheet = null;
|
let _defaultCssStylesheet = null;
|
||||||
let _cssStylesheet = null;
|
let _cssStylesheet = null;
|
||||||
let _a11ySettings = null;
|
let _a11ySettings = null;
|
||||||
let _themeResource = null;
|
|
||||||
|
|
||||||
function _sessionUpdated() {
|
function _sessionUpdated() {
|
||||||
if (sessionMode.isPrimary)
|
if (sessionMode.isPrimary)
|
||||||
@ -122,7 +119,6 @@ function start() {
|
|||||||
_loadDefaultStylesheet);
|
_loadDefaultStylesheet);
|
||||||
_initializeUI();
|
_initializeUI();
|
||||||
|
|
||||||
shellAudioSelectionDBusService = new AudioDeviceSelection.AudioDeviceSelectionDBus();
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
||||||
|
|
||||||
@ -141,7 +137,9 @@ function _initializeUI() {
|
|||||||
Shell.WindowTracker.get_default();
|
Shell.WindowTracker.get_default();
|
||||||
Shell.AppUsage.get_default();
|
Shell.AppUsage.get_default();
|
||||||
|
|
||||||
reloadThemeResource();
|
let resource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
|
||||||
|
resource._register();
|
||||||
|
|
||||||
_loadDefaultStylesheet();
|
_loadDefaultStylesheet();
|
||||||
|
|
||||||
// Setup the stage hierarchy early
|
// Setup the stage hierarchy early
|
||||||
@ -292,14 +290,6 @@ function setThemeStylesheet(cssStylesheet) {
|
|||||||
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
|
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadThemeResource() {
|
|
||||||
if (_themeResource)
|
|
||||||
_themeResource._unregister();
|
|
||||||
|
|
||||||
_themeResource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
|
|
||||||
_themeResource._register();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* loadTheme:
|
* loadTheme:
|
||||||
*
|
*
|
||||||
|
@ -1,726 +0,0 @@
|
|||||||
const Atk = imports.gi.Atk;
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GObject = imports.gi.GObject;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const MessageTray = imports.ui.messageTray;
|
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Pango = imports.gi.Pango;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Calendar = imports.ui.calendar;
|
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
const Util = imports.misc.util;
|
|
||||||
|
|
||||||
const MESSAGE_ANIMATION_TIME = 0.1;
|
|
||||||
|
|
||||||
const DEFAULT_EXPAND_LINES = 6;
|
|
||||||
|
|
||||||
function _fixMarkup(text, allowMarkup) {
|
|
||||||
if (allowMarkup) {
|
|
||||||
// Support &, ", ', < and >, escape all other
|
|
||||||
// occurrences of '&'.
|
|
||||||
let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&');
|
|
||||||
|
|
||||||
// Support <b>, <i>, and <u>, escape anything else
|
|
||||||
// so it displays as raw markup.
|
|
||||||
_text = _text.replace(/<(?!\/?[biu]>)/g, '<');
|
|
||||||
|
|
||||||
try {
|
|
||||||
Pango.parse_markup(_text, -1, '');
|
|
||||||
return _text;
|
|
||||||
} catch (e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// !allowMarkup, or invalid markup
|
|
||||||
return GLib.markup_escape_text(text, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
const URLHighlighter = new Lang.Class({
|
|
||||||
Name: 'URLHighlighter',
|
|
||||||
|
|
||||||
_init: function(text, lineWrap, allowMarkup) {
|
|
||||||
if (!text)
|
|
||||||
text = '';
|
|
||||||
this.actor = new St.Label({ reactive: true, style_class: 'url-highlighter',
|
|
||||||
x_expand: true, x_align: Clutter.ActorAlign.START });
|
|
||||||
this._linkColor = '#ccccff';
|
|
||||||
this.actor.connect('style-changed', Lang.bind(this, function() {
|
|
||||||
let [hasColor, color] = this.actor.get_theme_node().lookup_color('link-color', false);
|
|
||||||
if (hasColor) {
|
|
||||||
let linkColor = color.to_string().substr(0, 7);
|
|
||||||
if (linkColor != this._linkColor) {
|
|
||||||
this._linkColor = linkColor;
|
|
||||||
this._highlightUrls();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
this.actor.clutter_text.line_wrap = lineWrap;
|
|
||||||
this.actor.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
|
|
||||||
|
|
||||||
this.setMarkup(text, allowMarkup);
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) {
|
|
||||||
// Don't try to URL highlight when invisible.
|
|
||||||
// The MessageTray doesn't actually hide us, so
|
|
||||||
// we need to check for paint opacities as well.
|
|
||||||
if (!actor.visible || actor.get_paint_opacity() == 0)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
// Keep Notification.actor from seeing this and taking
|
|
||||||
// a pointer grab, which would block our button-release-event
|
|
||||||
// handler, if an URL is clicked
|
|
||||||
return this._findUrlAtPos(event) != -1;
|
|
||||||
}));
|
|
||||||
this.actor.connect('button-release-event', Lang.bind(this, function (actor, event) {
|
|
||||||
if (!actor.visible || actor.get_paint_opacity() == 0)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
let urlId = this._findUrlAtPos(event);
|
|
||||||
if (urlId != -1) {
|
|
||||||
let url = this._urls[urlId].url;
|
|
||||||
if (url.indexOf(':') == -1)
|
|
||||||
url = 'http://' + url;
|
|
||||||
|
|
||||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context(0, -1));
|
|
||||||
return Clutter.EVENT_STOP;
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
}));
|
|
||||||
this.actor.connect('motion-event', Lang.bind(this, function(actor, event) {
|
|
||||||
if (!actor.visible || actor.get_paint_opacity() == 0)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
let urlId = this._findUrlAtPos(event);
|
|
||||||
if (urlId != -1 && !this._cursorChanged) {
|
|
||||||
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
|
|
||||||
this._cursorChanged = true;
|
|
||||||
} else if (urlId == -1) {
|
|
||||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
|
||||||
this._cursorChanged = false;
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
}));
|
|
||||||
this.actor.connect('leave-event', Lang.bind(this, function() {
|
|
||||||
if (!this.actor.visible || this.actor.get_paint_opacity() == 0)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
if (this._cursorChanged) {
|
|
||||||
this._cursorChanged = false;
|
|
||||||
global.screen.set_cursor(Meta.Cursor.DEFAULT);
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
setMarkup: function(text, allowMarkup) {
|
|
||||||
text = text ? _fixMarkup(text, allowMarkup) : '';
|
|
||||||
this._text = text;
|
|
||||||
|
|
||||||
this.actor.clutter_text.set_markup(text);
|
|
||||||
/* clutter_text.text contain text without markup */
|
|
||||||
this._urls = Util.findUrls(this.actor.clutter_text.text);
|
|
||||||
this._highlightUrls();
|
|
||||||
},
|
|
||||||
|
|
||||||
_highlightUrls: function() {
|
|
||||||
// text here contain markup
|
|
||||||
let urls = Util.findUrls(this._text);
|
|
||||||
let markup = '';
|
|
||||||
let pos = 0;
|
|
||||||
for (let i = 0; i < urls.length; i++) {
|
|
||||||
let url = urls[i];
|
|
||||||
let str = this._text.substr(pos, url.pos - pos);
|
|
||||||
markup += str + '<span foreground="' + this._linkColor + '"><u>' + url.url + '</u></span>';
|
|
||||||
pos = url.pos + url.url.length;
|
|
||||||
}
|
|
||||||
markup += this._text.substr(pos);
|
|
||||||
this.actor.clutter_text.set_markup(markup);
|
|
||||||
},
|
|
||||||
|
|
||||||
_findUrlAtPos: function(event) {
|
|
||||||
let success;
|
|
||||||
let [x, y] = event.get_coords();
|
|
||||||
[success, x, y] = this.actor.transform_stage_point(x, y);
|
|
||||||
let find_pos = -1;
|
|
||||||
for (let i = 0; i < this.actor.clutter_text.text.length; i++) {
|
|
||||||
let [success, px, py, line_height] = this.actor.clutter_text.position_to_coords(i);
|
|
||||||
if (py > y || py + line_height < y || x < px)
|
|
||||||
continue;
|
|
||||||
find_pos = i;
|
|
||||||
}
|
|
||||||
if (find_pos != -1) {
|
|
||||||
for (let i = 0; i < this._urls.length; i++)
|
|
||||||
if (find_pos >= this._urls[i].pos &&
|
|
||||||
this._urls[i].pos + this._urls[i].url.length > find_pos)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const ScaleLayout = new Lang.Class({
|
|
||||||
Name: 'ScaleLayout',
|
|
||||||
Extends: Clutter.BinLayout,
|
|
||||||
|
|
||||||
_connectContainer: function(container) {
|
|
||||||
if (this._container == container)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this._container)
|
|
||||||
for (let id of this._signals)
|
|
||||||
this._container.disconnect(id);
|
|
||||||
|
|
||||||
this._container = container;
|
|
||||||
this._signals = [];
|
|
||||||
|
|
||||||
if (this._container)
|
|
||||||
for (let signal of ['notify::scale-x', 'notify::scale-y']) {
|
|
||||||
let id = this._container.connect(signal, Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
this.layout_changed();
|
|
||||||
}));
|
|
||||||
this._signals.push(id);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_get_preferred_width: function(container, forHeight) {
|
|
||||||
this._connectContainer(container);
|
|
||||||
|
|
||||||
let [min, nat] = this.parent(container, forHeight);
|
|
||||||
return [Math.floor(min * container.scale_x),
|
|
||||||
Math.floor(nat * container.scale_x)];
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_get_preferred_height: function(container, forWidth) {
|
|
||||||
this._connectContainer(container);
|
|
||||||
|
|
||||||
let [min, nat] = this.parent(container, forWidth);
|
|
||||||
return [Math.floor(min * container.scale_y),
|
|
||||||
Math.floor(nat * container.scale_y)];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const LabelExpanderLayout = new Lang.Class({
|
|
||||||
Name: 'LabelExpanderLayout',
|
|
||||||
Extends: Clutter.LayoutManager,
|
|
||||||
Properties: { 'expansion': GObject.ParamSpec.double('expansion',
|
|
||||||
'Expansion',
|
|
||||||
'Expansion of the layout, between 0 (collapsed) ' +
|
|
||||||
'and 1 (fully expanded',
|
|
||||||
GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE,
|
|
||||||
0, 1, 0)},
|
|
||||||
|
|
||||||
_init: function(params) {
|
|
||||||
this._expansion = 0;
|
|
||||||
this._expandLines = DEFAULT_EXPAND_LINES;
|
|
||||||
|
|
||||||
this.parent(params);
|
|
||||||
},
|
|
||||||
|
|
||||||
get expansion() {
|
|
||||||
return this._expansion;
|
|
||||||
},
|
|
||||||
|
|
||||||
set expansion(v) {
|
|
||||||
if (v == this._expansion)
|
|
||||||
return;
|
|
||||||
this._expansion = v;
|
|
||||||
this.notify('expansion');
|
|
||||||
|
|
||||||
let visibleIndex = this._expansion > 0 ? 1 : 0;
|
|
||||||
for (let i = 0; this._container && i < this._container.get_n_children(); i++)
|
|
||||||
this._container.get_child_at_index(i).visible = (i == visibleIndex);
|
|
||||||
|
|
||||||
this.layout_changed();
|
|
||||||
},
|
|
||||||
|
|
||||||
set expandLines(v) {
|
|
||||||
if (v == this._expandLines)
|
|
||||||
return;
|
|
||||||
this._expandLines = v;
|
|
||||||
if (this._expansion > 0)
|
|
||||||
this.layout_changed();
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_set_container: function(container) {
|
|
||||||
this._container = container;
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_get_preferred_width: function(container, forHeight) {
|
|
||||||
let [min, nat] = [0, 0];
|
|
||||||
|
|
||||||
for (let i = 0; i < container.get_n_children(); i++) {
|
|
||||||
if (i > 1)
|
|
||||||
break; // we support one unexpanded + one expanded child
|
|
||||||
|
|
||||||
let child = container.get_child_at_index(i);
|
|
||||||
let [childMin, childNat] = child.get_preferred_width(forHeight);
|
|
||||||
[min, nat] = [Math.max(min, childMin), Math.max(nat, childNat)];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [min, nat];
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_get_preferred_height: function(container, forWidth) {
|
|
||||||
let [min, nat] = [0, 0];
|
|
||||||
|
|
||||||
let children = container.get_children();
|
|
||||||
if (children[0])
|
|
||||||
[min, nat] = children[0].get_preferred_height(forWidth);
|
|
||||||
|
|
||||||
if (children[1]) {
|
|
||||||
let [min2, nat2] = children[1].get_preferred_height(forWidth);
|
|
||||||
let [expMin, expNat] = [Math.min(min2, min * this._expandLines),
|
|
||||||
Math.min(nat2, nat * this._expandLines)];
|
|
||||||
[min, nat] = [min + this._expansion * (expMin - min),
|
|
||||||
nat + this._expansion * (expNat - nat)];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [min, nat];
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_allocate: function(container, box, flags) {
|
|
||||||
for (let i = 0; i < container.get_n_children(); i++) {
|
|
||||||
let child = container.get_child_at_index(i);
|
|
||||||
|
|
||||||
if (child.visible)
|
|
||||||
child.allocate(box, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const Message = new Lang.Class({
|
|
||||||
Name: 'Message',
|
|
||||||
|
|
||||||
_init: function(title, body) {
|
|
||||||
this.expanded = false;
|
|
||||||
|
|
||||||
this.actor = new St.Button({ style_class: 'message',
|
|
||||||
accessible_role: Atk.Role.NOTIFICATION,
|
|
||||||
can_focus: true,
|
|
||||||
x_expand: true, x_fill: true });
|
|
||||||
this.actor.connect('key-press-event',
|
|
||||||
Lang.bind(this, this._onKeyPressed));
|
|
||||||
|
|
||||||
let vbox = new St.BoxLayout({ vertical: true });
|
|
||||||
this.actor.set_child(vbox);
|
|
||||||
|
|
||||||
let hbox = new St.BoxLayout();
|
|
||||||
vbox.add_actor(hbox);
|
|
||||||
|
|
||||||
this._actionBin = new St.Widget({ layout_manager: new ScaleLayout(),
|
|
||||||
visible: false });
|
|
||||||
vbox.add_actor(this._actionBin);
|
|
||||||
|
|
||||||
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
|
|
||||||
y_expand: true,
|
|
||||||
visible: false });
|
|
||||||
hbox.add_actor(this._iconBin);
|
|
||||||
|
|
||||||
let contentBox = new St.BoxLayout({ style_class: 'message-content',
|
|
||||||
vertical: true, x_expand: true });
|
|
||||||
hbox.add_actor(contentBox);
|
|
||||||
|
|
||||||
this._mediaControls = new St.BoxLayout();
|
|
||||||
hbox.add_actor(this._mediaControls);
|
|
||||||
|
|
||||||
let titleBox = new St.BoxLayout();
|
|
||||||
contentBox.add_actor(titleBox);
|
|
||||||
|
|
||||||
this.titleLabel = new St.Label({ style_class: 'message-title',
|
|
||||||
x_expand: true,
|
|
||||||
x_align: Clutter.ActorAlign.START });
|
|
||||||
this.setTitle(title);
|
|
||||||
titleBox.add_actor(this.titleLabel);
|
|
||||||
|
|
||||||
this._secondaryBin = new St.Bin({ style_class: 'message-secondary-bin' });
|
|
||||||
titleBox.add_actor(this._secondaryBin);
|
|
||||||
|
|
||||||
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic',
|
|
||||||
icon_size: 16 });
|
|
||||||
this._closeButton = new St.Button({ child: closeIcon, visible: false });
|
|
||||||
titleBox.add_actor(this._closeButton);
|
|
||||||
|
|
||||||
this._bodyStack = new St.Widget({ x_expand: true });
|
|
||||||
this._bodyStack.layout_manager = new LabelExpanderLayout();
|
|
||||||
contentBox.add_actor(this._bodyStack);
|
|
||||||
|
|
||||||
this.bodyLabel = new URLHighlighter('', false, this._useBodyMarkup);
|
|
||||||
this.bodyLabel.actor.add_style_class_name('message-body');
|
|
||||||
this._bodyStack.add_actor(this.bodyLabel.actor);
|
|
||||||
this.setBody(body);
|
|
||||||
|
|
||||||
this._closeButton.connect('clicked', Lang.bind(this, this.close));
|
|
||||||
this.actor.connect('notify::hover', Lang.bind(this, this._sync));
|
|
||||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
|
||||||
this._sync();
|
|
||||||
},
|
|
||||||
|
|
||||||
close: function() {
|
|
||||||
this.emit('close');
|
|
||||||
},
|
|
||||||
|
|
||||||
setIcon: function(actor) {
|
|
||||||
this._iconBin.child = actor;
|
|
||||||
this._iconBin.visible = (actor != null);
|
|
||||||
},
|
|
||||||
|
|
||||||
setSecondaryActor: function(actor) {
|
|
||||||
this._secondaryBin.child = actor;
|
|
||||||
},
|
|
||||||
|
|
||||||
setTitle: function(text) {
|
|
||||||
let title = text ? _fixMarkup(text.replace(/\n/g, ' '), false) : '';
|
|
||||||
this.titleLabel.clutter_text.set_markup(title);
|
|
||||||
},
|
|
||||||
|
|
||||||
setBody: function(text) {
|
|
||||||
this._bodyText = text;
|
|
||||||
this.bodyLabel.setMarkup(text ? text.replace(/\n/g, ' ') : '',
|
|
||||||
this._useBodyMarkup);
|
|
||||||
if (this._expandedLabel)
|
|
||||||
this._expandedLabel.setMarkup(text, this._useBodyMarkup);
|
|
||||||
},
|
|
||||||
|
|
||||||
setUseBodyMarkup: function(enable) {
|
|
||||||
if (this._useBodyMarkup === enable)
|
|
||||||
return;
|
|
||||||
this._useBodyMarkup = enable;
|
|
||||||
if (this.bodyLabel)
|
|
||||||
this.setBody(this._bodyText);
|
|
||||||
},
|
|
||||||
|
|
||||||
setActionArea: function(actor) {
|
|
||||||
if (actor == null) {
|
|
||||||
if (this._actionBin.get_n_children() > 0)
|
|
||||||
this._actionBin.get_child_at_index(0).destroy();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._actionBin.get_n_children() > 0)
|
|
||||||
throw new Error('Message already has an action area');
|
|
||||||
|
|
||||||
this._actionBin.add_actor(actor);
|
|
||||||
this._actionBin.visible = this.expanded;
|
|
||||||
},
|
|
||||||
|
|
||||||
addMediaControl: function(iconName, callback) {
|
|
||||||
let icon = new St.Icon({ icon_name: iconName, icon_size: 16 });
|
|
||||||
let button = new St.Button({ style_class: 'message-media-control',
|
|
||||||
child: icon });
|
|
||||||
button.connect('clicked', callback);
|
|
||||||
this._mediaControls.add_actor(button);
|
|
||||||
return button;
|
|
||||||
},
|
|
||||||
|
|
||||||
setExpandedBody: function(actor) {
|
|
||||||
if (actor == null) {
|
|
||||||
if (this._bodyStack.get_n_children() > 1)
|
|
||||||
this._bodyStack.get_child_at_index(1).destroy();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._bodyStack.get_n_children() > 1)
|
|
||||||
throw new Error('Message already has an expanded body actor');
|
|
||||||
|
|
||||||
this._bodyStack.insert_child_at_index(actor, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
setExpandedLines: function(nLines) {
|
|
||||||
this._bodyStack.layout_manager.expandLines = nLines;
|
|
||||||
},
|
|
||||||
|
|
||||||
expand: function(animate) {
|
|
||||||
this.expanded = true;
|
|
||||||
|
|
||||||
this._actionBin.visible = (this._actionBin.get_n_children() > 0);
|
|
||||||
|
|
||||||
if (this._bodyStack.get_n_children() < 2) {
|
|
||||||
this._expandedLabel = new URLHighlighter(this._bodyText,
|
|
||||||
true, this._useBodyMarkup);
|
|
||||||
this.setExpandedBody(this._expandedLabel.actor);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (animate) {
|
|
||||||
Tweener.addTween(this._bodyStack.layout_manager,
|
|
||||||
{ expansion: 1,
|
|
||||||
time: MessageTray.ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
this._actionBin.scale_y = 0;
|
|
||||||
Tweener.addTween(this._actionBin,
|
|
||||||
{ scale_y: 1,
|
|
||||||
time: MessageTray.ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
} else {
|
|
||||||
this._bodyStack.layout_manager.expansion = 1;
|
|
||||||
this._actionBin.scale_y = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.emit('expanded');
|
|
||||||
},
|
|
||||||
|
|
||||||
unexpand: function(animate) {
|
|
||||||
if (animate) {
|
|
||||||
Tweener.addTween(this._bodyStack.layout_manager,
|
|
||||||
{ expansion: 0,
|
|
||||||
time: MessageTray.ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
Tweener.addTween(this._actionBin,
|
|
||||||
{ scale_y: 0,
|
|
||||||
time: MessageTray.ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onCompleteScope: this,
|
|
||||||
onComplete: function() {
|
|
||||||
this._actionBin.hide();
|
|
||||||
this.expanded = false;
|
|
||||||
}});
|
|
||||||
} else {
|
|
||||||
this._bodyStack.layout_manager.expansion = 0;
|
|
||||||
this._actionBin.scale_y = 0;
|
|
||||||
this.expanded = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.emit('unexpanded');
|
|
||||||
},
|
|
||||||
|
|
||||||
canClose: function() {
|
|
||||||
return this._mediaControls.get_n_children() == 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
_sync: function() {
|
|
||||||
let hovered = this.actor.hover;
|
|
||||||
this._closeButton.visible = hovered && this.canClose();
|
|
||||||
this._secondaryBin.visible = !hovered;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onClicked: function() {
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDestroy: function() {
|
|
||||||
},
|
|
||||||
|
|
||||||
_onKeyPressed: function(a, event) {
|
|
||||||
let keysym = event.get_key_symbol();
|
|
||||||
|
|
||||||
if (keysym == Clutter.KEY_Delete ||
|
|
||||||
keysym == Clutter.KEY_KP_Delete) {
|
|
||||||
this.close();
|
|
||||||
return Clutter.EVENT_STOP;
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(Message.prototype);
|
|
||||||
|
|
||||||
const MessageListSection = new Lang.Class({
|
|
||||||
Name: 'MessageListSection',
|
|
||||||
|
|
||||||
_init: function(title) {
|
|
||||||
this.actor = new St.BoxLayout({ style_class: 'message-list-section',
|
|
||||||
clip_to_allocation: true,
|
|
||||||
x_expand: true, vertical: true });
|
|
||||||
let titleBox = new St.BoxLayout({ style_class: 'message-list-section-title-box' });
|
|
||||||
this.actor.add_actor(titleBox);
|
|
||||||
|
|
||||||
this._title = new St.Button({ style_class: 'message-list-section-title',
|
|
||||||
label: title,
|
|
||||||
can_focus: true,
|
|
||||||
x_expand: true,
|
|
||||||
x_align: St.Align.START });
|
|
||||||
titleBox.add_actor(this._title);
|
|
||||||
|
|
||||||
this._title.connect('clicked', Lang.bind(this, this._onTitleClicked));
|
|
||||||
this._title.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
|
|
||||||
|
|
||||||
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic' });
|
|
||||||
this._closeButton = new St.Button({ style_class: 'message-list-section-close',
|
|
||||||
child: closeIcon,
|
|
||||||
accessible_name: _("Clear section"),
|
|
||||||
can_focus: true });
|
|
||||||
this._closeButton.set_x_align(Clutter.ActorAlign.END);
|
|
||||||
titleBox.add_actor(this._closeButton);
|
|
||||||
|
|
||||||
this._closeButton.connect('clicked', Lang.bind(this, this.clear));
|
|
||||||
|
|
||||||
this._list = new St.BoxLayout({ style_class: 'message-list-section-list',
|
|
||||||
vertical: true });
|
|
||||||
this.actor.add_actor(this._list);
|
|
||||||
|
|
||||||
this._list.connect('actor-added', Lang.bind(this, this._sync));
|
|
||||||
this._list.connect('actor-removed', Lang.bind(this, this._sync));
|
|
||||||
|
|
||||||
let id = Main.sessionMode.connect('updated',
|
|
||||||
Lang.bind(this, this._sync));
|
|
||||||
this.actor.connect('destroy', function() {
|
|
||||||
Main.sessionMode.disconnect(id);
|
|
||||||
});
|
|
||||||
|
|
||||||
this._messages = new Map();
|
|
||||||
this._date = new Date();
|
|
||||||
this.empty = true;
|
|
||||||
this._sync();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onTitleClicked: function() {
|
|
||||||
Main.overview.hide();
|
|
||||||
Main.panel.closeCalendar();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onKeyFocusIn: function(actor) {
|
|
||||||
this.emit('key-focus-in', actor);
|
|
||||||
},
|
|
||||||
|
|
||||||
get allowed() {
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
setDate: function(date) {
|
|
||||||
if (Calendar.sameDay(date, this._date))
|
|
||||||
return;
|
|
||||||
this._date = date;
|
|
||||||
this._sync();
|
|
||||||
},
|
|
||||||
|
|
||||||
addMessage: function(message, animate) {
|
|
||||||
this.addMessageAtIndex(message, -1, animate);
|
|
||||||
},
|
|
||||||
|
|
||||||
addMessageAtIndex: function(message, index, animate) {
|
|
||||||
let obj = {
|
|
||||||
container: null,
|
|
||||||
destroyId: 0,
|
|
||||||
keyFocusId: 0,
|
|
||||||
closeId: 0
|
|
||||||
};
|
|
||||||
let pivot = new Clutter.Point({ x: .5, y: .5 });
|
|
||||||
let scale = animate ? 0 : 1;
|
|
||||||
obj.container = new St.Widget({ layout_manager: new ScaleLayout(),
|
|
||||||
pivot_point: pivot,
|
|
||||||
scale_x: scale, scale_y: scale });
|
|
||||||
obj.keyFocusId = message.actor.connect('key-focus-in',
|
|
||||||
Lang.bind(this, this._onKeyFocusIn));
|
|
||||||
obj.destroyId = message.actor.connect('destroy',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this.removeMessage(message, false);
|
|
||||||
}));
|
|
||||||
obj.closeId = message.connect('close',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this.removeMessage(message, true);
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._messages.set(message, obj);
|
|
||||||
obj.container.add_actor(message.actor);
|
|
||||||
|
|
||||||
this._list.insert_child_at_index(obj.container, index);
|
|
||||||
|
|
||||||
if (animate)
|
|
||||||
Tweener.addTween(obj.container, { scale_x: 1,
|
|
||||||
scale_y: 1,
|
|
||||||
time: MESSAGE_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
},
|
|
||||||
|
|
||||||
moveMessage: function(message, index, animate) {
|
|
||||||
let obj = this._messages.get(message);
|
|
||||||
|
|
||||||
if (!animate) {
|
|
||||||
this._list.set_child_at_index(obj.container, index);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let onComplete = Lang.bind(this, function() {
|
|
||||||
this._list.set_child_at_index(obj.container, index);
|
|
||||||
Tweener.addTween(obj.container, { scale_x: 1,
|
|
||||||
scale_y: 1,
|
|
||||||
time: MESSAGE_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
});
|
|
||||||
Tweener.addTween(obj.container, { scale_x: 0,
|
|
||||||
scale_y: 0,
|
|
||||||
time: MESSAGE_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: onComplete });
|
|
||||||
},
|
|
||||||
|
|
||||||
removeMessage: function(message, animate) {
|
|
||||||
let obj = this._messages.get(message);
|
|
||||||
|
|
||||||
message.actor.disconnect(obj.destroyId);
|
|
||||||
message.actor.disconnect(obj.keyFocusId);
|
|
||||||
message.disconnect(obj.closeId);
|
|
||||||
|
|
||||||
this._messages.delete(message);
|
|
||||||
|
|
||||||
if (animate) {
|
|
||||||
Tweener.addTween(obj.container, { scale_x: 0, scale_y: 0,
|
|
||||||
time: MESSAGE_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: function() {
|
|
||||||
obj.container.destroy();
|
|
||||||
global.sync_pointer();
|
|
||||||
}});
|
|
||||||
} else {
|
|
||||||
obj.container.destroy();
|
|
||||||
global.sync_pointer();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
clear: function() {
|
|
||||||
let messages = [...this._messages.keys()].filter(function(message) {
|
|
||||||
return message.canClose();
|
|
||||||
});
|
|
||||||
|
|
||||||
// If there are few messages, letting them all zoom out looks OK
|
|
||||||
if (messages.length < 2) {
|
|
||||||
messages.forEach(function(message) {
|
|
||||||
message.close();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// Otherwise we slide them out one by one, and then zoom them
|
|
||||||
// out "off-screen" in the end to smoothly shrink the parent
|
|
||||||
let delay = MESSAGE_ANIMATION_TIME / Math.max(messages.length, 5);
|
|
||||||
for (let i = 0; i < messages.length; i++) {
|
|
||||||
let message = messages[i];
|
|
||||||
let obj = this._messages.get(message);
|
|
||||||
Tweener.addTween(obj.container,
|
|
||||||
{ anchor_x: this._list.width,
|
|
||||||
opacity: 0,
|
|
||||||
time: MESSAGE_ANIMATION_TIME,
|
|
||||||
delay: i * delay,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: function() {
|
|
||||||
message.close();
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_canClear: function() {
|
|
||||||
for (let message of this._messages.keys())
|
|
||||||
if (message.canClose())
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_shouldShow: function() {
|
|
||||||
return !this.empty;
|
|
||||||
},
|
|
||||||
|
|
||||||
_sync: function() {
|
|
||||||
let empty = this._list.get_n_children() == 0;
|
|
||||||
let changed = this.empty !== empty;
|
|
||||||
this.empty = empty;
|
|
||||||
|
|
||||||
if (changed)
|
|
||||||
this.emit('empty-changed');
|
|
||||||
|
|
||||||
this._closeButton.visible = this._canClear();
|
|
||||||
this.actor.visible = this.allowed && this._shouldShow();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(MessageListSection.prototype);
|
|
@ -259,7 +259,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!this.pushModal(timestamp))
|
if (!this.pushModal({ timestamp: timestamp }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._fadeOpen(onPrimary);
|
this._fadeOpen(onPrimary);
|
||||||
@ -318,11 +318,8 @@ const ModalDialog = new Lang.Class({
|
|||||||
pushModal: function (timestamp) {
|
pushModal: function (timestamp) {
|
||||||
if (this._hasModal)
|
if (this._hasModal)
|
||||||
return true;
|
return true;
|
||||||
|
if (!Main.pushModal(this._group, { timestamp: timestamp,
|
||||||
let params = { actionMode: this._actionMode };
|
actionMode: this._actionMode }))
|
||||||
if (timestamp)
|
|
||||||
params['timestamp'] = timestamp;
|
|
||||||
if (!Main.pushModal(this._group, params))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._hasModal = true;
|
this._hasModal = true;
|
||||||
|
270
js/ui/mpris.js
270
js/ui/mpris.js
@ -1,270 +0,0 @@
|
|||||||
const Gio = imports.gi.Gio;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Calendar = imports.ui.calendar;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const MessageList = imports.ui.messageList;
|
|
||||||
|
|
||||||
const DBusIface = '<node> \
|
|
||||||
<interface name="org.freedesktop.DBus"> \
|
|
||||||
<method name="ListNames"> \
|
|
||||||
<arg type="as" direction="out" name="names" /> \
|
|
||||||
</method> \
|
|
||||||
<signal name="NameOwnerChanged"> \
|
|
||||||
<arg type="s" direction="out" name="name" /> \
|
|
||||||
<arg type="s" direction="out" name="oldOwner" /> \
|
|
||||||
<arg type="s" direction="out" name="newOwner" /> \
|
|
||||||
</signal> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface);
|
|
||||||
|
|
||||||
const MprisIface = '<node> \
|
|
||||||
<interface name="org.mpris.MediaPlayer2"> \
|
|
||||||
<method name="Raise" /> \
|
|
||||||
<property name="CanRaise" type="b" access="read" /> \
|
|
||||||
<property name="DesktopEntry" type="s" access="read" /> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface);
|
|
||||||
|
|
||||||
const MprisPlayerIface = '<node> \
|
|
||||||
<interface name="org.mpris.MediaPlayer2.Player"> \
|
|
||||||
<method name="PlayPause" /> \
|
|
||||||
<method name="Next" /> \
|
|
||||||
<method name="Previous" /> \
|
|
||||||
<property name="CanPlay" type="b" access="read" /> \
|
|
||||||
<property name="Metadata" type="a{sv}" access="read" /> \
|
|
||||||
<property name="PlaybackStatus" type="s" access="read" /> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface);
|
|
||||||
|
|
||||||
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';
|
|
||||||
|
|
||||||
const MediaMessage = new Lang.Class({
|
|
||||||
Name: 'MediaMessage',
|
|
||||||
Extends: MessageList.Message,
|
|
||||||
|
|
||||||
_init: function(player) {
|
|
||||||
this._player = player;
|
|
||||||
|
|
||||||
this.parent('', '');
|
|
||||||
|
|
||||||
this._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
|
|
||||||
this.setIcon(this._icon);
|
|
||||||
|
|
||||||
this.addMediaControl('media-skip-backward-symbolic',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._player.previous();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._playPauseButton = this.addMediaControl(null,
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._player.playPause();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this.addMediaControl('media-skip-forward-symbolic',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._player.next();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._player.connect('changed', Lang.bind(this, this._update));
|
|
||||||
this._player.connect('closed', Lang.bind(this, this.close));
|
|
||||||
this._update();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onClicked: function() {
|
|
||||||
this._player.raise();
|
|
||||||
Main.panel.closeCalendar();
|
|
||||||
},
|
|
||||||
|
|
||||||
_update: function() {
|
|
||||||
this.setTitle(this._player.trackArtists.join(', '));
|
|
||||||
this.setBody(this._player.trackTitle);
|
|
||||||
|
|
||||||
if (this._player.trackCoverUrl) {
|
|
||||||
let file = Gio.File.new_for_uri(this._player.trackCoverUrl);
|
|
||||||
this._icon.gicon = new Gio.FileIcon({ file: file });
|
|
||||||
this._icon.remove_style_class_name('fallback');
|
|
||||||
} else {
|
|
||||||
this._icon.icon_name = 'audio-x-generic-symbolic';
|
|
||||||
this._icon.add_style_class_name('fallback');
|
|
||||||
}
|
|
||||||
|
|
||||||
let isPlaying = this._player.status == 'Playing';
|
|
||||||
let iconName = isPlaying ? 'media-playback-pause-symbolic'
|
|
||||||
: 'media-playback-start-symbolic';
|
|
||||||
this._playPauseButton.child.icon_name = iconName;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const MprisPlayer = new Lang.Class({
|
|
||||||
Name: 'MprisPlayer',
|
|
||||||
|
|
||||||
_init: function(busName) {
|
|
||||||
this._mprisProxy = new MprisProxy(Gio.DBus.session, busName,
|
|
||||||
'/org/mpris/MediaPlayer2',
|
|
||||||
Lang.bind(this, this._onMprisProxyReady));
|
|
||||||
this._playerProxy = new MprisPlayerProxy(Gio.DBus.session, busName,
|
|
||||||
'/org/mpris/MediaPlayer2',
|
|
||||||
Lang.bind(this, this._onPlayerProxyReady));
|
|
||||||
|
|
||||||
this._visible = false;
|
|
||||||
this._trackArtists = [];
|
|
||||||
this._trackTitle = '';
|
|
||||||
this._trackCoverUrl = '';
|
|
||||||
},
|
|
||||||
|
|
||||||
get status() {
|
|
||||||
return this._playerProxy.PlaybackStatus;
|
|
||||||
},
|
|
||||||
|
|
||||||
get trackArtists() {
|
|
||||||
return this._trackArtists;
|
|
||||||
},
|
|
||||||
|
|
||||||
get trackTitle() {
|
|
||||||
return this._trackTitle;
|
|
||||||
},
|
|
||||||
|
|
||||||
get trackCoverUrl() {
|
|
||||||
return this._trackCoverUrl;
|
|
||||||
},
|
|
||||||
|
|
||||||
playPause: function() {
|
|
||||||
this._playerProxy.PlayPauseRemote();
|
|
||||||
},
|
|
||||||
|
|
||||||
next: function() {
|
|
||||||
this._playerProxy.NextRemote();
|
|
||||||
},
|
|
||||||
|
|
||||||
previous: function() {
|
|
||||||
this._playerProxy.PreviousRemote();
|
|
||||||
},
|
|
||||||
|
|
||||||
raise: function() {
|
|
||||||
// The remote Raise() method may run into focus stealing prevention,
|
|
||||||
// so prefer activating the app via .desktop file if possible
|
|
||||||
let app = null;
|
|
||||||
if (this._mprisProxy.DesktopEntry) {
|
|
||||||
let desktopId = this._mprisProxy.DesktopEntry + '.desktop';
|
|
||||||
app = Shell.AppSystem.get_default().lookup_app(desktopId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (app)
|
|
||||||
app.activate();
|
|
||||||
else if (this._mprisProxy.CanRaise)
|
|
||||||
this._mprisProxy.RaiseRemote();
|
|
||||||
},
|
|
||||||
|
|
||||||
_close: function() {
|
|
||||||
this._mprisProxy.disconnect(this._ownerNotifyId);
|
|
||||||
this._mprisProxy = null;
|
|
||||||
|
|
||||||
this._playerProxy.disconnect(this._propsChangedId);
|
|
||||||
this._playerProxy = null;
|
|
||||||
|
|
||||||
this.emit('closed');
|
|
||||||
},
|
|
||||||
|
|
||||||
_onMprisProxyReady: function() {
|
|
||||||
this._ownerNotifyId = this._mprisProxy.connect('notify::g-name-owner',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
if (!this._mprisProxy.g_name_owner)
|
|
||||||
this._close();
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onPlayerProxyReady: function() {
|
|
||||||
this._propsChangedId = this._playerProxy.connect('g-properties-changed',
|
|
||||||
Lang.bind(this, this._updateState));
|
|
||||||
this._updateState();
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateState: function() {
|
|
||||||
let metadata = {};
|
|
||||||
for (let prop in this._playerProxy.Metadata)
|
|
||||||
metadata[prop] = this._playerProxy.Metadata[prop].deep_unpack();
|
|
||||||
|
|
||||||
this._trackArtists = metadata['xesam:artist'] || [_("Unknown artist")];
|
|
||||||
this._trackTitle = metadata['xesam:title'] || _("Unknown title");
|
|
||||||
this._trackCoverUrl = metadata['mpris:artUrl'] || '';
|
|
||||||
this.emit('changed');
|
|
||||||
|
|
||||||
let visible = this._playerProxy.CanPlay;
|
|
||||||
|
|
||||||
if (this._visible != visible) {
|
|
||||||
this._visible = visible;
|
|
||||||
if (visible)
|
|
||||||
this.emit('show');
|
|
||||||
else
|
|
||||||
this._close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(MprisPlayer.prototype);
|
|
||||||
|
|
||||||
const MediaSection = new Lang.Class({
|
|
||||||
Name: 'MediaSection',
|
|
||||||
Extends: MessageList.MessageListSection,
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
this.parent(_("Media"));
|
|
||||||
|
|
||||||
this._players = new Map();
|
|
||||||
|
|
||||||
this._proxy = new DBusProxy(Gio.DBus.session,
|
|
||||||
'org.freedesktop.DBus',
|
|
||||||
'/org/freedesktop/DBus',
|
|
||||||
Lang.bind(this, this._onProxyReady));
|
|
||||||
},
|
|
||||||
|
|
||||||
_shouldShow: function() {
|
|
||||||
return !this.empty && Calendar.isToday(this._date);
|
|
||||||
},
|
|
||||||
|
|
||||||
_addPlayer: function(busName) {
|
|
||||||
if (this._players.get(busName))
|
|
||||||
return;
|
|
||||||
|
|
||||||
let player = new MprisPlayer(busName);
|
|
||||||
player.connect('closed', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
this._players.delete(busName);
|
|
||||||
}));
|
|
||||||
player.connect('show', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
let message = new MediaMessage(player);
|
|
||||||
this.addMessage(message, true);
|
|
||||||
}));
|
|
||||||
this._players.set(busName, player);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onProxyReady: function() {
|
|
||||||
this._proxy.ListNamesRemote(Lang.bind(this,
|
|
||||||
function([names]) {
|
|
||||||
names.forEach(Lang.bind(this,
|
|
||||||
function(name) {
|
|
||||||
if (!name.startsWith(MPRIS_PLAYER_PREFIX))
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._addPlayer(name);
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
this._proxy.connectSignal('NameOwnerChanged',
|
|
||||||
Lang.bind(this, this._onNameOwnerChanged));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onNameOwnerChanged: function(proxy, sender, [name, oldOwner, newOwner]) {
|
|
||||||
if (!name.startsWith(MPRIS_PLAYER_PREFIX))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (newOwner && !oldOwner)
|
|
||||||
this._addPlayer(name);
|
|
||||||
}
|
|
||||||
});
|
|
@ -95,7 +95,6 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
this._menuManager = panel.menuManager;
|
this._menuManager = panel.menuManager;
|
||||||
this._gtkSettings = Gtk.Settings.get_default();
|
|
||||||
this._targetApp = null;
|
this._targetApp = null;
|
||||||
this._appMenuNotifyId = 0;
|
this._appMenuNotifyId = 0;
|
||||||
this._actionGroupNotifyId = 0;
|
this._actionGroupNotifyId = 0;
|
||||||
@ -124,14 +123,11 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM);
|
this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM);
|
||||||
this._container.add_actor(this._arrow);
|
this._container.add_actor(this._arrow);
|
||||||
|
|
||||||
this._visible = this._gtkSettings.gtk_shell_shows_app_menu &&
|
this._visible = !Main.overview.visible;
|
||||||
!Main.overview.visible;
|
|
||||||
if (!this._visible)
|
if (!this._visible)
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync));
|
this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync));
|
||||||
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync));
|
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync));
|
||||||
this._showsAppMenuId = this._gtkSettings.connect('notify::gtk-shell-shows-app-menu',
|
|
||||||
Lang.bind(this, this._sync));
|
|
||||||
|
|
||||||
this._stop = true;
|
this._stop = true;
|
||||||
|
|
||||||
@ -309,9 +305,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let visible = (this._targetApp != null &&
|
let visible = (this._targetApp != null && !Main.overview.visibleTarget);
|
||||||
this._gtkSettings.gtk_shell_shows_app_menu &&
|
|
||||||
!Main.overview.visibleTarget);
|
|
||||||
if (visible)
|
if (visible)
|
||||||
this.show();
|
this.show();
|
||||||
else
|
else
|
||||||
@ -384,10 +378,6 @@ const AppMenuButton = new Lang.Class({
|
|||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
this._overviewShowingId = 0;
|
this._overviewShowingId = 0;
|
||||||
}
|
}
|
||||||
if (this._showsAppMenuId > 0) {
|
|
||||||
this._gtkSettings.disconnect(this._showsAppMenuId);
|
|
||||||
this._showsAppMenuId = 0;
|
|
||||||
}
|
|
||||||
if (this._switchWorkspaceNotifyId > 0) {
|
if (this._switchWorkspaceNotifyId > 0) {
|
||||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||||
this._switchWorkspaceNotifyId = 0;
|
this._switchWorkspaceNotifyId = 0;
|
||||||
@ -459,8 +449,7 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
|
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END ||
|
if (event.type() == Clutter.EventType.TOUCH_END ||
|
||||||
event.type() == Clutter.EventType.BUTTON_RELEASE)
|
event.type() == Clutter.EventType.BUTTON_RELEASE)
|
||||||
if (Main.overview.shouldToggleByCornerOrButton())
|
Main.overview.toggle();
|
||||||
Main.overview.toggle();
|
|
||||||
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
@ -468,8 +457,7 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
_onKeyRelease: function(actor, event) {
|
_onKeyRelease: function(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
||||||
if (Main.overview.shouldToggleByCornerOrButton())
|
Main.overview.toggle();
|
||||||
Main.overview.toggle();
|
|
||||||
}
|
}
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
@ -654,50 +642,14 @@ const PanelCorner = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const AggregateLayout = new Lang.Class({
|
|
||||||
Name: 'AggregateLayout',
|
|
||||||
Extends: Clutter.BoxLayout,
|
|
||||||
|
|
||||||
_init: function(params) {
|
|
||||||
if (!params)
|
|
||||||
params = {};
|
|
||||||
params['orientation'] = Clutter.Orientation.VERTICAL;
|
|
||||||
this.parent(params);
|
|
||||||
|
|
||||||
this._sizeChildren = [];
|
|
||||||
},
|
|
||||||
|
|
||||||
addSizeChild: function(actor) {
|
|
||||||
this._sizeChildren.push(actor);
|
|
||||||
this.layout_changed();
|
|
||||||
},
|
|
||||||
|
|
||||||
vfunc_get_preferred_width: function(container, forHeight) {
|
|
||||||
let themeNode = container.get_theme_node();
|
|
||||||
let minWidth = themeNode.get_min_width();
|
|
||||||
let natWidth = minWidth;
|
|
||||||
|
|
||||||
for (let i = 0; i < this._sizeChildren.length; i++) {
|
|
||||||
let child = this._sizeChildren[i];
|
|
||||||
let [childMin, childNat] = child.get_preferred_width(forHeight);
|
|
||||||
minWidth = Math.max(minWidth, childMin);
|
|
||||||
natWidth = Math.max(minWidth, childNat);
|
|
||||||
}
|
|
||||||
return [minWidth, natWidth];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const AggregateMenu = new Lang.Class({
|
const AggregateMenu = new Lang.Class({
|
||||||
Name: 'AggregateMenu',
|
Name: 'AggregateMenu',
|
||||||
Extends: PanelMenu.Button,
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(0.0, C_("System menu in the top bar", "System"), false);
|
this.parent(0.0, _("Settings"), false);
|
||||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||||
|
|
||||||
let menuLayout = new AggregateLayout();
|
|
||||||
this.menu.box.set_layout_manager(menuLayout);
|
|
||||||
|
|
||||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||||
this.actor.add_child(this._indicators);
|
this.actor.add_child(this._indicators);
|
||||||
|
|
||||||
@ -746,11 +698,6 @@ const AggregateMenu = new Lang.Class({
|
|||||||
this.menu.addMenuItem(this._rfkill.menu);
|
this.menu.addMenuItem(this._rfkill.menu);
|
||||||
this.menu.addMenuItem(this._power.menu);
|
this.menu.addMenuItem(this._power.menu);
|
||||||
this.menu.addMenuItem(this._system.menu);
|
this.menu.addMenuItem(this._system.menu);
|
||||||
|
|
||||||
menuLayout.addSizeChild(this._location.menu.actor);
|
|
||||||
menuLayout.addSizeChild(this._rfkill.menu.actor);
|
|
||||||
menuLayout.addSizeChild(this._power.menu.actor);
|
|
||||||
menuLayout.addSizeChild(this._system.menu.actor);
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -396,7 +396,6 @@ const PopupImageMenuItem = new Lang.Class({
|
|||||||
this.actor.add_child(this.label);
|
this.actor.add_child(this.label);
|
||||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||||
this.actor.add_child(this._icon, { align: St.Align.END });
|
this.actor.add_child(this._icon, { align: St.Align.END });
|
||||||
this.actor.label_actor = this.label;
|
|
||||||
|
|
||||||
this.setIcon(iconName);
|
this.setIcon(iconName);
|
||||||
},
|
},
|
||||||
@ -1146,16 +1145,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
|||||||
this.actor.remove_style_pseudo_class ('active');
|
this.actor.remove_style_pseudo_class ('active');
|
||||||
this._setOpenState(!this._getOpenState());
|
this._setOpenState(!this._getOpenState());
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
|
||||||
|
|
||||||
_onTouchEvent: function(actor, event) {
|
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
|
||||||
// Since we override the parent, we need to manage what the parent does
|
|
||||||
// with the active style class
|
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
|
||||||
this._setOpenState(!this._getOpenState());
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ const RunDialog = new Lang.Class({
|
|||||||
|
|
||||||
// rt is short for "reload theme"
|
// rt is short for "reload theme"
|
||||||
'rt': Lang.bind(this, function() {
|
'rt': Lang.bind(this, function() {
|
||||||
Main.reloadThemeResource();
|
|
||||||
Main.loadTheme();
|
Main.loadTheme();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
@ -137,10 +137,6 @@ const Slider = new Lang.Class({
|
|||||||
this._motionId = this.actor.connect('motion-event', Lang.bind(this, this._motionEvent));
|
this._motionId = this.actor.connect('motion-event', Lang.bind(this, this._motionEvent));
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to emit 'drag-begin' before moving the handle to make
|
|
||||||
// sure that no 'value-changed' signal is emitted before this one.
|
|
||||||
this.emit('drag-begin');
|
|
||||||
|
|
||||||
let absX, absY;
|
let absX, absY;
|
||||||
[absX, absY] = event.get_coords();
|
[absX, absY] = event.get_coords();
|
||||||
this._moveHandle(absX, absY);
|
this._moveHandle(absX, absY);
|
||||||
@ -228,7 +224,6 @@ const Slider = new Lang.Class({
|
|||||||
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
|
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
|
||||||
this._value = Math.max(0, Math.min(this._value + delta, 1));
|
this._value = Math.max(0, Math.min(this._value + delta, 1));
|
||||||
this.actor.queue_repaint();
|
this.actor.queue_repaint();
|
||||||
this.emit('drag-begin');
|
|
||||||
this.emit('value-changed', this._value);
|
this.emit('value-changed', this._value);
|
||||||
this.emit('drag-end');
|
this.emit('drag-end');
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GnomeBluetooth = imports.gi.GnomeBluetooth;
|
const GnomeBluetooth = imports.gi.GnomeBluetooth;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
@ -20,8 +23,6 @@ const RfkillManagerInterface = '<node> \
|
|||||||
|
|
||||||
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
|
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
|
||||||
|
|
||||||
const HAD_BLUETOOTH_DEVICES_SETUP = 'had-bluetooth-devices-setup';
|
|
||||||
|
|
||||||
const Indicator = new Lang.Class({
|
const Indicator = new Lang.Class({
|
||||||
Name: 'BTIndicator',
|
Name: 'BTIndicator',
|
||||||
Extends: PanelMenu.SystemIndicator,
|
Extends: PanelMenu.SystemIndicator,
|
||||||
@ -31,7 +32,6 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._indicator = this._addIndicator();
|
this._indicator = this._addIndicator();
|
||||||
this._indicator.icon_name = 'bluetooth-active-symbolic';
|
this._indicator.icon_name = 'bluetooth-active-symbolic';
|
||||||
this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP);
|
|
||||||
|
|
||||||
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
||||||
Lang.bind(this, function(proxy, error) {
|
Lang.bind(this, function(proxy, error) {
|
||||||
@ -44,15 +44,13 @@ const Indicator = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
this._proxy.connect('g-properties-changed', Lang.bind(this, this._sync));
|
this._proxy.connect('g-properties-changed', Lang.bind(this, this._sync));
|
||||||
|
|
||||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true);
|
// The Bluetooth menu only appears when Bluetooth is in use,
|
||||||
|
// so just statically build it with a "Turn Off" menu item.
|
||||||
|
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||||
this._item.icon.icon_name = 'bluetooth-active-symbolic';
|
this._item.icon.icon_name = 'bluetooth-active-symbolic';
|
||||||
|
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
||||||
this._toggleItem = new PopupMenu.PopupMenuItem('');
|
this._proxy.BluetoothAirplaneMode = true;
|
||||||
this._toggleItem.connect('activate', Lang.bind(this, function() {
|
|
||||||
this._proxy.BluetoothAirplaneMode = !this._proxy.BluetoothAirplaneMode;
|
|
||||||
}));
|
}));
|
||||||
this._item.menu.addMenuItem(this._toggleItem);
|
|
||||||
|
|
||||||
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
|
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
|
||||||
this.menu.addMenuItem(this._item);
|
this.menu.addMenuItem(this._item);
|
||||||
|
|
||||||
@ -70,75 +68,42 @@ const Indicator = new Lang.Class({
|
|||||||
while (ret) {
|
while (ret) {
|
||||||
let isDefault = this._model.get_value(iter,
|
let isDefault = this._model.get_value(iter,
|
||||||
GnomeBluetooth.Column.DEFAULT);
|
GnomeBluetooth.Column.DEFAULT);
|
||||||
let isPowered = this._model.get_value(iter,
|
if (isDefault)
|
||||||
GnomeBluetooth.Column.POWERED);
|
|
||||||
if (isDefault && isPowered)
|
|
||||||
return iter;
|
return iter;
|
||||||
ret = this._model.iter_next(iter);
|
ret = this._model.iter_next(iter);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
// nDevices is the number of devices setup for the current default
|
_getNConnectedDevices: function() {
|
||||||
// adapter if one exists and is powered. If unpowered or unavailable,
|
|
||||||
// nDevice is "1" if it had setup devices associated to it the last
|
|
||||||
// time it was seen, and "-1" if not.
|
|
||||||
//
|
|
||||||
// nConnectedDevices is the number of devices connected to the default
|
|
||||||
// adapter if one exists and is powered, or -1 if it's not available.
|
|
||||||
_getNDevices: function() {
|
|
||||||
let adapter = this._getDefaultAdapter();
|
let adapter = this._getDefaultAdapter();
|
||||||
if (!adapter)
|
if (!adapter)
|
||||||
return [ this._hadSetupDevices ? 1 : -1, -1 ];
|
return 0;
|
||||||
|
|
||||||
let nConnectedDevices = 0;
|
|
||||||
let nDevices = 0;
|
let nDevices = 0;
|
||||||
let [ret, iter] = this._model.iter_children(adapter);
|
let [ret, iter] = this._model.iter_children(adapter);
|
||||||
while (ret) {
|
while (ret) {
|
||||||
let isConnected = this._model.get_value(iter,
|
let isConnected = this._model.get_value(iter,
|
||||||
GnomeBluetooth.Column.CONNECTED);
|
GnomeBluetooth.Column.CONNECTED);
|
||||||
if (isConnected)
|
if (isConnected)
|
||||||
nConnectedDevices++;
|
|
||||||
|
|
||||||
let isPaired = this._model.get_value(iter,
|
|
||||||
GnomeBluetooth.Column.PAIRED);
|
|
||||||
let isTrusted = this._model.get_value(iter,
|
|
||||||
GnomeBluetooth.Column.TRUSTED);
|
|
||||||
if (isPaired || isTrusted)
|
|
||||||
nDevices++;
|
nDevices++;
|
||||||
ret = this._model.iter_next(iter);
|
ret = this._model.iter_next(iter);
|
||||||
}
|
}
|
||||||
|
return nDevices;
|
||||||
if (this._hadSetupDevices != (nDevices > 0)) {
|
|
||||||
this._hadSetupDevices = !this._hadSetupDevices;
|
|
||||||
global.settings.set_boolean(HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices);
|
|
||||||
}
|
|
||||||
|
|
||||||
return [ nDevices, nConnectedDevices];
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_sync: function() {
|
_sync: function() {
|
||||||
let [ nDevices, nConnectedDevices ] = this._getNDevices();
|
let nDevices = this._getNConnectedDevices();
|
||||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||||
|
|
||||||
this.menu.setSensitive(sensitive);
|
this.menu.setSensitive(sensitive);
|
||||||
this._indicator.visible = nConnectedDevices > 0;
|
this._indicator.visible = nDevices > 0;
|
||||||
|
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
||||||
|
|
||||||
// Remember if there were setup devices and show the menu
|
|
||||||
// if we've seen setup devices and we're not hard blocked
|
|
||||||
if (nDevices > 0)
|
if (nDevices > 0)
|
||||||
this._item.actor.visible = !this._proxy.BluetoothHardwareAirplaneMode;
|
|
||||||
else
|
|
||||||
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
|
||||||
|
|
||||||
if (nConnectedDevices > 0)
|
|
||||||
/* Translators: this is the number of connected bluetooth devices */
|
/* Translators: this is the number of connected bluetooth devices */
|
||||||
this._item.label.text = ngettext("%d Connected", "%d Connected", nConnectedDevices).format(nConnectedDevices);
|
this._item.label.text = ngettext("%d Connected", "%d Connected", nDevices).format(nDevices);
|
||||||
else if (nConnectedDevices == -1)
|
|
||||||
this._item.label.text = _("Off");
|
|
||||||
else
|
else
|
||||||
this._item.label.text = _("Not In Use");
|
this._item.label.text = _("Not In Use");
|
||||||
|
|
||||||
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -8,18 +7,12 @@ const Lang = imports.lang;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const LOCATION_SCHEMA = 'org.gnome.system.location';
|
const LOCATION_SCHEMA = 'org.gnome.system.location';
|
||||||
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
|
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
|
||||||
const ENABLED = 'enabled';
|
const ENABLED = 'enabled';
|
||||||
|
|
||||||
const APP_PERMISSIONS_TABLE = 'gnome';
|
|
||||||
const APP_PERMISSIONS_ID = 'geolocation';
|
|
||||||
|
|
||||||
const GeoclueAccuracyLevel = {
|
const GeoclueAccuracyLevel = {
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
COUNTRY: 1,
|
COUNTRY: 1,
|
||||||
@ -29,15 +22,6 @@ const GeoclueAccuracyLevel = {
|
|||||||
EXACT: 8
|
EXACT: 8
|
||||||
};
|
};
|
||||||
|
|
||||||
function accuracyLevelToString(accuracyLevel) {
|
|
||||||
for (let key in GeoclueAccuracyLevel) {
|
|
||||||
if (GeoclueAccuracyLevel[key] == accuracyLevel)
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 'NONE';
|
|
||||||
}
|
|
||||||
|
|
||||||
var GeoclueIface = '<node> \
|
var GeoclueIface = '<node> \
|
||||||
<interface name="org.freedesktop.GeoClue2.Manager"> \
|
<interface name="org.freedesktop.GeoClue2.Manager"> \
|
||||||
<property name="InUse" type="b" access="read"/> \
|
<property name="InUse" type="b" access="read"/> \
|
||||||
@ -62,26 +46,6 @@ var AgentIface = '<node> \
|
|||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
var XdgAppIface = '<node> \
|
|
||||||
<interface name="org.freedesktop.XdgApp.PermissionStore"> \
|
|
||||||
<method name="Lookup"> \
|
|
||||||
<arg name="table" type="s" direction="in"/> \
|
|
||||||
<arg name="id" type="s" direction="in"/> \
|
|
||||||
<arg name="permissions" type="a{sas}" direction="out"/> \
|
|
||||||
<arg name="data" type="v" direction="out"/> \
|
|
||||||
</method> \
|
|
||||||
<method name="Set"> \
|
|
||||||
<arg name="table" type="s" direction="in"/> \
|
|
||||||
<arg name="create" type="b" direction="in"/> \
|
|
||||||
<arg name="id" type="s" direction="in"/> \
|
|
||||||
<arg name="app_permissions" type="a{sas}" direction="in"/> \
|
|
||||||
<arg name="data" type="v" direction="in"/> \
|
|
||||||
</method> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
|
|
||||||
const PermissionStore = Gio.DBusProxy.makeProxyWrapper(XdgAppIface);
|
|
||||||
|
|
||||||
const Indicator = new Lang.Class({
|
const Indicator = new Lang.Class({
|
||||||
Name: 'LocationIndicator',
|
Name: 'LocationIndicator',
|
||||||
Extends: PanelMenu.SystemIndicator,
|
Extends: PanelMenu.SystemIndicator,
|
||||||
@ -119,66 +83,64 @@ const Indicator = new Lang.Class({
|
|||||||
this._onSessionUpdated();
|
this._onSessionUpdated();
|
||||||
this._onMaxAccuracyLevelChanged();
|
this._onMaxAccuracyLevelChanged();
|
||||||
this._connectToGeoclue();
|
this._connectToGeoclue();
|
||||||
this._connectToPermissionStore();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get MaxAccuracyLevel() {
|
get MaxAccuracyLevel() {
|
||||||
return this._getMaxAccuracyLevel();
|
return this._getMaxAccuracyLevel();
|
||||||
},
|
},
|
||||||
|
|
||||||
AuthorizeAppAsync: function(params, invocation) {
|
// We (and geoclue) have currently no way to reliably identifying apps so
|
||||||
let [desktopId, reqAccuracyLevel] = params;
|
// for now, lets just authorize all apps as long as they provide a valid
|
||||||
|
// desktop ID. We also ensure they don't get more accuracy than global max.
|
||||||
|
AuthorizeApp: function(desktop_id, reqAccuracyLevel) {
|
||||||
|
var appSystem = Shell.AppSystem.get_default();
|
||||||
|
var app = appSystem.lookup_app(desktop_id + ".desktop");
|
||||||
|
if (app == null) {
|
||||||
|
return [false, 0];
|
||||||
|
}
|
||||||
|
|
||||||
let authorizer = new AppAuthorizer(desktopId,
|
let allowedAccuracyLevel = clamp(reqAccuracyLevel, 0, this._getMaxAccuracyLevel());
|
||||||
reqAccuracyLevel,
|
return [true, allowedAccuracyLevel];
|
||||||
this._permStoreProxy,
|
|
||||||
this._getMaxAccuracyLevel());
|
|
||||||
|
|
||||||
authorizer.authorize(Lang.bind(this, function(accuracyLevel) {
|
|
||||||
let ret = (accuracyLevel != GeoclueAccuracyLevel.NONE);
|
|
||||||
invocation.return_value(GLib.Variant.new('(bu)',
|
|
||||||
[ret, accuracyLevel]));
|
|
||||||
}));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncIndicator: function() {
|
_syncIndicator: function() {
|
||||||
if (this._managerProxy == null) {
|
if (this._proxy == null) {
|
||||||
this._indicator.visible = false;
|
this._indicator.visible = false;
|
||||||
this._item.actor.visible = false;
|
this._item.actor.visible = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._indicator.visible = this._managerProxy.InUse;
|
this._indicator.visible = this._proxy.InUse;
|
||||||
this._item.actor.visible = this._indicator.visible;
|
this._item.actor.visible = this._indicator.visible;
|
||||||
this._updateMenuLabels();
|
this._updateMenuLabels();
|
||||||
},
|
},
|
||||||
|
|
||||||
_connectToGeoclue: function() {
|
_connectToGeoclue: function() {
|
||||||
if (this._managerProxy != null || this._connecting)
|
if (this._proxy != null || this._connecting)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._connecting = true;
|
this._connecting = true;
|
||||||
new GeoclueManager(Gio.DBus.system,
|
new GeoclueManager(Gio.DBus.system,
|
||||||
'org.freedesktop.GeoClue2',
|
'org.freedesktop.GeoClue2',
|
||||||
'/org/freedesktop/GeoClue2/Manager',
|
'/org/freedesktop/GeoClue2/Manager',
|
||||||
Lang.bind(this, this._onManagerProxyReady));
|
Lang.bind(this, this._onProxyReady));
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onManagerProxyReady: function(proxy, error) {
|
_onProxyReady: function(proxy, error) {
|
||||||
if (error != null) {
|
if (error != null) {
|
||||||
log(error.message);
|
log(error.message);
|
||||||
this._connecting = false;
|
this._connecting = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._managerProxy = proxy;
|
this._proxy = proxy;
|
||||||
this._propertiesChangedId = this._managerProxy.connect('g-properties-changed',
|
this._propertiesChangedId = this._proxy.connect('g-properties-changed',
|
||||||
Lang.bind(this, this._onGeocluePropsChanged));
|
Lang.bind(this, this._onGeocluePropsChanged));
|
||||||
|
|
||||||
this._syncIndicator();
|
this._syncIndicator();
|
||||||
|
|
||||||
this._managerProxy.AddAgentRemote('gnome-shell', Lang.bind(this, this._onAgentRegistered));
|
this._proxy.AddAgentRemote('gnome-shell', Lang.bind(this, this._onAgentRegistered));
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAgentRegistered: function(result, error) {
|
_onAgentRegistered: function(result, error) {
|
||||||
@ -191,10 +153,10 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_onGeoclueVanished: function() {
|
_onGeoclueVanished: function() {
|
||||||
if (this._propertiesChangedId) {
|
if (this._propertiesChangedId) {
|
||||||
this._managerProxy.disconnect(this._propertiesChangedId);
|
this._proxy.disconnect(this._propertiesChangedId);
|
||||||
this._propertiesChangedId = 0;
|
this._propertiesChangedId = 0;
|
||||||
}
|
}
|
||||||
this._managerProxy = null;
|
this._proxy = null;
|
||||||
|
|
||||||
this._syncIndicator();
|
this._syncIndicator();
|
||||||
},
|
},
|
||||||
@ -249,206 +211,9 @@ const Indicator = new Lang.Class({
|
|||||||
let unpacked = properties.deep_unpack();
|
let unpacked = properties.deep_unpack();
|
||||||
if ("InUse" in unpacked)
|
if ("InUse" in unpacked)
|
||||||
this._syncIndicator();
|
this._syncIndicator();
|
||||||
},
|
}
|
||||||
|
|
||||||
_connectToPermissionStore: function() {
|
|
||||||
this._permStoreProxy = null;
|
|
||||||
new PermissionStore(Gio.DBus.session,
|
|
||||||
'org.freedesktop.XdgApp',
|
|
||||||
'/org/freedesktop/XdgApp/PermissionStore',
|
|
||||||
Lang.bind(this, this._onPermStoreProxyReady));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onPermStoreProxyReady: function(proxy, error) {
|
|
||||||
if (error != null) {
|
|
||||||
log(error.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._permStoreProxy = proxy;
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function clamp(value, min, max) {
|
function clamp(value, min, max) {
|
||||||
return Math.max(min, Math.min(max, value));
|
return Math.max(min, Math.min(max, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
const AppAuthorizer = new Lang.Class({
|
|
||||||
Name: 'LocationAppAuthorizer',
|
|
||||||
|
|
||||||
_init: function(desktopId,
|
|
||||||
reqAccuracyLevel,
|
|
||||||
permStoreProxy,
|
|
||||||
maxAccuracyLevel) {
|
|
||||||
this.desktopId = desktopId;
|
|
||||||
this.reqAccuracyLevel = reqAccuracyLevel;
|
|
||||||
this._permStoreProxy = permStoreProxy;
|
|
||||||
this._maxAccuracyLevel = maxAccuracyLevel;
|
|
||||||
|
|
||||||
this._accuracyLevel = GeoclueAccuracyLevel.NONE;
|
|
||||||
},
|
|
||||||
|
|
||||||
authorize: function(onAuthDone) {
|
|
||||||
this._onAuthDone = onAuthDone;
|
|
||||||
|
|
||||||
let appSystem = Shell.AppSystem.get_default();
|
|
||||||
this._app = appSystem.lookup_app(this.desktopId + ".desktop");
|
|
||||||
if (this._app == null || this._permStoreProxy == null) {
|
|
||||||
this._completeAuth();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._permStoreProxy.LookupRemote(APP_PERMISSIONS_TABLE,
|
|
||||||
APP_PERMISSIONS_ID,
|
|
||||||
Lang.bind(this,
|
|
||||||
this._onPermLookupDone));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onPermLookupDone: function(result, error) {
|
|
||||||
if (error != null) {
|
|
||||||
if (error.domain == Gio.DBusError) {
|
|
||||||
// Likely no xdg-app installed, just authorize the app
|
|
||||||
this._accuracyLevel = this.reqAccuracyLevel;
|
|
||||||
this._permStoreProxy = null;
|
|
||||||
this._completeAuth();
|
|
||||||
} else {
|
|
||||||
// Currently xdg-app throws an error if we lookup for
|
|
||||||
// unknown ID (which would be the case first time this code
|
|
||||||
// runs) so we continue with user authorization as normal
|
|
||||||
// and ID is added to the store if user says "yes".
|
|
||||||
log(error.message);
|
|
||||||
this._permissions = {};
|
|
||||||
this._userAuthorizeApp();
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[this._permissions] = result;
|
|
||||||
let permission = this._permissions[this.desktopId];
|
|
||||||
|
|
||||||
if (permission == null) {
|
|
||||||
this._userAuthorizeApp();
|
|
||||||
} else {
|
|
||||||
let [levelStr] = permission || ['NONE'];
|
|
||||||
this._accuracyLevel = GeoclueAccuracyLevel[levelStr] ||
|
|
||||||
GeoclueAccuracyLevel.NONE;
|
|
||||||
this._completeAuth();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_userAuthorizeApp: function() {
|
|
||||||
let name = this._app.get_name();
|
|
||||||
let appInfo = this._app.get_app_info();
|
|
||||||
let reason = appInfo.get_string("X-Geoclue-Reason");
|
|
||||||
|
|
||||||
this._showAppAuthDialog(name, reason);
|
|
||||||
},
|
|
||||||
|
|
||||||
_showAppAuthDialog: function(name, reason) {
|
|
||||||
this._dialog = new GeolocationDialog(name,
|
|
||||||
reason,
|
|
||||||
this.reqAccuracyLevel);
|
|
||||||
|
|
||||||
let responseId = this._dialog.connect('response', Lang.bind(this,
|
|
||||||
function(dialog, level) {
|
|
||||||
this._dialog.disconnect(responseId);
|
|
||||||
this._accuracyLevel = level;
|
|
||||||
this._completeAuth();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._dialog.open();
|
|
||||||
},
|
|
||||||
|
|
||||||
_completeAuth: function() {
|
|
||||||
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
|
|
||||||
this._accuracyLevel = clamp(this._accuracyLevel,
|
|
||||||
0,
|
|
||||||
this._maxAccuracyLevel);
|
|
||||||
}
|
|
||||||
this._saveToPermissionStore();
|
|
||||||
|
|
||||||
this._onAuthDone(this._accuracyLevel);
|
|
||||||
},
|
|
||||||
|
|
||||||
_saveToPermissionStore: function() {
|
|
||||||
if (this._permStoreProxy == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
let levelStr = accuracyLevelToString(this._accuracyLevel);
|
|
||||||
let dateStr = Math.round(Date.now() / 1000).toString();
|
|
||||||
this._permissions[this.desktopId] = [levelStr, dateStr];
|
|
||||||
|
|
||||||
let data = GLib.Variant.new('av', {});
|
|
||||||
|
|
||||||
this._permStoreProxy.SetRemote(APP_PERMISSIONS_TABLE,
|
|
||||||
true,
|
|
||||||
APP_PERMISSIONS_ID,
|
|
||||||
this._permissions,
|
|
||||||
data,
|
|
||||||
function (result, error) {
|
|
||||||
if (error != null)
|
|
||||||
log(error.message);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const GeolocationDialog = new Lang.Class({
|
|
||||||
Name: 'GeolocationDialog',
|
|
||||||
Extends: ModalDialog.ModalDialog,
|
|
||||||
|
|
||||||
_init: function(name, reason, reqAccuracyLevel) {
|
|
||||||
this.parent({ styleClass: 'geolocation-dialog' });
|
|
||||||
this.reqAccuracyLevel = reqAccuracyLevel;
|
|
||||||
|
|
||||||
let mainContentBox = new St.BoxLayout({ style_class: 'geolocation-dialog-main-layout' });
|
|
||||||
this.contentLayout.add_actor(mainContentBox);
|
|
||||||
|
|
||||||
let icon = new St.Icon({ style_class: 'geolocation-dialog-icon',
|
|
||||||
icon_name: 'find-location-symbolic',
|
|
||||||
y_align: Clutter.ActorAlign.START });
|
|
||||||
mainContentBox.add_actor(icon);
|
|
||||||
|
|
||||||
let messageBox = new St.BoxLayout({ style_class: 'geolocation-dialog-content',
|
|
||||||
vertical: true });
|
|
||||||
mainContentBox.add_actor(messageBox);
|
|
||||||
|
|
||||||
this._title = new St.Label({ style_class: 'geolocation-dialog-title headline' });
|
|
||||||
messageBox.add_actor(this._title);
|
|
||||||
|
|
||||||
this._reason = new St.Label({ style_class: 'geolocation-dialog-reason' });
|
|
||||||
messageBox.add_actor(this._reason);
|
|
||||||
|
|
||||||
this._privacyNote = new St.Label();
|
|
||||||
messageBox.add_actor(this._privacyNote);
|
|
||||||
|
|
||||||
let button = this.addButton({ label: _("Deny Access"),
|
|
||||||
action: Lang.bind(this, this._onDenyClicked),
|
|
||||||
key: Clutter.KEY_Escape });
|
|
||||||
this.addButton({ label: _("Grant Access"),
|
|
||||||
action: Lang.bind(this, this._onGrantClicked) });
|
|
||||||
|
|
||||||
this.setInitialKeyFocus(button);
|
|
||||||
|
|
||||||
/* Translators: %s is an application name */
|
|
||||||
this._title.text = _("Give %s access to your location?").format(name);
|
|
||||||
|
|
||||||
this._privacyNote.text = _("Location access can be changed at any time from the privacy settings.");
|
|
||||||
|
|
||||||
if (reason)
|
|
||||||
this._reason.text = reason;
|
|
||||||
this._reason.visible = (reason != null);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onGrantClicked: function() {
|
|
||||||
this.emit('response', this.reqAccuracyLevel);
|
|
||||||
this.close();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDenyClicked: function() {
|
|
||||||
this.emit('response', GeoclueAccuracyLevel.NONE);
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(GeolocationDialog.prototype);
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Clutter = imports.gi.Clutter;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const UPower = imports.gi.UPowerGlib;
|
const UPower = imports.gi.UPowerGlib;
|
||||||
|
|
||||||
@ -27,8 +25,6 @@ const DisplayDeviceInterface = '<node> \
|
|||||||
|
|
||||||
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);
|
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);
|
||||||
|
|
||||||
const SHOW_BATTERY_PERCENTAGE = 'show-battery-percentage';
|
|
||||||
|
|
||||||
const Indicator = new Lang.Class({
|
const Indicator = new Lang.Class({
|
||||||
Name: 'PowerIndicator',
|
Name: 'PowerIndicator',
|
||||||
Extends: PanelMenu.SystemIndicator,
|
Extends: PanelMenu.SystemIndicator,
|
||||||
@ -36,15 +32,7 @@ const Indicator = new Lang.Class({
|
|||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent();
|
this.parent();
|
||||||
|
|
||||||
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
|
||||||
this._desktopSettings.connect('changed::' + SHOW_BATTERY_PERCENTAGE,
|
|
||||||
Lang.bind(this, this._sync));
|
|
||||||
|
|
||||||
this._indicator = this._addIndicator();
|
this._indicator = this._addIndicator();
|
||||||
this._percentageLabel = new St.Label({ y_expand: true,
|
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
|
||||||
this.indicators.add(this._percentageLabel, { expand: true, y_fill: true });
|
|
||||||
this.indicators.add_style_class_name('power-status');
|
|
||||||
|
|
||||||
this._proxy = new PowerManagerProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH,
|
this._proxy = new PowerManagerProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH,
|
||||||
Lang.bind(this, function(proxy, error) {
|
Lang.bind(this, function(proxy, error) {
|
||||||
@ -95,12 +83,12 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
if (this._proxy.State == UPower.DeviceState.DISCHARGING) {
|
if (this._proxy.State == UPower.DeviceState.DISCHARGING) {
|
||||||
// Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
// Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
return _("%d\u2236%02d Remaining (%d\u2009%%)").format(hours, minutes, this._proxy.Percentage);
|
return _("%d\u2236%02d Remaining (%d%%)").format(hours, minutes, this._proxy.Percentage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._proxy.State == UPower.DeviceState.CHARGING) {
|
if (this._proxy.State == UPower.DeviceState.CHARGING) {
|
||||||
// Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
// Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
return _("%d\u2236%02d Until Full (%d\u2009%%)").format(hours, minutes, this._proxy.Percentage);
|
return _("%d\u2236%02d Until Full (%d%%)").format(hours, minutes, this._proxy.Percentage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -111,12 +99,10 @@ const Indicator = new Lang.Class({
|
|||||||
let visible = this._proxy.IsPresent;
|
let visible = this._proxy.IsPresent;
|
||||||
if (visible) {
|
if (visible) {
|
||||||
this._item.actor.show();
|
this._item.actor.show();
|
||||||
this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE);
|
|
||||||
} else {
|
} else {
|
||||||
// If there's no battery, then we use the power icon.
|
// If there's no battery, then we use the power icon.
|
||||||
this._item.actor.hide();
|
this._item.actor.hide();
|
||||||
this._indicator.icon_name = 'system-shutdown-symbolic';
|
this._indicator.icon_name = 'system-shutdown-symbolic';
|
||||||
this._percentageLabel.hide();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,14 +111,6 @@ const Indicator = new Lang.Class({
|
|||||||
this._indicator.icon_name = icon;
|
this._indicator.icon_name = icon;
|
||||||
this._item.icon.icon_name = icon;
|
this._item.icon.icon_name = icon;
|
||||||
|
|
||||||
// The icon label
|
|
||||||
let label
|
|
||||||
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED)
|
|
||||||
label = _("%d\u2009%%").format(100);
|
|
||||||
else
|
|
||||||
label = _("%d\u2009%%").format(this._proxy.Percentage);
|
|
||||||
this._percentageLabel.clutter_text.set_markup('<span size="smaller">' + label + '</span>');
|
|
||||||
|
|
||||||
// The status label
|
// The status label
|
||||||
this._item.label.text = this._getStatus();
|
this._item.label.text = this._getStatus();
|
||||||
},
|
},
|
||||||
|
@ -6,7 +6,6 @@ const Gdm = imports.gi.Gdm;
|
|||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
@ -111,7 +110,6 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._session = new GnomeSession.SessionManager();
|
this._session = new GnomeSession.SessionManager();
|
||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
this._monitorManager = Meta.MonitorManager.get();
|
|
||||||
this._haveShutdown = true;
|
this._haveShutdown = true;
|
||||||
this._haveSuspend = true;
|
this._haveSuspend = true;
|
||||||
|
|
||||||
@ -157,8 +155,6 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._orientationSettings.connect('changed::orientation-lock',
|
this._orientationSettings.connect('changed::orientation-lock',
|
||||||
Lang.bind(this, this._updateOrientationLock));
|
Lang.bind(this, this._updateOrientationLock));
|
||||||
Main.layoutManager.connect('monitors-changed',
|
|
||||||
Lang.bind(this, this._updateOrientationLock));
|
|
||||||
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
||||||
Gio.BusNameWatcherFlags.NONE,
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
Lang.bind(this, this._sensorProxyAppeared),
|
Lang.bind(this, this._sensorProxyAppeared),
|
||||||
@ -268,8 +264,7 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_updateOrientationLock: function() {
|
_updateOrientationLock: function() {
|
||||||
if (this._sensorProxy)
|
if (this._sensorProxy)
|
||||||
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer &&
|
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer;
|
||||||
this._monitorManager.get_is_builtin_display_on();
|
|
||||||
else
|
else
|
||||||
this._orientationLockAction.visible = false;
|
this._orientationLockAction.visible = false;
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
|
|
||||||
this.appDisplay = new AppDisplay.AppDisplay();
|
this.appDisplay = new AppDisplay.AppDisplay();
|
||||||
this._appsPage = this._addPage(this.appDisplay.actor,
|
this._appsPage = this._addPage(this.appDisplay.actor,
|
||||||
_("Applications"), 'view-app-grid-symbolic');
|
_("Applications"), 'view-grid-symbolic');
|
||||||
|
|
||||||
this._searchResults = new Search.SearchResults();
|
this._searchResults = new Search.SearchResults();
|
||||||
this._searchPage = this._addPage(this._searchResults.actor,
|
this._searchPage = this._addPage(this._searchResults.actor,
|
||||||
|
@ -677,7 +677,6 @@ const WindowManager = new Lang.Class({
|
|||||||
this._minimizing = [];
|
this._minimizing = [];
|
||||||
this._unminimizing = [];
|
this._unminimizing = [];
|
||||||
this._mapping = [];
|
this._mapping = [];
|
||||||
this._resizing = [];
|
|
||||||
this._destroying = [];
|
this._destroying = [];
|
||||||
this._movingWindow = null;
|
this._movingWindow = null;
|
||||||
|
|
||||||
@ -693,7 +692,6 @@ const WindowManager = new Lang.Class({
|
|||||||
this._minimizeWindowDone(shellwm, actor);
|
this._minimizeWindowDone(shellwm, actor);
|
||||||
this._mapWindowDone(shellwm, actor);
|
this._mapWindowDone(shellwm, actor);
|
||||||
this._destroyWindowDone(shellwm, actor);
|
this._destroyWindowDone(shellwm, actor);
|
||||||
this._sizeChangeWindowDone(shellwm, actor);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
|
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
|
||||||
@ -1220,120 +1218,9 @@ const WindowManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_sizeChangeWindow : function(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
|
_sizeChangeWindow : function(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
|
||||||
let types = [Meta.WindowType.NORMAL];
|
|
||||||
if (!this._shouldAnimateActor(actor, types)) {
|
|
||||||
shellwm.completed_size_change(actor);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (whichChange == Meta.SizeChange.FULLSCREEN)
|
|
||||||
this._fullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
|
|
||||||
else if (whichChange == Meta.SizeChange.UNFULLSCREEN)
|
|
||||||
this._unfullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
|
|
||||||
else
|
|
||||||
shellwm.completed_size_change(actor);
|
|
||||||
},
|
|
||||||
|
|
||||||
_fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
|
||||||
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
|
||||||
actor.translation_x = oldFrameRect.x - monitor.x;
|
|
||||||
actor.translation_y = oldFrameRect.y - monitor.y;
|
|
||||||
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
|
||||||
},
|
|
||||||
|
|
||||||
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
|
||||||
let targetRect = actor.meta_window.get_frame_rect();
|
|
||||||
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
|
||||||
actor.translation_x = -(targetRect.x - monitor.x);
|
|
||||||
actor.translation_y = -(targetRect.y - monitor.y);
|
|
||||||
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
|
||||||
},
|
|
||||||
|
|
||||||
_fullscreenAnimation: function(shellwm, actor, oldFrameRect) {
|
|
||||||
this._resizing.push(actor);
|
|
||||||
|
|
||||||
// Position a clone of the window on top of the old position,
|
|
||||||
// while actor updates are frozen.
|
|
||||||
// Note that the MetaWindow has up to date sizing information for
|
|
||||||
// the new geometry already.
|
|
||||||
let targetRect = actor.meta_window.get_frame_rect();
|
|
||||||
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
|
|
||||||
let actorClone = new St.Widget({ content: actorContent });
|
|
||||||
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
|
||||||
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
|
|
||||||
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
|
|
||||||
Main.uiGroup.add_actor(actorClone);
|
|
||||||
|
|
||||||
actor.__fullscreenClone = actorClone;
|
|
||||||
|
|
||||||
let scaleX = targetRect.width / oldFrameRect.width;
|
|
||||||
let scaleY = targetRect.height / oldFrameRect.height;
|
|
||||||
|
|
||||||
// Now scale and fade out the clone
|
|
||||||
Tweener.addTween(actorClone,
|
|
||||||
{ x: targetRect.x,
|
|
||||||
y: targetRect.y,
|
|
||||||
scale_x: scaleX,
|
|
||||||
scale_y: scaleY,
|
|
||||||
opacity: 0,
|
|
||||||
time: WINDOW_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad'
|
|
||||||
});
|
|
||||||
|
|
||||||
// Now set scale the actor to size it as the clone.
|
|
||||||
// Note that the caller of this function already set a translation
|
|
||||||
// on the actor.
|
|
||||||
actor.scale_x = 1 / scaleX;
|
|
||||||
actor.scale_y = 1 / scaleY;
|
|
||||||
|
|
||||||
// Scale it to its actual new size
|
|
||||||
Tweener.addTween(actor,
|
|
||||||
{ scale_x: 1.0,
|
|
||||||
scale_y: 1.0,
|
|
||||||
translation_x: 0,
|
|
||||||
translation_y: 0,
|
|
||||||
time: WINDOW_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: this._sizeChangeWindowDone,
|
|
||||||
onCompleteScope: this,
|
|
||||||
onCompleteParams: [shellwm, actor],
|
|
||||||
onOverwrite: this._sizeChangeWindowOverwritten,
|
|
||||||
onOverwriteScope: this,
|
|
||||||
onOverwriteParams: [shellwm, actor]
|
|
||||||
});
|
|
||||||
|
|
||||||
// Now unfreeze actor updates, to get it to the new size.
|
|
||||||
// It's important that we don't wait until the animation is completed to
|
|
||||||
// do this, otherwise our scale will be applied to the old texture size.
|
|
||||||
shellwm.completed_size_change(actor);
|
shellwm.completed_size_change(actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_sizeChangeWindowDone: function(shellwm, actor) {
|
|
||||||
if (this._removeEffect(this._resizing, actor)) {
|
|
||||||
Tweener.removeTweens(actor);
|
|
||||||
actor.scale_x = 1.0;
|
|
||||||
actor.scale_y = 1.0;
|
|
||||||
actor.translation_x = 0;
|
|
||||||
actor.translation_y = 0;
|
|
||||||
|
|
||||||
let actorClone = actor.__fullscreenClone;
|
|
||||||
if (actorClone) {
|
|
||||||
actorClone.destroy();
|
|
||||||
delete actor.__fullscreenClone;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_sizeChangeWindowOverwritten: function(shellwm, actor) {
|
|
||||||
if (this._removeEffect(this._resizing, actor)) {
|
|
||||||
let actorClone = actor.__fullscreenClone;
|
|
||||||
if (actorClone) {
|
|
||||||
actorClone.destroy();
|
|
||||||
delete actor.__fullscreenClone;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_hasAttachedDialogs: function(window, ignoreWindow) {
|
_hasAttachedDialogs: function(window, ignoreWindow) {
|
||||||
var count = 0;
|
var count = 0;
|
||||||
window.foreach_transient(function(win) {
|
window.foreach_transient(function(win) {
|
||||||
@ -1367,14 +1254,11 @@ const WindowManager = new Lang.Class({
|
|||||||
let dimmer = getWindowDimmer(actor);
|
let dimmer = getWindowDimmer(actor);
|
||||||
if (!dimmer)
|
if (!dimmer)
|
||||||
return;
|
return;
|
||||||
if (this._shouldAnimate())
|
Tweener.addTween(dimmer,
|
||||||
Tweener.addTween(dimmer,
|
{ dimFactor: 1.0,
|
||||||
{ dimFactor: 1.0,
|
time: DIM_TIME,
|
||||||
time: DIM_TIME,
|
transition: 'linear'
|
||||||
transition: 'linear'
|
});
|
||||||
});
|
|
||||||
else
|
|
||||||
dimmer.dimFactor = 1.0;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_undimWindow: function(window) {
|
_undimWindow: function(window) {
|
||||||
@ -1384,13 +1268,10 @@ const WindowManager = new Lang.Class({
|
|||||||
let dimmer = getWindowDimmer(actor);
|
let dimmer = getWindowDimmer(actor);
|
||||||
if (!dimmer)
|
if (!dimmer)
|
||||||
return;
|
return;
|
||||||
if (this._shouldAnimate())
|
Tweener.addTween(dimmer,
|
||||||
Tweener.addTween(dimmer,
|
{ dimFactor: 0.0,
|
||||||
{ dimFactor: 0.0,
|
time: UNDIM_TIME,
|
||||||
time: UNDIM_TIME,
|
transition: 'linear' });
|
||||||
transition: 'linear' });
|
|
||||||
else
|
|
||||||
dimmer.dimFactor = 0.0;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_mapWindow : function(shellwm, actor) {
|
_mapWindow : function(shellwm, actor) {
|
||||||
@ -1409,9 +1290,6 @@ const WindowManager = new Lang.Class({
|
|||||||
actor._windowType = type;
|
actor._windowType = type;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (actor.meta_window.is_attached_dialog())
|
|
||||||
this._checkDimming(actor.get_meta_window().get_transient_for());
|
|
||||||
|
|
||||||
let types = [Meta.WindowType.NORMAL,
|
let types = [Meta.WindowType.NORMAL,
|
||||||
Meta.WindowType.DIALOG,
|
Meta.WindowType.DIALOG,
|
||||||
Meta.WindowType.MODAL_DIALOG];
|
Meta.WindowType.MODAL_DIALOG];
|
||||||
@ -1420,6 +1298,9 @@ const WindowManager = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (actor.meta_window.is_attached_dialog())
|
||||||
|
this._checkDimming(actor.get_meta_window().get_transient_for());
|
||||||
|
|
||||||
switch (actor._windowType) {
|
switch (actor._windowType) {
|
||||||
case Meta.WindowType.NORMAL:
|
case Meta.WindowType.NORMAL:
|
||||||
actor.set_pivot_point(0.5, 1.0);
|
actor.set_pivot_point(0.5, 1.0);
|
||||||
@ -1502,9 +1383,6 @@ const WindowManager = new Lang.Class({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.is_attached_dialog())
|
|
||||||
this._checkDimming(window.get_transient_for(), window);
|
|
||||||
|
|
||||||
let types = [Meta.WindowType.NORMAL,
|
let types = [Meta.WindowType.NORMAL,
|
||||||
Meta.WindowType.DIALOG,
|
Meta.WindowType.DIALOG,
|
||||||
Meta.WindowType.MODAL_DIALOG];
|
Meta.WindowType.MODAL_DIALOG];
|
||||||
@ -1539,6 +1417,7 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
if (window.is_attached_dialog()) {
|
if (window.is_attached_dialog()) {
|
||||||
let parent = window.get_transient_for();
|
let parent = window.get_transient_for();
|
||||||
|
this._checkDimming(parent, window);
|
||||||
actor._parentDestroyId = parent.connect('unmanaged', Lang.bind(this, function () {
|
actor._parentDestroyId = parent.connect('unmanaged', Lang.bind(this, function () {
|
||||||
Tweener.removeTweens(actor);
|
Tweener.removeTweens(actor);
|
||||||
this._destroyWindowDone(shellwm, actor);
|
this._destroyWindowDone(shellwm, actor);
|
||||||
|
@ -214,7 +214,7 @@ const WindowMenuManager = new Lang.Class({
|
|||||||
menu.close();
|
menu.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height));
|
this._sourceActor.set_size(rect.width, rect.height);
|
||||||
this._sourceActor.set_position(rect.x, rect.y);
|
this._sourceActor.set_position(rect.x, rect.y);
|
||||||
this._sourceActor.show();
|
this._sourceActor.show();
|
||||||
|
|
||||||
|
@ -361,9 +361,6 @@ const WindowClone = new Lang.Class({
|
|||||||
// a long-press canceled when the pointer movement
|
// a long-press canceled when the pointer movement
|
||||||
// exceeds dnd-drag-threshold to manually start the drag
|
// exceeds dnd-drag-threshold to manually start the drag
|
||||||
if (state == Clutter.LongPressState.CANCEL) {
|
if (state == Clutter.LongPressState.CANCEL) {
|
||||||
let event = Clutter.get_current_event();
|
|
||||||
this._dragTouchSequence = event.get_event_sequence();
|
|
||||||
|
|
||||||
// A click cancels a long-press before any click handler is
|
// A click cancels a long-press before any click handler is
|
||||||
// run - make sure to not start a drag in that case
|
// run - make sure to not start a drag in that case
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
||||||
@ -372,7 +369,7 @@ const WindowClone = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
let [x, y] = action.get_coords();
|
let [x, y] = action.get_coords();
|
||||||
action.release();
|
action.release();
|
||||||
this._draggable.startDrag(x, y, global.get_current_time(), this._dragTouchSequence);
|
this._draggable.startDrag(x, y, global.get_current_time());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -45,11 +45,11 @@ const PrimaryActorLayout = new Lang.Class({
|
|||||||
this.primaryActor = primaryActor;
|
this.primaryActor = primaryActor;
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_get_preferred_width: function(container, forHeight) {
|
vfunc_get_preferred_width: function(forHeight) {
|
||||||
return this.primaryActor.get_preferred_width(forHeight);
|
return this.primaryActor.get_preferred_width(forHeight);
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_get_preferred_height: function(container, forWidth) {
|
vfunc_get_preferred_height: function(forWidth) {
|
||||||
return this.primaryActor.get_preferred_height(forWidth);
|
return this.primaryActor.get_preferred_height(forWidth);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -80,8 +80,6 @@ const WindowClone = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.connect('button-release-event',
|
this.actor.connect('button-release-event',
|
||||||
Lang.bind(this, this._onButtonRelease));
|
Lang.bind(this, this._onButtonRelease));
|
||||||
this.actor.connect('touch-event',
|
|
||||||
Lang.bind(this, this._onTouchEvent));
|
|
||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
@ -202,15 +200,6 @@ const WindowClone = new Lang.Class({
|
|||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onTouchEvent : function (actor, event) {
|
|
||||||
if (event.type() != Clutter.EventType.TOUCH_END ||
|
|
||||||
!global.display.is_pointer_emulating_sequence(event.get_event_sequence()))
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
this.emit('selected', event.get_time());
|
|
||||||
return Clutter.EVENT_STOP;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onDragBegin : function (draggable, time) {
|
_onDragBegin : function (draggable, time) {
|
||||||
this.inDrag = true;
|
this.inDrag = true;
|
||||||
this.emit('drag-begin');
|
this.emit('drag-begin');
|
||||||
@ -653,7 +642,6 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.connect('button-press-event', function() { return Clutter.EVENT_STOP; });
|
this.actor.connect('button-press-event', function() { return Clutter.EVENT_STOP; });
|
||||||
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
|
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
|
||||||
this.actor.connect('touch-event', Lang.bind(this, this._onTouchEvent));
|
|
||||||
|
|
||||||
Main.overview.connect('showing',
|
Main.overview.connect('showing',
|
||||||
Lang.bind(this, this._createThumbnails));
|
Lang.bind(this, this._createThumbnails));
|
||||||
@ -684,31 +672,18 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
global.screen.n_workspaces > 1;
|
global.screen.n_workspaces > 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
_activateThumbnailAtPoint: function (stageX, stageY, time) {
|
_onButtonRelease: function(actor, event) {
|
||||||
|
let [stageX, stageY] = event.get_coords();
|
||||||
let [r, x, y] = this.actor.transform_stage_point(stageX, stageY);
|
let [r, x, y] = this.actor.transform_stage_point(stageX, stageY);
|
||||||
|
|
||||||
for (let i = 0; i < this._thumbnails.length; i++) {
|
for (let i = 0; i < this._thumbnails.length; i++) {
|
||||||
let thumbnail = this._thumbnails[i]
|
let thumbnail = this._thumbnails[i]
|
||||||
let [w, h] = thumbnail.actor.get_transformed_size();
|
let [w, h] = thumbnail.actor.get_transformed_size();
|
||||||
if (y >= thumbnail.actor.y && y <= thumbnail.actor.y + h) {
|
if (y >= thumbnail.actor.y && y <= thumbnail.actor.y + h) {
|
||||||
thumbnail.activate(time);
|
thumbnail.activate(event.get_time());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
_onButtonRelease: function(actor, event) {
|
|
||||||
let [stageX, stageY] = event.get_coords();
|
|
||||||
this._activateThumbnailAtPoint(stageX, stageY, event.get_time());
|
|
||||||
return Clutter.EVENT_STOP;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onTouchEvent: function (actor, event) {
|
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END &&
|
|
||||||
global.display.is_pointer_emulating_sequence(event.get_event_sequence())) {
|
|
||||||
let [stageX, stageY] = event.get_coords();
|
|
||||||
this._activateThumbnailAtPoint(stageX, stageY, event.get_time());
|
|
||||||
}
|
|
||||||
|
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
},
|
},
|
||||||
|
@ -421,7 +421,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
// Only switch to the workspace when there's no application
|
// Only switch to the workspace when there's no application
|
||||||
// windows open. The problem is that it's too easy to miss
|
// windows open. The problem is that it's too easy to miss
|
||||||
// an app window and get the wrong one focused.
|
// an app window and get the wrong one focused.
|
||||||
if ((action.get_button() == 1 || action.get_button() == 0) &&
|
if (action.get_button() == 1 &&
|
||||||
this._getPrimaryView().getActiveWorkspace().isEmpty())
|
this._getPrimaryView().getActiveWorkspace().isEmpty())
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
}));
|
}));
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>,
|
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>,
|
||||||
<filename>/usr/share/applications/org.gnome.Shell.desktop</filename>.</para>
|
<filename>/usr/share/applications/gnome-shell.desktop</filename>.</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
|
@ -24,7 +24,6 @@ fi
|
|||||||
fr
|
fr
|
||||||
fur
|
fur
|
||||||
ga
|
ga
|
||||||
gd
|
|
||||||
gl
|
gl
|
||||||
gu
|
gu
|
||||||
he
|
he
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
# Please keep this file sorted alphabetically.
|
# Please keep this file sorted alphabetically.
|
||||||
[encoding: UTF-8]
|
[encoding: UTF-8]
|
||||||
data/50-gnome-shell-system.xml.in
|
data/50-gnome-shell-system.xml.in
|
||||||
|
data/gnome-shell.desktop.in.in
|
||||||
data/gnome-shell-extension-prefs.desktop.in.in
|
data/gnome-shell-extension-prefs.desktop.in.in
|
||||||
data/org.gnome.Shell.desktop.in.in
|
data/gnome-shell-wayland.desktop.in.in
|
||||||
data/org.gnome.shell.gschema.xml.in.in
|
data/org.gnome.shell.gschema.xml.in.in
|
||||||
data/org.gnome.Shell.PortalHelper.desktop.in
|
data/org.gnome.Shell.PortalHelper.desktop.in
|
||||||
js/extensionPrefs/main.js
|
js/extensionPrefs/main.js
|
||||||
@ -14,7 +15,6 @@ js/misc/util.js
|
|||||||
js/portalHelper/main.js
|
js/portalHelper/main.js
|
||||||
js/ui/appDisplay.js
|
js/ui/appDisplay.js
|
||||||
js/ui/appFavorites.js
|
js/ui/appFavorites.js
|
||||||
js/ui/audioDeviceSelection.js
|
|
||||||
js/ui/backgroundMenu.js
|
js/ui/backgroundMenu.js
|
||||||
js/ui/calendar.js
|
js/ui/calendar.js
|
||||||
js/ui/components/automountManager.js
|
js/ui/components/automountManager.js
|
||||||
@ -33,9 +33,7 @@ js/ui/keyboard.js
|
|||||||
js/ui/legacyTray.js
|
js/ui/legacyTray.js
|
||||||
js/ui/lookingGlass.js
|
js/ui/lookingGlass.js
|
||||||
js/ui/main.js
|
js/ui/main.js
|
||||||
js/ui/messageList.js
|
|
||||||
js/ui/messageTray.js
|
js/ui/messageTray.js
|
||||||
js/ui/mpris.js
|
|
||||||
js/ui/notificationDaemon.js
|
js/ui/notificationDaemon.js
|
||||||
js/ui/overviewControls.js
|
js/ui/overviewControls.js
|
||||||
js/ui/overview.js
|
js/ui/overview.js
|
||||||
|
372
po/ca.po
372
po/ca.po
@ -3,23 +3,22 @@
|
|||||||
# 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.
|
||||||
# Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>, 2009.
|
# Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>, 2009.
|
||||||
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
|
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
|
||||||
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2013, 2014, 2016.
|
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2013, 2014.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: HEAD\n"
|
"Project-Id-Version: HEAD\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2015-08-20 19:24+0200\n"
|
||||||
"POT-Creation-Date: 2016-03-13 10:20+0000\n"
|
"PO-Revision-Date: 2015-05-28 19:32+0100\n"
|
||||||
"PO-Revision-Date: 2016-03-13 14:47+0100\n"
|
"Last-Translator: David Medina <opensusecatala@gmail.com>\n"
|
||||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
|
||||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||||
"Language: ca\n"
|
"Language: ca\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"
|
||||||
"Content-Transfer-Encoding: 8bits\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
"X-Generator: Poedit 1.6.9\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@ -45,6 +44,15 @@ msgstr "Mostra totes les aplicacions"
|
|||||||
msgid "Open the application menu"
|
msgid "Open the application menu"
|
||||||
msgstr "Obre el menú d'aplicació"
|
msgstr "Obre el menú d'aplicació"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell"
|
||||||
|
msgstr "GNOME Shell"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Gestor de finestres i llançador d'aplicacions"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferències de les extensions del GNOME Shell"
|
msgstr "Preferències de les extensions del GNOME Shell"
|
||||||
@ -53,13 +61,9 @@ msgstr "Preferències de les extensions del GNOME Shell"
|
|||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Configureu les extensions del GNOME Shell"
|
msgstr "Configureu les extensions del GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell (composició mitjançant Wayland)"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "Gestor de finestres i llançador d'aplicacions"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
@ -172,97 +176,78 @@ msgstr ""
|
|||||||
"de verificació."
|
"de verificació."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
msgstr ""
|
|
||||||
"Si l'adaptador de Bluetooth predeterminat té dispositius configurats "
|
|
||||||
"associats"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
msgstr ""
|
|
||||||
"El Shell només mostrà una entrada de menú Bluetooth si un adaptador Bluetooh "
|
|
||||||
"està engegat, o si hi ha dispositius configurats associats a l'adaptador "
|
|
||||||
"predeterminat. Això es reiniciarà si l'adaptador predeterminat té "
|
|
||||||
"dispositius associats."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Mostra el número de la setmana al calendari"
|
msgstr "Mostra el número de la setmana al calendari"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Si és «true» (cert) es mostra el número de la setmana al calendari."
|
msgstr "Si és «true» (cert) es mostra el número de la setmana al calendari."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Vinculació per obrir el menú d'aplicació"
|
msgstr "Vinculació per obrir el menú d'aplicació"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "La vinculació per obrir el menú d'aplicació."
|
msgstr "La vinculació per obrir el menú d'aplicació."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Vinculació per obrir la vista «Mostra les aplicacions»"
|
msgstr "Vinculació per obrir la vista «Mostra les aplicacions»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vinculació per obrir la vista «Mostra les aplicacions» de les activitats de "
|
"Vinculació per obrir la vista «Mostra les aplicacions» de les activitats de "
|
||||||
"la vista general."
|
"la vista general."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Vinculació per obrir la vista general"
|
msgstr "Vinculació per obrir la vista general"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Vinculació per obrir la vista general d'activitats."
|
msgstr "Vinculació per obrir la vista general d'activitats."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La vinculació per commutar la visibilitat de la llista de notificacions"
|
"La vinculació per commutar la visibilitat de la llista de notificacions"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La vinculació per commutar la visibilitat de la llista de notificacions."
|
"La vinculació per commutar la visibilitat de la llista de notificacions."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Vinculació per posar el focus a la notificació activa"
|
msgstr "Vinculació per posar el focus a la notificació activa"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Vinculació per posar el focus a la notificació activa."
|
msgstr "Vinculació per posar el focus a la notificació activa."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vinculació que fa una pausa i continua tots els «tweens» en execució, per "
|
"Vinculació que fa una pausa i continua tots els «tweens» en execució, per "
|
||||||
"motius de depuració"
|
"motius de depuració"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Quin tipus de teclat s'ha d'utilitzar"
|
msgstr "Quin tipus de teclat s'ha d'utilitzar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "El tipus de teclat que s'utilitzarà."
|
msgstr "El tipus de teclat que s'utilitzarà."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Limita el canviador a l'espai de treball actual."
|
msgstr "Limita el canviador a l'espai de treball actual."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
@ -271,11 +256,11 @@ msgstr ""
|
|||||||
"de treball actual es mostren en el canviador. En cas contrari es mostren "
|
"de treball actual es mostren en el canviador. En cas contrari es mostren "
|
||||||
"totes les aplicacions."
|
"totes les aplicacions."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "El mode d'icona de les aplicacions."
|
msgstr "El mode d'icona de les aplicacions."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
@ -286,7 +271,7 @@ msgstr ""
|
|||||||
"icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses: mostra "
|
"icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses: mostra "
|
||||||
"la miniatura de la finestra i la icona de l'aplicació)."
|
"la miniatura de la finestra i la icona de l'aplicació)."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
@ -294,32 +279,32 @@ msgstr ""
|
|||||||
"Si és «true» (cert), només les finestres de l'espai de treball actual es "
|
"Si és «true» (cert), només les finestres de l'espai de treball actual es "
|
||||||
"mostren en el canviador. En cas contrari, es mostren totes les finestres."
|
"mostren en el canviador. En cas contrari, es mostren totes les finestres."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Adjunta el diàleg modal a la finestra pare"
|
msgstr "Adjunta el diàleg modal a la finestra pare"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
|
||||||
"mutter»."
|
"mutter»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Habilita la tesselització a les vores en deixar anar les finestres a les "
|
"Habilita la tesselització a les vores en deixar anar les finestres a les "
|
||||||
"vores de la pantalla"
|
"vores de la pantalla"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Els espais de treball es gestionen dinàmicament"
|
msgstr "Els espais de treball es gestionen dinàmicament"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Només en el monitor principal hi ha espais de treball"
|
msgstr "Només en el monitor principal hi ha espais de treball"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter "
|
"Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter "
|
||||||
@ -329,52 +314,51 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Inici de sessió de la xarxa"
|
msgstr "Inici de sessió de la xarxa"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:117
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "S'ha produït un error en carregar el diàleg de preferències de %s:"
|
msgstr "S'ha produït un error en carregar el diàleg de preferències de %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:149
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Extensions del GNOME Shell"
|
msgstr "Extensions del GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/networkAgent.js:145
|
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel·la"
|
msgstr "Cancel·la"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
#: ../js/gdm/authPrompt.js:448
|
#: ../js/gdm/authPrompt.js:435
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Següent"
|
msgstr "Següent"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Desbloqueja"
|
msgstr "Desbloqueja"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:214
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Entra"
|
msgstr "Entra"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:285
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Trieu la sessió"
|
msgstr "Trieu la sessió"
|
||||||
|
|
||||||
#. 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:435
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "No esteu llistat?"
|
msgstr "No esteu llistat?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:854
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(p. ex. l'usuari o %s)"
|
msgstr "(p. ex. l'usuari o %s)"
|
||||||
@ -382,12 +366,12 @@ msgstr "(p. ex. l'usuari o %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nom d'usuari:"
|
msgstr "Nom d'usuari:"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1196
|
#: ../js/gdm/loginDialog.js:1181
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Finestra d'entrada"
|
msgstr "Finestra d'entrada"
|
||||||
|
|
||||||
@ -523,36 +507,16 @@ msgstr "Afegeix als preferits"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Mostra els detalls"
|
msgstr "Mostra els detalls"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:134
|
#: ../js/ui/appFavorites.js:132
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "S'ha afegit %s als preferits."
|
msgstr "S'ha afegit %s als preferits."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:168
|
#: ../js/ui/appFavorites.js:166
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "S'ha suprimit %s dels preferits."
|
msgstr "S'ha suprimit %s dels preferits."
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:59
|
|
||||||
msgid "Select Audio Device"
|
|
||||||
msgstr "Seleccioneu dispositiu d'àudio"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:69
|
|
||||||
msgid "Sound Settings"
|
|
||||||
msgstr "Paràmetres del so"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:78
|
|
||||||
msgid "Headphones"
|
|
||||||
msgstr "Auriculars"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:80
|
|
||||||
msgid "Headset"
|
|
||||||
msgstr "Auriculars amb micròfon"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Micròfon"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Canvia el fons de l'escriptori…"
|
msgstr "Canvia el fons de l'escriptori…"
|
||||||
@ -561,12 +525,13 @@ msgstr "Canvia el fons de l'escriptori…"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Paràmetres de la pantalla"
|
msgstr "Paràmetres de la pantalla"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:366
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Paràmetres"
|
msgstr "Paràmetres"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:47
|
#: ../js/ui/calendar.js:55
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -576,96 +541,94 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:76
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Dg"
|
msgstr "Dg"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:78
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "Dl"
|
msgstr "Dl"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:80
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "Dt"
|
msgstr "Dt"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:82
|
#: ../js/ui/calendar.js:90
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "Dc"
|
msgstr "Dc"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:92
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "Dj"
|
msgstr "Dj"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:94
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "Dv"
|
msgstr "Dv"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:96
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Ds"
|
msgstr "Ds"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:416
|
#: ../js/ui/calendar.js:566
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Mes anterior"
|
msgstr "Mes anterior"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:426
|
#: ../js/ui/calendar.js:576
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Mes següent"
|
msgstr "Mes següent"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:579
|
#: ../js/ui/calendar.js:783
|
||||||
#, no-javascript-format
|
|
||||||
msgctxt "date day number format"
|
|
||||||
msgid "%d"
|
|
||||||
msgstr "%d"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:634
|
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Setmana %V"
|
msgstr "Setmana %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:695
|
#: ../js/ui/calendar.js:1188
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Tot el dia"
|
msgstr "Tot el dia"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:821
|
#: ../js/ui/calendar.js:1291
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Neteja la secció"
|
||||||
|
|
||||||
|
#: ../js/ui/calendar.js:1518
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Cites"
|
msgstr "Cites"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:830
|
#: ../js/ui/calendar.js:1527
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A %d de %B"
|
msgstr "%A %d de %B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:834
|
#: ../js/ui/calendar.js:1531
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A %d de %B de %Y"
|
msgstr "%A %d de %B de %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:919
|
#: ../js/ui/calendar.js:1616
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacions"
|
msgstr "Notificacions"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1070
|
#: ../js/ui/calendar.js:1767
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Cap notificació"
|
msgstr "Cap notificació"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1073
|
#: ../js/ui/calendar.js:1770
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Cap cita"
|
msgstr "Cap cita"
|
||||||
|
|
||||||
@ -677,7 +640,7 @@ msgstr "S'ha connectat un dispositiu extern"
|
|||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "S'ha desconnectat un dispositiu extern"
|
msgstr "S'ha desconnectat un dispositiu extern"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:355
|
#: ../js/ui/components/autorunManager.js:354
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Obre amb %s"
|
msgstr "Obre amb %s"
|
||||||
@ -993,11 +956,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Teclat"
|
msgstr "Teclat"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:65
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Oculta la Safata"
|
msgstr "Oculta la Safata"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:106
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Icones d'estat"
|
msgstr "Icones d'estat"
|
||||||
|
|
||||||
@ -1025,7 +988,7 @@ msgstr "Habilitat"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Inhabilitat"
|
msgstr "Inhabilitat"
|
||||||
|
|
||||||
@ -1049,26 +1012,10 @@ msgstr "Mostra el codi font"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Pàgina web"
|
msgstr "Pàgina web"
|
||||||
|
|
||||||
#: ../js/ui/messageList.js:543
|
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Neteja la secció"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informació de l'ordinador"
|
msgstr "Informació de l'ordinador"
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:194
|
|
||||||
msgid "Unknown artist"
|
|
||||||
msgstr "Artista desconegut"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:195
|
|
||||||
msgid "Unknown title"
|
|
||||||
msgstr "Títol desconegut"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:217
|
|
||||||
msgid "Media"
|
|
||||||
msgstr "Multimèdia"
|
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Desfés"
|
msgstr "Desfés"
|
||||||
@ -1085,22 +1032,17 @@ msgstr "Vista general"
|
|||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Teclegeu per cercar…"
|
msgstr "Teclegeu per cercar…"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:358
|
#: ../js/ui/panel.js:352
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Surt"
|
msgstr "Surt"
|
||||||
|
|
||||||
#. 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:414
|
#: ../js/ui/panel.js:404
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Activitats"
|
msgstr "Activitats"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:695
|
#: ../js/ui/panel.js:754
|
||||||
msgctxt "System menu in the top bar"
|
|
||||||
msgid "System"
|
|
||||||
msgstr "Sistema"
|
|
||||||
|
|
||||||
#: ../js/ui/panel.js:807
|
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@ -1113,15 +1055,15 @@ msgstr "Barra superior"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:71
|
#: ../js/ui/runDialog.js:70
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Introduïu una ordre"
|
msgstr "Introduïu una ordre"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Tanca"
|
msgstr "Tanca"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:282
|
#: ../js/ui/runDialog.js:281
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "S'està reiniciant…"
|
msgstr "S'està reiniciant…"
|
||||||
|
|
||||||
@ -1244,41 +1186,29 @@ msgstr "Alt contrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Text gran"
|
msgstr "Text gran"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:47
|
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
|
||||||
msgid "Bluetooth"
|
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
||||||
msgstr "Bluetooth"
|
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
||||||
|
#: ../js/ui/status/rfkill.js:117
|
||||||
|
msgid "Turn Off"
|
||||||
|
msgstr "Desactiva"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:56
|
#: ../js/ui/status/bluetooth.js:54
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Paràmetres del Bluetooth"
|
msgstr "Paràmetres del Bluetooth"
|
||||||
|
|
||||||
#. Translators: this is the number of connected bluetooth devices
|
#. Translators: this is the number of connected bluetooth devices
|
||||||
#: ../js/ui/status/bluetooth.js:136
|
#: ../js/ui/status/bluetooth.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d Connected"
|
msgid "%d Connected"
|
||||||
msgid_plural "%d Connected"
|
msgid_plural "%d Connected"
|
||||||
msgstr[0] "%d connectat"
|
msgstr[0] "%d connectat"
|
||||||
msgstr[1] "%d connectats"
|
msgstr[1] "%d connectats"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:138
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
msgid "Off"
|
|
||||||
msgstr "Desactivat"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:140
|
|
||||||
msgid "Not In Use"
|
msgid "Not In Use"
|
||||||
msgstr "No s'usa"
|
msgstr "No s'usa"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
|
|
||||||
msgid "Turn On"
|
|
||||||
msgstr "Activa"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
|
|
||||||
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
|
||||||
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
|
||||||
#: ../js/ui/status/rfkill.js:117
|
|
||||||
msgid "Turn Off"
|
|
||||||
msgstr "Desactiva"
|
|
||||||
|
|
||||||
#: ../js/ui/status/brightness.js:44
|
#: ../js/ui/status/brightness.js:44
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brillantor"
|
msgstr "Brillantor"
|
||||||
@ -1287,50 +1217,30 @@ msgstr "Brillantor"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostra la disposició del teclat"
|
msgstr "Mostra la disposició del teclat"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Ubicació habilitada"
|
msgstr "Ubicació habilitada"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Inhabilita"
|
msgstr "Inhabilita"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:109
|
#: ../js/ui/status/location.js:73
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Paràmetres de privacitat"
|
msgstr "Paràmetres de privacitat"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:214
|
#: ../js/ui/status/location.js:176
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Ubicació en ús"
|
msgstr "Ubicació en ús"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:218
|
#: ../js/ui/status/location.js:180
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Ubicació inhabilitada"
|
msgstr "Ubicació inhabilitada"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:219
|
#: ../js/ui/status/location.js:181
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Habilita"
|
msgstr "Habilita"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:426
|
|
||||||
msgid "Deny Access"
|
|
||||||
msgstr "Denega l'accés"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:429
|
|
||||||
msgid "Grant Access"
|
|
||||||
msgstr "Permetre l'accés"
|
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
|
||||||
#: ../js/ui/status/location.js:435
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Give %s access to your location?"
|
|
||||||
msgstr "Voleu donar a %s accés a la vostra ubicació?"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
|
||||||
msgstr ""
|
|
||||||
"Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu "
|
|
||||||
"des del la configuració de la privacitat."
|
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<desconegut>"
|
msgstr "<desconegut>"
|
||||||
@ -1466,6 +1376,10 @@ msgstr "Trieu una xarxa"
|
|||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Paràmetres del sense fil"
|
msgstr "Paràmetres del sense fil"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1279
|
||||||
|
msgid "Turn On"
|
||||||
|
msgstr "Activa"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: ../js/ui/status/network.js:1296
|
#: ../js/ui/status/network.js:1296
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@ -1515,36 +1429,31 @@ msgstr "Ha fallat la connexió"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Ha fallat l'activació de la connexió de xarxa"
|
msgstr "Ha fallat l'activació de la connexió de xarxa"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:61
|
#: ../js/ui/status/power.js:49
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Paràmetres d'energia"
|
msgstr "Paràmetres d'energia"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:65
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Totalment carregada"
|
msgstr "Totalment carregada"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "S'està estimant la durada…"
|
msgstr "S'està estimant la durada…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:98
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d %%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "%d∶%02d Queda (%d %%)"
|
msgstr "%d∶%02d Queda (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:103
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "%d∶%02d Fins que estigui del tot carregada (%d %%)"
|
msgstr "%d∶%02d Fins que estigui del tot carregada (%d%%)"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
|
||||||
#, javascript-format
|
|
||||||
msgid "%d %%"
|
|
||||||
msgstr "%d %%"
|
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
@ -1585,6 +1494,10 @@ msgstr "S'ha canviat el volum"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volum"
|
msgstr "Volum"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Micròfon"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Entra amb un altre usuari"
|
msgstr "Entra amb un altre usuari"
|
||||||
@ -1705,7 +1618,7 @@ msgstr "Calendari de l'Evolution"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1714,66 +1627,66 @@ msgstr[1] "%u sortides"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entrades"
|
msgstr[1] "%u entrades"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons del sistema"
|
msgstr "Sons del sistema"
|
||||||
|
|
||||||
#: ../src/main.c:381
|
#: ../src/main.c:373
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Mostra la versió"
|
msgstr "Mostra la versió"
|
||||||
|
|
||||||
#: ../src/main.c:387
|
#: ../src/main.c:379
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
|
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
|
||||||
|
|
||||||
#: ../src/main.c:393
|
#: ../src/main.c:385
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
|
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
|
||||||
|
|
||||||
#: ../src/main.c:399
|
#: ../src/main.c:391
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Llista els modes possibles"
|
msgstr "Llista els modes possibles"
|
||||||
|
|
||||||
#: ../src/shell-app.c:246
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconegut"
|
msgstr "Desconegut"
|
||||||
|
|
||||||
#: ../src/shell-app.c:487
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "No s'ha pogut iniciar «%s»"
|
msgstr "No s'ha pogut iniciar «%s»"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:730
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Les contrasenyes no coincideixen."
|
msgstr "Les contrasenyes no coincideixen."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:738
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "La contrasenya no pot ser buida"
|
msgstr "La contrasenya no pot ser buida"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:353
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "L'usuari ha descartat el diàleg d'autenticació"
|
msgstr "L'usuari ha descartat el diàleg d'autenticació"
|
||||||
|
|
||||||
#~ msgid "%s is requesting access to your location."
|
#~ msgid "Bluetooth"
|
||||||
#~ msgstr "%s està demanant accés a la vostra ubicació."
|
#~ msgstr "Bluetooth"
|
||||||
|
|
||||||
#~ msgid "GNOME Shell (wayland compositor)"
|
|
||||||
#~ msgstr "GNOME Shell (composició mitjançant Wayland)"
|
|
||||||
|
|
||||||
#~ msgid "%d Connected Device"
|
#~ msgid "%d Connected Device"
|
||||||
#~ msgid_plural "%d Connected Devices"
|
#~ msgid_plural "%d Connected Devices"
|
||||||
#~ msgstr[0] "%d dispositiu connectat"
|
#~ msgstr[0] "%d dispositiu connectat"
|
||||||
#~ msgstr[1] "%d dispositius connectats"
|
#~ msgstr[1] "%d dispositius connectats"
|
||||||
|
|
||||||
|
#~ msgid "Off"
|
||||||
|
#~ msgstr "Desactivat"
|
||||||
|
|
||||||
#~ msgid "Authentication required"
|
#~ msgid "Authentication required"
|
||||||
#~ msgstr "Cal autenticació"
|
#~ msgstr "Cal autenticació"
|
||||||
|
|
||||||
@ -1982,6 +1895,9 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
|
|||||||
#~ msgid "View account"
|
#~ msgid "View account"
|
||||||
#~ msgstr "Mostra el compte"
|
#~ msgstr "Mostra el compte"
|
||||||
|
|
||||||
|
#~ msgid "Unknown reason"
|
||||||
|
#~ msgstr "Motiu desconegut"
|
||||||
|
|
||||||
#~ msgid "Open Calendar"
|
#~ msgid "Open Calendar"
|
||||||
#~ msgstr "Obre el calendari"
|
#~ msgstr "Obre el calendari"
|
||||||
|
|
||||||
|
378
po/gl.po
378
po/gl.po
@ -6,22 +6,21 @@
|
|||||||
# Antón Méixome <meixome@certima.net>, 2009.
|
# Antón Méixome <meixome@certima.net>, 2009.
|
||||||
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
||||||
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
|
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
|
||||||
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016.
|
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015.
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-03-12 13:15+0100\n"
|
"POT-Creation-Date: 2015-08-26 00:05+0200\n"
|
||||||
"PO-Revision-Date: 2016-03-12 13:16+0100\n"
|
"PO-Revision-Date: 2015-08-26 00:10+0200\n"
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||||
"Language: gl\n"
|
"Language: gl\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"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.7\n"
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
@ -48,6 +47,15 @@ msgstr "Mostrar todos os aplicativos"
|
|||||||
msgid "Open the application menu"
|
msgid "Open the application menu"
|
||||||
msgstr "Abrir o menú de aplicativo"
|
msgstr "Abrir o menú de aplicativo"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell"
|
||||||
|
msgstr "GNOME Shell"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Xestor de xanelas e inicio de aplicativos"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferencias das extensións de GNOME Shell"
|
msgstr "Preferencias das extensións de GNOME Shell"
|
||||||
@ -56,13 +64,9 @@ msgstr "Preferencias das extensións de GNOME Shell"
|
|||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Configure as extensións de GNOME Shell"
|
msgstr "Configure as extensións de GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell (compositor de wayland)"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "Xestor de xanelas e inicio de aplicativos"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
@ -170,95 +174,76 @@ msgstr ""
|
|||||||
"estado por omisión da opción. "
|
"estado por omisión da opción. "
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
msgstr ""
|
|
||||||
"Indica se o adaptador de Bluetooth por omisión ten configurados dispositivos "
|
|
||||||
"asociados a el"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
msgstr ""
|
|
||||||
"O shell só mostrará o elemento de menú de Bluetooth se hai un adaptador de "
|
|
||||||
"Bluetooth conectado ou se houbera dispositivos asociados co adaptador "
|
|
||||||
"principal. Isto restabelecerase se o adaptador por omisión non se ve ou non "
|
|
||||||
"ten dispositivos asociados a el."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Mostrar a data da semana no calendario"
|
msgstr "Mostrar a data da semana no calendario"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
|
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Combinación de teclas para abrir o menú de aplicativo"
|
msgstr "Combinación de teclas para abrir o menú de aplicativo"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Combinación de teclas para abrir a vista «Mostrar aplicativos»"
|
msgstr "Combinación de teclas para abrir a vista «Mostrar aplicativos»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Combinación de teclas para abrir a vista \"Mostrar aplicativos\" da Vista "
|
"Combinación de teclas para abrir a vista \"Mostrar aplicativos\" da Vista "
|
||||||
"xera de Actividades."
|
"xera de Actividades."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Combinación de teclas para abrir a Vista xeral"
|
msgstr "Combinación de teclas para abrir a Vista xeral"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Combinación de teclas para abrir a Vista de actividades."
|
msgstr "Combinación de teclas para abrir a Vista de actividades."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Combinación de teclas para trocar a visibilidade da área de notificacións"
|
"Combinación de teclas para trocar a visibilidade da área de notificacións"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Combinación de teclas para trocar a visibilidade da área de notificacións."
|
"Combinación de teclas para trocar a visibilidade da área de notificacións."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Combinación de teclas para enfocar a notificación activa"
|
msgstr "Combinación de teclas para enfocar a notificación activa"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Combinación de teclas para enfocar a notificación activa."
|
msgstr "Combinación de teclas para enfocar a notificación activa."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr "Atallo de teclado que pausa e reinicia todo os xemelgos executándose."
|
msgstr "Atallo de teclado que pausa e reinicia todo os xemelgos executándose."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Que teclado usar"
|
msgstr "Que teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "O tipo de teclado a usar."
|
msgstr "O tipo de teclado a usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Restrinxir o trocador ao espazo de traballo actual."
|
msgstr "Restrinxir o trocador ao espazo de traballo actual."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
@ -266,11 +251,11 @@ msgstr ""
|
|||||||
"Se é verdadeiro, só se mostran no trocador os aplicativos que teñen xanelas "
|
"Se é verdadeiro, só se mostran no trocador os aplicativos que teñen xanelas "
|
||||||
"no espazo de traballo actual. Doutra maneira inclúense todos os aplicativos."
|
"no espazo de traballo actual. Doutra maneira inclúense todos os aplicativos."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "O modo da icona do aplicativo."
|
msgstr "O modo da icona do aplicativo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
@ -280,7 +265,7 @@ msgstr ""
|
|||||||
"son «thumbnail-only» (mostra unha miniatura da xanela, «app-icon-only» (só "
|
"son «thumbnail-only» (mostra unha miniatura da xanela, «app-icon-only» (só "
|
||||||
"mostra a icona do aplicativo) ou «both» (móstranse ambas cosas)."
|
"mostra a icona do aplicativo) ou «both» (móstranse ambas cosas)."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
@ -288,29 +273,29 @@ msgstr ""
|
|||||||
"Se é verdadeiro, só se mostrarán no trocador as xanelas do espazo de "
|
"Se é verdadeiro, só se mostrarán no trocador as xanelas do espazo de "
|
||||||
"traballo actual. Doutra maneira inclúense todos os aplicativos."
|
"traballo actual. Doutra maneira inclúense todos os aplicativos."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Anexar o diálogo modal á xanela pai"
|
msgstr "Anexar o diálogo modal á xanela pai"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Esta chave sobrescribe a chave en org.gnome.mutter cando executa GNOME Shell."
|
"Esta chave sobrescribe a chave en org.gnome.mutter cando executa GNOME Shell."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr "Activar o mosaico nos bordos ao arrastrar xanelas aos bordos da xanela"
|
msgstr "Activar o mosaico nos bordos ao arrastrar xanelas aos bordos da xanela"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Os espazos de traballo xestiónanse dinamicamente"
|
msgstr "Os espazos de traballo xestiónanse dinamicamente"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Espazos de traballo só no monitor primario"
|
msgstr "Espazos de traballo só no monitor primario"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr "Atrasar os cambios de foco no modo rato até que o punteiro se pare"
|
msgstr "Atrasar os cambios de foco no modo rato até que o punteiro se pare"
|
||||||
|
|
||||||
@ -318,52 +303,51 @@ msgstr "Atrasar os cambios de foco no modo rato até que o punteiro se pare"
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Inicio de sesión en rede"
|
msgstr "Inicio de sesión en rede"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:117
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %s:"
|
msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:149
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Extensións de GNOME Shell"
|
msgstr "Extensións de GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/networkAgent.js:145
|
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
#: ../js/gdm/authPrompt.js:448
|
#: ../js/gdm/authPrompt.js:435
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Seguinte"
|
msgstr "Seguinte"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Desbloquear"
|
msgstr "Desbloquear"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:214
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:285
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Escolla unha sesión"
|
msgstr "Escolla unha sesión"
|
||||||
|
|
||||||
#. 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:435
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Non está na lista?"
|
msgstr "Non está na lista?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:854
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(p.ex., usuario ou %s)"
|
msgstr "(p.ex., usuario ou %s)"
|
||||||
@ -371,12 +355,12 @@ msgstr "(p.ex., usuario ou %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nome de usuario: "
|
msgstr "Nome de usuario: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1196
|
#: ../js/gdm/loginDialog.js:1181
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Xanela de inicio de sesión"
|
msgstr "Xanela de inicio de sesión"
|
||||||
|
|
||||||
@ -512,36 +496,16 @@ msgstr "Engadir aos favoritos"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Mostrar detalles"
|
msgstr "Mostrar detalles"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:134
|
#: ../js/ui/appFavorites.js:132
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s foi engadido aos seus favoritos."
|
msgstr "%s foi engadido aos seus favoritos."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:168
|
#: ../js/ui/appFavorites.js:166
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s retirouse dos seus marcadores."
|
msgstr "%s retirouse dos seus marcadores."
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:59
|
|
||||||
msgid "Select Audio Device"
|
|
||||||
msgstr "Seleccionar dispositivo de son"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:69
|
|
||||||
msgid "Sound Settings"
|
|
||||||
msgstr "Preferencias de son"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:78
|
|
||||||
msgid "Headphones"
|
|
||||||
msgstr "Cascos auriculares"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:80
|
|
||||||
msgid "Headset"
|
|
||||||
msgstr "Auriculares"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Micrófono"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Cambiar fondo de escritorio…"
|
msgstr "Cambiar fondo de escritorio…"
|
||||||
@ -550,12 +514,13 @@ msgstr "Cambiar fondo de escritorio…"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Preferencias da pantalla"
|
msgstr "Preferencias da pantalla"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:366
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Preferencias"
|
msgstr "Preferencias"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:47
|
#: ../js/ui/calendar.js:55
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -565,96 +530,94 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:76
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "D"
|
msgstr "D"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:78
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "L"
|
msgstr "L"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:80
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "M"
|
msgstr "M"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:82
|
#: ../js/ui/calendar.js:90
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "W"
|
msgstr "W"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:92
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "X"
|
msgstr "X"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:94
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "V"
|
msgstr "V"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:96
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:416
|
#: ../js/ui/calendar.js:566
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Anterior mes"
|
msgstr "Anterior mes"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:426
|
#: ../js/ui/calendar.js:576
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Seguinte mes"
|
msgstr "Seguinte mes"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:579
|
#: ../js/ui/calendar.js:783
|
||||||
#, no-javascript-format
|
|
||||||
msgctxt "date day number format"
|
|
||||||
msgid "%d"
|
|
||||||
msgstr "%d"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:634
|
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Semana %V"
|
msgstr "Semana %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:695
|
#: ../js/ui/calendar.js:1188
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Todo o día"
|
msgstr "Todo o día"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:821
|
#: ../js/ui/calendar.js:1291
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Limpar sección"
|
||||||
|
|
||||||
|
#: ../js/ui/calendar.js:1518
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Eventos"
|
msgstr "Eventos"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:830
|
#: ../js/ui/calendar.js:1527
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d de %B"
|
msgstr "%A, %d de %B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:834
|
#: ../js/ui/calendar.js:1531
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %d de %B de %Y"
|
msgstr "%A, %d de %B de %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:919
|
#: ../js/ui/calendar.js:1616
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacións"
|
msgstr "Notificacións"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1070
|
#: ../js/ui/calendar.js:1767
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Non hai notificacións"
|
msgstr "Non hai notificacións"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1073
|
#: ../js/ui/calendar.js:1770
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Non hai eventos"
|
msgstr "Non hai eventos"
|
||||||
|
|
||||||
@ -666,7 +629,7 @@ msgstr "Unidade externa conectada"
|
|||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "Unidade externa desconectada"
|
msgstr "Unidade externa desconectada"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:355
|
#: ../js/ui/components/autorunManager.js:354
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Abrir con %s"
|
msgstr "Abrir con %s"
|
||||||
@ -978,11 +941,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:65
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Ocultar bandexa"
|
msgstr "Ocultar bandexa"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:106
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Iconas de estado"
|
msgstr "Iconas de estado"
|
||||||
|
|
||||||
@ -1010,7 +973,7 @@ msgstr "Activado"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
@ -1034,26 +997,10 @@ msgstr "Ver fonte"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Páxina web"
|
msgstr "Páxina web"
|
||||||
|
|
||||||
#: ../js/ui/messageList.js:543
|
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Limpar sección"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información do sistema"
|
msgstr "Información do sistema"
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:194
|
|
||||||
msgid "Unknown artist"
|
|
||||||
msgstr "Artista descoñecido"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:195
|
|
||||||
msgid "Unknown title"
|
|
||||||
msgstr "Título descoñecido"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:217
|
|
||||||
msgid "Media"
|
|
||||||
msgstr "Multimedia"
|
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Desfacer"
|
msgstr "Desfacer"
|
||||||
@ -1070,22 +1017,17 @@ msgstr "Vista xeral"
|
|||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Escriba para buscar…"
|
msgstr "Escriba para buscar…"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:358
|
#: ../js/ui/panel.js:352
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Saír"
|
msgstr "Saír"
|
||||||
|
|
||||||
#. 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:414
|
#: ../js/ui/panel.js:404
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:695
|
#: ../js/ui/panel.js:754
|
||||||
msgctxt "System menu in the top bar"
|
|
||||||
msgid "System"
|
|
||||||
msgstr "Sistema"
|
|
||||||
|
|
||||||
#: ../js/ui/panel.js:807
|
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@ -1098,15 +1040,15 @@ msgstr "Barra superior"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:71
|
#: ../js/ui/runDialog.js:70
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Escriba unha orde"
|
msgstr "Escriba unha orde"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Pechar"
|
msgstr "Pechar"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:282
|
#: ../js/ui/runDialog.js:281
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "Restimando…"
|
msgstr "Restimando…"
|
||||||
|
|
||||||
@ -1229,41 +1171,29 @@ msgstr "Contraste alto"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:47
|
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
|
||||||
msgid "Bluetooth"
|
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
||||||
msgstr "Bluetooth"
|
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
||||||
|
#: ../js/ui/status/rfkill.js:117
|
||||||
|
msgid "Turn Off"
|
||||||
|
msgstr "Apagar"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:56
|
#: ../js/ui/status/bluetooth.js:54
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Preferencias do Bluetooth"
|
msgstr "Preferencias do Bluetooth"
|
||||||
|
|
||||||
#. Translators: this is the number of connected bluetooth devices
|
#. Translators: this is the number of connected bluetooth devices
|
||||||
#: ../js/ui/status/bluetooth.js:136
|
#: ../js/ui/status/bluetooth.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d Connected"
|
msgid "%d Connected"
|
||||||
msgid_plural "%d Connected"
|
msgid_plural "%d Connected"
|
||||||
msgstr[0] "%d conectado"
|
msgstr[0] "%d conectado"
|
||||||
msgstr[1] "%d conectados"
|
msgstr[1] "%d conectados"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:138
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
msgid "Off"
|
|
||||||
msgstr "Desactivar"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:140
|
|
||||||
msgid "Not In Use"
|
msgid "Not In Use"
|
||||||
msgstr "Non está en uso"
|
msgstr "Non está en uso"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
|
|
||||||
msgid "Turn On"
|
|
||||||
msgstr "Activar"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
|
|
||||||
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
|
||||||
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
|
||||||
#: ../js/ui/status/rfkill.js:117
|
|
||||||
msgid "Turn Off"
|
|
||||||
msgstr "Apagar"
|
|
||||||
|
|
||||||
#: ../js/ui/status/brightness.js:44
|
#: ../js/ui/status/brightness.js:44
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brillo"
|
msgstr "Brillo"
|
||||||
@ -1272,50 +1202,30 @@ msgstr "Brillo"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostrar a distribución do teclado"
|
msgstr "Mostrar a distribución do teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Localización activada"
|
msgstr "Localización activada"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Desactivar"
|
msgstr "Desactivar"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:109
|
#: ../js/ui/status/location.js:73
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Preferencias da privacidade"
|
msgstr "Preferencias da privacidade"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:214
|
#: ../js/ui/status/location.js:176
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Localización en uso"
|
msgstr "Localización en uso"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:218
|
#: ../js/ui/status/location.js:180
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Localización desactivada"
|
msgstr "Localización desactivada"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:219
|
#: ../js/ui/status/location.js:181
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activar"
|
msgstr "Activar"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:426
|
|
||||||
msgid "Deny Access"
|
|
||||||
msgstr "Denegar acceso"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:429
|
|
||||||
msgid "Grant Access"
|
|
||||||
msgstr "Conceder acceso"
|
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
|
||||||
#: ../js/ui/status/location.js:435
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Give %s access to your location?"
|
|
||||||
msgstr "Darlle acceso a %s á súa localización?"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
|
||||||
msgstr ""
|
|
||||||
"Pode cambiar o acceso á localización en calquera momento desde as "
|
|
||||||
"preferencias de privacidade."
|
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<descoñecido>"
|
msgstr "<descoñecido>"
|
||||||
@ -1451,6 +1361,10 @@ msgstr "Seleccione unha rede"
|
|||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Preferencias da WiFi"
|
msgstr "Preferencias da WiFi"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1279
|
||||||
|
msgid "Turn On"
|
||||||
|
msgstr "Activar"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: ../js/ui/status/network.js:1296
|
#: ../js/ui/status/network.js:1296
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@ -1500,36 +1414,31 @@ msgstr "Produciuse un fallo na conexión"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Produciuse un fallo na activación da conexión de rede"
|
msgstr "Produciuse un fallo na activación da conexión de rede"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:61
|
#: ../js/ui/status/power.js:49
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Preferencias de enerxía"
|
msgstr "Preferencias de enerxía"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:65
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Carga completa"
|
msgstr "Carga completa"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "Estimando…"
|
msgstr "Estimando…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:98
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d %%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "%d∶%02d Faltan (%d %%)"
|
msgstr "Faltan %d:%02d (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:103
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "%d∶%02d ate cargado (%d %%)"
|
msgstr "%d:%02d ate cargado (%d%%)"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
|
||||||
#, javascript-format
|
|
||||||
msgid "%d %%"
|
|
||||||
msgstr "%d %%"
|
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
@ -1570,6 +1479,10 @@ msgstr "Volume cambiado"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volume"
|
msgstr "Volume"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Micrófono"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Iniciar sesión como outro usuario"
|
msgstr "Iniciar sesión como outro usuario"
|
||||||
@ -1690,7 +1603,7 @@ msgstr "Calendario de Evolution"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1699,68 +1612,68 @@ msgstr[1] "%u saídas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons do sistema"
|
msgstr "Sons do sistema"
|
||||||
|
|
||||||
#: ../src/main.c:381
|
#: ../src/main.c:373
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:387
|
#: ../src/main.c:379
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/main.c:393
|
#: ../src/main.c:385
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
||||||
"sesión"
|
"sesión"
|
||||||
|
|
||||||
#: ../src/main.c:399
|
#: ../src/main.c:391
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Listar os modos posíbeis"
|
msgstr "Listar os modos posíbeis"
|
||||||
|
|
||||||
#: ../src/shell-app.c:246
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Descoñecido"
|
msgstr "Descoñecido"
|
||||||
|
|
||||||
#: ../src/shell-app.c:487
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Produciuse un erro ao iniciar «%s»"
|
msgstr "Produciuse un erro ao iniciar «%s»"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:730
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Os contrasinais non coinciden."
|
msgstr "Os contrasinais non coinciden."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:738
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "O contrasinal non pode estar baleiro"
|
msgstr "O contrasinal non pode estar baleiro"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:353
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "O usuario rexeitou o diálogo de autenticación"
|
msgstr "O usuario rexeitou o diálogo de autenticación"
|
||||||
|
|
||||||
#~ msgid "%s is requesting access to your location."
|
#~ msgid "Bluetooth"
|
||||||
#~ msgstr "%s está solicitando acceso á súa localización."
|
#~ msgstr "Bluetooth"
|
||||||
|
|
||||||
#~ msgid "GNOME Shell (wayland compositor)"
|
|
||||||
#~ msgstr "GNOME Shell (compositor de wayland)"
|
|
||||||
|
|
||||||
#~ msgid "%d Connected Device"
|
#~ msgid "%d Connected Device"
|
||||||
#~ msgid_plural "%d Connected Devices"
|
#~ msgid_plural "%d Connected Devices"
|
||||||
#~ msgstr[0] "%d dispositivo conectado"
|
#~ msgstr[0] "%d dispositivo conectado"
|
||||||
#~ msgstr[1] "%d dispositivos conectados"
|
#~ msgstr[1] "%d dispositivos conectados"
|
||||||
|
|
||||||
|
#~ msgid "Off"
|
||||||
|
#~ msgstr "Desactivar"
|
||||||
|
|
||||||
#~ msgid "Authentication required"
|
#~ msgid "Authentication required"
|
||||||
#~ msgstr "Requírese autenticación"
|
#~ msgstr "Requírese autenticación"
|
||||||
|
|
||||||
@ -1912,6 +1825,9 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
|
|||||||
#~ msgid "View account"
|
#~ msgid "View account"
|
||||||
#~ msgstr "Ver conta"
|
#~ msgstr "Ver conta"
|
||||||
|
|
||||||
|
#~ msgid "Unknown reason"
|
||||||
|
#~ msgstr "Razón descoñecida"
|
||||||
|
|
||||||
#~ msgid "Show the message list"
|
#~ msgid "Show the message list"
|
||||||
#~ msgstr "Mostrar a lista de mensaxes"
|
#~ msgstr "Mostrar a lista de mensaxes"
|
||||||
|
|
||||||
@ -2086,6 +2002,9 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
|
|||||||
#~ msgid "Device %s wants access to the service '%s'"
|
#~ msgid "Device %s wants access to the service '%s'"
|
||||||
#~ msgstr "O dispositivo %s quere acceder ao servizo «%s»"
|
#~ msgstr "O dispositivo %s quere acceder ao servizo «%s»"
|
||||||
|
|
||||||
|
#~ msgid "Always grant access"
|
||||||
|
#~ msgstr "Conceder acceso sempre"
|
||||||
|
|
||||||
#~ msgid "Grant this time only"
|
#~ msgid "Grant this time only"
|
||||||
#~ msgstr "Conceder só esta vez"
|
#~ msgstr "Conceder só esta vez"
|
||||||
|
|
||||||
@ -2253,6 +2172,9 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
|
|||||||
#~ msgid "Visibility"
|
#~ msgid "Visibility"
|
||||||
#~ msgstr "Visibilidade"
|
#~ msgstr "Visibilidade"
|
||||||
|
|
||||||
|
#~ msgid "Send Files to Device…"
|
||||||
|
#~ msgstr "Enviar ficheiros ao dispositivo…"
|
||||||
|
|
||||||
#~ msgid "Set Up a New Device…"
|
#~ msgid "Set Up a New Device…"
|
||||||
#~ msgstr "Configurar un dispositivo novo…"
|
#~ msgstr "Configurar un dispositivo novo…"
|
||||||
|
|
||||||
@ -2306,6 +2228,10 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
|
|||||||
#~ msgstr[0] "Queda %d minuto"
|
#~ msgstr[0] "Queda %d minuto"
|
||||||
#~ msgstr[1] "Quedan %d minutos"
|
#~ msgstr[1] "Quedan %d minutos"
|
||||||
|
|
||||||
|
#~ msgctxt "percent of battery remaining"
|
||||||
|
#~ msgid "%d%%"
|
||||||
|
#~ msgstr "%d%%"
|
||||||
|
|
||||||
#~ msgid "AC Adapter"
|
#~ msgid "AC Adapter"
|
||||||
#~ msgstr "Adaptador de corrente"
|
#~ msgstr "Adaptador de corrente"
|
||||||
|
|
||||||
|
394
po/he.po
394
po/he.po
@ -10,8 +10,8 @@ msgid ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-03-11 14:49+0200\n"
|
"POT-Creation-Date: 2015-08-30 21:15+0300\n"
|
||||||
"PO-Revision-Date: 2015-08-30 21:16+0300\n"
|
"PO-Revision-Date: 2015-08-30 21:16+0300\n"
|
||||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
||||||
"Language-Team: עברית <>\n"
|
"Language-Team: עברית <>\n"
|
||||||
@ -47,6 +47,15 @@ msgstr "הצגת כל היישומים"
|
|||||||
#: ../data/50-gnome-shell-system.xml.in.h:6
|
#: ../data/50-gnome-shell-system.xml.in.h:6
|
||||||
msgid "Open the application menu"
|
msgid "Open the application menu"
|
||||||
msgstr "פתיחת תפריט היישום"
|
msgstr "פתיחת תפריט היישום"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell"
|
||||||
|
msgstr "מעטפת GNOME"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "ניהול חלונות והרצת יישומים"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
@ -55,13 +64,9 @@ msgstr "העדפות ההרחבות של GNOME Shell"
|
|||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "הגדרת הרחבות GNOME Shell"
|
msgstr "הגדרת הרחבות GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "מעטפת GNOME"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "GNOME Shell (מסדר wayland)"
|
msgstr "GNOME Shell (מסדר wayland)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
@ -165,92 +170,74 @@ msgstr ""
|
|||||||
"'Remember Password' checkbox will be present. This key sets the default "
|
"'Remember Password' checkbox will be present. This key sets the default "
|
||||||
"state of the checkbox."
|
"state of the checkbox."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
|
||||||
msgid ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
msgstr ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
msgstr ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Show the week date in the calendar"
|
msgstr "Show the week date in the calendar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "If true, display the ISO week date in the calendar."
|
msgstr "If true, display the ISO week date in the calendar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Keybinding to open the application menu"
|
msgstr "Keybinding to open the application menu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Keybinding to open the application menu."
|
msgstr "Keybinding to open the application menu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Keybinding to open the \"Show Applications\" view"
|
msgstr "Keybinding to open the \"Show Applications\" view"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Keybinding to open the overview"
|
msgstr "Keybinding to open the overview"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Keybinding to open the Activities Overview."
|
msgstr "Keybinding to open the Activities Overview."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr "Keybinding to toggle the visibility of the notification list"
|
msgstr "Keybinding to toggle the visibility of the notification list"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr "Keybinding to toggle the visibility of the notification list."
|
msgstr "Keybinding to toggle the visibility of the notification list."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Keybinding to focus the active notification"
|
msgstr "Keybinding to focus the active notification"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Keybinding to focus the active notification."
|
msgstr "Keybinding to focus the active notification."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Which keyboard to use"
|
msgstr "Which keyboard to use"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "The type of keyboard to use."
|
msgstr "The type of keyboard to use."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Limit switcher to current workspace."
|
msgstr "Limit switcher to current workspace."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
@ -258,51 +245,51 @@ msgstr ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "The application icon mode."
|
msgstr "The application icon mode."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
|
msgid ""
|
||||||
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
|
"only' (shows only the application icon) or 'both'."
|
||||||
|
msgstr ""
|
||||||
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
|
"only' (shows only the application icon) or 'both'."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
|
msgid ""
|
||||||
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
|
"Otherwise, all windows are included."
|
||||||
|
msgstr ""
|
||||||
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
|
"Otherwise, all windows are included."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
|
||||||
msgid ""
|
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
|
||||||
"only' (shows only the application icon) or 'both'."
|
|
||||||
msgstr ""
|
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
|
||||||
"only' (shows only the application icon) or 'both'."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
|
||||||
msgid ""
|
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
|
||||||
"Otherwise, all windows are included."
|
|
||||||
msgstr ""
|
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
|
||||||
"Otherwise, all windows are included."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Attach modal dialog to the parent window"
|
msgstr "Attach modal dialog to the parent window"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr "Enable edge tiling when dropping windows on screen edges"
|
msgstr "Enable edge tiling when dropping windows on screen edges"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Workspaces are managed dynamically"
|
msgstr "Workspaces are managed dynamically"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Workspaces only on primary monitor"
|
msgstr "Workspaces only on primary monitor"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
@ -310,52 +297,51 @@ msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
|||||||
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Network Login"
|
msgstr "Network Login"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:122
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "אירעה שגיאה בעת טעינת דו־שיח ההעדפות עבור %s:"
|
msgstr "אירעה שגיאה בעת טעינת דו־שיח ההעדפות עבור %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:154
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "הרחבות GNOME Shell"
|
msgstr "הרחבות GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ביטול"
|
msgstr "ביטול"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
#: ../js/gdm/authPrompt.js:435
|
#: ../js/gdm/authPrompt.js:435
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "הבא"
|
msgstr "הבא"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "שחרור"
|
msgstr "שחרור"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "כניסה"
|
msgstr "כניסה"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:281
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "בחירת הפעלה"
|
msgstr "בחירת הפעלה"
|
||||||
|
|
||||||
#. 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:431
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "לא רשום?"
|
msgstr "לא רשום?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:847
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
@ -363,12 +349,12 @@ msgstr "(משתמש או %s לדוגמה)"
|
|||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "שם משתמש:"
|
msgstr "שם משתמש:"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1181
|
#: ../js/gdm/loginDialog.js:1181
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "חלון כניסה"
|
msgstr "חלון כניסה"
|
||||||
@ -504,36 +490,16 @@ msgstr "הוספה למועדפים"
|
|||||||
#: ../js/ui/appDisplay.js:1897
|
#: ../js/ui/appDisplay.js:1897
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "הצגת פרטים"
|
msgstr "הצגת פרטים"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:132
|
#: ../js/ui/appFavorites.js:132
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s נוסף למועדפים שלך."
|
msgstr "%s נוסף למועדפים שלך."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:166
|
#: ../js/ui/appFavorites.js:166
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s הוסר מהמועדפים שלך."
|
msgstr "%s הוסר מהמועדפים שלך."
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:59
|
|
||||||
msgid "Select Audio Device"
|
|
||||||
msgstr "בחירת התקן שמע"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:69
|
|
||||||
msgid "Sound Settings"
|
|
||||||
msgstr "הגדרות שמע"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:78
|
|
||||||
msgid "Headphones"
|
|
||||||
msgstr "אזניות"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:80
|
|
||||||
msgid "Headset"
|
|
||||||
msgstr "אזניות עם מיקרופון"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "מיקרופון"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
@ -542,12 +508,13 @@ msgstr "החלפת הרקע…"
|
|||||||
#: ../js/ui/backgroundMenu.js:21
|
#: ../js/ui/backgroundMenu.js:21
|
||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "הגדרות תצוגה"
|
msgstr "הגדרות תצוגה"
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
#: ../js/ui/status/system.js:366
|
#: ../js/ui/status/system.js:366
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "הגדרות"
|
msgstr "הגדרות"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:55
|
#: ../js/ui/calendar.js:55
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
@ -557,96 +524,94 @@ msgstr "65"
|
|||||||
#. *
|
#. *
|
||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "א"
|
msgstr "א"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "ב"
|
msgstr "ב"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "ג"
|
msgstr "ג"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:90
|
#: ../js/ui/calendar.js:90
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "ד"
|
msgstr "ד"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:92
|
#: ../js/ui/calendar.js:92
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "ה"
|
msgstr "ה"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:94
|
#: ../js/ui/calendar.js:94
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "ו"
|
msgstr "ו"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:96
|
#: ../js/ui/calendar.js:96
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "ש"
|
msgstr "ש"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:566
|
#: ../js/ui/calendar.js:566
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "חודש קודם"
|
msgstr "חודש קודם"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:576
|
#: ../js/ui/calendar.js:576
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "חודש הבא"
|
msgstr "חודש הבא"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:579
|
|
||||||
#, no-javascript-format
|
|
||||||
msgctxt "date day number format"
|
|
||||||
msgid "%d"
|
|
||||||
msgstr "%d"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:783
|
#: ../js/ui/calendar.js:783
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "שבוע %V"
|
msgstr "שבוע %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:1188
|
#: ../js/ui/calendar.js:1188
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "יום שלם"
|
msgstr "יום שלם"
|
||||||
|
|
||||||
|
#: ../js/ui/calendar.js:1291
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "ניקוי מקטע"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1518
|
#: ../js/ui/calendar.js:1518
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "אירועים"
|
msgstr "אירועים"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1527
|
#: ../js/ui/calendar.js:1527
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, ה־%e ב%B"
|
msgstr "%A, ה־%e ב%B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1531
|
#: ../js/ui/calendar.js:1531
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, ה־%e ב%B, %Y"
|
msgstr "%A, ה־%e ב%B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1616
|
#: ../js/ui/calendar.js:1616
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "התרעות"
|
msgstr "התרעות"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1767
|
#: ../js/ui/calendar.js:1767
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "אין התרעות"
|
msgstr "אין התרעות"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1770
|
#: ../js/ui/calendar.js:1770
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "אין אירועים"
|
msgstr "אין אירועים"
|
||||||
@ -658,7 +623,7 @@ msgstr "חובר כונן חיצוני"
|
|||||||
#: ../js/ui/components/automountManager.js:102
|
#: ../js/ui/components/automountManager.js:102
|
||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "נותק כונן חיצוני"
|
msgstr "נותק כונן חיצוני"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:354
|
#: ../js/ui/components/autorunManager.js:354
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
@ -964,11 +929,11 @@ msgid "Keyboard"
|
|||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "מקלדת"
|
msgstr "מקלדת"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:66
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "הסתרת המגש"
|
msgstr "הסתרת המגש"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:107
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "סמלי מצב"
|
msgstr "סמלי מצב"
|
||||||
@ -996,7 +961,7 @@ msgstr "פעיל"
|
|||||||
msgstr "פעיל"
|
msgstr "פעיל"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "מנוטרל"
|
msgstr "מנוטרל"
|
||||||
@ -1020,26 +985,10 @@ msgstr "צפייה במקור"
|
|||||||
#: ../js/ui/lookingGlass.js:758
|
#: ../js/ui/lookingGlass.js:758
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "דף אינטרנט"
|
msgstr "דף אינטרנט"
|
||||||
|
|
||||||
#: ../js/ui/messageList.js:543
|
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "ניקוי מקטע"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "פרטי המערכת"
|
msgstr "פרטי המערכת"
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:194
|
|
||||||
msgid "Unknown artist"
|
|
||||||
msgstr "אמן לא ידוע"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:195
|
|
||||||
msgid "Unknown title"
|
|
||||||
msgstr "כותרת לא ידועה"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:217
|
|
||||||
msgid "Media"
|
|
||||||
msgstr "מדיה"
|
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
@ -1056,22 +1005,17 @@ msgstr "סקירה"
|
|||||||
#: ../js/ui/overview.js:244
|
#: ../js/ui/overview.js:244
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "יש להקליד כדי לחפש…"
|
msgstr "יש להקליד כדי לחפש…"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:352
|
#: ../js/ui/panel.js:352
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "יציאה"
|
msgstr "יציאה"
|
||||||
|
|
||||||
#. 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:404
|
#: ../js/ui/panel.js:404
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "פעילויות"
|
msgstr "פעילויות"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:695
|
|
||||||
msgctxt "System menu in the top bar"
|
|
||||||
msgid "System"
|
|
||||||
msgstr "מערכת"
|
|
||||||
|
|
||||||
#: ../js/ui/panel.js:754
|
#: ../js/ui/panel.js:754
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "הסרגל העליון"
|
msgstr "הסרגל העליון"
|
||||||
@ -1084,15 +1028,15 @@ msgstr "הסרגל העליון"
|
|||||||
#: ../js/ui/popupMenu.js:289
|
#: ../js/ui/popupMenu.js:289
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:70
|
#: ../js/ui/runDialog.js:70
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "נא להזין פקודה"
|
msgstr "נא להזין פקודה"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "סגירה"
|
msgstr "סגירה"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:281
|
#: ../js/ui/runDialog.js:281
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "מופעל מחדש…"
|
msgstr "מופעל מחדש…"
|
||||||
@ -1217,41 +1161,29 @@ msgstr "ניגודיות גבוהה"
|
|||||||
#: ../js/ui/status/accessibility.js:202
|
#: ../js/ui/status/accessibility.js:202
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "טקסט גדול"
|
msgstr "טקסט גדול"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:47
|
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
|
||||||
msgid "Bluetooth"
|
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
||||||
|
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
||||||
|
#: ../js/ui/status/rfkill.js:117
|
||||||
|
msgid "Turn Off"
|
||||||
msgstr "כיבוי"
|
msgstr "כיבוי"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:54
|
#: ../js/ui/status/bluetooth.js:54
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "הגדרות Bluetooth"
|
msgstr "הגדרות Bluetooth"
|
||||||
|
|
||||||
#. Translators: this is the number of connected bluetooth devices
|
#. Translators: this is the number of connected bluetooth devices
|
||||||
#: ../js/ui/status/bluetooth.js:105
|
#: ../js/ui/status/bluetooth.js:105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d Connected"
|
msgid "%d Connected"
|
||||||
msgid_plural "%d Connected"
|
msgid_plural "%d Connected"
|
||||||
msgstr[0] "אחד מחובר"
|
msgstr[0] "אחד מחובר"
|
||||||
msgstr[1] "%d מחוברים"
|
msgstr[1] "%d מחוברים"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:138
|
|
||||||
msgid "Off"
|
|
||||||
msgstr "כבוי"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:107
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
msgid "Not In Use"
|
msgid "Not In Use"
|
||||||
msgstr "לא בשימוש"
|
msgstr "לא בשימוש"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
|
|
||||||
msgid "Turn On"
|
|
||||||
msgstr "הפעלה"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
|
|
||||||
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
|
||||||
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
|
||||||
#: ../js/ui/status/rfkill.js:117
|
|
||||||
msgid "Turn Off"
|
|
||||||
msgstr "כיבוי"
|
|
||||||
|
|
||||||
#: ../js/ui/status/brightness.js:44
|
#: ../js/ui/status/brightness.js:44
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
@ -1260,48 +1192,30 @@ msgstr "בהירות"
|
|||||||
#: ../js/ui/status/keyboard.js:736
|
#: ../js/ui/status/keyboard.js:736
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "הצגת פריסת המקלדת"
|
msgstr "הצגת פריסת המקלדת"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "איכון מאופשר"
|
msgstr "איכון מאופשר"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "השבתה"
|
msgstr "השבתה"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:73
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "הגדרות פרטיות"
|
msgstr "הגדרות פרטיות"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:176
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "איכון בשימוש"
|
msgstr "איכון בשימוש"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:180
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "איכון מושבת"
|
msgstr "איכון מושבת"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:181
|
#: ../js/ui/status/location.js:181
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "אפשור"
|
msgstr "אפשור"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:426
|
|
||||||
msgid "Deny Access"
|
|
||||||
msgstr "מניעת גישה"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:429
|
|
||||||
msgid "Grant Access"
|
|
||||||
msgstr "אפשור גישה"
|
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
|
||||||
#: ../js/ui/status/location.js:435
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Give %s access to your location?"
|
|
||||||
msgstr "לתת ליישום %s גישה למיקום שלך?"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
|
||||||
msgstr "ניתן לשנות בכל עת את הרשאות הגישה למיקום שלך מהגדרות הפרטיות."
|
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
@ -1437,6 +1351,10 @@ msgstr "בחירת רשת"
|
|||||||
#: ../js/ui/status/network.js:1177
|
#: ../js/ui/status/network.js:1177
|
||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "הגדרות רשת אלחוטית"
|
msgstr "הגדרות רשת אלחוטית"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1279
|
||||||
|
msgid "Turn On"
|
||||||
|
msgstr "הפעלה"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: ../js/ui/status/network.js:1296
|
#: ../js/ui/status/network.js:1296
|
||||||
@ -1486,37 +1404,32 @@ msgstr "ההתחברות נכשלה"
|
|||||||
#: ../js/ui/status/network.js:1698
|
#: ../js/ui/status/network.js:1698
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "הפעלת חיבור הרשת נכשלה"
|
msgstr "הפעלת חיבור הרשת נכשלה"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:49
|
#: ../js/ui/status/power.js:49
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "הגדרות צריכת החשמל"
|
msgstr "הגדרות צריכת החשמל"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:65
|
#: ../js/ui/status/power.js:65
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "בטעינה מלאה"
|
msgstr "בטעינה מלאה"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "מתבצע שערוך…"
|
msgstr "מתבצע שערוך…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:86
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d%%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "%d∶%02d נותרו (%d%%)"
|
msgstr "%d∶%02d נותרו (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:91
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d%%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "%d:%02d עד לטעינה מלאה (%d%%)"
|
msgstr "%d:%02d עד לטעינה מלאה (%d%%)"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
|
||||||
#, javascript-format
|
|
||||||
msgid "%d %%"
|
|
||||||
msgstr "%d %%"
|
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
@ -1556,6 +1469,10 @@ msgstr "עצמת השמע השתנתה"
|
|||||||
#: ../js/ui/status/volume.js:162
|
#: ../js/ui/status/volume.js:162
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "עצמה"
|
msgstr "עצמה"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "מיקרופון"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
@ -1677,7 +1594,7 @@ msgstr "יומן אבולושן"
|
|||||||
msgstr "יומן אבולושן"
|
msgstr "יומן אבולושן"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1837
|
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
@ -1686,60 +1603,57 @@ msgstr[1] "%u פלטים"
|
|||||||
msgstr[1] "%u פלטים"
|
msgstr[1] "%u פלטים"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1847
|
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "קלט אחד"
|
msgstr[0] "קלט אחד"
|
||||||
msgstr[1] "%u קלטים"
|
msgstr[1] "%u קלטים"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2373
|
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "צלילי מערכת"
|
msgstr "צלילי מערכת"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:373
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Print version"
|
msgstr "Print version"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:379
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:385
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "שימוש במצב מסוים, לדוגמה: „gdm“ למסך הכניסה"
|
msgstr "שימוש במצב מסוים, לדוגמה: „gdm“ למסך הכניסה"
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:391
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "הצגת המצבים האפשריים"
|
msgstr "הצגת המצבים האפשריים"
|
||||||
|
|
||||||
#: ../src/shell-app.c:239
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "לא ידוע"
|
msgstr "לא ידוע"
|
||||||
|
|
||||||
#: ../src/shell-app.c:480
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "אירע כשל בטעינת „%s”"
|
msgstr "אירע כשל בטעינת „%s”"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:742
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "הססמאות אינן תואמות."
|
msgstr "הססמאות אינן תואמות."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:750
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "הססמה אינה יכולה להישאר ריקה"
|
msgstr "הססמה אינה יכולה להישאר ריקה"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:346
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
||||||
|
|
||||||
#~ msgid "%s is requesting access to your location."
|
#~ msgid "Bluetooth"
|
||||||
#~ msgstr "%s דורש גישה למיקום שלך."
|
|
||||||
|
|
||||||
#~ msgid "GNOME Shell (wayland compositor)"
|
|
||||||
#~ msgstr "Bluetooth"
|
#~ msgstr "Bluetooth"
|
||||||
|
|
||||||
# javascript-format
|
# javascript-format
|
||||||
@ -1747,6 +1661,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
|||||||
#~ msgid_plural "%d Connected Devices"
|
#~ msgid_plural "%d Connected Devices"
|
||||||
#~ msgstr[0] "התקן אחד מחובר"
|
#~ msgstr[0] "התקן אחד מחובר"
|
||||||
#~ msgstr[1] "%d התקנים מחוברים"
|
#~ msgstr[1] "%d התקנים מחוברים"
|
||||||
|
|
||||||
|
#~ msgid "Off"
|
||||||
|
#~ msgstr "כבוי"
|
||||||
|
|
||||||
#~ msgid "Authentication required"
|
#~ msgid "Authentication required"
|
||||||
#~ msgstr "נדרש אימות"
|
#~ msgstr "נדרש אימות"
|
||||||
@ -1893,6 +1810,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
|||||||
|
|
||||||
#~ msgid "View account"
|
#~ msgid "View account"
|
||||||
#~ msgstr "צפייה בחשבון"
|
#~ msgstr "צפייה בחשבון"
|
||||||
|
|
||||||
|
#~ msgid "Unknown reason"
|
||||||
|
#~ msgstr "סיבה לא ידועה"
|
||||||
|
|
||||||
#~ msgid "Show the message list"
|
#~ msgid "Show the message list"
|
||||||
#~ msgstr "הצגת רשימת הודעות"
|
#~ msgstr "הצגת רשימת הודעות"
|
||||||
@ -2086,6 +2006,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
|||||||
|
|
||||||
#~ msgid "Device %s wants access to the service '%s'"
|
#~ msgid "Device %s wants access to the service '%s'"
|
||||||
#~ msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
|
#~ msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
|
||||||
|
|
||||||
|
#~ msgid "Always grant access"
|
||||||
|
#~ msgstr "תמיד להעניק גישה"
|
||||||
|
|
||||||
#~ msgid "Grant this time only"
|
#~ msgid "Grant this time only"
|
||||||
#~ msgstr "הענקת גישה הפעם בלבד"
|
#~ msgstr "הענקת גישה הפעם בלבד"
|
||||||
@ -2253,6 +2176,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
|||||||
|
|
||||||
#~ msgid "Visibility"
|
#~ msgid "Visibility"
|
||||||
#~ msgstr "הצגה"
|
#~ msgstr "הצגה"
|
||||||
|
|
||||||
|
#~ msgid "Send Files to Device…"
|
||||||
|
#~ msgstr "שליחת קובץ להתקן…"
|
||||||
|
|
||||||
#~ msgid "Set Up a New Device…"
|
#~ msgid "Set Up a New Device…"
|
||||||
#~ msgstr "הגדרת התקן חדש…"
|
#~ msgstr "הגדרת התקן חדש…"
|
||||||
@ -2331,6 +2257,10 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
|||||||
#~ msgstr[0] "דקה אחת נותרה"
|
#~ msgstr[0] "דקה אחת נותרה"
|
||||||
#~ msgstr[1] "%d דקות נותרו"
|
#~ msgstr[1] "%d דקות נותרו"
|
||||||
#~ msgstr[2] "שתי דקות נותרו"
|
#~ msgstr[2] "שתי דקות נותרו"
|
||||||
|
|
||||||
|
#~ msgctxt "percent of battery remaining"
|
||||||
|
#~ msgid "%d%%"
|
||||||
|
#~ msgstr "%d%%"
|
||||||
|
|
||||||
#~ msgid "AC Adapter"
|
#~ msgid "AC Adapter"
|
||||||
#~ msgstr "מתאם חשמל"
|
#~ msgstr "מתאם חשמל"
|
||||||
|
368
po/nb.po
368
po/nb.po
@ -3,14 +3,14 @@
|
|||||||
# 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.
|
||||||
#
|
#
|
||||||
# Åka Sikrom <a4@hush.com>, 2014-2015.
|
# Åka Sikrom <a4@hush.com>, 2014-2015.
|
||||||
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2016.
|
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2015.
|
||||||
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 3.20.x\n"
|
"Project-Id-Version: gnome-shell 3.17.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-05-03 23:34+0200\n"
|
"POT-Creation-Date: 2015-09-07 19:22+0200\n"
|
||||||
"PO-Revision-Date: 2016-05-03 23:35+0200\n"
|
"PO-Revision-Date: 2015-09-07 19:31+0200\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: Norwegian bokmål\n"
|
"Language: Norwegian bokmål\n"
|
||||||
@ -44,6 +44,15 @@ msgstr "Vis alle programmer"
|
|||||||
msgid "Open the application menu"
|
msgid "Open the application menu"
|
||||||
msgstr "Åpne programmenyen"
|
msgstr "Åpne programmenyen"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell"
|
||||||
|
msgstr "GNOME Shell"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Vindushåndtering og oppstart av programmer"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Brukervalg for GNOME Shell-utvidelser"
|
msgstr "Brukervalg for GNOME Shell-utvidelser"
|
||||||
@ -52,13 +61,9 @@ msgstr "Brukervalg for GNOME Shell-utvidelser"
|
|||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Sett opp utvidelser for GNOME Shell"
|
msgstr "Sett opp utvidelser for GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "GNOME Shell"
|
msgstr "GNOME Shell (Wayland-kompositør)"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "Vindushåndtering og oppstart av programmer"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
@ -161,88 +166,75 @@ msgstr ""
|
|||||||
"standardverdien for avkryssingsboksen."
|
"standardverdien for avkryssingsboksen."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Vis ukedato/ukenummer i kalender"
|
msgstr "Vis ukedato/ukenummer i kalender"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Viser ISO-ukedato i kalenderen hvis «true»."
|
msgstr "Viser ISO-ukedato i kalenderen hvis «true»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Tastaturbinding som åpner programmenyen"
|
msgstr "Tastaturbinding som åpner programmenyen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Tastaturbinding som åpner programmenyen."
|
msgstr "Tastaturbinding som åpner programmenyen."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Tastaturbinding som åpner visningen «Vis programmer»"
|
msgstr "Tastaturbinding som åpner visningen «Vis programmer»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tastaturbinding som åpner visningen «Vis programmer» i aktivitetsoversikten."
|
"Tastaturbinding som åpner visningen «Vis programmer» i aktivitetsoversikten."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Tastaturbinding som åpner oversikten"
|
msgstr "Tastaturbinding som åpner oversikten"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Tastaturbinding som åpner aktivitetsoversikten."
|
msgstr "Tastaturbinding som åpner aktivitetsoversikten."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr "Tastaturbinding som slår av/på visning av varslingsliste"
|
msgstr "Tastaturbinding som slår av/på visning av varslingsliste"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr "Tastaturbinding som slår av/på visning av varslingsliste."
|
msgstr "Tastaturbinding som slår av/på visning av varslingsliste."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Tastaturbinding som fokuserer aktiv varsling"
|
msgstr "Tastaturbinding som fokuserer aktiv varsling"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Tastaturbinding som fokuserer aktiv varsling."
|
msgstr "Tastaturbinding som fokuserer aktiv varsling."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Hurtigtast som stanser og fortsetter pågående bevegelser til "
|
"Hurtigtast som stanser og fortsetter pågående bevegelser til "
|
||||||
"feilsøkingsformål"
|
"feilsøkingsformål"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Tastatur som skal brukes"
|
msgstr "Tastatur som skal brukes"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Type tastatur som skal brukes."
|
msgstr "Type tastatur som skal brukes."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Begrens programveksling til gjeldende arbeidsområde."
|
msgstr "Begrens programveksling til gjeldende arbeidsområde."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
@ -251,11 +243,11 @@ msgstr ""
|
|||||||
"gjeldende arbeidsområder som vises i programveksleren. I motsatt fall kan du "
|
"gjeldende arbeidsområder som vises i programveksleren. I motsatt fall kan du "
|
||||||
"veksle mellom programmer på tvers av arbeidsområder."
|
"veksle mellom programmer på tvers av arbeidsområder."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "Ikonmodus for programmet."
|
msgstr "Ikonmodus for programmet."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
@ -265,7 +257,7 @@ msgstr ""
|
|||||||
"valgalternativer er «thumbnail-only» (viser miniatyrbilde av vinduet), «app-"
|
"valgalternativer er «thumbnail-only» (viser miniatyrbilde av vinduet), «app-"
|
||||||
"icon-only» (viser bare programikonet) og «both» (viser begge forannevnte)."
|
"icon-only» (viser bare programikonet) og «both» (viser begge forannevnte)."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
@ -274,30 +266,30 @@ msgstr ""
|
|||||||
"arbeidsområder som vises i programveksleren. I motsatt fall vises vinduer "
|
"arbeidsområder som vises i programveksleren. I motsatt fall vises vinduer "
|
||||||
"fra alle arbeidsområder."
|
"fra alle arbeidsområder."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Fest modal dialog til opphavsvinduet"
|
msgstr "Fest modal dialog til opphavsvinduet"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Denne nøkkelen overstyrer nøkkelen i org.gnome.mutter når GNOME Shell kjøres."
|
"Denne nøkkelen overstyrer nøkkelen i org.gnome.mutter når GNOME Shell kjøres."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Del opp skjermkantene i fliser når brukeren drar og slipper vinduer på dem"
|
"Del opp skjermkantene i fliser når brukeren drar og slipper vinduer på dem"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Arbeidsområder håndteres dynamisk"
|
msgstr "Arbeidsområder håndteres dynamisk"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Arbeidsområder vises kun på hovedskjerm"
|
msgstr "Arbeidsområder vises kun på hovedskjerm"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr "Utsett fokusendringer i musmodus til peker slutter å bevege seg"
|
msgstr "Utsett fokusendringer i musmodus til peker slutter å bevege seg"
|
||||||
|
|
||||||
@ -305,52 +297,51 @@ msgstr "Utsett fokusendringer i musmodus til peker slutter å bevege seg"
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Nettverkspålogging"
|
msgstr "Nettverkspålogging"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:117
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Det oppsto en feil ved lasting av brukervalgdialog for %s:"
|
msgstr "Det oppsto en feil ved lasting av brukervalgdialog for %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:149
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Utvidelser for GNOME Shell"
|
msgstr "Utvidelser for GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/networkAgent.js:145
|
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
#: ../js/gdm/authPrompt.js:448
|
#: ../js/gdm/authPrompt.js:447
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Neste"
|
msgstr "Neste"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Lås opp"
|
msgstr "Lås opp"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:214
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Logg inn"
|
msgstr "Logg inn"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:285
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Velg økt"
|
msgstr "Velg økt"
|
||||||
|
|
||||||
#. 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:435
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ikke listet?"
|
msgstr "Ikke listet?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:854
|
#: ../js/gdm/loginDialog.js:850
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(f.eks. bruker eller %s)"
|
msgstr "(f.eks. bruker eller %s)"
|
||||||
@ -358,12 +349,12 @@ msgstr "(f.eks. bruker eller %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Brukernavn: "
|
msgstr "Brukernavn: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1196
|
#: ../js/gdm/loginDialog.js:1184
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Innloggingsvindu"
|
msgstr "Innloggingsvindu"
|
||||||
|
|
||||||
@ -499,36 +490,16 @@ msgstr "Legg til i favoritter"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Vis detaljer"
|
msgstr "Vis detaljer"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:134
|
#: ../js/ui/appFavorites.js:132
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s ble lagt til i favoritter."
|
msgstr "%s ble lagt til i favoritter."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:168
|
#: ../js/ui/appFavorites.js:166
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s ble fjernet fra favoritter."
|
msgstr "%s ble fjernet fra favoritter."
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:59
|
|
||||||
msgid "Select Audio Device"
|
|
||||||
msgstr "Velg lydenhet"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:69
|
|
||||||
msgid "Sound Settings"
|
|
||||||
msgstr "Innstillinger for lyd"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:78
|
|
||||||
msgid "Headphones"
|
|
||||||
msgstr "Hodetelefoner"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:80
|
|
||||||
msgid "Headset"
|
|
||||||
msgstr "Headset"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Mikrofon"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Bytt bakgrunn …"
|
msgstr "Bytt bakgrunn …"
|
||||||
@ -537,12 +508,13 @@ msgstr "Bytt bakgrunn …"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Innstillinger for skjerm"
|
msgstr "Innstillinger for skjerm"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:371
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:366
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Innstillinger"
|
msgstr "Innstillinger"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:47
|
#: ../js/ui/calendar.js:55
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -552,96 +524,94 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:76
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:78
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "M"
|
msgstr "M"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:80
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "T"
|
msgstr "T"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:82
|
#: ../js/ui/calendar.js:90
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "O"
|
msgstr "O"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:92
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "T"
|
msgstr "T"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:94
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "F"
|
msgstr "F"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:96
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "L"
|
msgstr "L"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:416
|
#: ../js/ui/calendar.js:566
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Forrige måned"
|
msgstr "Forrige måned"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:426
|
#: ../js/ui/calendar.js:576
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Neste måned"
|
msgstr "Neste måned"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:579
|
#: ../js/ui/calendar.js:783
|
||||||
#, no-javascript-format
|
|
||||||
msgctxt "date day number format"
|
|
||||||
msgid "%d"
|
|
||||||
msgstr "%d"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:634
|
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Uke %V"
|
msgstr "Uke %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:695
|
#: ../js/ui/calendar.js:1188
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Hele dagen"
|
msgstr "Hele dagen"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:821
|
#: ../js/ui/calendar.js:1291
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Tøm seksjon"
|
||||||
|
|
||||||
|
#: ../js/ui/calendar.js:1518
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Hendelser"
|
msgstr "Hendelser"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:830
|
#: ../js/ui/calendar.js:1527
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A %B %d"
|
msgstr "%A %B %d"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:834
|
#: ../js/ui/calendar.js:1531
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A %B %d, %Y"
|
msgstr "%A %B %d, %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:919
|
#: ../js/ui/calendar.js:1616
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Varslinger"
|
msgstr "Varslinger"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1070
|
#: ../js/ui/calendar.js:1767
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Ingen varslinger"
|
msgstr "Ingen varslinger"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1073
|
#: ../js/ui/calendar.js:1770
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Ingen hendelser"
|
msgstr "Ingen hendelser"
|
||||||
|
|
||||||
@ -653,7 +623,7 @@ msgstr "Ekstern stasjon koblet til"
|
|||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "Ekstern stasjon koblet fra"
|
msgstr "Ekstern stasjon koblet fra"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:355
|
#: ../js/ui/components/autorunManager.js:354
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Åpne med %s"
|
msgstr "Åpne med %s"
|
||||||
@ -779,7 +749,7 @@ msgstr "Beklager, det virket ikke. Prøv igjen."
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/components/telepathyClient.js:760
|
#: ../js/ui/components/telepathyClient.js:759
|
||||||
#, javascript-format
|
#, javascript-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"
|
||||||
@ -966,11 +936,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:65
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Skjul statusområde"
|
msgstr "Skjul statusområde"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:106
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Statusikoner"
|
msgstr "Statusikoner"
|
||||||
|
|
||||||
@ -998,7 +968,7 @@ msgstr "Slått på"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Slått av"
|
msgstr "Slått av"
|
||||||
|
|
||||||
@ -1022,26 +992,10 @@ msgstr "Vis kildekode"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Nettside"
|
msgstr "Nettside"
|
||||||
|
|
||||||
#: ../js/ui/messageList.js:543
|
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Tøm seksjon"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformasjon"
|
msgstr "Systeminformasjon"
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:194
|
|
||||||
msgid "Unknown artist"
|
|
||||||
msgstr "Ukjent artist"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:195
|
|
||||||
msgid "Unknown title"
|
|
||||||
msgstr "Ukjent tittel"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:217
|
|
||||||
msgid "Media"
|
|
||||||
msgstr "Media"
|
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Angre"
|
msgstr "Angre"
|
||||||
@ -1058,22 +1012,17 @@ msgstr "Oversikt"
|
|||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Skriv for å søke …"
|
msgstr "Skriv for å søke …"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:358
|
#: ../js/ui/panel.js:352
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Avslutt"
|
msgstr "Avslutt"
|
||||||
|
|
||||||
#. 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:414
|
#: ../js/ui/panel.js:404
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktiviteter"
|
msgstr "Aktiviteter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:695
|
#: ../js/ui/panel.js:754
|
||||||
msgctxt "System menu in the top bar"
|
|
||||||
msgid "System"
|
|
||||||
msgstr "System"
|
|
||||||
|
|
||||||
#: ../js/ui/panel.js:807
|
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Topp-panel"
|
msgstr "Topp-panel"
|
||||||
|
|
||||||
@ -1086,15 +1035,15 @@ msgstr "Topp-panel"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:71
|
#: ../js/ui/runDialog.js:70
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Skriv inn en kommando"
|
msgstr "Skriv inn en kommando"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Lukk"
|
msgstr "Lukk"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:282
|
#: ../js/ui/runDialog.js:281
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "Starter på nytt …"
|
msgstr "Starter på nytt …"
|
||||||
|
|
||||||
@ -1118,7 +1067,7 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d ny varsling"
|
msgstr[0] "%d ny varsling"
|
||||||
msgstr[1] "%d nye varslinger"
|
msgstr[1] "%d nye varslinger"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:379
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:374
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Lås"
|
msgstr "Lås"
|
||||||
|
|
||||||
@ -1217,41 +1166,29 @@ msgstr "Høy kontrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Stor tekst"
|
msgstr "Stor tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:47
|
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
|
||||||
msgid "Bluetooth"
|
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
||||||
msgstr "Bluetooth"
|
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
||||||
|
#: ../js/ui/status/rfkill.js:117
|
||||||
|
msgid "Turn Off"
|
||||||
|
msgstr "Slå av"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:56
|
#: ../js/ui/status/bluetooth.js:54
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Bluetooth-innstillinger"
|
msgstr "Bluetooth-innstillinger"
|
||||||
|
|
||||||
#. Translators: this is the number of connected bluetooth devices
|
#. Translators: this is the number of connected bluetooth devices
|
||||||
#: ../js/ui/status/bluetooth.js:136
|
#: ../js/ui/status/bluetooth.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d Connected"
|
msgid "%d Connected"
|
||||||
msgid_plural "%d Connected"
|
msgid_plural "%d Connected"
|
||||||
msgstr[0] "%d koblet til"
|
msgstr[0] "%d koblet til"
|
||||||
msgstr[1] "%d koblet til"
|
msgstr[1] "%d koblet til"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:138
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
msgid "Off"
|
|
||||||
msgstr "Av"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:140
|
|
||||||
msgid "Not In Use"
|
msgid "Not In Use"
|
||||||
msgstr "Ikke i bruk"
|
msgstr "Ikke i bruk"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
|
|
||||||
msgid "Turn On"
|
|
||||||
msgstr "Slå på"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
|
|
||||||
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
|
||||||
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
|
||||||
#: ../js/ui/status/rfkill.js:117
|
|
||||||
msgid "Turn Off"
|
|
||||||
msgstr "Slå av"
|
|
||||||
|
|
||||||
#: ../js/ui/status/brightness.js:44
|
#: ../js/ui/status/brightness.js:44
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Lysstyrke"
|
msgstr "Lysstyrke"
|
||||||
@ -1260,48 +1197,30 @@ msgstr "Lysstyrke"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Vis tastaturutforming"
|
msgstr "Vis tastaturutforming"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Plassering slått på"
|
msgstr "Plassering slått på"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Slå av"
|
msgstr "Slå av"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:109
|
#: ../js/ui/status/location.js:73
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Innstillinger for personvern"
|
msgstr "Innstillinger for personvern"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:214
|
#: ../js/ui/status/location.js:176
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Plassering i bruk"
|
msgstr "Plassering i bruk"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:218
|
#: ../js/ui/status/location.js:180
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Plassering slått av"
|
msgstr "Plassering slått av"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:219
|
#: ../js/ui/status/location.js:181
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Slå på"
|
msgstr "Slå på"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:426
|
|
||||||
msgid "Deny Access"
|
|
||||||
msgstr "Nekt tilgang"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:429
|
|
||||||
msgid "Grant Access"
|
|
||||||
msgstr "Gi tilgang"
|
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
|
||||||
#: ../js/ui/status/location.js:435
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Give %s access to your location?"
|
|
||||||
msgstr "Gi %s tilgang til din plassering?"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
|
||||||
msgstr "Stedstilgang kan endres når som helst under innstillinger for personvern."
|
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<ukjent>"
|
msgstr "<ukjent>"
|
||||||
@ -1437,6 +1356,10 @@ msgstr "Velg nettverk"
|
|||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Innstillinger"
|
msgstr "Innstillinger"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1279
|
||||||
|
msgid "Turn On"
|
||||||
|
msgstr "Slå på"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: ../js/ui/status/network.js:1296
|
#: ../js/ui/status/network.js:1296
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@ -1486,36 +1409,31 @@ msgstr "Tilkobling mislyktes"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktivering av nettverkstilkobling mislyktes"
|
msgstr "Aktivering av nettverkstilkobling mislyktes"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:61
|
#: ../js/ui/status/power.js:49
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Innstillinger for strøm"
|
msgstr "Innstillinger for strøm"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:65
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Fullt oppladet"
|
msgstr "Fullt oppladet"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "Estimerer …"
|
msgstr "Estimerer …"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:98
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d %%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "%d:%02d gjenstår (%d %%)"
|
msgstr "%d:%02d gjenstår (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:103
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "%d:%02d til batteriet er fullt (%d %%)"
|
msgstr "%d:%02d til batteriet er fullt (%d%%)"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
|
||||||
#, javascript-format
|
|
||||||
msgid "%d %%"
|
|
||||||
msgstr "%d %%"
|
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
@ -1524,27 +1442,27 @@ msgstr "%d %%"
|
|||||||
msgid "Airplane Mode On"
|
msgid "Airplane Mode On"
|
||||||
msgstr "Flymodus er slått på"
|
msgstr "Flymodus er slått på"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:348
|
#: ../js/ui/status/system.js:343
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Bytt bruker"
|
msgstr "Bytt bruker"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:353
|
#: ../js/ui/status/system.js:348
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Logg ut"
|
msgstr "Logg ut"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:358
|
#: ../js/ui/status/system.js:353
|
||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "Innstillinger for konto"
|
msgstr "Innstillinger for konto"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:375
|
#: ../js/ui/status/system.js:370
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Lås for orientering"
|
msgstr "Lås for orientering"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:383
|
#: ../js/ui/status/system.js:378
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Hvilemodus"
|
msgstr "Hvilemodus"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:386
|
#: ../js/ui/status/system.js:381
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Slå av"
|
msgstr "Slå av"
|
||||||
|
|
||||||
@ -1556,6 +1474,10 @@ msgstr "Volum endret"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volum"
|
msgstr "Volum"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Logg inn som en annen bruker"
|
msgstr "Logg inn som en annen bruker"
|
||||||
@ -1640,19 +1562,19 @@ msgstr "Alltid på synlig arbeidsområde"
|
|||||||
|
|
||||||
#: ../js/ui/windowMenu.js:105
|
#: ../js/ui/windowMenu.js:105
|
||||||
msgid "Move to Workspace Left"
|
msgid "Move to Workspace Left"
|
||||||
msgstr "Flytt til arbeidsområdet til venstre"
|
msgstr "Gå til arbeidsområdet til venstre"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:110
|
#: ../js/ui/windowMenu.js:110
|
||||||
msgid "Move to Workspace Right"
|
msgid "Move to Workspace Right"
|
||||||
msgstr "Flytt til arbeidsområdet til høyre"
|
msgstr "Gå til arbeidsområdet til høyre"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:115
|
#: ../js/ui/windowMenu.js:115
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Flytt til arbeidsområdet over"
|
msgstr "Gå til arbeidsområdet over"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:120
|
#: ../js/ui/windowMenu.js:120
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Flytt til arbeidsområdet under"
|
msgstr "Gå til arbeidsområdet under"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:136
|
#: ../js/ui/windowMenu.js:136
|
||||||
msgid "Move to Monitor Up"
|
msgid "Move to Monitor Up"
|
||||||
@ -1676,7 +1598,7 @@ msgstr "Evolution kalender"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1685,51 +1607,51 @@ msgstr[1] "%u utganger"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u inngang"
|
msgstr[0] "%u inngang"
|
||||||
msgstr[1] "%u innganger"
|
msgstr[1] "%u innganger"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemlyder"
|
msgstr "Systemlyder"
|
||||||
|
|
||||||
#: ../src/main.c:381
|
#: ../src/main.c:373
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Vis versjon"
|
msgstr "Vis versjon"
|
||||||
|
|
||||||
#: ../src/main.c:387
|
#: ../src/main.c:379
|
||||||
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/main.c:393
|
#: ../src/main.c:385
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
|
msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
|
||||||
|
|
||||||
#: ../src/main.c:399
|
#: ../src/main.c:391
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Vis mulige modi"
|
msgstr "Vis mulige modi"
|
||||||
|
|
||||||
#: ../src/shell-app.c:246
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukjent"
|
msgstr "Ukjent"
|
||||||
|
|
||||||
#: ../src/shell-app.c:487
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Klarte ikke å starte «%s»"
|
msgstr "Klarte ikke å starte «%s»"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:730
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Passordene er ikke like."
|
msgstr "Passordene er ikke like."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:738
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "Passordet kan ikke være tomt"
|
msgstr "Passordet kan ikke være tomt"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:353
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Autentiseringsdialogen ble lukket av brukeren"
|
msgstr "Autentiseringsdialogen ble lukket av brukeren"
|
||||||
|
361
po/pl.po
361
po/pl.po
@ -4,16 +4,16 @@
|
|||||||
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
|
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
|
||||||
# gnomepl@aviary.pl
|
# gnomepl@aviary.pl
|
||||||
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
# Piotr Drąg <piotrdrag@gmail.com>, 2009-2016.
|
# Piotr Drąg <piotrdrag@gmail.com>, 2009-2015.
|
||||||
# Tomasz Dominikowski <dominikowski@gmail.com>, 2009.
|
# Tomasz Dominikowski <dominikowski@gmail.com>, 2009.
|
||||||
# Wojciech Szczęsny <wszczesny@aviary.pl>, 2013.
|
# Wojciech Szczęsny <wszczesny@aviary.pl>, 2013.
|
||||||
# Aviary.pl <gnomepl@aviary.pl>, 2009-2016.
|
# Aviary.pl <gnomepl@aviary.pl>, 2009-2015.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-03-10 17:25+0100\n"
|
"POT-Creation-Date: 2015-08-24 15:27+0200\n"
|
||||||
"PO-Revision-Date: 2016-03-10 17:27+0100\n"
|
"PO-Revision-Date: 2015-08-24 15:28+0200\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@ -49,6 +49,15 @@ msgstr "Wyświetlenie wszystkich programów"
|
|||||||
msgid "Open the application menu"
|
msgid "Open the application menu"
|
||||||
msgstr "Otwarcie menu programu"
|
msgstr "Otwarcie menu programu"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
|
msgid "GNOME Shell"
|
||||||
|
msgstr "Powłoka środowiska GNOME"
|
||||||
|
|
||||||
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
|
||||||
|
msgid "Window management and application launching"
|
||||||
|
msgstr "Zarządzanie oknami i uruchamianiem programów"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "Preferencje rozszerzenia powłoki GNOME"
|
msgstr "Preferencje rozszerzenia powłoki GNOME"
|
||||||
@ -57,13 +66,9 @@ msgstr "Preferencje rozszerzenia powłoki GNOME"
|
|||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
|
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "Powłoka środowiska GNOME"
|
msgstr "Powłoka środowiska GNOME (Wayland)"
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.desktop.in.in.h:2
|
|
||||||
msgid "Window management and application launching"
|
|
||||||
msgstr "Zarządzanie oknami i uruchamianiem programów"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
@ -166,99 +171,82 @@ msgid ""
|
|||||||
"'Remember Password' checkbox will be present. This key sets the default "
|
"'Remember Password' checkbox will be present. This key sets the default "
|
||||||
"state of the checkbox."
|
"state of the checkbox."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Powłoka poprosi o hasło podczas montowania zaszyfrowanego urządzenia lub "
|
"Powłoka zażąda hasła po zamontowaniu zaszyfrowanego urządzenia lub zdalnego "
|
||||||
"zdalnego systemu plików. Jeśli hasło może zostać zapisane do późniejszego "
|
"systemu plików. Jeśli hasło może zostać zapisane do późniejszego użycia, to "
|
||||||
"użycia, to obecne będzie pole wyboru „Zapamiętanie hasła”. Ten klucz ustawia "
|
"obecne będzie pole wyboru „Zapamiętanie hasła”. Ten klucz ustawia domyślną "
|
||||||
"domyślną wartość tego pola."
|
"wartość tego pola."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid ""
|
|
||||||
"Whether the default Bluetooth adapter had set up devices associated to it"
|
|
||||||
msgstr "Czy domyślny adapter Bluetooth ma powiązane ustawione urządzenia"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
|
||||||
msgid ""
|
|
||||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
|
|
||||||
"powered, or if there were devices set up associated with the default "
|
|
||||||
"adapter. This will be reset if the default adapter is ever seen not to have "
|
|
||||||
"devices associated to it."
|
|
||||||
msgstr ""
|
|
||||||
"Powłoka będzie wyświetlała menu Bluetooth tylko, jeśli adapter Bluetooth "
|
|
||||||
"jest włączony lub są ustawione urządzenia powiązane z domyślnym adapterem. "
|
|
||||||
"Zostanie to przywrócone, kiedy tylko domyślny adapter nie będzie miał "
|
|
||||||
"żadnych powiązanych urządzeń."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Wyświetlanie dnia tygodnia w kalendarzu"
|
msgstr "Wyświetlanie dnia tygodnia w kalendarzu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Jeśli jest ustawione na „true”, to wyświetla w kalendarzu dzień tygodnia w "
|
"Jeśli jest ustawione na „true”, to wyświetla w kalendarzu dzień tygodnia w "
|
||||||
"formacie ISO."
|
"formacie ISO."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Skrót do otwarcia menu programu"
|
msgstr "Skrót do otwarcia menu programu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Skrót do otwarcia menu programu."
|
msgstr "Skrót do otwarcia menu programu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Skrót do otwarcia widoku „Wyświetl programy”"
|
msgstr "Skrót do otwarcia widoku „Wyświetl programy”"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr "Skrót do otwarcia widoku „Wyświetl programy” ekranu podglądu."
|
msgstr "Skrót do otwarcia widoku „Wyświetl programy” ekranu podglądu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Skrót do otwarcia ekranu podglądu"
|
msgstr "Skrót do otwarcia ekranu podglądu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Skrót do otwarcia ekranu podglądu."
|
msgstr "Skrót do otwarcia ekranu podglądu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr "Skrót do przełączenia widoczności listy powiadomień"
|
msgstr "Skrót do przełączenia widoczności listy powiadomień"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr "Skrót do przełączenia widoczności listy powiadomień."
|
msgstr "Skrót do przełączenia widoczności listy powiadomień."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Skrót do aktywacji bieżącego powiadomienia"
|
msgstr "Skrót do aktywacji bieżącego powiadomienia"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Skrót do aktywacji bieżącego powiadomienia."
|
msgstr "Skrót do aktywacji bieżącego powiadomienia."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Skrót wstrzymujący i wznawiający wszystkie działające klatki pośrednie (do "
|
"Skrót wstrzymujący i wznawiający wszystkie działające klatki pośrednie (do "
|
||||||
"celów debugowania)"
|
"celów debugowania)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Której klawiatury używać"
|
msgstr "Której klawiatury używać"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Typ używanej klawiatury."
|
msgstr "Typ używanej klawiatury."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Ograniczenie przełącznika do bieżącego obszaru roboczego."
|
msgstr "Ograniczenie przełącznika do bieżącego obszaru roboczego."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
@ -267,11 +255,11 @@ msgstr ""
|
|||||||
"obszarze roboczym są wyświetlane w przełączniku. W przeciwnym przypadku "
|
"obszarze roboczym są wyświetlane w przełączniku. W przeciwnym przypadku "
|
||||||
"wszystkie programy są załączone."
|
"wszystkie programy są załączone."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "Tryb ikon programów."
|
msgstr "Tryb ikon programów."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
||||||
@ -281,7 +269,7 @@ msgstr ""
|
|||||||
"„thumbnail-only” (wyświetla miniaturę okna), „app-icon-only” (wyświetla "
|
"„thumbnail-only” (wyświetla miniaturę okna), „app-icon-only” (wyświetla "
|
||||||
"tylko ikonę programu) lub „both” (wyświetla oba)."
|
"tylko ikonę programu) lub „both” (wyświetla oba)."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
@ -290,32 +278,32 @@ msgstr ""
|
|||||||
"wyświetlane w przełączniku. W przeciwnym przypadku wszystkie okna są "
|
"wyświetlane w przełączniku. W przeciwnym przypadku wszystkie okna są "
|
||||||
"załączone."
|
"załączone."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Dołączanie modalnych okien dialogowych do okien nadrzędnych"
|
msgstr "Dołączanie modalnych okien dialogowych do okien nadrzędnych"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ten klucz zastępuje klucz w „org.gnome.mutter”, kiedy uruchomiona jest "
|
"Ten klucz zastępuje klucz w „org.gnome.mutter”, kiedy uruchomiona jest "
|
||||||
"powłoka GNOME."
|
"powłoka GNOME."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Włączenie kafelkowania przy krawędziach podczas przenoszenia okien do "
|
"Włączenie kafelkowania przy krawędziach podczas przenoszenia okien do "
|
||||||
"krawędzi ekranu"
|
"krawędzi ekranu"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "Dynamiczne zarządzanie obszarami roboczymi"
|
msgstr "Dynamiczne zarządzanie obszarami roboczymi"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Obszary robocze tylko na pierwszym monitorze"
|
msgstr "Obszary robocze tylko na pierwszym monitorze"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Opóźnienie zmiany aktywności w trybie myszy do momentu, w którym kursor się "
|
"Opóźnienie zmiany aktywności w trybie myszy do momentu, w którym kursor się "
|
||||||
@ -325,53 +313,52 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Logowanie do sieci"
|
msgstr "Logowanie do sieci"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:121
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wystąpił błąd podczas wczytywania okna preferencji dla rozszerzenia „%s”:"
|
"Wystąpił błąd podczas wczytywania okna preferencji dla rozszerzenia „%s”:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Rozszerzenia powłoki GNOME"
|
msgstr "Rozszerzenia powłoki GNOME"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||||
#: ../js/ui/components/networkAgent.js:145
|
|
||||||
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:452
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:916
|
#: ../js/ui/status/network.js:916
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
#: ../js/gdm/authPrompt.js:448
|
#: ../js/gdm/authPrompt.js:435
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Dalej"
|
msgstr "Dalej"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Odblokuj"
|
msgstr "Odblokuj"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:214
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Zaloguj"
|
msgstr "Zaloguj"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:285
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Wybór sesji"
|
msgstr "Wybór sesji"
|
||||||
|
|
||||||
#. 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:435
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Inny użytkownik?"
|
msgstr "Inny użytkownik?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
#. Translators: this message is shown below the username entry field
|
||||||
#. to clue the user in on how to login to the local network realm
|
#. to clue the user in on how to login to the local network realm
|
||||||
#: ../js/gdm/loginDialog.js:854
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(np. użytkownik lub %s)"
|
msgstr "(np. użytkownik lub %s)"
|
||||||
@ -379,12 +366,12 @@ msgstr "(np. użytkownik lub %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nazwa użytkownika: "
|
msgstr "Nazwa użytkownika: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1196
|
#: ../js/gdm/loginDialog.js:1181
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Okno logowania"
|
msgstr "Okno logowania"
|
||||||
|
|
||||||
@ -520,36 +507,16 @@ msgstr "Dodaj do ulubionych"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Wyświetl szczegóły"
|
msgstr "Wyświetl szczegóły"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:134
|
#: ../js/ui/appFavorites.js:132
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "Program „%s” został dodany do ulubionych."
|
msgstr "Program „%s” został dodany do ulubionych."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:168
|
#: ../js/ui/appFavorites.js:166
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "Program „%s” został usunięty z ulubionych."
|
msgstr "Program „%s” został usunięty z ulubionych."
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:59
|
|
||||||
msgid "Select Audio Device"
|
|
||||||
msgstr "Wybór urządzenia dźwiękowego"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:69
|
|
||||||
msgid "Sound Settings"
|
|
||||||
msgstr "Ustawienia dźwięku"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:78
|
|
||||||
msgid "Headphones"
|
|
||||||
msgstr "Słuchawki"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:80
|
|
||||||
msgid "Headset"
|
|
||||||
msgstr "Słuchawki z mikrofonem"
|
|
||||||
|
|
||||||
#: ../js/ui/audioDeviceSelection.js:82 ../js/ui/status/volume.js:213
|
|
||||||
msgid "Microphone"
|
|
||||||
msgstr "Mikrofon"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Zmień tło…"
|
msgstr "Zmień tło…"
|
||||||
@ -558,12 +525,13 @@ msgstr "Zmień tło…"
|
|||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr "Ustawienia ekranu"
|
msgstr "Ustawienia ekranu"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:366
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Ustawienia"
|
msgstr "Ustawienia"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||||
#: ../js/ui/calendar.js:47
|
#: ../js/ui/calendar.js:55
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
msgid "06"
|
msgid "06"
|
||||||
msgstr "06"
|
msgstr "06"
|
||||||
@ -573,96 +541,94 @@ msgstr "06"
|
|||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:76
|
#: ../js/ui/calendar.js:84
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "N"
|
msgstr "N"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday
|
||||||
#: ../js/ui/calendar.js:78
|
#: ../js/ui/calendar.js:86
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "P"
|
msgstr "P"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday
|
||||||
#: ../js/ui/calendar.js:80
|
#: ../js/ui/calendar.js:88
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "W"
|
msgstr "W"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday
|
||||||
#: ../js/ui/calendar.js:82
|
#: ../js/ui/calendar.js:90
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "Ś"
|
msgstr "Ś"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday
|
||||||
#: ../js/ui/calendar.js:84
|
#: ../js/ui/calendar.js:92
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "C"
|
msgstr "C"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday
|
||||||
#: ../js/ui/calendar.js:86
|
#: ../js/ui/calendar.js:94
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "P"
|
msgstr "P"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday
|
||||||
#: ../js/ui/calendar.js:88
|
#: ../js/ui/calendar.js:96
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:416
|
#: ../js/ui/calendar.js:566
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Poprzedni miesiąc"
|
msgstr "Poprzedni miesiąc"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:426
|
#: ../js/ui/calendar.js:576
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Następny miesiąc"
|
msgstr "Następny miesiąc"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:579
|
#: ../js/ui/calendar.js:783
|
||||||
#, no-javascript-format
|
|
||||||
msgctxt "date day number format"
|
|
||||||
msgid "%d"
|
|
||||||
msgstr "%d"
|
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:634
|
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "%V. tydzień"
|
msgstr "%V tydzień"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/calendar.js:695
|
#: ../js/ui/calendar.js:1188
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Cały dzień"
|
msgstr "Cały dzień"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:821
|
#: ../js/ui/calendar.js:1291
|
||||||
|
msgid "Clear section"
|
||||||
|
msgstr "Wyczyść"
|
||||||
|
|
||||||
|
#: ../js/ui/calendar.js:1518
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Wydarzenia"
|
msgstr "Wydarzenia"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:830
|
#: ../js/ui/calendar.js:1527
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %e %B"
|
msgstr "%A, %e %B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:834
|
#: ../js/ui/calendar.js:1531
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %e %B %Y"
|
msgstr "%A, %e %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:919
|
#: ../js/ui/calendar.js:1616
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Powiadomienia"
|
msgstr "Powiadomienia"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1070
|
#: ../js/ui/calendar.js:1767
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Brak powiadomień"
|
msgstr "Brak powiadomień"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1073
|
#: ../js/ui/calendar.js:1770
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Brak wydarzeń"
|
msgstr "Brak wydarzeń"
|
||||||
|
|
||||||
@ -674,7 +640,7 @@ msgstr "Podłączono dysk zewnętrzny"
|
|||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "Odłączono dysk zewnętrzny"
|
msgstr "Odłączono dysk zewnętrzny"
|
||||||
|
|
||||||
#: ../js/ui/components/autorunManager.js:355
|
#: ../js/ui/components/autorunManager.js:354
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Otwórz za pomocą „%s”"
|
msgstr "Otwórz za pomocą „%s”"
|
||||||
@ -993,11 +959,11 @@ msgid "Keyboard"
|
|||||||
msgstr "Klawiatura"
|
msgstr "Klawiatura"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb
|
#. translators: 'Hide' is a verb
|
||||||
#: ../js/ui/legacyTray.js:65
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Ukryj obszar powiadamiania"
|
msgstr "Ukryj obszar powiadamiania"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:106
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Ikony stanu"
|
msgstr "Ikony stanu"
|
||||||
|
|
||||||
@ -1025,7 +991,7 @@ msgstr "Włączone"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
|
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Wyłączone"
|
msgstr "Wyłączone"
|
||||||
|
|
||||||
@ -1049,26 +1015,10 @@ msgstr "Wyświetl źródło"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Strona WWW"
|
msgstr "Strona WWW"
|
||||||
|
|
||||||
#: ../js/ui/messageList.js:543
|
|
||||||
msgid "Clear section"
|
|
||||||
msgstr "Wyczyść"
|
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1486
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informacje systemowe"
|
msgstr "Informacje systemowe"
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:194
|
|
||||||
msgid "Unknown artist"
|
|
||||||
msgstr "Nieznany wykonawca"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:195
|
|
||||||
msgid "Unknown title"
|
|
||||||
msgstr "Nieznany tytuł"
|
|
||||||
|
|
||||||
#: ../js/ui/mpris.js:217
|
|
||||||
msgid "Media"
|
|
||||||
msgstr "Multimedia"
|
|
||||||
|
|
||||||
#: ../js/ui/overview.js:84
|
#: ../js/ui/overview.js:84
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Cofnij"
|
msgstr "Cofnij"
|
||||||
@ -1085,22 +1035,17 @@ msgstr "Podgląd"
|
|||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Wyszukiwanie…"
|
msgstr "Wyszukiwanie…"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:358
|
#: ../js/ui/panel.js:352
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Zakończ"
|
msgstr "Zakończ"
|
||||||
|
|
||||||
#. 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:414
|
#: ../js/ui/panel.js:404
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Podgląd"
|
msgstr "Podgląd"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:695
|
#: ../js/ui/panel.js:754
|
||||||
msgctxt "System menu in the top bar"
|
|
||||||
msgid "System"
|
|
||||||
msgstr "Menu systemowe"
|
|
||||||
|
|
||||||
#: ../js/ui/panel.js:807
|
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Górny pasek"
|
msgstr "Górny pasek"
|
||||||
|
|
||||||
@ -1113,15 +1058,15 @@ msgstr "Górny pasek"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:71
|
#: ../js/ui/runDialog.js:70
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Proszę wprowadzić polecenie"
|
msgstr "Proszę wprowadzić polecenie"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zamknij"
|
msgstr "Zamknij"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:282
|
#: ../js/ui/runDialog.js:281
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "Ponowne uruchamianie…"
|
msgstr "Ponowne uruchamianie…"
|
||||||
|
|
||||||
@ -1246,16 +1191,19 @@ msgstr "Wysoki kontrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Duży tekst"
|
msgstr "Duży tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:47
|
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
|
||||||
msgid "Bluetooth"
|
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
||||||
msgstr "Bluetooth"
|
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
||||||
|
#: ../js/ui/status/rfkill.js:117
|
||||||
|
msgid "Turn Off"
|
||||||
|
msgstr "Wyłącz"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:56
|
#: ../js/ui/status/bluetooth.js:54
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Ustawienia Bluetooth"
|
msgstr "Ustawienia Bluetooth"
|
||||||
|
|
||||||
#. Translators: this is the number of connected bluetooth devices
|
#. Translators: this is the number of connected bluetooth devices
|
||||||
#: ../js/ui/status/bluetooth.js:136
|
#: ../js/ui/status/bluetooth.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d Connected"
|
msgid "%d Connected"
|
||||||
msgid_plural "%d Connected"
|
msgid_plural "%d Connected"
|
||||||
@ -1263,25 +1211,10 @@ msgstr[0] "%d połączone urządzenie"
|
|||||||
msgstr[1] "%d połączone urządzenia"
|
msgstr[1] "%d połączone urządzenia"
|
||||||
msgstr[2] "%d połączonych urządzeń"
|
msgstr[2] "%d połączonych urządzeń"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:138
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
msgid "Off"
|
|
||||||
msgstr "Wyłączono"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:140
|
|
||||||
msgid "Not In Use"
|
msgid "Not In Use"
|
||||||
msgstr "Nieużywane"
|
msgstr "Nieużywane"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
|
|
||||||
msgid "Turn On"
|
|
||||||
msgstr "Włącz"
|
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
|
|
||||||
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
|
|
||||||
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
|
|
||||||
#: ../js/ui/status/rfkill.js:117
|
|
||||||
msgid "Turn Off"
|
|
||||||
msgstr "Wyłącz"
|
|
||||||
|
|
||||||
#: ../js/ui/status/brightness.js:44
|
#: ../js/ui/status/brightness.js:44
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Jasność"
|
msgstr "Jasność"
|
||||||
@ -1290,49 +1223,30 @@ msgstr "Jasność"
|
|||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Wyświetl układ klawiatury"
|
msgstr "Wyświetl układ klawiatury"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:107 ../js/ui/status/location.js:215
|
#: ../js/ui/status/location.js:71 ../js/ui/status/location.js:177
|
||||||
msgid "Location Enabled"
|
msgid "Location Enabled"
|
||||||
msgstr "Włączono ustalanie położenia"
|
msgstr "Włączono położenie"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:108 ../js/ui/status/location.js:216
|
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Wyłącz"
|
msgstr "Wyłącz"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:109
|
#: ../js/ui/status/location.js:73
|
||||||
msgid "Privacy Settings"
|
msgid "Privacy Settings"
|
||||||
msgstr "Ustawienia prywatności"
|
msgstr "Ustawienia prywatności"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:214
|
#: ../js/ui/status/location.js:176
|
||||||
msgid "Location In Use"
|
msgid "Location In Use"
|
||||||
msgstr "Ustalanie położenia jest używane"
|
msgstr "Położenie jest używane"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:218
|
#: ../js/ui/status/location.js:180
|
||||||
msgid "Location Disabled"
|
msgid "Location Disabled"
|
||||||
msgstr "Wyłączono ustalanie położenia"
|
msgstr "Wyłączono położenie"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:219
|
#: ../js/ui/status/location.js:181
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Włącz"
|
msgstr "Włącz"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:426
|
|
||||||
msgid "Deny Access"
|
|
||||||
msgstr "Odmów dostępu"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:429
|
|
||||||
msgid "Grant Access"
|
|
||||||
msgstr "Udziel dostępu"
|
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
|
||||||
#: ../js/ui/status/location.js:435
|
|
||||||
#, javascript-format
|
|
||||||
msgid "Give %s access to your location?"
|
|
||||||
msgstr "Udzielić programowi „%s” dostępu do położenia użytkownika?"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:437
|
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
|
||||||
msgstr ""
|
|
||||||
"W każdej chwili można zmienić dostęp do położenia w ustawieniach prywatności."
|
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:101
|
#: ../js/ui/status/network.js:101
|
||||||
msgid "<unknown>"
|
msgid "<unknown>"
|
||||||
msgstr "<nieznane>"
|
msgstr "<nieznane>"
|
||||||
@ -1468,6 +1382,10 @@ msgstr "Wybierz sieć"
|
|||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Ustawienia sieci Wi-Fi"
|
msgstr "Ustawienia sieci Wi-Fi"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1279
|
||||||
|
msgid "Turn On"
|
||||||
|
msgstr "Włącz"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: ../js/ui/status/network.js:1296
|
#: ../js/ui/status/network.js:1296
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@ -1517,37 +1435,32 @@ msgstr "Połączenie się nie powiodło"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktywacja połączenia sieciowego się nie powiodła"
|
msgstr "Aktywacja połączenia sieciowego się nie powiodła"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:61
|
#: ../js/ui/status/power.js:49
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Ustawienia zasilania"
|
msgstr "Ustawienia zasilania"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:65
|
||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Naładowane"
|
msgstr "Naładowane"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "Obliczanie…"
|
msgstr "Obliczanie…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||||
#: ../js/ui/status/power.js:98
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d %%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "Pozostało: %d∶%02d (%d%%)"
|
msgstr "Pozostało: %d∶%02d (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: ../js/ui/status/power.js:103
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "Do naładowania: %d∶%02d (%d%%)"
|
msgstr "Do naładowania: %d∶%02d (%d%%)"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
|
|
||||||
#, javascript-format
|
|
||||||
msgid "%d %%"
|
|
||||||
msgstr "%d%%"
|
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
#. The menu only appears when airplane mode is on, so just
|
||||||
#. statically build it as if it was on, rather than dynamically
|
#. statically build it as if it was on, rather than dynamically
|
||||||
#. changing the menu contents.
|
#. changing the menu contents.
|
||||||
@ -1587,6 +1500,10 @@ msgstr "Zmieniono głośność"
|
|||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Głośność"
|
msgstr "Głośność"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:213
|
||||||
|
msgid "Microphone"
|
||||||
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/unlockDialog.js:67
|
#: ../js/ui/unlockDialog.js:67
|
||||||
msgid "Log in as another user"
|
msgid "Log in as another user"
|
||||||
msgstr "Zaloguj jako inny użytkownik"
|
msgstr "Zaloguj jako inny użytkownik"
|
||||||
@ -1708,7 +1625,7 @@ msgstr "Kalendarz programu Evolution"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1835
|
#: ../src/gvc/gvc-mixer-control.c:1837
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1718,7 +1635,7 @@ msgstr[2] "%u wyjść"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1845
|
#: ../src/gvc/gvc-mixer-control.c:1847
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -1726,44 +1643,44 @@ msgstr[0] "%u wejście"
|
|||||||
msgstr[1] "%u wejścia"
|
msgstr[1] "%u wejścia"
|
||||||
msgstr[2] "%u wejść"
|
msgstr[2] "%u wejść"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:2371
|
#: ../src/gvc/gvc-mixer-control.c:2373
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Dźwięki systemowe"
|
msgstr "Dźwięki systemowe"
|
||||||
|
|
||||||
#: ../src/main.c:381
|
#: ../src/main.c:373
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Wyświetla wersję"
|
msgstr "Wyświetla wersję"
|
||||||
|
|
||||||
#: ../src/main.c:387
|
#: ../src/main.c:379
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Tryb używany przez GDM dla ekranu logowania"
|
msgstr "Tryb używany przez GDM dla ekranu logowania"
|
||||||
|
|
||||||
#: ../src/main.c:393
|
#: ../src/main.c:385
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania"
|
msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania"
|
||||||
|
|
||||||
#: ../src/main.c:399
|
#: ../src/main.c:391
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Wyświetla listę możliwych trybów"
|
msgstr "Wyświetla listę możliwych trybów"
|
||||||
|
|
||||||
#: ../src/shell-app.c:246
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nieznany"
|
msgstr "Nieznany"
|
||||||
|
|
||||||
#: ../src/shell-app.c:487
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Uruchomienie „%s” się nie powiodło"
|
msgstr "Uruchomienie „%s” się nie powiodło"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:730
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Hasła się nie zgadzają."
|
msgstr "Hasła się nie zgadzają."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:738
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "Hasło nie może być puste"
|
msgstr "Hasło nie może być puste"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:353
|
#: ../src/shell-polkit-authentication-agent.c:346
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika"
|
msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika"
|
||||||
|
707
po/pt_BR.po
707
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
915
po/sr@latin.po
915
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
792
po/zh_CN.po
792
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
538
po/zh_TW.po
538
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -41,6 +41,8 @@
|
|||||||
#define N_(x) x
|
#define N_(x) x
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CALENDAR_SOURCES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CALENDAR_TYPE_SOURCES, CalendarSourcesPrivate))
|
||||||
|
|
||||||
typedef struct _ClientData ClientData;
|
typedef struct _ClientData ClientData;
|
||||||
typedef struct _CalendarSourceData CalendarSourceData;
|
typedef struct _CalendarSourceData CalendarSourceData;
|
||||||
|
|
||||||
@ -64,14 +66,6 @@ struct _CalendarSourceData
|
|||||||
guint loaded : 1;
|
guint loaded : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate;
|
|
||||||
|
|
||||||
struct _CalendarSources
|
|
||||||
{
|
|
||||||
GObject parent;
|
|
||||||
CalendarSourcesPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _CalendarSourcesPrivate
|
struct _CalendarSourcesPrivate
|
||||||
{
|
{
|
||||||
ESourceRegistry *registry;
|
ESourceRegistry *registry;
|
||||||
@ -83,8 +77,8 @@ struct _CalendarSourcesPrivate
|
|||||||
CalendarSourceData task_sources;
|
CalendarSourceData task_sources;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (CalendarSources, calendar_sources, G_TYPE_OBJECT)
|
static void calendar_sources_class_init (CalendarSourcesClass *klass);
|
||||||
|
static void calendar_sources_init (CalendarSources *sources);
|
||||||
static void calendar_sources_finalize (GObject *object);
|
static void calendar_sources_finalize (GObject *object);
|
||||||
|
|
||||||
static void backend_died_cb (EClient *client, CalendarSourceData *source_data);
|
static void backend_died_cb (EClient *client, CalendarSourceData *source_data);
|
||||||
@ -114,6 +108,34 @@ client_data_free (ClientData *data)
|
|||||||
g_slice_free (ClientData, data);
|
g_slice_free (ClientData, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GType
|
||||||
|
calendar_sources_get_type (void)
|
||||||
|
{
|
||||||
|
static GType sources_type = 0;
|
||||||
|
|
||||||
|
if (!sources_type)
|
||||||
|
{
|
||||||
|
static const GTypeInfo sources_info =
|
||||||
|
{
|
||||||
|
sizeof (CalendarSourcesClass),
|
||||||
|
NULL, /* base_init */
|
||||||
|
NULL, /* base_finalize */
|
||||||
|
(GClassInitFunc) calendar_sources_class_init,
|
||||||
|
NULL, /* class_finalize */
|
||||||
|
NULL, /* class_data */
|
||||||
|
sizeof (CalendarSources),
|
||||||
|
0, /* n_preallocs */
|
||||||
|
(GInstanceInitFunc) calendar_sources_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
sources_type = g_type_register_static (G_TYPE_OBJECT,
|
||||||
|
"CalendarSources",
|
||||||
|
&sources_info, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sources_type;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calendar_sources_class_init (CalendarSourcesClass *klass)
|
calendar_sources_class_init (CalendarSourcesClass *klass)
|
||||||
{
|
{
|
||||||
@ -123,11 +145,14 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
|
|||||||
|
|
||||||
gobject_class->finalize = calendar_sources_finalize;
|
gobject_class->finalize = calendar_sources_finalize;
|
||||||
|
|
||||||
|
g_type_class_add_private (klass, sizeof (CalendarSourcesPrivate));
|
||||||
|
|
||||||
signals [APPOINTMENT_SOURCES_CHANGED] =
|
signals [APPOINTMENT_SOURCES_CHANGED] =
|
||||||
g_signal_new ("appointment-sources-changed",
|
g_signal_new ("appointment-sources-changed",
|
||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
G_STRUCT_OFFSET (CalendarSourcesClass,
|
||||||
|
appointment_sources_changed),
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
@ -138,7 +163,8 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
|
|||||||
g_signal_new ("task-sources-changed",
|
g_signal_new ("task-sources-changed",
|
||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
G_STRUCT_OFFSET (CalendarSourcesClass,
|
||||||
|
task_sources_changed),
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
@ -153,7 +179,7 @@ calendar_sources_init (CalendarSources *sources)
|
|||||||
GDBusConnection *session_bus;
|
GDBusConnection *session_bus;
|
||||||
GVariant *result;
|
GVariant *result;
|
||||||
|
|
||||||
sources->priv = calendar_sources_get_instance_private (sources);
|
sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources);
|
||||||
|
|
||||||
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
|
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
|
||||||
(and other library calls that eventually call g_dbus_proxy_new[_sync]())
|
(and other library calls that eventually call g_dbus_proxy_new[_sync]())
|
||||||
|
@ -28,10 +28,33 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ())
|
#define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ())
|
||||||
G_DECLARE_FINAL_TYPE (CalendarSources, calendar_sources,
|
#define CALENDAR_SOURCES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CALENDAR_TYPE_SOURCES, CalendarSources))
|
||||||
CALENDAR, SOURCES, GObject)
|
#define CALENDAR_SOURCES_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CALENDAR_TYPE_SOURCES, CalendarSourcesClass))
|
||||||
|
#define CALENDAR_IS_SOURCES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CALENDAR_TYPE_SOURCES))
|
||||||
|
#define CALENDAR_IS_SOURCES_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CALENDAR_TYPE_SOURCES))
|
||||||
|
#define CALENDAR_SOURCES_GET_CLASS(o)(G_TYPE_INSTANCE_GET_CLASS ((o), CALENDAR_TYPE_SOURCES, CalendarSourcesClass))
|
||||||
|
|
||||||
|
typedef struct _CalendarSources CalendarSources;
|
||||||
|
typedef struct _CalendarSourcesClass CalendarSourcesClass;
|
||||||
|
typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate;
|
||||||
|
|
||||||
|
struct _CalendarSources
|
||||||
|
{
|
||||||
|
GObject parent;
|
||||||
|
CalendarSourcesPrivate *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _CalendarSourcesClass
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;
|
||||||
|
|
||||||
|
void (* appointment_sources_changed) (CalendarSources *sources);
|
||||||
|
void (* task_sources_changed) (CalendarSources *sources);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GType calendar_sources_get_type (void) G_GNUC_CONST;
|
||||||
CalendarSources *calendar_sources_get (void);
|
CalendarSources *calendar_sources_get (void);
|
||||||
GList *calendar_sources_get_appointment_clients (CalendarSources *sources);
|
GList *calendar_sources_get_appointment_clients (CalendarSources *sources);
|
||||||
GList *calendar_sources_get_task_clients (CalendarSources *sources);
|
GList *calendar_sources_get_task_clients (CalendarSources *sources);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user