Compare commits
81 Commits
Author | SHA1 | Date | |
---|---|---|---|
ab29ce872a | |||
57beb0ade1 | |||
e3d0b6f90f | |||
e2aa954cb5 | |||
05c285a945 | |||
27b34992c6 | |||
4886238761 | |||
42d46aed90 | |||
a622aba7eb | |||
831099cca5 | |||
b8a54faf94 | |||
80ff6ff797 | |||
2f27b94757 | |||
b2f33e2895 | |||
d1d4142052 | |||
46caf6d673 | |||
2864c360bc | |||
e5dfc6323a | |||
5bc042ba6f | |||
c63fe5ee24 | |||
ee6bc33cea | |||
5c730dc53d | |||
5a3de8d663 | |||
fad88dd517 | |||
39dd24310d | |||
b13809d0c7 | |||
87559414a3 | |||
b5b5759829 | |||
d254e2e1f2 | |||
458b0b22fc | |||
cd30128af8 | |||
d61cdd8cea | |||
0d0e545979 | |||
6c5e96c33a | |||
bae2359b54 | |||
8cbbb456f0 | |||
dfd39461cf | |||
60d8683ae7 | |||
f2cc5cf152 | |||
d4a26fbf4b | |||
025784fd83 | |||
4e89a5edde | |||
b3936ecadf | |||
2c9e6bb589 | |||
73261a4a66 | |||
3d0dd38045 | |||
8bcbf3030f | |||
1bc7edc5d8 | |||
0673720db9 | |||
730a0d4c5a | |||
9147dee0de | |||
12746a1949 | |||
bdd65fe755 | |||
21e2280825 | |||
e9d2a429eb | |||
b67dfb9edf | |||
55308917f9 | |||
1b64b09532 | |||
74dd298891 | |||
5a85fc0e55 | |||
26991988cb | |||
15563444cf | |||
3bcdba6e1d | |||
ef56a78544 | |||
049a561466 | |||
b40b19997a | |||
46505a8314 | |||
78fb102002 | |||
c6e924f788 | |||
f6508b51a2 | |||
b0ae596de8 | |||
1d311e7916 | |||
0c19f71c96 | |||
8d6ab32b9a | |||
6c1a2d531f | |||
c6e9f9742b | |||
d23aaf3cea | |||
017fde91ad | |||
31ffc5a85d | |||
62b65a25d8 | |||
882fe48d80 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -18,6 +18,8 @@ config
|
|||||||
configure
|
configure
|
||||||
data/gnome-shell.desktop
|
data/gnome-shell.desktop
|
||||||
data/gnome-shell.desktop.in
|
data/gnome-shell.desktop.in
|
||||||
|
data/gnome-shell-extension-prefs.desktop
|
||||||
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
data/gschemas.compiled
|
data/gschemas.compiled
|
||||||
data/org.gnome.shell.gschema.xml
|
data/org.gnome.shell.gschema.xml
|
||||||
data/org.gnome.shell.gschema.valid
|
data/org.gnome.shell.gschema.valid
|
||||||
@ -62,6 +64,7 @@ src/calendar-server/org.gnome.Shell.CalendarServer.service
|
|||||||
src/gnome-shell
|
src/gnome-shell
|
||||||
src/gnome-shell-calendar-server
|
src/gnome-shell-calendar-server
|
||||||
src/gnome-shell-extension-tool
|
src/gnome-shell-extension-tool
|
||||||
|
src/gnome-shell-extension-prefs
|
||||||
src/gnome-shell-hotplug-sniffer
|
src/gnome-shell-hotplug-sniffer
|
||||||
src/gnome-shell-jhbuild
|
src/gnome-shell-jhbuild
|
||||||
src/gnome-shell-perf-helper
|
src/gnome-shell-perf-helper
|
||||||
|
49
NEWS
49
NEWS
@ -1,3 +1,52 @@
|
|||||||
|
3.3.5
|
||||||
|
=====
|
||||||
|
|
||||||
|
* Extension system: [Jasper; #668429]
|
||||||
|
http://blog.mecheye.net/2012/02/more-extension-api-breaks/
|
||||||
|
- Add a 'gnome-shell-extension-prefs' application for displaying extension
|
||||||
|
preferences as provided by the extension in a prefs.js file.
|
||||||
|
- Allow launching gnome-shell-extension-prefs from extensions.gnome.org
|
||||||
|
throuhg the browser plugin.
|
||||||
|
- Add ExtensionUtils.getCurrentExtension() for an extension to get a
|
||||||
|
handle to an extension object, to get local imports or paths.
|
||||||
|
- Add an onshellrestart callback to the browser plugin [Jasper; #668517]
|
||||||
|
* Screenshots:
|
||||||
|
- Move the screenshot "flash" to the shell [Cosimo; #668618]
|
||||||
|
- Move saving screenshots to a thread [Adel Gadllah; #652952]
|
||||||
|
- Correctly screenshot rounded decorations [Jasper; #662486]
|
||||||
|
* Screen recorder:
|
||||||
|
- Change the default pipeline to favor speed over quality [Owen; #669066]
|
||||||
|
- Drop frames to keep from running the user out of memory [Owen; #669066]
|
||||||
|
* Work around a slow implementation of glReadPixels() in the Intel drivers,
|
||||||
|
improving performance for screenshots and the screen recorder.
|
||||||
|
[Owen; #669065]
|
||||||
|
* Use Keywords: field in desktop files when search for applications
|
||||||
|
[Florian; #609702]
|
||||||
|
* Strip debian- when matching desktop file names [Jasper; #665647]
|
||||||
|
* Fix up various problems from CSS background size-addition
|
||||||
|
[Florian, Jasper; #668430, #633462]
|
||||||
|
* UI tweaks and behavior fixes
|
||||||
|
[Florian, Giovanni, Stefano; #643867, #666197, #664622]
|
||||||
|
* Some improvements to exported accessibility information [Alejando; #667376]
|
||||||
|
* Don't show contacts without IM information as offline [Florian; #662685]
|
||||||
|
* Don't change status from hidden to extended_away when going idle
|
||||||
|
[Florian; #642408]
|
||||||
|
* Cleanups [Emmanuele, Jasper; #662152, #669239]
|
||||||
|
* Misc bug fixes [Cosimo, Dan, Florian, Jasper, Rui, Stefano;
|
||||||
|
#633462, #643867, #662213, #662386, #662747, #665000, #665017, #665322,
|
||||||
|
#667371, #667860, #668020, #668517, #668541, #669236]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Emmanuele Bassi, Giovanni Campagna, Cosimo Cecchi, Stefano Facchini,
|
||||||
|
Rui Matos, Florian Müllner, Alejandro Piñeiro, Jasper St. Pierre,
|
||||||
|
Owen Taylor, Dan Winship
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Daniel Mustieles [es], Timo Jyrinki [fi], Seán de Búrca [ga],
|
||||||
|
Fran Diéguez [gl], Kjartan Maraas [nb], Wouter Bolsterlee [nl],
|
||||||
|
Danishka Navin [si], Yaron Shahrabani [he], Matej Urbančič [sl],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||||
|
|
||||||
3.3.4
|
3.3.4
|
||||||
=====
|
=====
|
||||||
* https://live.gnome.org/EveryDetailMatters
|
* https://live.gnome.org/EveryDetailMatters
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
"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 1
|
#define PLUGIN_API_VERSION 3
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GDBusProxy *proxy;
|
GDBusProxy *proxy;
|
||||||
@ -262,11 +262,13 @@ NPP_Destroy(NPP instance,
|
|||||||
/* =================== scripting interface =================== */
|
/* =================== scripting interface =================== */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
NPObject parent;
|
NPObject parent;
|
||||||
NPP instance;
|
NPP instance;
|
||||||
GDBusProxy *proxy;
|
GDBusProxy *proxy;
|
||||||
NPObject *listener;
|
NPObject *listener;
|
||||||
gint signal_id;
|
NPObject *restart_listener;
|
||||||
|
gint signal_id;
|
||||||
|
guint watch_name_id;
|
||||||
} PluginObject;
|
} PluginObject;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -284,7 +286,7 @@ on_shell_signal (GDBusProxy *proxy,
|
|||||||
gint32 status;
|
gint32 status;
|
||||||
gchar *error;
|
gchar *error;
|
||||||
NPVariant args[3];
|
NPVariant args[3];
|
||||||
NPVariant result;
|
NPVariant result = { NPVariantType_Void };
|
||||||
|
|
||||||
g_variant_get (parameters, "(sis)", &uuid, &status, &error);
|
g_variant_get (parameters, "(sis)", &uuid, &status, &error);
|
||||||
STRINGZ_TO_NPVARIANT (uuid, args[0]);
|
STRINGZ_TO_NPVARIANT (uuid, args[0]);
|
||||||
@ -300,6 +302,25 @@ on_shell_signal (GDBusProxy *proxy,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_shell_appeared (GDBusConnection *connection,
|
||||||
|
const gchar *name,
|
||||||
|
const gchar *name_owner,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
PluginObject *obj = (PluginObject*) user_data;
|
||||||
|
|
||||||
|
if (obj->restart_listener)
|
||||||
|
{
|
||||||
|
NPVariant result = { NPVariantType_Void };
|
||||||
|
|
||||||
|
funcs.invokeDefault (obj->instance, obj->restart_listener,
|
||||||
|
NULL, 0, &result);
|
||||||
|
|
||||||
|
funcs.releasevariantvalue (&result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static NPObject *
|
static NPObject *
|
||||||
plugin_object_allocate (NPP instance,
|
plugin_object_allocate (NPP instance,
|
||||||
NPClass *klass)
|
NPClass *klass)
|
||||||
@ -312,6 +333,14 @@ plugin_object_allocate (NPP instance,
|
|||||||
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
||||||
G_CALLBACK (on_shell_signal), obj);
|
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 object created");
|
g_debug ("plugin object created");
|
||||||
|
|
||||||
return (NPObject*)obj;
|
return (NPObject*)obj;
|
||||||
@ -328,6 +357,9 @@ plugin_object_deallocate (NPObject *npobj)
|
|||||||
if (obj->listener)
|
if (obj->listener)
|
||||||
funcs.releaseobject (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_debug ("plugin object destroyed");
|
||||||
|
|
||||||
g_slice_free (PluginObject, obj);
|
g_slice_free (PluginObject, obj);
|
||||||
@ -341,7 +373,9 @@ static NPIdentifier enable_extension_id;
|
|||||||
static NPIdentifier install_extension_id;
|
static NPIdentifier install_extension_id;
|
||||||
static NPIdentifier uninstall_extension_id;
|
static NPIdentifier uninstall_extension_id;
|
||||||
static NPIdentifier onextension_changed_id;
|
static NPIdentifier onextension_changed_id;
|
||||||
|
static NPIdentifier onrestart_id;
|
||||||
static NPIdentifier get_errors_id;
|
static NPIdentifier get_errors_id;
|
||||||
|
static NPIdentifier launch_extension_prefs_id;
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
plugin_object_has_method (NPObject *npobj,
|
plugin_object_has_method (NPObject *npobj,
|
||||||
@ -352,7 +386,8 @@ plugin_object_has_method (NPObject *npobj,
|
|||||||
name == enable_extension_id ||
|
name == enable_extension_id ||
|
||||||
name == install_extension_id ||
|
name == install_extension_id ||
|
||||||
name == uninstall_extension_id ||
|
name == uninstall_extension_id ||
|
||||||
name == get_errors_id);
|
name == get_errors_id ||
|
||||||
|
name == launch_extension_prefs_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
@ -457,7 +492,10 @@ plugin_enable_extension (PluginObject *obj,
|
|||||||
{
|
{
|
||||||
gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
|
gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
|
||||||
if (!uuid_is_valid (uuid_str))
|
if (!uuid_is_valid (uuid_str))
|
||||||
return FALSE;
|
{
|
||||||
|
g_free (uuid_str);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
g_dbus_proxy_call (obj->proxy,
|
g_dbus_proxy_call (obj->proxy,
|
||||||
(enabled ? "EnableExtension" : "DisableExtension"),
|
(enabled ? "EnableExtension" : "DisableExtension"),
|
||||||
@ -616,6 +654,33 @@ plugin_get_errors (PluginObject *obj,
|
|||||||
return jsonify_variant (res, result);
|
return jsonify_variant (res, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
plugin_launch_extension_prefs (PluginObject *obj,
|
||||||
|
NPString uuid,
|
||||||
|
NPVariant *result)
|
||||||
|
{
|
||||||
|
gchar *uuid_str;
|
||||||
|
|
||||||
|
uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
|
||||||
|
if (!uuid_is_valid (uuid_str))
|
||||||
|
{
|
||||||
|
g_free (uuid_str);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_dbus_proxy_call (obj->proxy,
|
||||||
|
"LaunchExtensionPrefs",
|
||||||
|
g_variant_new ("(s)", uuid_str),
|
||||||
|
G_DBUS_CALL_FLAGS_NONE,
|
||||||
|
-1, /* timeout */
|
||||||
|
NULL, /* cancellable */
|
||||||
|
NULL, /* callback */
|
||||||
|
NULL /* user_data */);
|
||||||
|
|
||||||
|
g_free (uuid_str);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
plugin_get_api_version (PluginObject *obj,
|
plugin_get_api_version (PluginObject *obj,
|
||||||
NPVariant *result)
|
NPVariant *result)
|
||||||
@ -726,6 +791,14 @@ plugin_object_invoke (NPObject *npobj,
|
|||||||
NPVARIANT_TO_STRING(args[0]),
|
NPVARIANT_TO_STRING(args[0]),
|
||||||
result);
|
result);
|
||||||
}
|
}
|
||||||
|
else if (name == launch_extension_prefs_id)
|
||||||
|
{
|
||||||
|
if (!NPVARIANT_IS_STRING(args[0])) return FALSE;
|
||||||
|
|
||||||
|
return plugin_launch_extension_prefs (obj,
|
||||||
|
NPVARIANT_TO_STRING(args[0]),
|
||||||
|
result);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -735,6 +808,7 @@ plugin_object_has_property (NPObject *npobj,
|
|||||||
NPIdentifier name)
|
NPIdentifier name)
|
||||||
{
|
{
|
||||||
return (name == onextension_changed_id ||
|
return (name == onextension_changed_id ||
|
||||||
|
name == onrestart_id ||
|
||||||
name == api_version_id ||
|
name == api_version_id ||
|
||||||
name == shell_version_id);
|
name == shell_version_id);
|
||||||
}
|
}
|
||||||
@ -761,6 +835,33 @@ plugin_object_get_property (NPObject *npobj,
|
|||||||
else
|
else
|
||||||
NULL_TO_NPVARIANT (*result);
|
NULL_TO_NPVARIANT (*result);
|
||||||
}
|
}
|
||||||
|
else if (name == onrestart_id)
|
||||||
|
{
|
||||||
|
if (obj->restart_listener)
|
||||||
|
OBJECT_TO_NPVARIANT (obj->restart_listener, *result);
|
||||||
|
else
|
||||||
|
NULL_TO_NPVARIANT (*result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
plugin_object_set_callback (NPObject **listener,
|
||||||
|
const NPVariant *value)
|
||||||
|
{
|
||||||
|
if (!NPVARIANT_IS_OBJECT (*value) && !NPVARIANT_IS_NULL (*value))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (*listener)
|
||||||
|
funcs.releaseobject (*listener);
|
||||||
|
*listener = NULL;
|
||||||
|
|
||||||
|
if (NPVARIANT_IS_OBJECT (*value))
|
||||||
|
{
|
||||||
|
*listener = NPVARIANT_TO_OBJECT (*value);
|
||||||
|
funcs.retainobject (*listener);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -772,25 +873,13 @@ plugin_object_set_property (NPObject *npobj,
|
|||||||
{
|
{
|
||||||
PluginObject *obj;
|
PluginObject *obj;
|
||||||
|
|
||||||
if (!plugin_object_has_property (npobj, name))
|
obj = (PluginObject *)npobj;
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (name == onextension_changed_id)
|
if (name == onextension_changed_id)
|
||||||
{
|
return plugin_object_set_callback (&obj->listener, value);
|
||||||
obj = (PluginObject*) npobj;
|
|
||||||
if (obj->listener)
|
|
||||||
funcs.releaseobject (obj->listener);
|
|
||||||
|
|
||||||
obj->listener = NULL;
|
if (name == onrestart_id)
|
||||||
if (NPVARIANT_IS_OBJECT (*value))
|
return plugin_object_set_callback (&obj->restart_listener, value);
|
||||||
{
|
|
||||||
obj->listener = NPVARIANT_TO_OBJECT (*value);
|
|
||||||
funcs.retainobject (obj->listener);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else if (NPVARIANT_IS_NULL (*value))
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -824,7 +913,9 @@ init_methods_and_properties (void)
|
|||||||
install_extension_id = funcs.getstringidentifier ("installExtension");
|
install_extension_id = funcs.getstringidentifier ("installExtension");
|
||||||
uninstall_extension_id = funcs.getstringidentifier ("uninstallExtension");
|
uninstall_extension_id = funcs.getstringidentifier ("uninstallExtension");
|
||||||
get_errors_id = funcs.getstringidentifier ("getExtensionErrors");
|
get_errors_id = funcs.getstringidentifier ("getExtensionErrors");
|
||||||
|
launch_extension_prefs_id = funcs.getstringidentifier ("launchExtensionPrefs");
|
||||||
|
|
||||||
|
onrestart_id = funcs.getstringidentifier ("onshellrestart");
|
||||||
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
configure.ac
11
configure.ac
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.3.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.3.5],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@ -53,7 +53,7 @@ if $PKG_CONFIG --exists gstreamer-0.10 '>=' $GSTREAMER_MIN_VERSION ; then
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
build_recorder=true
|
build_recorder=true
|
||||||
recorder_modules="gstreamer-0.10 gstreamer-base-0.10 x11"
|
recorder_modules="gstreamer-0.10 gstreamer-base-0.10 x11"
|
||||||
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes)
|
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes gl)
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
@ -63,7 +63,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
|||||||
CLUTTER_MIN_VERSION=1.7.5
|
CLUTTER_MIN_VERSION=1.7.5
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||||
GJS_MIN_VERSION=1.29.18
|
GJS_MIN_VERSION=1.29.18
|
||||||
MUTTER_MIN_VERSION=3.3.3
|
MUTTER_MIN_VERSION=3.3.5
|
||||||
FOLKS_MIN_VERSION=0.5.2
|
FOLKS_MIN_VERSION=0.5.2
|
||||||
GTK_MIN_VERSION=3.3.9
|
GTK_MIN_VERSION=3.3.9
|
||||||
GIO_MIN_VERSION=2.31.6
|
GIO_MIN_VERSION=2.31.6
|
||||||
@ -117,6 +117,7 @@ AC_CHECK_FUNCS(JS_NewGlobalObject XFixesCreatePointerBarrier)
|
|||||||
CFLAGS=$saved_CFLAGS
|
CFLAGS=$saved_CFLAGS
|
||||||
LIBS=$saved_LIBS
|
LIBS=$saved_LIBS
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(GNOME_SHELL_JS, glib-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
||||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 gnome-desktop-3.0 >= 2.90.0 x11)
|
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 gnome-desktop-3.0 >= 2.90.0 x11)
|
||||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||||
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
||||||
@ -198,7 +199,7 @@ if test "$enable_compile_warnings" != no ; then
|
|||||||
if test "$enable_compile_warnings" = error ; then
|
if test "$enable_compile_warnings" = error ; then
|
||||||
case " $CFLAGS " in
|
case " $CFLAGS " in
|
||||||
*[\ \ ]-Werror[\ \ ]*) ;;
|
*[\ \ ]-Werror[\ \ ]*) ;;
|
||||||
*) CFLAGS="$CFLAGS -Werror" ;;
|
*) CFLAGS="$CFLAGS -Werror -Wno-error=deprecated-declarations" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -206,7 +207,7 @@ fi
|
|||||||
changequote([,])dnl
|
changequote([,])dnl
|
||||||
|
|
||||||
AC_ARG_ENABLE(jhbuild-wrapper-script,
|
AC_ARG_ENABLE(jhbuild-wrapper-script,
|
||||||
AS_HELP_STRING([--jhbuild-wrapper-script=yes],[Make "gnome-shell" script work for jhbuild]),,enable_jhbuild_wrapper_script=no)
|
AS_HELP_STRING([--enable-jhbuild-wrapper-script],[Make "gnome-shell" script work for jhbuild]),,enable_jhbuild_wrapper_script=no)
|
||||||
AM_CONDITIONAL(USE_JHBUILD_WRAPPER_SCRIPT, test "x$enable_jhbuild_wrapper_script" = xyes)
|
AM_CONDITIONAL(USE_JHBUILD_WRAPPER_SCRIPT, test "x$enable_jhbuild_wrapper_script" = xyes)
|
||||||
|
|
||||||
AC_MSG_CHECKING([location of system Certificate Authority list])
|
AC_MSG_CHECKING([location of system Certificate Authority list])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
desktopdir=$(datadir)/applications
|
desktopdir=$(datadir)/applications
|
||||||
desktop_DATA = gnome-shell.desktop
|
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
|
||||||
|
|
||||||
# We substitute in bindir so it works as an autostart
|
# We substitute in bindir so it works as an autostart
|
||||||
# file when built in a non-system prefix
|
# file when built in a non-system prefix
|
||||||
@ -69,6 +69,7 @@ shaders_DATA = \
|
|||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
gnome-shell.desktop.in.in \
|
gnome-shell.desktop.in.in \
|
||||||
|
gnome-shell-extension-prefs.desktop.in.in \
|
||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(shaders_DATA) \
|
$(shaders_DATA) \
|
||||||
$(convert_DATA) \
|
$(convert_DATA) \
|
||||||
@ -76,6 +77,7 @@ EXTRA_DIST = \
|
|||||||
|
|
||||||
CLEANFILES = \
|
CLEANFILES = \
|
||||||
gnome-shell.desktop.in \
|
gnome-shell.desktop.in \
|
||||||
|
gnome-shell-extension-prefs.in \
|
||||||
$(desktop_DATA) \
|
$(desktop_DATA) \
|
||||||
$(gsettings_SCHEMAS) \
|
$(gsettings_SCHEMAS) \
|
||||||
gschemas.compiled
|
gschemas.compiled
|
||||||
|
12
data/gnome-shell-extension-prefs.desktop.in.in
Normal file
12
data/gnome-shell-extension-prefs.desktop.in.in
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
_Name=GNOME Shell Extension Preferences
|
||||||
|
_Comment=Configure GNOME Shell Extensions
|
||||||
|
Exec=@bindir@/gnome-shell-extension-prefs %u
|
||||||
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Component=extensions
|
||||||
|
X-GNOME-Bugzilla-Version=@VERSION@
|
||||||
|
Categories=GNOME;GTK;
|
||||||
|
OnlyShowIn=GNOME;
|
||||||
|
NoDisplay=true
|
@ -108,7 +108,7 @@
|
|||||||
<schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/"
|
<schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="framerate" type="i">
|
<key name="framerate" type="i">
|
||||||
<default>15</default>
|
<default>30</default>
|
||||||
<_summary>Framerate used for recording screencasts.</_summary>
|
<_summary>Framerate used for recording screencasts.</_summary>
|
||||||
<_description>
|
<_description>
|
||||||
The framerate of the resulting screencast recordered
|
The framerate of the resulting screencast recordered
|
||||||
@ -127,7 +127,7 @@
|
|||||||
take care of its own output - this might be used to send the output
|
take care of its own output - this might be used to send the output
|
||||||
to an icecast server via shout2send or similar. When unset or set
|
to an icecast server via shout2send or similar. When unset or set
|
||||||
to an empty value, the default pipeline will be used. This is currently
|
to an empty value, the default pipeline will be used. This is currently
|
||||||
'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux'
|
'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux'
|
||||||
and records to WEBM using the VP8 codec. %T is used as a placeholder
|
and records to WEBM using the VP8 codec. %T is used as a placeholder
|
||||||
for a guess at the optimal thread count on the system.
|
for a guess at the optimal thread count on the system.
|
||||||
</_description>
|
</_description>
|
||||||
|
@ -60,7 +60,6 @@ StScrollBar StBin#trough {
|
|||||||
StScrollBar StButton#vhandle
|
StScrollBar StButton#vhandle
|
||||||
{
|
{
|
||||||
background-image: url("scroll-vhandle.svg");
|
background-image: url("scroll-vhandle.svg");
|
||||||
background-size: contain;
|
|
||||||
background-color: #252525;
|
background-color: #252525;
|
||||||
border: 1px solid #080808;
|
border: 1px solid #080808;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@ -69,7 +68,6 @@ StScrollBar StButton#vhandle
|
|||||||
StScrollBar StButton#hhandle
|
StScrollBar StButton#hhandle
|
||||||
{
|
{
|
||||||
background-image: url("scroll-hhandle.svg");
|
background-image: url("scroll-hhandle.svg");
|
||||||
background-size: contain;
|
|
||||||
background-color: #252525;
|
background-color: #252525;
|
||||||
border: 1px solid #080808;
|
border: 1px solid #080808;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@ -362,7 +360,6 @@ StTooltip StLabel {
|
|||||||
.panel-button:focus {
|
.panel-button:focus {
|
||||||
border-image: url("panel-button-border.svg") 10 10 0 2;
|
border-image: url("panel-button-border.svg") 10 10 0 2;
|
||||||
background-image: url("panel-button-highlight-wide.svg");
|
background-image: url("panel-button-highlight-wide.svg");
|
||||||
background-size: contain;
|
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: black 0px 2px 2px;
|
text-shadow: black 0px 2px 2px;
|
||||||
}
|
}
|
||||||
@ -371,7 +368,6 @@ StTooltip StLabel {
|
|||||||
.panel-status-button:checked,
|
.panel-status-button:checked,
|
||||||
.panel-status-button:focus {
|
.panel-status-button:focus {
|
||||||
background-image: url("panel-button-highlight-narrow.svg");
|
background-image: url("panel-button-highlight-narrow.svg");
|
||||||
background-size: contain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-button:active > .system-status-icon,
|
.panel-button:active > .system-status-icon,
|
||||||
@ -707,13 +703,11 @@ StTooltip StLabel {
|
|||||||
.app-filter:selected {
|
.app-filter:selected {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
background-image: url("filter-selected-ltr.svg");
|
background-image: url("filter-selected-ltr.svg");
|
||||||
background-size: contain;
|
|
||||||
background-position: 190px 10px;
|
background-position: 190px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-filter:selected:rtl {
|
.app-filter:selected:rtl {
|
||||||
background-image: url("filter-selected-rtl.svg");
|
background-image: url("filter-selected-rtl.svg");
|
||||||
background-size: contain;
|
|
||||||
background-position: 10px 10px;
|
background-position: 10px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1624,7 +1618,6 @@ StTooltip StLabel {
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
background: rgba(255,255,255,0.5);
|
background: rgba(255,255,255,0.5);
|
||||||
background-image: url("ws-switch-arrow-up.svg");
|
background-image: url("ws-switch-arrow-up.svg");
|
||||||
background-size: contain;
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1633,7 +1626,6 @@ StTooltip StLabel {
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
background: rgba(255,255,255,0.5);
|
background: rgba(255,255,255,0.5);
|
||||||
background-image: url("ws-switch-arrow-down.svg");
|
background-image: url("ws-switch-arrow-down.svg");
|
||||||
background-size: contain;
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1718,6 +1710,10 @@ StTooltip StLabel {
|
|||||||
background-color: rgba(0, 0, 0, 0.4);
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flashspot {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
/* End Session Dialog */
|
/* End Session Dialog */
|
||||||
.end-session-dialog {
|
.end-session-dialog {
|
||||||
spacing: 42px;
|
spacing: 42px;
|
||||||
@ -1830,6 +1826,10 @@ StTooltip StLabel {
|
|||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mount-question-dialog-subject {
|
||||||
|
max-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
.show-processes-dialog-subject:rtl,
|
.show-processes-dialog-subject:rtl,
|
||||||
.mount-question-dialog-subject:rtl {
|
.mount-question-dialog-subject:rtl {
|
||||||
padding-left: 0px;
|
padding-left: 0px;
|
||||||
|
@ -7,8 +7,10 @@ nobase_dist_js_DATA = \
|
|||||||
gdm/fingerprint.js \
|
gdm/fingerprint.js \
|
||||||
gdm/loginDialog.js \
|
gdm/loginDialog.js \
|
||||||
gdm/powerMenu.js \
|
gdm/powerMenu.js \
|
||||||
|
extensionPrefs/main.js \
|
||||||
misc/config.js \
|
misc/config.js \
|
||||||
misc/docInfo.js \
|
misc/docInfo.js \
|
||||||
|
misc/extensionUtils.js \
|
||||||
misc/fileUtils.js \
|
misc/fileUtils.js \
|
||||||
misc/format.js \
|
misc/format.js \
|
||||||
misc/gnomeSession.js \
|
misc/gnomeSession.js \
|
||||||
@ -35,6 +37,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/endSessionDialog.js \
|
ui/endSessionDialog.js \
|
||||||
ui/environment.js \
|
ui/environment.js \
|
||||||
ui/extensionSystem.js \
|
ui/extensionSystem.js \
|
||||||
|
ui/flashspot.js \
|
||||||
ui/iconGrid.js \
|
ui/iconGrid.js \
|
||||||
ui/keyboard.js \
|
ui/keyboard.js \
|
||||||
ui/layout.js \
|
ui/layout.js \
|
||||||
|
279
js/extensionPrefs/main.js
Normal file
279
js/extensionPrefs/main.js
Normal file
@ -0,0 +1,279 @@
|
|||||||
|
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Gettext = imports.gettext;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const GObject = imports.gi.GObject;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
|
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const Config = imports.misc.config;
|
||||||
|
const Format = imports.misc.format;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
|
|
||||||
|
const GnomeShellIface = <interface name="org.gnome.Shell">
|
||||||
|
<signal name="ExtensionStatusChanged">
|
||||||
|
<arg type="s" name="uuid"/>
|
||||||
|
<arg type="i" name="state"/>
|
||||||
|
<arg type="s" name="error"/>
|
||||||
|
</signal>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
|
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
|
||||||
|
|
||||||
|
function stripPrefix(string, prefix) {
|
||||||
|
if (string.slice(0, prefix.length) == prefix)
|
||||||
|
return string.slice(prefix.length);
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Application = new Lang.Class({
|
||||||
|
Name: 'Application',
|
||||||
|
_init: function() {
|
||||||
|
GLib.set_prgname('gnome-shell-extension-prefs');
|
||||||
|
this.application = new Gtk.Application({
|
||||||
|
application_id: 'org.gnome.shell.ExtensionPrefs',
|
||||||
|
flags: Gio.ApplicationFlags.HANDLES_COMMAND_LINE
|
||||||
|
});
|
||||||
|
|
||||||
|
this.application.connect('activate', Lang.bind(this, this._onActivate));
|
||||||
|
this.application.connect('command-line', Lang.bind(this, this._onCommandLine));
|
||||||
|
this.application.connect('startup', Lang.bind(this, this._onStartup));
|
||||||
|
|
||||||
|
this._extensionPrefsModules = {};
|
||||||
|
|
||||||
|
this._extensionIters = {};
|
||||||
|
},
|
||||||
|
|
||||||
|
_buildModel: function() {
|
||||||
|
this._model = new Gtk.ListStore();
|
||||||
|
this._model.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_extensionAvailable: function(uuid) {
|
||||||
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
|
|
||||||
|
if (!extension)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (ExtensionUtils.isOutOfDate(extension))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!extension.dir.get_child('prefs.js').query_exists(null))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_setExtensionInsensitive: function(layout, cell, model, iter, data) {
|
||||||
|
let uuid = model.get_value(iter, 0);
|
||||||
|
if (!this._extensionAvailable(uuid))
|
||||||
|
cell.set_sensitive(false);
|
||||||
|
},
|
||||||
|
|
||||||
|
_getExtensionPrefsModule: function(extension) {
|
||||||
|
let uuid = extension.metadata.uuid;
|
||||||
|
|
||||||
|
if (this._extensionPrefsModules.hasOwnProperty(uuid))
|
||||||
|
return this._extensionPrefsModules[uuid];
|
||||||
|
|
||||||
|
ExtensionUtils.installImporter(extension);
|
||||||
|
|
||||||
|
let prefsModule = extension.imports.prefs;
|
||||||
|
prefsModule.init(extension.metadata);
|
||||||
|
|
||||||
|
this._extensionPrefsModules[uuid] = prefsModule;
|
||||||
|
return prefsModule;
|
||||||
|
},
|
||||||
|
|
||||||
|
_selectExtension: function(uuid) {
|
||||||
|
if (!this._extensionAvailable(uuid))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
|
let widget;
|
||||||
|
|
||||||
|
try {
|
||||||
|
let prefsModule = this._getExtensionPrefsModule(extension);
|
||||||
|
widget = prefsModule.buildPrefsWidget();
|
||||||
|
} catch (e) {
|
||||||
|
widget = this._buildErrorUI(extension, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destroy the current prefs widget, if it exists
|
||||||
|
if (this._extensionPrefsBin.get_child())
|
||||||
|
this._extensionPrefsBin.get_child().destroy();
|
||||||
|
|
||||||
|
this._extensionPrefsBin.add(widget);
|
||||||
|
this._extensionSelector.set_active_iter(this._extensionIters[uuid]);
|
||||||
|
},
|
||||||
|
|
||||||
|
_extensionSelected: function() {
|
||||||
|
let [success, iter] = this._extensionSelector.get_active_iter();
|
||||||
|
if (!success)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let uuid = this._model.get_value(iter, 0);
|
||||||
|
this._selectExtension(uuid);
|
||||||
|
},
|
||||||
|
|
||||||
|
_buildErrorUI: function(extension, exc) {
|
||||||
|
let box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
|
||||||
|
let label = new Gtk.Label({
|
||||||
|
label: _("There was an error loading the preferences dialog for %s:").format(extension.metadata.name)
|
||||||
|
});
|
||||||
|
box.add(label);
|
||||||
|
|
||||||
|
let errortext = '';
|
||||||
|
errortext += exc;
|
||||||
|
errortext += '\n\n';
|
||||||
|
errortext += 'Stack trace:\n';
|
||||||
|
|
||||||
|
// Indent stack trace.
|
||||||
|
errortext += exc.stack.split('\n').map(function(line) {
|
||||||
|
return ' ' + line;
|
||||||
|
}).join('\n');
|
||||||
|
|
||||||
|
let scroll = new Gtk.ScrolledWindow({ vexpand: true });
|
||||||
|
let buffer = new Gtk.TextBuffer({ text: errortext });
|
||||||
|
let textview = new Gtk.TextView({ buffer: buffer });
|
||||||
|
textview.override_font(Pango.font_description_from_string('monospace'));
|
||||||
|
scroll.add(textview);
|
||||||
|
box.add(scroll);
|
||||||
|
|
||||||
|
box.show_all();
|
||||||
|
return box;
|
||||||
|
},
|
||||||
|
|
||||||
|
_buildUI: function(app) {
|
||||||
|
this._window = new Gtk.ApplicationWindow({ application: app,
|
||||||
|
window_position: Gtk.WindowPosition.CENTER,
|
||||||
|
title: _("GNOME Shell Extension Preferences") });
|
||||||
|
|
||||||
|
this._window.set_size_request(600, 400);
|
||||||
|
|
||||||
|
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
|
||||||
|
this._window.add(vbox);
|
||||||
|
|
||||||
|
let toolbar = new Gtk.Toolbar();
|
||||||
|
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
|
||||||
|
vbox.add(toolbar);
|
||||||
|
let toolitem;
|
||||||
|
|
||||||
|
let label = new Gtk.Label({ label: _("<b>Extension</b>"),
|
||||||
|
use_markup: true });
|
||||||
|
toolitem = new Gtk.ToolItem({ child: label });
|
||||||
|
toolbar.add(toolitem);
|
||||||
|
|
||||||
|
this._extensionSelector = new Gtk.ComboBox({ model: this._model,
|
||||||
|
margin_left: 8,
|
||||||
|
hexpand: true });
|
||||||
|
this._extensionSelector.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED);
|
||||||
|
|
||||||
|
let renderer = new Gtk.CellRendererText();
|
||||||
|
this._extensionSelector.pack_start(renderer, true);
|
||||||
|
this._extensionSelector.add_attribute(renderer, 'text', 1);
|
||||||
|
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive), null);
|
||||||
|
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
|
||||||
|
|
||||||
|
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
|
||||||
|
toolitem.set_expand(true);
|
||||||
|
toolbar.add(toolitem);
|
||||||
|
|
||||||
|
this._extensionPrefsBin = new Gtk.Frame();
|
||||||
|
vbox.add(this._extensionPrefsBin);
|
||||||
|
|
||||||
|
let label = new Gtk.Label({
|
||||||
|
label: _("Select an extension to configure using the combobox above."),
|
||||||
|
vexpand: true
|
||||||
|
});
|
||||||
|
|
||||||
|
this._extensionPrefsBin.add(label);
|
||||||
|
|
||||||
|
this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
|
||||||
|
this._shellProxy.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) {
|
||||||
|
if (ExtensionUtils.extensions[uuid] !== undefined)
|
||||||
|
this._scanExtensions();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._window.show_all();
|
||||||
|
},
|
||||||
|
|
||||||
|
_scanExtensions: function() {
|
||||||
|
ExtensionUtils.scanExtensions(Lang.bind(this, function(uuid, dir, type) {
|
||||||
|
if (ExtensionUtils.extensions[uuid] !== undefined)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let extension;
|
||||||
|
try {
|
||||||
|
extension = ExtensionUtils.createExtensionObject(uuid, dir, type);
|
||||||
|
} catch(e) {
|
||||||
|
global.logError('' + e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let iter = this._model.append();
|
||||||
|
this._model.set(iter, [0, 1], [uuid, extension.metadata.name]);
|
||||||
|
this._extensionIters[uuid] = iter;
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onActivate: function() {
|
||||||
|
this._window.present();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onStartup: function(app) {
|
||||||
|
this._buildModel();
|
||||||
|
this._buildUI(app);
|
||||||
|
this._scanExtensions();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onCommandLine: function(app, commandLine) {
|
||||||
|
app.activate();
|
||||||
|
let args = commandLine.get_arguments();
|
||||||
|
if (args.length) {
|
||||||
|
let uuid = args[0];
|
||||||
|
|
||||||
|
// Strip off "extension:///" prefix which fakes a URI, if it exists
|
||||||
|
uuid = stripPrefix(uuid, "extension:///");
|
||||||
|
|
||||||
|
if (!this._extensionAvailable(uuid))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
this._selectExtension(uuid);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function initEnvironment() {
|
||||||
|
// Monkey-patch in a "global" object that fakes some Shell utilities
|
||||||
|
// that ExtensionUtils depends on.
|
||||||
|
window.global = {
|
||||||
|
log: function() {
|
||||||
|
print([].join.call(arguments, ', '));
|
||||||
|
},
|
||||||
|
|
||||||
|
logError: function(s) {
|
||||||
|
global.log('ERROR: ' + s);
|
||||||
|
},
|
||||||
|
|
||||||
|
userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell'])
|
||||||
|
};
|
||||||
|
|
||||||
|
String.prototype.format = Format.format;
|
||||||
|
}
|
||||||
|
|
||||||
|
function main(argv) {
|
||||||
|
initEnvironment();
|
||||||
|
ExtensionUtils.init();
|
||||||
|
|
||||||
|
Gettext.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR);
|
||||||
|
Gettext.textdomain(Config.GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
let app = new Application();
|
||||||
|
app.application.run(argv);
|
||||||
|
}
|
@ -10,3 +10,7 @@ const GJS_VERSION = '@GJS_VERSION@';
|
|||||||
const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
|
const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
|
||||||
/* The system TLS CA list */
|
/* The system TLS CA list */
|
||||||
const SHELL_SYSTEM_CA_FILE = '@SHELL_SYSTEM_CA_FILE@';
|
const SHELL_SYSTEM_CA_FILE = '@SHELL_SYSTEM_CA_FILE@';
|
||||||
|
/* gettext package */
|
||||||
|
const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
|
||||||
|
/* locale dir */
|
||||||
|
const LOCALEDIR = '@datadir@/locale';
|
||||||
|
194
js/misc/extensionUtils.js
Normal file
194
js/misc/extensionUtils.js
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
// Common utils for the extension system and the extension
|
||||||
|
// preferences tool
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const ShellJS = imports.gi.ShellJS;
|
||||||
|
|
||||||
|
const Config = imports.misc.config;
|
||||||
|
|
||||||
|
const ExtensionType = {
|
||||||
|
SYSTEM: 1,
|
||||||
|
PER_USER: 2
|
||||||
|
};
|
||||||
|
|
||||||
|
// GFile for user extensions
|
||||||
|
var userExtensionsDir = null;
|
||||||
|
|
||||||
|
// Maps uuid -> metadata object
|
||||||
|
const extensions = {};
|
||||||
|
|
||||||
|
function getCurrentExtension() {
|
||||||
|
let stack = (new Error()).stack;
|
||||||
|
|
||||||
|
// Assuming we're importing this directly from an extension (and we shouldn't
|
||||||
|
// ever not be), its UUID should be directly in the path here.
|
||||||
|
let extensionStackLine = stack.split('\n')[1];
|
||||||
|
if (!extensionStackLine)
|
||||||
|
throw new Error('Could not find current extension');
|
||||||
|
|
||||||
|
// The stack line is like:
|
||||||
|
// init([object Object])@/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8
|
||||||
|
//
|
||||||
|
// In the case that we're importing from
|
||||||
|
// module scope, the first field is blank:
|
||||||
|
// @/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8
|
||||||
|
let match = new RegExp('@(.+):\\d+').exec(extensionStackLine);
|
||||||
|
if (!match)
|
||||||
|
throw new Error('Could not find current extension');
|
||||||
|
|
||||||
|
let path = match[1];
|
||||||
|
let uuid = GLib.path_get_basename(GLib.path_get_dirname(path));
|
||||||
|
|
||||||
|
let extension = extensions[uuid];
|
||||||
|
if (extension === undefined)
|
||||||
|
throw new Error('Could not find current extension');
|
||||||
|
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* versionCheck:
|
||||||
|
* @required: an array of versions we're compatible with
|
||||||
|
* @current: the version we have
|
||||||
|
*
|
||||||
|
* Check if a component is compatible for an extension.
|
||||||
|
* @required is an array, and at least one version must match.
|
||||||
|
* @current must be in the format <major>.<minor>.<point>.<micro>
|
||||||
|
* <micro> is always ignored
|
||||||
|
* <point> is ignored if <minor> is even (so you can target the
|
||||||
|
* whole stable release)
|
||||||
|
* <minor> and <major> must match
|
||||||
|
* Each target version must be at least <major> and <minor>
|
||||||
|
*/
|
||||||
|
function versionCheck(required, current) {
|
||||||
|
let currentArray = current.split('.');
|
||||||
|
let major = currentArray[0];
|
||||||
|
let minor = currentArray[1];
|
||||||
|
let point = currentArray[2];
|
||||||
|
for (let i = 0; i < required.length; i++) {
|
||||||
|
let requiredArray = required[i].split('.');
|
||||||
|
if (requiredArray[0] == major &&
|
||||||
|
requiredArray[1] == minor &&
|
||||||
|
(requiredArray[2] == point ||
|
||||||
|
(requiredArray[2] == undefined && parseInt(minor) % 2 == 0)))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isOutOfDate(extension) {
|
||||||
|
if (!versionCheck(extension.metadata['shell-version'], Config.PACKAGE_VERSION))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (extension.metadata['js-version'] && !versionCheck(extension.metadata['js-version'], Config.GJS_VERSION))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createExtensionObject(uuid, dir, type) {
|
||||||
|
let info;
|
||||||
|
|
||||||
|
let metadataFile = dir.get_child('metadata.json');
|
||||||
|
if (!metadataFile.query_exists(null)) {
|
||||||
|
throw new Error('Missing metadata.json');
|
||||||
|
}
|
||||||
|
|
||||||
|
let metadataContents, success, tag;
|
||||||
|
try {
|
||||||
|
[success, metadataContents, tag] = metadataFile.load_contents(null);
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error('Failed to load metadata.json: ' + e);
|
||||||
|
}
|
||||||
|
let meta;
|
||||||
|
try {
|
||||||
|
meta = JSON.parse(metadataContents);
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error('Failed to parse metadata.json: ' + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
let requiredProperties = ['uuid', 'name', 'description', 'shell-version'];
|
||||||
|
for (let i = 0; i < requiredProperties.length; i++) {
|
||||||
|
let prop = requiredProperties[i];
|
||||||
|
if (!meta[prop]) {
|
||||||
|
throw new Error('missing "' + prop + '" property in metadata.json');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encourage people to add this
|
||||||
|
if (!meta.url) {
|
||||||
|
global.log('Warning: Missing "url" property in metadata.json');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uuid != meta.uuid) {
|
||||||
|
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
||||||
|
}
|
||||||
|
|
||||||
|
let extension = {};
|
||||||
|
|
||||||
|
extension.metadata = meta;
|
||||||
|
extension.uuid = meta.uuid;
|
||||||
|
extension.type = type;
|
||||||
|
extension.dir = dir;
|
||||||
|
extension.path = dir.get_path();
|
||||||
|
extension.error = '';
|
||||||
|
extension.hasPrefs = dir.get_child('prefs.js').query_exists(null);
|
||||||
|
|
||||||
|
extensions[uuid] = extension;
|
||||||
|
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _extension = null;
|
||||||
|
|
||||||
|
function installImporter(extension) {
|
||||||
|
_extension = extension;
|
||||||
|
ShellJS.add_extension_importer('imports.misc.extensionUtils._extension', 'imports', extension.path);
|
||||||
|
_extension = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
let userExtensionsPath = GLib.build_filenamev([global.userdatadir, 'extensions']);
|
||||||
|
userExtensionsDir = Gio.file_new_for_path(userExtensionsPath);
|
||||||
|
try {
|
||||||
|
if (!userExtensionsDir.query_exists(null))
|
||||||
|
userExtensionsDir.make_directory_with_parents(null);
|
||||||
|
} catch (e) {
|
||||||
|
global.logError('' + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function scanExtensionsInDirectory(callback, dir, type) {
|
||||||
|
let fileEnum;
|
||||||
|
let file, info;
|
||||||
|
try {
|
||||||
|
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
|
||||||
|
} catch(e) {
|
||||||
|
global.logError('' + e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((info = fileEnum.next_file(null)) != null) {
|
||||||
|
let fileType = info.get_file_type();
|
||||||
|
if (fileType != Gio.FileType.DIRECTORY)
|
||||||
|
continue;
|
||||||
|
let uuid = info.get_name();
|
||||||
|
let extensionDir = dir.get_child(uuid);
|
||||||
|
callback(uuid, extensionDir, type);
|
||||||
|
}
|
||||||
|
fileEnum.close(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
function scanExtensions(callback) {
|
||||||
|
let systemDataDirs = GLib.get_system_data_dirs();
|
||||||
|
for (let i = 0; i < systemDataDirs.length; i++) {
|
||||||
|
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
|
||||||
|
let dir = Gio.file_new_for_path(dirPath);
|
||||||
|
if (dir.query_exists(null))
|
||||||
|
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
|
||||||
|
}
|
||||||
|
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
|
||||||
|
}
|
@ -165,7 +165,7 @@ const ModemCdma = new Lang.Class({
|
|||||||
|
|
||||||
this.signal_quality = 0;
|
this.signal_quality = 0;
|
||||||
this.operator_name = null;
|
this.operator_name = null;
|
||||||
this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, sender, params) {
|
this._proxy.connectSignal('SignalQuality', Lang.bind(this, function(proxy, sender, params) {
|
||||||
this.signal_quality = params[0];
|
this.signal_quality = params[0];
|
||||||
this.emit('notify::signal-quality');
|
this.emit('notify::signal-quality');
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ function ConsoleKitManager() {
|
|||||||
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||||
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||||
|
|
||||||
self.connect('notify::g-name-owner', function() {
|
self._updateSessionActive = function() {
|
||||||
if (self.g_name_owner) {
|
if (self.g_name_owner) {
|
||||||
self.GetCurrentSessionRemote(function([session]) {
|
self.GetCurrentSessionRemote(function([session]) {
|
||||||
self._ckSession = new ConsoleKitSessionProxy(Gio.DBus.system, 'org.freedesktop.ConsoleKit', session);
|
self._ckSession = new ConsoleKitSessionProxy(Gio.DBus.system, 'org.freedesktop.ConsoleKit', session);
|
||||||
@ -58,8 +58,11 @@ function ConsoleKitManager() {
|
|||||||
} else {
|
} else {
|
||||||
self.sessionActive = true;
|
self.sessionActive = true;
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
self.connect('notify::g-name-owner',
|
||||||
|
Lang.bind(self, self._updateSessionActive));
|
||||||
|
|
||||||
|
self._updateSessionActive();
|
||||||
self.init(null);
|
self.init(null);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -93,23 +93,30 @@ const Contact = new Lang.Class({
|
|||||||
text = _("Busy");
|
text = _("Busy");
|
||||||
iconName = 'user-busy';
|
iconName = 'user-busy';
|
||||||
break;
|
break;
|
||||||
default:
|
case Folks.PresenceType.OFFLINE:
|
||||||
text = _("Offline");
|
text = _("Offline");
|
||||||
iconName = 'user-offline';
|
iconName = 'user-offline';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
text = '';
|
||||||
|
iconName = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
let icon = new St.Icon({ icon_name: iconName,
|
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
|
||||||
icon_size: 16,
|
|
||||||
style_class: 'contact-details-status-icon' });
|
|
||||||
let label = new St.Label({ text: text });
|
|
||||||
|
|
||||||
let box = new St.BoxLayout({ vertical: false,
|
let box = new St.BoxLayout({ vertical: false,
|
||||||
style_class: 'contact-details-status' });
|
style_class: 'contact-details-status' });
|
||||||
box.add(icon, { x_fill: true,
|
|
||||||
y_fill: false,
|
if (iconName) {
|
||||||
x_align: St.Align.START,
|
let icon = new St.Icon({ icon_name: iconName,
|
||||||
y_align: St.Align.START });
|
icon_type: St.IconType.FULLCOLOR,
|
||||||
|
icon_size: 16,
|
||||||
|
style_class: 'contact-details-status-icon' });
|
||||||
|
box.add(icon, { x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.START,
|
||||||
|
y_align: St.Align.START });
|
||||||
|
}
|
||||||
|
|
||||||
|
let label = new St.Label({ text: text });
|
||||||
|
|
||||||
box.add(label, { x_fill: true,
|
box.add(label, { x_fill: true,
|
||||||
y_fill: false,
|
y_fill: false,
|
||||||
|
@ -501,7 +501,7 @@ const Dash = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
let themeNode = this.actor.get_theme_node();
|
let themeNode = this._box.get_theme_node();
|
||||||
let maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0,
|
let maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0,
|
||||||
x2: 42 /* whatever */,
|
x2: 42 /* whatever */,
|
||||||
y2: this._maxHeight });
|
y2: this._maxHeight });
|
||||||
|
@ -69,6 +69,7 @@ const DateMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
// Date
|
// Date
|
||||||
this._date = new St.Label();
|
this._date = new St.Label();
|
||||||
|
this.actor.label_actor = this._date;
|
||||||
this._date.style_class = 'datemenu-date-label';
|
this._date.style_class = 'datemenu-date-label';
|
||||||
vbox.add(this._date);
|
vbox.add(this._date);
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ const Shell = imports.gi.Shell;
|
|||||||
const Soup = imports.gi.Soup;
|
const Soup = imports.gi.Soup;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const FileUtils = imports.misc.fileUtils;
|
const FileUtils = imports.misc.fileUtils;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
|
|
||||||
@ -29,11 +30,6 @@ const ExtensionState = {
|
|||||||
UNINSTALLED: 99
|
UNINSTALLED: 99
|
||||||
};
|
};
|
||||||
|
|
||||||
const ExtensionType = {
|
|
||||||
SYSTEM: 1,
|
|
||||||
PER_USER: 2
|
|
||||||
};
|
|
||||||
|
|
||||||
const REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
|
const REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
|
||||||
const REPOSITORY_URL_DOWNLOAD = REPOSITORY_URL_BASE + '/download-extension/%s.shell-extension.zip';
|
const REPOSITORY_URL_DOWNLOAD = REPOSITORY_URL_BASE + '/download-extension/%s.shell-extension.zip';
|
||||||
const REPOSITORY_URL_INFO = REPOSITORY_URL_BASE + '/extension-info/';
|
const REPOSITORY_URL_INFO = REPOSITORY_URL_BASE + '/extension-info/';
|
||||||
@ -57,19 +53,10 @@ function _getCertFile() {
|
|||||||
|
|
||||||
_httpSession.ssl_ca_file = _getCertFile();
|
_httpSession.ssl_ca_file = _getCertFile();
|
||||||
|
|
||||||
// Maps uuid -> metadata object
|
|
||||||
const extensionMeta = {};
|
|
||||||
// Maps uuid -> importer object (extension directory tree)
|
|
||||||
const extensions = {};
|
|
||||||
// Maps uuid -> extension state object (returned from init())
|
|
||||||
const extensionStateObjs = {};
|
|
||||||
// Contains the order that extensions were enabled in.
|
|
||||||
const extensionOrder = [];
|
|
||||||
|
|
||||||
// Arrays of uuids
|
// Arrays of uuids
|
||||||
var enabledExtensions;
|
var enabledExtensions;
|
||||||
// GFile for user extensions
|
// Contains the order that extensions were enabled in.
|
||||||
var userExtensionsDir = null;
|
const extensionOrder = [];
|
||||||
|
|
||||||
// We don't really have a class to add signals on. So, create
|
// We don't really have a class to add signals on. So, create
|
||||||
// a simple dummy object, add the signal methods, and export those
|
// a simple dummy object, add the signal methods, and export those
|
||||||
@ -80,41 +67,8 @@ Signals.addSignalMethods(_signals);
|
|||||||
const connect = Lang.bind(_signals, _signals.connect);
|
const connect = Lang.bind(_signals, _signals.connect);
|
||||||
const disconnect = Lang.bind(_signals, _signals.disconnect);
|
const disconnect = Lang.bind(_signals, _signals.disconnect);
|
||||||
|
|
||||||
// UUID => Array of error messages
|
|
||||||
var errors = {};
|
|
||||||
|
|
||||||
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
|
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
|
||||||
|
|
||||||
/**
|
|
||||||
* versionCheck:
|
|
||||||
* @required: an array of versions we're compatible with
|
|
||||||
* @current: the version we have
|
|
||||||
*
|
|
||||||
* Check if a component is compatible for an extension.
|
|
||||||
* @required is an array, and at least one version must match.
|
|
||||||
* @current must be in the format <major>.<minor>.<point>.<micro>
|
|
||||||
* <micro> is always ignored
|
|
||||||
* <point> is ignored if <minor> is even (so you can target the
|
|
||||||
* whole stable release)
|
|
||||||
* <minor> and <major> must match
|
|
||||||
* Each target version must be at least <major> and <minor>
|
|
||||||
*/
|
|
||||||
function versionCheck(required, current) {
|
|
||||||
let currentArray = current.split('.');
|
|
||||||
let major = currentArray[0];
|
|
||||||
let minor = currentArray[1];
|
|
||||||
let point = currentArray[2];
|
|
||||||
for (let i = 0; i < required.length; i++) {
|
|
||||||
let requiredArray = required[i].split('.');
|
|
||||||
if (requiredArray[0] == major &&
|
|
||||||
requiredArray[1] == minor &&
|
|
||||||
(requiredArray[2] == point ||
|
|
||||||
(requiredArray[2] == undefined && parseInt(minor) % 2 == 0)))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function installExtensionFromUUID(uuid, version_tag) {
|
function installExtensionFromUUID(uuid, version_tag) {
|
||||||
let params = { uuid: uuid,
|
let params = { uuid: uuid,
|
||||||
version_tag: version_tag,
|
version_tag: version_tag,
|
||||||
@ -132,8 +86,8 @@ function installExtensionFromUUID(uuid, version_tag) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function uninstallExtensionFromUUID(uuid) {
|
function uninstallExtensionFromUUID(uuid) {
|
||||||
let meta = extensionMeta[uuid];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
if (!meta)
|
if (!extension)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Try to disable it -- if it's ERROR'd, we can't guarantee that,
|
// Try to disable it -- if it's ERROR'd, we can't guarantee that,
|
||||||
@ -142,22 +96,17 @@ function uninstallExtensionFromUUID(uuid) {
|
|||||||
disableExtension(uuid);
|
disableExtension(uuid);
|
||||||
|
|
||||||
// Don't try to uninstall system extensions
|
// Don't try to uninstall system extensions
|
||||||
if (meta.type != ExtensionType.PER_USER)
|
if (extension.type != ExtensionUtils.ExtensionType.PER_USER)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
meta.state = ExtensionState.UNINSTALLED;
|
extension.state = ExtensionState.UNINSTALLED;
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', extension);
|
||||||
|
|
||||||
delete extensionMeta[uuid];
|
|
||||||
|
|
||||||
// Importers are marked as PERMANENT, so we can't do this.
|
|
||||||
// delete extensions[uuid];
|
|
||||||
extensions[uuid] = undefined;
|
|
||||||
|
|
||||||
|
delete ExtensionUtils.extensions[uuid];
|
||||||
delete extensionStateObjs[uuid];
|
delete extensionStateObjs[uuid];
|
||||||
delete errors[uuid];
|
delete errors[uuid];
|
||||||
|
|
||||||
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(meta.path));
|
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -178,7 +127,7 @@ function gotExtensionZipFile(session, message, uuid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let stream = new Gio.UnixOutputStream({ fd: fd });
|
let stream = new Gio.UnixOutputStream({ fd: fd });
|
||||||
let dir = userExtensionsDir.get_child(uuid);
|
let dir = ExtensionUtils.userExtensionsDir.get_child(uuid);
|
||||||
Shell.write_soup_message_to_stream(stream, message);
|
Shell.write_soup_message_to_stream(stream, message);
|
||||||
stream.close(null);
|
stream.close(null);
|
||||||
let [success, pid] = GLib.spawn_async(null,
|
let [success, pid] = GLib.spawn_async(null,
|
||||||
@ -202,16 +151,16 @@ function gotExtensionZipFile(session, message, uuid) {
|
|||||||
global.settings.set_strv(ENABLED_EXTENSIONS_KEY, enabledExtensions);
|
global.settings.set_strv(ENABLED_EXTENSIONS_KEY, enabledExtensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadExtension(dir, ExtensionType.PER_USER, true);
|
loadExtension(dir, ExtensionUtils.ExtensionType.PER_USER, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function disableExtension(uuid) {
|
function disableExtension(uuid) {
|
||||||
let meta = extensionMeta[uuid];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
if (!meta)
|
if (!extension)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (meta.state != ExtensionState.ENABLED)
|
if (extension.state != ExtensionState.ENABLED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let extensionState = extensionStateObjs[uuid];
|
let extensionState = extensionStateObjs[uuid];
|
||||||
@ -255,41 +204,45 @@ function disableExtension(uuid) {
|
|||||||
|
|
||||||
extensionOrder.splice(orderIdx, 1);
|
extensionOrder.splice(orderIdx, 1);
|
||||||
|
|
||||||
meta.state = ExtensionState.DISABLED;
|
extension.state = ExtensionState.DISABLED;
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
function enableExtension(uuid) {
|
function enableExtension(uuid) {
|
||||||
let meta = extensionMeta[uuid];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
if (!meta)
|
if (!extension)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (meta.state == ExtensionState.INITIALIZED) {
|
if (extension.state == ExtensionState.INITIALIZED) {
|
||||||
loadExtension(meta.dir, meta.type, true);
|
loadExtension(extension.dir, extension.type, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta.state != ExtensionState.DISABLED)
|
if (extension.state != ExtensionState.DISABLED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let extensionState = extensionStateObjs[uuid];
|
|
||||||
|
|
||||||
extensionOrder.push(uuid);
|
extensionOrder.push(uuid);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
extensionState.enable();
|
extension.stateObj.enable();
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
logExtensionError(uuid, e.toString());
|
logExtensionError(uuid, e.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
meta.state = ExtensionState.ENABLED;
|
extension.state = ExtensionState.ENABLED;
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
function logExtensionError(uuid, message, state) {
|
function logExtensionError(uuid, message, state) {
|
||||||
if (!errors[uuid]) errors[uuid] = [];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
errors[uuid].push(message);
|
if (!extension)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!extension.errors)
|
||||||
|
extension.errors = [];
|
||||||
|
|
||||||
|
extension.errors.push(message);
|
||||||
global.logError('Extension "%s" had error: %s'.format(uuid, message));
|
global.logError('Extension "%s" had error: %s'.format(uuid, message));
|
||||||
state = state || ExtensionState.ERROR;
|
state = state || ExtensionState.ERROR;
|
||||||
_signals.emit('extension-state-changed', { uuid: uuid,
|
_signals.emit('extension-state-changed', { uuid: uuid,
|
||||||
@ -298,72 +251,31 @@ function logExtensionError(uuid, message, state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loadExtension(dir, type, enabled) {
|
function loadExtension(dir, type, enabled) {
|
||||||
let info;
|
|
||||||
let uuid = dir.get_basename();
|
let uuid = dir.get_basename();
|
||||||
|
let extension;
|
||||||
|
|
||||||
let metadataFile = dir.get_child('metadata.json');
|
if (ExtensionUtils.extensions[uuid] != undefined) {
|
||||||
if (!metadataFile.query_exists(null)) {
|
throw new Error('extension already loaded');
|
||||||
logExtensionError(uuid, 'Missing metadata.json');
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let metadataContents;
|
|
||||||
try {
|
try {
|
||||||
metadataContents = Shell.get_file_contents_utf8_sync(metadataFile.get_path());
|
extension = ExtensionUtils.createExtensionObject(uuid, dir, type);
|
||||||
} catch (e) {
|
} catch(e) {
|
||||||
logExtensionError(uuid, 'Failed to load metadata.json: ' + e);
|
logExtensionError(uuid, e.message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let meta;
|
|
||||||
try {
|
|
||||||
meta = JSON.parse(metadataContents);
|
|
||||||
} catch (e) {
|
|
||||||
logExtensionError(uuid, 'Failed to parse metadata.json: ' + e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let requiredProperties = ['uuid', 'name', 'description', 'shell-version'];
|
|
||||||
for (let i = 0; i < requiredProperties.length; i++) {
|
|
||||||
let prop = requiredProperties[i];
|
|
||||||
if (!meta[prop]) {
|
|
||||||
logExtensionError(uuid, 'missing "' + prop + '" property in metadata.json');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extensions[uuid] != undefined) {
|
|
||||||
logExtensionError(uuid, 'extension already loaded');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Encourage people to add this
|
|
||||||
if (!meta['url']) {
|
|
||||||
global.log('Warning: Missing "url" property in metadata.json');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uuid != meta.uuid) {
|
|
||||||
logExtensionError(uuid, 'uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
extensionMeta[uuid] = meta;
|
|
||||||
meta.type = type;
|
|
||||||
meta.dir = dir;
|
|
||||||
meta.path = dir.get_path();
|
|
||||||
meta.error = '';
|
|
||||||
|
|
||||||
// Default to error, we set success as the last step
|
// Default to error, we set success as the last step
|
||||||
meta.state = ExtensionState.ERROR;
|
extension.state = ExtensionState.ERROR;
|
||||||
|
|
||||||
if (!versionCheck(meta['shell-version'], Config.PACKAGE_VERSION) ||
|
if (ExtensionUtils.isOutOfDate(extension)) {
|
||||||
(meta['js-version'] && !versionCheck(meta['js-version'], Config.GJS_VERSION))) {
|
|
||||||
logExtensionError(uuid, 'extension is not compatible with current GNOME Shell and/or GJS version', ExtensionState.OUT_OF_DATE);
|
logExtensionError(uuid, 'extension is not compatible with current GNOME Shell and/or GJS version', ExtensionState.OUT_OF_DATE);
|
||||||
meta.state = ExtensionState.OUT_OF_DATE;
|
extension.state = ExtensionState.OUT_OF_DATE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
meta.state = ExtensionState.INITIALIZED;
|
extension.state = ExtensionState.INITIALIZED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -388,12 +300,12 @@ function loadExtension(dir, type, enabled) {
|
|||||||
let extensionModule;
|
let extensionModule;
|
||||||
let extensionState = null;
|
let extensionState = null;
|
||||||
try {
|
try {
|
||||||
global.add_extension_importer('imports.ui.extensionSystem.extensions', meta.uuid, dir.get_path());
|
ExtensionUtils.installImporter(extension);
|
||||||
extensionModule = extensions[meta.uuid].extension;
|
extensionModule = extension.imports.extension;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (stylesheetPath != null)
|
if (stylesheetPath != null)
|
||||||
theme.unload_stylesheet(stylesheetPath);
|
theme.unload_stylesheet(stylesheetPath);
|
||||||
logExtensionError(uuid, e);
|
logExtensionError(uuid, '' + e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,7 +315,7 @@ function loadExtension(dir, type, enabled) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
extensionState = extensionModule.init(meta);
|
extensionState = extensionModule.init(extension);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (stylesheetPath != null)
|
if (stylesheetPath != null)
|
||||||
theme.unload_stylesheet(stylesheetPath);
|
theme.unload_stylesheet(stylesheetPath);
|
||||||
@ -413,7 +325,7 @@ function loadExtension(dir, type, enabled) {
|
|||||||
|
|
||||||
if (!extensionState)
|
if (!extensionState)
|
||||||
extensionState = extensionModule;
|
extensionState = extensionModule;
|
||||||
extensionStateObjs[uuid] = extensionState;
|
extension.stateObj = extensionState;
|
||||||
|
|
||||||
if (!extensionState.enable) {
|
if (!extensionState.enable) {
|
||||||
logExtensionError(uuid, 'missing \'enable\' function');
|
logExtensionError(uuid, 'missing \'enable\' function');
|
||||||
@ -424,13 +336,13 @@ function loadExtension(dir, type, enabled) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
meta.state = ExtensionState.DISABLED;
|
extension.state = ExtensionState.DISABLED;
|
||||||
|
|
||||||
enableExtension(uuid);
|
enableExtension(uuid);
|
||||||
|
|
||||||
_signals.emit('extension-loaded', meta.uuid);
|
_signals.emit('extension-loaded', uuid);
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', extension);
|
||||||
global.log('Loaded extension ' + meta.uuid);
|
global.log('Loaded extension ' + uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEnabledExtensionsChanged() {
|
function onEnabledExtensionsChanged() {
|
||||||
@ -456,50 +368,17 @@ function onEnabledExtensionsChanged() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
let userExtensionsPath = GLib.build_filenamev([global.userdatadir, 'extensions']);
|
ExtensionUtils.init();
|
||||||
userExtensionsDir = Gio.file_new_for_path(userExtensionsPath);
|
|
||||||
try {
|
|
||||||
if (!userExtensionsDir.query_exists(null))
|
|
||||||
userExtensionsDir.make_directory_with_parents(null);
|
|
||||||
} catch (e) {
|
|
||||||
global.logError('' + e);
|
|
||||||
}
|
|
||||||
|
|
||||||
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
|
||||||
enabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
|
enabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _loadExtensionsIn(dir, type) {
|
|
||||||
let fileEnum;
|
|
||||||
let file, info;
|
|
||||||
try {
|
|
||||||
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
|
|
||||||
} catch (e) {
|
|
||||||
global.logError('' + e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((info = fileEnum.next_file(null)) != null) {
|
|
||||||
let fileType = info.get_file_type();
|
|
||||||
if (fileType != Gio.FileType.DIRECTORY)
|
|
||||||
continue;
|
|
||||||
let name = info.get_name();
|
|
||||||
let child = dir.get_child(name);
|
|
||||||
let enabled = enabledExtensions.indexOf(name) != -1;
|
|
||||||
loadExtension(child, type, enabled);
|
|
||||||
}
|
|
||||||
fileEnum.close(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadExtensions() {
|
function loadExtensions() {
|
||||||
let systemDataDirs = GLib.get_system_data_dirs();
|
ExtensionUtils.scanExtensions(function(uuid, dir, type) {
|
||||||
for (let i = 0; i < systemDataDirs.length; i++) {
|
let enabled = enabledExtensions.indexOf(uuid) != -1;
|
||||||
let dirPath = systemDataDirs[i] + '/gnome-shell/extensions';
|
loadExtension(dir, type, enabled);
|
||||||
let dir = Gio.file_new_for_path(dirPath);
|
});
|
||||||
if (dir.query_exists(null))
|
|
||||||
_loadExtensionsIn(dir, ExtensionType.SYSTEM);
|
|
||||||
}
|
|
||||||
_loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const InstallExtensionDialog = new Lang.Class({
|
const InstallExtensionDialog = new Lang.Class({
|
||||||
@ -545,13 +424,13 @@ const InstallExtensionDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onInstallButtonPressed: function(button, event) {
|
_onInstallButtonPressed: function(button, event) {
|
||||||
let meta = { uuid: this._uuid,
|
let extension = { uuid: this._uuid,
|
||||||
state: ExtensionState.DOWNLOADING,
|
state: ExtensionState.DOWNLOADING,
|
||||||
error: '' };
|
error: '' };
|
||||||
|
|
||||||
extensionMeta[this._uuid] = meta;
|
ExtensionUtils.extensions[this._uuid] = extension;
|
||||||
|
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', extension);
|
||||||
|
|
||||||
let params = { version_tag: this._version_tag,
|
let params = { version_tag: this._version_tag,
|
||||||
shell_version: Config.PACKAGE_VERSION,
|
shell_version: Config.PACKAGE_VERSION,
|
||||||
|
45
js/ui/flashspot.js
Normal file
45
js/ui/flashspot.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
const Lightbox = imports.ui.lightbox;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
const FLASHSPOT_ANIMATION_TIME = 0.25; // seconds
|
||||||
|
|
||||||
|
const Flashspot = new Lang.Class({
|
||||||
|
Name: 'Flashspot',
|
||||||
|
Extends: Lightbox.Lightbox,
|
||||||
|
|
||||||
|
_init: function(area) {
|
||||||
|
this.parent(Main.uiGroup, { inhibitEvents: true,
|
||||||
|
width: area.width,
|
||||||
|
height: area.height });
|
||||||
|
|
||||||
|
this.actor.style_class = 'flashspot';
|
||||||
|
this.actor.set_position(area.x, area.y);
|
||||||
|
},
|
||||||
|
|
||||||
|
fire: function() {
|
||||||
|
this.actor.opacity = 0;
|
||||||
|
Tweener.addTween(this.actor,
|
||||||
|
{ opacity: 255,
|
||||||
|
time: FLASHSPOT_ANIMATION_TIME,
|
||||||
|
transition: 'linear',
|
||||||
|
onComplete: Lang.bind(this, this._onFireShowComplete)
|
||||||
|
});
|
||||||
|
this.actor.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onFireShowComplete: function() {
|
||||||
|
Tweener.addTween(this.actor,
|
||||||
|
{ opacity: 0,
|
||||||
|
time: FLASHSPOT_ANIMATION_TIME,
|
||||||
|
transition: 'linear',
|
||||||
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this.destroy();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -305,7 +305,7 @@ const IconGrid = new Lang.Class({
|
|||||||
_onStyleChanged: function() {
|
_onStyleChanged: function() {
|
||||||
let themeNode = this.actor.get_theme_node();
|
let themeNode = this.actor.get_theme_node();
|
||||||
this._spacing = themeNode.get_length('spacing');
|
this._spacing = themeNode.get_length('spacing');
|
||||||
this._item_size = themeNode.get_length('-shell-grid-item-size');
|
this._item_size = themeNode.get_length('-shell-grid-item-size') || ICON_SIZE;
|
||||||
this._grid.queue_relayout();
|
this._grid.queue_relayout();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ const Mainloop = imports.mainloop;
|
|||||||
|
|
||||||
const History = imports.misc.history;
|
const History = imports.misc.history;
|
||||||
const ExtensionSystem = imports.ui.extensionSystem;
|
const ExtensionSystem = imports.ui.extensionSystem;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Link = imports.ui.link;
|
const Link = imports.ui.link;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
@ -728,7 +729,7 @@ const Extensions = new Lang.Class({
|
|||||||
this._extensionsList.add(this._noExtensions);
|
this._extensionsList.add(this._noExtensions);
|
||||||
this.actor.add(this._extensionsList);
|
this.actor.add(this._extensionsList);
|
||||||
|
|
||||||
for (let uuid in ExtensionSystem.extensionMeta)
|
for (let uuid in ExtensionUtils.extensions)
|
||||||
this._loadExtension(null, uuid);
|
this._loadExtension(null, uuid);
|
||||||
|
|
||||||
ExtensionSystem.connect('extension-loaded',
|
ExtensionSystem.connect('extension-loaded',
|
||||||
@ -736,10 +737,10 @@ const Extensions = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_loadExtension: function(o, uuid) {
|
_loadExtension: function(o, uuid) {
|
||||||
let extension = ExtensionSystem.extensionMeta[uuid];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
// There can be cases where we create dummy extension metadata
|
// There can be cases where we create dummy extension metadata
|
||||||
// that's not really a proper extension. Don't bother with these.
|
// that's not really a proper extension. Don't bother with these.
|
||||||
if (!extension.name)
|
if (!extension.metadata.name)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let extensionDisplay = this._createExtensionDisplay(extension);
|
let extensionDisplay = this._createExtensionDisplay(extension);
|
||||||
@ -751,25 +752,24 @@ const Extensions = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onViewSource: function (actor) {
|
_onViewSource: function (actor) {
|
||||||
let meta = actor._extensionMeta;
|
let extension = actor._extension;
|
||||||
let file = Gio.file_new_for_path(meta.path);
|
let uri = extension.dir.get_uri();
|
||||||
let uri = file.get_uri();
|
|
||||||
Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context());
|
Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context());
|
||||||
Main.lookingGlass.close();
|
Main.lookingGlass.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onWebPage: function (actor) {
|
_onWebPage: function (actor) {
|
||||||
let meta = actor._extensionMeta;
|
let extension = actor._extension;
|
||||||
Gio.app_info_launch_default_for_uri(meta.url, global.create_app_launch_context());
|
Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context());
|
||||||
Main.lookingGlass.close();
|
Main.lookingGlass.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onViewErrors: function (actor) {
|
_onViewErrors: function (actor) {
|
||||||
let meta = actor._extensionMeta;
|
let extension = actor._extension;
|
||||||
let shouldShow = !actor._isShowing;
|
let shouldShow = !actor._isShowing;
|
||||||
|
|
||||||
if (shouldShow) {
|
if (shouldShow) {
|
||||||
let errors = ExtensionSystem.errors[meta.uuid];
|
let errors = extension.errors;
|
||||||
let errorDisplay = new St.BoxLayout({ vertical: true });
|
let errorDisplay = new St.BoxLayout({ vertical: true });
|
||||||
if (errors && errors.length) {
|
if (errors && errors.length) {
|
||||||
for (let i = 0; i < errors.length; i ++)
|
for (let i = 0; i < errors.length; i ++)
|
||||||
@ -809,36 +809,36 @@ const Extensions = new Lang.Class({
|
|||||||
return 'Unknown'; // Not translated, shouldn't appear
|
return 'Unknown'; // Not translated, shouldn't appear
|
||||||
},
|
},
|
||||||
|
|
||||||
_createExtensionDisplay: function(meta) {
|
_createExtensionDisplay: function(extension) {
|
||||||
let box = new St.BoxLayout({ style_class: 'lg-extension', vertical: true });
|
let box = new St.BoxLayout({ style_class: 'lg-extension', vertical: true });
|
||||||
let name = new St.Label({ style_class: 'lg-extension-name',
|
let name = new St.Label({ style_class: 'lg-extension-name',
|
||||||
text: meta.name });
|
text: extension.metadata.name });
|
||||||
box.add(name, { expand: true });
|
box.add(name, { expand: true });
|
||||||
let description = new St.Label({ style_class: 'lg-extension-description',
|
let description = new St.Label({ style_class: 'lg-extension-description',
|
||||||
text: meta.description || 'No description' });
|
text: extension.metadata.description || 'No description' });
|
||||||
box.add(description, { expand: true });
|
box.add(description, { expand: true });
|
||||||
|
|
||||||
let metaBox = new St.BoxLayout({ style_class: 'lg-extension-meta' });
|
let metaBox = new St.BoxLayout({ style_class: 'lg-extension-meta' });
|
||||||
box.add(metaBox);
|
box.add(metaBox);
|
||||||
let stateString = this._stateToString(meta.state);
|
let stateString = this._stateToString(extension.state);
|
||||||
let state = new St.Label({ style_class: 'lg-extension-state',
|
let state = new St.Label({ style_class: 'lg-extension-state',
|
||||||
text: this._stateToString(meta.state) });
|
text: this._stateToString(extension.state) });
|
||||||
metaBox.add(state);
|
metaBox.add(state);
|
||||||
|
|
||||||
let viewsource = new Link.Link({ label: _("View Source") });
|
let viewsource = new Link.Link({ label: _("View Source") });
|
||||||
viewsource.actor._extensionMeta = meta;
|
viewsource.actor._extension = extension;
|
||||||
viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource));
|
viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource));
|
||||||
metaBox.add(viewsource.actor);
|
metaBox.add(viewsource.actor);
|
||||||
|
|
||||||
if (meta.url) {
|
if (extension.metadata.url) {
|
||||||
let webpage = new Link.Link({ label: _("Web Page") });
|
let webpage = new Link.Link({ label: _("Web Page") });
|
||||||
webpage.actor._extensionMeta = meta;
|
webpage.actor._extension = extension;
|
||||||
webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage));
|
webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage));
|
||||||
metaBox.add(webpage.actor);
|
metaBox.add(webpage.actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
let viewerrors = new Link.Link({ label: _("Show Errors") });
|
let viewerrors = new Link.Link({ label: _("Show Errors") });
|
||||||
viewerrors.actor._extensionMeta = meta;
|
viewerrors.actor._extension = extension;
|
||||||
viewerrors.actor._parentBox = box;
|
viewerrors.actor._parentBox = box;
|
||||||
viewerrors.actor._isShowing = false;
|
viewerrors.actor._isShowing = false;
|
||||||
viewerrors.actor.connect('clicked', Lang.bind(this, this._onViewErrors));
|
viewerrors.actor.connect('clicked', Lang.bind(this, this._onViewErrors));
|
||||||
|
@ -556,6 +556,7 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
||||||
|
|
||||||
this._magView = null;
|
this._magView = null;
|
||||||
|
this._background = null;
|
||||||
this._uiGroupClone = null;
|
this._uiGroupClone = null;
|
||||||
this._mouseSourceActor = mouseSourceActor;
|
this._mouseSourceActor = mouseSourceActor;
|
||||||
this._mouseActor = null;
|
this._mouseActor = null;
|
||||||
@ -565,12 +566,15 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._viewPortX = 0;
|
this._viewPortX = 0;
|
||||||
this._viewPortY = 0;
|
this._viewPortY = 0;
|
||||||
this._viewPortWidth = global.screen_width;
|
this._viewPortWidth = global.screen_width;
|
||||||
this._viewPortWidth = global.screen_height;
|
this._viewPortHeight = global.screen_height;
|
||||||
this._xCenter = this._viewPortWidth / 2;
|
this._xCenter = this._viewPortWidth / 2;
|
||||||
this._yCenter = this._viewPortHeight / 2;
|
this._yCenter = this._viewPortHeight / 2;
|
||||||
this._xMagFactor = 1;
|
this._xMagFactor = 1;
|
||||||
this._yMagFactor = 1;
|
this._yMagFactor = 1;
|
||||||
this._followingCursor = false;
|
this._followingCursor = false;
|
||||||
|
|
||||||
|
Main.layoutManager.connect('monitors-changed',
|
||||||
|
Lang.bind(this, this._monitorsChanged));
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -891,15 +895,15 @@ const ZoomRegion = new Lang.Class({
|
|||||||
|
|
||||||
// Add a background for when the magnified uiGroup is scrolled
|
// Add a background for when the magnified uiGroup is scrolled
|
||||||
// out of view (don't want to see desktop showing through).
|
// out of view (don't want to see desktop showing through).
|
||||||
let background = new Clutter.Rectangle({ color: Main.DEFAULT_BACKGROUND_COLOR });
|
this._background = new Clutter.Rectangle({ color: Main.DEFAULT_BACKGROUND_COLOR });
|
||||||
mainGroup.add_actor(background);
|
mainGroup.add_actor(this._background);
|
||||||
|
|
||||||
// Clone the group that contains all of UI on the screen. This is the
|
// Clone the group that contains all of UI on the screen. This is the
|
||||||
// chrome, the windows, etc.
|
// chrome, the windows, etc.
|
||||||
this._uiGroupClone = new Clutter.Clone({ source: Main.uiGroup });
|
this._uiGroupClone = new Clutter.Clone({ source: Main.uiGroup });
|
||||||
mainGroup.add_actor(this._uiGroupClone);
|
mainGroup.add_actor(this._uiGroupClone);
|
||||||
Main.uiGroup.set_size(global.screen_width, global.screen_height);
|
Main.uiGroup.set_size(global.screen_width, global.screen_height);
|
||||||
background.set_size(global.screen_width, global.screen_height);
|
this._background.set_size(global.screen_width, global.screen_height);
|
||||||
|
|
||||||
// Add either the given mouseSourceActor to the ZoomRegion, or a clone of
|
// Add either the given mouseSourceActor to the ZoomRegion, or a clone of
|
||||||
// it.
|
// it.
|
||||||
@ -923,6 +927,7 @@ const ZoomRegion = new Lang.Class({
|
|||||||
|
|
||||||
this._magView.destroy();
|
this._magView.destroy();
|
||||||
this._magView = null;
|
this._magView = null;
|
||||||
|
this._background = null;
|
||||||
this._uiGroupClone = null;
|
this._uiGroupClone = null;
|
||||||
this._mouseActor = null;
|
this._mouseActor = null;
|
||||||
this._crossHairsActor = null;
|
this._crossHairsActor = null;
|
||||||
@ -1145,6 +1150,22 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._crossHairsActor.set_position(xMagMouse - groupWidth / 2,
|
this._crossHairsActor.set_position(xMagMouse - groupWidth / 2,
|
||||||
yMagMouse - groupHeight / 2);
|
yMagMouse - groupHeight / 2);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_monitorsChanged: function() {
|
||||||
|
if (!this.isActive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Main.uiGroup.set_size(global.screen_width, global.screen_height);
|
||||||
|
this._background.set_size(global.screen_width, global.screen_height);
|
||||||
|
|
||||||
|
if (this._screenPosition == GDesktopEnums.MagnifierScreenPosition.NONE)
|
||||||
|
this._setViewPort({ x: this._viewPortX,
|
||||||
|
y: this._viewPortY,
|
||||||
|
width: this._viewPortWidth,
|
||||||
|
height: this._viewPortHeight });
|
||||||
|
else
|
||||||
|
this.setScreenPosition(this._screenPosition);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1175,6 +1196,14 @@ const Crosshairs = new Lang.Class({
|
|||||||
this._clipSize = [0, 0];
|
this._clipSize = [0, 0];
|
||||||
this._clones = [];
|
this._clones = [];
|
||||||
this.reCenter();
|
this.reCenter();
|
||||||
|
|
||||||
|
Main.layoutManager.connect('monitors-changed',
|
||||||
|
Lang.bind(this, this._monitorsChanged));
|
||||||
|
},
|
||||||
|
|
||||||
|
_monitorsChanged: function() {
|
||||||
|
this._actor.set_size(global.screen_width * 3, global.screen_height * 3);
|
||||||
|
this.reCenter();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2048,8 +2048,11 @@ const MessageTray = new Lang.Class({
|
|||||||
if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer && !requestedNotificationStackIsEmpty)
|
if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer && !requestedNotificationStackIsEmpty)
|
||||||
this._showSummaryBoxPointer();
|
this._showSummaryBoxPointer();
|
||||||
} else if (this._summaryBoxPointerState == State.SHOWN) {
|
} else if (this._summaryBoxPointerState == State.SHOWN) {
|
||||||
if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer || mustHideSummary)
|
if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer || mustHideSummary) {
|
||||||
this._hideSummaryBoxPointer();
|
this._hideSummaryBoxPointer();
|
||||||
|
if (wrongSummaryBoxPointer)
|
||||||
|
this._showSummaryBoxPointer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tray itself
|
// Tray itself
|
||||||
@ -2390,9 +2393,8 @@ const MessageTray = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._summaryBoxPointerState = State.HIDING;
|
this._summaryBoxPointerState = State.HIDING;
|
||||||
// Unset this._clickedSummaryItem if we are no longer showing the summary or if
|
// Unset this._clickedSummaryItem if we are no longer showing the summary
|
||||||
// this._clickedSummaryItem is still the item associated with the currently showing box pointer
|
if (this._summaryState != State.SHOWN)
|
||||||
if (this._summaryState != State.SHOWN || this._summaryBoxPointerItem == this._clickedSummaryItem)
|
|
||||||
this._unsetClickedSummaryItem();
|
this._unsetClickedSummaryItem();
|
||||||
|
|
||||||
this._focusGrabber.ungrabFocus();
|
this._focusGrabber.ungrabFocus();
|
||||||
|
@ -237,7 +237,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
Extends: PanelMenu.Button,
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
_init: function(menuManager) {
|
_init: function(menuManager) {
|
||||||
this.parent(0.0, true);
|
this.parent(0.0, null, true);
|
||||||
|
|
||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
@ -249,6 +249,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
let bin = new St.Bin({ name: 'appMenu' });
|
let bin = new St.Bin({ name: 'appMenu' });
|
||||||
this.actor.add_actor(bin);
|
this.actor.add_actor(bin);
|
||||||
|
|
||||||
|
this.actor.bind_property("reactive", this.actor, "can-focus", 0);
|
||||||
this.actor.reactive = false;
|
this.actor.reactive = false;
|
||||||
this._targetIsCurrent = false;
|
this._targetIsCurrent = false;
|
||||||
|
|
||||||
@ -497,6 +498,9 @@ const AppMenuButton = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!targetApp.is_on_workspace(workspace))
|
||||||
|
return;
|
||||||
|
|
||||||
if (!this._targetIsCurrent) {
|
if (!this._targetIsCurrent) {
|
||||||
this.actor.reactive = true;
|
this.actor.reactive = true;
|
||||||
this._targetIsCurrent = true;
|
this._targetIsCurrent = true;
|
||||||
@ -537,6 +541,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
|
let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
|
||||||
|
|
||||||
this._label.setText(targetApp.get_name());
|
this._label.setText(targetApp.get_name());
|
||||||
|
this.setName(targetApp.get_name());
|
||||||
|
|
||||||
this._iconBox.set_child(icon);
|
this._iconBox.set_child(icon);
|
||||||
this._iconBox.show();
|
this._iconBox.show();
|
||||||
|
@ -96,7 +96,7 @@ const Button = new Lang.Class({
|
|||||||
Name: 'PanelMenuButton',
|
Name: 'PanelMenuButton',
|
||||||
Extends: ButtonBox,
|
Extends: ButtonBox,
|
||||||
|
|
||||||
_init: function(menuAlignment, dontCreateMenu) {
|
_init: function(menuAlignment, nameText, dontCreateMenu) {
|
||||||
this.parent({ reactive: true,
|
this.parent({ reactive: true,
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
@ -108,6 +108,24 @@ const Button = new Lang.Class({
|
|||||||
this.menu = null;
|
this.menu = null;
|
||||||
else
|
else
|
||||||
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
||||||
|
|
||||||
|
this.setName(nameText);
|
||||||
|
},
|
||||||
|
|
||||||
|
setName: function(text) {
|
||||||
|
if (text != null) {
|
||||||
|
// This is the easiest way to provide a accessible name to
|
||||||
|
// this widget. The label could be also used for other
|
||||||
|
// purposes in the future.
|
||||||
|
if (!this.label) {
|
||||||
|
this.label = new St.Label({ text: text });
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
} else
|
||||||
|
this.label.text = text;
|
||||||
|
} else {
|
||||||
|
this.label = null;
|
||||||
|
this.actor.label_actor = null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
setMenu: function(menu) {
|
setMenu: function(menu) {
|
||||||
@ -203,8 +221,8 @@ const SystemStatusButton = new Lang.Class({
|
|||||||
Name: 'SystemStatusButton',
|
Name: 'SystemStatusButton',
|
||||||
Extends: Button,
|
Extends: Button,
|
||||||
|
|
||||||
_init: function(iconName,tooltipText) {
|
_init: function(iconName, tooltipText, nameText) {
|
||||||
this.parent(0.0);
|
this.parent(0.0, nameText);
|
||||||
|
|
||||||
this._iconActor = new St.Icon({ icon_name: iconName,
|
this._iconActor = new St.Icon({ icon_name: iconName,
|
||||||
icon_type: St.IconType.SYMBOLIC,
|
icon_type: St.IconType.SYMBOLIC,
|
||||||
|
@ -157,8 +157,8 @@ const PlacesManager = new Lang.Class({
|
|||||||
function (size) {
|
function (size) {
|
||||||
// do NOT use St.Icon here, it crashes the shell
|
// do NOT use St.Icon here, it crashes the shell
|
||||||
// see wanda.js for details
|
// see wanda.js for details
|
||||||
return St.TextureCache.get_default().load_icon_name('applications-internet',
|
return St.TextureCache.get_default().load_icon_name(null,
|
||||||
null,
|
'applications-internet',
|
||||||
St.IconType.FULLCOLOR,
|
St.IconType.FULLCOLOR,
|
||||||
size);
|
size);
|
||||||
},
|
},
|
||||||
|
@ -389,6 +389,7 @@ const PopupMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
|
this.actor.label_actor = this.label
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -773,6 +774,12 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we allow pressing space to toggle the switch
|
||||||
|
// without closing the menu
|
||||||
|
if (event.type() == Clutter.EventType.KEY_PRESS &&
|
||||||
|
event.get_key_symbol() == Clutter.KEY_space)
|
||||||
|
return;
|
||||||
|
|
||||||
this.parent(event);
|
this.parent(event);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -869,6 +876,10 @@ const PopupMenuBase = new Lang.Class({
|
|||||||
return menuItem;
|
return menuItem;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isEmpty: function() {
|
||||||
|
return this.box.get_children().length == 0;
|
||||||
|
},
|
||||||
|
|
||||||
isChildMenu: function(menu) {
|
isChildMenu: function(menu) {
|
||||||
return this._childMenus.indexOf(menu) != -1;
|
return this._childMenus.indexOf(menu) != -1;
|
||||||
},
|
},
|
||||||
@ -1194,6 +1205,9 @@ const PopupMenu = new Lang.Class({
|
|||||||
if (this.isOpen)
|
if (this.isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (this.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
|
|
||||||
this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment);
|
this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment);
|
||||||
@ -1285,6 +1299,9 @@ const PopupSubMenu = new Lang.Class({
|
|||||||
if (this.isOpen)
|
if (this.isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (this.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
|
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
@ -1428,6 +1445,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
this._triangle = new St.Label({ text: '\u25B8' });
|
this._triangle = new St.Label({ text: '\u25B8' });
|
||||||
this.addActor(this._triangle, { align: St.Align.END });
|
this.addActor(this._triangle, { align: St.Align.END });
|
||||||
|
|
||||||
@ -1528,6 +1546,9 @@ const PopupComboMenu = new Lang.Class({
|
|||||||
if (this.isOpen)
|
if (this.isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (this.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
|
|
||||||
let [sourceX, sourceY] = this.sourceActor.get_transformed_position();
|
let [sourceX, sourceY] = this.sourceActor.get_transformed_position();
|
||||||
|
@ -3,9 +3,12 @@
|
|||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
const ExtensionSystem = imports.ui.extensionSystem;
|
const ExtensionSystem = imports.ui.extensionSystem;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const Flashspot = imports.ui.flashspot;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const GnomeShellIface = <interface name="org.gnome.Shell">
|
const GnomeShellIface = <interface name="org.gnome.Shell">
|
||||||
@ -30,15 +33,18 @@ const GnomeShellIface = <interface name="org.gnome.Shell">
|
|||||||
<arg type="i" direction="in" name="y"/>
|
<arg type="i" direction="in" name="y"/>
|
||||||
<arg type="i" direction="in" name="width"/>
|
<arg type="i" direction="in" name="width"/>
|
||||||
<arg type="i" direction="in" name="height"/>
|
<arg type="i" direction="in" name="height"/>
|
||||||
|
<arg type="b" direction="in" name="flash"/>
|
||||||
<arg type="s" direction="in" name="filename"/>
|
<arg type="s" direction="in" name="filename"/>
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="ScreenshotWindow">
|
<method name="ScreenshotWindow">
|
||||||
<arg type="b" direction="in" name="include_frame"/>
|
<arg type="b" direction="in" name="include_frame"/>
|
||||||
|
<arg type="b" direction="in" name="flash"/>
|
||||||
<arg type="s" direction="in" name="filename"/>
|
<arg type="s" direction="in" name="filename"/>
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="Screenshot">
|
<method name="Screenshot">
|
||||||
|
<arg type="b" direction="in" name="flash"/>
|
||||||
<arg type="s" direction="in" name="filename"/>
|
<arg type="s" direction="in" name="filename"/>
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/>
|
||||||
</method>
|
</method>
|
||||||
@ -56,6 +62,9 @@ const GnomeShellIface = <interface name="org.gnome.Shell">
|
|||||||
<arg type="s" direction="in" name="uuid"/>
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="LaunchExtensionPrefs">
|
||||||
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
|
</method>
|
||||||
<property name="OverviewActive" type="b" access="readwrite" />
|
<property name="OverviewActive" type="b" access="readwrite" />
|
||||||
<property name="ApiVersion" type="i" access="read" />
|
<property name="ApiVersion" type="i" access="read" />
|
||||||
<property name="ShellVersion" type="s" access="read" />
|
<property name="ShellVersion" type="s" access="read" />
|
||||||
@ -109,6 +118,16 @@ const GnomeShell = new Lang.Class({
|
|||||||
return [success, returnValue];
|
return [success, returnValue];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onScreenshotComplete: function(obj, result, area, flash, invocation) {
|
||||||
|
if (flash) {
|
||||||
|
let flashspot = new Flashspot.Flashspot(area);
|
||||||
|
flashspot.fire();
|
||||||
|
}
|
||||||
|
|
||||||
|
let retval = GLib.Variant.new('(b)', [result]);
|
||||||
|
invocation.return_value(retval);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ScreenshotArea:
|
* ScreenshotArea:
|
||||||
* @x: The X coordinate of the area
|
* @x: The X coordinate of the area
|
||||||
@ -123,12 +142,10 @@ const GnomeShell = new Lang.Class({
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ScreenshotAreaAsync : function (params, invocation) {
|
ScreenshotAreaAsync : function (params, invocation) {
|
||||||
let [x, y, width, height, filename, callback] = params;
|
let [x, y, width, height, flash, filename, callback] = params;
|
||||||
global.screenshot_area (x, y, width, height, filename,
|
global.screenshot_area (x, y, width, height, filename,
|
||||||
function (obj, result) {
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
let retval = GLib.Variant.new('(b)', [result]);
|
flash, invocation));
|
||||||
invocation.return_value(retval);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -141,8 +158,11 @@ const GnomeShell = new Lang.Class({
|
|||||||
* indicating whether the operation was successful or not.
|
* indicating whether the operation was successful or not.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ScreenshotWindow : function (include_frame, filename) {
|
ScreenshotWindowAsync : function (params, invocation) {
|
||||||
return global.screenshot_window (include_frame, filename);
|
let [include_frame, flash, filename] = params;
|
||||||
|
global.screenshot_window (include_frame, filename,
|
||||||
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
|
flash, invocation));
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,17 +175,15 @@ const GnomeShell = new Lang.Class({
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ScreenshotAsync : function (params, invocation) {
|
ScreenshotAsync : function (params, invocation) {
|
||||||
let [filename] = params;
|
let [flash, filename] = params;
|
||||||
global.screenshot(filename,
|
global.screenshot(filename,
|
||||||
function (obj, result) {
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
let retval = GLib.Variant.new('(b)', [result]);
|
flash, invocation));
|
||||||
invocation.return_value(retval);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
ListExtensions: function() {
|
ListExtensions: function() {
|
||||||
let out = {};
|
let out = {};
|
||||||
for (let uuid in ExtensionSystem.extensionMeta) {
|
for (let uuid in ExtensionUtils.extensions) {
|
||||||
let dbusObj = this.GetExtensionInfo(uuid);
|
let dbusObj = this.GetExtensionInfo(uuid);
|
||||||
out[uuid] = dbusObj;
|
out[uuid] = dbusObj;
|
||||||
}
|
}
|
||||||
@ -173,10 +191,23 @@ const GnomeShell = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
GetExtensionInfo: function(uuid) {
|
GetExtensionInfo: function(uuid) {
|
||||||
let meta = ExtensionSystem.extensionMeta[uuid] || {};
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
|
if (!extension)
|
||||||
|
return {};
|
||||||
|
|
||||||
|
let obj = {};
|
||||||
|
Lang.copyProperties(extension.metadata, obj);
|
||||||
|
|
||||||
|
// Only serialize the properties that we actually need.
|
||||||
|
const serializedProperties = ["type", "state", "path", "error", "hasPrefs"];
|
||||||
|
|
||||||
|
serializedProperties.forEach(function(prop) {
|
||||||
|
obj[prop] = extension[prop];
|
||||||
|
});
|
||||||
|
|
||||||
let out = {};
|
let out = {};
|
||||||
for (let key in meta) {
|
for (let key in obj) {
|
||||||
let val = meta[key];
|
let val = obj[key];
|
||||||
let type;
|
let type;
|
||||||
switch (typeof val) {
|
switch (typeof val) {
|
||||||
case 'string':
|
case 'string':
|
||||||
@ -185,16 +216,27 @@ const GnomeShell = new Lang.Class({
|
|||||||
case 'number':
|
case 'number':
|
||||||
type = 'd';
|
type = 'd';
|
||||||
break;
|
break;
|
||||||
|
case 'boolean':
|
||||||
|
type = 'b';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[key] = GLib.Variant.new(type, val);
|
out[key] = GLib.Variant.new(type, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
},
|
},
|
||||||
|
|
||||||
GetExtensionErrors: function(uuid) {
|
GetExtensionErrors: function(uuid) {
|
||||||
return ExtensionSystem.errors[uuid] || [];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
|
if (!extension)
|
||||||
|
return [];
|
||||||
|
|
||||||
|
if (!extension.errors)
|
||||||
|
return [];
|
||||||
|
|
||||||
|
return extension.errors;
|
||||||
},
|
},
|
||||||
|
|
||||||
EnableExtension: function(uuid) {
|
EnableExtension: function(uuid) {
|
||||||
@ -219,6 +261,13 @@ const GnomeShell = new Lang.Class({
|
|||||||
return ExtensionSystem.uninstallExtensionFromUUID(uuid);
|
return ExtensionSystem.uninstallExtensionFromUUID(uuid);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
LaunchExtensionPrefs: function(uuid) {
|
||||||
|
let appSys = Shell.AppSystem.get_default();
|
||||||
|
let app = appSys.lookup_app('gnome-shell-extension-prefs.desktop');
|
||||||
|
app.launch(global.display.get_current_time_roundtrip(),
|
||||||
|
['extension:///' + uuid], -1, null);
|
||||||
|
},
|
||||||
|
|
||||||
get OverviewActive() {
|
get OverviewActive() {
|
||||||
return Main.overview.visible;
|
return Main.overview.visible;
|
||||||
},
|
},
|
||||||
|
@ -211,6 +211,8 @@ const ShellMountQuestionDialog = new Lang.Class({
|
|||||||
{ y_align: St.Align.START });
|
{ y_align: St.Align.START });
|
||||||
|
|
||||||
this.subjectLabel = new St.Label({ style_class: 'mount-question-dialog-subject' });
|
this.subjectLabel = new St.Label({ style_class: 'mount-question-dialog-subject' });
|
||||||
|
this.subjectLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
this.subjectLabel.clutter_text.line_wrap = true;
|
||||||
|
|
||||||
messageLayout.add(this.subjectLabel,
|
messageLayout.add(this.subjectLabel,
|
||||||
{ y_fill: false,
|
{ y_fill: false,
|
||||||
|
@ -44,7 +44,7 @@ const ATIndicator = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('preferences-desktop-accessibility', null);
|
this.parent('preferences-desktop-accessibility', null, _("Accessibility"));
|
||||||
|
|
||||||
let highContrast = this._buildHCItem();
|
let highContrast = this._buildHCItem();
|
||||||
this.menu.addMenuItem(highContrast);
|
this.menu.addMenuItem(highContrast);
|
||||||
|
@ -28,7 +28,7 @@ const Indicator = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('bluetooth-disabled', null);
|
this.parent('bluetooth-disabled', null, _("Bluetooth"));
|
||||||
|
|
||||||
this._applet = new GnomeBluetoothApplet.Applet();
|
this._applet = new GnomeBluetoothApplet.Applet();
|
||||||
|
|
||||||
|
@ -113,6 +113,7 @@ const NMNetworkMenuItem = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._label = new St.Label({ text: title });
|
this._label = new St.Label({ text: title });
|
||||||
|
this.actor.label_actor = this._label;
|
||||||
this.addActor(this._label);
|
this.addActor(this._label);
|
||||||
this._icons = new St.BoxLayout({ style_class: 'nm-menu-item-icons' });
|
this._icons = new St.BoxLayout({ style_class: 'nm-menu-item-icons' });
|
||||||
this.addActor(this._icons, { align: St.Align.END });
|
this.addActor(this._icons, { align: St.Align.END });
|
||||||
@ -1537,7 +1538,7 @@ const NMApplet = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('network-error', null);
|
this.parent('network-error', null, _("Network"));
|
||||||
|
|
||||||
this._client = NMClient.Client.new();
|
this._client = NMClient.Client.new();
|
||||||
|
|
||||||
|
@ -46,7 +46,6 @@ const PowerManagerInterface = <interface name="org.gnome.SettingsDaemon.Power">
|
|||||||
<method name="GetPrimaryDevice">
|
<method name="GetPrimaryDevice">
|
||||||
<arg type="(susdut)" direction="out" />
|
<arg type="(susdut)" direction="out" />
|
||||||
</method>
|
</method>
|
||||||
<signal name="Changed" />
|
|
||||||
<property name="Icon" type="s" access="read" />
|
<property name="Icon" type="s" access="read" />
|
||||||
</interface>;
|
</interface>;
|
||||||
|
|
||||||
@ -57,7 +56,7 @@ const Indicator = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('battery-missing', null);
|
this.parent('battery-missing', null, _("Battery"));
|
||||||
|
|
||||||
this._proxy = new PowerManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH);
|
this._proxy = new PowerManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH);
|
||||||
|
|
||||||
@ -76,7 +75,8 @@ const Indicator = new Lang.Class({
|
|||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addSettingsAction(_("Power Settings"), 'gnome-power-panel.desktop');
|
this.menu.addSettingsAction(_("Power Settings"), 'gnome-power-panel.desktop');
|
||||||
|
|
||||||
this._proxy.connectSignal('Changed', Lang.bind(this, this._devicesChanged));
|
this._proxy.connect('g-properties-changed',
|
||||||
|
Lang.bind(this, this._devicesChanged));
|
||||||
this._devicesChanged();
|
this._devicesChanged();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ const Indicator = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('audio-volume-muted', null);
|
this.parent('audio-volume-muted', null, _("Volume"));
|
||||||
|
|
||||||
this._control = new Gvc.MixerControl({ name: 'GNOME Shell Volume Control' });
|
this._control = new Gvc.MixerControl({ name: 'GNOME Shell Volume Control' });
|
||||||
this._control.connect('state-changed', Lang.bind(this, this._onControlStateChanged));
|
this._control.connect('state-changed', Lang.bind(this, this._onControlStateChanged));
|
||||||
|
@ -1092,7 +1092,7 @@ const AudioVideoNotification = new Lang.Class({
|
|||||||
/* translators: argument is a contact name like Alice for example. */
|
/* translators: argument is a contact name like Alice for example. */
|
||||||
title = _("Call from %s").format(contact.get_alias());
|
title = _("Call from %s").format(contact.get_alias());
|
||||||
|
|
||||||
this.parent(this, source, title, null, { customContent: true });
|
this.parent(source, title, null, { customContent: true });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this.addButton('reject', _("Reject"));
|
this.addButton('reject', _("Reject"));
|
||||||
@ -1123,8 +1123,7 @@ const FileTransferNotification = new Lang.Class({
|
|||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(source, dispatchOp, channel, contact) {
|
_init: function(source, dispatchOp, channel, contact) {
|
||||||
this.parent(this,
|
this.parent(source,
|
||||||
source,
|
|
||||||
/* To translators: The first parameter is
|
/* To translators: The first parameter is
|
||||||
* the contact's alias and the second one is the
|
* the contact's alias and the second one is the
|
||||||
* file name. The string will be something
|
* file name. The string will be something
|
||||||
@ -1197,7 +1196,7 @@ const SubscriptionRequestNotification = new Lang.Class({
|
|||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(source, contact) {
|
_init: function(source, contact) {
|
||||||
this.parent(this, source,
|
this.parent(source,
|
||||||
/* To translators: The parameter is the contact's alias */
|
/* To translators: The parameter is the contact's alias */
|
||||||
_("%s would like permission to see when you are online").format(contact.get_alias()),
|
_("%s would like permission to see when you are online").format(contact.get_alias()),
|
||||||
null, { customContent: true });
|
null, { customContent: true });
|
||||||
|
@ -376,7 +376,8 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
if (sessionStatus == GnomeSession.PresenceStatus.IDLE) {
|
if (sessionStatus == GnomeSession.PresenceStatus.IDLE) {
|
||||||
// Only change presence if the current one is "more present" than
|
// Only change presence if the current one is "more present" than
|
||||||
// idle
|
// idle
|
||||||
if (this._currentPresence != Tp.ConnectionPresenceType.OFFLINE)
|
if (this._currentPresence != Tp.ConnectionPresenceType.OFFLINE &&
|
||||||
|
this._currentPresence != Tp.ConnectionPresenceType.HIDDEN)
|
||||||
return Tp.ConnectionPresenceType.EXTENDED_AWAY;
|
return Tp.ConnectionPresenceType.EXTENDED_AWAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,6 +467,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
this._name = new St.Label();
|
this._name = new St.Label();
|
||||||
|
this.actor.label_actor = this._name;
|
||||||
box.add(this._name, { y_align: St.Align.MIDDLE, y_fill: false });
|
box.add(this._name, { y_align: St.Align.MIDDLE, y_fill: false });
|
||||||
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUserName));
|
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUserName));
|
||||||
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUserName));
|
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUserName));
|
||||||
@ -611,7 +613,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
this._statusChooser = item;
|
this._statusChooser = item;
|
||||||
|
|
||||||
item = new PopupMenu.PopupSwitchMenuItem(_("Notifications"));
|
item = new PopupMenu.PopupSwitchMenuItem(_("Notifications"));
|
||||||
item.connect('activate', Lang.bind(this, this._updatePresenceStatus));
|
item.connect('toggled', Lang.bind(this, this._updatePresenceStatus));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
this._notificationsSwitch = item;
|
this._notificationsSwitch = item;
|
||||||
|
|
||||||
|
@ -370,6 +370,7 @@ const WindowClone = new Lang.Class({
|
|||||||
if (this._selected)
|
if (this._selected)
|
||||||
return;
|
return;
|
||||||
let [x, y] = action.get_coords();
|
let [x, y] = action.get_coords();
|
||||||
|
action.release();
|
||||||
this._draggable.startDrag(x, y, global.get_current_time());
|
this._draggable.startDrag(x, y, global.get_current_time());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,11 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
let thumbHeight = this._porthole.height * this._scale;
|
let thumbHeight = this._porthole.height * this._scale;
|
||||||
|
|
||||||
let workspace = -1;
|
let workspace = -1;
|
||||||
let firstThumbY = this._thumbnails[0].actor.y;
|
let firstThumbY;
|
||||||
|
if (this._dropPlaceholderPos == 0)
|
||||||
|
firstThumbY = this._dropPlaceholder.y;
|
||||||
|
else
|
||||||
|
firstThumbY = this._thumbnails[0].actor.y;
|
||||||
for (let i = 0; i < this._thumbnails.length; i ++) {
|
for (let i = 0; i < this._thumbnails.length; i ++) {
|
||||||
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
|
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ pt
|
|||||||
pt_BR
|
pt_BR
|
||||||
ro
|
ro
|
||||||
ru
|
ru
|
||||||
|
si
|
||||||
sk
|
sk
|
||||||
sl
|
sl
|
||||||
sr
|
sr
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
data/gnome-shell.desktop.in.in
|
data/gnome-shell.desktop.in.in
|
||||||
|
data/gnome-shell-extension-prefs.desktop.in.in
|
||||||
data/org.gnome.shell.gschema.xml.in
|
data/org.gnome.shell.gschema.xml.in
|
||||||
|
js/extensionPrefs/main.js
|
||||||
js/gdm/loginDialog.js
|
js/gdm/loginDialog.js
|
||||||
js/gdm/powerMenu.js
|
js/gdm/powerMenu.js
|
||||||
js/misc/util.js
|
js/misc/util.js
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
data/gnome-shell.desktop.in
|
data/gnome-shell.desktop.in
|
||||||
data/gnome-shell-clock-preferences.desktop.in
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
|
338
po/es.po
338
po/es.po
@ -3,15 +3,15 @@
|
|||||||
# 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.
|
||||||
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
|
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
|
||||||
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
|
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011.
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011, 2012.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-12-26 13:34+0000\n"
|
"POT-Creation-Date: 2012-01-31 15:48+0000\n"
|
||||||
"PO-Revision-Date: 2011-12-31 18:57+0100\n"
|
"PO-Revision-Date: 2012-01-31 17:14+0100\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -87,6 +87,18 @@ msgstr "Lista de ID de archivos de escritorio para las aplicaciones favoritas"
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
||||||
|
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
||||||
|
#| "pad where the recorded video is recorded. It will normally have a "
|
||||||
|
#| "unconnected source pad; output from that pad will be written into the "
|
||||||
|
#| "output file. However the pipeline can also take care of its own output - "
|
||||||
|
#| "this might be used to send the output to an icecast server via shout2send "
|
||||||
|
#| "or similar. When unset or set to an empty value, the default pipeline "
|
||||||
|
#| "will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 "
|
||||||
|
#| "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T "
|
||||||
|
#| "is used as a placeholder for a guess at the optimal thread count on the "
|
||||||
|
#| "system."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -95,21 +107,21 @@ msgid ""
|
|||||||
"pipeline can also take care of its own output - this might be used to send "
|
"pipeline can also take care of its own output - this might be used to send "
|
||||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||||
"to an empty value, the default pipeline will be used. This is currently "
|
"to an empty value, the default pipeline will be used. This is currently "
|
||||||
"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
|
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
|
||||||
"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
|
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
|
||||||
"at the optimal thread count on the system."
|
"thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
||||||
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
|
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
|
||||||
"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se "
|
"desconectado donde grabar el vídeo que se está grabando. Generalmente tendrá "
|
||||||
"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida "
|
"un punto de origen desconectado; la salida de ese punto se escribirá en el "
|
||||||
"de ese punto se escibirá en el archivo de salida. No obstante la tubería "
|
"archivo de salida. Sin embargo, la tubería también puede tomar parte en su "
|
||||||
"también puede tomar parte en su propia salida; esto se puede usar para "
|
"propia salida; esto se puede usar para enviar la salida a un servidor "
|
||||||
"enviar la salida a un servidor «icecast» a través de shout2send o similar. "
|
"«icecast» a través de shout2send o similar. Cuando no está establecido o lo "
|
||||||
"Cuando no está establecido o lo está a un valor vacío, se usará la tubería "
|
"está a un valor vacío, se usará la tubería predeterminada. Actualmente es "
|
||||||
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 "
|
"«'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux» y graba en WEBM "
|
||||||
"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T "
|
"usando el códec VP8. Se usa %T como marcador de posición para el número de "
|
||||||
"como suposición para el número de hilos óptimos en el sistema."
|
"hilos óptimos en el sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
@ -186,45 +198,45 @@ msgstr "Qué teclado usar"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "proveedores OpenSearch desactivados"
|
msgstr "proveedores OpenSearch desactivados"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../js/gdm/loginDialog.js:624
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:786
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:831
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(o pase el dedo)"
|
msgstr "(o pase el dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:852
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "¿No está en la lista?"
|
msgstr "¿No está en la lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:418
|
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1025
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1376
|
#: ../js/gdm/loginDialog.js:1377
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ventana de inicio de sesión"
|
msgstr "Ventana de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:578
|
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:581
|
||||||
#: ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:649
|
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
@ -445,8 +457,8 @@ msgstr "Esta semana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "La semana que viene"
|
msgstr "La semana que viene"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:466
|
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:394
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconocido"
|
msgstr "Desconocido"
|
||||||
|
|
||||||
@ -466,7 +478,7 @@ msgstr "Ocupado"
|
|||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Desconectado"
|
msgstr "Desconectado"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:141
|
#: ../js/ui/contactDisplay.js:148
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTOS"
|
msgstr "CONTACTOS"
|
||||||
|
|
||||||
@ -474,58 +486,58 @@ msgstr "CONTACTOS"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:96
|
#: ../js/ui/dateMenu.js:97
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Ajustes de hora y fecha"
|
msgstr "Ajustes de hora y fecha"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:122
|
#: ../js/ui/dateMenu.js:123
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Abrir calendario"
|
msgstr "Abrir calendario"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:180
|
#: ../js/ui/dateMenu.js:181
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e de %b, %R:%S"
|
msgstr "%a %e de %b, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:182
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e de %b, %R"
|
msgstr "%a %e de %b, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:185
|
#: ../js/ui/dateMenu.js:186
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:193
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e de %b, %l:%M:%S %p"
|
msgstr "%a %e de %b, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:195
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e de %b, %l:%M %p"
|
msgstr "%a %e de %b, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:198
|
#: ../js/ui/dateMenu.js:199
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:210
|
#: ../js/ui/dateMenu.js:211
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e de %B de %Y"
|
msgstr "%A, %e de %B de %Y"
|
||||||
|
|
||||||
@ -701,7 +713,7 @@ msgstr "Dar voz"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2444
|
#: ../js/ui/messageTray.js:2446
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
@ -747,8 +759,8 @@ msgstr "La red inalámbrica requiere autenticación"
|
|||||||
#: ../js/ui/networkAgent.js:322
|
#: ../js/ui/networkAgent.js:322
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network '%"
|
||||||
"'%s'."
|
"s'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||||
"inalámbrica «%s»."
|
"inalámbrica «%s»."
|
||||||
@ -804,17 +816,17 @@ msgstr "Aplicaciones"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Tablero"
|
msgstr "Tablero"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:564
|
#: ../js/ui/panel.js:572
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Salir"
|
msgstr "Salir"
|
||||||
|
|
||||||
#. 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:595
|
#: ../js/ui/panel.js:603
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:982
|
#: ../js/ui/panel.js:990
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@ -831,7 +843,7 @@ msgstr "Reintentar"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Conectar a…"
|
msgstr "Conectar a…"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:364
|
#: ../js/ui/placeDisplay.js:367
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "LUGARES Y DISPOSITIVOS"
|
msgstr "LUGARES Y DISPOSITIVOS"
|
||||||
|
|
||||||
@ -864,7 +876,7 @@ msgstr "Contraseña:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:719
|
#: ../js/ui/popupMenu.js:720
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -900,6 +912,10 @@ msgstr "Ocultar texto"
|
|||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Contraseña incorrecta; inténtelo de nuevo"
|
msgstr "Contraseña incorrecta; inténtelo de nuevo"
|
||||||
|
|
||||||
|
#: ../js/ui/status/accessibility.js:47
|
||||||
|
msgid "Accessibility"
|
||||||
|
msgstr "Accesibilidad"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:52
|
#: ../js/ui/status/accessibility.js:52
|
||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Ampliación"
|
msgstr "Ampliación"
|
||||||
@ -943,10 +959,10 @@ msgstr "Contraste alto"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:35 ../js/ui/status/bluetooth.js:258
|
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:341 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
||||||
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:436
|
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
||||||
#: ../js/ui/status/network.js:892
|
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -967,7 +983,7 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "Configuración de Bluetooth"
|
msgstr "Configuración de Bluetooth"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:255
|
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "hardware desactivado"
|
msgstr "hardware desactivado"
|
||||||
|
|
||||||
@ -975,11 +991,11 @@ msgstr "hardware desactivado"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Conexión"
|
msgstr "Conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:490
|
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "deconectando…"
|
msgstr "deconectando…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:496
|
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "conectando…"
|
msgstr "conectando…"
|
||||||
|
|
||||||
@ -1030,7 +1046,7 @@ msgstr "Conceder acceso siempre"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Conceder sólo esta vez"
|
msgstr "Conceder sólo esta vez"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1168
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
@ -1083,119 +1099,127 @@ msgid "<unknown>"
|
|||||||
msgstr "<desconocido>"
|
msgstr "<desconocido>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:277
|
#: ../js/ui/status/network.js:278
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "desactivada"
|
msgstr "desactivada"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:488
|
#: ../js/ui/status/network.js:489
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "no gestionada"
|
msgstr "no gestionada"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:499
|
#: ../js/ui/status/network.js:500
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "se necesita autenticación"
|
msgstr "se necesita autenticación"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:509
|
#: ../js/ui/status/network.js:510
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "falta el «firmware»"
|
msgstr "falta el «firmware»"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:516
|
#: ../js/ui/status/network.js:517
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "cable desconectado"
|
msgstr "cable desconectado"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:521
|
#: ../js/ui/status/network.js:522
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "no disponible"
|
msgstr "no disponible"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:523
|
#: ../js/ui/status/network.js:524
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "falló la conexión"
|
msgstr "falló la conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:584 ../js/ui/status/network.js:1504
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Más…"
|
msgstr "Más…"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:620 ../js/ui/status/network.js:1439
|
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Conectada (privada)"
|
msgstr "Conectada (privada)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:695
|
#: ../js/ui/status/network.js:696
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Ethernet automática"
|
msgstr "Ethernet automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:756
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Banda ancha automática"
|
msgstr "Banda ancha automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:759
|
#: ../js/ui/status/network.js:760
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Marcado automático"
|
msgstr "Marcado automático"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1451
|
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "%s automática"
|
msgstr "%s automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:880
|
#: ../js/ui/status/network.js:881
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Bluetooth automático"
|
msgstr "Bluetooth automático"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:1454
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Inalámbrica automática"
|
msgstr "Inalámbrica automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1547
|
#: ../js/ui/status/network.js:1541
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Red"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1548
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Activar red"
|
msgstr "Activar red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1559
|
#: ../js/ui/status/network.js:1560
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Cableada"
|
msgstr "Cableada"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1570
|
#: ../js/ui/status/network.js:1571
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Inalámbrica"
|
msgstr "Inalámbrica"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1580
|
#: ../js/ui/status/network.js:1581
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Banda ancha móvil"
|
msgstr "Banda ancha móvil"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1590
|
#: ../js/ui/status/network.js:1591
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "Conexiones VPN"
|
msgstr "Conexiones VPN"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1601
|
#: ../js/ui/status/network.js:1602
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Configuración de la red"
|
msgstr "Configuración de la red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1738
|
#: ../js/ui/status/network.js:1739
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Falló la conexión"
|
msgstr "Falló la conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1740
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Falló la activación de la conexión de red"
|
msgstr "Falló la activación de la conexión de red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1989
|
#: ../js/ui/status/network.js:1993
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "La red está desactivada"
|
msgstr "La red está desactivada"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2113
|
#: ../js/ui/status/network.js:2117
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Gestor de la red"
|
msgstr "Gestor de la red"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:59
|
||||||
|
msgid "Battery"
|
||||||
|
msgstr "Batería"
|
||||||
|
|
||||||
|
#: ../js/ui/status/power.js:76
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Configuración de energía"
|
msgstr "Configuración de energía"
|
||||||
|
|
||||||
@ -1283,7 +1307,7 @@ msgstr "Tableta"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:38
|
#: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:38
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volumen"
|
msgstr "Volumen"
|
||||||
|
|
||||||
@ -1291,47 +1315,46 @@ msgstr "Volumen"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Micrófono"
|
msgstr "Micrófono"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:267
|
#: ../js/ui/telepathyClient.js:225
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Invitación"
|
msgstr "Invitación"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:335
|
#: ../js/ui/telepathyClient.js:278
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Llamar"
|
msgstr "Llamar"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:365
|
#: ../js/ui/telepathyClient.js:294
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Transferencia de archivos"
|
msgstr "Transferencia de archivos"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:446
|
#: ../js/ui/telepathyClient.js:376
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Solicitud de suscripción"
|
msgstr "Solicitud de suscripción"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:482
|
#: ../js/ui/telepathyClient.js:412
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Error de conexión"
|
msgstr "Error de conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s está conectado/a."
|
msgstr "%s está conectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s está desconectado/a."
|
msgstr "%s está desconectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:678
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s está ausente."
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:751
|
#: ../js/ui/telepathyClient.js:681
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s está ocupado/a."
|
msgstr "%s está ocupado/a."
|
||||||
@ -1339,35 +1362,35 @@ msgstr "%s está ocupado/a."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:964
|
#: ../js/ui/telepathyClient.js:894
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
|
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:970
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
|
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:975
|
#: ../js/ui/telepathyClient.js:905
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
|
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1017
|
#: ../js/ui/telepathyClient.js:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Ahora %s se llama %s"
|
msgstr "Ahora %s se llama %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1119
|
#: ../js/ui/telepathyClient.js:1049
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitación a %s"
|
msgstr "Invitación a %s"
|
||||||
@ -1375,35 +1398,35 @@ msgstr "Invitación a %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1127
|
#: ../js/ui/telepathyClient.js:1057
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s le está invitando a unirse a %s"
|
msgstr "%s le está invitando a unirse a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1129 ../js/ui/telepathyClient.js:1209
|
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1236
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1130 ../js/ui/telepathyClient.js:1210
|
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1308
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1160
|
#: ../js/ui/telepathyClient.js:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videollamada de %s"
|
msgstr "Videollamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1163
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Llamada de %s"
|
msgstr "Llamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1170
|
#: ../js/ui/telepathyClient.js:1100
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Responder"
|
msgstr "Responder"
|
||||||
|
|
||||||
@ -1412,112 +1435,112 @@ msgstr "Responder"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1203
|
#: ../js/ui/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s le está enviando %s"
|
msgstr "%s le está enviando %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1272
|
#: ../js/ui/telepathyClient.js:1201
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s solicita permiso para ver cuándo está en línea"
|
msgstr "%s solicita permiso para ver cuándo está en línea"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1365
|
#: ../js/ui/telepathyClient.js:1294
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Error de la red"
|
msgstr "Error de la red"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1367
|
#: ../js/ui/telepathyClient.js:1296
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Falló la autenticación"
|
msgstr "Falló la autenticación"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1369
|
#: ../js/ui/telepathyClient.js:1298
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Error de cifrado"
|
msgstr "Error de cifrado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1371
|
#: ../js/ui/telepathyClient.js:1300
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificado no proporcionado"
|
msgstr "Certificado no proporcionado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1373
|
#: ../js/ui/telepathyClient.js:1302
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "No se confía en el certificado"
|
msgstr "No se confía en el certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1375
|
#: ../js/ui/telepathyClient.js:1304
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificado caducado"
|
msgstr "Certificado caducado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1377
|
#: ../js/ui/telepathyClient.js:1306
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificado no activado"
|
msgstr "Certificado no activado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1379
|
#: ../js/ui/telepathyClient.js:1308
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "El nombre del servidor dle certificado no coincide"
|
msgstr "El nombre del servidor dle certificado no coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1381
|
#: ../js/ui/telepathyClient.js:1310
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "La huella del certificado no coincide"
|
msgstr "La huella del certificado no coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1383
|
#: ../js/ui/telepathyClient.js:1312
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificado autofirmado"
|
msgstr "Certificado autofirmado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1385
|
#: ../js/ui/telepathyClient.js:1314
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "El estado está establecido a «desconectado»"
|
msgstr "El estado está establecido a «desconectado»"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1387
|
#: ../js/ui/telepathyClient.js:1316
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "El cifrado no está disponible"
|
msgstr "El cifrado no está disponible"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1389
|
#: ../js/ui/telepathyClient.js:1318
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "El certificado no es válido"
|
msgstr "El certificado no es válido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1391
|
#: ../js/ui/telepathyClient.js:1320
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Se ha rechazado la conexión"
|
msgstr "Se ha rechazado la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1393
|
#: ../js/ui/telepathyClient.js:1322
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "No se puede establecer la conexión"
|
msgstr "No se puede establecer la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1395
|
#: ../js/ui/telepathyClient.js:1324
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Se ha perdido la conexión"
|
msgstr "Se ha perdido la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1397
|
#: ../js/ui/telepathyClient.js:1326
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Este recurso ya está conectado al servidor"
|
msgstr "Este recurso ya está conectado al servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1328
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1401
|
#: ../js/ui/telepathyClient.js:1330
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "La cuenta ya existe en el servidor"
|
msgstr "La cuenta ya existe en el servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1403
|
#: ../js/ui/telepathyClient.js:1332
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1405
|
#: ../js/ui/telepathyClient.js:1334
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Se ha revocado el certificado"
|
msgstr "Se ha revocado el certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1407
|
#: ../js/ui/telepathyClient.js:1336
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
||||||
"débil"
|
"débil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1409
|
#: ../js/ui/telepathyClient.js:1338
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1528,20 +1551,20 @@ msgstr ""
|
|||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1419
|
#: ../js/ui/telepathyClient.js:1348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Falló la conexión a %s"
|
msgstr "Falló la conexión a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1357
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Reconectar"
|
msgstr "Reconectar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1429
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Editar cuenta"
|
msgstr "Editar cuenta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1475
|
#: ../js/ui/telepathyClient.js:1404
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón desconocida"
|
msgstr "Razón desconocida"
|
||||||
|
|
||||||
@ -1557,39 +1580,39 @@ msgstr "Inactivo"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "No disponible"
|
msgstr "No disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:576 ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Apagar…"
|
msgstr "Apagar…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificaciones"
|
msgstr "Notificaciones"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:623
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Cuentas en línea"
|
msgstr "Cuentas en línea"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:624
|
#: ../js/ui/userMenu.js:627
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Configuración del sistema"
|
msgstr "Configuración del sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:634
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Bloquear la pantalla"
|
msgstr "Bloquear la pantalla"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:636
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:644
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Cerrar la sesión…"
|
msgstr "Cerrar la sesión…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:672
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:673
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1663,7 +1686,7 @@ msgstr "Imprimir versión"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/shell-app.c:639
|
#: ../src/shell-app.c:617
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Falló al lanzar «%s»"
|
msgstr "Falló al lanzar «%s»"
|
||||||
@ -1676,7 +1699,7 @@ msgstr "Reino Unido"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Predeterminada"
|
msgstr "Predeterminada"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:332
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||||
|
|
||||||
@ -1974,8 +1997,8 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
||||||
#~ "in time."
|
#~ "in time."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
|
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
|
||||||
#~ "segundos en la hora."
|
#~ "en la hora."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the format used by the panel clock when the format key "
|
#~ "This key specifies the format used by the panel clock when the format key "
|
||||||
@ -1992,19 +2015,18 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the hour format used by the panel clock. Possible "
|
#~ "This key specifies the hour format used by the panel clock. Possible "
|
||||||
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
||||||
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
|
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
|
||||||
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
|
#~ "01-01. If set to \"custom\", the clock will display time according to the "
|
||||||
#~ "to the format specified in the custom_format key. Note that if set to "
|
#~ "format specified in the custom_format key. Note that if set to either "
|
||||||
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
|
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
|
||||||
#~ "ignored."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
||||||
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
|
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
|
||||||
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
|
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
|
||||||
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
|
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
|
||||||
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
|
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
|
||||||
#~ "especificado en la clave «custom_format». Note que si se establece a "
|
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
|
||||||
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
|
#~ "ignoran las claves «show_date» y «show_seconds»."
|
||||||
|
|
||||||
#~ msgid "Clock Format"
|
#~ msgid "Clock Format"
|
||||||
#~ msgstr "Formato del reloj"
|
#~ msgstr "Formato del reloj"
|
||||||
|
335
po/fi.po
335
po/fi.po
@ -21,8 +21,8 @@ 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: 2012-01-10 09:26+0100\n"
|
"POT-Creation-Date: 2012-01-24 15:37+0200\n"
|
||||||
"PO-Revision-Date: 2012-01-09 16:54+0200\n"
|
"PO-Revision-Date: 2012-01-22 14:10+0200\n"
|
||||||
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
|
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
|
||||||
"Language-Team: Finnish <>\n"
|
"Language-Team: Finnish <>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
@ -43,11 +43,6 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen"
|
msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
|
||||||
msgstr ""
|
|
||||||
"Ota käyttöön sisäiset kehittäjiä ja testaajia hyödyttävät työkalut Alt-F2:sta"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
@ -55,11 +50,20 @@ msgstr ""
|
|||||||
"Salli pääsy sisäiseen vianselvitys- ja monitorointityökaluun Alt-F2-ikkunan "
|
"Salli pääsy sisäiseen vianselvitys- ja monitorointityökaluun Alt-F2-ikkunan "
|
||||||
"kautta."
|
"kautta."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
|
msgstr ""
|
||||||
|
"Ota käyttöön sisäiset kehittäjiä ja testaajia hyödyttävät työkalut Alt-F2:sta"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Käyttöön otettavien laajennosten UUID:t"
|
msgstr "Tiedostopääte ruutunauhoitusten tallentamiseen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "Ruutunauhoitusten kuvataajuus."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
@ -71,94 +75,31 @@ msgstr ""
|
|||||||
"halutaan ladata, on oltava tässä luettelossa. Tätä luetteloa voi muokata "
|
"halutaan ladata, on oltava tässä luettelossa. Tätä luetteloa voi muokata "
|
||||||
"myös org.gnome.Shell-DBus-metodeilla EnableExtension ja DisableExtension."
|
"myös org.gnome.Shell-DBus-metodeilla EnableExtension ja DisableExtension."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
|
||||||
msgstr "Kerätäänkö sovellusten käytöstä tilastoja"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid ""
|
|
||||||
"The shell normally monitors active applications in order to present the most "
|
|
||||||
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
|
||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
|
||||||
"remove already saved data."
|
|
||||||
msgstr ""
|
|
||||||
"Ikkunanhallinta seuraa normaalisti aktiivisia sovelluksia, jotta eniten "
|
|
||||||
"käytetyt voidaan esittää (esim. käynnistimissä). Vaikka nämä tiedot pysyvät "
|
|
||||||
"yksityisinä, voit silti haluta ottaa ominaisuuden pois käytöstä "
|
|
||||||
"yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin "
|
|
||||||
"tallennettuja tietoja."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
|
||||||
msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
|
||||||
msgid ""
|
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
|
||||||
"favorites area."
|
|
||||||
msgstr "Näitä tunnisteita vastaavat sovellukset näytetään suosikkien alueella."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "käytöstä poistetut OpenSearch-tarjoajat"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "Historia komentoikkunalle (Alt-F2)"
|
msgstr "Historia komentoikkunalle (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Historia näyttölasi-ikkunalle"
|
msgstr "Historia näyttölasi-ikkunalle"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
msgid "Show the week date in the calendar"
|
|
||||||
msgstr "Näytä viikonpäivä kalenterissa"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
|
||||||
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
|
||||||
msgid "Which keyboard to use"
|
|
||||||
msgstr "Mitä näppäimistöä käytetään"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr "Käytettävän näppäimistön tyyppi."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
|
||||||
msgid "Show time with seconds"
|
|
||||||
msgstr "Näytä aika sekuntien kera"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
|
||||||
msgid "If true, display seconds in time."
|
|
||||||
msgstr "Jos tosi, näytä sekunnit ajassa."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
|
||||||
msgid "Show date in clock"
|
|
||||||
msgstr "Näytä päivämäärä kellossa"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Jos tosi, näytä päivämäärä kellossa ajan lisäksi."
|
msgstr "Jos tosi, näytä päivämäärä kellossa ajan lisäksi."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Ruutunauhoitusten kuvataajuus."
|
msgstr "Jos tosi, näytä sekunnit ajassa."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
msgid ""
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
|
||||||
"screencast recorder in frames-per-second."
|
|
||||||
msgstr ""
|
|
||||||
"Nauhoituksesta tuloksena saatavan ruutunauhoituksen kuvataajuus kun käytössä "
|
|
||||||
"on GNOMEn ikkunanhallinnan nauhoitin, kuvaa per sekunti."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "Gstreamer-liukuhihna jolla ruutunauhoitukset pakataan"
|
msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -184,11 +125,25 @@ msgstr ""
|
|||||||
"muotoon VP8-koodekilla. %T korvautuu arvauksella parhaan suorituskyvy "
|
"muotoon VP8-koodekilla. %T korvautuu arvauksella parhaan suorituskyvy "
|
||||||
"antavasta säiemäärästä järjestelmässä."
|
"antavasta säiemäärästä järjestelmässä."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "Show date in clock"
|
||||||
msgstr "Tiedostopääte ruutunauhoitusten tallentamiseen"
|
msgstr "Näytä päivämäärä kellossa"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
|
msgid "Show the week date in the calendar"
|
||||||
|
msgstr "Näytä viikonpäivä kalenterissa"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
|
msgid "Show time with seconds"
|
||||||
|
msgstr "Näytä aika sekuntien kera"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
|
msgid ""
|
||||||
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
|
"favorites area."
|
||||||
|
msgstr "Näitä tunnisteita vastaavat sovellukset näytetään suosikkien alueella."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -198,45 +153,90 @@ msgstr ""
|
|||||||
"nykyisen päivämäärän ja tämän tiedostopäätteen mukaisesti. Tiedostopääte "
|
"nykyisen päivämäärän ja tämän tiedostopäätteen mukaisesti. Tiedostopääte "
|
||||||
"tulisi vaihtaa mikäli nauhoitetaan eri tallennusmuotoon."
|
"tulisi vaihtaa mikäli nauhoitetaan eri tallennusmuotoon."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid ""
|
||||||
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
|
"screencast recorder in frames-per-second."
|
||||||
|
msgstr ""
|
||||||
|
"Nauhoituksesta tuloksena saatavan ruutunauhoituksen kuvataajuus kun käytössä "
|
||||||
|
"on GNOMEn ikkunanhallinnan nauhoitin, kuvaa per sekunti."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
|
msgstr "Gstreamer-liukuhihna jolla ruutunauhoitukset pakataan"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
|
msgid ""
|
||||||
|
"The shell normally monitors active applications in order to present the most "
|
||||||
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
|
"remove already saved data."
|
||||||
|
msgstr ""
|
||||||
|
"Ikkunanhallinta seuraa normaalisti aktiivisia sovelluksia, jotta eniten "
|
||||||
|
"käytetyt voidaan esittää (esim. käynnistimissä). Vaikka nämä tiedot pysyvät "
|
||||||
|
"yksityisinä, voit silti haluta ottaa ominaisuuden pois käytöstä "
|
||||||
|
"yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin "
|
||||||
|
"tallennettuja tietoja."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "Käytettävän näppäimistön tyyppi."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
|
msgid "Uuids of extensions to enable"
|
||||||
|
msgstr "Käyttöön otettavien laajennosten UUID:t"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "Kerätäänkö sovellusten käytöstä tilastoja"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "Mitä näppäimistöä käytetään"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
|
msgid "disabled OpenSearch providers"
|
||||||
|
msgstr "käytöstä poistetut OpenSearch-tarjoajat"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:624
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Istunto…"
|
msgstr "Istunto…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:786
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Kirjaudu sisään"
|
msgstr "Kirjaudu sisään"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:831
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(tai pyyhkäise sormella)"
|
msgstr "(tai pyyhkäise sormella)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:852
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ei luettelossa?"
|
msgstr "Ei luettelossa?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:418
|
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Peru"
|
msgstr "Peru"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1025
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Kirjaudu sisään"
|
msgstr "Kirjaudu sisään"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1376
|
#: ../js/gdm/loginDialog.js:1377
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Kirjautumisikkuna"
|
msgstr "Kirjautumisikkuna"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:578
|
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:579
|
||||||
#: ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:649
|
#: ../js/ui/userMenu.js:581 ../js/ui/userMenu.js:650
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Valmiustila"
|
msgstr "Valmiustila"
|
||||||
|
|
||||||
@ -460,7 +460,7 @@ msgid "Next week"
|
|||||||
msgstr "Ensi viikolla"
|
msgstr "Ensi viikolla"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:394
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:371
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Tuntematon"
|
msgstr "Tuntematon"
|
||||||
|
|
||||||
@ -830,17 +830,17 @@ msgstr "Sovellukset"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Pikavalikko"
|
msgstr "Pikavalikko"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:564
|
#: ../js/ui/panel.js:567
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Lopeta"
|
msgstr "Lopeta"
|
||||||
|
|
||||||
#. 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:595
|
#: ../js/ui/panel.js:598
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Toiminnot"
|
msgstr "Toiminnot"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:982
|
#: ../js/ui/panel.js:985
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Yläpalkki"
|
msgstr "Yläpalkki"
|
||||||
|
|
||||||
@ -857,7 +857,7 @@ msgstr "Yritä uudelleen"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Yhdistä…"
|
msgstr "Yhdistä…"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:364
|
#: ../js/ui/placeDisplay.js:367
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "SIJAINNIT JA LAITTEET"
|
msgstr "SIJAINNIT JA LAITTEET"
|
||||||
|
|
||||||
@ -1056,7 +1056,7 @@ msgstr "Salli pääsy aina"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Salli vain tällä kerralla"
|
msgstr "Salli vain tällä kerralla"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1168
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Hylkää"
|
msgstr "Hylkää"
|
||||||
|
|
||||||
@ -1213,11 +1213,11 @@ msgstr "Yhteys epäonnistui"
|
|||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Verkkoyhteyden aktivointi epäonnistui"
|
msgstr "Verkkoyhteyden aktivointi epäonnistui"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1989
|
#: ../js/ui/status/network.js:1992
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "Verkko ei ole käytössä"
|
msgstr "Verkko ei ole käytössä"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2113
|
#: ../js/ui/status/network.js:2116
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Verkon hallinta"
|
msgstr "Verkon hallinta"
|
||||||
|
|
||||||
@ -1317,47 +1317,46 @@ msgstr "Äänenvoimakkuus"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofoni"
|
msgstr "Mikrofoni"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:267
|
#: ../js/ui/telepathyClient.js:225
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Kutsu"
|
msgstr "Kutsu"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:335
|
#: ../js/ui/telepathyClient.js:278
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Soita"
|
msgstr "Soita"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:365
|
#: ../js/ui/telepathyClient.js:294
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Tiedostonsiirto"
|
msgstr "Tiedostonsiirto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:446
|
#: ../js/ui/telepathyClient.js:376
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Tilauspyyntö"
|
msgstr "Tilauspyyntö"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:482
|
#: ../js/ui/telepathyClient.js:412
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Yhteysvirhe"
|
msgstr "Yhteysvirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s on linjoilla."
|
msgstr "%s on linjoilla."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s on poissa linjoilta."
|
msgstr "%s on poissa linjoilta."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:678
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s on poissa."
|
msgstr "%s on poissa."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:751
|
#: ../js/ui/telepathyClient.js:681
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s on kiireinen."
|
msgstr "%s on kiireinen."
|
||||||
@ -1365,35 +1364,35 @@ msgstr "%s on kiireinen."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:964
|
#: ../js/ui/telepathyClient.js:894
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Lähetetty <b>%Ana</b> kello <b>%H.%M</b>"
|
msgstr "Lähetetty <b>%Ana</b> kello <b>%H.%M</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:970
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Lähetetty <b>%Ana</b> <b>%d. %Bta</b>"
|
msgstr "Lähetetty <b>%Ana</b> <b>%d. %Bta</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:975
|
#: ../js/ui/telepathyClient.js:905
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Lähetetty <b>%Ana</b> <b>%d. %Bta</b> %Y"
|
msgstr "Lähetetty <b>%Ana</b> <b>%d. %Bta</b> %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1017
|
#: ../js/ui/telepathyClient.js:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s on nyt nimeltään %s"
|
msgstr "%s on nyt nimeltään %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1119
|
#: ../js/ui/telepathyClient.js:1049
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Kutsu huoneeseen %s"
|
msgstr "Kutsu huoneeseen %s"
|
||||||
@ -1401,35 +1400,35 @@ msgstr "Kutsu huoneeseen %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1127
|
#: ../js/ui/telepathyClient.js:1057
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s kutsuu sinut huoneeseen %s"
|
msgstr "%s kutsuu sinut huoneeseen %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1129 ../js/ui/telepathyClient.js:1209
|
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Kieltäydy"
|
msgstr "Kieltäydy"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1130 ../js/ui/telepathyClient.js:1210
|
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1140
|
||||||
#: ../js/ui/telepathyClient.js:1308
|
#: ../js/ui/telepathyClient.js:1238
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Hyväksy"
|
msgstr "Hyväksy"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1160
|
#: ../js/ui/telepathyClient.js:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videopuhelu käyttäjältä %s"
|
msgstr "Videopuhelu käyttäjältä %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1163
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Puhelu käyttäjältä %s"
|
msgstr "Puhelu käyttäjältä %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1170
|
#: ../js/ui/telepathyClient.js:1100
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Vastaa"
|
msgstr "Vastaa"
|
||||||
|
|
||||||
@ -1438,108 +1437,108 @@ msgstr "Vastaa"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1203
|
#: ../js/ui/telepathyClient.js:1133
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s on lähettämässä sinulle tiedostoa %s"
|
msgstr "%s on lähettämässä sinulle tiedostoa %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1272
|
#: ../js/ui/telepathyClient.js:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s haluaisi saada luvan nähdä, milloin olet linjoilla"
|
msgstr "%s haluaisi saada luvan nähdä, milloin olet linjoilla"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1365
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Verkkovirhe"
|
msgstr "Verkkovirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1367
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Tunnistautuminen epäonnistui"
|
msgstr "Tunnistautuminen epäonnistui"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1369
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Salausvirhe"
|
msgstr "Salausvirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1371
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Varmennetta ei annettu"
|
msgstr "Varmennetta ei annettu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1373
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Varmenteeseen ei luoteta"
|
msgstr "Varmenteeseen ei luoteta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1375
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Varmenne on vanhentunut"
|
msgstr "Varmenne on vanhentunut"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1377
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Varmennetta ei ole aktivoitu"
|
msgstr "Varmennetta ei ole aktivoitu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1379
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Varmenteen konenimiristiriita"
|
msgstr "Varmenteen konenimiristiriita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1381
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Varmenteen sormenjälkiristiriita"
|
msgstr "Varmenteen sormenjälkiristiriita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1383
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Varmenne on itseallekirjoitettu"
|
msgstr "Varmenne on itseallekirjoitettu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1385
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Tilaksi on asetettu ”poissa linjoilta”"
|
msgstr "Tilaksi on asetettu ”poissa linjoilta”"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1387
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Salaus ei ole käytettävissä"
|
msgstr "Salaus ei ole käytettävissä"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1389
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Varmenne ei kelpaa"
|
msgstr "Varmenne ei kelpaa"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1391
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Yhteys on evätty"
|
msgstr "Yhteys on evätty"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1393
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Yhteyttä ei voida muodostaa"
|
msgstr "Yhteyttä ei voida muodostaa"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1395
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Yhteys on katkennut"
|
msgstr "Yhteys on katkennut"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1397
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Tämä resurssi on jo yhteydessä palvelimeen"
|
msgstr "Tämä resurssi on jo yhteydessä palvelimeen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "Yhteys on korvattu uudella samaa resurssia käyttävällä yhteydellä"
|
msgstr "Yhteys on korvattu uudella samaa resurssia käyttävällä yhteydellä"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1401
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Tili on jo olemassa palvelimella"
|
msgstr "Tili on jo olemassa palvelimella"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1403
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Palvelin on tällä hetkellä liian kiireinen käsittelemään yhteyttä"
|
msgstr "Palvelin on tällä hetkellä liian kiireinen käsittelemään yhteyttä"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1405
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Varmenne on kumottu"
|
msgstr "Varmenne on kumottu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1407
|
#: ../js/ui/telepathyClient.js:1337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "Varmenne käyttää turvatonta salausmenetelmää"
|
msgstr "Varmenne käyttää turvatonta salausmenetelmää"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1409
|
#: ../js/ui/telepathyClient.js:1339
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1548,20 +1547,20 @@ msgstr ""
|
|||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1419
|
#: ../js/ui/telepathyClient.js:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Yhteys kohteeseen %s katkesi"
|
msgstr "Yhteys kohteeseen %s katkesi"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Yhdistä uudelleen"
|
msgstr "Yhdistä uudelleen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1429
|
#: ../js/ui/telepathyClient.js:1359
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Muokkaa tiliä"
|
msgstr "Muokkaa tiliä"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1475
|
#: ../js/ui/telepathyClient.js:1405
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Tuntematon syy"
|
msgstr "Tuntematon syy"
|
||||||
|
|
||||||
@ -1577,39 +1576,39 @@ msgstr "Jouten"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Ei tavoitettavissa"
|
msgstr "Ei tavoitettavissa"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:576 ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:577 ../js/ui/userMenu.js:581 ../js/ui/userMenu.js:651
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Sammuta…"
|
msgstr "Sammuta…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:613
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Ilmoitukset"
|
msgstr "Ilmoitukset"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:621
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Verkkotilit"
|
msgstr "Verkkotilit"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:624
|
#: ../js/ui/userMenu.js:625
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Järjestelmän asetukset"
|
msgstr "Järjestelmän asetukset"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:632
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lukitse näyttö"
|
msgstr "Lukitse näyttö"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:636
|
#: ../js/ui/userMenu.js:637
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Vaihda käyttäjää"
|
msgstr "Vaihda käyttäjää"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:642
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Kirjaudu ulos…"
|
msgstr "Kirjaudu ulos…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:670
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Pikaviestitilaksi asetetaan ”kiireinen”"
|
msgstr "Pikaviestitilaksi asetetaan ”kiireinen”"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:671
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1642,7 +1641,7 @@ msgstr ""
|
|||||||
#: ../js/ui/wanda.js:128
|
#: ../js/ui/wanda.js:128
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s the Oracle says"
|
msgid "%s the Oracle says"
|
||||||
msgstr ""
|
msgstr "%s, sanoo oraakkeli"
|
||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:168
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
@ -1683,7 +1682,7 @@ msgstr "Tulosta versio"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "GDM:n kirjautumisruudussa käyttämä tila"
|
msgstr "GDM:n kirjautumisruudussa käyttämä tila"
|
||||||
|
|
||||||
#: ../src/shell-app.c:639
|
#: ../src/shell-app.c:616
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Sovelluksen ”%s” käynnistäminen epäonnistui"
|
msgstr "Sovelluksen ”%s” käynnistäminen epäonnistui"
|
||||||
|
277
po/he.po
277
po/he.po
@ -8,8 +8,8 @@ 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: 2011-12-30 10:49+0200\n"
|
"POT-Creation-Date: 2012-01-28 11:25+0200\n"
|
||||||
"PO-Revision-Date: 2011-12-30 10:50+0200\n"
|
"PO-Revision-Date: 2012-01-28 11:25+0200\n"
|
||||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||||
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
@ -130,30 +130,30 @@ msgstr "באיזו מקלדת להשתמש"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "disabled OpenSearch providers"
|
msgstr "disabled OpenSearch providers"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../js/gdm/loginDialog.js:624
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "הפעלה..."
|
msgstr "הפעלה..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:786
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "כניסה"
|
msgstr "כניסה"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:831
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(או להעביר אצבע)"
|
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:851
|
#: ../js/gdm/loginDialog.js:852
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "לא רשום?"
|
msgstr "לא רשום?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019
|
#: ../js/gdm/loginDialog.js:1020
|
||||||
#: ../js/ui/endSessionDialog.js:418
|
#: ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/extensionSystem.js:516
|
#: ../js/ui/extensionSystem.js:516
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:145
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||||
@ -161,19 +161,19 @@ msgstr "לא רשום?"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ביטול"
|
msgstr "ביטול"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1025
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "כניסה"
|
msgstr "כניסה"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1376
|
#: ../js/gdm/loginDialog.js:1377
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "חלון כניסה"
|
msgstr "חלון כניסה"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113
|
#: ../js/gdm/powerMenu.js:113
|
||||||
#: ../js/ui/userMenu.js:578
|
|
||||||
#: ../js/ui/userMenu.js:580
|
#: ../js/ui/userMenu.js:580
|
||||||
#: ../js/ui/userMenu.js:649
|
#: ../js/ui/userMenu.js:582
|
||||||
|
#: ../js/ui/userMenu.js:651
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "השהיה"
|
msgstr "השהיה"
|
||||||
|
|
||||||
@ -395,9 +395,9 @@ msgid "Next week"
|
|||||||
msgstr "בשבוע הבא"
|
msgstr "בשבוע הבא"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63
|
#: ../js/ui/contactDisplay.js:63
|
||||||
#: ../js/ui/notificationDaemon.js:466
|
#: ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215
|
#: ../js/ui/status/power.js:215
|
||||||
#: ../src/shell-app.c:394
|
#: ../src/shell-app.c:372
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "לא ידוע"
|
msgstr "לא ידוע"
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ msgstr "עסוק"
|
|||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "מנותק"
|
msgstr "מנותק"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:141
|
#: ../js/ui/contactDisplay.js:148
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "אנשי קשר"
|
msgstr "אנשי קשר"
|
||||||
|
|
||||||
@ -429,58 +429,58 @@ msgstr "אנשי קשר"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "הסרה"
|
msgstr "הסרה"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:96
|
#: ../js/ui/dateMenu.js:97
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "הגדרות תאריך ושעה"
|
msgstr "הגדרות תאריך ושעה"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:122
|
#: ../js/ui/dateMenu.js:123
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "פתיחת היומן"
|
msgstr "פתיחת היומן"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:180
|
#: ../js/ui/dateMenu.js:181
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %b %e, %R:%S"
|
msgstr "%a %b %e, %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:182
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %b %e, %R"
|
msgstr "%a %b %e, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:185
|
#: ../js/ui/dateMenu.js:186
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R:%S"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:193
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %b %e, %l:%M:%S %p"
|
msgstr "%a %b %e, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:195
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %b %e, %l:%M %p"
|
msgstr "%a %b %e, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:198
|
#: ../js/ui/dateMenu.js:199
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:210
|
#: ../js/ui/dateMenu.js:211
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A ה־%e ב%B, %Y"
|
msgstr "%A ה־%e ב%B, %Y"
|
||||||
|
|
||||||
@ -661,7 +661,7 @@ msgstr "ביטול ההשתקה"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "השתקה"
|
msgstr "השתקה"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2444
|
#: ../js/ui/messageTray.js:2446
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "פרטי המערכת"
|
msgstr "פרטי המערכת"
|
||||||
|
|
||||||
@ -763,17 +763,17 @@ msgstr "יישומים"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "חלונית"
|
msgstr "חלונית"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:564
|
#: ../js/ui/panel.js:572
|
||||||
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:595
|
#: ../js/ui/panel.js:603
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "פעילויות"
|
msgstr "פעילויות"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:982
|
#: ../js/ui/panel.js:990
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "הסרגל העליון"
|
msgstr "הסרגל העליון"
|
||||||
|
|
||||||
@ -790,7 +790,7 @@ msgstr "ניסיון חוזר"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "התחברות אל..."
|
msgstr "התחברות אל..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:364
|
#: ../js/ui/placeDisplay.js:367
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "מקומות והתקנים"
|
msgstr "מקומות והתקנים"
|
||||||
|
|
||||||
@ -823,7 +823,7 @@ msgstr "ססמה:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:719
|
#: ../js/ui/popupMenu.js:720
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -859,6 +859,10 @@ msgstr "הסתרת טקסט"
|
|||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "ססמה שגויה, נא לנסות שוב"
|
msgstr "ססמה שגויה, נא לנסות שוב"
|
||||||
|
|
||||||
|
#: ../js/ui/status/accessibility.js:47
|
||||||
|
msgid "Accessibility"
|
||||||
|
msgstr "נגישות"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:52
|
#: ../js/ui/status/accessibility.js:52
|
||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "תקריב"
|
msgstr "תקריב"
|
||||||
@ -902,13 +906,14 @@ msgstr "ניגודיות גבוהה"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "טקסט גדול"
|
msgstr "טקסט גדול"
|
||||||
|
|
||||||
|
#: ../js/ui/status/bluetooth.js:31
|
||||||
#: ../js/ui/status/bluetooth.js:35
|
#: ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:258
|
#: ../js/ui/status/bluetooth.js:258
|
||||||
#: ../js/ui/status/bluetooth.js:341
|
#: ../js/ui/status/bluetooth.js:341
|
||||||
#: ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:371
|
||||||
#: ../js/ui/status/bluetooth.js:407
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
#: ../js/ui/status/bluetooth.js:436
|
#: ../js/ui/status/bluetooth.js:436
|
||||||
#: ../js/ui/status/network.js:892
|
#: ../js/ui/status/network.js:893
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -930,7 +935,7 @@ msgstr "הגדרות Bluetooth"
|
|||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
#: ../js/ui/status/network.js:255
|
#: ../js/ui/status/network.js:256
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "מנוטרל חומרתית"
|
msgstr "מנוטרל חומרתית"
|
||||||
|
|
||||||
@ -939,12 +944,12 @@ msgid "Connection"
|
|||||||
msgstr "חיבור"
|
msgstr "חיבור"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214
|
#: ../js/ui/status/bluetooth.js:214
|
||||||
#: ../js/ui/status/network.js:490
|
#: ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "בהליכי ניתוק..."
|
msgstr "בהליכי ניתוק..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227
|
#: ../js/ui/status/bluetooth.js:227
|
||||||
#: ../js/ui/status/network.js:496
|
#: ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "בהתחברות..."
|
msgstr "בהתחברות..."
|
||||||
|
|
||||||
@ -997,7 +1002,7 @@ msgid "Grant this time only"
|
|||||||
msgstr "הענקת גישה הפעם בלבד"
|
msgstr "הענקת גישה הפעם בלבד"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:382
|
||||||
#: ../js/ui/telepathyClient.js:1168
|
#: ../js/ui/telepathyClient.js:1098
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "סירוב"
|
msgstr "סירוב"
|
||||||
|
|
||||||
@ -1051,121 +1056,129 @@ msgid "<unknown>"
|
|||||||
msgstr "<לא ידוע>"
|
msgstr "<לא ידוע>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:277
|
#: ../js/ui/status/network.js:278
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "מנוטרל"
|
msgstr "מנוטרל"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:488
|
#: ../js/ui/status/network.js:489
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "לא מנוהל"
|
msgstr "לא מנוהל"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:499
|
#: ../js/ui/status/network.js:500
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "נדרש אימות"
|
msgstr "נדרש אימות"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:509
|
#: ../js/ui/status/network.js:510
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "הקושחה חסרה"
|
msgstr "הקושחה חסרה"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:516
|
#: ../js/ui/status/network.js:517
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "הכבל מנותק"
|
msgstr "הכבל מנותק"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:521
|
#: ../js/ui/status/network.js:522
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "לא זמין"
|
msgstr "לא זמין"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:523
|
#: ../js/ui/status/network.js:524
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "החיבור נכשל"
|
msgstr "החיבור נכשל"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:584
|
#: ../js/ui/status/network.js:585
|
||||||
#: ../js/ui/status/network.js:1504
|
#: ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "עוד..."
|
msgstr "עוד..."
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:620
|
#: ../js/ui/status/network.js:621
|
||||||
#: ../js/ui/status/network.js:1439
|
#: ../js/ui/status/network.js:1440
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "מחובר (פרטי)"
|
msgstr "מחובר (פרטי)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:695
|
#: ../js/ui/status/network.js:696
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "אתרנט אוטומטי"
|
msgstr "אתרנט אוטומטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:756
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "פס רחב אוטומטי"
|
msgstr "פס רחב אוטומטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:759
|
#: ../js/ui/status/network.js:760
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "חיוג אוטומטי"
|
msgstr "חיוג אוטומטי"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:878
|
#: ../js/ui/status/network.js:879
|
||||||
#: ../js/ui/status/network.js:1451
|
#: ../js/ui/status/network.js:1452
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "%s אוטומטי"
|
msgstr "%s אוטומטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:880
|
#: ../js/ui/status/network.js:881
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Bluetooth אוטומטי"
|
msgstr "Bluetooth אוטומטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:1454
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "אלחוטי אוטומטי"
|
msgstr "אלחוטי אוטומטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1547
|
#: ../js/ui/status/network.js:1541
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "רשת"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1548
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "הפעלת תכונת הרשת"
|
msgstr "הפעלת תכונת הרשת"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1559
|
#: ../js/ui/status/network.js:1560
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "קווי"
|
msgstr "קווי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1570
|
#: ../js/ui/status/network.js:1571
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "אלחוטי"
|
msgstr "אלחוטי"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1580
|
#: ../js/ui/status/network.js:1581
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "פס־רחב נייד"
|
msgstr "פס־רחב נייד"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1590
|
#: ../js/ui/status/network.js:1591
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "חיבורי VPN"
|
msgstr "חיבורי VPN"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1601
|
#: ../js/ui/status/network.js:1602
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "הגדרות הרשת"
|
msgstr "הגדרות הרשת"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1738
|
#: ../js/ui/status/network.js:1739
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "ההתחברות נכשל"
|
msgstr "ההתחברות נכשל"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1740
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "הפעלת חיבור הרשת נכשלה"
|
msgstr "הפעלת חיבור הרשת נכשלה"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1989
|
#: ../js/ui/status/network.js:1993
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "תכונת הרשת מנוטרלת"
|
msgstr "תכונת הרשת מנוטרלת"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2113
|
#: ../js/ui/status/network.js:2117
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "מנהל הרשתות"
|
msgstr "מנהל הרשתות"
|
||||||
|
|
||||||
|
#: ../js/ui/status/power.js:60
|
||||||
|
msgid "Battery"
|
||||||
|
msgstr "סוללה"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:77
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "הגדרות צריכת החשמל"
|
msgstr "הגדרות צריכת החשמל"
|
||||||
@ -1259,6 +1272,7 @@ msgstr "טבלת שליטה"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "מחשב"
|
msgstr "מחשב"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:25
|
||||||
#: ../js/ui/status/volume.js:38
|
#: ../js/ui/status/volume.js:38
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "עצמה"
|
msgstr "עצמה"
|
||||||
@ -1267,47 +1281,46 @@ msgstr "עצמה"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "מיקרופון"
|
msgstr "מיקרופון"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:267
|
#: ../js/ui/telepathyClient.js:225
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "הזמנה"
|
msgstr "הזמנה"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:335
|
#: ../js/ui/telepathyClient.js:278
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "התקשרות"
|
msgstr "התקשרות"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:365
|
#: ../js/ui/telepathyClient.js:294
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "העברת קבצים"
|
msgstr "העברת קבצים"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:446
|
#: ../js/ui/telepathyClient.js:376
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "בקשת הרשמה"
|
msgstr "בקשת הרשמה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:482
|
#: ../js/ui/telepathyClient.js:412
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "שגיאת התחברות"
|
msgstr "שגיאת התחברות"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s התחבר/ה."
|
msgstr "%s התחבר/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s התנתק/ה."
|
msgstr "%s התנתק/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:678
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "'%s' מרוחק/ת."
|
msgstr "'%s' מרוחק/ת."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:751
|
#: ../js/ui/telepathyClient.js:681
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s עסוק/ה."
|
msgstr "%s עסוק/ה."
|
||||||
@ -1315,35 +1328,35 @@ msgstr "%s עסוק/ה."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:964
|
#: ../js/ui/telepathyClient.js:894
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
|
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:970
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>"
|
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:975
|
#: ../js/ui/telepathyClient.js:905
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>, %Y"
|
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1017
|
#: ../js/ui/telepathyClient.js:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "השם של %s הוחלף ל־%s"
|
msgstr "השם של %s הוחלף ל־%s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1119
|
#: ../js/ui/telepathyClient.js:1049
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "הזמנה ל־%s"
|
msgstr "הזמנה ל־%s"
|
||||||
@ -1351,37 +1364,37 @@ msgstr "הזמנה ל־%s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1127
|
#: ../js/ui/telepathyClient.js:1057
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "הוזמנת על ידי %s להצטרף אל %s"
|
msgstr "הוזמנת על ידי %s להצטרף אל %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1129
|
#: ../js/ui/telepathyClient.js:1059
|
||||||
#: ../js/ui/telepathyClient.js:1209
|
#: ../js/ui/telepathyClient.js:1138
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1236
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "דחייה"
|
msgstr "דחייה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1130
|
#: ../js/ui/telepathyClient.js:1060
|
||||||
#: ../js/ui/telepathyClient.js:1210
|
#: ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1308
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "אישור"
|
msgstr "אישור"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1160
|
#: ../js/ui/telepathyClient.js:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "שיחת וידאו מאת %s"
|
msgstr "שיחת וידאו מאת %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1163
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "שיחה מאת %s"
|
msgstr "שיחה מאת %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1170
|
#: ../js/ui/telepathyClient.js:1100
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "מענה"
|
msgstr "מענה"
|
||||||
|
|
||||||
@ -1390,125 +1403,125 @@ msgstr "מענה"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1203
|
#: ../js/ui/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s שולח/ת אליך %s"
|
msgstr "%s שולח/ת אליך %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1272
|
#: ../js/ui/telepathyClient.js:1201
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
|
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1365
|
#: ../js/ui/telepathyClient.js:1294
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "שגיאת רשת"
|
msgstr "שגיאת רשת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1367
|
#: ../js/ui/telepathyClient.js:1296
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "האימות נכשל"
|
msgstr "האימות נכשל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1369
|
#: ../js/ui/telepathyClient.js:1298
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "שגיאת הצפנה"
|
msgstr "שגיאת הצפנה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1371
|
#: ../js/ui/telepathyClient.js:1300
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "לא סופק אישור"
|
msgstr "לא סופק אישור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1373
|
#: ../js/ui/telepathyClient.js:1302
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "האישור אינו מהימן"
|
msgstr "האישור אינו מהימן"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1375
|
#: ../js/ui/telepathyClient.js:1304
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "האישור פג"
|
msgstr "האישור פג"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1377
|
#: ../js/ui/telepathyClient.js:1306
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "האישור לא מופעל"
|
msgstr "האישור לא מופעל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1379
|
#: ../js/ui/telepathyClient.js:1308
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "שם המארח באישור אינו תואם"
|
msgstr "שם המארח באישור אינו תואם"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1381
|
#: ../js/ui/telepathyClient.js:1310
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "חוסר התאמה בטביעת האצבע של האישור"
|
msgstr "חוסר התאמה בטביעת האצבע של האישור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1383
|
#: ../js/ui/telepathyClient.js:1312
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "אישור בחתימה עצמית"
|
msgstr "אישור בחתימה עצמית"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1385
|
#: ../js/ui/telepathyClient.js:1314
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "המצב הוגדר ל'מנותק'"
|
msgstr "המצב הוגדר ל'מנותק'"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1387
|
#: ../js/ui/telepathyClient.js:1316
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "ההצפנה אינה זמינה"
|
msgstr "ההצפנה אינה זמינה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1389
|
#: ../js/ui/telepathyClient.js:1318
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "האישור אינו תקף"
|
msgstr "האישור אינו תקף"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1391
|
#: ../js/ui/telepathyClient.js:1320
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "ההתחברות נשללה"
|
msgstr "ההתחברות נשללה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1393
|
#: ../js/ui/telepathyClient.js:1322
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "לא ניתן להפעיל את החיבור"
|
msgstr "לא ניתן להפעיל את החיבור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1395
|
#: ../js/ui/telepathyClient.js:1324
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "החיבור אבד"
|
msgstr "החיבור אבד"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1397
|
#: ../js/ui/telepathyClient.js:1326
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "משאב זה כבר מחובר לשרת"
|
msgstr "משאב זה כבר מחובר לשרת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1328
|
||||||
msgid "Connection has been replaced by a new connection using the same resource"
|
msgid "Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
|
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1401
|
#: ../js/ui/telepathyClient.js:1330
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "החשבון כבר קיים בשרת"
|
msgstr "החשבון כבר קיים בשרת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1403
|
#: ../js/ui/telepathyClient.js:1332
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
|
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1405
|
#: ../js/ui/telepathyClient.js:1334
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "האישור נשלל"
|
msgstr "האישור נשלל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1407
|
#: ../js/ui/telepathyClient.js:1336
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
|
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1409
|
#: ../js/ui/telepathyClient.js:1338
|
||||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
|
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1419
|
#: ../js/ui/telepathyClient.js:1348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "החיבור אל %s נכשל"
|
msgstr "החיבור אל %s נכשל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1357
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "התחברות מחדש"
|
msgstr "התחברות מחדש"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1429
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "עריכת חשבון"
|
msgstr "עריכת חשבון"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1475
|
#: ../js/ui/telepathyClient.js:1404
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "סיבה לא ידועה"
|
msgstr "סיבה לא ידועה"
|
||||||
|
|
||||||
@ -1524,41 +1537,41 @@ msgstr "בהמתנה"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "לא זמין"
|
msgstr "לא זמין"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:576
|
#: ../js/ui/userMenu.js:578
|
||||||
#: ../js/ui/userMenu.js:580
|
#: ../js/ui/userMenu.js:582
|
||||||
#: ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:652
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "כיבוי..."
|
msgstr "כיבוי..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:614
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "התרעות"
|
msgstr "התרעות"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:622
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "חשבונות מקוונים"
|
msgstr "חשבונות מקוונים"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:624
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "הגדרות המערכת"
|
msgstr "הגדרות המערכת"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:633
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "נעילת המסך"
|
msgstr "נעילת המסך"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:636
|
#: ../js/ui/userMenu.js:638
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "החלפת משתמש"
|
msgstr "החלפת משתמש"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "ניתוק..."
|
msgstr "ניתוק..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:671
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
|
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:672
|
||||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||||
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
|
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
|
||||||
|
|
||||||
@ -1630,7 +1643,7 @@ msgstr "Print version"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
||||||
|
|
||||||
#: ../src/shell-app.c:639
|
#: ../src/shell-app.c:617
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "אירע כשל בטעינת '%s'"
|
msgstr "אירע כשל בטעינת '%s'"
|
||||||
@ -1643,7 +1656,7 @@ msgstr "בריטניה"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "בררת מחדל"
|
msgstr "בררת מחדל"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:332
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
||||||
|
|
||||||
|
265
po/nb.po
265
po/nb.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 3.3.x\n"
|
"Project-Id-Version: gnome-shell 3.3.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-01-06 21:16+0100\n"
|
"POT-Creation-Date: 2012-01-28 15:53+0100\n"
|
||||||
"PO-Revision-Date: 2012-01-06 21:18+0100\n"
|
"PO-Revision-Date: 2012-01-28 15:53+0100\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -173,45 +173,45 @@ msgstr ""
|
|||||||
"og bruke denne filendelsen. Den bør endres når du gjør opptak til et nytt "
|
"og bruke denne filendelsen. Den bør endres når du gjør opptak til et nytt "
|
||||||
"oppbevaringsformat."
|
"oppbevaringsformat."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:623
|
#: ../js/gdm/loginDialog.js:624
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Økt …"
|
msgstr "Økt …"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:786
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Logg inn"
|
msgstr "Logg inn"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:831
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(eller dra finger)"
|
msgstr "(eller dra finger)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:852
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ikke listet?"
|
msgstr "Ikke listet?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:418
|
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||||
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
#: ../js/ui/extensionSystem.js:516 ../js/ui/networkAgent.js:145
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1025
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Logg inn"
|
msgstr "Logg inn"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1376
|
#: ../js/gdm/loginDialog.js:1377
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Innloggingsvindu"
|
msgstr "Innloggingsvindu"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:578
|
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:580
|
||||||
#: ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:649
|
#: ../js/ui/userMenu.js:582 ../js/ui/userMenu.js:651
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Hvilemodus"
|
msgstr "Hvilemodus"
|
||||||
|
|
||||||
@ -433,7 +433,7 @@ msgid "Next week"
|
|||||||
msgstr "Neste uke"
|
msgstr "Neste uke"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:394
|
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukjent"
|
msgstr "Ukjent"
|
||||||
|
|
||||||
@ -453,7 +453,7 @@ msgstr "Opptatt"
|
|||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Frakoblet"
|
msgstr "Frakoblet"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:141
|
#: ../js/ui/contactDisplay.js:148
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTER"
|
msgstr "KONTAKTER"
|
||||||
|
|
||||||
@ -461,58 +461,58 @@ msgstr "KONTAKTER"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Fjern"
|
msgstr "Fjern"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:96
|
#: ../js/ui/dateMenu.js:97
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Innstillinger for dato og klokkeslett"
|
msgstr "Innstillinger for dato og klokkeslett"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:122
|
#: ../js/ui/dateMenu.js:123
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Åpne kalender"
|
msgstr "Åpne kalender"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:180
|
#: ../js/ui/dateMenu.js:181
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a %e %b, %R.%S"
|
msgstr "%a %e %b, %R.%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:182
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a %e %b, %R"
|
msgstr "%a %e %b, %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:185
|
#: ../js/ui/dateMenu.js:186
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a %R.%S"
|
msgstr "%a %R.%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a %R"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:193
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %e %b, %l.%M.%S %p"
|
msgstr "%a %e %b, %l.%M.%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:195
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %e %b, %l.%M %p"
|
msgstr "%a %e %b, %l.%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:198
|
#: ../js/ui/dateMenu.js:199
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l.%M.%S %p"
|
msgstr "%a %l.%M.%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l.%M %p"
|
msgstr "%a %l.%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:210
|
#: ../js/ui/dateMenu.js:211
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a %e %B, %Y"
|
msgstr "%a %e %B, %Y"
|
||||||
|
|
||||||
@ -689,7 +689,7 @@ msgstr "Fjern demping"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Demp"
|
msgstr "Demp"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2444
|
#: ../js/ui/messageTray.js:2446
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformasjon"
|
msgstr "Systeminformasjon"
|
||||||
|
|
||||||
@ -792,17 +792,17 @@ msgstr "Programmer"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Favoritter"
|
msgstr "Favoritter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:564
|
#: ../js/ui/panel.js:572
|
||||||
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:595
|
#: ../js/ui/panel.js:603
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktiviteter"
|
msgstr "Aktiviteter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:982
|
#: ../js/ui/panel.js:990
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Topp-panel"
|
msgstr "Topp-panel"
|
||||||
|
|
||||||
@ -819,7 +819,7 @@ msgstr "Prøv igjen"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Koble til …"
|
msgstr "Koble til …"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:364
|
#: ../js/ui/placeDisplay.js:367
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "STEDER & ENHETER"
|
msgstr "STEDER & ENHETER"
|
||||||
|
|
||||||
@ -852,7 +852,7 @@ msgstr "Passord:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:719
|
#: ../js/ui/popupMenu.js:720
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -888,6 +888,10 @@ msgstr "Skjul tekst"
|
|||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Feil passord. Prøv igjen"
|
msgstr "Feil passord. Prøv igjen"
|
||||||
|
|
||||||
|
#: ../js/ui/status/accessibility.js:47
|
||||||
|
msgid "Accessibility"
|
||||||
|
msgstr "Tilgjengelighet"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:52
|
#: ../js/ui/status/accessibility.js:52
|
||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Zoom"
|
msgstr "Zoom"
|
||||||
@ -931,10 +935,10 @@ msgstr "Høy kontrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Stor tekst"
|
msgstr "Stor tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:35 ../js/ui/status/bluetooth.js:258
|
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:341 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
||||||
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:436
|
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
||||||
#: ../js/ui/status/network.js:892
|
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -955,7 +959,7 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "Innstillinger for Bluetooth"
|
msgstr "Innstillinger for Bluetooth"
|
||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:255
|
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "maskinvare slått av"
|
msgstr "maskinvare slått av"
|
||||||
|
|
||||||
@ -963,11 +967,11 @@ msgstr "maskinvare slått av"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Tilkobling"
|
msgstr "Tilkobling"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:490
|
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "kobler fra …"
|
msgstr "kobler fra …"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:496
|
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "kobler til …"
|
msgstr "kobler til …"
|
||||||
|
|
||||||
@ -1018,7 +1022,7 @@ msgstr "Alltid gi tilgang"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Gi tilgang kun denne ene gangen"
|
msgstr "Gi tilgang kun denne ene gangen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1168
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Avvis"
|
msgstr "Avvis"
|
||||||
|
|
||||||
@ -1071,118 +1075,126 @@ msgid "<unknown>"
|
|||||||
msgstr "<ukjent>"
|
msgstr "<ukjent>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:277
|
#: ../js/ui/status/network.js:278
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "slått av"
|
msgstr "slått av"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:488
|
#: ../js/ui/status/network.js:489
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "ikke håndtert"
|
msgstr "ikke håndtert"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:499
|
#: ../js/ui/status/network.js:500
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "autentisering kreves"
|
msgstr "autentisering kreves"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:509
|
#: ../js/ui/status/network.js:510
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "fastvare mangler"
|
msgstr "fastvare mangler"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:516
|
#: ../js/ui/status/network.js:517
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "kabel koblet fra"
|
msgstr "kabel koblet fra"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:521
|
#: ../js/ui/status/network.js:522
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "ikke tilgjengelig"
|
msgstr "ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:523
|
#: ../js/ui/status/network.js:524
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "tilkobling feilet"
|
msgstr "tilkobling feilet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:584 ../js/ui/status/network.js:1504
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Mer …"
|
msgstr "Mer …"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:620 ../js/ui/status/network.js:1439
|
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Tilkoblet (privat)"
|
msgstr "Tilkoblet (privat)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:695
|
#: ../js/ui/status/network.js:696
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Automatisk Ethernet"
|
msgstr "Automatisk Ethernet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:756
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Automatisk bredbånd"
|
msgstr "Automatisk bredbånd"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:759
|
#: ../js/ui/status/network.js:760
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Automatisk oppringt"
|
msgstr "Automatisk oppringt"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1451
|
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Automatisk %s"
|
msgstr "Automatisk %s"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:880
|
#: ../js/ui/status/network.js:881
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Automatisk Bluetooth"
|
msgstr "Automatisk Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:1454
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Automatisk trådløst"
|
msgstr "Automatisk trådløst"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1547
|
#: ../js/ui/status/network.js:1541
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Nettverk"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1548
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Slå på nettverk"
|
msgstr "Slå på nettverk"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1559
|
#: ../js/ui/status/network.js:1560
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Kablet"
|
msgstr "Kablet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1570
|
#: ../js/ui/status/network.js:1571
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Trådløst"
|
msgstr "Trådløst"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1580
|
#: ../js/ui/status/network.js:1581
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Mobilt bredbånd"
|
msgstr "Mobilt bredbånd"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1590
|
#: ../js/ui/status/network.js:1591
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "VPN-tilkoblinger"
|
msgstr "VPN-tilkoblinger"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1601
|
#: ../js/ui/status/network.js:1602
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Innstillinger for nettverk"
|
msgstr "Innstillinger for nettverk"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1738
|
#: ../js/ui/status/network.js:1739
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Tilkobling feilet"
|
msgstr "Tilkobling feilet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1740
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktivering av nettverkstilkobling feilet"
|
msgstr "Aktivering av nettverkstilkobling feilet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1989
|
#: ../js/ui/status/network.js:1993
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "Nettverk er slått av"
|
msgstr "Nettverk er slått av"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2113
|
#: ../js/ui/status/network.js:2117
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Nettverkshåndtering"
|
msgstr "Nettverkshåndtering"
|
||||||
|
|
||||||
|
#: ../js/ui/status/power.js:60
|
||||||
|
msgid "Battery"
|
||||||
|
msgstr "Batteri"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:77
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Innstillinger for strøm"
|
msgstr "Innstillinger for strøm"
|
||||||
@ -1271,7 +1283,7 @@ msgstr "Nettbrett"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Datamaskin"
|
msgstr "Datamaskin"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:38
|
#: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:38
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volum"
|
msgstr "Volum"
|
||||||
|
|
||||||
@ -1279,47 +1291,46 @@ msgstr "Volum"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||||
#. system-users for now as Empathy does.
|
#. system-users for now as Empathy does.
|
||||||
#: ../js/ui/telepathyClient.js:267
|
#: ../js/ui/telepathyClient.js:225
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Invitasjon"
|
msgstr "Invitasjon"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:335
|
#: ../js/ui/telepathyClient.js:278
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Ring"
|
msgstr "Ring"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:365
|
#: ../js/ui/telepathyClient.js:294
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Filoverføring"
|
msgstr "Filoverføring"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:446
|
#: ../js/ui/telepathyClient.js:376
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Forespørsel om abbonering"
|
msgstr "Forespørsel om abbonering"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:482
|
#: ../js/ui/telepathyClient.js:412
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Feil ved tilkobling"
|
msgstr "Feil ved tilkobling"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:740
|
#: ../js/ui/telepathyClient.js:670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s er tilkoblet."
|
msgstr "%s er tilkoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:674
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s er frakoblet."
|
msgstr "%s er frakoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:678
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "«%s» er borte."
|
msgstr "«%s» er borte."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:751
|
#: ../js/ui/telepathyClient.js:681
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s er opptatt."
|
msgstr "%s er opptatt."
|
||||||
@ -1327,35 +1338,35 @@ msgstr "%s er opptatt."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:964
|
#: ../js/ui/telepathyClient.js:894
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:970
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||||
#. shown when you get a chat message in a different year.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:975
|
#: ../js/ui/telepathyClient.js:905
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:1017
|
#: ../js/ui/telepathyClient.js:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s er nå kjent som %s"
|
msgstr "%s er nå kjent som %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1119
|
#: ../js/ui/telepathyClient.js:1049
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitasjon til %s"
|
msgstr "Invitasjon til %s"
|
||||||
@ -1363,35 +1374,35 @@ msgstr "Invitasjon til %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1127
|
#: ../js/ui/telepathyClient.js:1057
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s inviterer deg til å bli med i %s"
|
msgstr "%s inviterer deg til å bli med i %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1129 ../js/ui/telepathyClient.js:1209
|
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1236
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Avslå"
|
msgstr "Avslå"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1130 ../js/ui/telepathyClient.js:1210
|
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1308
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Godta"
|
msgstr "Godta"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1160
|
#: ../js/ui/telepathyClient.js:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videosamtale fra %s"
|
msgstr "Videosamtale fra %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1163
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Samtale fra %s"
|
msgstr "Samtale fra %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1170
|
#: ../js/ui/telepathyClient.js:1100
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Svar"
|
msgstr "Svar"
|
||||||
|
|
||||||
@ -1400,110 +1411,110 @@ msgstr "Svar"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1203
|
#: ../js/ui/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s sender deg %s"
|
msgstr "%s sender deg %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1272
|
#: ../js/ui/telepathyClient.js:1201
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1365
|
#: ../js/ui/telepathyClient.js:1294
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Nettverksfeil"
|
msgstr "Nettverksfeil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1367
|
#: ../js/ui/telepathyClient.js:1296
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Autentisering feilet"
|
msgstr "Autentisering feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1369
|
#: ../js/ui/telepathyClient.js:1298
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Feil ved kryptering"
|
msgstr "Feil ved kryptering"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1371
|
#: ../js/ui/telepathyClient.js:1300
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Sertifikat ikke oppgitt"
|
msgstr "Sertifikat ikke oppgitt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1373
|
#: ../js/ui/telepathyClient.js:1302
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Stoler ikke på sertifikatet"
|
msgstr "Stoler ikke på sertifikatet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1375
|
#: ../js/ui/telepathyClient.js:1304
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Sertifikatet er utløpt"
|
msgstr "Sertifikatet er utløpt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1377
|
#: ../js/ui/telepathyClient.js:1306
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Sertifikatet er ikke aktivert"
|
msgstr "Sertifikatet er ikke aktivert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1379
|
#: ../js/ui/telepathyClient.js:1308
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Feil vertsnavn for sertifikat"
|
msgstr "Feil vertsnavn for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1381
|
#: ../js/ui/telepathyClient.js:1310
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Feil fingeravtrykk for sertifikat"
|
msgstr "Feil fingeravtrykk for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1383
|
#: ../js/ui/telepathyClient.js:1312
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Sertifikatet er selvsignert"
|
msgstr "Sertifikatet er selvsignert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1385
|
#: ../js/ui/telepathyClient.js:1314
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Status er satt til frakoblet"
|
msgstr "Status er satt til frakoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1387
|
#: ../js/ui/telepathyClient.js:1316
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Kryptering er ikke tilgjengelig"
|
msgstr "Kryptering er ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1389
|
#: ../js/ui/telepathyClient.js:1318
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Sertifikatet er ugyldig"
|
msgstr "Sertifikatet er ugyldig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1391
|
#: ../js/ui/telepathyClient.js:1320
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Tilkobling ble nektet"
|
msgstr "Tilkobling ble nektet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1393
|
#: ../js/ui/telepathyClient.js:1322
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Tilkobling kan ikke etableres"
|
msgstr "Tilkobling kan ikke etableres"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1395
|
#: ../js/ui/telepathyClient.js:1324
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Tilkobling tapt"
|
msgstr "Tilkobling tapt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1397
|
#: ../js/ui/telepathyClient.js:1326
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Denne ressursen er allerede koblet til tjeneren"
|
msgstr "Denne ressursen er allerede koblet til tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1328
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1401
|
#: ../js/ui/telepathyClient.js:1330
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Kontoen eksisterer allerede på tjeneren"
|
msgstr "Kontoen eksisterer allerede på tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1403
|
#: ../js/ui/telepathyClient.js:1332
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1405
|
#: ../js/ui/telepathyClient.js:1334
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Sertifikatet er tilbaketrukket"
|
msgstr "Sertifikatet er tilbaketrukket"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1407
|
#: ../js/ui/telepathyClient.js:1336
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1409
|
#: ../js/ui/telepathyClient.js:1338
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1513,20 +1524,20 @@ msgstr ""
|
|||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1419
|
#: ../js/ui/telepathyClient.js:1348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Tilkobling til %s feilet"
|
msgstr "Tilkobling til %s feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1357
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Koble til på nytt"
|
msgstr "Koble til på nytt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1429
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Rediger konto"
|
msgstr "Rediger konto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1475
|
#: ../js/ui/telepathyClient.js:1404
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Ukjent årsak"
|
msgstr "Ukjent årsak"
|
||||||
|
|
||||||
@ -1542,39 +1553,39 @@ msgstr "Ledig"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Ikke tilgjengelig"
|
msgstr "Ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:576 ../js/ui/userMenu.js:580 ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:578 ../js/ui/userMenu.js:582 ../js/ui/userMenu.js:652
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Slå av …"
|
msgstr "Slå av …"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:614
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Varslinger"
|
msgstr "Varslinger"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:622
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Kontoer på nettet"
|
msgstr "Kontoer på nettet"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:624
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Systeminnstillinger"
|
msgstr "Systeminnstillinger"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:633
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lås skjerm"
|
msgstr "Lås skjerm"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:636
|
#: ../js/ui/userMenu.js:638
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Bytt bruker"
|
msgstr "Bytt bruker"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:643
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Logg ut …"
|
msgstr "Logg ut …"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:671
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Din pratestatus vil bli satt til opptatt"
|
msgstr "Din pratestatus vil bli satt til opptatt"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:672
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1648,7 +1659,7 @@ msgstr "Skriv ut versjon"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modus som brukes av GDM for innloggingsskjermen"
|
msgstr "Modus som brukes av GDM for innloggingsskjermen"
|
||||||
|
|
||||||
#: ../src/shell-app.c:639
|
#: ../src/shell-app.c:617
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Klarte ikke å starte «%s»"
|
msgstr "Klarte ikke å starte «%s»"
|
||||||
@ -1661,7 +1672,7 @@ msgstr "Storbritannia"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Forvalg"
|
msgstr "Forvalg"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:332
|
||||||
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"
|
||||||
|
|
||||||
|
222
po/sl.po
222
po/sl.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-01-15 01:35+0000\n"
|
"POT-Creation-Date: 2012-02-02 13:31+0000\n"
|
||||||
"PO-Revision-Date: 2012-01-15 13:44+0100\n"
|
"PO-Revision-Date: 2012-02-02 20:58+0100\n"
|
||||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||||
"Language: Slovenian\n"
|
"Language: Slovenian\n"
|
||||||
@ -75,8 +75,8 @@ msgstr "Seznam določil ID namiznih datotek priljubljenih programov"
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||||
msgstr "Določa cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. %T se uporablja kot ročnik za ugibanje optimalnega števila niti na sistemu."
|
msgstr "Določa cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'videorate ! vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. Vrednost %T se uporablja kot ročnik za ugibanje optimalnega števila niti na sistemu."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
@ -171,9 +171,9 @@ msgid "Login Window"
|
|||||||
msgstr "Prijavno okno"
|
msgstr "Prijavno okno"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:113
|
#: ../js/gdm/powerMenu.js:113
|
||||||
#: ../js/ui/userMenu.js:579
|
|
||||||
#: ../js/ui/userMenu.js:581
|
#: ../js/ui/userMenu.js:581
|
||||||
#: ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:583
|
||||||
|
#: ../js/ui/userMenu.js:652
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Zaustavi"
|
msgstr "Zaustavi"
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ msgstr "Naslednji teden"
|
|||||||
#: ../js/ui/contactDisplay.js:63
|
#: ../js/ui/contactDisplay.js:63
|
||||||
#: ../js/ui/notificationDaemon.js:486
|
#: ../js/ui/notificationDaemon.js:486
|
||||||
#: ../js/ui/status/power.js:215
|
#: ../js/ui/status/power.js:215
|
||||||
#: ../src/shell-app.c:394
|
#: ../src/shell-app.c:372
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Neznano"
|
msgstr "Neznano"
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ msgstr "Zaposleno"
|
|||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Nepovezano"
|
msgstr "Nepovezano"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:141
|
#: ../js/ui/contactDisplay.js:148
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "Stiki"
|
msgstr "Stiki"
|
||||||
|
|
||||||
@ -429,58 +429,58 @@ msgstr "Stiki"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Odstrani"
|
msgstr "Odstrani"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:96
|
#: ../js/ui/dateMenu.js:97
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Nastavitve časa in datuma"
|
msgstr "Nastavitve časa in datuma"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:122
|
#: ../js/ui/dateMenu.js:123
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Odpri koledar"
|
msgstr "Odpri koledar"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:180
|
#: ../js/ui/dateMenu.js:181
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%a. %e. %b., %R:%S"
|
msgstr "%a. %e. %b., %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:182
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%a, %e. %b., %R"
|
msgstr "%a, %e. %b., %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:185
|
#: ../js/ui/dateMenu.js:186
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%a. %R:%S"
|
msgstr "%a. %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:186
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%a. %R"
|
msgstr "%a. %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:193
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %b %e, %l:%M:%S %p"
|
msgstr "%a %b %e, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:194
|
#: ../js/ui/dateMenu.js:195
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %b %e, %l:%M %p"
|
msgstr "%a %b %e, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:198
|
#: ../js/ui/dateMenu.js:199
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:199
|
#: ../js/ui/dateMenu.js:200
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:210
|
#: ../js/ui/dateMenu.js:211
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a, %e. %b., %R"
|
msgstr "%a, %e. %b., %R"
|
||||||
|
|
||||||
@ -665,7 +665,7 @@ msgstr "Povrni glasnost"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Utišaj"
|
msgstr "Utišaj"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2444
|
#: ../js/ui/messageTray.js:2446
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Podrobnosti sistema"
|
msgstr "Podrobnosti sistema"
|
||||||
|
|
||||||
@ -767,17 +767,17 @@ msgstr "Programi"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Armaturna plošča"
|
msgstr "Armaturna plošča"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:564
|
#: ../js/ui/panel.js:572
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Končaj"
|
msgstr "Končaj"
|
||||||
|
|
||||||
#. 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:595
|
#: ../js/ui/panel.js:603
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Dejavnosti"
|
msgstr "Dejavnosti"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:982
|
#: ../js/ui/panel.js:990
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Vrhnja vrstica"
|
msgstr "Vrhnja vrstica"
|
||||||
|
|
||||||
@ -827,7 +827,7 @@ msgstr "Geslo:"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:719
|
#: ../js/ui/popupMenu.js:720
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -859,10 +859,14 @@ msgstr "Pokaži besedilo"
|
|||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Skrij besedilo"
|
msgstr "Skrij besedilo"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:269
|
#: ../js/ui/shellMountOperation.js:271
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Napačno geslo; poskusite znova."
|
msgstr "Napačno geslo; poskusite znova."
|
||||||
|
|
||||||
|
#: ../js/ui/status/accessibility.js:47
|
||||||
|
msgid "Accessibility"
|
||||||
|
msgstr "Dostopnost"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:52
|
#: ../js/ui/status/accessibility.js:52
|
||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Približanje"
|
msgstr "Približanje"
|
||||||
@ -906,13 +910,14 @@ msgstr "Visok kontrast"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Veliko besedilo"
|
msgstr "Veliko besedilo"
|
||||||
|
|
||||||
|
#: ../js/ui/status/bluetooth.js:31
|
||||||
#: ../js/ui/status/bluetooth.js:35
|
#: ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:258
|
#: ../js/ui/status/bluetooth.js:258
|
||||||
#: ../js/ui/status/bluetooth.js:341
|
#: ../js/ui/status/bluetooth.js:341
|
||||||
#: ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:371
|
||||||
#: ../js/ui/status/bluetooth.js:407
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
#: ../js/ui/status/bluetooth.js:436
|
#: ../js/ui/status/bluetooth.js:436
|
||||||
#: ../js/ui/status/network.js:892
|
#: ../js/ui/status/network.js:893
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -934,7 +939,7 @@ msgstr "Nastavitve za Bluetooth"
|
|||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107
|
#: ../js/ui/status/bluetooth.js:107
|
||||||
#: ../js/ui/status/network.js:255
|
#: ../js/ui/status/network.js:256
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "strojno onemogočen"
|
msgstr "strojno onemogočen"
|
||||||
|
|
||||||
@ -943,12 +948,12 @@ msgid "Connection"
|
|||||||
msgstr "Povezava"
|
msgstr "Povezava"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214
|
#: ../js/ui/status/bluetooth.js:214
|
||||||
#: ../js/ui/status/network.js:490
|
#: ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "prekinjanje povezave ..."
|
msgstr "prekinjanje povezave ..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227
|
#: ../js/ui/status/bluetooth.js:227
|
||||||
#: ../js/ui/status/network.js:496
|
#: ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "povezovanje ..."
|
msgstr "povezovanje ..."
|
||||||
|
|
||||||
@ -1055,122 +1060,130 @@ msgid "<unknown>"
|
|||||||
msgstr "<neznano>"
|
msgstr "<neznano>"
|
||||||
|
|
||||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
#: ../js/ui/status/network.js:277
|
#: ../js/ui/status/network.js:278
|
||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "onemogočeno"
|
msgstr "onemogočeno"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||||
#: ../js/ui/status/network.js:488
|
#: ../js/ui/status/network.js:489
|
||||||
msgid "unmanaged"
|
msgid "unmanaged"
|
||||||
msgstr "neupravljano"
|
msgstr "neupravljano"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:499
|
#: ../js/ui/status/network.js:500
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "zahtevana je overitev"
|
msgstr "zahtevana je overitev"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
#: ../js/ui/status/network.js:509
|
#: ../js/ui/status/network.js:510
|
||||||
msgid "firmware missing"
|
msgid "firmware missing"
|
||||||
msgstr "manjka strojna programska oprema"
|
msgstr "manjka strojna programska oprema"
|
||||||
|
|
||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:516
|
#: ../js/ui/status/network.js:517
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "kabel ni priklopljen"
|
msgstr "kabel ni priklopljen"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
#: ../js/ui/status/network.js:521
|
#: ../js/ui/status/network.js:522
|
||||||
msgid "unavailable"
|
msgid "unavailable"
|
||||||
msgstr "ni na voljo"
|
msgstr "ni na voljo"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:523
|
#: ../js/ui/status/network.js:524
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "povezovanje je spodletelo"
|
msgstr "povezovanje je spodletelo"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:584
|
#: ../js/ui/status/network.js:585
|
||||||
#: ../js/ui/status/network.js:1504
|
#: ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Več ..."
|
msgstr "Več ..."
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:620
|
#: ../js/ui/status/network.js:621
|
||||||
#: ../js/ui/status/network.js:1439
|
#: ../js/ui/status/network.js:1440
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Povezano (zasebna povezava)"
|
msgstr "Povezano (zasebna povezava)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:695
|
#: ../js/ui/status/network.js:696
|
||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Samodejni eternet"
|
msgstr "Samodejni eternet"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:756
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Samodejni širokopasovni dostop"
|
msgstr "Samodejni širokopasovni dostop"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:759
|
#: ../js/ui/status/network.js:760
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Samodejni klicni dostop"
|
msgstr "Samodejni klicni dostop"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:878
|
#: ../js/ui/status/network.js:879
|
||||||
#: ../js/ui/status/network.js:1451
|
#: ../js/ui/status/network.js:1452
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Samodejna povezava z %s"
|
msgstr "Samodejna povezava z %s"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:880
|
#: ../js/ui/status/network.js:881
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Samodejna povezava z Bluetooth"
|
msgstr "Samodejna povezava z Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1453
|
#: ../js/ui/status/network.js:1454
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Samodejni brezžični dostop"
|
msgstr "Samodejni brezžični dostop"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1547
|
#: ../js/ui/status/network.js:1541
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Omrežje"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1548
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Omogoči omrežje"
|
msgstr "Omogoči omrežje"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1559
|
#: ../js/ui/status/network.js:1560
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Žično"
|
msgstr "Žično"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1570
|
#: ../js/ui/status/network.js:1571
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Brezžično"
|
msgstr "Brezžično"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1580
|
#: ../js/ui/status/network.js:1581
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Mobilni širokopasovni dostop"
|
msgstr "Mobilni širokopasovni dostop"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1590
|
#: ../js/ui/status/network.js:1591
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "Povezave VPN"
|
msgstr "Povezave VPN"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1601
|
#: ../js/ui/status/network.js:1602
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Omrežne nastavitve"
|
msgstr "Omrežne nastavitve"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1738
|
#: ../js/ui/status/network.js:1739
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Povezava je spodletela"
|
msgstr "Povezava je spodletela"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1740
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Omogočanje omrežne povezave je spodletelo."
|
msgstr "Omogočanje omrežne povezave je spodletelo."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1989
|
#: ../js/ui/status/network.js:1993
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "Omrežje je onemogočeno"
|
msgstr "Omrežje je onemogočeno"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2113
|
#: ../js/ui/status/network.js:2117
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Upravljalnik omrežij"
|
msgstr "Upravljalnik omrežij"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:77
|
#: ../js/ui/status/power.js:59
|
||||||
|
msgid "Battery"
|
||||||
|
msgstr "Baterija"
|
||||||
|
|
||||||
|
#: ../js/ui/status/power.js:76
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Upravljanje napajanja"
|
msgstr "Upravljanje napajanja"
|
||||||
|
|
||||||
@ -1267,6 +1280,7 @@ msgstr "Tablični računalnik"
|
|||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Računalnik"
|
msgstr "Računalnik"
|
||||||
|
|
||||||
|
#: ../js/ui/status/volume.js:25
|
||||||
#: ../js/ui/status/volume.js:38
|
#: ../js/ui/status/volume.js:38
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Glasnost"
|
msgstr "Glasnost"
|
||||||
@ -1364,14 +1378,14 @@ msgid "%s is inviting you to join %s"
|
|||||||
msgstr "%s vas vabi, da se pridružite v %s"
|
msgstr "%s vas vabi, da se pridružite v %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1059
|
#: ../js/ui/telepathyClient.js:1059
|
||||||
#: ../js/ui/telepathyClient.js:1139
|
#: ../js/ui/telepathyClient.js:1138
|
||||||
#: ../js/ui/telepathyClient.js:1237
|
#: ../js/ui/telepathyClient.js:1236
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Zavrni"
|
msgstr "Zavrni"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1060
|
#: ../js/ui/telepathyClient.js:1060
|
||||||
#: ../js/ui/telepathyClient.js:1140
|
#: ../js/ui/telepathyClient.js:1139
|
||||||
#: ../js/ui/telepathyClient.js:1238
|
#: ../js/ui/telepathyClient.js:1237
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Sprejmi"
|
msgstr "Sprejmi"
|
||||||
|
|
||||||
@ -1397,125 +1411,125 @@ msgstr "Odgovori"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1133
|
#: ../js/ui/telepathyClient.js:1132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s pošilja %s"
|
msgstr "%s pošilja %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1202
|
#: ../js/ui/telepathyClient.js:1201
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s želi dovoljenje za pogled dosegljivosti"
|
msgstr "%s želi dovoljenje za pogled dosegljivosti"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1294
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Napaka omrežja"
|
msgstr "Napaka omrežja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1296
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Overitev je spodletela"
|
msgstr "Overitev je spodletela"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1298
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Napaka šifriranja"
|
msgstr "Napaka šifriranja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1300
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Potrdilo ni na voljo"
|
msgstr "Potrdilo ni na voljo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1302
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Potrdilo ni zaupljivo"
|
msgstr "Potrdilo ni zaupljivo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1304
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Potrdilo je preteklo"
|
msgstr "Potrdilo je preteklo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1306
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Potrdilo ni potrjeno"
|
msgstr "Potrdilo ni potrjeno"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1308
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Neustrezno ime gostitelja potrdila"
|
msgstr "Neustrezno ime gostitelja potrdila"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1310
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Neustrezen prstni odtis potrdila"
|
msgstr "Neustrezen prstni odtis potrdila"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1312
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Potrdilo je samo-podpisano"
|
msgstr "Potrdilo je samo-podpisano"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1314
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Stanje je nastavljeno na brez povezave"
|
msgstr "Stanje je nastavljeno na brez povezave"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1316
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Šifriranje ni na voljo."
|
msgstr "Šifriranje ni na voljo."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1318
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Potrdilo je neveljavno."
|
msgstr "Potrdilo je neveljavno."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1320
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Povezava je zavrnjena."
|
msgstr "Povezava je zavrnjena."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1322
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Povezave ni mogoče vzpostaviti."
|
msgstr "Povezave ni mogoče vzpostaviti."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1324
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Povezava je prekinjena."
|
msgstr "Povezava je prekinjena."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1326
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Vir je s strežnikom že povezan"
|
msgstr "Vir je s strežnikom že povezan"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1328
|
||||||
msgid "Connection has been replaced by a new connection using the same resource"
|
msgid "Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir."
|
msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1330
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Račun na strežniku že obstaja"
|
msgstr "Račun na strežniku že obstaja"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1332
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo."
|
msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1335
|
#: ../js/ui/telepathyClient.js:1334
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Potrdilo je preklicano"
|
msgstr "Potrdilo je preklicano"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1337
|
#: ../js/ui/telepathyClient.js:1336
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje."
|
msgstr "Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1339
|
#: ../js/ui/telepathyClient.js:1338
|
||||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr "Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, ki je določena s šifrirno knjižnico."
|
msgstr "Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, ki je določena s šifrirno knjižnico."
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1349
|
#: ../js/ui/telepathyClient.js:1348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Povezava z %s je spodletela"
|
msgstr "Povezava z %s je spodletela"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1358
|
#: ../js/ui/telepathyClient.js:1357
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Ponovno se poveži"
|
msgstr "Ponovno se poveži"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1359
|
#: ../js/ui/telepathyClient.js:1358
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Uredi račun"
|
msgstr "Uredi račun"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1405
|
#: ../js/ui/telepathyClient.js:1404
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Neznan vzrok"
|
msgstr "Neznan vzrok"
|
||||||
|
|
||||||
@ -1531,41 +1545,41 @@ msgstr "Nedejavno"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nedostopno"
|
msgstr "Nedostopno"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:577
|
#: ../js/ui/userMenu.js:579
|
||||||
#: ../js/ui/userMenu.js:581
|
#: ../js/ui/userMenu.js:583
|
||||||
#: ../js/ui/userMenu.js:651
|
#: ../js/ui/userMenu.js:653
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Izklop ..."
|
msgstr "Izklop ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:613
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Obvestila"
|
msgstr "Obvestila"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:623
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Spletni računi"
|
msgstr "Spletni računi"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:625
|
#: ../js/ui/userMenu.js:627
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Sistemske nastavitve"
|
msgstr "Sistemske nastavitve"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:632
|
#: ../js/ui/userMenu.js:634
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Zakleni zaslon"
|
msgstr "Zakleni zaslon"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:637
|
#: ../js/ui/userMenu.js:639
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Preklopi uporabnika"
|
msgstr "Preklopi uporabnika"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:642
|
#: ../js/ui/userMenu.js:644
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Odjava ..."
|
msgstr "Odjava ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:670
|
#: ../js/ui/userMenu.js:672
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:671
|
#: ../js/ui/userMenu.js:673
|
||||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||||
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
||||||
|
|
||||||
@ -1639,7 +1653,7 @@ msgstr "Izpiši različico"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Način uporabljen v GDM za prijavni naslov"
|
msgstr "Način uporabljen v GDM za prijavni naslov"
|
||||||
|
|
||||||
#: ../src/shell-app.c:639
|
#: ../src/shell-app.c:617
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Zaganjanje '%s' je spodletelo"
|
msgstr "Zaganjanje '%s' je spodletelo"
|
||||||
@ -1652,7 +1666,7 @@ msgstr "Velika Britanija"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Privzeto"
|
msgstr "Privzeto"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:332
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Uporabnik je zavrnil pogovorno okno overitve"
|
msgstr "Uporabnik je zavrnil pogovorno okno overitve"
|
||||||
|
|
||||||
|
688
po/zh_HK.po
688
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
691
po/zh_TW.po
691
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -11,39 +11,16 @@ st_cflags = \
|
|||||||
|
|
||||||
st_built_sources = \
|
st_built_sources = \
|
||||||
st-enum-types.h \
|
st-enum-types.h \
|
||||||
st-enum-types.c \
|
st-enum-types.c
|
||||||
st-marshal.h \
|
|
||||||
st-marshal.c
|
|
||||||
|
|
||||||
BUILT_SOURCES += $(st_built_sources)
|
BUILT_SOURCES += $(st_built_sources)
|
||||||
|
|
||||||
EXTRA_DIST += \
|
EXTRA_DIST += \
|
||||||
st/test-theme.css \
|
st/test-theme.css \
|
||||||
st/st-marshal.list \
|
|
||||||
st/st-enum-types.h.in \
|
st/st-enum-types.h.in \
|
||||||
st/st-enum-types.c.in
|
st/st-enum-types.c.in
|
||||||
|
|
||||||
CLEANFILES += stamp-st-marshal.h stamp-st-enum-types.h
|
CLEANFILES += stamp-st-enum-types.h
|
||||||
|
|
||||||
st-marshal.h: stamp-st-marshal.h
|
|
||||||
@true
|
|
||||||
stamp-st-marshal.h: Makefile st/st-marshal.list
|
|
||||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_st_marshal \
|
|
||||||
--header \
|
|
||||||
$(srcdir)/st/st-marshal.list > $@.tmp && \
|
|
||||||
(cmp -s $@.tmp st-marshal.h || cp -f $@.tmp st-marshal.h) && \
|
|
||||||
rm -f $@.tmp && \
|
|
||||||
echo timestamp > $(@F)
|
|
||||||
|
|
||||||
st-marshal.c: Makefile st/st-marshal.list
|
|
||||||
$(AM_V_GEN) (echo "#include \"st-marshal.h\"" ; \
|
|
||||||
$(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_st_marshal \
|
|
||||||
--body \
|
|
||||||
$(srcdir)/st/st-marshal.list ) > $@.tmp && \
|
|
||||||
cp -f $@.tmp st-marshal.c && \
|
|
||||||
rm -f $@.tmp
|
|
||||||
|
|
||||||
st-enum-types.h: stamp-st-enum-types.h Makefile
|
st-enum-types.h: stamp-st-enum-types.h Makefile
|
||||||
@true
|
@true
|
||||||
|
@ -5,14 +5,8 @@ tray_cflags = \
|
|||||||
$(TRAY_CFLAGS) \
|
$(TRAY_CFLAGS) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
tray_built_sources = \
|
|
||||||
na-marshal.h \
|
|
||||||
na-marshal.c
|
|
||||||
|
|
||||||
BUILT_SOURCES += $(tray_built_sources)
|
BUILT_SOURCES += $(tray_built_sources)
|
||||||
|
|
||||||
TRAY_STAMP_FILES = stamp-na-marshal.h
|
|
||||||
|
|
||||||
# please, keep this sorted alphabetically
|
# please, keep this sorted alphabetically
|
||||||
tray_source = \
|
tray_source = \
|
||||||
tray/na-tray-child.c \
|
tray/na-tray-child.c \
|
||||||
@ -21,26 +15,6 @@ tray_source = \
|
|||||||
tray/na-tray-manager.h \
|
tray/na-tray-manager.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
na-marshal.h: stamp-na-marshal.h
|
|
||||||
@true
|
|
||||||
stamp-na-marshal.h: Makefile tray/na-marshal.list
|
|
||||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_na_marshal \
|
|
||||||
--header \
|
|
||||||
$(srcdir)/tray/na-marshal.list > xgen-tmh && \
|
|
||||||
(cmp -s xgen-tmh na-marshal.h || cp -f xgen-tmh na-marshal.h) && \
|
|
||||||
rm -f xgen-tmh && \
|
|
||||||
echo timestamp > $(@F)
|
|
||||||
|
|
||||||
na-marshal.c: Makefile tray/na-marshal.list
|
|
||||||
$(AM_V_GEN) (echo "#include \"na-marshal.h\"" ; \
|
|
||||||
$(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_na_marshal \
|
|
||||||
--body \
|
|
||||||
$(srcdir)/tray/na-marshal.list ) > xgen-tmc && \
|
|
||||||
cp -f xgen-tmc na-marshal.c && \
|
|
||||||
rm -f xgen-tmc
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES += libtray.la
|
noinst_LTLIBRARIES += libtray.la
|
||||||
|
|
||||||
libtray_la_LIBADD = $(TRAY_LIBS)
|
libtray_la_LIBADD = $(TRAY_LIBS)
|
||||||
@ -52,6 +26,3 @@ libtray_la_CPPFLAGS = $(tray_cflags)
|
|||||||
libtray_la_LDFLAGS = $(LDADD)
|
libtray_la_LDFLAGS = $(LDADD)
|
||||||
|
|
||||||
CLEANFILES += $(TRAY_STAMP_FILES) $(BUILT_SOURCES)
|
CLEANFILES += $(TRAY_STAMP_FILES) $(BUILT_SOURCES)
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
tray/na-marshal.list
|
|
||||||
|
@ -27,8 +27,8 @@ CLEANFILES += $(service_DATA)
|
|||||||
|
|
||||||
CLEANFILES += $(gir_DATA) $(typelib_DATA)
|
CLEANFILES += $(gir_DATA) $(typelib_DATA)
|
||||||
|
|
||||||
bin_SCRIPTS += gnome-shell-extension-tool
|
bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-extension-prefs
|
||||||
EXTRA_DIST += gnome-shell-extension-tool.in
|
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-extension-prefs.in
|
||||||
bin_PROGRAMS = gnome-shell-real
|
bin_PROGRAMS = gnome-shell-real
|
||||||
|
|
||||||
if USE_JHBUILD_WRAPPER_SCRIPT
|
if USE_JHBUILD_WRAPPER_SCRIPT
|
||||||
@ -48,15 +48,17 @@ uninstall-hook:
|
|||||||
rm -f $(DESTDIR)$(bindir)/gnome-shell
|
rm -f $(DESTDIR)$(bindir)/gnome-shell
|
||||||
|
|
||||||
generated_script_substitutions = \
|
generated_script_substitutions = \
|
||||||
-e "s|@bindir[@]|$(bindir)|" \
|
-e "s|@bindir[@]|$(bindir)|g" \
|
||||||
-e "s|@datadir[@]|$(datadir)|" \
|
-e "s|@datadir[@]|$(datadir)|g" \
|
||||||
-e "s|@libexecdir[@]|$(libexecdir)|" \
|
-e "s|@libexecdir[@]|$(libexecdir)|g" \
|
||||||
-e "s|@libdir[@]|$(libdir)|" \
|
-e "s|@libdir[@]|$(libdir)|g" \
|
||||||
-e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|" \
|
-e "s|@pkglibdir[@]|$(pkglibdir)|g" \
|
||||||
-e "s|@pkgdatadir[@]|$(pkgdatadir)|" \
|
-e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|g" \
|
||||||
-e "s|@PYTHON[@]|$(PYTHON)|" \
|
-e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \
|
||||||
-e "s|@VERSION[@]|$(VERSION)|" \
|
-e "s|@PYTHON[@]|$(PYTHON)|g" \
|
||||||
-e "s|@sysconfdir[@]|$(sysconfdir)|"
|
-e "s|@VERSION[@]|$(VERSION)|g" \
|
||||||
|
-e "s|@sysconfdir[@]|$(sysconfdir)|g" \
|
||||||
|
-e "s|@GJS_CONSOLE[@]|$(GJS_CONSOLE)|g"
|
||||||
|
|
||||||
gnome-shell-jhbuild: gnome-shell-jhbuild.in gnome-shell-real Makefile
|
gnome-shell-jhbuild: gnome-shell-jhbuild.in gnome-shell-real Makefile
|
||||||
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
||||||
@ -66,6 +68,9 @@ gnome-shell-jhbuild: gnome-shell-jhbuild.in gnome-shell-real Makefile
|
|||||||
gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
|
gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
|
||||||
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
||||||
|
|
||||||
|
gnome-shell-extension-prefs: gnome-shell-extension-prefs.in Makefile
|
||||||
|
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
||||||
|
|
||||||
CLEANFILES += gnome-shell $(bin_SCRIPTS)
|
CLEANFILES += gnome-shell $(bin_SCRIPTS)
|
||||||
|
|
||||||
include Makefile-st.am
|
include Makefile-st.am
|
||||||
@ -86,16 +91,13 @@ gnome_shell_cflags = \
|
|||||||
-DJSDIR=\"$(pkgdatadir)/js\"
|
-DJSDIR=\"$(pkgdatadir)/js\"
|
||||||
|
|
||||||
privlibdir = $(pkglibdir)
|
privlibdir = $(pkglibdir)
|
||||||
privlib_LTLIBRARIES = libgnome-shell.la
|
privlib_LTLIBRARIES = libgnome-shell.la libgnome-shell-js.la
|
||||||
|
|
||||||
shell_built_sources = \
|
shell_built_sources = \
|
||||||
shell-marshal.h \
|
|
||||||
shell-marshal.c \
|
|
||||||
shell-enum-types.h \
|
shell-enum-types.h \
|
||||||
shell-enum-types.c
|
shell-enum-types.c
|
||||||
|
|
||||||
BUILT_SOURCES += $(shell_built_sources)
|
BUILT_SOURCES += $(shell_built_sources)
|
||||||
EXTRA_DIST += shell-marshal.list
|
|
||||||
|
|
||||||
shell_public_headers_h = \
|
shell_public_headers_h = \
|
||||||
shell-app.h \
|
shell-app.h \
|
||||||
@ -111,6 +113,7 @@ shell_public_headers_h = \
|
|||||||
shell-mount-operation.h \
|
shell-mount-operation.h \
|
||||||
shell-network-agent.h \
|
shell-network-agent.h \
|
||||||
shell-perf-log.h \
|
shell-perf-log.h \
|
||||||
|
shell-screen-grabber.h \
|
||||||
shell-slicer.h \
|
shell-slicer.h \
|
||||||
shell-stack.h \
|
shell-stack.h \
|
||||||
shell-tp-client.h \
|
shell-tp-client.h \
|
||||||
@ -158,6 +161,7 @@ libgnome_shell_la_SOURCES = \
|
|||||||
shell-perf-log.c \
|
shell-perf-log.c \
|
||||||
shell-polkit-authentication-agent.h \
|
shell-polkit-authentication-agent.h \
|
||||||
shell-polkit-authentication-agent.c \
|
shell-polkit-authentication-agent.c \
|
||||||
|
shell-screen-grabber.c \
|
||||||
shell-slicer.c \
|
shell-slicer.c \
|
||||||
shell-stack.c \
|
shell-stack.c \
|
||||||
shell-tp-client.c \
|
shell-tp-client.c \
|
||||||
@ -183,6 +187,23 @@ EXTRA_DIST += test-gapplication.js
|
|||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
|
libgnome_shell_js_la_SOURCES = \
|
||||||
|
shell-js.h \
|
||||||
|
shell-js.c \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
libgnome_shell_js_la_LIBADD = \
|
||||||
|
$(GNOME_SHELL_JS_LIBS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
libgnome_shell_js_la_LDFLAGS = \
|
||||||
|
-avoid-version
|
||||||
|
|
||||||
|
libgnome_shell_js_la_CPPFLAGS = \
|
||||||
|
$(GNOME_SHELL_JS_CFLAGS)
|
||||||
|
|
||||||
|
########################################
|
||||||
|
|
||||||
shell_recorder_sources = \
|
shell_recorder_sources = \
|
||||||
shell-recorder.c \
|
shell-recorder.c \
|
||||||
shell-recorder.h
|
shell-recorder.h
|
||||||
@ -206,6 +227,8 @@ test_recorder_LDADD = $(TEST_SHELL_RECORDER_LIBS)
|
|||||||
|
|
||||||
test_recorder_SOURCES = \
|
test_recorder_SOURCES = \
|
||||||
$(shell_recorder_sources) $(shell_recorder_private_sources) \
|
$(shell_recorder_sources) $(shell_recorder_private_sources) \
|
||||||
|
shell-screen-grabber.c \
|
||||||
|
shell-screen-grabber.h \
|
||||||
test-recorder.c
|
test-recorder.c
|
||||||
endif BUILD_RECORDER
|
endif BUILD_RECORDER
|
||||||
|
|
||||||
@ -230,28 +253,6 @@ run_js_test_SOURCES = \
|
|||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
shell-marshal.h: stamp-shell-marshal.h
|
|
||||||
@true
|
|
||||||
stamp-shell-marshal.h: Makefile shell-marshal.list
|
|
||||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_shell_marshal \
|
|
||||||
--header \
|
|
||||||
$(srcdir)/shell-marshal.list > xgen-smh && \
|
|
||||||
(cmp -s xgen-smh shell-marshal.h || cp -f xgen-smh shell-marshal.h) && \
|
|
||||||
rm -f xgen-smh && \
|
|
||||||
echo timestamp > $(@F)
|
|
||||||
CLEANFILES += stamp-shell-marshal.h
|
|
||||||
|
|
||||||
shell-marshal.c: Makefile shell-marshal.list
|
|
||||||
$(AM_V_GEN) (echo "#include \"shell-marshal.h\"" ; \
|
|
||||||
$(GLIB_GENMARSHAL) \
|
|
||||||
--prefix=_shell_marshal \
|
|
||||||
--body \
|
|
||||||
$(srcdir)/shell-marshal.list ) > xgen-smc && \
|
|
||||||
cp -f xgen-smc shell-marshal.c && \
|
|
||||||
rm -f xgen-smc
|
|
||||||
|
|
||||||
|
|
||||||
shell-enum-types.h: stamp-shell-enum-types.h Makefile
|
shell-enum-types.h: stamp-shell-enum-types.h Makefile
|
||||||
@true
|
@true
|
||||||
stamp-shell-enum-types.h: $(srcdir)/shell-enum-types.h.in $(shell_public_headers_h)
|
stamp-shell-enum-types.h: $(srcdir)/shell-enum-types.h.in $(shell_public_headers_h)
|
||||||
@ -296,6 +297,13 @@ Shell_0_1_gir_SCANNERFLAGS = --include-uninstalled=$(builddir)/St-1.0.gir \
|
|||||||
INTROSPECTION_GIRS += Shell-0.1.gir
|
INTROSPECTION_GIRS += Shell-0.1.gir
|
||||||
CLEANFILES += Shell-0.1.gir
|
CLEANFILES += Shell-0.1.gir
|
||||||
|
|
||||||
|
ShellJS-0.1.gir: libgnome-shell-js.la
|
||||||
|
ShellJS_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
|
||||||
|
ShellJS_0_1_gir_LIBS = libgnome-shell-js.la
|
||||||
|
ShellJS_0_1_gir_FILES = $(libgnome_shell_js_la_SOURCES)
|
||||||
|
INTROSPECTION_GIRS += ShellJS-0.1.gir
|
||||||
|
CLEANFILES += ShellJS-0.1.gir
|
||||||
|
|
||||||
St-1.0.gir: libst-1.0.la
|
St-1.0.gir: libst-1.0.la
|
||||||
St_1_0_gir_INCLUDES = Clutter-1.0 Gtk-3.0
|
St_1_0_gir_INCLUDES = Clutter-1.0 Gtk-3.0
|
||||||
St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION
|
St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION
|
||||||
|
@ -150,7 +150,7 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
|
|||||||
appointment_sources_changed),
|
appointment_sources_changed),
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
NULL,
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
|
|||||||
task_sources_changed),
|
task_sources_changed),
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
NULL,
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
15
src/gnome-shell-extension-prefs.in
Normal file
15
src/gnome-shell-extension-prefs.in
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -n "$GI_TYPELIB_PATH" ]; then
|
||||||
|
export GI_TYPELIB_PATH=@pkglibdir@
|
||||||
|
else
|
||||||
|
export GI_TYPELIB_PATH=@pkglibdir@:$GI_TYPELIB_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$LD_LIBRARY_PATH" ] ; then
|
||||||
|
export LD_LIBRARY_PATH=@pkglibdir@
|
||||||
|
else
|
||||||
|
export LD_LIBRARY_PATH=@pkglibdir@:$LD_LIBRARY_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
@GJS_CONSOLE@ -I @pkgdatadir@/js -c "const Main = imports.extensionPrefs.main; Main.main(ARGV);" "$@"
|
@ -171,8 +171,7 @@ gvc_channel_map_class_init (GvcChannelMapClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcChannelMapClass, volume_changed),
|
G_STRUCT_OFFSET (GvcChannelMapClass, volume_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__BOOLEAN,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
|
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GvcChannelMapPrivate));
|
g_type_class_add_private (klass, sizeof (GvcChannelMapPrivate));
|
||||||
|
@ -2137,56 +2137,49 @@ gvc_mixer_control_class_init (GvcMixerControlClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, state_changed),
|
G_STRUCT_OFFSET (GvcMixerControlClass, state_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [STREAM_ADDED] =
|
signals [STREAM_ADDED] =
|
||||||
g_signal_new ("stream-added",
|
g_signal_new ("stream-added",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, stream_added),
|
G_STRUCT_OFFSET (GvcMixerControlClass, stream_added),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [STREAM_REMOVED] =
|
signals [STREAM_REMOVED] =
|
||||||
g_signal_new ("stream-removed",
|
g_signal_new ("stream-removed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, stream_removed),
|
G_STRUCT_OFFSET (GvcMixerControlClass, stream_removed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [CARD_ADDED] =
|
signals [CARD_ADDED] =
|
||||||
g_signal_new ("card-added",
|
g_signal_new ("card-added",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, card_added),
|
G_STRUCT_OFFSET (GvcMixerControlClass, card_added),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [CARD_REMOVED] =
|
signals [CARD_REMOVED] =
|
||||||
g_signal_new ("card-removed",
|
g_signal_new ("card-removed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, card_removed),
|
G_STRUCT_OFFSET (GvcMixerControlClass, card_removed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [DEFAULT_SINK_CHANGED] =
|
signals [DEFAULT_SINK_CHANGED] =
|
||||||
g_signal_new ("default-sink-changed",
|
g_signal_new ("default-sink-changed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, default_sink_changed),
|
G_STRUCT_OFFSET (GvcMixerControlClass, default_sink_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
signals [DEFAULT_SOURCE_CHANGED] =
|
signals [DEFAULT_SOURCE_CHANGED] =
|
||||||
g_signal_new ("default-source-changed",
|
g_signal_new ("default-source-changed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GvcMixerControlClass, default_source_changed),
|
G_STRUCT_OFFSET (GvcMixerControlClass, default_source_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__UINT,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_UINT);
|
G_TYPE_NONE, 1, G_TYPE_UINT);
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GvcMixerControlPrivate));
|
g_type_class_add_private (klass, sizeof (GvcMixerControlPrivate));
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
static const char*const vendor_prefixes[] = { "gnome-",
|
static const char*const vendor_prefixes[] = { "gnome-",
|
||||||
"fedora-",
|
"fedora-",
|
||||||
"mozilla-",
|
"mozilla-",
|
||||||
|
"debian-",
|
||||||
NULL };
|
NULL };
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -69,8 +70,7 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
|||||||
SHELL_TYPE_APP_SYSTEM,
|
SHELL_TYPE_APP_SYSTEM,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
SHELL_TYPE_APP);
|
SHELL_TYPE_APP);
|
||||||
signals[INSTALLED_CHANGED] =
|
signals[INSTALLED_CHANGED] =
|
||||||
@ -78,8 +78,7 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
|||||||
SHELL_TYPE_APP_SYSTEM,
|
SHELL_TYPE_APP_SYSTEM,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (ShellAppSystemClass, installed_changed),
|
G_STRUCT_OFFSET (ShellAppSystemClass, installed_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
|
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include "shell-app-usage.h"
|
#include "shell-app-usage.h"
|
||||||
#include "shell-window-tracker.h"
|
#include "shell-window-tracker.h"
|
||||||
#include "shell-global.h"
|
#include "shell-global.h"
|
||||||
#include "shell-marshal.h"
|
|
||||||
|
|
||||||
/* This file includes modified code from
|
/* This file includes modified code from
|
||||||
* desktop-data-engine/engine-dbus/hippo-application-monitor.c
|
* desktop-data-engine/engine-dbus/hippo-application-monitor.c
|
||||||
|
@ -75,6 +75,7 @@ struct _ShellApp
|
|||||||
char *name_collation_key;
|
char *name_collation_key;
|
||||||
char *casefolded_description;
|
char *casefolded_description;
|
||||||
char *casefolded_exec;
|
char *casefolded_exec;
|
||||||
|
char **casefolded_keywords;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -1299,6 +1300,7 @@ shell_app_init_search_data (ShellApp *app)
|
|||||||
const char *name;
|
const char *name;
|
||||||
const char *exec;
|
const char *exec;
|
||||||
const char *comment;
|
const char *comment;
|
||||||
|
const char * const *keywords;
|
||||||
char *normalized_exec;
|
char *normalized_exec;
|
||||||
GDesktopAppInfo *appinfo;
|
GDesktopAppInfo *appinfo;
|
||||||
|
|
||||||
@ -1313,6 +1315,25 @@ shell_app_init_search_data (ShellApp *app)
|
|||||||
normalized_exec = shell_util_normalize_and_casefold (exec);
|
normalized_exec = shell_util_normalize_and_casefold (exec);
|
||||||
app->casefolded_exec = trim_exec_line (normalized_exec);
|
app->casefolded_exec = trim_exec_line (normalized_exec);
|
||||||
g_free (normalized_exec);
|
g_free (normalized_exec);
|
||||||
|
|
||||||
|
keywords = g_desktop_app_info_get_keywords (appinfo);
|
||||||
|
|
||||||
|
if (keywords)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
app->casefolded_keywords = g_new0 (char*, g_strv_length ((char **)keywords) + 1);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (keywords[i])
|
||||||
|
{
|
||||||
|
app->casefolded_keywords[i] = shell_util_normalize_and_casefold (keywords[i]);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
app->casefolded_keywords[i] = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
app->casefolded_keywords = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1381,6 +1402,23 @@ _shell_app_match_search_terms (ShellApp *app,
|
|||||||
current_match = MATCH_SUBSTRING;
|
current_match = MATCH_SUBSTRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (app->casefolded_keywords)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while (app->casefolded_keywords[i] && current_match < MATCH_PREFIX)
|
||||||
|
{
|
||||||
|
p = strstr (app->casefolded_keywords[i], term);
|
||||||
|
if (p != NULL)
|
||||||
|
{
|
||||||
|
if (p == app->casefolded_keywords[i])
|
||||||
|
current_match = MATCH_PREFIX;
|
||||||
|
else
|
||||||
|
current_match = MATCH_SUBSTRING;
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (current_match == MATCH_NONE)
|
if (current_match == MATCH_NONE)
|
||||||
return current_match;
|
return current_match;
|
||||||
|
|
||||||
@ -1464,6 +1502,7 @@ shell_app_finalize (GObject *object)
|
|||||||
g_free (app->name_collation_key);
|
g_free (app->name_collation_key);
|
||||||
g_free (app->casefolded_description);
|
g_free (app->casefolded_description);
|
||||||
g_free (app->casefolded_exec);
|
g_free (app->casefolded_exec);
|
||||||
|
g_strfreev (app->casefolded_keywords);
|
||||||
|
|
||||||
G_OBJECT_CLASS(shell_app_parent_class)->finalize (object);
|
G_OBJECT_CLASS(shell_app_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@ -1481,8 +1520,7 @@ shell_app_class_init(ShellAppClass *klass)
|
|||||||
SHELL_TYPE_APP,
|
SHELL_TYPE_APP,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -320,8 +320,7 @@ shell_doc_system_class_init(ShellDocSystemClass *klass)
|
|||||||
SHELL_TYPE_DOC_SYSTEM,
|
SHELL_TYPE_DOC_SYSTEM,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
signals[DELETED] =
|
signals[DELETED] =
|
||||||
@ -329,8 +328,7 @@ shell_doc_system_class_init(ShellDocSystemClass *klass)
|
|||||||
SHELL_TYPE_DOC_SYSTEM,
|
SHELL_TYPE_DOC_SYSTEM,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__BOXED,
|
|
||||||
G_TYPE_NONE, 1, GTK_TYPE_RECENT_INFO);
|
G_TYPE_NONE, 1, GTK_TYPE_RECENT_INFO);
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (ShellDocSystemPrivate));
|
g_type_class_add_private (gobject_class, sizeof (ShellDocSystemPrivate));
|
||||||
|
@ -285,8 +285,7 @@ shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
gi_cclosure_marshal_generic,
|
|
||||||
G_TYPE_NONE, 2, G_TYPE_FLOAT, SHELL_TYPE_GENERIC_CONTAINER_ALLOCATION);
|
G_TYPE_NONE, 2, G_TYPE_FLOAT, SHELL_TYPE_GENERIC_CONTAINER_ALLOCATION);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -310,8 +309,7 @@ shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
gi_cclosure_marshal_generic,
|
|
||||||
G_TYPE_NONE, 2, G_TYPE_FLOAT, SHELL_TYPE_GENERIC_CONTAINER_ALLOCATION);
|
G_TYPE_NONE, 2, G_TYPE_FLOAT, SHELL_TYPE_GENERIC_CONTAINER_ALLOCATION);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -331,8 +329,7 @@ shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
gi_cclosure_marshal_generic,
|
|
||||||
G_TYPE_NONE, 2, CLUTTER_TYPE_ACTOR_BOX, CLUTTER_TYPE_ALLOCATION_FLAGS);
|
G_TYPE_NONE, 2, CLUTTER_TYPE_ACTOR_BOX, CLUTTER_TYPE_ALLOCATION_FLAGS);
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (ShellGenericContainerPrivate));
|
g_type_class_add_private (gobject_class, sizeof (ShellGenericContainerPrivate));
|
||||||
|
@ -25,10 +25,8 @@ typedef struct _screenshot_data {
|
|||||||
|
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
||||||
int x;
|
cairo_surface_t *image;
|
||||||
int y;
|
cairo_rectangle_int_t screenshot_area;
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
|
|
||||||
ShellGlobalScreenshotCallback callback;
|
ShellGlobalScreenshotCallback callback;
|
||||||
} _screenshot_data;
|
} _screenshot_data;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <girepository.h>
|
#include <girepository.h>
|
||||||
#include <meta/display.h>
|
#include <meta/display.h>
|
||||||
#include <meta/util.h>
|
#include <meta/util.h>
|
||||||
|
#include <meta/meta-shaped-texture.h>
|
||||||
|
|
||||||
/* Memory report bits */
|
/* Memory report bits */
|
||||||
#ifdef HAVE_MALLINFO
|
#ifdef HAVE_MALLINFO
|
||||||
@ -34,8 +35,8 @@
|
|||||||
#include "shell-enum-types.h"
|
#include "shell-enum-types.h"
|
||||||
#include "shell-global-private.h"
|
#include "shell-global-private.h"
|
||||||
#include "shell-jsapi-compat-private.h"
|
#include "shell-jsapi-compat-private.h"
|
||||||
#include "shell-marshal.h"
|
|
||||||
#include "shell-perf-log.h"
|
#include "shell-perf-log.h"
|
||||||
|
#include "shell-screen-grabber.h"
|
||||||
#include "shell-window-tracker.h"
|
#include "shell-window-tracker.h"
|
||||||
#include "shell-wm.h"
|
#include "shell-wm.h"
|
||||||
#include "st.h"
|
#include "st.h"
|
||||||
@ -311,8 +312,7 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_shell_marshal_VOID__INT_INT,
|
|
||||||
G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
|
G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
|
||||||
|
|
||||||
/* Emitted from gnome-shell-plugin.c during event handling */
|
/* Emitted from gnome-shell-plugin.c during event handling */
|
||||||
@ -321,8 +321,7 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
/* Emitted from gnome-shell-plugin.c during event handling */
|
/* Emitted from gnome-shell-plugin.c during event handling */
|
||||||
@ -331,8 +330,7 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
shell_global_signals[NOTIFY_ERROR] =
|
shell_global_signals[NOTIFY_ERROR] =
|
||||||
@ -340,8 +338,7 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
gi_cclosure_marshal_generic,
|
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
G_TYPE_STRING);
|
G_TYPE_STRING);
|
||||||
@ -1180,70 +1177,6 @@ shell_global_destroy_pointer_barrier (ShellGlobal *global, guint32 barrier)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* shell_global_add_extension_importer:
|
|
||||||
* @target_object_script: JavaScript code evaluating to a target object
|
|
||||||
* @target_property: Name of property to use for importer
|
|
||||||
* @directory: Source directory:
|
|
||||||
* @error: A #GError
|
|
||||||
*
|
|
||||||
* This function sets a property named @target_property on the object
|
|
||||||
* resulting from the evaluation of @target_object_script code, which
|
|
||||||
* acts as a GJS importer for directory @directory.
|
|
||||||
*
|
|
||||||
* Returns: %TRUE on success
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
shell_global_add_extension_importer (ShellGlobal *global,
|
|
||||||
const char *target_object_script,
|
|
||||||
const char *target_property,
|
|
||||||
const char *directory,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
jsval target_object;
|
|
||||||
JSContext *context = gjs_context_get_native_context (global->js_context);
|
|
||||||
char *search_path[2] = { 0, 0 };
|
|
||||||
|
|
||||||
JS_BeginRequest (context);
|
|
||||||
|
|
||||||
// This is a bit of a hack; ideally we'd be able to pass our target
|
|
||||||
// object directly into this function, but introspection doesn't
|
|
||||||
// support that at the moment. Instead evaluate a string to get it.
|
|
||||||
if (!JS_EvaluateScript(context,
|
|
||||||
JS_GetGlobalObject(context),
|
|
||||||
target_object_script,
|
|
||||||
strlen (target_object_script),
|
|
||||||
"<target_object_script>",
|
|
||||||
0,
|
|
||||||
&target_object))
|
|
||||||
{
|
|
||||||
char *message;
|
|
||||||
gjs_log_exception(context,
|
|
||||||
&message);
|
|
||||||
g_set_error(error,
|
|
||||||
G_IO_ERROR,
|
|
||||||
G_IO_ERROR_FAILED,
|
|
||||||
"%s", message ? message : "(unknown)");
|
|
||||||
g_free(message);
|
|
||||||
goto out_error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!JSVAL_IS_OBJECT (target_object))
|
|
||||||
{
|
|
||||||
g_error ("shell_global_add_extension_importer: invalid target object");
|
|
||||||
goto out_error;
|
|
||||||
}
|
|
||||||
|
|
||||||
search_path[0] = (char*)directory;
|
|
||||||
gjs_define_importer (context, JSVAL_TO_OBJECT (target_object), target_property, (const char **)search_path, FALSE);
|
|
||||||
JS_EndRequest (context);
|
|
||||||
return TRUE;
|
|
||||||
out_error:
|
|
||||||
JS_EndRequest (context);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
|
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
|
||||||
*
|
*
|
||||||
* Authors: Padraig O'Briain, Matthias Clasen, Lennart Poettering
|
* Authors: Padraig O'Briain, Matthias Clasen, Lennart Poettering
|
||||||
@ -1965,25 +1898,67 @@ shell_global_launch_calendar_server (ShellGlobal *global)
|
|||||||
g_free (calendar_server_exe);
|
g_free (calendar_server_exe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_screenshot_written (GObject *source,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
_screenshot_data *screenshot_data = (_screenshot_data*) user_data;
|
||||||
|
if (screenshot_data->callback)
|
||||||
|
screenshot_data->callback (screenshot_data->global,
|
||||||
|
g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (result)),
|
||||||
|
&screenshot_data->screenshot_area);
|
||||||
|
|
||||||
|
cairo_surface_destroy (screenshot_data->image);
|
||||||
|
g_free (screenshot_data->filename);
|
||||||
|
g_free (screenshot_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
write_screenshot_thread (GSimpleAsyncResult *result,
|
||||||
|
GObject *object,
|
||||||
|
GCancellable *cancellable)
|
||||||
|
{
|
||||||
|
cairo_status_t status;
|
||||||
|
_screenshot_data *screenshot_data = g_async_result_get_user_data (G_ASYNC_RESULT (result));
|
||||||
|
g_assert (screenshot_data != NULL);
|
||||||
|
|
||||||
|
status = cairo_surface_write_to_png (screenshot_data->image, screenshot_data->filename);
|
||||||
|
g_simple_async_result_set_op_res_gboolean (result, status == CAIRO_STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
do_grab_screenshot (_screenshot_data *screenshot_data,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height)
|
||||||
|
{
|
||||||
|
ShellScreenGrabber *grabber;
|
||||||
|
static const cairo_user_data_key_t key;
|
||||||
|
guchar *data;
|
||||||
|
|
||||||
|
grabber = shell_screen_grabber_new ();
|
||||||
|
data = shell_screen_grabber_grab (grabber, x, y, width, height);
|
||||||
|
g_object_unref (grabber);
|
||||||
|
|
||||||
|
screenshot_data->image = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_RGB24,
|
||||||
|
width, height, width * 4);
|
||||||
|
cairo_surface_set_user_data (screenshot_data->image, &key,
|
||||||
|
data, (cairo_destroy_func_t)g_free);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grab_screenshot (ClutterActor *stage,
|
grab_screenshot (ClutterActor *stage,
|
||||||
_screenshot_data *screenshot_data)
|
_screenshot_data *screenshot_data)
|
||||||
{
|
{
|
||||||
MetaScreen *screen = shell_global_get_screen (screenshot_data->global);
|
MetaScreen *screen = shell_global_get_screen (screenshot_data->global);
|
||||||
cairo_status_t status;
|
|
||||||
cairo_surface_t *image;
|
|
||||||
guchar *data;
|
|
||||||
int width, height;
|
int width, height;
|
||||||
|
GSimpleAsyncResult *result;
|
||||||
|
|
||||||
meta_plugin_query_screen_size (screenshot_data->global->plugin, &width, &height);
|
meta_plugin_query_screen_size (screenshot_data->global->plugin, &width, &height);
|
||||||
image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
|
|
||||||
data = cairo_image_surface_get_data (image);
|
|
||||||
|
|
||||||
cogl_flush();
|
do_grab_screenshot (screenshot_data, 0, 0, width, height);
|
||||||
|
|
||||||
cogl_read_pixels (0, 0, width, height, COGL_READ_PIXELS_COLOR_BUFFER, CLUTTER_CAIRO_FORMAT_ARGB32, data);
|
|
||||||
|
|
||||||
cairo_surface_mark_dirty (image);
|
|
||||||
|
|
||||||
if (meta_screen_get_n_monitors (screen) > 1)
|
if (meta_screen_get_n_monitors (screen) > 1)
|
||||||
{
|
{
|
||||||
@ -2009,7 +1984,7 @@ grab_screenshot (ClutterActor *stage,
|
|||||||
cairo_region_xor (stage_region, screen_region);
|
cairo_region_xor (stage_region, screen_region);
|
||||||
cairo_region_destroy (screen_region);
|
cairo_region_destroy (screen_region);
|
||||||
|
|
||||||
cr = cairo_create (image);
|
cr = cairo_create (screenshot_data->image);
|
||||||
|
|
||||||
for (i = 0; i < cairo_region_num_rectangles (stage_region); i++)
|
for (i = 0; i < cairo_region_num_rectangles (stage_region); i++)
|
||||||
{
|
{
|
||||||
@ -2023,41 +1998,34 @@ grab_screenshot (ClutterActor *stage,
|
|||||||
cairo_region_destroy (stage_region);
|
cairo_region_destroy (stage_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
screenshot_data->screenshot_area.x = 0;
|
||||||
status = cairo_surface_write_to_png (image, screenshot_data->filename);
|
screenshot_data->screenshot_area.y = 0;
|
||||||
cairo_surface_destroy (image);
|
screenshot_data->screenshot_area.width = width;
|
||||||
|
screenshot_data->screenshot_area.height = height;
|
||||||
if (screenshot_data->callback)
|
|
||||||
screenshot_data->callback (screenshot_data->global, status == CAIRO_STATUS_SUCCESS);
|
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (stage, (void *)grab_screenshot, (gpointer)screenshot_data);
|
g_signal_handlers_disconnect_by_func (stage, (void *)grab_screenshot, (gpointer)screenshot_data);
|
||||||
g_free (screenshot_data->filename);
|
|
||||||
g_free (screenshot_data);
|
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, grab_screenshot);
|
||||||
|
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
|
||||||
|
g_object_unref (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grab_area_screenshot (ClutterActor *stage,
|
grab_area_screenshot (ClutterActor *stage,
|
||||||
_screenshot_data *screenshot_data)
|
_screenshot_data *screenshot_data)
|
||||||
{
|
{
|
||||||
cairo_status_t status;
|
GSimpleAsyncResult *result;
|
||||||
cairo_surface_t *image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, screenshot_data->width, screenshot_data->height);
|
|
||||||
guchar *data = cairo_image_surface_get_data (image);
|
|
||||||
|
|
||||||
cogl_flush();
|
do_grab_screenshot (screenshot_data,
|
||||||
|
screenshot_data->screenshot_area.x,
|
||||||
cogl_read_pixels (screenshot_data->x, screenshot_data->y, screenshot_data->width, screenshot_data->height,
|
screenshot_data->screenshot_area.y,
|
||||||
COGL_READ_PIXELS_COLOR_BUFFER, CLUTTER_CAIRO_FORMAT_ARGB32, data);
|
screenshot_data->screenshot_area.width,
|
||||||
|
screenshot_data->screenshot_area.height);
|
||||||
cairo_surface_mark_dirty (image);
|
|
||||||
status = cairo_surface_write_to_png (image, screenshot_data->filename);
|
|
||||||
cairo_surface_destroy (image);
|
|
||||||
|
|
||||||
if (screenshot_data->callback)
|
|
||||||
screenshot_data->callback (screenshot_data->global, status == CAIRO_STATUS_SUCCESS);
|
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (stage, (void *)grab_area_screenshot, (gpointer)screenshot_data);
|
g_signal_handlers_disconnect_by_func (stage, (void *)grab_area_screenshot, (gpointer)screenshot_data);
|
||||||
g_free (screenshot_data->filename);
|
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, grab_area_screenshot);
|
||||||
g_free (screenshot_data);
|
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
|
||||||
|
g_object_unref (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2073,8 +2041,8 @@ grab_area_screenshot (ClutterActor *stage,
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
shell_global_screenshot (ShellGlobal *global,
|
shell_global_screenshot (ShellGlobal *global,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
ShellGlobalScreenshotCallback callback)
|
ShellGlobalScreenshotCallback callback)
|
||||||
{
|
{
|
||||||
ClutterActor *stage;
|
ClutterActor *stage;
|
||||||
_screenshot_data *data = g_new0 (_screenshot_data, 1);
|
_screenshot_data *data = g_new0 (_screenshot_data, 1);
|
||||||
@ -2119,10 +2087,10 @@ shell_global_screenshot_area (ShellGlobal *global,
|
|||||||
|
|
||||||
data->global = global;
|
data->global = global;
|
||||||
data->filename = g_strdup (filename);
|
data->filename = g_strdup (filename);
|
||||||
data->x = x;
|
data->screenshot_area.x = x;
|
||||||
data->y = y;
|
data->screenshot_area.y = y;
|
||||||
data->width = width;
|
data->screenshot_area.width = width;
|
||||||
data->height = height;
|
data->screenshot_area.height = height;
|
||||||
data->callback = callback;
|
data->callback = callback;
|
||||||
|
|
||||||
stage = CLUTTER_ACTOR (meta_plugin_get_stage (global->plugin));
|
stage = CLUTTER_ACTOR (meta_plugin_get_stage (global->plugin));
|
||||||
@ -2138,60 +2106,69 @@ shell_global_screenshot_area (ShellGlobal *global,
|
|||||||
* @include_frame: Whether to include the frame or not
|
* @include_frame: Whether to include the frame or not
|
||||||
*
|
*
|
||||||
* @filename: The filename for the screenshot
|
* @filename: The filename for the screenshot
|
||||||
|
* @callback: (scope async): function to call returning success or failure
|
||||||
|
* of the async grabbing
|
||||||
*
|
*
|
||||||
* Takes a screenshot of the focused window (optionally omitting the frame)
|
* Takes a screenshot of the focused window (optionally omitting the frame)
|
||||||
* in @filename as png image.
|
* in @filename as png image.
|
||||||
*
|
*
|
||||||
* Return value: success or failure.
|
|
||||||
*/
|
*/
|
||||||
gboolean
|
void
|
||||||
shell_global_screenshot_window (ShellGlobal *global,
|
shell_global_screenshot_window (ShellGlobal *global,
|
||||||
gboolean include_frame,
|
gboolean include_frame,
|
||||||
const char *filename)
|
const char *filename,
|
||||||
|
ShellGlobalScreenshotCallback callback)
|
||||||
{
|
{
|
||||||
CoglHandle texture;
|
GSimpleAsyncResult *result;
|
||||||
cairo_surface_t *image;
|
|
||||||
guchar *data;
|
_screenshot_data *screenshot_data = g_new0 (_screenshot_data, 1);
|
||||||
|
|
||||||
MetaScreen *screen = meta_plugin_get_screen (global->plugin);
|
MetaScreen *screen = meta_plugin_get_screen (global->plugin);
|
||||||
MetaDisplay *display = meta_screen_get_display (screen);
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
MetaWindow *window = meta_display_get_focus_window (display);
|
MetaWindow *window = meta_display_get_focus_window (display);
|
||||||
ClutterActor *window_actor;
|
ClutterActor *window_actor;
|
||||||
|
gfloat actor_x, actor_y;
|
||||||
|
MetaShapedTexture *stex;
|
||||||
|
MetaRectangle rect;
|
||||||
|
cairo_rectangle_int_t clip;
|
||||||
|
|
||||||
cairo_status_t status;
|
screenshot_data->global = global;
|
||||||
|
screenshot_data->filename = g_strdup (filename);
|
||||||
|
screenshot_data->callback = callback;
|
||||||
|
|
||||||
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
|
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
|
||||||
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (meta_window_actor_get_texture (META_WINDOW_ACTOR (window_actor))));
|
clutter_actor_get_position (window_actor, &actor_x, &actor_y);
|
||||||
|
|
||||||
if (!include_frame)
|
if (include_frame || !meta_window_get_frame (window))
|
||||||
{
|
{
|
||||||
MetaRectangle *window_rect = meta_window_get_rect (window);
|
meta_window_get_outer_rect (window, &rect);
|
||||||
texture = cogl_texture_new_from_sub_texture (texture,
|
|
||||||
window_rect->x,
|
|
||||||
window_rect->y,
|
|
||||||
window_rect->width,
|
|
||||||
window_rect->height);
|
|
||||||
|
|
||||||
image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
screenshot_data->screenshot_area.x = rect.x;
|
||||||
window_rect->width,
|
screenshot_data->screenshot_area.y = rect.y;
|
||||||
window_rect->height);
|
|
||||||
|
clip.x = rect.x - (gint) actor_x;
|
||||||
|
clip.y = rect.y - (gint) actor_y;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
{
|
||||||
clutter_actor_get_width (window_actor),
|
rect = *meta_window_get_rect (window);
|
||||||
clutter_actor_get_height (window_actor));
|
|
||||||
|
|
||||||
data = cairo_image_surface_get_data (image);
|
screenshot_data->screenshot_area.x = (gint) actor_x + rect.x;
|
||||||
|
screenshot_data->screenshot_area.y = (gint) actor_y + rect.y;
|
||||||
|
|
||||||
cogl_flush();
|
clip.x = rect.x;
|
||||||
|
clip.y = rect.y;
|
||||||
|
}
|
||||||
|
|
||||||
cogl_texture_get_data (texture, CLUTTER_CAIRO_FORMAT_ARGB32, 0, data);
|
clip.width = screenshot_data->screenshot_area.width = rect.width;
|
||||||
|
clip.height = screenshot_data->screenshot_area.height = rect.height;
|
||||||
|
|
||||||
cairo_surface_mark_dirty (image);
|
stex = META_SHAPED_TEXTURE (meta_window_actor_get_texture (META_WINDOW_ACTOR (window_actor)));
|
||||||
status = cairo_surface_write_to_png (image, filename);
|
screenshot_data->image = meta_shaped_texture_get_image (stex, &clip);
|
||||||
cairo_surface_destroy (image);
|
|
||||||
|
|
||||||
return status == CAIRO_STATUS_SUCCESS;
|
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, shell_global_screenshot_window);
|
||||||
|
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
|
||||||
|
g_object_unref (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -119,12 +119,6 @@ void shell_global_run_at_leisure (ShellGlobal *global,
|
|||||||
|
|
||||||
|
|
||||||
/* Misc utilities / Shell API */
|
/* Misc utilities / Shell API */
|
||||||
gboolean shell_global_add_extension_importer (ShellGlobal *global,
|
|
||||||
const char *target_object_script,
|
|
||||||
const char *target_property,
|
|
||||||
const char *directory,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
void shell_global_sync_pointer (ShellGlobal *global);
|
void shell_global_sync_pointer (ShellGlobal *global);
|
||||||
|
|
||||||
GAppLaunchContext *
|
GAppLaunchContext *
|
||||||
@ -146,7 +140,9 @@ void shell_global_reexec_self (ShellGlobal *global);
|
|||||||
|
|
||||||
void shell_global_launch_calendar_server (ShellGlobal *global);
|
void shell_global_launch_calendar_server (ShellGlobal *global);
|
||||||
|
|
||||||
typedef void (*ShellGlobalScreenshotCallback) (ShellGlobal *global, gboolean success);
|
typedef void (*ShellGlobalScreenshotCallback) (ShellGlobal *global,
|
||||||
|
gboolean success,
|
||||||
|
cairo_rectangle_int_t *screenshot_area);
|
||||||
|
|
||||||
void shell_global_screenshot_area (ShellGlobal *global,
|
void shell_global_screenshot_area (ShellGlobal *global,
|
||||||
int x,
|
int x,
|
||||||
@ -156,9 +152,10 @@ void shell_global_screenshot_area (ShellGlobal *global,
|
|||||||
const char *filename,
|
const char *filename,
|
||||||
ShellGlobalScreenshotCallback callback);
|
ShellGlobalScreenshotCallback callback);
|
||||||
|
|
||||||
gboolean shell_global_screenshot_window (ShellGlobal *global,
|
void shell_global_screenshot_window (ShellGlobal *global,
|
||||||
gboolean include_frame,
|
gboolean include_frame,
|
||||||
const char *filename);
|
const char *filename,
|
||||||
|
ShellGlobalScreenshotCallback callback);
|
||||||
|
|
||||||
void shell_global_screenshot (ShellGlobal *global,
|
void shell_global_screenshot (ShellGlobal *global,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
|
81
src/shell-js.c
Normal file
81
src/shell-js.c
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "shell-js.h"
|
||||||
|
|
||||||
|
#include <jsapi.h>
|
||||||
|
#include <gio/gio.h>
|
||||||
|
#include <gjs/gjs.h>
|
||||||
|
#include <gjs/gjs-module.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_js_add_extension_importer:
|
||||||
|
* @target_object_script: JavaScript code evaluating to a target object
|
||||||
|
* @target_property: Name of property to use for importer
|
||||||
|
* @directory: Source directory:
|
||||||
|
* @error: A #GError
|
||||||
|
*
|
||||||
|
* This function sets a property named @target_property on the object
|
||||||
|
* resulting from the evaluation of @target_object_script code, which
|
||||||
|
* acts as a GJS importer for directory @directory.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE on success
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
shell_js_add_extension_importer (const char *target_object_script,
|
||||||
|
const char *target_property,
|
||||||
|
const char *directory,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
jsval target_object;
|
||||||
|
GList *contexts;
|
||||||
|
JSContext *context;
|
||||||
|
char *search_path[2] = { 0, 0 };
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
|
/* Take the first GjsContext from all of them --
|
||||||
|
* we should only ever have one context, so this
|
||||||
|
* should be alright. */
|
||||||
|
contexts = gjs_context_get_all ();
|
||||||
|
context = gjs_context_get_native_context (contexts->data);
|
||||||
|
g_list_free_full (contexts, g_object_unref);
|
||||||
|
|
||||||
|
JS_BeginRequest (context);
|
||||||
|
|
||||||
|
/* This is a bit of a hack; ideally we'd be able to pass our target
|
||||||
|
* object directly into this function, but introspection doesn't
|
||||||
|
* support that at the moment. Instead evaluate a string to get it. */
|
||||||
|
if (!JS_EvaluateScript(context,
|
||||||
|
JS_GetGlobalObject(context),
|
||||||
|
target_object_script,
|
||||||
|
strlen (target_object_script),
|
||||||
|
"<target_object_script>",
|
||||||
|
0,
|
||||||
|
&target_object))
|
||||||
|
{
|
||||||
|
char *message;
|
||||||
|
gjs_log_exception(context,
|
||||||
|
&message);
|
||||||
|
g_set_error(error,
|
||||||
|
G_IO_ERROR,
|
||||||
|
G_IO_ERROR_FAILED,
|
||||||
|
"%s", message ? message : "(unknown)");
|
||||||
|
g_free(message);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!JSVAL_IS_OBJECT (target_object))
|
||||||
|
{
|
||||||
|
g_error ("shell_js_add_extension_importer: invalid target object");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
search_path[0] = (char*)directory;
|
||||||
|
gjs_define_importer (context, JSVAL_TO_OBJECT (target_object), target_property, (const char **)search_path, FALSE);
|
||||||
|
ret = TRUE;
|
||||||
|
|
||||||
|
out:
|
||||||
|
JS_EndRequest (context);
|
||||||
|
return ret;
|
||||||
|
}
|
16
src/shell-js.h
Normal file
16
src/shell-js.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
#ifndef __SHELL_JS_H__
|
||||||
|
#define __SHELL_JS_H__
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
gboolean shell_js_add_extension_importer (const char *target_object_script,
|
||||||
|
const char *target_property,
|
||||||
|
const char *directory,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#endif /* __SHELL_JS_H__ */
|
@ -1,9 +0,0 @@
|
|||||||
VOID:INT,INT,INT
|
|
||||||
VOID:OBJECT,INT,INT,INT,INT
|
|
||||||
VOID:BOXED
|
|
||||||
VOID:BOXED,OBJECT
|
|
||||||
VOID:OBJECT,OBJECT
|
|
||||||
VOID:STRING,UINT,OBJECT,BOOLEAN
|
|
||||||
VOID:INT,INT
|
|
||||||
VOID:STRING,STRING,STRING,STRING,BOXED
|
|
||||||
VOID:STRING,OBJECT,STRING,BOXED
|
|
@ -135,8 +135,7 @@ shell_mount_operation_class_init (ShellMountOperationClass *klass)
|
|||||||
g_signal_new ("show-processes-2",
|
g_signal_new ("show-processes-2",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0, NULL, NULL,
|
0, NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (ShellMountOperationPrivate));
|
g_type_class_add_private (klass, sizeof (ShellMountOperationPrivate));
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include <gnome-keyring.h>
|
#include <gnome-keyring.h>
|
||||||
|
|
||||||
#include "shell-network-agent.h"
|
#include "shell-network-agent.h"
|
||||||
#include "shell-marshal.h"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SIGNAL_NEW_REQUEST,
|
SIGNAL_NEW_REQUEST,
|
||||||
@ -775,7 +774,7 @@ shell_network_agent_class_init (ShellNetworkAgentClass *klass)
|
|||||||
0, /* class offset */
|
0, /* class offset */
|
||||||
NULL, /* accumulator */
|
NULL, /* accumulator */
|
||||||
NULL, /* accu_data */
|
NULL, /* accu_data */
|
||||||
_shell_marshal_VOID__STRING_OBJECT_STRING_BOXED,
|
NULL, /* marshaller */
|
||||||
G_TYPE_NONE, /* return */
|
G_TYPE_NONE, /* return */
|
||||||
3, /* n_params */
|
3, /* n_params */
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
@ -789,7 +788,7 @@ shell_network_agent_class_init (ShellNetworkAgentClass *klass)
|
|||||||
0, /* class offset */
|
0, /* class offset */
|
||||||
NULL, /* accumulator */
|
NULL, /* accumulator */
|
||||||
NULL, /* accu_data */
|
NULL, /* accu_data */
|
||||||
g_cclosure_marshal_VOID__STRING,
|
NULL, /* marshaller */
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
1, /* n_params */
|
1, /* n_params */
|
||||||
G_TYPE_STRING);
|
G_TYPE_STRING);
|
||||||
|
@ -10,8 +10,6 @@
|
|||||||
|
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
|
||||||
#include "shell-marshal.h"
|
|
||||||
|
|
||||||
#define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
#define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
||||||
#include <polkitagent/polkitagent.h>
|
#include <polkitagent/polkitagent.h>
|
||||||
#include "shell-polkit-authentication-agent.h"
|
#include "shell-polkit-authentication-agent.h"
|
||||||
@ -173,7 +171,7 @@ shell_polkit_authentication_agent_class_init (ShellPolkitAuthenticationAgentClas
|
|||||||
0, /* class_offset */
|
0, /* class_offset */
|
||||||
NULL, /* accumulator */
|
NULL, /* accumulator */
|
||||||
NULL, /* accumulator data */
|
NULL, /* accumulator data */
|
||||||
_shell_marshal_VOID__STRING_STRING_STRING_STRING_BOXED,
|
NULL, /* marshaller */
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
5,
|
5,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
@ -189,7 +187,7 @@ shell_polkit_authentication_agent_class_init (ShellPolkitAuthenticationAgentClas
|
|||||||
0, /* class_offset */
|
0, /* class_offset */
|
||||||
NULL, /* accumulator */
|
NULL, /* accumulator */
|
||||||
NULL, /* accumulator data */
|
NULL, /* accumulator data */
|
||||||
g_cclosure_marshal_VOID__VOID,
|
NULL, /* marshaller */
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@ static void
|
|||||||
shell_recorder_src_init (ShellRecorderSrc *src,
|
shell_recorder_src_init (ShellRecorderSrc *src,
|
||||||
ShellRecorderSrcClass *klass)
|
ShellRecorderSrcClass *klass)
|
||||||
{
|
{
|
||||||
|
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
|
||||||
|
|
||||||
src->queue = g_async_queue_new ();
|
src->queue = g_async_queue_new ();
|
||||||
src->mutex = &src->mutex_data;
|
src->mutex = &src->mutex_data;
|
||||||
g_mutex_init (src->mutex);
|
g_mutex_init (src->mutex);
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "shell-recorder-src.h"
|
#include "shell-recorder-src.h"
|
||||||
#include "shell-recorder.h"
|
#include "shell-recorder.h"
|
||||||
|
#include "shell-screen-grabber.h"
|
||||||
|
|
||||||
#include <clutter/x11/clutter-x11.h>
|
#include <clutter/x11/clutter-x11.h>
|
||||||
#include <X11/extensions/Xfixes.h>
|
#include <X11/extensions/Xfixes.h>
|
||||||
@ -47,6 +48,8 @@ struct _ShellRecorder {
|
|||||||
int stage_width;
|
int stage_width;
|
||||||
int stage_height;
|
int stage_height;
|
||||||
|
|
||||||
|
ShellScreenGrabber *grabber;
|
||||||
|
|
||||||
gboolean have_pointer;
|
gboolean have_pointer;
|
||||||
int pointer_x;
|
int pointer_x;
|
||||||
int pointer_y;
|
int pointer_y;
|
||||||
@ -74,6 +77,7 @@ struct _ShellRecorder {
|
|||||||
GSList *pipelines; /* all pipelines */
|
GSList *pipelines; /* all pipelines */
|
||||||
|
|
||||||
GstClockTime start_time; /* When we started recording (adjusted for pauses) */
|
GstClockTime start_time; /* When we started recording (adjusted for pauses) */
|
||||||
|
GstClockTime last_frame_time; /* Timestamp for the last frame */
|
||||||
GstClockTime pause_time; /* When the pipeline was paused */
|
GstClockTime pause_time; /* When the pipeline was paused */
|
||||||
|
|
||||||
/* GSource IDs for different timeouts and idles */
|
/* GSource IDs for different timeouts and idles */
|
||||||
@ -114,14 +118,12 @@ enum {
|
|||||||
|
|
||||||
G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYPE_OBJECT);
|
G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYPE_OBJECT);
|
||||||
|
|
||||||
/* The number of frames per second we configure for the GStreamer pipeline.
|
/* The default value of the target frame rate; we'll never record more
|
||||||
* (the number of frames we actually write into the GStreamer pipeline is
|
* than this many frames per second, though we may record less if the
|
||||||
* based entirely on how fast clutter is drawing.) Using 60fps seems high
|
* screen isn't being redrawn. 30 is a compromise between smoothness
|
||||||
* but the observed smoothness is a lot better than for 30fps when encoding
|
* and the size of the recording.
|
||||||
* as theora for a minimal size increase. This may be an artifact of the
|
|
||||||
* encoding process.
|
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_FRAMES_PER_SECOND 15
|
#define DEFAULT_FRAMES_PER_SECOND 30
|
||||||
|
|
||||||
/* The time (in milliseconds) between querying the server for the cursor
|
/* The time (in milliseconds) between querying the server for the cursor
|
||||||
* position.
|
* position.
|
||||||
@ -145,7 +147,7 @@ G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYPE_OBJECT);
|
|||||||
* (Theora does have some support for frames at non-uniform times, but
|
* (Theora does have some support for frames at non-uniform times, but
|
||||||
* things seem to break down if there are large gaps.)
|
* things seem to break down if there are large gaps.)
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_PIPELINE "videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux"
|
#define DEFAULT_PIPELINE "vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux"
|
||||||
|
|
||||||
/* The default filename pattern. Example shell-20090311b-2.webm
|
/* The default filename pattern. Example shell-20090311b-2.webm
|
||||||
*/
|
*/
|
||||||
@ -265,6 +267,8 @@ shell_recorder_init (ShellRecorder *recorder)
|
|||||||
recorder->recording_icon = create_recording_icon ();
|
recorder->recording_icon = create_recording_icon ();
|
||||||
recorder->memory_target = get_memory_target();
|
recorder->memory_target = get_memory_target();
|
||||||
|
|
||||||
|
recorder->grabber = shell_screen_grabber_new ();
|
||||||
|
|
||||||
recorder->state = RECORDER_STATE_CLOSED;
|
recorder->state = RECORDER_STATE_CLOSED;
|
||||||
recorder->framerate = DEFAULT_FRAMES_PER_SECOND;
|
recorder->framerate = DEFAULT_FRAMES_PER_SECOND;
|
||||||
}
|
}
|
||||||
@ -296,6 +300,8 @@ shell_recorder_finalize (GObject *object)
|
|||||||
recorder_set_pipeline (recorder, NULL);
|
recorder_set_pipeline (recorder, NULL);
|
||||||
recorder_set_filename (recorder, NULL);
|
recorder_set_filename (recorder, NULL);
|
||||||
|
|
||||||
|
g_object_unref (recorder->grabber);
|
||||||
|
|
||||||
cogl_handle_unref (recorder->recording_icon);
|
cogl_handle_unref (recorder->recording_icon);
|
||||||
|
|
||||||
G_OBJECT_CLASS (shell_recorder_parent_class)->finalize (object);
|
G_OBJECT_CLASS (shell_recorder_parent_class)->finalize (object);
|
||||||
@ -518,21 +524,35 @@ recorder_record_frame (ShellRecorder *recorder)
|
|||||||
GstBuffer *buffer;
|
GstBuffer *buffer;
|
||||||
guint8 *data;
|
guint8 *data;
|
||||||
guint size;
|
guint size;
|
||||||
|
GstClockTime now;
|
||||||
|
|
||||||
|
/* If we get into the red zone, stop buffering new frames; 13/16 is
|
||||||
|
* a bit more than the 3/4 threshold for a red indicator to keep the
|
||||||
|
* indicator from flashing between red and yellow. */
|
||||||
|
if (recorder->memory_used > (recorder->memory_target * 13) / 16)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Drop frames to get down to something like the target frame rate; since frames
|
||||||
|
* are generated with VBlank sync, we don't have full control anyways, so we just
|
||||||
|
* drop frames if the interval since the last frame is less than 75% of the
|
||||||
|
* desired inter-frame interval.
|
||||||
|
*/
|
||||||
|
now = get_wall_time();
|
||||||
|
if (now - recorder->last_frame_time < (3 * 1000000000LL / (4 * recorder->framerate)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
recorder->last_frame_time = now;
|
||||||
|
|
||||||
size = recorder->stage_width * recorder->stage_height * 4;
|
size = recorder->stage_width * recorder->stage_height * 4;
|
||||||
data = g_malloc (size);
|
|
||||||
|
data = shell_screen_grabber_grab (recorder->grabber,
|
||||||
|
0, 0, recorder->stage_width, recorder->stage_height);
|
||||||
|
|
||||||
buffer = gst_buffer_new();
|
buffer = gst_buffer_new();
|
||||||
GST_BUFFER_SIZE(buffer) = size;
|
GST_BUFFER_SIZE(buffer) = size;
|
||||||
GST_BUFFER_MALLOCDATA(buffer) = GST_BUFFER_DATA(buffer) = data;
|
GST_BUFFER_MALLOCDATA(buffer) = GST_BUFFER_DATA(buffer) = data;
|
||||||
|
|
||||||
GST_BUFFER_TIMESTAMP(buffer) = get_wall_time() - recorder->start_time;
|
GST_BUFFER_TIMESTAMP(buffer) = now - recorder->start_time;
|
||||||
|
|
||||||
cogl_read_pixels (0, 0,
|
|
||||||
recorder->stage_width, recorder->stage_height,
|
|
||||||
COGL_READ_PIXELS_COLOR_BUFFER,
|
|
||||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
|
||||||
data);
|
|
||||||
|
|
||||||
recorder_draw_cursor (recorder, buffer);
|
recorder_draw_cursor (recorder, buffer);
|
||||||
|
|
||||||
@ -1558,9 +1578,15 @@ shell_recorder_new (ClutterStage *stage)
|
|||||||
* @recorder: the #ShellRecorder
|
* @recorder: the #ShellRecorder
|
||||||
* @framerate: Framerate used for resulting video in frames-per-second.
|
* @framerate: Framerate used for resulting video in frames-per-second.
|
||||||
*
|
*
|
||||||
* Sets the number of frames per second we configure for the GStreamer pipeline.
|
* Sets the number of frames per second we try to record. Less frames
|
||||||
|
* will be recorded when the screen doesn't need to be redrawn this
|
||||||
|
* quickly. (This value will also be set as the framerate for the
|
||||||
|
* GStreamer pipeline; whether that has an effect on the resulting
|
||||||
|
* video will depend on the details of the pipeline and the codec. The
|
||||||
|
* default encoding to webm format doesn't pay attention to the pipeline
|
||||||
|
* framerate.)
|
||||||
*
|
*
|
||||||
* The default value is 15.
|
* The default value is 30.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
shell_recorder_set_framerate (ShellRecorder *recorder,
|
shell_recorder_set_framerate (ShellRecorder *recorder,
|
||||||
@ -1619,7 +1645,7 @@ shell_recorder_set_filename (ShellRecorder *recorder,
|
|||||||
* might be used to send the output to an icecast server
|
* might be used to send the output to an icecast server
|
||||||
* via shout2send or similar.
|
* via shout2send or similar.
|
||||||
*
|
*
|
||||||
* The default value is 'videorate ! theoraenc ! oggmux'
|
* The default value is 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux'
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
shell_recorder_set_pipeline (ShellRecorder *recorder,
|
shell_recorder_set_pipeline (ShellRecorder *recorder,
|
||||||
@ -1662,6 +1688,7 @@ shell_recorder_record (ShellRecorder *recorder)
|
|||||||
* pause
|
* pause
|
||||||
*/
|
*/
|
||||||
recorder->start_time = recorder->start_time + (get_wall_time() - recorder->pause_time);
|
recorder->start_time = recorder->start_time + (get_wall_time() - recorder->pause_time);
|
||||||
|
recorder->last_frame_time = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1669,6 +1696,7 @@ shell_recorder_record (ShellRecorder *recorder)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
recorder->start_time = get_wall_time();
|
recorder->start_time = get_wall_time();
|
||||||
|
recorder->last_frame_time = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
recorder->state = RECORDER_STATE_RECORDING;
|
recorder->state = RECORDER_STATE_RECORDING;
|
||||||
|
205
src/shell-screen-grabber.c
Normal file
205
src/shell-screen-grabber.c
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
#include <cogl/cogl.h>
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#include <GL/glx.h>
|
||||||
|
#include <GL/glext.h>
|
||||||
|
|
||||||
|
#include "shell-screen-grabber.h"
|
||||||
|
|
||||||
|
PFNGLBINDBUFFERARBPROC pf_glBindBufferARB;
|
||||||
|
PFNGLBUFFERDATAARBPROC pf_glBufferDataARB;
|
||||||
|
PFNGLDELETEBUFFERSARBPROC pf_glDeleteBuffersARB;
|
||||||
|
PFNGLGENBUFFERSARBPROC pf_glGenBuffersARB;
|
||||||
|
PFNGLMAPBUFFERARBPROC pf_glMapBufferARB;
|
||||||
|
PFNGLUNMAPBUFFERARBPROC pf_glUnmapBufferARB;
|
||||||
|
|
||||||
|
struct _ShellScreenGrabberClass
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _ShellScreenGrabber
|
||||||
|
{
|
||||||
|
GObject parent_instance;
|
||||||
|
|
||||||
|
int have_pixel_buffers;
|
||||||
|
int have_pack_invert;
|
||||||
|
int width, height;
|
||||||
|
GLuint pixel_buffer;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE(ShellScreenGrabber, shell_screen_grabber, G_TYPE_OBJECT);
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_screen_grabber_finalize (GObject *gobject)
|
||||||
|
{
|
||||||
|
ShellScreenGrabber *grabber = SHELL_SCREEN_GRABBER (gobject);
|
||||||
|
|
||||||
|
if (grabber->pixel_buffer != 0)
|
||||||
|
pf_glDeleteBuffersARB (1, &grabber->pixel_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_screen_grabber_class_init (ShellScreenGrabberClass *grabber_class)
|
||||||
|
{
|
||||||
|
GObjectClass *gobject_class = G_OBJECT_CLASS (grabber_class);
|
||||||
|
|
||||||
|
gobject_class->finalize = shell_screen_grabber_finalize;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_screen_grabber_init (ShellScreenGrabber *grabber)
|
||||||
|
{
|
||||||
|
grabber->have_pixel_buffers = -1;
|
||||||
|
grabber->width = -1;
|
||||||
|
grabber->height= -1;
|
||||||
|
grabber->pixel_buffer = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShellScreenGrabber *
|
||||||
|
shell_screen_grabber_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (SHELL_TYPE_SCREEN_GRABBER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_screen_grabber_grab:
|
||||||
|
* x: X coordinate of the rectangle to grab
|
||||||
|
* y: Y coordinate of the rectangle to grab
|
||||||
|
* width: width of the rectangle to grab
|
||||||
|
* height: heigth of the rectangle to grab
|
||||||
|
*
|
||||||
|
* Grabs pixel data from a portion of the screen.
|
||||||
|
*
|
||||||
|
* Return value: buffer holding the grabbed data. The data is stored as 32-bit
|
||||||
|
* words with native-endian xRGB pixels (i.e., the same as CAIRO_FORMAT_RGB24)
|
||||||
|
* with no padding on the rows. So, the size of the buffer is width * height * 4
|
||||||
|
* bytes. Free with g_free().
|
||||||
|
**/
|
||||||
|
guchar *
|
||||||
|
shell_screen_grabber_grab (ShellScreenGrabber *grabber,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height)
|
||||||
|
{
|
||||||
|
guchar *data;
|
||||||
|
gsize row_bytes;
|
||||||
|
gsize data_size;
|
||||||
|
|
||||||
|
row_bytes = width * 4;
|
||||||
|
data_size = row_bytes * height;
|
||||||
|
data = g_malloc (data_size);
|
||||||
|
|
||||||
|
if (grabber->have_pixel_buffers == -1)
|
||||||
|
{
|
||||||
|
const GLubyte* extensions = glGetString (GL_EXTENSIONS);
|
||||||
|
grabber->have_pixel_buffers = strstr ((const char *)extensions, "GL_EXT_pixel_buffer_object") != NULL;
|
||||||
|
grabber->have_pack_invert = strstr ((const char *)extensions, "GL_MESA_pack_invert") != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grabber->have_pixel_buffers)
|
||||||
|
{
|
||||||
|
GLubyte *mapped_data;
|
||||||
|
GLint old_swap_bytes, old_lsb_first, old_row_length, old_skip_pixels, old_skip_rows, old_alignment;
|
||||||
|
GLint old_pack_invert = GL_FALSE;
|
||||||
|
guchar *src_row, *dest_row;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
cogl_flush ();
|
||||||
|
|
||||||
|
if (pf_glBindBufferARB == NULL)
|
||||||
|
{
|
||||||
|
pf_glBindBufferARB = (PFNGLBINDBUFFERARBPROC) cogl_get_proc_address ("glBindBufferARB");
|
||||||
|
pf_glBufferDataARB = (PFNGLBUFFERDATAARBPROC) cogl_get_proc_address ("glBufferDataARB");
|
||||||
|
pf_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) cogl_get_proc_address ("glDeleteBuffersARB");
|
||||||
|
pf_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC) cogl_get_proc_address ("glGenBuffersARB");
|
||||||
|
pf_glMapBufferARB = (PFNGLMAPBUFFERARBPROC) cogl_get_proc_address ("glMapBufferARB");
|
||||||
|
pf_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC) cogl_get_proc_address ("glUnmapBufferARB");
|
||||||
|
}
|
||||||
|
|
||||||
|
glGetIntegerv (GL_PACK_SWAP_BYTES, &old_swap_bytes);
|
||||||
|
glGetIntegerv (GL_PACK_LSB_FIRST, &old_lsb_first);
|
||||||
|
glGetIntegerv (GL_PACK_ROW_LENGTH, &old_row_length);
|
||||||
|
glGetIntegerv (GL_PACK_SKIP_PIXELS, &old_skip_pixels);
|
||||||
|
glGetIntegerv (GL_PACK_SKIP_ROWS, &old_skip_rows);
|
||||||
|
glGetIntegerv (GL_PACK_ALIGNMENT, &old_alignment);
|
||||||
|
|
||||||
|
glPixelStorei (GL_PACK_SWAP_BYTES, GL_FALSE);
|
||||||
|
glPixelStorei (GL_PACK_LSB_FIRST, GL_FALSE);
|
||||||
|
glPixelStorei (GL_PACK_ROW_LENGTH, 0);
|
||||||
|
glPixelStorei (GL_PACK_SKIP_PIXELS, 0);
|
||||||
|
glPixelStorei (GL_PACK_SKIP_ROWS, 0);
|
||||||
|
glPixelStorei (GL_PACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
|
if (grabber->have_pack_invert)
|
||||||
|
{
|
||||||
|
glGetIntegerv (GL_PACK_INVERT_MESA, &old_pack_invert);
|
||||||
|
glPixelStorei (GL_PACK_INVERT_MESA, GL_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grabber->pixel_buffer != 0 &&
|
||||||
|
(grabber->width != width ||
|
||||||
|
grabber->height != height))
|
||||||
|
{
|
||||||
|
pf_glDeleteBuffersARB (1, &grabber->pixel_buffer);
|
||||||
|
grabber->pixel_buffer = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grabber->pixel_buffer == 0)
|
||||||
|
{
|
||||||
|
pf_glGenBuffersARB (1, &grabber->pixel_buffer);
|
||||||
|
|
||||||
|
pf_glBindBufferARB (GL_PIXEL_PACK_BUFFER_ARB, grabber->pixel_buffer);
|
||||||
|
pf_glBufferDataARB (GL_PIXEL_PACK_BUFFER_ARB, data_size, 0, GL_STREAM_READ_ARB);
|
||||||
|
|
||||||
|
grabber->width = width;
|
||||||
|
grabber->height = height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pf_glBindBufferARB (GL_PIXEL_PACK_BUFFER_ARB, grabber->pixel_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
glReadPixels (x, y, width, height, GL_BGRA, GL_UNSIGNED_BYTE, 0);
|
||||||
|
|
||||||
|
mapped_data = pf_glMapBufferARB (GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY_ARB);
|
||||||
|
|
||||||
|
src_row = mapped_data + (height - 1) * row_bytes;
|
||||||
|
dest_row = data;
|
||||||
|
|
||||||
|
for (i = 0; i < height; i++)
|
||||||
|
{
|
||||||
|
memcpy (dest_row, src_row, row_bytes);
|
||||||
|
src_row -= row_bytes;
|
||||||
|
dest_row += row_bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
pf_glUnmapBufferARB (GL_PIXEL_PACK_BUFFER_ARB);
|
||||||
|
pf_glBindBufferARB (GL_PIXEL_PACK_BUFFER_ARB, 0);
|
||||||
|
|
||||||
|
glPixelStorei (GL_PACK_SWAP_BYTES, old_swap_bytes);
|
||||||
|
glPixelStorei (GL_PACK_LSB_FIRST, old_lsb_first);
|
||||||
|
glPixelStorei (GL_PACK_ROW_LENGTH, old_row_length);
|
||||||
|
glPixelStorei (GL_PACK_SKIP_PIXELS, old_skip_pixels);
|
||||||
|
glPixelStorei (GL_PACK_SKIP_ROWS, old_skip_rows);
|
||||||
|
glPixelStorei (GL_PACK_ALIGNMENT, old_alignment);
|
||||||
|
|
||||||
|
if (grabber->have_pack_invert)
|
||||||
|
glPixelStorei (GL_PACK_INVERT_MESA, old_pack_invert);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cogl_read_pixels (x, y,
|
||||||
|
width, height,
|
||||||
|
COGL_READ_PIXELS_COLOR_BUFFER,
|
||||||
|
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||||
|
data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
44
src/shell-screen-grabber.h
Normal file
44
src/shell-screen-grabber.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
#ifndef __SHELL_SCREEN_GRABBER_H__
|
||||||
|
#define __SHELL_SCREEN_GRABBER_H__
|
||||||
|
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:shell-screen-grabber
|
||||||
|
* @short_description: Grab pixel data from the screen
|
||||||
|
*
|
||||||
|
* The #ShellScreenGrabber object is used to download previous drawn
|
||||||
|
* content to the screen. It internally uses pixel-buffer objects if
|
||||||
|
* available, otherwise falls back to cogl_read_pixels().
|
||||||
|
*
|
||||||
|
* If you are repeatedly grabbing images of the same size from the
|
||||||
|
* screen, it makes sense to create one #ShellScreenGrabber and keep
|
||||||
|
* it around. Otherwise, it's fine to simply create one as needed and
|
||||||
|
* then get rid of it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct _ShellScreenGrabber ShellScreenGrabber;
|
||||||
|
typedef struct _ShellScreenGrabberClass ShellScreenGrabberClass;
|
||||||
|
|
||||||
|
#define SHELL_TYPE_SCREEN_GRABBER (shell_screen_grabber_get_type ())
|
||||||
|
#define SHELL_SCREEN_GRABBER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_SCREEN_GRABBER, ShellScreenGrabber))
|
||||||
|
#define SHELL_SCREEN_GRABBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_SCREEN_GRABBER, ShellScreenGrabberClass))
|
||||||
|
#define SHELL_IS_SCREEN_GRABBER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_SCREEN_GRABBER))
|
||||||
|
#define SHELL_IS_SCREEN_GRABBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_SCREEN_GRABBER))
|
||||||
|
#define SHELL_SCREEN_GRABBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_SCREEN_GRABBER, ShellScreenGrabberClass))
|
||||||
|
|
||||||
|
GType shell_screen_grabber_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
ShellScreenGrabber *shell_screen_grabber_new (void);
|
||||||
|
guchar * shell_screen_grabber_grab (ShellScreenGrabber *grabber,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __SHELL_SCREEN_GRABBER_H__ */
|
@ -157,8 +157,7 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_added),
|
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_added),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
CLUTTER_TYPE_ACTOR);
|
CLUTTER_TYPE_ACTOR);
|
||||||
shell_tray_manager_signals[TRAY_ICON_REMOVED] =
|
shell_tray_manager_signals[TRAY_ICON_REMOVED] =
|
||||||
@ -166,8 +165,7 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_removed),
|
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_removed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
CLUTTER_TYPE_ACTOR);
|
CLUTTER_TYPE_ACTOR);
|
||||||
|
|
||||||
|
@ -678,18 +678,6 @@ shell_get_file_contents_utf8_sync (const char *path,
|
|||||||
return contents;
|
return contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* shell_breakpoint:
|
|
||||||
*
|
|
||||||
* Using G_BREAKPOINT(), interrupt the current process. This is useful
|
|
||||||
* in conjunction with a debugger such as gdb.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
shell_breakpoint (void)
|
|
||||||
{
|
|
||||||
G_BREAKPOINT ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_parse_search_provider:
|
* shell_parse_search_provider:
|
||||||
* @data: description of provider
|
* @data: description of provider
|
||||||
|
@ -39,8 +39,6 @@ gboolean shell_write_string_to_stream (GOutputStream *stream,
|
|||||||
char *shell_get_file_contents_utf8_sync (const char *path,
|
char *shell_get_file_contents_utf8_sync (const char *path,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
void shell_breakpoint (void);
|
|
||||||
|
|
||||||
gboolean shell_parse_search_provider (const char *data,
|
gboolean shell_parse_search_provider (const char *data,
|
||||||
char **name,
|
char **name,
|
||||||
char **url,
|
char **url,
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#include "shell-window-tracker-private.h"
|
#include "shell-window-tracker-private.h"
|
||||||
#include "shell-app-private.h"
|
#include "shell-app-private.h"
|
||||||
#include "shell-global.h"
|
#include "shell-global.h"
|
||||||
#include "shell-marshal.h"
|
|
||||||
#include "st.h"
|
#include "st.h"
|
||||||
|
|
||||||
/* This file includes modified code from
|
/* This file includes modified code from
|
||||||
@ -117,15 +116,13 @@ shell_window_tracker_class_init (ShellWindowTrackerClass *klass)
|
|||||||
SHELL_TYPE_WINDOW_TRACKER,
|
SHELL_TYPE_WINDOW_TRACKER,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__BOXED,
|
|
||||||
G_TYPE_NONE, 1, SHELL_TYPE_STARTUP_SEQUENCE);
|
G_TYPE_NONE, 1, SHELL_TYPE_STARTUP_SEQUENCE);
|
||||||
signals[TRACKED_WINDOWS_CHANGED] = g_signal_new ("tracked-windows-changed",
|
signals[TRACKED_WINDOWS_CHANGED] = g_signal_new ("tracked-windows-changed",
|
||||||
SHELL_TYPE_WINDOW_TRACKER,
|
SHELL_TYPE_WINDOW_TRACKER,
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
#include "shell-wm-private.h"
|
#include "shell-wm-private.h"
|
||||||
#include "shell-global.h"
|
#include "shell-global.h"
|
||||||
#include "shell-marshal.h"
|
|
||||||
|
|
||||||
struct _ShellWM {
|
struct _ShellWM {
|
||||||
GObject parent;
|
GObject parent;
|
||||||
@ -58,8 +57,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
META_TYPE_WINDOW_ACTOR);
|
META_TYPE_WINDOW_ACTOR);
|
||||||
shell_wm_signals[MAXIMIZE] =
|
shell_wm_signals[MAXIMIZE] =
|
||||||
@ -67,8 +65,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_shell_marshal_VOID__OBJECT_INT_INT_INT_INT,
|
|
||||||
G_TYPE_NONE, 5,
|
G_TYPE_NONE, 5,
|
||||||
META_TYPE_WINDOW_ACTOR, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
META_TYPE_WINDOW_ACTOR, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||||
shell_wm_signals[UNMAXIMIZE] =
|
shell_wm_signals[UNMAXIMIZE] =
|
||||||
@ -76,8 +73,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_shell_marshal_VOID__OBJECT_INT_INT_INT_INT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
META_TYPE_WINDOW_ACTOR, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
META_TYPE_WINDOW_ACTOR, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||||
shell_wm_signals[MAP] =
|
shell_wm_signals[MAP] =
|
||||||
@ -85,8 +81,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
META_TYPE_WINDOW_ACTOR);
|
META_TYPE_WINDOW_ACTOR);
|
||||||
shell_wm_signals[DESTROY] =
|
shell_wm_signals[DESTROY] =
|
||||||
@ -94,8 +89,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
META_TYPE_WINDOW_ACTOR);
|
META_TYPE_WINDOW_ACTOR);
|
||||||
shell_wm_signals[SWITCH_WORKSPACE] =
|
shell_wm_signals[SWITCH_WORKSPACE] =
|
||||||
@ -103,8 +97,7 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_shell_marshal_VOID__INT_INT_INT,
|
|
||||||
G_TYPE_NONE, 3,
|
G_TYPE_NONE, 3,
|
||||||
G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||||
shell_wm_signals[KILL_SWITCH_WORKSPACE] =
|
shell_wm_signals[KILL_SWITCH_WORKSPACE] =
|
||||||
@ -112,16 +105,14 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
shell_wm_signals[KILL_WINDOW_EFFECTS] =
|
shell_wm_signals[KILL_WINDOW_EFFECTS] =
|
||||||
g_signal_new ("kill-window-effects",
|
g_signal_new ("kill-window-effects",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
META_TYPE_WINDOW_ACTOR);
|
META_TYPE_WINDOW_ACTOR);
|
||||||
}
|
}
|
||||||
|
@ -304,8 +304,7 @@ shell_xfixes_cursor_class_init (ShellXFixesCursorClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
gobject_class->get_property = shell_xfixes_cursor_get_property;
|
gobject_class->get_property = shell_xfixes_cursor_get_property;
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include "st-adjustment.h"
|
#include "st-adjustment.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
|
|
||||||
G_DEFINE_TYPE (StAdjustment, st_adjustment, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (StAdjustment, st_adjustment, G_TYPE_OBJECT)
|
||||||
@ -267,8 +266,7 @@ st_adjustment_class_init (StAdjustmentClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StAdjustmentClass, changed),
|
G_STRUCT_OFFSET (StAdjustmentClass, changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@
|
|||||||
#include "st-button.h"
|
#include "st-button.h"
|
||||||
|
|
||||||
#include "st-enum-types.h"
|
#include "st-enum-types.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-texture-cache.h"
|
#include "st-texture-cache.h"
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
|
|
||||||
@ -444,8 +443,7 @@ st_button_class_init (StButtonClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StButtonClass, clicked),
|
G_STRUCT_OFFSET (StButtonClass, clicked),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__INT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
G_TYPE_INT);
|
G_TYPE_INT);
|
||||||
}
|
}
|
||||||
|
@ -184,8 +184,7 @@ st_drawing_area_class_init (StDrawingAreaClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StDrawingAreaClass, repaint),
|
G_STRUCT_OFFSET (StDrawingAreaClass, repaint),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (StDrawingAreaPrivate));
|
g_type_class_add_private (gobject_class, sizeof (StDrawingAreaPrivate));
|
||||||
|
@ -62,7 +62,6 @@
|
|||||||
#include "st-icon.h"
|
#include "st-icon.h"
|
||||||
#include "st-widget.h"
|
#include "st-widget.h"
|
||||||
#include "st-texture-cache.h"
|
#include "st-texture-cache.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-clipboard.h"
|
#include "st-clipboard.h"
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
|
|
||||||
@ -548,38 +547,6 @@ st_entry_pick (ClutterActor *actor,
|
|||||||
clutter_actor_paint (priv->secondary_icon);
|
clutter_actor_paint (priv->secondary_icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
st_entry_map (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
StEntryPrivate *priv = ST_ENTRY (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_entry_parent_class)->map (actor);
|
|
||||||
|
|
||||||
clutter_actor_map (priv->entry);
|
|
||||||
|
|
||||||
if (priv->primary_icon)
|
|
||||||
clutter_actor_map (priv->primary_icon);
|
|
||||||
|
|
||||||
if (priv->secondary_icon)
|
|
||||||
clutter_actor_map (priv->secondary_icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
st_entry_unmap (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
StEntryPrivate *priv = ST_ENTRY (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_entry_parent_class)->unmap (actor);
|
|
||||||
|
|
||||||
clutter_actor_unmap (priv->entry);
|
|
||||||
|
|
||||||
if (priv->primary_icon)
|
|
||||||
clutter_actor_unmap (priv->primary_icon);
|
|
||||||
|
|
||||||
if (priv->secondary_icon)
|
|
||||||
clutter_actor_unmap (priv->secondary_icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_entry_clipboard_callback (StClipboard *clipboard,
|
st_entry_clipboard_callback (StClipboard *clipboard,
|
||||||
const gchar *text,
|
const gchar *text,
|
||||||
@ -695,8 +662,6 @@ st_entry_class_init (StEntryClass *klass)
|
|||||||
actor_class->allocate = st_entry_allocate;
|
actor_class->allocate = st_entry_allocate;
|
||||||
actor_class->paint = st_entry_paint;
|
actor_class->paint = st_entry_paint;
|
||||||
actor_class->pick = st_entry_pick;
|
actor_class->pick = st_entry_pick;
|
||||||
actor_class->map = st_entry_map;
|
|
||||||
actor_class->unmap = st_entry_unmap;
|
|
||||||
|
|
||||||
actor_class->key_press_event = st_entry_key_press_event;
|
actor_class->key_press_event = st_entry_key_press_event;
|
||||||
actor_class->key_focus_in = st_entry_key_focus_in;
|
actor_class->key_focus_in = st_entry_key_focus_in;
|
||||||
@ -735,8 +700,7 @@ st_entry_class_init (StEntryClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StEntryClass, primary_icon_clicked),
|
G_STRUCT_OFFSET (StEntryClass, primary_icon_clicked),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
/**
|
/**
|
||||||
* StEntry::secondary-icon-clicked:
|
* StEntry::secondary-icon-clicked:
|
||||||
@ -748,8 +712,7 @@ st_entry_class_init (StEntryClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StEntryClass, secondary_icon_clicked),
|
G_STRUCT_OFFSET (StEntryClass, secondary_icon_clicked),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,12 +88,15 @@ st_im_text_dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
StIMTextPrivate *priv = ST_IM_TEXT (object)->priv;
|
StIMTextPrivate *priv = ST_IM_TEXT (object)->priv;
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (priv->im_context,
|
if (priv->im_context != NULL)
|
||||||
(void *) st_im_text_commit_cb,
|
{
|
||||||
object);
|
g_signal_handlers_disconnect_by_func (priv->im_context,
|
||||||
|
(void *) st_im_text_commit_cb,
|
||||||
|
object);
|
||||||
|
|
||||||
g_object_unref (priv->im_context);
|
g_object_unref (priv->im_context);
|
||||||
priv->im_context = NULL;
|
priv->im_context = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
G_OBJECT_CLASS (st_im_text_parent_class)->dispose (object);
|
G_OBJECT_CLASS (st_im_text_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
@ -253,26 +253,6 @@ st_label_paint (ClutterActor *actor)
|
|||||||
clutter_actor_paint (priv->label);
|
clutter_actor_paint (priv->label);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
st_label_map (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
StLabelPrivate *priv = ST_LABEL (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_label_parent_class)->map (actor);
|
|
||||||
|
|
||||||
clutter_actor_map (priv->label);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
st_label_unmap (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
StLabelPrivate *priv = ST_LABEL (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_label_parent_class)->unmap (actor);
|
|
||||||
|
|
||||||
clutter_actor_unmap (priv->label);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_label_class_init (StLabelClass *klass)
|
st_label_class_init (StLabelClass *klass)
|
||||||
{
|
{
|
||||||
@ -291,8 +271,6 @@ st_label_class_init (StLabelClass *klass)
|
|||||||
actor_class->allocate = st_label_allocate;
|
actor_class->allocate = st_label_allocate;
|
||||||
actor_class->get_preferred_width = st_label_get_preferred_width;
|
actor_class->get_preferred_width = st_label_get_preferred_width;
|
||||||
actor_class->get_preferred_height = st_label_get_preferred_height;
|
actor_class->get_preferred_height = st_label_get_preferred_height;
|
||||||
actor_class->map = st_label_map;
|
|
||||||
actor_class->unmap = st_label_unmap;
|
|
||||||
|
|
||||||
widget_class->style_changed = st_label_style_changed;
|
widget_class->style_changed = st_label_style_changed;
|
||||||
widget_class->get_accessible_type = st_label_accessible_get_type;
|
widget_class->get_accessible_type = st_label_accessible_get_type;
|
||||||
@ -481,12 +459,24 @@ st_label_accessible_init (StLabelAccessible *self)
|
|||||||
/* initialization done on AtkObject->initialize */
|
/* initialization done on AtkObject->initialize */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
label_text_notify_cb (StLabel *label,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
AtkObject *accessible)
|
||||||
|
{
|
||||||
|
g_object_notify (G_OBJECT (accessible), "accessible-name");
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_label_accessible_initialize (AtkObject *obj,
|
st_label_accessible_initialize (AtkObject *obj,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
ATK_OBJECT_CLASS (st_label_accessible_parent_class)->initialize (obj, data);
|
ATK_OBJECT_CLASS (st_label_accessible_parent_class)->initialize (obj, data);
|
||||||
|
|
||||||
|
g_signal_connect (data, "notify::text",
|
||||||
|
G_CALLBACK (label_text_notify_cb),
|
||||||
|
obj);
|
||||||
|
|
||||||
obj->role = ATK_ROLE_LABEL;
|
obj->role = ATK_ROLE_LABEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
VOID:OBJECT
|
|
||||||
VOID:VOID
|
|
||||||
VOID:PARAM
|
|
||||||
VOID:POINTER
|
|
||||||
VOID:INT
|
|
||||||
VOID:UINT
|
|
||||||
VOID:UINT,UINT
|
|
||||||
VOID:OBJECT,OBJECT
|
|
||||||
VOID:STRING,OBJECT
|
|
||||||
VOID:OBJECT,OBJECT,INT,INT
|
|
||||||
VOID:OBJECT,FLOAT,FLOAT,INT,ENUM
|
|
||||||
VOID:FLOAT,FLOAT,INT,ENUM
|
|
||||||
VOID:FLOAT,FLOAT
|
|
@ -36,7 +36,6 @@
|
|||||||
|
|
||||||
#include "st-scroll-bar.h"
|
#include "st-scroll-bar.h"
|
||||||
#include "st-bin.h"
|
#include "st-bin.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-enum-types.h"
|
#include "st-enum-types.h"
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
#include "st-button.h"
|
#include "st-button.h"
|
||||||
@ -243,36 +242,12 @@ st_scroll_bar_pick (ClutterActor *actor,
|
|||||||
clutter_actor_paint (priv->handle);
|
clutter_actor_paint (priv->handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
st_scroll_bar_map (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
StScrollBarPrivate *priv = ST_SCROLL_BAR (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_scroll_bar_parent_class)->map (actor);
|
|
||||||
|
|
||||||
clutter_actor_map (priv->bw_stepper);
|
|
||||||
clutter_actor_map (priv->fw_stepper);
|
|
||||||
clutter_actor_map (priv->trough);
|
|
||||||
|
|
||||||
if (priv->handle)
|
|
||||||
clutter_actor_map (priv->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_scroll_bar_unmap (ClutterActor *actor)
|
st_scroll_bar_unmap (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
StScrollBarPrivate *priv = ST_SCROLL_BAR (actor)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_scroll_bar_parent_class)->unmap (actor);
|
CLUTTER_ACTOR_CLASS (st_scroll_bar_parent_class)->unmap (actor);
|
||||||
|
|
||||||
stop_scrolling (ST_SCROLL_BAR (actor));
|
stop_scrolling (ST_SCROLL_BAR (actor));
|
||||||
|
|
||||||
clutter_actor_unmap (priv->bw_stepper);
|
|
||||||
clutter_actor_unmap (priv->fw_stepper);
|
|
||||||
clutter_actor_unmap (priv->trough);
|
|
||||||
|
|
||||||
if (priv->handle)
|
|
||||||
clutter_actor_unmap (priv->handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -688,7 +663,6 @@ st_scroll_bar_class_init (StScrollBarClass *klass)
|
|||||||
actor_class->paint = st_scroll_bar_paint;
|
actor_class->paint = st_scroll_bar_paint;
|
||||||
actor_class->pick = st_scroll_bar_pick;
|
actor_class->pick = st_scroll_bar_pick;
|
||||||
actor_class->scroll_event = st_scroll_bar_scroll_event;
|
actor_class->scroll_event = st_scroll_bar_scroll_event;
|
||||||
actor_class->map = st_scroll_bar_map;
|
|
||||||
actor_class->unmap = st_scroll_bar_unmap;
|
actor_class->unmap = st_scroll_bar_unmap;
|
||||||
|
|
||||||
widget_class->style_changed = st_scroll_bar_style_changed;
|
widget_class->style_changed = st_scroll_bar_style_changed;
|
||||||
@ -714,8 +688,7 @@ st_scroll_bar_class_init (StScrollBarClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StScrollBarClass, scroll_start),
|
G_STRUCT_OFFSET (StScrollBarClass, scroll_start),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
signals[SCROLL_STOP] =
|
signals[SCROLL_STOP] =
|
||||||
@ -723,8 +696,7 @@ st_scroll_bar_class_init (StScrollBarClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StScrollBarClass, scroll_stop),
|
G_STRUCT_OFFSET (StScrollBarClass, scroll_stop),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "st-scroll-view.h"
|
#include "st-scroll-view.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-scroll-bar.h"
|
#include "st-scroll-bar.h"
|
||||||
#include "st-scrollable.h"
|
#include "st-scrollable.h"
|
||||||
#include "st-scroll-view-fade.h"
|
#include "st-scroll-view-fade.h"
|
||||||
|
@ -41,7 +41,6 @@
|
|||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include "st-enum-types.h"
|
#include "st-enum-types.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
#include "st-table-child.h"
|
#include "st-table-child.h"
|
||||||
#include "st-table-private.h"
|
#include "st-table-private.h"
|
||||||
|
@ -95,8 +95,7 @@ st_texture_cache_class_init (StTextureCacheClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0, /* no default handler slot */
|
0, /* no default handler slot */
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,8 +86,7 @@ st_theme_context_class_init (StThemeContextClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0, /* no default handler slot */
|
0, /* no default handler slot */
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,12 +469,12 @@ get_background_position (StThemeNode *self,
|
|||||||
gdouble scale_w, scale_h;
|
gdouble scale_w, scale_h;
|
||||||
|
|
||||||
/* get the background image size */
|
/* get the background image size */
|
||||||
background_image_width = allocation->x2 - allocation->x1;
|
background_image_width = cogl_texture_get_width (self->background_texture);
|
||||||
background_image_height = allocation->y2 - allocation->y1;
|
background_image_height = cogl_texture_get_height (self->background_texture);
|
||||||
|
|
||||||
/* get the painting area size */
|
/* get the painting area size */
|
||||||
painting_area_width = cogl_texture_get_width (self->background_texture);
|
painting_area_width = allocation->x2 - allocation->x1;
|
||||||
painting_area_height = cogl_texture_get_height (self->background_texture);
|
painting_area_height = allocation->y2 - allocation->y1;
|
||||||
|
|
||||||
/* scale if requested */
|
/* scale if requested */
|
||||||
get_background_scale (self,
|
get_background_scale (self,
|
||||||
@ -1445,35 +1445,7 @@ st_theme_node_render_resources (StThemeNode *node,
|
|||||||
background_image_shadow_spec = st_theme_node_get_background_image_shadow (node);
|
background_image_shadow_spec = st_theme_node_get_background_image_shadow (node);
|
||||||
if (background_image != NULL && !has_border && !has_border_radius)
|
if (background_image != NULL && !has_border && !has_border_radius)
|
||||||
{
|
{
|
||||||
CoglHandle texture;
|
node->background_texture = st_texture_cache_load_file_to_cogl_texture (texture_cache, background_image);
|
||||||
|
|
||||||
texture = st_texture_cache_load_file_to_cogl_texture (texture_cache, background_image);
|
|
||||||
|
|
||||||
/* If no background position is specified, then we will automatically scale
|
|
||||||
* the background to fit within the node allocation. But, if a background
|
|
||||||
* position is specified, we won't scale the background, and it could
|
|
||||||
* potentially leak out of bounds. To prevent that, we subtexture from the
|
|
||||||
* in bounds area when necessary.
|
|
||||||
*/
|
|
||||||
if (node->background_position_set &&
|
|
||||||
(cogl_texture_get_width (texture) > width ||
|
|
||||||
cogl_texture_get_height (texture) > height))
|
|
||||||
{
|
|
||||||
CoglHandle subtexture;
|
|
||||||
|
|
||||||
subtexture = cogl_texture_new_from_sub_texture (texture,
|
|
||||||
0, 0,
|
|
||||||
width - node->background_position_x,
|
|
||||||
height - node->background_position_y);
|
|
||||||
cogl_handle_unref (texture);
|
|
||||||
|
|
||||||
node->background_texture = subtexture;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
node->background_texture = texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
node->background_material = _st_create_texture_material (node->background_texture);
|
node->background_material = _st_create_texture_material (node->background_texture);
|
||||||
|
|
||||||
if (background_image_shadow_spec)
|
if (background_image_shadow_spec)
|
||||||
|
@ -454,8 +454,7 @@ st_theme_node_transition_class_init (StThemeNodeTransitionClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StThemeNodeTransitionClass, completed),
|
G_STRUCT_OFFSET (StThemeNodeTransitionClass, completed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
signals[NEW_FRAME] =
|
signals[NEW_FRAME] =
|
||||||
@ -463,7 +462,6 @@ st_theme_node_transition_class_init (StThemeNodeTransitionClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StThemeNodeTransitionClass, new_frame),
|
G_STRUCT_OFFSET (StThemeNodeTransitionClass, new_frame),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
#include "st-widget.h"
|
#include "st-widget.h"
|
||||||
|
|
||||||
#include "st-label.h"
|
#include "st-label.h"
|
||||||
#include "st-marshal.h"
|
|
||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
#include "st-texture-cache.h"
|
#include "st-texture-cache.h"
|
||||||
#include "st-theme-context.h"
|
#include "st-theme-context.h"
|
||||||
@ -995,8 +994,7 @@ st_widget_class_init (StWidgetClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StWidgetClass, style_changed),
|
G_STRUCT_OFFSET (StWidgetClass, style_changed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1011,8 +1009,7 @@ st_widget_class_init (StWidgetClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (StWidgetClass, popup_menu),
|
G_STRUCT_OFFSET (StWidgetClass, popup_menu),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_st_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2441,7 +2438,7 @@ st_ui_root_destroyed (ClutterActor *actor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* st_get_ui_root:
|
* st_set_ui_root:
|
||||||
* @stage: a #ClutterStage
|
* @stage: a #ClutterStage
|
||||||
* @container: (allow-none): the new UI root
|
* @container: (allow-none): the new UI root
|
||||||
*
|
*
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
VOID:OBJECT,OBJECT
|
|
||||||
VOID:OBJECT,STRING,LONG,LONG
|
|
||||||
VOID:OBJECT,LONG
|
|
@ -34,8 +34,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "na-marshal.h"
|
|
||||||
|
|
||||||
/* Signals */
|
/* Signals */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -143,8 +141,7 @@ na_tray_manager_class_init (NaTrayManagerClass *klass)
|
|||||||
G_OBJECT_CLASS_TYPE (klass),
|
G_OBJECT_CLASS_TYPE (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (NaTrayManagerClass, tray_icon_added),
|
G_STRUCT_OFFSET (NaTrayManagerClass, tray_icon_added),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
GTK_TYPE_SOCKET);
|
GTK_TYPE_SOCKET);
|
||||||
|
|
||||||
@ -153,8 +150,7 @@ na_tray_manager_class_init (NaTrayManagerClass *klass)
|
|||||||
G_OBJECT_CLASS_TYPE (klass),
|
G_OBJECT_CLASS_TYPE (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (NaTrayManagerClass, tray_icon_removed),
|
G_STRUCT_OFFSET (NaTrayManagerClass, tray_icon_removed),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__OBJECT,
|
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
GTK_TYPE_SOCKET);
|
GTK_TYPE_SOCKET);
|
||||||
manager_signals[MESSAGE_SENT] =
|
manager_signals[MESSAGE_SENT] =
|
||||||
@ -162,8 +158,7 @@ na_tray_manager_class_init (NaTrayManagerClass *klass)
|
|||||||
G_OBJECT_CLASS_TYPE (klass),
|
G_OBJECT_CLASS_TYPE (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (NaTrayManagerClass, message_sent),
|
G_STRUCT_OFFSET (NaTrayManagerClass, message_sent),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_na_marshal_VOID__OBJECT_STRING_LONG_LONG,
|
|
||||||
G_TYPE_NONE, 4,
|
G_TYPE_NONE, 4,
|
||||||
GTK_TYPE_SOCKET,
|
GTK_TYPE_SOCKET,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
@ -174,8 +169,7 @@ na_tray_manager_class_init (NaTrayManagerClass *klass)
|
|||||||
G_OBJECT_CLASS_TYPE (klass),
|
G_OBJECT_CLASS_TYPE (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (NaTrayManagerClass, message_cancelled),
|
G_STRUCT_OFFSET (NaTrayManagerClass, message_cancelled),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
_na_marshal_VOID__OBJECT_LONG,
|
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
GTK_TYPE_SOCKET,
|
GTK_TYPE_SOCKET,
|
||||||
G_TYPE_LONG);
|
G_TYPE_LONG);
|
||||||
@ -184,8 +178,7 @@ na_tray_manager_class_init (NaTrayManagerClass *klass)
|
|||||||
G_OBJECT_CLASS_TYPE (klass),
|
G_OBJECT_CLASS_TYPE (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (NaTrayManagerClass, lost_selection),
|
G_STRUCT_OFFSET (NaTrayManagerClass, lost_selection),
|
||||||
NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
g_cclosure_marshal_VOID__VOID,
|
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
#if defined (GDK_WINDOWING_X11)
|
#if defined (GDK_WINDOWING_X11)
|
||||||
|
Reference in New Issue
Block a user