Compare commits
142 Commits
Author | SHA1 | Date | |
---|---|---|---|
3fd70e37bd | |||
5580cfaf63 | |||
17c46c2452 | |||
0996174b3d | |||
d6b6f814d3 | |||
987099ea55 | |||
b356aa8e3b | |||
566bdb50c2 | |||
2b57603271 | |||
c3528f5b6b | |||
4c7cc94cdc | |||
5ff2285707 | |||
d714dfd82e | |||
b1064cbe50 | |||
8d3e5ea507 | |||
001b6afc7e | |||
55d6c5ea8f | |||
fa2ff8158f | |||
97e7ea0b5d | |||
65dec2b72a | |||
5fd3ca8d09 | |||
dc9a8d505d | |||
fc8d13f4bd | |||
d1aa7de5d0 | |||
e279ef1c7c | |||
b88657ab83 | |||
d20e646ed6 | |||
8678b87120 | |||
960571a589 | |||
d856338f86 | |||
2b6b2d93a9 | |||
363bd04166 | |||
9bc1a68fe4 | |||
2c2729f7be | |||
9011959356 | |||
c79b8bbe7e | |||
da59eebf8e | |||
7854024326 | |||
a9ab8784c4 | |||
de5b00fd52 | |||
6547f75b12 | |||
827bf506a7 | |||
adc187c32e | |||
5350302b09 | |||
167ca75388 | |||
46cea67258 | |||
463e0919d4 | |||
98906c1da3 | |||
b71e66c335 | |||
2b6c5bb416 | |||
628e59894b | |||
703d2ead33 | |||
43f53a708f | |||
07e7331e7b | |||
c516af3130 | |||
39727d1156 | |||
85cd189a69 | |||
a8e35422f2 | |||
3941961f8b | |||
d9c6485cbf | |||
c52ccc76a3 | |||
be1c4f26b5 | |||
a6ee6739e0 | |||
54a8ad8bc6 | |||
2541bfcdf2 | |||
d7d5da0301 | |||
d2bd9efc25 | |||
779b18bf48 | |||
618a53b34f | |||
f4eaadb948 | |||
ea061b0f46 | |||
3652e42699 | |||
398489f661 | |||
70fc13500d | |||
18541c447e | |||
3294a6e1a7 | |||
38563c38e8 | |||
a465c5f996 | |||
1760ba1279 | |||
3d3c9546a2 | |||
203c5db5eb | |||
cf44234323 | |||
cc94076ffb | |||
8d137eae5b | |||
51fa9ae513 | |||
9951c92459 | |||
ee77e5d582 | |||
d74721f229 | |||
1aa97b19f7 | |||
95de48e986 | |||
a147d0428d | |||
90b3f7b7f6 | |||
c80acfda08 | |||
8a39145e3c | |||
b62f5ef07d | |||
bd5c6c5cd6 | |||
f874a57439 | |||
6a4525e554 | |||
d553a5bdc0 | |||
80076965a7 | |||
84e8d38d4c | |||
33f3f9d997 | |||
be72b1d066 | |||
dc5d2b83ef | |||
3dabe645c2 | |||
e9ede362dc | |||
01357aca35 | |||
c944dd6768 | |||
ff01ed5e4b | |||
d23c374326 | |||
a69ebc8a68 | |||
f4d8a35b9d | |||
2b140f8fb7 | |||
ab603bdbbf | |||
44e2f7f555 | |||
fd1b3b4fee | |||
4ae2a0b2a5 | |||
0cb415b3bd | |||
c1fa9a82e6 | |||
dde124ab5a | |||
668920cec4 | |||
9b38c5b304 | |||
e63c2da433 | |||
38c768fdb3 | |||
0dd4584157 | |||
b7bf712b97 | |||
615723d8df | |||
de352a309d | |||
c573e7f9a1 | |||
d59fd1a75d | |||
18d69d7032 | |||
5d25716cee | |||
840e79c18c | |||
ddf562e306 | |||
20a6ce7003 | |||
8c43298af0 | |||
4bb48e56d2 | |||
338ba10ca2 | |||
36eb745ecc | |||
b07e45e214 | |||
bba5198e63 | |||
9e2bab008a |
13
.gitignore
vendored
13
.gitignore
vendored
@ -21,6 +21,19 @@ data/gnome-shell.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
|
||||||
|
docs/reference/*/*.args
|
||||||
|
docs/reference/*/*.bak
|
||||||
|
docs/reference/*/*.hierarchy
|
||||||
|
docs/reference/*/*.interfaces
|
||||||
|
docs/reference/*/*.prerequisites
|
||||||
|
docs/reference/*/*.sgml
|
||||||
|
docs/reference/*/*.signals
|
||||||
|
docs/reference/*/*.stamp
|
||||||
|
docs/reference/*/*.txt
|
||||||
|
docs/reference/*/*.types
|
||||||
|
docs/reference/*/html/
|
||||||
|
docs/reference/*/xml/
|
||||||
|
gtk-doc.make
|
||||||
js/misc/config.js
|
js/misc/config.js
|
||||||
intltool-extract.in
|
intltool-extract.in
|
||||||
intltool-merge.in
|
intltool-merge.in
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Point to our macro directory and pick up user flags from the environment
|
# Point to our macro directory and pick up user flags from the environment
|
||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
SUBDIRS = data js src browser-plugin tests po man
|
SUBDIRS = data js src browser-plugin tests po man docs
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
.project \
|
.project \
|
||||||
@ -19,3 +19,5 @@ DIST_EXCLUDE = \
|
|||||||
distcheck-hook:
|
distcheck-hook:
|
||||||
@echo "Checking disted files against files in git"
|
@echo "Checking disted files against files in git"
|
||||||
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
|
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
|
||||||
|
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
||||||
|
63
NEWS
63
NEWS
@ -1,3 +1,66 @@
|
|||||||
|
3.3.2
|
||||||
|
=====
|
||||||
|
* Port D-Bus usage in the shell to GDBus [Giovanni, Marc-Antoine, Florian,
|
||||||
|
Jasper, Matthias; #648651, #658078, #663902, #663941]
|
||||||
|
* Message tray
|
||||||
|
- Add right-click option to chats to mute the conversation [Ana; #659962]
|
||||||
|
- Don't steal the focus when popping up under the pointer [Rui; #661358]
|
||||||
|
* Looking Glass
|
||||||
|
- Add alt-Tab completion [Jason; #661054]
|
||||||
|
- Show errors from extensions in the extensions tab [Jasper; #660546]
|
||||||
|
- Allow switching tabs with <Control>PageUp/PageDown
|
||||||
|
- Theme consistently with the rest of the shell [Jason; 650900]
|
||||||
|
* Extension system
|
||||||
|
- Don't try to load disabled extensions at all [Jasper; #661815, #662704]
|
||||||
|
- Enable and disable plugins in a consistent order [Jasper; #661815, #662704]
|
||||||
|
- Add options to enable/disable extensions to gnome-shell-extension-tool
|
||||||
|
[Jasper; #661815]
|
||||||
|
* Adapt to Mutter change to GSettings [Florian, Matthias; #663429]
|
||||||
|
* Allow creating a new workspace by dragging a window or launcher in the
|
||||||
|
middle of two existing ones [Jasper; #646409]
|
||||||
|
* Allow using Alt-Tab while during drag-and-drop and other operations
|
||||||
|
that grab the pointer [Adel; #660457]
|
||||||
|
* Do a better job of finding the right user to authenticate
|
||||||
|
as when showing a PolKit dialog [Matthias; #651547]
|
||||||
|
* Control the D-Bus Eval() method by the developer-tools GSetting which
|
||||||
|
is used for looking glass and screen recorder. [Jasper; #662891]
|
||||||
|
* Fix browser plugin to work under WebKit-based browser [Jasper; #663823]
|
||||||
|
* Fix certain stacking issues with alt-Tab [Jasper; #660650]
|
||||||
|
* Fixes for GLib deprecations [Jasper; #662011]p
|
||||||
|
* Fixes for GTK+ deprecations [Florian, Rico; #662245]p
|
||||||
|
* Fixes for Clutter deprecations [Jasper; #662627]
|
||||||
|
* Visual improvements and UI tweaks [Florian, Jakub, Jasper;
|
||||||
|
#662800, #658096, #662226]
|
||||||
|
* Hard-code "Home" as the name for the home dir, rather than looking
|
||||||
|
it up via GSettings; avoids schema dependency [Cosimo; #559895]
|
||||||
|
* Don't show "Switch User" on single user machines [Florian; #657011]
|
||||||
|
* Generate documentation for St toolkit [Florian]
|
||||||
|
* Improve marking of strings for translation [Matthias, Piotr; #658664]
|
||||||
|
* Networking menu bug fixes [Giovanni; #650007, #651378, #659277, #663278]
|
||||||
|
* Code cleanups and leak fixes to StTextureCache
|
||||||
|
[Jasper, Florian; #660968, #662998]
|
||||||
|
* Code cleanups [Adel, Florian, Jasper; #662238, #663584]
|
||||||
|
* Build fixes [Adel, Colin, Florian, Ming Han]
|
||||||
|
* Misc bug fixes [Adel, Florian, "Fry", Jasper, Giovanni, Ray, Rui, Stefan;
|
||||||
|
#660520, #661029, #661231, #661623, #661921, #662235, #662236, #662502,
|
||||||
|
#662394, #662799, #662969, #663175, #663277, #663815, #663891, #662967]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Cosimo Cecchi, Matthias Clasen, Piotr Drąg, Adel Gadllah,
|
||||||
|
Rui Matos, Florian Müllner, Marc-Antoine Perennou, Ana Risteska,
|
||||||
|
Jason Siefken, Jakub Steiner, Ray Strode, Jasper St. Pierre, Ming Han Teh,
|
||||||
|
Rico Tzschichholz, Colin Walters, Stefan Zwanenburg
|
||||||
|
|
||||||
|
Translation:
|
||||||
|
Alexander Shopov [bg], Marek Černocký [cs], Mario Blättermann [de],
|
||||||
|
Kostas Papadimas [el], Bruce Cowan [en_GB], Kristjan Schmidt [eo],
|
||||||
|
Jorge González, Daniel Mustieles, Benjamín Valero Espinosa [es],
|
||||||
|
Mattias Põldaru [et], Arash Mousavi [fa], Ville-Pekka Vainio [fi],
|
||||||
|
Fran Diéguez [gl], Yaron Shahrabani [he], Hideki Yamane [ja],
|
||||||
|
Algimantas Margevičius [lt], Kjartan Maraas [nb], Daniel Nylander [se],
|
||||||
|
Matej Urbančič [sl], Praveen Illa [te], Muhammet Kara [tr],
|
||||||
|
Nguyễn Thái Ngọc Duy [vi], Cheng-Chia Tseng [zh_HK, zh_TW]
|
||||||
|
|
||||||
3.2.1
|
3.2.1
|
||||||
=====
|
=====
|
||||||
* Restore the IM state on startup - if you were available in when you logged
|
* Restore the IM state on startup - if you were available in when you logged
|
||||||
|
@ -47,8 +47,6 @@ typedef struct {
|
|||||||
GDBusProxy *proxy;
|
GDBusProxy *proxy;
|
||||||
} PluginData;
|
} PluginData;
|
||||||
|
|
||||||
/* =============== public entry points =================== */
|
|
||||||
|
|
||||||
static NPNetscapeFuncs funcs;
|
static NPNetscapeFuncs funcs;
|
||||||
|
|
||||||
static inline gchar *
|
static inline gchar *
|
||||||
@ -71,10 +69,7 @@ get_string_property (NPP instance,
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
result_str = NPVARIANT_TO_STRING (result);
|
result_str = NPVARIANT_TO_STRING (result);
|
||||||
if (strlen (result_str.UTF8Characters) != result_str.UTF8Length)
|
result_copy = g_strndup (result_str.UTF8Characters, result_str.UTF8Length);
|
||||||
goto out;
|
|
||||||
|
|
||||||
result_copy = g_strdup (result_str.UTF8Characters);
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
funcs.releasevariantvalue (&result);
|
funcs.releasevariantvalue (&result);
|
||||||
@ -150,6 +145,8 @@ check_origin_and_protocol (NPP instance)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* =============== public entry points =================== */
|
||||||
|
|
||||||
NPError
|
NPError
|
||||||
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
||||||
{
|
{
|
||||||
@ -816,6 +813,11 @@ NPP_GetValue(NPP instance,
|
|||||||
|
|
||||||
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
|
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NPPVpluginNeedsXEmbed:
|
||||||
|
*(bool *)value = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
28
configure.ac
28
configure.ac
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.2.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.3.2],[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])
|
||||||
@ -36,10 +36,6 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
|||||||
|
|
||||||
PKG_PROG_PKG_CONFIG([0.22])
|
PKG_PROG_PKG_CONFIG([0.22])
|
||||||
|
|
||||||
# GConf stuff
|
|
||||||
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
|
||||||
AM_GCONF_SOURCE_2
|
|
||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
# Get a value to substitute into gnome-shell.in
|
# Get a value to substitute into gnome-shell.in
|
||||||
@ -67,10 +63,10 @@ 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.2.1
|
MUTTER_MIN_VERSION=3.3.2
|
||||||
FOLKS_MIN_VERSION=0.5.2
|
FOLKS_MIN_VERSION=0.5.2
|
||||||
GTK_MIN_VERSION=3.0.0
|
GTK_MIN_VERSION=3.0.0
|
||||||
GIO_MIN_VERSION=2.29.10
|
GIO_MIN_VERSION=2.31.0
|
||||||
LIBECAL_MIN_VERSION=2.32.0
|
LIBECAL_MIN_VERSION=2.32.0
|
||||||
LIBEDATASERVER_MIN_VERSION=1.2.0
|
LIBEDATASERVER_MIN_VERSION=1.2.0
|
||||||
LIBEDATASERVERUI_MIN_VERSION=2.91.6
|
LIBEDATASERVERUI_MIN_VERSION=2.91.6
|
||||||
@ -80,13 +76,13 @@ POLKIT_MIN_VERSION=0.100
|
|||||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||||
|
|
||||||
# Collect more than 20 libraries for a prize!
|
# Collect more than 20 libraries for a prize!
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||||
gio-unix-2.0 dbus-glib-1 libxml-2.0
|
libxml-2.0
|
||||||
gtk+-3.0 >= $GTK_MIN_VERSION
|
gtk+-3.0 >= $GTK_MIN_VERSION
|
||||||
folks >= $FOLKS_MIN_VERSION
|
folks >= $FOLKS_MIN_VERSION
|
||||||
libmutter >= $MUTTER_MIN_VERSION
|
libmutter >= $MUTTER_MIN_VERSION
|
||||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||||
libgnome-menu-3.0 $recorder_modules gconf-2.0
|
libgnome-menu-3.0 $recorder_modules
|
||||||
gdk-x11-3.0 libsoup-2.4
|
gdk-x11-3.0 libsoup-2.4
|
||||||
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
@ -121,7 +117,6 @@ CFLAGS=$saved_CFLAGS
|
|||||||
LIBS=$saved_LIBS
|
LIBS=$saved_LIBS
|
||||||
|
|
||||||
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(GDMUSER, dbus-glib-1 gtk+-3.0)
|
|
||||||
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)
|
||||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
|
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
|
||||||
@ -131,6 +126,7 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
|||||||
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
|
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
|
||||||
BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
|
BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
|
||||||
AC_SUBST([BLUETOOTH_LIBS],["$BLUETOOTH_LIBS"])
|
AC_SUBST([BLUETOOTH_LIBS],["$BLUETOOTH_LIBS"])
|
||||||
|
AC_SUBST([BLUETOOTH_DIR],["$BLUETOOTH_DIR"])
|
||||||
AC_DEFINE_UNQUOTED([BLUETOOTH_DIR],["$BLUETOOTH_DIR"],[Path to installed GnomeBluetooth typelib and library])
|
AC_DEFINE_UNQUOTED([BLUETOOTH_DIR],["$BLUETOOTH_DIR"],[Path to installed GnomeBluetooth typelib and library])
|
||||||
AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
|
AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
|
||||||
AC_SUBST([HAVE_BLUETOOTH],[1])
|
AC_SUBST([HAVE_BLUETOOTH],[1])
|
||||||
@ -179,11 +175,13 @@ AC_SUBST(GIRDIR)
|
|||||||
TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||||
AC_SUBST(TYPELIBDIR)
|
AC_SUBST(TYPELIBDIR)
|
||||||
|
|
||||||
|
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
||||||
|
|
||||||
# Stay command-line compatible with the gnome-common configure option. Here
|
# Stay command-line compatible with the gnome-common configure option. Here
|
||||||
# minimum/yes/maximum are the same, however.
|
# minimum/yes/maximum are the same, however.
|
||||||
AC_ARG_ENABLE(compile_warnings,
|
AC_ARG_ENABLE(compile_warnings,
|
||||||
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
||||||
enable_compile_warnings=error)
|
enable_compile_warnings=maximum)
|
||||||
|
|
||||||
changequote(,)dnl
|
changequote(,)dnl
|
||||||
if test "$enable_compile_warnings" != no ; then
|
if test "$enable_compile_warnings" != no ; then
|
||||||
@ -241,6 +239,12 @@ AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
|
|||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
data/Makefile
|
data/Makefile
|
||||||
|
docs/Makefile
|
||||||
|
docs/reference/Makefile
|
||||||
|
docs/reference/shell/Makefile
|
||||||
|
docs/reference/shell/shell-docs.sgml
|
||||||
|
docs/reference/st/Makefile
|
||||||
|
docs/reference/st/st-docs.sgml
|
||||||
js/Makefile
|
js/Makefile
|
||||||
js/misc/config.js
|
js/misc/config.js
|
||||||
src/Makefile
|
src/Makefile
|
||||||
|
@ -60,23 +60,14 @@ gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid)
|
|||||||
all-local: gschemas.compiled
|
all-local: gschemas.compiled
|
||||||
|
|
||||||
|
|
||||||
# GConf schemas: provide defaults for keys from Metacity we are overriding
|
|
||||||
gconfschemadir = @GCONF_SCHEMA_FILE_DIR@
|
|
||||||
gconfschema_DATA = gnome-shell.schemas
|
|
||||||
|
|
||||||
shadersdir = $(pkgdatadir)/shaders
|
shadersdir = $(pkgdatadir)/shaders
|
||||||
shaders_DATA = \
|
shaders_DATA = \
|
||||||
shaders/dim-window.glsl
|
shaders/dim-window.glsl
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(gconfschema_DATA)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
gnome-shell.desktop.in.in \
|
gnome-shell.desktop.in.in \
|
||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(gconfschema_DATA) \
|
|
||||||
$(shaders_DATA) \
|
$(shaders_DATA) \
|
||||||
org.gnome.shell.gschema.xml.in
|
org.gnome.shell.gschema.xml.in
|
||||||
|
|
||||||
|
@ -1,100 +0,0 @@
|
|||||||
<gconfschemafile>
|
|
||||||
<schemalist>
|
|
||||||
|
|
||||||
<!-- Metacity overrides -->
|
|
||||||
<schema>
|
|
||||||
<key>/schemas/desktop/gnome/shell/windows/attach_modal_dialogs</key>
|
|
||||||
<applyto>/desktop/gnome/shell/windows/attach_modal_dialogs</applyto>
|
|
||||||
<owner>gnome-shell</owner>
|
|
||||||
<type>bool</type>
|
|
||||||
<default>true</default>
|
|
||||||
<locale name="C">
|
|
||||||
<short>Attach modal dialog to the parent window</short>
|
|
||||||
<long>
|
|
||||||
This key overrides /apps/mutter/general/attach_modal_dialogs when
|
|
||||||
running GNOME Shell.
|
|
||||||
</long>
|
|
||||||
</locale>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema>
|
|
||||||
<key>/schemas/desktop/gnome/shell/windows/button_layout</key>
|
|
||||||
<applyto>/desktop/gnome/shell/windows/button_layout</applyto>
|
|
||||||
<owner>gnome-shell</owner>
|
|
||||||
<type>string</type>
|
|
||||||
<default>:close</default>
|
|
||||||
<locale name="C">
|
|
||||||
<short>Arrangement of buttons on the titlebar</short>
|
|
||||||
<long>
|
|
||||||
Arrangement of buttons on the titlebar. The
|
|
||||||
value should be a string, such as
|
|
||||||
"menu:minimize,maximize,spacer,close"; the colon separates the
|
|
||||||
left corner of the window from the right corner, and
|
|
||||||
the button names are comma-separated. Duplicate buttons
|
|
||||||
are not allowed. Unknown button names are silently ignored
|
|
||||||
so that buttons can be added in future gnome-shell versions
|
|
||||||
without breaking older versions.
|
|
||||||
A special spacer tag can be used to insert some space between
|
|
||||||
two adjacent buttons.
|
|
||||||
|
|
||||||
This key overrides /apps/metacity/general/button_layout when
|
|
||||||
running GNOME Shell.
|
|
||||||
</long>
|
|
||||||
</locale>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema>
|
|
||||||
<key>/schemas/desktop/gnome/shell/windows/edge_tiling</key>
|
|
||||||
<applyto>/desktop/gnome/shell/windows/edge_tiling</applyto>
|
|
||||||
<owner>gnome-shell</owner>
|
|
||||||
<type>bool</type>
|
|
||||||
<default>true</default>
|
|
||||||
<locale name="C">
|
|
||||||
<short>enable edge tiling when dropping windows on screen edges</short>
|
|
||||||
<long>
|
|
||||||
If enabled, dropping windows on vertical screen edges maximizes them
|
|
||||||
vertically and resizes them horizontally to cover half of the
|
|
||||||
available area. Dropping windows on the top screen edge maximizes them
|
|
||||||
completely.
|
|
||||||
|
|
||||||
This key overrides /apps/metacity/general/edge_tiling when
|
|
||||||
running GNOME Shell.
|
|
||||||
</long>
|
|
||||||
</locale>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema>
|
|
||||||
<key>/schemas/desktop/gnome/shell/windows/theme</key>
|
|
||||||
<applyto>/desktop/gnome/shell/windows/theme</applyto>
|
|
||||||
<owner>gnome-shell</owner>
|
|
||||||
<type>string</type>
|
|
||||||
<default>Adwaita</default>
|
|
||||||
<locale name="C">
|
|
||||||
<short>Current theme</short>
|
|
||||||
<long>
|
|
||||||
The theme determines the appearance of window borders,
|
|
||||||
titlebar, and so forth.
|
|
||||||
|
|
||||||
This key overrides /apps/metacity/general/theme when
|
|
||||||
running GNOME Shell.
|
|
||||||
</long>
|
|
||||||
</locale>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema>
|
|
||||||
<key>/schemas/desktop/gnome/shell/windows/workspaces_only_on_primary</key>
|
|
||||||
<applyto>/desktop/gnome/shell/windows/workspaces_only_on_primary</applyto>
|
|
||||||
<owner>gnome-shell</owner>
|
|
||||||
<type>bool</type>
|
|
||||||
<default>true</default>
|
|
||||||
<locale name="C">
|
|
||||||
<short>Workspaces only on primary monitor</short>
|
|
||||||
<long>
|
|
||||||
This key overrides /apps/mutter/general/workspaces_only_on_primary when
|
|
||||||
running GNOME Shell.
|
|
||||||
</long>
|
|
||||||
</locale>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
</schemalist>
|
|
||||||
</gconfschemafile>
|
|
@ -16,8 +16,9 @@
|
|||||||
<_summary>Uuids of extensions to enable</_summary>
|
<_summary>Uuids of extensions to enable</_summary>
|
||||||
<_description>
|
<_description>
|
||||||
GNOME Shell extensions have a uuid property; this key lists extensions
|
GNOME Shell extensions have a uuid property; this key lists extensions
|
||||||
which should be loaded. disabled-extensions overrides this setting for
|
which should be loaded. Any extension that wants to be loaded needs
|
||||||
extensions that appear in both lists.
|
to be in this list. You can also manipulate this list with the
|
||||||
|
EnableExtension and DisableExtension DBus methods on org.gnome.Shell.
|
||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
<key name="enable-app-monitoring" type="b">
|
<key name="enable-app-monitoring" type="b">
|
||||||
@ -141,4 +142,40 @@
|
|||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
|
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/">
|
||||||
|
<key name="attach-modal-dialogs" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Attach modal dialog to the parent window</summary>
|
||||||
|
<description>
|
||||||
|
This key overrides the key in org.gnome.mutter when running
|
||||||
|
GNOME Shell.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="button-layout" type="s">
|
||||||
|
<default>":close"</default>
|
||||||
|
<summary>Arrangement of buttons on the titlebar</summary>
|
||||||
|
<description>
|
||||||
|
This key overrides the key in org.gnome.desktop.wm.preferences when
|
||||||
|
running GNOME Shell.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="edge-tiling" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Enable edge tiling when dropping windows on screen edges</summary>
|
||||||
|
<description>
|
||||||
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="workspaces-only-on-primary" type="b">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Workspaces only on primary monitor</summary>
|
||||||
|
<description>
|
||||||
|
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
</schemalist>
|
</schemalist>
|
||||||
|
@ -36,18 +36,18 @@ stage {
|
|||||||
|
|
||||||
StScrollBar
|
StScrollBar
|
||||||
{
|
{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
StScrollView.vfade
|
StScrollView.vfade
|
||||||
{
|
{
|
||||||
-st-vfade-offset: 68px;
|
-st-vfade-offset: 68px;
|
||||||
}
|
}
|
||||||
|
|
||||||
StScrollView StScrollBar
|
StScrollView StScrollBar
|
||||||
{
|
{
|
||||||
min-width: 16px;
|
min-width: 16px;
|
||||||
min-height: 16px;
|
min-height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -509,8 +509,9 @@ StTooltip StLabel {
|
|||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dash-placeholder {
|
.placeholder {
|
||||||
background-image: url("dash-placeholder.svg");
|
background-image: url("dash-placeholder.svg");
|
||||||
|
height: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#viewSelector {
|
#viewSelector {
|
||||||
@ -742,24 +743,24 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.contact-icon {
|
.contact-icon {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-details {
|
.contact-details {
|
||||||
padding: 6px 8px 11px 8px;
|
padding: 6px 8px 11px 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-details-alias {
|
.contact-details-alias {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
padding-bottom: 11px;
|
padding-bottom: 11px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-details-status {
|
.contact-details-status {
|
||||||
font-size: 11pt;
|
font-size: 11pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-details-status-icon {
|
.contact-details-status-icon {
|
||||||
padding-right: 2px;
|
padding-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact:hover {
|
.contact:hover {
|
||||||
@ -800,37 +801,45 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
#LookingGlassDialog
|
#LookingGlassDialog
|
||||||
{
|
{
|
||||||
background-color: rgba(0,0,0,0.85);
|
background-color: rgba(0,0,0,0.80);
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border: 2px solid grey;
|
border: 2px solid grey;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
color: #88ff66;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog > #Toolbar
|
#LookingGlassDialog > #Toolbar
|
||||||
{
|
{
|
||||||
border: 1px solid grey;
|
border: 1px solid grey;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog .labels {
|
#LookingGlassDialog .labels {
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog .notebook-tab {
|
#LookingGlassDialog .notebook-tab {
|
||||||
padding: 2px;
|
-natural-hpadding: 12px;
|
||||||
|
-minimum-hpadding: 6px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #ccc;
|
||||||
|
transition-duration: 100;
|
||||||
|
padding-left: .3em;
|
||||||
|
padding-right: .3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog .notebook-tab:hover {
|
#LookingGlassDialog .notebook-tab:hover {
|
||||||
color: #00ff00;
|
color: white;
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog .notebook-tab:selected {
|
#LookingGlassDialog .notebook-tab:selected {
|
||||||
border: 1px solid #88ff66;
|
border-image: url("panel-button-border.svg") 10 10 0 2;
|
||||||
border-radius: 4px;
|
background-image: url("panel-button-highlight-wide.svg");
|
||||||
padding: 5px;
|
color: white;
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog .lg-inspector-title {
|
#LookingGlassDialog .lg-inspector-title {
|
||||||
@ -840,52 +849,58 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.lg-dialog StLabel
|
.lg-dialog StLabel
|
||||||
{
|
{
|
||||||
color: #88ff66;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-dialog StEntry
|
.lg-dialog StEntry
|
||||||
{
|
{
|
||||||
color: #88ff66;
|
color: #ffffff;
|
||||||
selection-background-color: #88ff66;
|
selection-background-color: #bbbbbb;
|
||||||
selected-color: black;
|
selected-color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-completions-text
|
||||||
|
{
|
||||||
|
font-size: .9em;
|
||||||
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-obj-inspector-title
|
.lg-obj-inspector-title
|
||||||
{
|
{
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-obj-inspector-button
|
.lg-obj-inspector-button
|
||||||
{
|
{
|
||||||
border: 1px solid #88ff66;
|
border: 1px solid gray;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-obj-inspector-button:hover
|
.lg-obj-inspector-button:hover
|
||||||
{
|
{
|
||||||
border: 1px solid #00ff00;
|
border: 1px solid #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-dialog .shell-link
|
.lg-dialog .shell-link
|
||||||
{
|
{
|
||||||
color: #88ff66;
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lg-dialog .shell-link:hover
|
.lg-dialog .shell-link:hover
|
||||||
{
|
{
|
||||||
color: #00ff00;
|
color: #dddddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog StBoxLayout#EvalBox
|
#LookingGlassDialog StBoxLayout#EvalBox
|
||||||
{
|
{
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassDialog StBoxLayout#ResultsArea
|
#LookingGlassDialog StBoxLayout#ResultsArea
|
||||||
{
|
{
|
||||||
spacing: 4px;
|
spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#lookingGlassExtensions {
|
#lookingGlassExtensions {
|
||||||
@ -912,11 +927,11 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#LookingGlassPropertyInspector {
|
#LookingGlassPropertyInspector {
|
||||||
background: rgba(0, 0, 0, 0.9);
|
background: rgba(0, 0, 0, 0.8);
|
||||||
border: 2px solid grey;
|
border: 2px solid grey;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
color: #88ff66;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar popup */
|
/* Calendar popup */
|
||||||
@ -1209,6 +1224,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
#notification-scrollview {
|
#notification-scrollview {
|
||||||
max-height: 10em;
|
max-height: 10em;
|
||||||
|
-st-vfade-offset: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
|
#notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
|
||||||
@ -1251,7 +1267,8 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.notification-icon-button > StIcon {
|
.notification-icon-button > StIcon {
|
||||||
icon-size: 36px;
|
icon-size: 16px;
|
||||||
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hotplug-transient-box {
|
.hotplug-transient-box {
|
||||||
@ -1321,9 +1338,8 @@ StTooltip StLabel {
|
|||||||
padding: 8px 0;
|
padding: 8px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-sent {
|
.chat-received {
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
border-radius: 4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-received:rtl {
|
.chat-received:rtl {
|
||||||
@ -1333,8 +1349,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.chat-sent {
|
.chat-sent {
|
||||||
padding-left: 18pt;
|
padding-left: 18pt;
|
||||||
border-radius: 4px;
|
color: #959595;
|
||||||
color: #7E7E7E;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-sent:rtl {
|
.chat-sent:rtl {
|
||||||
@ -1344,7 +1359,6 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.chat-meta-message {
|
.chat-meta-message {
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 9pt;
|
font-size: 9pt;
|
||||||
color: #bbbbbb;
|
color: #bbbbbb;
|
||||||
}
|
}
|
||||||
@ -1899,6 +1913,7 @@ StTooltip StLabel {
|
|||||||
background-gradient-end: white;
|
background-gradient-end: white;
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
color: black;
|
color: black;
|
||||||
|
selected-color: white;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 2px solid #555753;
|
border: 2px solid #555753;
|
||||||
}
|
}
|
||||||
|
1
docs/Makefile.am
Normal file
1
docs/Makefile.am
Normal file
@ -0,0 +1 @@
|
|||||||
|
SUBDIRS = reference
|
1
docs/reference/Makefile.am
Normal file
1
docs/reference/Makefile.am
Normal file
@ -0,0 +1 @@
|
|||||||
|
SUBDIRS = shell st
|
105
docs/reference/shell/Makefile.am
Normal file
105
docs/reference/shell/Makefile.am
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
# We require automake 1.6 at least.
|
||||||
|
AUTOMAKE_OPTIONS = 1.6
|
||||||
|
|
||||||
|
# This is a blank Makefile.am for using gtk-doc.
|
||||||
|
# Copy this to your project's API docs directory and modify the variables to
|
||||||
|
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||||
|
# of using the various options.
|
||||||
|
|
||||||
|
# The name of the module, e.g. 'glib'.
|
||||||
|
DOC_MODULE=shell
|
||||||
|
|
||||||
|
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
||||||
|
#DOC_MODULE_VERSION=2
|
||||||
|
|
||||||
|
|
||||||
|
# The top-level SGML file. You can change this if you want to.
|
||||||
|
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||||
|
|
||||||
|
# Directories containing the source code, relative to $(srcdir).
|
||||||
|
# gtk-doc will search all .c and .h files beneath these paths
|
||||||
|
# for inline comments documenting functions and macros.
|
||||||
|
# e.g. DOC_SOURCE_DIR=../../../gtk ../../../gdk
|
||||||
|
DOC_SOURCE_DIR=../../../src
|
||||||
|
|
||||||
|
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||||
|
SCANGOBJ_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-scan.
|
||||||
|
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||||
|
SCAN_OPTIONS=--rebuild-types
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkdb.
|
||||||
|
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mktmpl
|
||||||
|
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||||
|
MKTMPL_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkhtml
|
||||||
|
MKHTML_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||||
|
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||||
|
FIXXREF_OPTIONS=
|
||||||
|
|
||||||
|
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||||
|
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||||
|
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||||
|
HFILE_GLOB=$(top_srcdir)/src/*.h
|
||||||
|
CFILE_GLOB=$(top_srcdir)/src/*.c
|
||||||
|
|
||||||
|
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||||
|
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||||
|
EXTRA_HFILES=
|
||||||
|
|
||||||
|
# Header files or dirs to ignore when scanning. Use base file/dir names
|
||||||
|
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
|
||||||
|
IGNORE_HFILES=calendar-server gvc hotplug-sniffer st tray
|
||||||
|
|
||||||
|
# Images to copy into HTML directory.
|
||||||
|
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||||
|
HTML_IMAGES=
|
||||||
|
|
||||||
|
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||||
|
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||||
|
content_files=
|
||||||
|
|
||||||
|
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||||
|
# These files must be listed here *and* in content_files
|
||||||
|
# e.g. expand_content_files=running.sgml
|
||||||
|
expand_content_files=
|
||||||
|
|
||||||
|
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||||
|
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||||
|
# signals and properties.
|
||||||
|
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
|
GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS)
|
||||||
|
GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell.la
|
||||||
|
|
||||||
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
|
include $(top_srcdir)/gtk-doc.make
|
||||||
|
|
||||||
|
# Other files to distribute
|
||||||
|
# e.g. EXTRA_DIST += version.xml.in
|
||||||
|
EXTRA_DIST +=
|
||||||
|
|
||||||
|
# Files not to distribute
|
||||||
|
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
||||||
|
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
||||||
|
DISTCLEANFILES = $(DOC_MODULES).types
|
||||||
|
|
||||||
|
# Comment this out if you want 'make check' to test you doc status
|
||||||
|
# and run some sanity checks
|
||||||
|
if ENABLE_GTK_DOC
|
||||||
|
TESTS_ENVIRONMENT = cd $(srcdir) && \
|
||||||
|
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
|
||||||
|
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
|
||||||
|
#TESTS = $(GTKDOC_CHECK)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include $(top_srcdir)/git.mk
|
73
docs/reference/shell/shell-docs.sgml.in
Normal file
73
docs/reference/shell/shell-docs.sgml.in
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||||
|
[
|
||||||
|
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||||
|
]>
|
||||||
|
<book id="index">
|
||||||
|
<bookinfo>
|
||||||
|
<title>Shell Reference Manual</title>
|
||||||
|
<releaseinfo>
|
||||||
|
for Shell @VERSION@.
|
||||||
|
<!--The latest version of this documentation can be found on-line at
|
||||||
|
<ulink role="online-location" url="http://[SERVER]/shell/index.html">http://[SERVER]/shell/</ulink>.-->
|
||||||
|
</releaseinfo>
|
||||||
|
</bookinfo>
|
||||||
|
|
||||||
|
<chapter>
|
||||||
|
<title>Actors</title>
|
||||||
|
<xi:include href="xml/shell-generic-container.xml"/>
|
||||||
|
<xi:include href="xml/shell-slicer.xml"/>
|
||||||
|
<xi:include href="xml/shell-stack.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter>
|
||||||
|
<title>Application tracking</title>
|
||||||
|
<xi:include href="xml/shell-app.xml"/>
|
||||||
|
<xi:include href="xml/shell-app-usage.xml"/>
|
||||||
|
<xi:include href="xml/shell-window-tracker.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter>
|
||||||
|
<title>Search</title>
|
||||||
|
<xi:include href="xml/shell-app-system.xml"/>
|
||||||
|
<xi:include href="xml/shell-contact-system.xml"/>
|
||||||
|
<xi:include href="xml/shell-doc-system.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter>
|
||||||
|
<title>Tray Icons</title>
|
||||||
|
<xi:include href="xml/shell-embedded-window.xml"/>
|
||||||
|
<xi:include href="xml/shell-gtk-embed.xml"/>
|
||||||
|
<xi:include href="xml/shell-tray-icon.xml"/>
|
||||||
|
<xi:include href="xml/shell-tray-manager.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter>
|
||||||
|
<title>Recorder</title>
|
||||||
|
<xi:include href="xml/shell-recorder.xml"/>
|
||||||
|
<xi:include href="xml/shell-recorder-src.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter>
|
||||||
|
<title>Integration helpers and utilities</title>
|
||||||
|
<xi:include href="xml/shell-global.xml"/>
|
||||||
|
<xi:include href="xml/shell-wm.xml"/>
|
||||||
|
<xi:include href="xml/shell-xfixes-cursor.xml"/>
|
||||||
|
<xi:include href="xml/shell-util.xml"/>
|
||||||
|
<xi:include href="xml/shell-mount-operation.xml"/>
|
||||||
|
<xi:include href="xml/shell-mobile-providers.xml"/>
|
||||||
|
<xi:include href="xml/shell-network-agent.xml"/>
|
||||||
|
<xi:include href="xml/shell-polkit-authentication-agent.xml"/>
|
||||||
|
<xi:include href="xml/shell-tp-client.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter id="object-tree">
|
||||||
|
<title>Object Hierarchy</title>
|
||||||
|
<xi:include href="xml/tree_index.sgml"/>
|
||||||
|
</chapter>
|
||||||
|
<index id="api-index-full">
|
||||||
|
<title>API Index</title>
|
||||||
|
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
<index id="deprecated-api-index" role="deprecated">
|
||||||
|
<title>Index of deprecated API</title>
|
||||||
|
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
|
||||||
|
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||||
|
</book>
|
105
docs/reference/st/Makefile.am
Normal file
105
docs/reference/st/Makefile.am
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
# We require automake 1.6 at least.
|
||||||
|
AUTOMAKE_OPTIONS = 1.6
|
||||||
|
|
||||||
|
# This is a blank Makefile.am for using gtk-doc.
|
||||||
|
# Copy this to your project's API docs directory and modify the variables to
|
||||||
|
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||||
|
# of using the various options.
|
||||||
|
|
||||||
|
# The name of the module, e.g. 'glib'.
|
||||||
|
DOC_MODULE=st
|
||||||
|
|
||||||
|
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
||||||
|
#DOC_MODULE_VERSION=2
|
||||||
|
|
||||||
|
|
||||||
|
# The top-level SGML file. You can change this if you want to.
|
||||||
|
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||||
|
|
||||||
|
# Directories containing the source code, relative to $(srcdir).
|
||||||
|
# gtk-doc will search all .c and .h files beneath these paths
|
||||||
|
# for inline comments documenting functions and macros.
|
||||||
|
# e.g. DOC_SOURCE_DIR=../../../gtk ../../../gdk
|
||||||
|
DOC_SOURCE_DIR=../../../src/st
|
||||||
|
|
||||||
|
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||||
|
SCANGOBJ_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-scan.
|
||||||
|
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||||
|
SCAN_OPTIONS=--rebuild-types --rebuild-sections
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkdb.
|
||||||
|
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mktmpl
|
||||||
|
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||||
|
MKTMPL_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkhtml
|
||||||
|
MKHTML_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||||
|
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||||
|
FIXXREF_OPTIONS=
|
||||||
|
|
||||||
|
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||||
|
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||||
|
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||||
|
HFILE_GLOB=$(top_srcdir)/src/st/*.h
|
||||||
|
CFILE_GLOB=$(top_srcdir)/src/st/*.c
|
||||||
|
|
||||||
|
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||||
|
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||||
|
EXTRA_HFILES=
|
||||||
|
|
||||||
|
# Header files or dirs to ignore when scanning. Use base file/dir names
|
||||||
|
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
|
||||||
|
IGNORE_HFILES=st-private.h st-theme-node-private.h
|
||||||
|
|
||||||
|
# Images to copy into HTML directory.
|
||||||
|
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||||
|
HTML_IMAGES=
|
||||||
|
|
||||||
|
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||||
|
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||||
|
content_files=
|
||||||
|
|
||||||
|
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||||
|
# These files must be listed here *and* in content_files
|
||||||
|
# e.g. expand_content_files=running.sgml
|
||||||
|
expand_content_files=
|
||||||
|
|
||||||
|
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||||
|
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||||
|
# signals and properties.
|
||||||
|
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
|
GTKDOC_CFLAGS=
|
||||||
|
GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la
|
||||||
|
|
||||||
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
|
include $(top_srcdir)/gtk-doc.make
|
||||||
|
|
||||||
|
# Other files to distribute
|
||||||
|
# e.g. EXTRA_DIST += version.xml.in
|
||||||
|
EXTRA_DIST +=
|
||||||
|
|
||||||
|
# Files not to distribute
|
||||||
|
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
||||||
|
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
||||||
|
DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
|
||||||
|
|
||||||
|
# Comment this out if you want 'make check' to test you doc status
|
||||||
|
# and run some sanity checks
|
||||||
|
if ENABLE_GTK_DOC
|
||||||
|
TESTS_ENVIRONMENT = cd $(srcdir) && \
|
||||||
|
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
|
||||||
|
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
|
||||||
|
#TESTS = $(GTKDOC_CHECK)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include $(top_srcdir)/git.mk
|
68
docs/reference/st/st-docs.sgml.in
Normal file
68
docs/reference/st/st-docs.sgml.in
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||||
|
[
|
||||||
|
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||||
|
]>
|
||||||
|
<book id="index">
|
||||||
|
<bookinfo>
|
||||||
|
<title>St Reference Manual</title>
|
||||||
|
<releaseinfo>
|
||||||
|
for St @VERSION@.
|
||||||
|
<!--The latest version of this documentation can be found on-line at
|
||||||
|
<ulink role="online-location" url="http://[SERVER]/st/index.html">http://[SERVER]/st/</ulink>.-->
|
||||||
|
</releaseinfo>
|
||||||
|
</bookinfo>
|
||||||
|
|
||||||
|
<part>
|
||||||
|
<title>API reference</title>
|
||||||
|
<chapter id="base">
|
||||||
|
<title>Abstract classes and Interfaces</title>
|
||||||
|
<xi:include href="xml/st-widget.xml"/>
|
||||||
|
<xi:include href="xml/st-widget-accessible.xml"/>
|
||||||
|
<xi:include href="xml/st-container.xml"/>
|
||||||
|
<xi:include href="xml/st-scrollable.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter id="widgets">
|
||||||
|
<title>Widgets</title>
|
||||||
|
<xi:include href="xml/st-button.xml"/>
|
||||||
|
<xi:include href="xml/st-drawing-area.xml"/>
|
||||||
|
<xi:include href="xml/st-entry.xml"/>
|
||||||
|
<xi:include href="xml/st-icon.xml"/>
|
||||||
|
<xi:include href="xml/st-label.xml"/>
|
||||||
|
<xi:include href="xml/st-tooltip.xml"/>
|
||||||
|
</chapter>
|
||||||
|
<chapter id="containers">
|
||||||
|
<title>Containers</title>
|
||||||
|
<xi:include href="xml/st-bin.xml"/>
|
||||||
|
<xi:include href="xml/st-box-layout.xml"/>
|
||||||
|
<xi:include href="xml/st-group.xml"/>
|
||||||
|
<xi:include href="xml/st-overflow-box.xml"/>
|
||||||
|
<xi:include href="xml/st-scroll-view.xml"/>
|
||||||
|
<xi:include href="xml/st-table.xml"/>
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="styling">
|
||||||
|
<title>Styling</title>
|
||||||
|
<xi:include href="xml/st-theme.xml"/>
|
||||||
|
<xi:include href="xml/st-theme-context.xml"/>
|
||||||
|
<xi:include href="xml/st-theme-node.xml"/>
|
||||||
|
<xi:include href="xml/st-theme-node-transition.xml"/>
|
||||||
|
<xi:include href="xml/st-texture-cache.xml"/>
|
||||||
|
</chapter>
|
||||||
|
</part>
|
||||||
|
<chapter id="object-tree">
|
||||||
|
<title>Object Hierarchy</title>
|
||||||
|
<xi:include href="xml/tree_index.sgml"/>
|
||||||
|
</chapter>
|
||||||
|
<index id="api-index-full">
|
||||||
|
<title>API Index</title>
|
||||||
|
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
<index id="deprecated-api-index" role="deprecated">
|
||||||
|
<title>Index of deprecated API</title>
|
||||||
|
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
|
||||||
|
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||||
|
</book>
|
@ -13,6 +13,7 @@ nobase_dist_js_DATA = \
|
|||||||
misc/format.js \
|
misc/format.js \
|
||||||
misc/gnomeSession.js \
|
misc/gnomeSession.js \
|
||||||
misc/history.js \
|
misc/history.js \
|
||||||
|
misc/jsParse.js \
|
||||||
misc/modemManager.js \
|
misc/modemManager.js \
|
||||||
misc/params.js \
|
misc/params.js \
|
||||||
misc/screenSaver.js \
|
misc/screenSaver.js \
|
||||||
|
@ -21,11 +21,9 @@
|
|||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
function Task() {
|
const Task = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Task',
|
||||||
}
|
|
||||||
|
|
||||||
Task.prototype = {
|
|
||||||
_init: function(scope, handler) {
|
_init: function(scope, handler) {
|
||||||
if (scope)
|
if (scope)
|
||||||
this.scope = scope;
|
this.scope = scope;
|
||||||
@ -41,22 +39,17 @@ Task.prototype = {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Task.prototype);
|
Signals.addSignalMethods(Task.prototype);
|
||||||
|
|
||||||
function Hold() {
|
const Hold = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Hold',
|
||||||
}
|
Extends: Task,
|
||||||
|
|
||||||
Hold.prototype = {
|
|
||||||
__proto__: Task.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Task.prototype._init.call(this,
|
this.parent(this, function () {
|
||||||
this,
|
return this;
|
||||||
function () {
|
});
|
||||||
return this;
|
|
||||||
});
|
|
||||||
|
|
||||||
this._acquisitions = 1;
|
this._acquisitions = 1;
|
||||||
},
|
},
|
||||||
@ -88,18 +81,15 @@ Hold.prototype = {
|
|||||||
isAcquired: function() {
|
isAcquired: function() {
|
||||||
return this._acquisitions > 0;
|
return this._acquisitions > 0;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(Hold.prototype);
|
Signals.addSignalMethods(Hold.prototype);
|
||||||
|
|
||||||
function Batch() {
|
const Batch = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Batch',
|
||||||
}
|
Extends: Task,
|
||||||
|
|
||||||
Batch.prototype = {
|
|
||||||
__proto__: Task.prototype,
|
|
||||||
|
|
||||||
_init: function(scope, tasks) {
|
_init: function(scope, tasks) {
|
||||||
Task.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this.tasks = [];
|
this.tasks = [];
|
||||||
|
|
||||||
@ -166,20 +156,12 @@ Batch.prototype = {
|
|||||||
cancel: function() {
|
cancel: function() {
|
||||||
this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1);
|
this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
};
|
|
||||||
Signals.addSignalMethods(Batch.prototype);
|
Signals.addSignalMethods(Batch.prototype);
|
||||||
|
|
||||||
function ConcurrentBatch() {
|
const ConcurrentBatch = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ConcurrentBatch',
|
||||||
}
|
Extends: Batch,
|
||||||
|
|
||||||
ConcurrentBatch.prototype = {
|
|
||||||
__proto__: Batch.prototype,
|
|
||||||
|
|
||||||
_init: function(scope, tasks) {
|
|
||||||
Batch.prototype._init.call(this, scope, tasks);
|
|
||||||
},
|
|
||||||
|
|
||||||
process: function() {
|
process: function() {
|
||||||
let hold = this.runTask();
|
let hold = this.runTask();
|
||||||
@ -193,19 +175,12 @@ ConcurrentBatch.prototype = {
|
|||||||
// concurrently.
|
// concurrently.
|
||||||
this.nextTask();
|
this.nextTask();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ConcurrentBatch.prototype);
|
Signals.addSignalMethods(ConcurrentBatch.prototype);
|
||||||
|
|
||||||
function ConsecutiveBatch() {
|
const ConsecutiveBatch = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ConsecutiveBatch',
|
||||||
}
|
Extends: Batch,
|
||||||
|
|
||||||
ConsecutiveBatch.prototype = {
|
|
||||||
__proto__: Batch.prototype,
|
|
||||||
|
|
||||||
_init: function(scope, tasks) {
|
|
||||||
Batch.prototype._init.call(this, scope, tasks);
|
|
||||||
},
|
|
||||||
|
|
||||||
process: function() {
|
process: function() {
|
||||||
let hold = this.runTask();
|
let hold = this.runTask();
|
||||||
@ -224,5 +199,5 @@ ConsecutiveBatch.prototype = {
|
|||||||
this.nextTask();
|
this.nextTask();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ConsecutiveBatch.prototype);
|
Signals.addSignalMethods(ConsecutiveBatch.prototype);
|
||||||
|
@ -1,32 +1,22 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
|
|
||||||
const ConsoleKitManagerIface = {
|
const ConsoleKitManagerIface = <interface name='org.freedesktop.ConsoleKit.Manager'>
|
||||||
name: 'org.freedesktop.ConsoleKit.Manager',
|
<method name='CanRestart'>
|
||||||
methods: [{ name: 'CanRestart',
|
<arg type='b' direction='out'/>
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'b' },
|
<method name='CanStop'>
|
||||||
{ name: 'CanStop',
|
<arg type='b' direction='out'/>
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'b' },
|
<method name='Restart' />
|
||||||
{ name: 'Restart',
|
<method name='Stop' />
|
||||||
inSignature: '',
|
</interface>;
|
||||||
outSignature: '' },
|
|
||||||
{ name: 'Stop',
|
const ConsoleKitProxy = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
|
||||||
inSignature: '',
|
|
||||||
outSignature: '' }]
|
|
||||||
};
|
|
||||||
|
|
||||||
function ConsoleKitManager() {
|
function ConsoleKitManager() {
|
||||||
this._init();
|
return new ConsoleKitProxy(Gio.DBus.system,
|
||||||
|
'org.freedesktop.ConsoleKit',
|
||||||
|
'/org/freedesktop/ConsoleKit/Manager');
|
||||||
};
|
};
|
||||||
|
|
||||||
ConsoleKitManager.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.system.proxifyObject(this,
|
|
||||||
'org.freedesktop.ConsoleKit',
|
|
||||||
'/org/freedesktop/ConsoleKit/Manager');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(ConsoleKitManager.prototype, ConsoleKitManagerIface);
|
|
||||||
|
@ -1,26 +1,20 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const FprintManagerIface = {
|
const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
|
||||||
name: 'net.reactivated.Fprint.Manager',
|
<method name='GetDefaultDevice'>
|
||||||
methods: [{ name: 'GetDefaultDevice',
|
<arg type='o' direction='out' />
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'o' }]
|
</interface>;
|
||||||
};
|
|
||||||
|
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
|
||||||
|
|
||||||
function FprintManager() {
|
function FprintManager() {
|
||||||
this._init();
|
return new FprintManagerProxy(Gio.DBus.system,
|
||||||
|
'net.reactivated.Fprint',
|
||||||
|
'/net/reactivated/Fprint/Manager');
|
||||||
};
|
};
|
||||||
|
|
||||||
FprintManager.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.system.proxifyObject(this,
|
|
||||||
'net.reactivated.Fprint',
|
|
||||||
'/net/reactivated/Fprint/Manager');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(FprintManager.prototype, FprintManagerIface);
|
|
||||||
|
@ -33,7 +33,6 @@ const St = imports.gi.St;
|
|||||||
const GdmGreeter = imports.gi.GdmGreeter;
|
const GdmGreeter = imports.gi.GdmGreeter;
|
||||||
|
|
||||||
const Batch = imports.gdm.batch;
|
const Batch = imports.gdm.batch;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Fprint = imports.gdm.fingerprint;
|
const Fprint = imports.gdm.fingerprint;
|
||||||
const Lightbox = imports.ui.lightbox;
|
const Lightbox = imports.ui.lightbox;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@ -141,11 +140,9 @@ function _smoothlyResizeActor(actor, width, height) {
|
|||||||
return hold;
|
return hold;
|
||||||
}
|
}
|
||||||
|
|
||||||
function UserListItem(user, reason) {
|
const UserListItem = new Lang.Class({
|
||||||
this._init(user, reason);
|
Name: 'UserListItem',
|
||||||
}
|
|
||||||
|
|
||||||
UserListItem.prototype = {
|
|
||||||
_init: function(user) {
|
_init: function(user) {
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this._userChangedId = this.user.connect('changed',
|
this._userChangedId = this.user.connect('changed',
|
||||||
@ -274,15 +271,12 @@ UserListItem.prototype = {
|
|||||||
});
|
});
|
||||||
return hold;
|
return hold;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
};
|
|
||||||
Signals.addSignalMethods(UserListItem.prototype);
|
Signals.addSignalMethods(UserListItem.prototype);
|
||||||
|
|
||||||
function UserList() {
|
const UserList = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'UserList',
|
||||||
}
|
|
||||||
|
|
||||||
UserList.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.ScrollView({ style_class: 'login-dialog-user-list-view'});
|
this.actor = new St.ScrollView({ style_class: 'login-dialog-user-list-view'});
|
||||||
this.actor.set_policy(Gtk.PolicyType.NEVER,
|
this.actor.set_policy(Gtk.PolicyType.NEVER,
|
||||||
@ -538,14 +532,12 @@ UserList.prototype = {
|
|||||||
item.actor.destroy();
|
item.actor.destroy();
|
||||||
delete this._items[userName];
|
delete this._items[userName];
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(UserList.prototype);
|
Signals.addSignalMethods(UserList.prototype);
|
||||||
|
|
||||||
function SessionListItem(id, name) {
|
const SessionListItem = new Lang.Class({
|
||||||
this._init(id, name);
|
Name: 'SessionListItem',
|
||||||
}
|
|
||||||
|
|
||||||
SessionListItem.prototype = {
|
|
||||||
_init: function(id, name) {
|
_init: function(id, name) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
||||||
@ -600,14 +592,12 @@ SessionListItem.prototype = {
|
|||||||
_onClicked: function() {
|
_onClicked: function() {
|
||||||
this.emit('activate');
|
this.emit('activate');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(SessionListItem.prototype);
|
Signals.addSignalMethods(SessionListItem.prototype);
|
||||||
|
|
||||||
function SessionList() {
|
const SessionList = new Lang.Class({
|
||||||
this._init();
|
Name: 'SessionList',
|
||||||
}
|
|
||||||
|
|
||||||
SessionList.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.Bin();
|
this.actor = new St.Bin();
|
||||||
|
|
||||||
@ -738,24 +728,15 @@ SessionList.prototype = {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(SessionList.prototype);
|
Signals.addSignalMethods(SessionList.prototype);
|
||||||
|
|
||||||
function LoginDialog() {
|
const LoginDialog = new Lang.Class({
|
||||||
if (_loginDialog == null) {
|
Name: 'LoginDialog',
|
||||||
this._init();
|
Extends: ModalDialog.ModalDialog,
|
||||||
_loginDialog = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _loginDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
LoginDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { shellReactive: true,
|
this.parent({ shellReactive: true, styleClass: 'login-dialog' });
|
||||||
styleClass: 'login-dialog' });
|
|
||||||
this.connect('destroy',
|
this.connect('destroy',
|
||||||
Lang.bind(this, this._onDestroy));
|
Lang.bind(this, this._onDestroy));
|
||||||
this.connect('opened',
|
this.connect('opened',
|
||||||
@ -844,7 +825,7 @@ LoginDialog.prototype = {
|
|||||||
x_fill: true,
|
x_fill: true,
|
||||||
y_fill: false,
|
y_fill: false,
|
||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
// 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
|
||||||
this._promptFingerprintMessage = new St.Label({ text: _("(or swipe finger)"),
|
this._promptFingerprintMessage = new St.Label({ text: _("(or swipe finger)"),
|
||||||
style_class: 'login-dialog-prompt-fingerprint-message' });
|
style_class: 'login-dialog-prompt-fingerprint-message' });
|
||||||
@ -864,6 +845,9 @@ LoginDialog.prototype = {
|
|||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
this._promptBox.hide();
|
this._promptBox.hide();
|
||||||
|
|
||||||
|
// translators: this message is shown below the user list on the
|
||||||
|
// login screen. It can be activated to reveal an entry for
|
||||||
|
// manually entering the username.
|
||||||
let notListedLabel = new St.Label({ text: _("Not listed?"),
|
let notListedLabel = new St.Label({ text: _("Not listed?"),
|
||||||
style_class: 'login-dialog-not-listed-label' });
|
style_class: 'login-dialog-not-listed-label' });
|
||||||
this._notListedButton = new St.Button({ style_class: 'login-dialog-not-listed-button',
|
this._notListedButton = new St.Button({ style_class: 'login-dialog-not-listed-button',
|
||||||
@ -905,7 +889,7 @@ LoginDialog.prototype = {
|
|||||||
if (!this._settings.get_boolean(_FINGERPRINT_AUTHENTICATION_KEY))
|
if (!this._settings.get_boolean(_FINGERPRINT_AUTHENTICATION_KEY))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._fprintManager.GetDefaultDeviceRemote(DBus.CALL_FLAG_START, Lang.bind(this,
|
this._fprintManager.GetDefaultDeviceRemote(Gio.DBusCallFlags.NONE, Lang.bind(this,
|
||||||
function(device, error) {
|
function(device, error) {
|
||||||
if (!error && device)
|
if (!error && device)
|
||||||
this._haveFingerprintReader = true;
|
this._haveFingerprintReader = true;
|
||||||
@ -1396,8 +1380,8 @@ LoginDialog.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
close: function() {
|
close: function() {
|
||||||
ModalDialog.ModalDialog.prototype.close.call(this);
|
this.parent();
|
||||||
|
|
||||||
Main.ctrlAltTabManager.removeGroup(this._group);
|
Main.ctrlAltTabManager.removeGroup(this._group);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -25,15 +25,12 @@ const ConsoleKit = imports.gdm.consoleKit;
|
|||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
function PowerMenuButton() {
|
const PowerMenuButton = new Lang.Class({
|
||||||
this._init();
|
Name: 'PowerMenuButton',
|
||||||
}
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
PowerMenuButton.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'system-shutdown', null);
|
this.parent('system-shutdown', null);
|
||||||
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
||||||
this._upClient = new UPowerGlib.Client();
|
this._upClient = new UPowerGlib.Client();
|
||||||
|
|
||||||
@ -143,4 +140,4 @@ PowerMenuButton.prototype = {
|
|||||||
if (this._haveShutdown)
|
if (this._haveShutdown)
|
||||||
this._consoleKitManager.StopRemote();
|
this._consoleKitManager.StopRemote();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -8,11 +8,9 @@ const Search = imports.ui.search;
|
|||||||
|
|
||||||
const THUMBNAIL_ICON_MARGIN = 2;
|
const THUMBNAIL_ICON_MARGIN = 2;
|
||||||
|
|
||||||
function DocInfo(recentInfo) {
|
const DocInfo = new Lang.Class({
|
||||||
this._init(recentInfo);
|
Name: 'DocInfo',
|
||||||
}
|
|
||||||
|
|
||||||
DocInfo.prototype = {
|
|
||||||
_init : function(recentInfo) {
|
_init : function(recentInfo) {
|
||||||
this.recentInfo = recentInfo;
|
this.recentInfo = recentInfo;
|
||||||
// We actually used get_modified() instead of get_visited()
|
// We actually used get_modified() instead of get_visited()
|
||||||
@ -49,7 +47,7 @@ DocInfo.prototype = {
|
|||||||
}
|
}
|
||||||
return mtype;
|
return mtype;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var docManagerInstance = null;
|
var docManagerInstance = null;
|
||||||
|
|
||||||
@ -62,11 +60,9 @@ function getDocManager() {
|
|||||||
/**
|
/**
|
||||||
* DocManager wraps the DocSystem, primarily to expose DocInfo objects.
|
* DocManager wraps the DocSystem, primarily to expose DocInfo objects.
|
||||||
*/
|
*/
|
||||||
function DocManager() {
|
const DocManager = new Lang.Class({
|
||||||
this._init();
|
Name: 'DocManager',
|
||||||
}
|
|
||||||
|
|
||||||
DocManager.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._docSystem = Shell.DocSystem.get_default();
|
this._docSystem = Shell.DocSystem.get_default();
|
||||||
this._infosByTimestamp = [];
|
this._infosByTimestamp = [];
|
||||||
@ -135,6 +131,6 @@ DocManager.prototype = {
|
|||||||
return this._infosByUri[url];
|
return this._infosByUri[url];
|
||||||
})), terms);
|
})), terms);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(DocManager.prototype);
|
Signals.addSignalMethods(DocManager.prototype);
|
||||||
|
@ -1,20 +1,18 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const PresenceIface = {
|
const PresenceIface = <interface name="org.gnome.SessionManager.Presence">
|
||||||
name: 'org.gnome.SessionManager.Presence',
|
<method name="SetStatus">
|
||||||
methods: [{ name: 'SetStatus',
|
<arg type="u" direction="in"/>
|
||||||
inSignature: 'u',
|
</method>
|
||||||
outSignature: '' }],
|
<property name="status" type="u" access="readwrite"/>
|
||||||
properties: [{ name: 'status',
|
<signal name="StatusChanged">
|
||||||
signature: 'u',
|
<arg type="u" direction="out"/>
|
||||||
access: 'readwrite' }],
|
</signal>
|
||||||
signals: [{ name: 'StatusChanged',
|
</interface>;
|
||||||
inSignature: 'u' }]
|
|
||||||
};
|
|
||||||
|
|
||||||
const PresenceStatus = {
|
const PresenceStatus = {
|
||||||
AVAILABLE: 0,
|
AVAILABLE: 0,
|
||||||
@ -23,104 +21,41 @@ const PresenceStatus = {
|
|||||||
IDLE: 3
|
IDLE: 3
|
||||||
};
|
};
|
||||||
|
|
||||||
function Presence() {
|
var PresenceProxy = Gio.DBusProxy.makeProxyWrapper(PresenceIface);
|
||||||
this._init();
|
function Presence(initCallback, cancellable) {
|
||||||
|
return new PresenceProxy(Gio.DBus.session, 'org.gnome.SessionManager',
|
||||||
|
'/org/gnome/SessionManager/Presence', initCallback, cancellable);
|
||||||
}
|
}
|
||||||
|
|
||||||
Presence.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager/Presence', this);
|
|
||||||
},
|
|
||||||
|
|
||||||
getStatus: function(callback) {
|
|
||||||
this.GetRemote('status', Lang.bind(this,
|
|
||||||
function(status, ex) {
|
|
||||||
if (!ex)
|
|
||||||
callback(this, status);
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
setStatus: function(status) {
|
|
||||||
this.SetStatusRemote(status);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(Presence.prototype, PresenceIface);
|
|
||||||
|
|
||||||
// Note inhibitors are immutable objects, so they don't
|
// Note inhibitors are immutable objects, so they don't
|
||||||
// change at runtime (changes always come in the form
|
// change at runtime (changes always come in the form
|
||||||
// of new inhibitors)
|
// of new inhibitors)
|
||||||
const InhibitorIface = {
|
const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
|
||||||
name: 'org.gnome.SessionManager.Inhibitor',
|
<property name="app_id" type="s" access="read" />
|
||||||
properties: [{ name: 'app_id',
|
<property name="client_id" type="s" access="read" />
|
||||||
signature: 's',
|
<property name="reason" type="s" access="read" />
|
||||||
access: 'readonly' },
|
<property name="flags" type="u" access="read" />
|
||||||
{ name: 'client_id',
|
<property name="toplevel_xid" type="u" access="read" />
|
||||||
signature: 's',
|
<property name="cookie" type="u" access="read" />
|
||||||
access: 'readonly' },
|
</interface>;
|
||||||
{ name: 'reason',
|
|
||||||
signature: 's',
|
|
||||||
access: 'readonly' },
|
|
||||||
{ name: 'flags',
|
|
||||||
signature: 'u',
|
|
||||||
access: 'readonly' },
|
|
||||||
{ name: 'toplevel_xid',
|
|
||||||
signature: 'u',
|
|
||||||
access: 'readonly' },
|
|
||||||
{ name: 'cookie',
|
|
||||||
signature: 'u',
|
|
||||||
access: 'readonly' }],
|
|
||||||
};
|
|
||||||
|
|
||||||
function Inhibitor(objectPath) {
|
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
|
||||||
this._init(objectPath);
|
function Inhibitor(objectPath, initCallback, cancellable) {
|
||||||
|
return new InhibitorProxy(Gio.DBus.session, 'org.gnome.SessionManager', objectPath, initCallback, cancellable);
|
||||||
}
|
}
|
||||||
|
|
||||||
Inhibitor.prototype = {
|
|
||||||
_init: function(objectPath) {
|
|
||||||
DBus.session.proxifyObject(this,
|
|
||||||
'org.gnome.SessionManager',
|
|
||||||
objectPath);
|
|
||||||
this.isLoaded = false;
|
|
||||||
this._loadingPropertiesCount = InhibitorIface.properties.length;
|
|
||||||
for (let i = 0; i < InhibitorIface.properties.length; i++) {
|
|
||||||
let propertyName = InhibitorIface.properties[i].name;
|
|
||||||
this.GetRemote(propertyName, Lang.bind(this,
|
|
||||||
function(value, exception) {
|
|
||||||
if (exception)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this[propertyName] = value;
|
|
||||||
this._loadingPropertiesCount--;
|
|
||||||
|
|
||||||
if (this._loadingPropertiesCount == 0) {
|
|
||||||
this.isLoaded = true;
|
|
||||||
this.emit('is-loaded');
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface);
|
|
||||||
Signals.addSignalMethods(Inhibitor.prototype);
|
|
||||||
|
|
||||||
|
|
||||||
// Not the full interface, only the methods we use
|
// Not the full interface, only the methods we use
|
||||||
const SessionManagerIface = {
|
const SessionManagerIface = <interface name="org.gnome.SessionManager">
|
||||||
name: 'org.gnome.SessionManager',
|
<method name="Logout">
|
||||||
methods: [
|
<arg type="u" direction="in" />
|
||||||
{ name: 'Logout', inSignature: 'u', outSignature: '' },
|
</method>
|
||||||
{ name: 'Shutdown', inSignature: '', outSignature: '' },
|
<method name="Shutdown" />
|
||||||
{ name: 'CanShutdown', inSignature: '', outSignature: 'b' }
|
<method name="CanShutdown">
|
||||||
]
|
<arg type="b" direction="out" />
|
||||||
};
|
</method>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
function SessionManager() {
|
var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
|
||||||
this._init();
|
function SessionManager(initCallback, cancellable) {
|
||||||
|
return new SessionManagerProxy(Gio.DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager', initCallback, cancellable);
|
||||||
}
|
}
|
||||||
|
|
||||||
SessionManager.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(SessionManager.prototype, SessionManagerIface);
|
|
@ -7,11 +7,9 @@ const Params = imports.misc.params;
|
|||||||
|
|
||||||
const DEFAULT_LIMIT = 512;
|
const DEFAULT_LIMIT = 512;
|
||||||
|
|
||||||
function HistoryManager(params) {
|
const HistoryManager = new Lang.Class({
|
||||||
this._init(params);
|
Name: 'HistoryManager',
|
||||||
}
|
|
||||||
|
|
||||||
HistoryManager.prototype = {
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { gsettingsKey: null,
|
params = Params.parse(params, { gsettingsKey: null,
|
||||||
limit: DEFAULT_LIMIT,
|
limit: DEFAULT_LIMIT,
|
||||||
@ -111,5 +109,5 @@ HistoryManager.prototype = {
|
|||||||
if (this._key)
|
if (this._key)
|
||||||
global.settings.set_strv(this._key, this._history);
|
global.settings.set_strv(this._key, this._history);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(HistoryManager.prototype);
|
Signals.addSignalMethods(HistoryManager.prototype);
|
||||||
|
246
js/misc/jsParse.js
Normal file
246
js/misc/jsParse.js
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
// Returns a list of potential completions for text. Completions either
|
||||||
|
// follow a dot (e.g. foo.ba -> bar) or they are picked from globalCompletionList (e.g. fo -> foo)
|
||||||
|
// commandHeader is prefixed on any expression before it is eval'ed. It will most likely
|
||||||
|
// consist of global constants that might not carry over from the calling environment.
|
||||||
|
//
|
||||||
|
// This function is likely the one you want to call from external modules
|
||||||
|
function getCompletions(text, commandHeader, globalCompletionList) {
|
||||||
|
let methods = [];
|
||||||
|
let expr, base;
|
||||||
|
let attrHead = '';
|
||||||
|
if (globalCompletionList == null) {
|
||||||
|
globalCompletionList = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
let offset = getExpressionOffset(text, text.length - 1);
|
||||||
|
if (offset >= 0) {
|
||||||
|
text = text.slice(offset);
|
||||||
|
|
||||||
|
// Look for expressions like "Main.panel.foo" and match Main.panel and foo
|
||||||
|
let matches = text.match(/(.*)\.(.*)/);
|
||||||
|
if (matches) {
|
||||||
|
[expr, base, attrHead] = matches;
|
||||||
|
|
||||||
|
methods = getPropertyNamesFromExpression(base, commandHeader).filter(function(attr) {
|
||||||
|
return attr.slice(0, attrHead.length) == attrHead;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Look for the empty expression or partially entered words
|
||||||
|
// not proceeded by a dot and match them against global constants
|
||||||
|
matches = text.match(/^(\w*)$/);
|
||||||
|
if (text == '' || matches) {
|
||||||
|
[expr, attrHead] = matches;
|
||||||
|
methods = globalCompletionList.filter(function(attr) {
|
||||||
|
return attr.slice(0, attrHead.length) == attrHead;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [methods, attrHead];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// A few functions for parsing strings of javascript code.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Identify characters that delimit an expression. That is,
|
||||||
|
// if we encounter anything that isn't a letter, '.', ')', or ']',
|
||||||
|
// we should stop parsing.
|
||||||
|
function isStopChar(c) {
|
||||||
|
return !c.match(/[\w\.\)\]]/);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Given the ending position of a quoted string, find where it starts
|
||||||
|
function findMatchingQuote(expr, offset) {
|
||||||
|
let quoteChar = expr.charAt(offset);
|
||||||
|
for (let i = offset - 1; i >= 0; --i) {
|
||||||
|
if (expr.charAt(i) == quoteChar && expr.charAt(i-1) != '\\'){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Given the ending position of a regex, find where it starts
|
||||||
|
function findMatchingSlash(expr, offset) {
|
||||||
|
for (let i = offset - 1; i >= 0; --i) {
|
||||||
|
if (expr.charAt(i) == '/' && expr.charAt(i-1) != '\\'){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If expr.charAt(offset) is ')' or ']',
|
||||||
|
// return the position of the corresponding '(' or '[' bracket.
|
||||||
|
// This function does not check for syntactic correctness. e.g.,
|
||||||
|
// findMatchingBrace("[(])", 3) returns 1.
|
||||||
|
function findMatchingBrace(expr, offset) {
|
||||||
|
let closeBrace = expr.charAt(offset);
|
||||||
|
let openBrace = ({')': '(', ']': '['})[closeBrace];
|
||||||
|
|
||||||
|
function findTheBrace(expr, offset) {
|
||||||
|
if (offset < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expr.charAt(offset) == openBrace) {
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
if (expr.charAt(offset).match(/['"]/)) {
|
||||||
|
return findTheBrace(expr, findMatchingQuote(expr, offset) - 1);
|
||||||
|
}
|
||||||
|
if (expr.charAt(offset) == '/') {
|
||||||
|
return findTheBrace(expr, findMatchingSlash(expr, offset) - 1);
|
||||||
|
}
|
||||||
|
if (expr.charAt(offset) == closeBrace) {
|
||||||
|
return findTheBrace(expr, findTheBrace(expr, offset - 1) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return findTheBrace(expr, offset - 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return findTheBrace(expr, offset - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Walk expr backwards from offset looking for the beginning of an
|
||||||
|
// expression suitable for passing to eval.
|
||||||
|
// There is no guarantee of correct javascript syntax between the return
|
||||||
|
// value and offset. This function is meant to take a string like
|
||||||
|
// "foo(Obj.We.Are.Completing" and allow you to extract "Obj.We.Are.Completing"
|
||||||
|
function getExpressionOffset(expr, offset) {
|
||||||
|
while (offset >= 0) {
|
||||||
|
let currChar = expr.charAt(offset);
|
||||||
|
|
||||||
|
if (isStopChar(currChar)){
|
||||||
|
return offset + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currChar.match(/[\)\]]/)) {
|
||||||
|
offset = findMatchingBrace(expr, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
--offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
return offset + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Things with non-word characters or that start with a number
|
||||||
|
// are not accessible via .foo notation and so aren't returned
|
||||||
|
function isValidPropertyName(w) {
|
||||||
|
return !(w.match(/\W/) || w.match(/^\d/));
|
||||||
|
}
|
||||||
|
|
||||||
|
// To get all properties (enumerable and not), we need to walk
|
||||||
|
// the prototype chain ourselves
|
||||||
|
function getAllProps(obj) {
|
||||||
|
if (obj === null || obj === undefined) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return Object.getOwnPropertyNames(obj).concat( getAllProps(Object.getPrototypeOf(obj)) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Given a string _expr_, returns all methods
|
||||||
|
// that can be accessed via '.' notation.
|
||||||
|
// e.g., expr="({ foo: null, bar: null, 4: null })" will
|
||||||
|
// return ["foo", "bar", ...] but the list will not include "4",
|
||||||
|
// since methods accessed with '.' notation must star with a letter or _.
|
||||||
|
function getPropertyNamesFromExpression(expr, commandHeader) {
|
||||||
|
if (commandHeader == null) {
|
||||||
|
commandHeader = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
let obj = {};
|
||||||
|
if (!isUnsafeExpression(expr)) {
|
||||||
|
try {
|
||||||
|
obj = eval(commandHeader + expr);
|
||||||
|
} catch (e) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
let propsUnique = {};
|
||||||
|
if (typeof obj === 'object'){
|
||||||
|
let allProps = getAllProps(obj);
|
||||||
|
// Get only things we are allowed to complete following a '.'
|
||||||
|
allProps = allProps.filter( isValidPropertyName );
|
||||||
|
|
||||||
|
// Make sure propsUnique contains one key for every
|
||||||
|
// property so we end up with a unique list of properties
|
||||||
|
allProps.map(function(p){ propsUnique[p] = null; });
|
||||||
|
}
|
||||||
|
return Object.keys(propsUnique).sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Given a list of words, returns the longest prefix they all have in common
|
||||||
|
function getCommonPrefix(words) {
|
||||||
|
let word = words[0];
|
||||||
|
for (let i = 0; i < word.length; i++) {
|
||||||
|
for (let w = 1; w < words.length; w++) {
|
||||||
|
if (words[w].charAt(i) != word.charAt(i))
|
||||||
|
return word.slice(0, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns true if there is reason to think that eval(str)
|
||||||
|
// will modify the global scope
|
||||||
|
function isUnsafeExpression(str) {
|
||||||
|
// Remove any blocks that are quoted or are in a regex
|
||||||
|
function removeLiterals(str) {
|
||||||
|
if (str.length == 0) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
let currChar = str.charAt(str.length - 1);
|
||||||
|
if (currChar == '"' || currChar == '\'') {
|
||||||
|
return removeLiterals(str.slice(0, findMatchingQuote(str, str.length - 1)));
|
||||||
|
} else if (currChar == '/') {
|
||||||
|
return removeLiterals(str.slice(0, findMatchingSlash(str, str.length - 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return removeLiterals(str.slice(0, str.length - 1)) + currChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for any sort of assignment
|
||||||
|
// The strategy used is dumb: remove any quotes
|
||||||
|
// or regexs and comparison operators and see if there is an '=' character.
|
||||||
|
// If there is, it might be an unsafe assignment.
|
||||||
|
|
||||||
|
let prunedStr = removeLiterals(str);
|
||||||
|
prunedStr = prunedStr.replace(/[=!]==/g, ''); //replace === and !== with nothing
|
||||||
|
prunedStr = prunedStr.replace(/[=<>!]=/g, ''); //replace ==, <=, >=, != with nothing
|
||||||
|
|
||||||
|
if (prunedStr.match(/=/)) {
|
||||||
|
return true;
|
||||||
|
} else if (prunedStr.match(/;/)) {
|
||||||
|
// If we contain a semicolon not inside of a quote/regex, assume we're unsafe as well
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a list of global keywords derived from str
|
||||||
|
function getDeclaredConstants(str) {
|
||||||
|
let ret = [];
|
||||||
|
str.split(';').forEach(function(s) {
|
||||||
|
let base, keyword;
|
||||||
|
let match = s.match(/const\s+(\w+)\s*=/);
|
||||||
|
if (match) {
|
||||||
|
[base, keyword] = match;
|
||||||
|
ret.push(keyword);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
@ -8,33 +8,43 @@ const Signals = imports.signals;
|
|||||||
// The following are not the complete interfaces, just the methods we need
|
// The following are not the complete interfaces, just the methods we need
|
||||||
// (or may need in the future)
|
// (or may need in the future)
|
||||||
|
|
||||||
const ModemGsmNetworkInterface = {
|
const ModemGsmNetworkInterface = <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
|
||||||
name: 'org.freedesktop.ModemManager.Modem.Gsm.Network',
|
<method name="GetRegistrationInfo">
|
||||||
methods: [
|
<arg type="u" direction="out" />
|
||||||
{ name: 'GetRegistrationInfo', inSignature: '', outSignature: 'uss' },
|
<arg type="s" direction="out" />
|
||||||
{ name: 'GetSignalQuality', inSignature: '', outSignature: 'u' }
|
<arg type="s" direction="out" />
|
||||||
],
|
</method>
|
||||||
properties: [
|
<method name="GetSignalQuality">
|
||||||
{ name: 'AccessTechnology', signature: 'u', access: 'read' }
|
<arg type="u" direction="out" />
|
||||||
],
|
</method>
|
||||||
signals: [
|
<property name="AccessTechnology" type="u" access="read" />
|
||||||
{ name: 'SignalQuality', inSignature: 'u' },
|
<signal name="SignalQuality">
|
||||||
{ name: 'RegistrationInfo', inSignature: 'uss' }
|
<arg type="u" direction="out" />
|
||||||
]
|
</signal>
|
||||||
};
|
<signal name="RegistrationInfo">
|
||||||
const ModemGsmNetworkProxy = DBus.makeProxyClass(ModemGsmNetworkInterface);
|
<arg type="u" direction="out" />
|
||||||
|
<arg type="s" direction="out" />
|
||||||
|
<arg type="s" direction="out" />
|
||||||
|
</signal>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
const ModemCdmaInterface = {
|
const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface);
|
||||||
name: 'org.freedesktop.ModemManager.Modem.Cdma',
|
|
||||||
methods: [
|
const ModemCdmaInterface = <interface name="org.freedesktop.ModemManager.Modem.Cdma">
|
||||||
{ name: 'GetSignalQuality', inSignature: '', outSignature: 'u' },
|
<method name="GetSignalQuality">
|
||||||
{ name: 'GetServingSystem', inSignature: '', outSignature: 'usu' }
|
<arg type="u" direction="out" />
|
||||||
],
|
</method>
|
||||||
signals: [
|
<method name="GetServingSystem">
|
||||||
{ name: 'SignalQuality', inSignature: 'u' }
|
<arg type="u" direction="out" />
|
||||||
]
|
<arg type="s" direction="out" />
|
||||||
};
|
<arg type="u" direction="out" />
|
||||||
const ModemCdmaProxy = DBus.makeProxyClass(ModemCdmaInterface);
|
</method>
|
||||||
|
<signal name="SignalQuality">
|
||||||
|
<arg type="u" direction="out" />
|
||||||
|
</signal>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
|
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
|
||||||
|
|
||||||
let _providersTable;
|
let _providersTable;
|
||||||
function _getProvidersTable() {
|
function _getProvidersTable() {
|
||||||
@ -44,23 +54,21 @@ function _getProvidersTable() {
|
|||||||
return _providersTable = providers;
|
return _providersTable = providers;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ModemGsm() {
|
const ModemGsm = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ModemGsm',
|
||||||
}
|
|
||||||
|
|
||||||
ModemGsm.prototype = {
|
|
||||||
_init: function(path) {
|
_init: function(path) {
|
||||||
this._proxy = new ModemGsmNetworkProxy(DBus.system, 'org.freedesktop.ModemManager', path);
|
this._proxy = new ModemGsmNetworkProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
|
||||||
|
|
||||||
this.signal_quality = 0;
|
this.signal_quality = 0;
|
||||||
this.operator_name = null;
|
this.operator_name = null;
|
||||||
|
|
||||||
// Code is duplicated because the function have different signatures
|
// Code is duplicated because the function have different signatures
|
||||||
this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, quality) {
|
this._proxy.connectSignal('SignalQuality', Lang.bind(this, function(proxy, sender, [quality]) {
|
||||||
this.signal_quality = quality;
|
this.signal_quality = quality;
|
||||||
this.emit('notify::signal-quality');
|
this.emit('notify::signal-quality');
|
||||||
}));
|
}));
|
||||||
this._proxy.connect('RegistrationInfo', Lang.bind(this, function(proxy, status, code, name) {
|
this._proxy.connectSignal('RegistrationInfo', Lang.bind(this, function(proxy, sender, [status, code, name]) {
|
||||||
this.operator_name = this._findOperatorName(name, code);
|
this.operator_name = this._findOperatorName(name, code);
|
||||||
this.emit('notify::operator-name');
|
this.emit('notify::operator-name');
|
||||||
}));
|
}));
|
||||||
@ -146,21 +154,19 @@ ModemGsm.prototype = {
|
|||||||
|
|
||||||
return name3 || name2 || null;
|
return name3 || name2 || null;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(ModemGsm.prototype);
|
Signals.addSignalMethods(ModemGsm.prototype);
|
||||||
|
|
||||||
function ModemCdma() {
|
const ModemCdma = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ModemCdma',
|
||||||
}
|
|
||||||
|
|
||||||
ModemCdma.prototype = {
|
|
||||||
_init: function(path) {
|
_init: function(path) {
|
||||||
this._proxy = new ModemCdmaProxy(DBus.system, 'org.freedesktop.ModemManager', path);
|
this._proxy = new ModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path);
|
||||||
|
|
||||||
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, quality) {
|
this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, sender, params) {
|
||||||
this.signal_quality = quality;
|
this.signal_quality = params[0];
|
||||||
this.emit('notify::signal-quality');
|
this.emit('notify::signal-quality');
|
||||||
|
|
||||||
// receiving this signal means the device got activated
|
// receiving this signal means the device got activated
|
||||||
@ -221,5 +227,5 @@ ModemCdma.prototype = {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ModemCdma.prototype);
|
Signals.addSignalMethods(ModemCdma.prototype);
|
||||||
|
@ -1,53 +1,48 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
|
||||||
const ScreenSaverIface = {
|
const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
|
||||||
name: 'org.gnome.ScreenSaver',
|
<method name="GetActive">
|
||||||
methods: [{ name: 'GetActive',
|
<arg type="b" direction="out" />
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'b' },
|
<method name="Lock" />
|
||||||
{ name: 'Lock',
|
<method name="SetActive">
|
||||||
inSignature: '' },
|
<arg type="b" direction="in" />
|
||||||
{ name: 'SetActive',
|
</method>
|
||||||
inSignature: 'b' }],
|
<signal name="ActiveChanged">
|
||||||
signals: [{ name: 'ActiveChanged',
|
<arg type="b" direction="out" />
|
||||||
inSignature: 'b' }]
|
</signal>
|
||||||
};
|
</interface>;
|
||||||
|
|
||||||
|
const ScreenSaverInfo = Gio.DBusInterfaceInfo.new_for_xml(ScreenSaverIface);
|
||||||
|
|
||||||
function ScreenSaverProxy() {
|
function ScreenSaverProxy() {
|
||||||
this._init();
|
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||||
|
g_interface_name: ScreenSaverInfo.name,
|
||||||
|
g_interface_info: ScreenSaverInfo,
|
||||||
|
g_name: 'org.gnome.ScreenSaver',
|
||||||
|
g_object_path: '/org/gnome/ScreenSaver',
|
||||||
|
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||||
|
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||||
|
self.init(null);
|
||||||
|
self.screenSaverActive = false;
|
||||||
|
|
||||||
|
self.connectSignal('ActiveChanged', function(proxy, senderName, [isActive]) {
|
||||||
|
self.screenSaverActive = isActive;
|
||||||
|
});
|
||||||
|
self.connect('notify::g-name-owner', function() {
|
||||||
|
if (self.g_name_owner) {
|
||||||
|
self.GetActiveRemote(function(result, excp) {
|
||||||
|
if (result) {
|
||||||
|
let [isActive] = result;
|
||||||
|
self.screenSaverActive = isActive;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else
|
||||||
|
self.screenSaverActive = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenSaverProxy.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.session.proxifyObject(this,
|
|
||||||
'org.gnome.ScreenSaver',
|
|
||||||
'/org/gnome/ScreenSaver');
|
|
||||||
|
|
||||||
DBus.session.watch_name('org.gnome.ScreenSaver',
|
|
||||||
false, // do not launch a name-owner if none exists
|
|
||||||
Lang.bind(this, this._onSSAppeared),
|
|
||||||
Lang.bind(this, this._onSSVanished));
|
|
||||||
|
|
||||||
this.screenSaverActive = false;
|
|
||||||
this.connect('ActiveChanged',
|
|
||||||
Lang.bind(this, this._onActiveChanged));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onSSAppeared: function(owner) {
|
|
||||||
this.GetActiveRemote(Lang.bind(this, function(isActive) {
|
|
||||||
this.screenSaverActive = isActive;
|
|
||||||
}))
|
|
||||||
},
|
|
||||||
|
|
||||||
_onSSVanished: function(oldOwner) {
|
|
||||||
this.screenSaverActive = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onActiveChanged: function(object, isActive) {
|
|
||||||
this.screenSaverActive = isActive;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(ScreenSaverProxy.prototype, ScreenSaverIface);
|
|
||||||
|
@ -43,11 +43,9 @@ function primaryModifier(mask) {
|
|||||||
return primary;
|
return primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
function AltTabPopup() {
|
const AltTabPopup = new Lang.Class({
|
||||||
this._init();
|
Name: 'AltTabPopup',
|
||||||
}
|
|
||||||
|
|
||||||
AltTabPopup.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new Shell.GenericContainer({ name: 'altTabPopup',
|
this.actor = new Shell.GenericContainer({ name: 'altTabPopup',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
@ -170,8 +168,12 @@ AltTabPopup.prototype = {
|
|||||||
if (localApps.length == 0 && otherApps.length == 0)
|
if (localApps.length == 0 && otherApps.length == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Main.pushModal(this.actor))
|
if (!Main.pushModal(this.actor)) {
|
||||||
return false;
|
// Probably someone else has a pointer grab, try again with keyboard only
|
||||||
|
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
this._haveModal = true;
|
this._haveModal = true;
|
||||||
this._modifierMask = primaryModifier(mask);
|
this._modifierMask = primaryModifier(mask);
|
||||||
|
|
||||||
@ -195,7 +197,7 @@ AltTabPopup.prototype = {
|
|||||||
this.actor.get_allocation_box();
|
this.actor.get_allocation_box();
|
||||||
|
|
||||||
// Make the initial selection
|
// Make the initial selection
|
||||||
if (binding == 'switch_group') {
|
if (binding == 'switch-group') {
|
||||||
if (backward) {
|
if (backward) {
|
||||||
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
||||||
} else {
|
} else {
|
||||||
@ -204,9 +206,9 @@ AltTabPopup.prototype = {
|
|||||||
else
|
else
|
||||||
this._select(0, 0);
|
this._select(0, 0);
|
||||||
}
|
}
|
||||||
} else if (binding == 'switch_group_backward') {
|
} else if (binding == 'switch-group-backward') {
|
||||||
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
||||||
} else if (binding == 'switch_windows_backward') {
|
} else if (binding == 'switch-windows-backward') {
|
||||||
this._select(this._appIcons.length - 1);
|
this._select(this._appIcons.length - 1);
|
||||||
} else if (this._appIcons.length == 1) {
|
} else if (this._appIcons.length == 1) {
|
||||||
this._select(0);
|
this._select(0);
|
||||||
@ -536,13 +538,11 @@ AltTabPopup.prototype = {
|
|||||||
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
|
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function SwitcherList(squareItems) {
|
const SwitcherList = new Lang.Class({
|
||||||
this._init(squareItems);
|
Name: 'SwitcherList',
|
||||||
}
|
|
||||||
|
|
||||||
SwitcherList.prototype = {
|
|
||||||
_init : function(squareItems) {
|
_init : function(squareItems) {
|
||||||
this.actor = new Shell.GenericContainer({ style_class: 'switcher-list' });
|
this.actor = new Shell.GenericContainer({ style_class: 'switcher-list' });
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
@ -847,15 +847,13 @@ SwitcherList.prototype = {
|
|||||||
// Clip the area for scrolling
|
// Clip the area for scrolling
|
||||||
this._clipBin.set_clip(0, -topPadding, (this.actor.allocation.x2 - this.actor.allocation.x1) - leftPadding - rightPadding, this.actor.height + bottomPadding);
|
this._clipBin.set_clip(0, -topPadding, (this.actor.allocation.x2 - this.actor.allocation.x1) - leftPadding - rightPadding, this.actor.height + bottomPadding);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(SwitcherList.prototype);
|
Signals.addSignalMethods(SwitcherList.prototype);
|
||||||
|
|
||||||
function AppIcon(app) {
|
const AppIcon = new Lang.Class({
|
||||||
this._init(app);
|
Name: 'AppIcon',
|
||||||
}
|
|
||||||
|
|
||||||
AppIcon.prototype = {
|
|
||||||
_init: function(app) {
|
_init: function(app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||||
@ -873,17 +871,14 @@ AppIcon.prototype = {
|
|||||||
this._iconBin.set_size(size, size);
|
this._iconBin.set_size(size, size);
|
||||||
this._iconBin.child = this.icon;
|
this._iconBin.child = this.icon;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function AppSwitcher() {
|
const AppSwitcher = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'AppSwitcher',
|
||||||
}
|
Extends: SwitcherList,
|
||||||
|
|
||||||
AppSwitcher.prototype = {
|
|
||||||
__proto__ : SwitcherList.prototype,
|
|
||||||
|
|
||||||
_init : function(localApps, otherApps, altTabPopup) {
|
_init : function(localApps, otherApps, altTabPopup) {
|
||||||
SwitcherList.prototype._init.call(this, true);
|
this.parent(true);
|
||||||
|
|
||||||
// Construct the AppIcons, add to the popup
|
// Construct the AppIcons, add to the popup
|
||||||
let activeWorkspace = global.screen.get_active_workspace();
|
let activeWorkspace = global.screen.get_active_workspace();
|
||||||
@ -962,7 +957,7 @@ AppSwitcher.prototype = {
|
|||||||
|
|
||||||
_allocate: function (actor, box, flags) {
|
_allocate: function (actor, box, flags) {
|
||||||
// Allocate the main list items
|
// Allocate the main list items
|
||||||
SwitcherList.prototype._allocate.call(this, actor, box, flags);
|
this.parent(actor, box, flags);
|
||||||
|
|
||||||
let arrowHeight = Math.floor(this.actor.get_theme_node().get_padding(St.Side.BOTTOM) / 3);
|
let arrowHeight = Math.floor(this.actor.get_theme_node().get_padding(St.Side.BOTTOM) / 3);
|
||||||
let arrowWidth = arrowHeight * 2;
|
let arrowWidth = arrowHeight * 2;
|
||||||
@ -1017,7 +1012,7 @@ AppSwitcher.prototype = {
|
|||||||
this._arrows[this._curApp].remove_style_pseudo_class('highlighted');
|
this._arrows[this._curApp].remove_style_pseudo_class('highlighted');
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitcherList.prototype.highlight.call(this, n, justOutline);
|
this.parent(n, justOutline);
|
||||||
this._curApp = n;
|
this._curApp = n;
|
||||||
|
|
||||||
if (this._curApp != -1) {
|
if (this._curApp != -1) {
|
||||||
@ -1041,17 +1036,14 @@ AppSwitcher.prototype = {
|
|||||||
if (appIcon.cachedWindows.length == 1)
|
if (appIcon.cachedWindows.length == 1)
|
||||||
arrow.hide();
|
arrow.hide();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function ThumbnailList(windows) {
|
const ThumbnailList = new Lang.Class({
|
||||||
this._init(windows);
|
Name: 'ThumbnailList',
|
||||||
}
|
Extends: SwitcherList,
|
||||||
|
|
||||||
ThumbnailList.prototype = {
|
|
||||||
__proto__ : SwitcherList.prototype,
|
|
||||||
|
|
||||||
_init : function(windows) {
|
_init : function(windows) {
|
||||||
SwitcherList.prototype._init.call(this);
|
this.parent(false);
|
||||||
|
|
||||||
let activeWorkspace = global.screen.get_active_workspace();
|
let activeWorkspace = global.screen.get_active_workspace();
|
||||||
|
|
||||||
@ -1129,7 +1121,7 @@ ThumbnailList.prototype = {
|
|||||||
// Make sure we only do this once
|
// Make sure we only do this once
|
||||||
this._thumbnailBins = new Array();
|
this._thumbnailBins = new Array();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function _drawArrow(area, side) {
|
function _drawArrow(area, side) {
|
||||||
let themeNode = area.get_theme_node();
|
let themeNode = area.get_theme_node();
|
||||||
|
@ -26,11 +26,9 @@ const MAX_APPLICATION_WORK_MILLIS = 75;
|
|||||||
const MENU_POPUP_TIMEOUT = 600;
|
const MENU_POPUP_TIMEOUT = 600;
|
||||||
const SCROLL_TIME = 0.1;
|
const SCROLL_TIME = 0.1;
|
||||||
|
|
||||||
function AlphabeticalView() {
|
const AlphabeticalView = new Lang.Class({
|
||||||
this._init();
|
Name: 'AlphabeticalView',
|
||||||
}
|
|
||||||
|
|
||||||
AlphabeticalView.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._grid = new IconGrid.IconGrid({ xAlign: St.Align.START });
|
this._grid = new IconGrid.IconGrid({ xAlign: St.Align.START });
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
@ -130,13 +128,11 @@ AlphabeticalView.prototype = {
|
|||||||
this._addApp(app);
|
this._addApp(app);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function ViewByCategories() {
|
const ViewByCategories = new Lang.Class({
|
||||||
this._init();
|
Name: 'ViewByCategories',
|
||||||
}
|
|
||||||
|
|
||||||
ViewByCategories.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
this.actor = new St.BoxLayout({ style_class: 'all-app' });
|
this.actor = new St.BoxLayout({ style_class: 'all-app' });
|
||||||
@ -281,16 +277,14 @@ ViewByCategories.prototype = {
|
|||||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/* This class represents a display containing a collection of application items.
|
/* This class represents a display containing a collection of application items.
|
||||||
* The applications are sorted based on their name.
|
* The applications are sorted based on their name.
|
||||||
*/
|
*/
|
||||||
function AllAppDisplay() {
|
const AllAppDisplay = new Lang.Class({
|
||||||
this._init();
|
Name: 'AllAppDisplay',
|
||||||
}
|
|
||||||
|
|
||||||
AllAppDisplay.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._appSystem = Shell.AppSystem.get_default();
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
|
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
|
||||||
@ -306,17 +300,15 @@ AllAppDisplay.prototype = {
|
|||||||
_redisplay: function() {
|
_redisplay: function() {
|
||||||
this._appView.refresh();
|
this._appView.refresh();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function AppSearchProvider() {
|
const AppSearchProvider = new Lang.Class({
|
||||||
this._init();
|
Name: 'AppSearchProvider',
|
||||||
}
|
Extends: Search.SearchProvider,
|
||||||
|
|
||||||
AppSearchProvider.prototype = {
|
|
||||||
__proto__: Search.SearchProvider.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Search.SearchProvider.prototype._init.call(this, _("APPLICATIONS"));
|
this.parent(_("APPLICATIONS"));
|
||||||
|
|
||||||
this._appSys = Shell.AppSystem.get_default();
|
this._appSys = Shell.AppSystem.get_default();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -364,17 +356,15 @@ AppSearchProvider.prototype = {
|
|||||||
let icon = new AppWellIcon(app);
|
let icon = new AppWellIcon(app);
|
||||||
return icon.actor;
|
return icon.actor;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function SettingsSearchProvider() {
|
const SettingsSearchProvider = new Lang.Class({
|
||||||
this._init();
|
Name: 'SettingsSearchProvider',
|
||||||
}
|
Extends: Search.SearchProvider,
|
||||||
|
|
||||||
SettingsSearchProvider.prototype = {
|
|
||||||
__proto__: Search.SearchProvider.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Search.SearchProvider.prototype._init.call(this, _("SETTINGS"));
|
this.parent(_("SETTINGS"));
|
||||||
|
|
||||||
this._appSys = Shell.AppSystem.get_default();
|
this._appSys = Shell.AppSystem.get_default();
|
||||||
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
|
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
|
||||||
},
|
},
|
||||||
@ -412,35 +402,28 @@ SettingsSearchProvider.prototype = {
|
|||||||
let icon = new AppWellIcon(app);
|
let icon = new AppWellIcon(app);
|
||||||
return icon.actor;
|
return icon.actor;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function AppIcon(app, params) {
|
const AppIcon = new Lang.Class({
|
||||||
this._init(app, params);
|
Name: 'AppIcon',
|
||||||
}
|
Extends: IconGrid.BaseIcon,
|
||||||
|
|
||||||
AppIcon.prototype = {
|
|
||||||
__proto__: IconGrid.BaseIcon.prototype,
|
|
||||||
|
|
||||||
_init : function(app, params) {
|
_init : function(app, params) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
|
||||||
let label = this.app.get_name();
|
let label = this.app.get_name();
|
||||||
|
|
||||||
IconGrid.BaseIcon.prototype._init.call(this,
|
this.parent(label, params);
|
||||||
label,
|
|
||||||
params);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
createIcon: function(iconSize) {
|
createIcon: function(iconSize) {
|
||||||
return this.app.create_icon_texture(iconSize);
|
return this.app.create_icon_texture(iconSize);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function AppWellIcon(app, iconParams, onActivateOverride) {
|
const AppWellIcon = new Lang.Class({
|
||||||
this._init(app, iconParams, onActivateOverride);
|
Name: 'AppWellIcon',
|
||||||
}
|
|
||||||
|
|
||||||
AppWellIcon.prototype = {
|
|
||||||
_init : function(app, iconParams, onActivateOverride) {
|
_init : function(app, iconParams, onActivateOverride) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.actor = new St.Button({ style_class: 'app-well-app',
|
this.actor = new St.Button({ style_class: 'app-well-app',
|
||||||
@ -620,22 +603,19 @@ AppWellIcon.prototype = {
|
|||||||
getDragActorSource: function() {
|
getDragActorSource: function() {
|
||||||
return this.icon.icon;
|
return this.icon.icon;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(AppWellIcon.prototype);
|
Signals.addSignalMethods(AppWellIcon.prototype);
|
||||||
|
|
||||||
function AppIconMenu(source) {
|
const AppIconMenu = new Lang.Class({
|
||||||
this._init(source);
|
Name: 'AppIconMenu',
|
||||||
}
|
Extends: PopupMenu.PopupMenu,
|
||||||
|
|
||||||
AppIconMenu.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupMenu.prototype,
|
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
let side = St.Side.LEFT;
|
let side = St.Side.LEFT;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||||
side = St.Side.RIGHT;
|
side = St.Side.RIGHT;
|
||||||
|
|
||||||
PopupMenu.PopupMenu.prototype._init.call(this, source.actor, 0.5, side);
|
this.parent(source.actor, 0.5, side);
|
||||||
|
|
||||||
// We want to keep the item hovered while the menu is up
|
// We want to keep the item hovered while the menu is up
|
||||||
this.blockSourceEvents = true;
|
this.blockSourceEvents = true;
|
||||||
@ -723,5 +703,5 @@ AppIconMenu.prototype = {
|
|||||||
}
|
}
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(AppIconMenu.prototype);
|
Signals.addSignalMethods(AppIconMenu.prototype);
|
||||||
|
@ -6,11 +6,9 @@ const Signals = imports.signals;
|
|||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
function AppFavorites() {
|
const AppFavorites = new Lang.Class({
|
||||||
this._init();
|
Name: 'AppFavorites',
|
||||||
}
|
|
||||||
|
|
||||||
AppFavorites.prototype = {
|
|
||||||
FAVORITE_APPS_KEY: 'favorite-apps',
|
FAVORITE_APPS_KEY: 'favorite-apps',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
@ -122,7 +120,7 @@ AppFavorites.prototype = {
|
|||||||
this._addFavorite(appId, pos);
|
this._addFavorite(appId, pos);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(AppFavorites.prototype);
|
Signals.addSignalMethods(AppFavorites.prototype);
|
||||||
|
|
||||||
var appFavoritesInstance = null;
|
var appFavoritesInstance = null;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
@ -16,69 +15,58 @@ const SETTING_ENABLE_AUTOMOUNT = 'automount';
|
|||||||
|
|
||||||
const AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
|
const AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
|
||||||
|
|
||||||
const ConsoleKitSessionIface = {
|
const ConsoleKitSessionIface = <interface name="org.freedesktop.ConsoleKit.Session">
|
||||||
name: 'org.freedesktop.ConsoleKit.Session',
|
<method name="IsActive">
|
||||||
methods: [{ name: 'IsActive',
|
<arg type="b" direction="out" />
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'b' }],
|
<signal name="ActiveChanged">
|
||||||
signals: [{ name: 'ActiveChanged',
|
<arg type="b" direction="out" />
|
||||||
inSignature: 'b' }]
|
</signal>
|
||||||
};
|
</interface>;
|
||||||
|
|
||||||
const ConsoleKitSessionProxy = DBus.makeProxyClass(ConsoleKitSessionIface);
|
const ConsoleKitSessionProxy = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
|
||||||
|
|
||||||
const ConsoleKitManagerIface = {
|
const ConsoleKitManagerIface = <interface name="org.freedesktop.ConsoleKit.Manager">
|
||||||
name: 'org.freedesktop.ConsoleKit.Manager',
|
<method name="GetCurrentSession">
|
||||||
methods: [{ name: 'GetCurrentSession',
|
<arg type="o" direction="out" />
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'o' }]
|
</interface>;
|
||||||
};
|
|
||||||
|
const ConsoleKitManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ConsoleKitManagerIface);
|
||||||
|
|
||||||
function ConsoleKitManager() {
|
function ConsoleKitManager() {
|
||||||
this._init();
|
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
|
||||||
};
|
g_interface_name: ConsoleKitManagerInfo.name,
|
||||||
|
g_interface_info: ConsoleKitManagerInfo,
|
||||||
|
g_name: 'org.freedesktop.ConsoleKit',
|
||||||
|
g_object_path: '/org/freedesktop/ConsoleKit/Manager',
|
||||||
|
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||||
|
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||||
|
|
||||||
ConsoleKitManager.prototype = {
|
self.connect('notify::g-name-owner', function() {
|
||||||
_init: function() {
|
if (self.g_name_owner) {
|
||||||
this.sessionActive = true;
|
self.GetCurrentSessionRemote(function([session]) {
|
||||||
|
self._ckSession = new ConsoleKitSessionProxy(Gio.DBus.system, 'org.freedesktop.ConsoleKit', session);
|
||||||
|
|
||||||
DBus.system.proxifyObject(this,
|
self._ckSession.connectSignal('ActiveChanged', function(object, senderName, [isActive]) {
|
||||||
'org.freedesktop.ConsoleKit',
|
self.sessionActive = isActive;
|
||||||
'/org/freedesktop/ConsoleKit/Manager');
|
});
|
||||||
|
self._ckSession.IsActiveRemote(function([isActive]) {
|
||||||
|
self.sessionActive = isActive;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.sessionActive = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
DBus.system.watch_name('org.freedesktop.ConsoleKit',
|
self.init(null);
|
||||||
false, // do not launch a name-owner if none exists
|
return self;
|
||||||
Lang.bind(this, this._onManagerAppeared),
|
|
||||||
Lang.bind(this, this._onManagerVanished));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onManagerAppeared: function(owner) {
|
|
||||||
this.GetCurrentSessionRemote(Lang.bind(this, this._onCurrentSession));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onManagerVanished: function(oldOwner) {
|
|
||||||
this.sessionActive = true;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onCurrentSession: function(session) {
|
|
||||||
this._ckSession = new ConsoleKitSessionProxy(DBus.system, 'org.freedesktop.ConsoleKit', session);
|
|
||||||
|
|
||||||
this._ckSession.connect
|
|
||||||
('ActiveChanged', Lang.bind(this, function(object, isActive) {
|
|
||||||
this.sessionActive = isActive;
|
|
||||||
}));
|
|
||||||
this._ckSession.IsActiveRemote(Lang.bind(this, function(isActive) {
|
|
||||||
this.sessionActive = isActive;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(ConsoleKitManager.prototype, ConsoleKitManagerIface);
|
|
||||||
|
|
||||||
function AutomountManager() {
|
|
||||||
this._init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AutomountManager.prototype = {
|
const AutomountManager = new Lang.Class({
|
||||||
|
Name: 'AutomountManager',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||||
this._volumeQueue = [];
|
this._volumeQueue = [];
|
||||||
@ -86,9 +74,8 @@ AutomountManager.prototype = {
|
|||||||
this.ckListener = new ConsoleKitManager();
|
this.ckListener = new ConsoleKitManager();
|
||||||
|
|
||||||
this._ssProxy = new ScreenSaver.ScreenSaverProxy();
|
this._ssProxy = new ScreenSaver.ScreenSaverProxy();
|
||||||
this._ssProxy.connect('ActiveChanged',
|
this._ssProxy.connectSignal('ActiveChanged',
|
||||||
Lang.bind(this,
|
Lang.bind(this, this._screenSaverActiveChanged));
|
||||||
this._screenSaverActiveChanged));
|
|
||||||
|
|
||||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||||
|
|
||||||
@ -111,7 +98,7 @@ AutomountManager.prototype = {
|
|||||||
Mainloop.idle_add(Lang.bind(this, this._startupMountAll));
|
Mainloop.idle_add(Lang.bind(this, this._startupMountAll));
|
||||||
},
|
},
|
||||||
|
|
||||||
_screenSaverActiveChanged: function(object, isActive) {
|
_screenSaverActiveChanged: function(object, senderName, [isActive]) {
|
||||||
if (!isActive) {
|
if (!isActive) {
|
||||||
this._volumeQueue.forEach(Lang.bind(this, function(volume) {
|
this._volumeQueue.forEach(Lang.bind(this, function(volume) {
|
||||||
this._checkAndMountVolume(volume);
|
this._checkAndMountVolume(volume);
|
||||||
@ -279,4 +266,4 @@ AutomountManager.prototype = {
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
@ -62,31 +61,23 @@ function startAppForMount(app, mount) {
|
|||||||
|
|
||||||
/******************************************/
|
/******************************************/
|
||||||
|
|
||||||
const HotplugSnifferIface = {
|
const HotplugSnifferIface = <interface name="org.gnome.Shell.HotplugSniffer">
|
||||||
name: 'org.gnome.Shell.HotplugSniffer',
|
<method name="SniffURI">
|
||||||
methods: [{ name: 'SniffURI',
|
<arg type="s" direction="in" />
|
||||||
inSignature: 's',
|
<arg type="as" direction="out" />
|
||||||
outSignature: 'as' }]
|
</method>
|
||||||
};
|
</interface>;
|
||||||
|
|
||||||
const HotplugSniffer = function() {
|
const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface);
|
||||||
this._init();
|
function HotplugSniffer() {
|
||||||
};
|
return new HotplugSnifferProxy(Gio.DBus.session,
|
||||||
|
|
||||||
HotplugSniffer.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.session.proxifyObject(this,
|
|
||||||
'org.gnome.Shell.HotplugSniffer',
|
'org.gnome.Shell.HotplugSniffer',
|
||||||
'/org/gnome/Shell/HotplugSniffer');
|
'/org/gnome/Shell/HotplugSniffer');
|
||||||
},
|
|
||||||
};
|
|
||||||
DBus.proxifyPrototype(HotplugSniffer.prototype, HotplugSnifferIface);
|
|
||||||
|
|
||||||
function ContentTypeDiscoverer(callback) {
|
|
||||||
this._init(callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentTypeDiscoverer.prototype = {
|
const ContentTypeDiscoverer = new Lang.Class({
|
||||||
|
Name: 'ContentTypeDiscoverer',
|
||||||
|
|
||||||
_init: function(callback) {
|
_init: function(callback) {
|
||||||
this._callback = callback;
|
this._callback = callback;
|
||||||
},
|
},
|
||||||
@ -114,9 +105,8 @@ ContentTypeDiscoverer.prototype = {
|
|||||||
let root = mount.get_root();
|
let root = mount.get_root();
|
||||||
|
|
||||||
let hotplugSniffer = new HotplugSniffer();
|
let hotplugSniffer = new HotplugSniffer();
|
||||||
hotplugSniffer.SniffURIRemote
|
hotplugSniffer.SniffURIRemote(root.get_uri(),
|
||||||
(root.get_uri(), DBus.CALL_FLAG_START,
|
Lang.bind(this, function([contentTypes]) {
|
||||||
Lang.bind(this, function(contentTypes) {
|
|
||||||
this._emitCallback(mount, contentTypes);
|
this._emitCallback(mount, contentTypes);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -144,13 +134,11 @@ ContentTypeDiscoverer.prototype = {
|
|||||||
|
|
||||||
this._callback(mount, apps, contentTypes);
|
this._callback(mount, apps, contentTypes);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunManager() {
|
const AutorunManager = new Lang.Class({
|
||||||
this._init();
|
Name: 'AutorunManager',
|
||||||
}
|
|
||||||
|
|
||||||
AutorunManager.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||||
|
|
||||||
@ -267,17 +255,14 @@ AutorunManager.prototype = {
|
|||||||
+ ': ' + e.toString());
|
+ ': ' + e.toString());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunResidentSource() {
|
const AutorunResidentSource = new Lang.Class({
|
||||||
this._init();
|
Name: 'AutorunResidentSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
AutorunResidentSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
MessageTray.Source.prototype._init.call(this, _("Removable Devices"));
|
this.parent(_("Removable Devices"));
|
||||||
|
|
||||||
this._mounts = [];
|
this._mounts = [];
|
||||||
|
|
||||||
@ -332,19 +317,14 @@ AutorunResidentSource.prototype = {
|
|||||||
icon_type: St.IconType.FULLCOLOR,
|
icon_type: St.IconType.FULLCOLOR,
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunResidentNotification(source) {
|
const AutorunResidentNotification = new Lang.Class({
|
||||||
this._init(source);
|
Name: 'AutorunResidentNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
AutorunResidentNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source,
|
this.parent(source, source.title, null, { customContent: true });
|
||||||
source.title, null,
|
|
||||||
{ customContent: true });
|
|
||||||
|
|
||||||
// set the notification as resident
|
// set the notification as resident
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
@ -418,13 +398,11 @@ AutorunResidentNotification.prototype = {
|
|||||||
|
|
||||||
return item;
|
return item;
|
||||||
},
|
},
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunTransientDispatcher() {
|
const AutorunTransientDispatcher = new Lang.Class({
|
||||||
this._init();
|
Name: 'AutorunTransientDispatcher',
|
||||||
}
|
|
||||||
|
|
||||||
AutorunTransientDispatcher.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._sources = [];
|
this._sources = [];
|
||||||
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||||
@ -515,17 +493,14 @@ AutorunTransientDispatcher.prototype = {
|
|||||||
// destroy the notification source
|
// destroy the notification source
|
||||||
source.destroy();
|
source.destroy();
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunTransientSource(mount, apps) {
|
const AutorunTransientSource = new Lang.Class({
|
||||||
this._init(mount, apps);
|
Name: 'AutorunTransientSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
AutorunTransientSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(mount, apps) {
|
_init: function(mount, apps) {
|
||||||
MessageTray.Source.prototype._init.call(this, mount.get_name());
|
this.parent(mount.get_name());
|
||||||
|
|
||||||
this.mount = mount;
|
this.mount = mount;
|
||||||
this.apps = apps;
|
this.apps = apps;
|
||||||
@ -542,19 +517,14 @@ AutorunTransientSource.prototype = {
|
|||||||
return new St.Icon({ gicon: this.mount.get_icon(),
|
return new St.Icon({ gicon: this.mount.get_icon(),
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function AutorunTransientNotification(source) {
|
const AutorunTransientNotification = new Lang.Class({
|
||||||
this._init(source);
|
Name: 'AutorunTransientNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
AutorunTransientNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source,
|
this.parent(source, source.title, null, { customContent: true });
|
||||||
source.title, null,
|
|
||||||
{ customContent: true });
|
|
||||||
|
|
||||||
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
|
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
@ -629,5 +599,5 @@ AutorunTransientNotification.prototype = {
|
|||||||
|
|
||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
|
@ -21,11 +21,9 @@ const POPUP_ANIMATION_TIME = 0.15;
|
|||||||
* placed. The arrow position may be controlled via setArrowOrigin().
|
* placed. The arrow position may be controlled via setArrowOrigin().
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function BoxPointer(side, binProperties) {
|
const BoxPointer = new Lang.Class({
|
||||||
this._init(side, binProperties);
|
Name: 'BoxPointer',
|
||||||
}
|
|
||||||
|
|
||||||
BoxPointer.prototype = {
|
|
||||||
_init: function(arrowSide, binProperties) {
|
_init: function(arrowSide, binProperties) {
|
||||||
this._arrowSide = arrowSide;
|
this._arrowSide = arrowSide;
|
||||||
this._arrowOrigin = 0;
|
this._arrowOrigin = 0;
|
||||||
@ -452,4 +450,4 @@ BoxPointer.prototype = {
|
|||||||
get opacity() {
|
get opacity() {
|
||||||
return this.actor.opacity;
|
return this.actor.opacity;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -156,28 +155,24 @@ function _getEventDayAbbreviation(dayNumber) {
|
|||||||
|
|
||||||
// Abstraction for an appointment/event in a calendar
|
// Abstraction for an appointment/event in a calendar
|
||||||
|
|
||||||
function CalendarEvent(date, end, summary, allDay) {
|
const CalendarEvent = new Lang.Class({
|
||||||
this._init(date, end, summary, allDay);
|
Name: 'CalendarEvent',
|
||||||
}
|
|
||||||
|
|
||||||
CalendarEvent.prototype = {
|
|
||||||
_init: function(date, end, summary, allDay) {
|
_init: function(date, end, summary, allDay) {
|
||||||
this.date = date;
|
this.date = date;
|
||||||
this.end = end;
|
this.end = end;
|
||||||
this.summary = summary;
|
this.summary = summary;
|
||||||
this.allDay = allDay;
|
this.allDay = allDay;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// Interface for appointments/events - e.g. the contents of a calendar
|
// Interface for appointments/events - e.g. the contents of a calendar
|
||||||
//
|
//
|
||||||
|
|
||||||
// First, an implementation with no events
|
// First, an implementation with no events
|
||||||
function EmptyEventSource() {
|
const EmptyEventSource = new Lang.Class({
|
||||||
this._init();
|
Name: 'EmptyEventSource',
|
||||||
}
|
|
||||||
|
|
||||||
EmptyEventSource.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -192,33 +187,32 @@ EmptyEventSource.prototype = {
|
|||||||
hasEvents: function(day) {
|
hasEvents: function(day) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(EmptyEventSource.prototype);
|
Signals.addSignalMethods(EmptyEventSource.prototype);
|
||||||
|
|
||||||
const CalendarServerIface = {
|
const CalendarServerIface = <interface name="org.gnome.Shell.CalendarServer">
|
||||||
name: 'org.gnome.Shell.CalendarServer',
|
<method name="GetEvents">
|
||||||
methods: [{ name: 'GetEvents',
|
<arg type="x" direction="in" />
|
||||||
inSignature: 'xxb',
|
<arg type="x" direction="in" />
|
||||||
outSignature: 'a(sssbxxa{sv})' }],
|
<arg type="b" direction="in" />
|
||||||
signals: [{ name: 'Changed',
|
<arg type="a(sssbxxa{sv})" direction="out" />
|
||||||
inSignature: '' }]
|
</method>
|
||||||
};
|
<signal name="Changed" />
|
||||||
|
</interface>;
|
||||||
|
|
||||||
const CalendarServer = function () {
|
const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface);
|
||||||
this._init();
|
|
||||||
};
|
|
||||||
|
|
||||||
CalendarServer.prototype = {
|
function CalendarServer() {
|
||||||
_init: function() {
|
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||||
DBus.session.proxifyObject(this, 'org.gnome.Shell.CalendarServer', '/org/gnome/Shell/CalendarServer');
|
g_interface_name: CalendarServerInfo.name,
|
||||||
}
|
g_interface_info: CalendarServerInfo,
|
||||||
};
|
g_name: 'org.gnome.Shell.CalendarServer',
|
||||||
|
g_object_path: '/org/gnome/Shell/CalendarServer',
|
||||||
|
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||||
|
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||||
|
|
||||||
DBus.proxifyPrototype(CalendarServer.prototype, CalendarServerIface);
|
self.init(null);
|
||||||
|
return self;
|
||||||
// an implementation that reads data from a session bus service
|
|
||||||
function DBusEventSource(owner) {
|
|
||||||
this._init(owner);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _datesEqual(a, b) {
|
function _datesEqual(a, b) {
|
||||||
@ -239,18 +233,22 @@ function _dateIntervalsOverlap(a0, a1, b0, b1)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// an implementation that reads data from a session bus service
|
||||||
|
const DBusEventSource = new Lang.Class({
|
||||||
|
Name: 'DBusEventSource',
|
||||||
|
|
||||||
DBusEventSource.prototype = {
|
_init: function() {
|
||||||
_init: function(owner) {
|
|
||||||
this._resetCache();
|
this._resetCache();
|
||||||
|
|
||||||
this._dbusProxy = new CalendarServer(owner);
|
this._dbusProxy = new CalendarServer();
|
||||||
this._dbusProxy.connect('Changed', Lang.bind(this, this._onChanged));
|
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
|
||||||
|
|
||||||
DBus.session.watch_name('org.gnome.Shell.CalendarServer',
|
this._dbusProxy.connect('notify::g-name-owner', Lang.bind(this, function() {
|
||||||
false, // do not launch a name-owner if none exists
|
if (this._dbusProxy.g_name_owner)
|
||||||
Lang.bind(this, this._onNameAppeared),
|
this._onNameAppeared();
|
||||||
Lang.bind(this, this._onNameVanished));
|
else
|
||||||
|
this._onNameVanished();
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_resetCache: function() {
|
_resetCache: function() {
|
||||||
@ -273,7 +271,7 @@ DBusEventSource.prototype = {
|
|||||||
this._loadEvents(false);
|
this._loadEvents(false);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onEventsReceived: function(appointments) {
|
_onEventsReceived: function([appointments]) {
|
||||||
let newEvents = [];
|
let newEvents = [];
|
||||||
if (appointments != null) {
|
if (appointments != null) {
|
||||||
for (let n = 0; n < appointments.length; n++) {
|
for (let n = 0; n < appointments.length; n++) {
|
||||||
@ -296,9 +294,9 @@ DBusEventSource.prototype = {
|
|||||||
|
|
||||||
_loadEvents: function(forceReload) {
|
_loadEvents: function(forceReload) {
|
||||||
if (this._curRequestBegin && this._curRequestEnd){
|
if (this._curRequestBegin && this._curRequestEnd){
|
||||||
let callFlags = 0;
|
let callFlags = Gio.DBusCallFlags.NO_AUTO_START;
|
||||||
if (forceReload)
|
if (forceReload)
|
||||||
callFlags |= DBus.CALL_FLAG_START;
|
callFlags = Gio.DBusCallFlags.NONE;
|
||||||
this._dbusProxy.GetEventsRemote(this._curRequestBegin.getTime() / 1000,
|
this._dbusProxy.GetEventsRemote(this._curRequestBegin.getTime() / 1000,
|
||||||
this._curRequestEnd.getTime() / 1000,
|
this._curRequestEnd.getTime() / 1000,
|
||||||
forceReload,
|
forceReload,
|
||||||
@ -339,17 +337,15 @@ DBusEventSource.prototype = {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(DBusEventSource.prototype);
|
Signals.addSignalMethods(DBusEventSource.prototype);
|
||||||
|
|
||||||
// Calendar:
|
// Calendar:
|
||||||
// @eventSource: is an object implementing the EventSource API, e.g. the
|
// @eventSource: is an object implementing the EventSource API, e.g. the
|
||||||
// requestRange(), getEvents(), hasEvents() methods and the ::changed signal.
|
// requestRange(), getEvents(), hasEvents() methods and the ::changed signal.
|
||||||
function Calendar(eventSource) {
|
const Calendar = new Lang.Class({
|
||||||
this._init(eventSource);
|
Name: 'Calendar',
|
||||||
}
|
|
||||||
|
|
||||||
Calendar.prototype = {
|
|
||||||
_init: function(eventSource) {
|
_init: function(eventSource) {
|
||||||
if (eventSource) {
|
if (eventSource) {
|
||||||
this._eventSource = eventSource;
|
this._eventSource = eventSource;
|
||||||
@ -615,15 +611,13 @@ Calendar.prototype = {
|
|||||||
if (this._eventSource)
|
if (this._eventSource)
|
||||||
this._eventSource.requestRange(beginDate, iter, forceReload);
|
this._eventSource.requestRange(beginDate, iter, forceReload);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(Calendar.prototype);
|
Signals.addSignalMethods(Calendar.prototype);
|
||||||
|
|
||||||
function EventsList(eventSource) {
|
const EventsList = new Lang.Class({
|
||||||
this._init(eventSource);
|
Name: 'EventsList',
|
||||||
}
|
|
||||||
|
|
||||||
EventsList.prototype = {
|
|
||||||
_init: function(eventSource) {
|
_init: function(eventSource) {
|
||||||
this.actor = new St.BoxLayout({ vertical: true, style_class: 'events-header-vbox'});
|
this.actor = new St.BoxLayout({ vertical: true, style_class: 'events-header-vbox'});
|
||||||
this._date = new Date();
|
this._date = new Date();
|
||||||
@ -754,4 +748,4 @@ EventsList.prototype = {
|
|||||||
this._showOtherDay(this._date);
|
this._showOtherDay(this._date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -20,11 +20,9 @@ function launchContact(id) {
|
|||||||
|
|
||||||
|
|
||||||
/* This class represents a shown contact search result in the overview */
|
/* This class represents a shown contact search result in the overview */
|
||||||
function Contact(id) {
|
const Contact = new Lang.Class({
|
||||||
this._init(id);
|
Name: 'Contact',
|
||||||
}
|
|
||||||
|
|
||||||
Contact.prototype = {
|
|
||||||
_init: function(id) {
|
_init: function(id) {
|
||||||
this._contactSys = Shell.ContactSystem.get_default();
|
this._contactSys = Shell.ContactSystem.get_default();
|
||||||
this.individual = this._contactSys.get_individual(id);
|
this.individual = this._contactSys.get_individual(id);
|
||||||
@ -131,19 +129,16 @@ Contact.prototype = {
|
|||||||
return tc.load_icon_name(null, 'avatar-default', St.IconType.FULLCOLOR, size);
|
return tc.load_icon_name(null, 'avatar-default', St.IconType.FULLCOLOR, size);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
/* Searches for and returns contacts */
|
/* Searches for and returns contacts */
|
||||||
function ContactSearchProvider() {
|
const ContactSearchProvider = new Lang.Class({
|
||||||
this._init();
|
Name: 'ContactSearchProvider',
|
||||||
}
|
Extends: Search.SearchProvider,
|
||||||
|
|
||||||
ContactSearchProvider.prototype = {
|
|
||||||
__proto__: Search.SearchProvider.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Search.SearchProvider.prototype._init.call(this, _("CONTACTS"));
|
this.parent(_("CONTACTS"));
|
||||||
this._contactSys = Shell.ContactSystem.get_default();
|
this._contactSys = Shell.ContactSystem.get_default();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -182,4 +177,4 @@ ContactSearchProvider.prototype = {
|
|||||||
activateResult: function(id, params) {
|
activateResult: function(id, params) {
|
||||||
launchContact(id);
|
launchContact(id);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -22,11 +22,9 @@ const SortGroup = {
|
|||||||
BOTTOM: 2
|
BOTTOM: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
function CtrlAltTabManager() {
|
const CtrlAltTabManager = new Lang.Class({
|
||||||
this._init();
|
Name: 'CtrlAltTabManager',
|
||||||
}
|
|
||||||
|
|
||||||
CtrlAltTabManager.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._items = [];
|
this._items = [];
|
||||||
this._focusManager = St.FocusManager.get_for_stage(global.stage);
|
this._focusManager = St.FocusManager.get_for_stage(global.stage);
|
||||||
@ -134,17 +132,15 @@ CtrlAltTabManager.prototype = {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function mod(a, b) {
|
function mod(a, b) {
|
||||||
return (a + b) % b;
|
return (a + b) % b;
|
||||||
}
|
}
|
||||||
|
|
||||||
function CtrlAltTabPopup() {
|
const CtrlAltTabPopup = new Lang.Class({
|
||||||
this._init();
|
Name: 'CtrlAltTabPopup',
|
||||||
}
|
|
||||||
|
|
||||||
CtrlAltTabPopup.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new Shell.GenericContainer({ name: 'ctrlAltTabPopup',
|
this.actor = new Shell.GenericContainer({ name: 'ctrlAltTabPopup',
|
||||||
reactive: true });
|
reactive: true });
|
||||||
@ -187,7 +183,7 @@ CtrlAltTabPopup.prototype = {
|
|||||||
let [childMinHeight, childNaturalHeight] = this._switcher.actor.get_preferred_height(primary.width - hPadding);
|
let [childMinHeight, childNaturalHeight] = this._switcher.actor.get_preferred_height(primary.width - hPadding);
|
||||||
let [childMinWidth, childNaturalWidth] = this._switcher.actor.get_preferred_width(childNaturalHeight);
|
let [childMinWidth, childNaturalWidth] = this._switcher.actor.get_preferred_width(childNaturalHeight);
|
||||||
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
|
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
|
||||||
childBox.x2 = Math.min(primary.width - hPadding, childBox.x1 + childNaturalWidth);
|
childBox.x2 = Math.min(primary.x + primary.width - hPadding, childBox.x1 + childNaturalWidth);
|
||||||
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
||||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||||
this._switcher.actor.allocate(childBox, flags);
|
this._switcher.actor.allocate(childBox, flags);
|
||||||
@ -303,17 +299,14 @@ CtrlAltTabPopup.prototype = {
|
|||||||
this._selection = num;
|
this._selection = num;
|
||||||
this._switcher.highlight(num);
|
this._switcher.highlight(num);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function CtrlAltTabSwitcher(items) {
|
const CtrlAltTabSwitcher = new Lang.Class({
|
||||||
this._init(items);
|
Name: 'CtrlAltTabSwitcher',
|
||||||
}
|
Extends: AltTab.SwitcherList,
|
||||||
|
|
||||||
CtrlAltTabSwitcher.prototype = {
|
|
||||||
__proto__ : AltTab.SwitcherList.prototype,
|
|
||||||
|
|
||||||
_init : function(items) {
|
_init : function(items) {
|
||||||
AltTab.SwitcherList.prototype._init.call(this, true);
|
this.parent(true);
|
||||||
|
|
||||||
for (let i = 0; i < items.length; i++)
|
for (let i = 0; i < items.length; i++)
|
||||||
this._addIcon(items[i]);
|
this._addIcon(items[i]);
|
||||||
@ -336,4 +329,4 @@ CtrlAltTabSwitcher.prototype = {
|
|||||||
|
|
||||||
this.addItem(box, text);
|
this.addItem(box, text);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -19,11 +19,9 @@ const DASH_ANIMATION_TIME = 0.2;
|
|||||||
|
|
||||||
// A container like StBin, but taking the child's scale into account
|
// A container like StBin, but taking the child's scale into account
|
||||||
// when requesting a size
|
// when requesting a size
|
||||||
function DashItemContainer() {
|
const DashItemContainer = new Lang.Class({
|
||||||
this._init();
|
Name: 'DashItemContainer',
|
||||||
}
|
|
||||||
|
|
||||||
DashItemContainer.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new Shell.GenericContainer({ style_class: 'dash-item-container' });
|
this.actor = new Shell.GenericContainer({ style_class: 'dash-item-container' });
|
||||||
this.actor.connect('get-preferred-width',
|
this.actor.connect('get-preferred-width',
|
||||||
@ -157,17 +155,14 @@ DashItemContainer.prototype = {
|
|||||||
get childOpacity() {
|
get childOpacity() {
|
||||||
return this._childOpacity;
|
return this._childOpacity;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function RemoveFavoriteIcon() {
|
const RemoveFavoriteIcon = new Lang.Class({
|
||||||
this._init();
|
Name: 'RemoveFavoriteIcon',
|
||||||
}
|
Extends: DashItemContainer,
|
||||||
|
|
||||||
RemoveFavoriteIcon.prototype = {
|
|
||||||
__proto__: DashItemContainer.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
DashItemContainer.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this._iconBin = new St.Bin({ style_class: 'remove-favorite' });
|
this._iconBin = new St.Bin({ style_class: 'remove-favorite' });
|
||||||
this._iconActor = null;
|
this._iconActor = null;
|
||||||
@ -219,28 +214,21 @@ RemoveFavoriteIcon.prototype = {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
const DragPlaceholderItem = new Lang.Class({
|
||||||
function DragPlaceholderItem() {
|
Name: 'DragPlaceholderItem',
|
||||||
this._init();
|
Extends: DashItemContainer,
|
||||||
}
|
|
||||||
|
|
||||||
DragPlaceholderItem.prototype = {
|
|
||||||
__proto__: DashItemContainer.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
DashItemContainer.prototype._init.call(this);
|
this.parent();
|
||||||
this.setChild(new St.Bin({ style_class: 'dash-placeholder' }));
|
this.setChild(new St.Bin({ style_class: 'placeholder' }));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
const Dash = new Lang.Class({
|
||||||
|
Name: 'Dash',
|
||||||
|
|
||||||
function Dash() {
|
|
||||||
this._init();
|
|
||||||
}
|
|
||||||
|
|
||||||
Dash.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._maxHeight = -1;
|
this._maxHeight = -1;
|
||||||
this.iconSize = 64;
|
this.iconSize = 64;
|
||||||
@ -762,6 +750,6 @@ Dash.prototype = {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(Dash.prototype);
|
Signals.addSignalMethods(Dash.prototype);
|
||||||
|
@ -40,12 +40,9 @@ function _onVertSepRepaint (area)
|
|||||||
cr.stroke();
|
cr.stroke();
|
||||||
};
|
};
|
||||||
|
|
||||||
function DateMenuButton() {
|
const DateMenuButton = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'DateMenuButton',
|
||||||
}
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
DateMenuButton.prototype = {
|
|
||||||
__proto__: PanelMenu.Button.prototype,
|
|
||||||
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { showEvents: true });
|
params = Params.parse(params, { showEvents: true });
|
||||||
@ -57,7 +54,7 @@ DateMenuButton.prototype = {
|
|||||||
let menuAlignment = 0.25;
|
let menuAlignment = 0.25;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||||
menuAlignment = 1.0 - menuAlignment;
|
menuAlignment = 1.0 - menuAlignment;
|
||||||
PanelMenu.Button.prototype._init.call(this, menuAlignment);
|
this.parent(menuAlignment);
|
||||||
|
|
||||||
this._clock = new St.Label();
|
this._clock = new St.Label();
|
||||||
this.actor.add_actor(this._clock);
|
this.actor.add_actor(this._clock);
|
||||||
@ -239,4 +236,4 @@ DateMenuButton.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -69,11 +69,9 @@ function removeDragMonitor(monitor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _Draggable(actor, params) {
|
const _Draggable = new Lang.Class({
|
||||||
this._init(actor, params);
|
Name: 'Draggable',
|
||||||
}
|
|
||||||
|
|
||||||
_Draggable.prototype = {
|
|
||||||
_init : function(actor, params) {
|
_init : function(actor, params) {
|
||||||
params = Params.parse(params, { manualMode: false,
|
params = Params.parse(params, { manualMode: false,
|
||||||
restoreOnSuccess: false,
|
restoreOnSuccess: false,
|
||||||
@ -596,7 +594,7 @@ _Draggable.prototype = {
|
|||||||
this._dragActor = undefined;
|
this._dragActor = undefined;
|
||||||
currentDraggable = null;
|
currentDraggable = null;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(_Draggable.prototype);
|
Signals.addSignalMethods(_Draggable.prototype);
|
||||||
|
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DocInfo = imports.misc.docInfo;
|
const DocInfo = imports.misc.docInfo;
|
||||||
|
const Lang = imports.lang;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Search = imports.ui.search;
|
const Search = imports.ui.search;
|
||||||
|
|
||||||
|
const DocSearchProvider = new Lang.Class({
|
||||||
function DocSearchProvider() {
|
Name: 'DocSearchProvider',
|
||||||
this._init();
|
Extends: Search.SearchProvider,
|
||||||
}
|
|
||||||
|
|
||||||
DocSearchProvider.prototype = {
|
|
||||||
__proto__: Search.SearchProvider.prototype,
|
|
||||||
|
|
||||||
_init: function(name) {
|
_init: function(name) {
|
||||||
Search.SearchProvider.prototype._init.call(this, _("RECENT ITEMS"));
|
this.parent(_("RECENT ITEMS"));
|
||||||
this._docManager = DocInfo.getDocManager();
|
this._docManager = DocInfo.getDocManager();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -44,4 +41,4 @@ DocSearchProvider.prototype = {
|
|||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
return this._docManager.subsearch(previousResults, terms);
|
return this._docManager.subsearch(previousResults, terms);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -18,19 +18,19 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const AccountsService = imports.gi.AccountsService;
|
const AccountsService = imports.gi.AccountsService;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Pango = imports.gi.Pango;
|
const Pango = imports.gi.Pango;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
const GnomeSession = imports.misc.gnomeSession
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
const Lightbox = imports.ui.lightbox;
|
const Lightbox = imports.ui.lightbox;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
@ -43,22 +43,23 @@ const _DIALOG_ICON_SIZE = 32;
|
|||||||
|
|
||||||
const GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
|
const GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
|
||||||
|
|
||||||
const EndSessionDialogIface = {
|
const EndSessionDialogIface = <interface name="org.gnome.SessionManager.EndSessionDialog">
|
||||||
name: 'org.gnome.SessionManager.EndSessionDialog',
|
<method name="Open">
|
||||||
methods: [{ name: 'Open',
|
<arg type="u" direction="in" />
|
||||||
inSignature: 'uuuao',
|
<arg type="u" direction="in" />
|
||||||
outSignature: ''
|
<arg type="u" direction="in" />
|
||||||
}
|
<arg type="ao" direction="in" />
|
||||||
],
|
</method>
|
||||||
signals: [{ name: 'Canceled',
|
<signal name="ConfirmedLogout" />
|
||||||
inSignature: '',
|
<signal name="ConfirmedReboot" />
|
||||||
}],
|
<signal name="ConfirmedShutdown" />
|
||||||
properties: []
|
<signal name="Canceled" />
|
||||||
};
|
<signal name="Closed" />
|
||||||
|
</interface>;
|
||||||
|
|
||||||
const logoutDialogContent = {
|
const logoutDialogContent = {
|
||||||
subjectWithUser: _("Log Out %s"),
|
subjectWithUser: C_("title", "Log Out %s"),
|
||||||
subject: _("Log Out"),
|
subject: C_("title", "Log Out"),
|
||||||
inhibitedDescription: _("Click Log Out to quit these applications and log out of the system."),
|
inhibitedDescription: _("Click Log Out to quit these applications and log out of the system."),
|
||||||
uninhibitedDescriptionWithUser: function(user, seconds) {
|
uninhibitedDescriptionWithUser: function(user, seconds) {
|
||||||
return ngettext("%s will be logged out automatically in %d second.",
|
return ngettext("%s will be logged out automatically in %d second.",
|
||||||
@ -72,12 +73,12 @@ const logoutDialogContent = {
|
|||||||
},
|
},
|
||||||
endDescription: _("Logging out of the system."),
|
endDescription: _("Logging out of the system."),
|
||||||
confirmButtons: [{ signal: 'ConfirmedLogout',
|
confirmButtons: [{ signal: 'ConfirmedLogout',
|
||||||
label: _("Log Out") }],
|
label: C_("button", "Log Out") }],
|
||||||
iconStyleClass: 'end-session-dialog-logout-icon'
|
iconStyleClass: 'end-session-dialog-logout-icon'
|
||||||
};
|
};
|
||||||
|
|
||||||
const shutdownDialogContent = {
|
const shutdownDialogContent = {
|
||||||
subject: _("Power Off"),
|
subject: C_("title", "Power Off"),
|
||||||
inhibitedDescription: _("Click Power Off to quit these applications and power off the system."),
|
inhibitedDescription: _("Click Power Off to quit these applications and power off the system."),
|
||||||
uninhibitedDescription: function(seconds) {
|
uninhibitedDescription: function(seconds) {
|
||||||
return ngettext("The system will power off automatically in %d second.",
|
return ngettext("The system will power off automatically in %d second.",
|
||||||
@ -86,15 +87,15 @@ const shutdownDialogContent = {
|
|||||||
},
|
},
|
||||||
endDescription: _("Powering off the system."),
|
endDescription: _("Powering off the system."),
|
||||||
confirmButtons: [{ signal: 'ConfirmedReboot',
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
label: _("Restart") },
|
label: C_("button", "Restart") },
|
||||||
{ signal: 'ConfirmedShutdown',
|
{ signal: 'ConfirmedShutdown',
|
||||||
label: _("Power Off") }],
|
label: C_("button", "Power Off") }],
|
||||||
iconName: 'system-shutdown',
|
iconName: 'system-shutdown',
|
||||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||||
};
|
};
|
||||||
|
|
||||||
const restartDialogContent = {
|
const restartDialogContent = {
|
||||||
subject: _("Restart"),
|
subject: C_("title", "Restart"),
|
||||||
inhibitedDescription: _("Click Restart to quit these applications and restart the system."),
|
inhibitedDescription: _("Click Restart to quit these applications and restart the system."),
|
||||||
uninhibitedDescription: function(seconds) {
|
uninhibitedDescription: function(seconds) {
|
||||||
return ngettext("The system will restart automatically in %d second.",
|
return ngettext("The system will restart automatically in %d second.",
|
||||||
@ -103,7 +104,7 @@ const restartDialogContent = {
|
|||||||
},
|
},
|
||||||
endDescription: _("Restarting the system."),
|
endDescription: _("Restarting the system."),
|
||||||
confirmButtons: [{ signal: 'ConfirmedReboot',
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
label: _("Restart") }],
|
label: C_("button", "Restart") }],
|
||||||
iconName: 'system-shutdown',
|
iconName: 'system-shutdown',
|
||||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||||
};
|
};
|
||||||
@ -141,11 +142,9 @@ function findAppFromInhibitor(inhibitor) {
|
|||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ListItem(app, reason) {
|
const ListItem = new Lang.Class({
|
||||||
this._init(app, reason);
|
Name: 'ListItem',
|
||||||
}
|
|
||||||
|
|
||||||
ListItem.prototype = {
|
|
||||||
_init: function(app, reason) {
|
_init: function(app, reason) {
|
||||||
this._app = app;
|
this._app = app;
|
||||||
this._reason = reason;
|
this._reason = reason;
|
||||||
@ -191,7 +190,7 @@ ListItem.prototype = {
|
|||||||
this.emit('activate');
|
this.emit('activate');
|
||||||
this._app.activate();
|
this._app.activate();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ListItem.prototype);
|
Signals.addSignalMethods(ListItem.prototype);
|
||||||
|
|
||||||
// The logout timer only shows updates every 10 seconds
|
// The logout timer only shows updates every 10 seconds
|
||||||
@ -229,29 +228,19 @@ function _setLabelText(label, text) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function EndSessionDialog() {
|
|
||||||
if (_endSessionDialog == null) {
|
|
||||||
this._init();
|
|
||||||
DBus.session.exportObject('/org/gnome/SessionManager/EndSessionDialog',
|
|
||||||
this);
|
|
||||||
_endSessionDialog = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _endSessionDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
// This always returns the same singleton object
|
// This always returns the same singleton object
|
||||||
// By instantiating it initially, we register the
|
// By instantiating it initially, we register the
|
||||||
// bus object, etc.
|
// bus object, etc.
|
||||||
let dialog = new EndSessionDialog();
|
_endSessionDialog = new EndSessionDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
EndSessionDialog.prototype = {
|
const EndSessionDialog = new Lang.Class({
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
Name: 'EndSessionDialog',
|
||||||
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'end-session-dialog' });
|
this.parent({ styleClass: 'end-session-dialog' });
|
||||||
|
|
||||||
this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
|
this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
|
||||||
|
|
||||||
@ -326,6 +315,9 @@ EndSessionDialog.prototype = {
|
|||||||
if (this._applicationList.get_children().length == 0)
|
if (this._applicationList.get_children().length == 0)
|
||||||
scrollView.hide();
|
scrollView.hide();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(EndSessionDialogIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
@ -439,26 +431,20 @@ EndSessionDialog.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
close: function() {
|
close: function() {
|
||||||
ModalDialog.ModalDialog.prototype.close.call(this);
|
this.parent();
|
||||||
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
this._dbusImpl.emit_signal('Closed', null);
|
||||||
'org.gnome.SessionManager.EndSessionDialog',
|
|
||||||
'Closed', '', []);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
this._stopTimer();
|
this._stopTimer();
|
||||||
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
this._dbusImpl.emit_signal('Canceled', null);
|
||||||
'org.gnome.SessionManager.EndSessionDialog',
|
|
||||||
'Canceled', '', []);
|
|
||||||
this.close(global.get_current_time());
|
this.close(global.get_current_time());
|
||||||
},
|
},
|
||||||
|
|
||||||
_confirm: function(signal) {
|
_confirm: function(signal) {
|
||||||
this._fadeOutDialog();
|
this._fadeOutDialog();
|
||||||
this._stopTimer();
|
this._stopTimer();
|
||||||
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
this._dbusImpl.emit_signal(signal, null);
|
||||||
'org.gnome.SessionManager.EndSessionDialog',
|
|
||||||
signal, '', []);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onOpened: function() {
|
_onOpened: function() {
|
||||||
@ -510,39 +496,41 @@ EndSessionDialog.prototype = {
|
|||||||
this._updateContent();
|
this._updateContent();
|
||||||
},
|
},
|
||||||
|
|
||||||
OpenAsync: function(type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths, callback) {
|
OpenAsync: function(parameters, invocation) {
|
||||||
|
let [type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters;
|
||||||
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
||||||
this._inhibitors = [];
|
this._inhibitors = [];
|
||||||
this._applicationList.destroy_children();
|
this._applicationList.destroy_children();
|
||||||
this._type = type;
|
this._type = type;
|
||||||
|
|
||||||
if (!(this._type in DialogContent))
|
if (!(this._type in DialogContent)) {
|
||||||
throw new DBus.DBusError('org.gnome.Shell.ModalDialog.TypeError',
|
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
|
||||||
"Unknown dialog type requested");
|
"Unknown dialog type requested");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < inhibitorObjectPaths.length; i++) {
|
for (let i = 0; i < inhibitorObjectPaths.length; i++) {
|
||||||
let inhibitor = new GnomeSession.Inhibitor(inhibitorObjectPaths[i]);
|
let inhibitor = new GnomeSession.Inhibitor(inhibitorObjectPaths[i], Lang.bind(this, function(proxy, error) {
|
||||||
|
this._onInhibitorLoaded(proxy);
|
||||||
|
}));
|
||||||
|
|
||||||
inhibitor.connect('is-loaded',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._onInhibitorLoaded(inhibitor);
|
|
||||||
}));
|
|
||||||
this._inhibitors.push(inhibitor);
|
this._inhibitors.push(inhibitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._updateButtons();
|
this._updateButtons();
|
||||||
|
|
||||||
if (!this.open(timestamp))
|
if (!this.open(timestamp)) {
|
||||||
throw new DBus.DBusError('org.gnome.Shell.ModalDialog.GrabError',
|
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
|
||||||
"Cannot grab pointer and keyboard");
|
"Cannot grab pointer and keyboard");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this._updateContent();
|
this._updateContent();
|
||||||
|
|
||||||
let signalId = this.connect('opened',
|
let signalId = this.connect('opened',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
callback();
|
invocation.return_value(null);
|
||||||
this.disconnect(signalId);
|
this.disconnect(signalId);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
DBus.conformExport(EndSessionDialog.prototype, EndSessionDialogIface);
|
|
||||||
|
@ -22,6 +22,7 @@ const ExtensionState = {
|
|||||||
ERROR: 3,
|
ERROR: 3,
|
||||||
OUT_OF_DATE: 4,
|
OUT_OF_DATE: 4,
|
||||||
DOWNLOADING: 5,
|
DOWNLOADING: 5,
|
||||||
|
INITIALIZED: 6,
|
||||||
|
|
||||||
// Used as an error state for operations on unknown extensions,
|
// Used as an error state for operations on unknown extensions,
|
||||||
// should never be in a real extensionMeta object.
|
// should never be in a real extensionMeta object.
|
||||||
@ -62,6 +63,9 @@ const extensionMeta = {};
|
|||||||
const extensions = {};
|
const extensions = {};
|
||||||
// Maps uuid -> extension state object (returned from init())
|
// Maps uuid -> extension state object (returned from init())
|
||||||
const extensionStateObjs = {};
|
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
|
// GFile for user extensions
|
||||||
@ -212,6 +216,27 @@ function disableExtension(uuid) {
|
|||||||
|
|
||||||
let extensionState = extensionStateObjs[uuid];
|
let extensionState = extensionStateObjs[uuid];
|
||||||
|
|
||||||
|
// "Rebase" the extension order by disabling and then enabling extensions
|
||||||
|
// in order to help prevent conflicts.
|
||||||
|
|
||||||
|
// Example:
|
||||||
|
// order = [A, B, C, D, E]
|
||||||
|
// user disables C
|
||||||
|
// this should: disable E, disable D, disable C, enable D, enable E
|
||||||
|
|
||||||
|
let orderIdx = extensionOrder.indexOf(uuid);
|
||||||
|
let order = extensionOrder.slice(orderIdx + 1);
|
||||||
|
let orderReversed = order.slice().reverse();
|
||||||
|
|
||||||
|
for (let i = 0; i < orderReversed.length; i++) {
|
||||||
|
let uuid = orderReversed[i];
|
||||||
|
try {
|
||||||
|
extensionStateObjs[uuid].disable();
|
||||||
|
} catch(e) {
|
||||||
|
logExtensionError(uuid, e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
extensionState.disable();
|
extensionState.disable();
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -219,6 +244,17 @@ function disableExtension(uuid) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < order.length; i++) {
|
||||||
|
let uuid = order[i];
|
||||||
|
try {
|
||||||
|
extensionStateObjs[uuid].enable();
|
||||||
|
} catch(e) {
|
||||||
|
logExtensionError(uuid, e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extensionOrder.splice(orderIdx, 1);
|
||||||
|
|
||||||
meta.state = ExtensionState.DISABLED;
|
meta.state = ExtensionState.DISABLED;
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', meta);
|
||||||
}
|
}
|
||||||
@ -228,11 +264,18 @@ function enableExtension(uuid) {
|
|||||||
if (!meta)
|
if (!meta)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (meta.state == ExtensionState.INITIALIZED) {
|
||||||
|
loadExtension(meta.dir, meta.type, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (meta.state != ExtensionState.DISABLED)
|
if (meta.state != ExtensionState.DISABLED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let extensionState = extensionStateObjs[uuid];
|
let extensionState = extensionStateObjs[uuid];
|
||||||
|
|
||||||
|
extensionOrder.push(uuid);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
extensionState.enable();
|
extensionState.enable();
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -254,7 +297,7 @@ function logExtensionError(uuid, message, state) {
|
|||||||
state: state });
|
state: state });
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadExtension(dir, enabled, type) {
|
function loadExtension(dir, type, enabled) {
|
||||||
let info;
|
let info;
|
||||||
let uuid = dir.get_basename();
|
let uuid = dir.get_basename();
|
||||||
|
|
||||||
@ -303,14 +346,9 @@ function loadExtension(dir, enabled, type) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!versionCheck(meta['shell-version'], Config.PACKAGE_VERSION) ||
|
|
||||||
(meta['js-version'] && !versionCheck(meta['js-version'], Config.GJS_VERSION))) {
|
|
||||||
logExtensionError(uuid, 'extension is not compatible with current GNOME Shell and/or GJS version');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
extensionMeta[uuid] = meta;
|
extensionMeta[uuid] = meta;
|
||||||
meta.type = type;
|
meta.type = type;
|
||||||
|
meta.dir = dir;
|
||||||
meta.path = dir.get_path();
|
meta.path = dir.get_path();
|
||||||
meta.error = '';
|
meta.error = '';
|
||||||
|
|
||||||
@ -324,6 +362,11 @@ function loadExtension(dir, enabled, type) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!enabled) {
|
||||||
|
meta.state = ExtensionState.INITIALIZED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let extensionJs = dir.get_child('extension.js');
|
let extensionJs = dir.get_child('extension.js');
|
||||||
if (!extensionJs.query_exists(null)) {
|
if (!extensionJs.query_exists(null)) {
|
||||||
logExtensionError(uuid, 'Missing extension.js');
|
logExtensionError(uuid, 'Missing extension.js');
|
||||||
@ -383,8 +426,7 @@ function loadExtension(dir, enabled, type) {
|
|||||||
|
|
||||||
meta.state = ExtensionState.DISABLED;
|
meta.state = ExtensionState.DISABLED;
|
||||||
|
|
||||||
if (enabled)
|
enableExtension(uuid);
|
||||||
enableExtension(uuid);
|
|
||||||
|
|
||||||
_signals.emit('extension-loaded', meta.uuid);
|
_signals.emit('extension-loaded', meta.uuid);
|
||||||
_signals.emit('extension-state-changed', meta);
|
_signals.emit('extension-state-changed', meta);
|
||||||
@ -444,7 +486,7 @@ function _loadExtensionsIn(dir, type) {
|
|||||||
let name = info.get_name();
|
let name = info.get_name();
|
||||||
let child = dir.get_child(name);
|
let child = dir.get_child(name);
|
||||||
let enabled = enabledExtensions.indexOf(name) != -1;
|
let enabled = enabledExtensions.indexOf(name) != -1;
|
||||||
loadExtension(child, enabled, type);
|
loadExtension(child, type, enabled);
|
||||||
}
|
}
|
||||||
fileEnum.close(null);
|
fileEnum.close(null);
|
||||||
}
|
}
|
||||||
@ -460,15 +502,12 @@ function loadExtensions() {
|
|||||||
_loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER);
|
_loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER);
|
||||||
}
|
}
|
||||||
|
|
||||||
function InstallExtensionDialog(uuid, version_tag, name) {
|
const InstallExtensionDialog = new Lang.Class({
|
||||||
this._init(uuid, version_tag, name);
|
Name: 'InstallExtensionDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
InstallExtensionDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function(uuid, version_tag, name) {
|
_init: function(uuid, version_tag, name) {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'extension-dialog' });
|
this.parent({ styleClass: 'extension-dialog' });
|
||||||
|
|
||||||
this._uuid = uuid;
|
this._uuid = uuid;
|
||||||
this._version_tag = version_tag;
|
this._version_tag = version_tag;
|
||||||
@ -528,4 +567,4 @@ InstallExtensionDialog.prototype = {
|
|||||||
|
|
||||||
this.close(global.get_current_time());
|
this.close(global.get_current_time());
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -10,11 +10,9 @@ const Params = imports.misc.params;
|
|||||||
const ICON_SIZE = 48;
|
const ICON_SIZE = 48;
|
||||||
|
|
||||||
|
|
||||||
function BaseIcon(label, createIcon) {
|
const BaseIcon = new Lang.Class({
|
||||||
this._init(label, createIcon);
|
Name: 'BaseIcon',
|
||||||
}
|
|
||||||
|
|
||||||
BaseIcon.prototype = {
|
|
||||||
_init : function(label, params) {
|
_init : function(label, params) {
|
||||||
params = Params.parse(params, { createIcon: null,
|
params = Params.parse(params, { createIcon: null,
|
||||||
setSizeManually: false,
|
setSizeManually: false,
|
||||||
@ -149,13 +147,11 @@ BaseIcon.prototype = {
|
|||||||
|
|
||||||
this._createIconTexture(size);
|
this._createIconTexture(size);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function IconGrid(params) {
|
const IconGrid = new Lang.Class({
|
||||||
this._init(params);
|
Name: 'IconGrid',
|
||||||
}
|
|
||||||
|
|
||||||
IconGrid.prototype = {
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { rowLimit: null,
|
params = Params.parse(params, { rowLimit: null,
|
||||||
columnLimit: null,
|
columnLimit: null,
|
||||||
@ -324,4 +320,4 @@ IconGrid.prototype = {
|
|||||||
visibleItemsCount: function() {
|
visibleItemsCount: function() {
|
||||||
return this._grid.get_children().length - this._grid.get_n_skip_paint();
|
return this._grid.get_children().length - this._grid.get_n_skip_paint();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -39,34 +39,31 @@ const PRETTY_KEYS = {
|
|||||||
'Alt_L': 'Alt'
|
'Alt_L': 'Alt'
|
||||||
};
|
};
|
||||||
|
|
||||||
const CaribouKeyboardIface = {
|
const CaribouKeyboardIface = <interface name='org.gnome.Caribou.Keyboard'>
|
||||||
name: 'org.gnome.Caribou.Keyboard',
|
<method name='Show'>
|
||||||
methods: [ { name: 'Show',
|
<arg type='u' direction='in' />
|
||||||
inSignature: 'u',
|
</method>
|
||||||
outSignature: ''
|
<method name='Hide'>
|
||||||
},
|
<arg type='u' direction='in' />
|
||||||
{ name: 'Hide',
|
</method>
|
||||||
inSignature: 'u',
|
<method name='SetCursorLocation'>
|
||||||
outSignature: ''
|
<arg type='i' direction='in' />
|
||||||
},
|
<arg type='i' direction='in' />
|
||||||
{ name: 'SetCursorLocation',
|
<arg type='i' direction='in' />
|
||||||
inSignature: 'iiii',
|
<arg type='i' direction='in' />
|
||||||
outSignature: ''
|
</method>
|
||||||
},
|
<method name='SetEntryLocation'>
|
||||||
{ name: 'SetEntryLocation',
|
<arg type='i' direction='in' />
|
||||||
inSignature: 'iiii',
|
<arg type='i' direction='in' />
|
||||||
outSignature: ''
|
<arg type='i' direction='in' />
|
||||||
} ],
|
<arg type='i' direction='in' />
|
||||||
properties: [ { name: 'Name',
|
</method>
|
||||||
signature: 's',
|
<property name='Name' access='read' type='s' />
|
||||||
access: 'read' } ]
|
</interface>;
|
||||||
};
|
|
||||||
|
|
||||||
function Key() {
|
const Key = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Key',
|
||||||
}
|
|
||||||
|
|
||||||
Key.prototype = {
|
|
||||||
_init : function(key) {
|
_init : function(key) {
|
||||||
this._key = key;
|
this._key = key;
|
||||||
|
|
||||||
@ -192,15 +189,15 @@ Key.prototype = {
|
|||||||
this._boxPointer.hide(true);
|
this._boxPointer.hide(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Keyboard() {
|
const Keyboard = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
// HACK: we can't set Name, because it collides with Name dbus property
|
||||||
}
|
// Name: 'Keyboard',
|
||||||
|
|
||||||
Keyboard.prototype = {
|
|
||||||
_init: function () {
|
_init: function () {
|
||||||
DBus.session.exportObject('/org/gnome/Caribou/Keyboard', this);
|
this._impl = Gio.DBusExportedObject.wrapJSObject(CaribouKeyboardIface, this);
|
||||||
|
this._impl.export(Gio.DBus.session, '/org/gnome/Caribou/Keyboard');
|
||||||
|
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
|
|
||||||
@ -289,7 +286,7 @@ Keyboard.prototype = {
|
|||||||
if (focus && (focus._extended_keys || (focus._key && focus._key.extended_key)))
|
if (focus && (focus._extended_keys || (focus._key && focus._key.extended_key)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let time = global.current_event_time();
|
let time = global.get_current_time();
|
||||||
if (focus instanceof Clutter.Text)
|
if (focus instanceof Clutter.Text)
|
||||||
this.Show(time);
|
this.Show(time);
|
||||||
else
|
else
|
||||||
@ -532,19 +529,15 @@ Keyboard.prototype = {
|
|||||||
get Name() {
|
get Name() {
|
||||||
return 'gnome-shell';
|
return 'gnome-shell';
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
DBus.conformExport(Keyboard.prototype, CaribouKeyboardIface);
|
|
||||||
|
|
||||||
function KeyboardSource() {
|
const KeyboardSource = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'KeyboardSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
KeyboardSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(keyboard) {
|
_init: function(keyboard) {
|
||||||
|
this.parent(_("Keyboard"));
|
||||||
this._keyboard = keyboard;
|
this._keyboard = keyboard;
|
||||||
MessageTray.Source.prototype._init.call(this, _("Keyboard"));
|
|
||||||
|
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
},
|
},
|
||||||
@ -555,7 +548,7 @@ KeyboardSource.prototype = {
|
|||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
},
|
},
|
||||||
|
|
||||||
handleSummaryClick: function() {
|
handleSummaryClick: function() {
|
||||||
let event = Clutter.get_current_event();
|
let event = Clutter.get_current_event();
|
||||||
if (event.type() != Clutter.EventType.BUTTON_RELEASE)
|
if (event.type() != Clutter.EventType.BUTTON_RELEASE)
|
||||||
return false;
|
return false;
|
||||||
@ -567,4 +560,4 @@ KeyboardSource.prototype = {
|
|||||||
open: function() {
|
open: function() {
|
||||||
this._keyboard.show();
|
this._keyboard.show();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -17,11 +17,9 @@ const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5;
|
|||||||
const STARTUP_ANIMATION_TIME = 0.2;
|
const STARTUP_ANIMATION_TIME = 0.2;
|
||||||
const KEYBOARD_ANIMATION_TIME = 0.5;
|
const KEYBOARD_ANIMATION_TIME = 0.5;
|
||||||
|
|
||||||
function LayoutManager() {
|
const LayoutManager = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'LayoutManager',
|
||||||
}
|
|
||||||
|
|
||||||
LayoutManager.prototype = {
|
|
||||||
_init: function () {
|
_init: function () {
|
||||||
this._rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
this._rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
||||||
this.monitors = [];
|
this.monitors = [];
|
||||||
@ -374,7 +372,7 @@ LayoutManager.prototype = {
|
|||||||
findMonitorForActor: function(actor) {
|
findMonitorForActor: function(actor) {
|
||||||
return this._chrome.findMonitorForActor(actor);
|
return this._chrome.findMonitorForActor(actor);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(LayoutManager.prototype);
|
Signals.addSignalMethods(LayoutManager.prototype);
|
||||||
|
|
||||||
|
|
||||||
@ -382,11 +380,9 @@ Signals.addSignalMethods(LayoutManager.prototype);
|
|||||||
//
|
//
|
||||||
// This class manages a "hot corner" that can toggle switching to
|
// This class manages a "hot corner" that can toggle switching to
|
||||||
// overview.
|
// overview.
|
||||||
function HotCorner() {
|
const HotCorner = new Lang.Class({
|
||||||
this._init();
|
Name: 'HotCorner',
|
||||||
}
|
|
||||||
|
|
||||||
HotCorner.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
// We use this flag to mark the case where the user has entered the
|
// We use this flag to mark the case where the user has entered the
|
||||||
// hot corner and has not left both the hot corner and a surrounding
|
// hot corner and has not left both the hot corner and a surrounding
|
||||||
@ -548,7 +544,7 @@ HotCorner.prototype = {
|
|||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
// This manages the shell "chrome"; the UI that's visible in the
|
// This manages the shell "chrome"; the UI that's visible in the
|
||||||
@ -561,11 +557,9 @@ const defaultParams = {
|
|||||||
affectsInputRegion: true
|
affectsInputRegion: true
|
||||||
};
|
};
|
||||||
|
|
||||||
function Chrome() {
|
const Chrome = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Chrome',
|
||||||
}
|
|
||||||
|
|
||||||
Chrome.prototype = {
|
|
||||||
_init: function(layoutManager) {
|
_init: function(layoutManager) {
|
||||||
this._layoutManager = layoutManager;
|
this._layoutManager = layoutManager;
|
||||||
|
|
||||||
@ -587,12 +581,13 @@ Chrome.prototype = {
|
|||||||
|
|
||||||
this._screenSaverActive = false;
|
this._screenSaverActive = false;
|
||||||
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
|
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
|
||||||
this._screenSaverProxy.connect('ActiveChanged', Lang.bind(this, this._onScreenSaverActiveChanged));
|
this._screenSaverProxy.connectSignal('ActiveChanged', Lang.bind(this, function(proxy, senderName, [isActive]) {
|
||||||
this._screenSaverProxy.GetActiveRemote(Lang.bind(this,
|
this._onScreenSaverActiveChanged(isActive);
|
||||||
function(result, err) {
|
}));
|
||||||
if (!err)
|
this._screenSaverProxy.GetActiveRemote(Lang.bind(this, function(result, err) {
|
||||||
this._onScreenSaverActiveChanged(this._screenSaverProxy, result);
|
if (!err)
|
||||||
}));
|
this._onScreenSaverActiveChanged(result[0]);
|
||||||
|
}));
|
||||||
|
|
||||||
this._relayout();
|
this._relayout();
|
||||||
},
|
},
|
||||||
@ -733,7 +728,7 @@ Chrome.prototype = {
|
|||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onScreenSaverActiveChanged: function(proxy, screenSaverActive) {
|
_onScreenSaverActiveChanged: function(screenSaverActive) {
|
||||||
this._screenSaverActive = screenSaverActive;
|
this._screenSaverActive = screenSaverActive;
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
@ -980,4 +975,4 @@ Chrome.prototype = {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -30,11 +30,9 @@ const Tweener = imports.ui.tweener;
|
|||||||
* @container and will track any changes in its size. You can override
|
* @container and will track any changes in its size. You can override
|
||||||
* this by passing an explicit width and height in @params.
|
* this by passing an explicit width and height in @params.
|
||||||
*/
|
*/
|
||||||
function Lightbox(container, params) {
|
const Lightbox = new Lang.Class({
|
||||||
this._init(container, params);
|
Name: 'Lightbox',
|
||||||
}
|
|
||||||
|
|
||||||
Lightbox.prototype = {
|
|
||||||
_init : function(container, params) {
|
_init : function(container, params) {
|
||||||
params = Params.parse(params, { inhibitEvents: false,
|
params = Params.parse(params, { inhibitEvents: false,
|
||||||
width: null,
|
width: null,
|
||||||
@ -196,4 +194,4 @@ Lightbox.prototype = {
|
|||||||
|
|
||||||
this.highlight(null);
|
this.highlight(null);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -4,11 +4,9 @@ const Lang = imports.lang;
|
|||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
function Link(props) {
|
const Link = new Lang.Class({
|
||||||
this._init(props);
|
Name: 'Link',
|
||||||
}
|
|
||||||
|
|
||||||
Link.prototype = {
|
|
||||||
_init : function(props) {
|
_init : function(props) {
|
||||||
let realProps = { reactive: true,
|
let realProps = { reactive: true,
|
||||||
track_hover: true,
|
track_hover: true,
|
||||||
@ -19,6 +17,5 @@ Link.prototype = {
|
|||||||
|
|
||||||
this.actor = new St.Button(realProps);
|
this.actor = new St.Button(realProps);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(Link.prototype);
|
Signals.addSignalMethods(Link.prototype);
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Cogl = imports.gi.Cogl;
|
const Cogl = imports.gi.Cogl;
|
||||||
const GConf = imports.gi.GConf;
|
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
@ -20,6 +19,7 @@ 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;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
const JsParse = imports.misc.jsParse;
|
||||||
|
|
||||||
/* Imports...feel free to add here as needed */
|
/* Imports...feel free to add here as needed */
|
||||||
var commandHeader = 'const Clutter = imports.gi.Clutter; ' +
|
var commandHeader = 'const Clutter = imports.gi.Clutter; ' +
|
||||||
@ -41,12 +41,88 @@ var commandHeader = 'const Clutter = imports.gi.Clutter; ' +
|
|||||||
'const r = Lang.bind(Main.lookingGlass, Main.lookingGlass.getResult); ';
|
'const r = Lang.bind(Main.lookingGlass, Main.lookingGlass.getResult); ';
|
||||||
|
|
||||||
const HISTORY_KEY = 'looking-glass-history';
|
const HISTORY_KEY = 'looking-glass-history';
|
||||||
|
// Time between tabs for them to count as a double-tab event
|
||||||
|
const AUTO_COMPLETE_DOUBLE_TAB_DELAY = 500;
|
||||||
|
const AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION = 0.2;
|
||||||
|
const AUTO_COMPLETE_GLOBAL_KEYWORDS = _getAutoCompleteGlobalKeywords();
|
||||||
|
|
||||||
function Notebook() {
|
function _getAutoCompleteGlobalKeywords() {
|
||||||
this._init();
|
const keywords = ['true', 'false', 'null', 'new'];
|
||||||
|
// Don't add the private properties of window (i.e., ones starting with '_')
|
||||||
|
const windowProperties = Object.getOwnPropertyNames(window).filter(function(a){ return a.charAt(0) != '_' });
|
||||||
|
const headerProperties = JsParse.getDeclaredConstants(commandHeader);
|
||||||
|
|
||||||
|
return keywords.concat(windowProperties).concat(headerProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
Notebook.prototype = {
|
const AutoComplete = new Lang.Class({
|
||||||
|
Name: 'AutoComplete',
|
||||||
|
|
||||||
|
_init: function(entry) {
|
||||||
|
this._entry = entry;
|
||||||
|
this._entry.connect('key-press-event', Lang.bind(this, this._entryKeyPressEvent));
|
||||||
|
this._lastTabTime = global.get_current_time();
|
||||||
|
},
|
||||||
|
|
||||||
|
_processCompletionRequest: function(event) {
|
||||||
|
if (event.completions.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Unique match = go ahead and complete; multiple matches + single tab = complete the common starting string;
|
||||||
|
// multiple matches + double tab = emit a suggest event with all possible options
|
||||||
|
if (event.completions.length == 1) {
|
||||||
|
this.additionalCompletionText(event.completions[0], event.attrHead);
|
||||||
|
this.emit('completion', { completion: event.completions[0], type: 'whole-word' });
|
||||||
|
} else if (event.completions.length > 1 && event.tabType === 'single') {
|
||||||
|
let commonPrefix = JsParse.getCommonPrefix(event.completions);
|
||||||
|
|
||||||
|
if (commonPrefix.length > 0) {
|
||||||
|
this.additionalCompletionText(commonPrefix, event.attrHead);
|
||||||
|
this.emit('completion', { completion: commonPrefix, type: 'prefix' });
|
||||||
|
this.emit('suggest', { completions: event.completions});
|
||||||
|
}
|
||||||
|
} else if (event.completions.length > 1 && event.tabType === 'double') {
|
||||||
|
this.emit('suggest', { completions: event.completions});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_entryKeyPressEvent: function(actor, event) {
|
||||||
|
let cursorPos = this._entry.clutter_text.get_cursor_position();
|
||||||
|
let text = this._entry.get_text();
|
||||||
|
if (cursorPos != -1) {
|
||||||
|
text = text.slice(0, cursorPos);
|
||||||
|
}
|
||||||
|
if (event.get_key_symbol() == Clutter.Tab) {
|
||||||
|
let [completions, attrHead] = JsParse.getCompletions(text, commandHeader, AUTO_COMPLETE_GLOBAL_KEYWORDS);
|
||||||
|
let currTime = global.get_current_time();
|
||||||
|
if ((currTime - this._lastTabTime) < AUTO_COMPLETE_DOUBLE_TAB_DELAY) {
|
||||||
|
this._processCompletionRequest({ tabType: 'double',
|
||||||
|
completions: completions,
|
||||||
|
attrHead: attrHead });
|
||||||
|
} else {
|
||||||
|
this._processCompletionRequest({ tabType: 'single',
|
||||||
|
completions: completions,
|
||||||
|
attrHead: attrHead });
|
||||||
|
}
|
||||||
|
this._lastTabTime = currTime;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Insert characters of text not already included in head at cursor position. i.e., if text="abc" and head="a",
|
||||||
|
// the string "bc" will be appended to this._entry
|
||||||
|
additionalCompletionText: function(text, head) {
|
||||||
|
let additionalCompletionText = text.slice(head.length);
|
||||||
|
let cursorPos = this._entry.clutter_text.get_cursor_position();
|
||||||
|
|
||||||
|
this._entry.clutter_text.insert_text(additionalCompletionText, cursorPos);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(AutoComplete.prototype);
|
||||||
|
|
||||||
|
|
||||||
|
const Notebook = new Lang.Class({
|
||||||
|
Name: 'Notebook',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.BoxLayout({ vertical: true });
|
this.actor = new St.BoxLayout({ vertical: true });
|
||||||
|
|
||||||
@ -151,8 +227,26 @@ Notebook.prototype = {
|
|||||||
return;
|
return;
|
||||||
let vAdjust = tabData.scrollView.vscroll.adjustment;
|
let vAdjust = tabData.scrollView.vscroll.adjustment;
|
||||||
vAdjust.value = vAdjust.upper - vAdjust.page_size;
|
vAdjust.value = vAdjust.upper - vAdjust.page_size;
|
||||||
|
},
|
||||||
|
|
||||||
|
nextTab: function() {
|
||||||
|
let nextIndex = this._selectedIndex;
|
||||||
|
if (nextIndex < this._tabs.length - 1) {
|
||||||
|
++nextIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.selectIndex(nextIndex);
|
||||||
|
},
|
||||||
|
|
||||||
|
prevTab: function() {
|
||||||
|
let prevIndex = this._selectedIndex;
|
||||||
|
if (prevIndex > 0) {
|
||||||
|
--prevIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.selectIndex(prevIndex);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Notebook.prototype);
|
Signals.addSignalMethods(Notebook.prototype);
|
||||||
|
|
||||||
function objectToString(o) {
|
function objectToString(o) {
|
||||||
@ -164,12 +258,9 @@ function objectToString(o) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ObjLink(o, title) {
|
const ObjLink = new Lang.Class({
|
||||||
this._init(o, title);
|
Name: 'ObjLink',
|
||||||
}
|
Extends: Link.Link,
|
||||||
|
|
||||||
ObjLink.prototype = {
|
|
||||||
__proto__: Link.Link,
|
|
||||||
|
|
||||||
_init: function(o, title) {
|
_init: function(o, title) {
|
||||||
let text;
|
let text;
|
||||||
@ -179,7 +270,8 @@ ObjLink.prototype = {
|
|||||||
text = objectToString(o);
|
text = objectToString(o);
|
||||||
text = GLib.markup_escape_text(text, -1);
|
text = GLib.markup_escape_text(text, -1);
|
||||||
this._obj = o;
|
this._obj = o;
|
||||||
Link.Link.prototype._init.call(this, { label: text });
|
|
||||||
|
this.parent({ label: text });
|
||||||
this.actor.get_child().single_line_mode = true;
|
this.actor.get_child().single_line_mode = true;
|
||||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
},
|
},
|
||||||
@ -187,13 +279,11 @@ ObjLink.prototype = {
|
|||||||
_onClicked: function (link) {
|
_onClicked: function (link) {
|
||||||
Main.lookingGlass.inspectObject(this._obj, this.actor);
|
Main.lookingGlass.inspectObject(this._obj, this.actor);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Result(command, o, index) {
|
const Result = new Lang.Class({
|
||||||
this._init(command, o, index);
|
Name: 'Result',
|
||||||
}
|
|
||||||
|
|
||||||
Result.prototype = {
|
|
||||||
_init : function(command, o, index) {
|
_init : function(command, o, index) {
|
||||||
this.index = index;
|
this.index = index;
|
||||||
this.o = o;
|
this.o = o;
|
||||||
@ -215,13 +305,11 @@ Result.prototype = {
|
|||||||
padBin.add_actor(line);
|
padBin.add_actor(line);
|
||||||
this.actor.add(padBin);
|
this.actor.add(padBin);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function WindowList() {
|
const WindowList = new Lang.Class({
|
||||||
this._init();
|
Name: 'WindowList',
|
||||||
}
|
|
||||||
|
|
||||||
WindowList.prototype = {
|
|
||||||
_init : function () {
|
_init : function () {
|
||||||
this.actor = new St.BoxLayout({ name: 'Windows', vertical: true, style: 'spacing: 8px' });
|
this.actor = new St.BoxLayout({ name: 'Windows', vertical: true, style: 'spacing: 8px' });
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
@ -262,14 +350,12 @@ WindowList.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WindowList.prototype);
|
Signals.addSignalMethods(WindowList.prototype);
|
||||||
|
|
||||||
function ObjInspector() {
|
const ObjInspector = new Lang.Class({
|
||||||
this._init();
|
Name: 'ObjInspector',
|
||||||
}
|
|
||||||
|
|
||||||
ObjInspector.prototype = {
|
|
||||||
_init : function () {
|
_init : function () {
|
||||||
this._obj = null;
|
this._obj = null;
|
||||||
this._previousObj = null;
|
this._previousObj = null;
|
||||||
@ -369,7 +455,7 @@ ObjInspector.prototype = {
|
|||||||
_onBack: function() {
|
_onBack: function() {
|
||||||
this.selectObject(this._previousObj, true);
|
this.selectObject(this._previousObj, true);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function addBorderPaintHook(actor) {
|
function addBorderPaintHook(actor) {
|
||||||
let signalId = actor.connect_after('paint',
|
let signalId = actor.connect_after('paint',
|
||||||
@ -395,11 +481,9 @@ function addBorderPaintHook(actor) {
|
|||||||
return signalId;
|
return signalId;
|
||||||
}
|
}
|
||||||
|
|
||||||
function Inspector() {
|
const Inspector = new Lang.Class({
|
||||||
this._init();
|
Name: 'Inspector',
|
||||||
}
|
|
||||||
|
|
||||||
Inspector.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
let container = new Shell.GenericContainer({ width: 0,
|
let container = new Shell.GenericContainer({ width: 0,
|
||||||
height: 0 });
|
height: 0 });
|
||||||
@ -538,15 +622,13 @@ Inspector.prototype = {
|
|||||||
this._borderPaintId = addBorderPaintHook(this._target);
|
this._borderPaintId = addBorderPaintHook(this._target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(Inspector.prototype);
|
Signals.addSignalMethods(Inspector.prototype);
|
||||||
|
|
||||||
function ErrorLog() {
|
const ErrorLog = new Lang.Class({
|
||||||
this._init();
|
Name: 'ErrorLog',
|
||||||
}
|
|
||||||
|
|
||||||
ErrorLog.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.BoxLayout();
|
this.actor = new St.BoxLayout();
|
||||||
this.text = new St.Label();
|
this.text = new St.Label();
|
||||||
@ -581,13 +663,11 @@ ErrorLog.prototype = {
|
|||||||
}
|
}
|
||||||
this.text.text = text;
|
this.text.text = text;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Memory() {
|
const Memory = new Lang.Class({
|
||||||
this._init();
|
Name: 'Memory',
|
||||||
}
|
|
||||||
|
|
||||||
Memory.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.BoxLayout({ vertical: true });
|
this.actor = new St.BoxLayout({ vertical: true });
|
||||||
this._glibc_uordblks = new St.Label();
|
this._glibc_uordblks = new St.Label();
|
||||||
@ -632,13 +712,11 @@ Memory.prototype = {
|
|||||||
this._gjs_closure.text = 'gjs_closure: ' + memInfo.gjs_closure;
|
this._gjs_closure.text = 'gjs_closure: ' + memInfo.gjs_closure;
|
||||||
this._last_gc_seconds_ago.text = 'last_gc_seconds_ago: ' + memInfo.last_gc_seconds_ago;
|
this._last_gc_seconds_ago.text = 'last_gc_seconds_ago: ' + memInfo.last_gc_seconds_ago;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Extensions() {
|
const Extensions = new Lang.Class({
|
||||||
this._init();
|
Name: 'Extensions',
|
||||||
}
|
|
||||||
|
|
||||||
Extensions.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new St.BoxLayout({ vertical: true,
|
this.actor = new St.BoxLayout({ vertical: true,
|
||||||
name: 'lookingGlassExtensions' });
|
name: 'lookingGlassExtensions' });
|
||||||
@ -686,11 +764,40 @@ Extensions.prototype = {
|
|||||||
Main.lookingGlass.close();
|
Main.lookingGlass.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onViewErrors: function (actor) {
|
||||||
|
let meta = actor._extensionMeta;
|
||||||
|
let shouldShow = !actor._isShowing;
|
||||||
|
|
||||||
|
if (shouldShow) {
|
||||||
|
let errors = ExtensionSystem.errors[meta.uuid];
|
||||||
|
let errorDisplay = new St.BoxLayout({ vertical: true });
|
||||||
|
if (errors && errors.length) {
|
||||||
|
for (let i = 0; i < errors.length; i ++)
|
||||||
|
errorDisplay.add(new St.Label({ text: errors[i] }));
|
||||||
|
} else {
|
||||||
|
/* Translators: argument is an extension UUID. */
|
||||||
|
let message = _("%s has not emitted any errors.").format(meta.uuid);
|
||||||
|
errorDisplay.add(new St.Label({ text: message }));
|
||||||
|
}
|
||||||
|
|
||||||
|
actor._errorDisplay = errorDisplay;
|
||||||
|
actor._parentBox.add(errorDisplay);
|
||||||
|
actor.label = _("Hide Errors");
|
||||||
|
} else {
|
||||||
|
actor._errorDisplay.destroy();
|
||||||
|
actor._errorDisplay = null;
|
||||||
|
actor.label = _("Show Errors");
|
||||||
|
}
|
||||||
|
|
||||||
|
actor._isShowing = shouldShow;
|
||||||
|
},
|
||||||
|
|
||||||
_stateToString: function(extensionState) {
|
_stateToString: function(extensionState) {
|
||||||
switch (extensionState) {
|
switch (extensionState) {
|
||||||
case ExtensionSystem.ExtensionState.ENABLED:
|
case ExtensionSystem.ExtensionState.ENABLED:
|
||||||
return _("Enabled");
|
return _("Enabled");
|
||||||
case ExtensionSystem.ExtensionState.DISABLED:
|
case ExtensionSystem.ExtensionState.DISABLED:
|
||||||
|
case ExtensionSystem.ExtensionState.INITIALIZED:
|
||||||
return _("Disabled");
|
return _("Disabled");
|
||||||
case ExtensionSystem.ExtensionState.ERROR:
|
case ExtensionSystem.ExtensionState.ERROR:
|
||||||
return _("Error");
|
return _("Error");
|
||||||
@ -730,15 +837,20 @@ Extensions.prototype = {
|
|||||||
metaBox.add(webpage.actor);
|
metaBox.add(webpage.actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let viewerrors = new Link.Link({ label: _("Show Errors") });
|
||||||
|
viewerrors.actor._extensionMeta = meta;
|
||||||
|
viewerrors.actor._parentBox = box;
|
||||||
|
viewerrors.actor._isShowing = false;
|
||||||
|
viewerrors.actor.connect('clicked', Lang.bind(this, this._onViewErrors));
|
||||||
|
metaBox.add(viewerrors.actor);
|
||||||
|
|
||||||
return box;
|
return box;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function LookingGlass() {
|
const LookingGlass = new Lang.Class({
|
||||||
this._init();
|
Name: 'LookingGlass',
|
||||||
}
|
|
||||||
|
|
||||||
LookingGlass.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._borderPaintTarget = null;
|
this._borderPaintTarget = null;
|
||||||
this._borderPaintId = 0;
|
this._borderPaintId = 0;
|
||||||
@ -755,7 +867,8 @@ LookingGlass.prototype = {
|
|||||||
this.actor = new St.BoxLayout({ name: 'LookingGlassDialog',
|
this.actor = new St.BoxLayout({ name: 'LookingGlassDialog',
|
||||||
style_class: 'lg-dialog',
|
style_class: 'lg-dialog',
|
||||||
vertical: true,
|
vertical: true,
|
||||||
visible: false });
|
visible: false,
|
||||||
|
reactive: true });
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._globalKeyPressEvent));
|
this.actor.connect('key-press-event', Lang.bind(this, this._globalKeyPressEvent));
|
||||||
|
|
||||||
this._interfaceSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
|
this._interfaceSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
|
||||||
@ -810,15 +923,15 @@ LookingGlass.prototype = {
|
|||||||
this._resultsArea = new St.BoxLayout({ name: 'ResultsArea', vertical: true });
|
this._resultsArea = new St.BoxLayout({ name: 'ResultsArea', vertical: true });
|
||||||
this._evalBox.add(this._resultsArea, { expand: true });
|
this._evalBox.add(this._resultsArea, { expand: true });
|
||||||
|
|
||||||
let entryArea = new St.BoxLayout({ name: 'EntryArea' });
|
this._entryArea = new St.BoxLayout({ name: 'EntryArea' });
|
||||||
this._evalBox.add_actor(entryArea);
|
this._evalBox.add_actor(this._entryArea);
|
||||||
|
|
||||||
let label = new St.Label({ text: 'js>>> ' });
|
let label = new St.Label({ text: 'js>>> ' });
|
||||||
entryArea.add(label);
|
this._entryArea.add(label);
|
||||||
|
|
||||||
this._entry = new St.Entry({ can_focus: true });
|
this._entry = new St.Entry({ can_focus: true });
|
||||||
ShellEntry.addContextMenu(this._entry);
|
ShellEntry.addContextMenu(this._entry);
|
||||||
entryArea.add(this._entry, { expand: true });
|
this._entryArea.add(this._entry, { expand: true });
|
||||||
|
|
||||||
this._windowList = new WindowList();
|
this._windowList = new WindowList();
|
||||||
this._windowList.connect('selected', Lang.bind(this, function(list, window) {
|
this._windowList.connect('selected', Lang.bind(this, function(list, window) {
|
||||||
@ -837,6 +950,9 @@ LookingGlass.prototype = {
|
|||||||
notebook.appendPage('Extensions', this._extensions.actor);
|
notebook.appendPage('Extensions', this._extensions.actor);
|
||||||
|
|
||||||
this._entry.clutter_text.connect('activate', Lang.bind(this, function (o, e) {
|
this._entry.clutter_text.connect('activate', Lang.bind(this, function (o, e) {
|
||||||
|
// Hide any completions we are currently showing
|
||||||
|
this._hideCompletions();
|
||||||
|
|
||||||
let text = o.get_text();
|
let text = o.get_text();
|
||||||
// Ensure we don't get newlines in the command; the history file is
|
// Ensure we don't get newlines in the command; the history file is
|
||||||
// newline-separated.
|
// newline-separated.
|
||||||
@ -852,6 +968,17 @@ LookingGlass.prototype = {
|
|||||||
this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY,
|
this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY,
|
||||||
entry: this._entry.clutter_text });
|
entry: this._entry.clutter_text });
|
||||||
|
|
||||||
|
this._autoComplete = new AutoComplete(this._entry);
|
||||||
|
this._autoComplete.connect('suggest', Lang.bind(this, function(a,e) {
|
||||||
|
this._showCompletions(e.completions);
|
||||||
|
}));
|
||||||
|
// If a completion is completed unambiguously, the currently-displayed completion
|
||||||
|
// suggestions become irrelevant.
|
||||||
|
this._autoComplete.connect('completion', Lang.bind(this, function(a,e) {
|
||||||
|
if (e.type == 'whole-word')
|
||||||
|
this._hideCompletions();
|
||||||
|
}));
|
||||||
|
|
||||||
this._resize();
|
this._resize();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -896,6 +1023,59 @@ LookingGlass.prototype = {
|
|||||||
this._notebook.scrollToBottom(0);
|
this._notebook.scrollToBottom(0);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_showCompletions: function(completions) {
|
||||||
|
if (!this._completionActor) {
|
||||||
|
let actor = new St.BoxLayout({ vertical: true });
|
||||||
|
|
||||||
|
this._completionText = new St.Label({ name: 'LookingGlassAutoCompletionText', style_class: 'lg-completions-text' });
|
||||||
|
this._completionText.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
this._completionText.clutter_text.line_wrap = true;
|
||||||
|
actor.add(this._completionText);
|
||||||
|
|
||||||
|
let line = new Clutter.Rectangle();
|
||||||
|
let padBin = new St.Bin({ x_fill: true, y_fill: true });
|
||||||
|
padBin.add_actor(line);
|
||||||
|
actor.add(padBin);
|
||||||
|
|
||||||
|
this._completionActor = actor;
|
||||||
|
this._evalBox.insert_before(this._completionActor, this._entryArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._completionText.set_text(completions.join(', '));
|
||||||
|
|
||||||
|
// Setting the height to -1 allows us to get its actual preferred height rather than
|
||||||
|
// whatever was last given in set_height by Tweener.
|
||||||
|
this._completionActor.set_height(-1);
|
||||||
|
let [minHeight, naturalHeight] = this._completionText.get_preferred_height(this._resultsArea.get_width());
|
||||||
|
|
||||||
|
// Don't reanimate if we are already visible
|
||||||
|
if (this._completionActor.visible) {
|
||||||
|
this._completionActor.height = naturalHeight;
|
||||||
|
} else {
|
||||||
|
this._completionActor.show();
|
||||||
|
Tweener.removeTweens(this._completionActor);
|
||||||
|
Tweener.addTween(this._completionActor, { time: AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION / St.get_slow_down_factor(),
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
height: naturalHeight,
|
||||||
|
opacity: 255
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_hideCompletions: function() {
|
||||||
|
if (this._completionActor) {
|
||||||
|
Tweener.removeTweens(this._completionActor);
|
||||||
|
Tweener.addTween(this._completionActor, { time: AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION / St.get_slow_down_factor(),
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
height: 0,
|
||||||
|
opacity: 0,
|
||||||
|
onComplete: Lang.bind(this, function () {
|
||||||
|
this._completionActor.hide();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_evaluate : function(command) {
|
_evaluate : function(command) {
|
||||||
this._history.addItem(command);
|
this._history.addItem(command);
|
||||||
|
|
||||||
@ -960,6 +1140,7 @@ LookingGlass.prototype = {
|
|||||||
// Handle key events which are relevant for all tabs of the LookingGlass
|
// Handle key events which are relevant for all tabs of the LookingGlass
|
||||||
_globalKeyPressEvent : function(actor, event) {
|
_globalKeyPressEvent : function(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
|
let modifierState = Shell.get_event_state(event);
|
||||||
if (symbol == Clutter.Escape) {
|
if (symbol == Clutter.Escape) {
|
||||||
if (this._objInspector.actor.visible) {
|
if (this._objInspector.actor.visible) {
|
||||||
this._objInspector.close();
|
this._objInspector.close();
|
||||||
@ -968,6 +1149,14 @@ LookingGlass.prototype = {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Ctrl+PgUp and Ctrl+PgDown switches tabs in the notebook view
|
||||||
|
if (modifierState & Clutter.ModifierType.CONTROL_MASK) {
|
||||||
|
if (symbol == Clutter.KEY_Page_Up) {
|
||||||
|
this._notebook.prevTab();
|
||||||
|
} else if (symbol == Clutter.KEY_Page_Down) {
|
||||||
|
this._notebook.nextTab();
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1018,5 +1207,5 @@ LookingGlass.prototype = {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(LookingGlass.prototype);
|
Signals.addSignalMethods(LookingGlass.prototype);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GDesktopEnums = imports.gi.GDesktopEnums;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
@ -12,22 +13,6 @@ const Main = imports.ui.main;
|
|||||||
const MagnifierDBus = imports.ui.magnifierDBus;
|
const MagnifierDBus = imports.ui.magnifierDBus;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
// Keep enums in sync with GSettings schemas
|
|
||||||
const MouseTrackingMode = {
|
|
||||||
NONE: 0,
|
|
||||||
CENTERED: 1,
|
|
||||||
PROPORTIONAL: 2,
|
|
||||||
PUSH: 3
|
|
||||||
};
|
|
||||||
|
|
||||||
const ScreenPosition = {
|
|
||||||
NONE: 0,
|
|
||||||
FULL_SCREEN: 1,
|
|
||||||
TOP_HALF: 2,
|
|
||||||
BOTTOM_HALF: 3,
|
|
||||||
LEFT_HALF: 4,
|
|
||||||
RIGHT_HALF: 5
|
|
||||||
};
|
|
||||||
|
|
||||||
const MOUSE_POLL_FREQUENCY = 50;
|
const MOUSE_POLL_FREQUENCY = 50;
|
||||||
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
||||||
@ -51,11 +36,9 @@ const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip';
|
|||||||
|
|
||||||
let magDBusService = null;
|
let magDBusService = null;
|
||||||
|
|
||||||
function Magnifier() {
|
const Magnifier = new Lang.Class({
|
||||||
this._init();
|
Name: 'Magnifier',
|
||||||
}
|
|
||||||
|
|
||||||
Magnifier.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
// Magnifier is a manager of ZoomRegions.
|
// Magnifier is a manager of ZoomRegions.
|
||||||
this._zoomRegions = [];
|
this._zoomRegions = [];
|
||||||
@ -520,7 +503,7 @@ Magnifier.prototype = {
|
|||||||
if (this._zoomRegions.length) {
|
if (this._zoomRegions.length) {
|
||||||
let position = this._settings.get_enum(SCREEN_POSITION_KEY);
|
let position = this._settings.get_enum(SCREEN_POSITION_KEY);
|
||||||
this._zoomRegions[0].setScreenPosition(position);
|
this._zoomRegions[0].setScreenPosition(position);
|
||||||
if (position != ScreenPosition.FULL_SCREEN)
|
if (position != GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN)
|
||||||
this._updateLensMode();
|
this._updateLensMode();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -558,21 +541,19 @@ Magnifier.prototype = {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Magnifier.prototype);
|
Signals.addSignalMethods(Magnifier.prototype);
|
||||||
|
|
||||||
function ZoomRegion(magnifier, mouseSourceActor) {
|
const ZoomRegion = new Lang.Class({
|
||||||
this._init(magnifier, mouseSourceActor);
|
Name: 'ZoomRegion',
|
||||||
}
|
|
||||||
|
|
||||||
ZoomRegion.prototype = {
|
|
||||||
_init: function(magnifier, mouseSourceActor) {
|
_init: function(magnifier, mouseSourceActor) {
|
||||||
this._magnifier = magnifier;
|
this._magnifier = magnifier;
|
||||||
|
|
||||||
this._mouseTrackingMode = MouseTrackingMode.NONE;
|
this._mouseTrackingMode = GDesktopEnums.MagnifierMouseTrackingMode.NONE;
|
||||||
this._clampScrollingAtEdges = false;
|
this._clampScrollingAtEdges = false;
|
||||||
this._lensMode = false;
|
this._lensMode = false;
|
||||||
this._screenPosition = ScreenPosition.FULL_SCREEN;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
||||||
|
|
||||||
this._magView = null;
|
this._magView = null;
|
||||||
this._uiGroupClone = null;
|
this._uiGroupClone = null;
|
||||||
@ -647,7 +628,8 @@ ZoomRegion.prototype = {
|
|||||||
* @mode: One of the enum MouseTrackingMode values.
|
* @mode: One of the enum MouseTrackingMode values.
|
||||||
*/
|
*/
|
||||||
setMouseTrackingMode: function(mode) {
|
setMouseTrackingMode: function(mode) {
|
||||||
if (mode >= MouseTrackingMode.NONE && mode <= MouseTrackingMode.PUSH)
|
if (mode >= GDesktopEnums.MagnifierMouseTrackingMode.NONE &&
|
||||||
|
mode <= GDesktopEnums.MagnifierMouseTrackingMode.PUSH)
|
||||||
this._mouseTrackingMode = mode;
|
this._mouseTrackingMode = mode;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -668,7 +650,7 @@ ZoomRegion.prototype = {
|
|||||||
*/
|
*/
|
||||||
setViewPort: function(viewPort) {
|
setViewPort: function(viewPort) {
|
||||||
this._setViewPort(viewPort);
|
this._setViewPort(viewPort);
|
||||||
this._screenPosition = ScreenPosition.NONE;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.NONE;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -750,7 +732,7 @@ ZoomRegion.prototype = {
|
|||||||
viewPort.width = global.screen_width;
|
viewPort.width = global.screen_width;
|
||||||
viewPort.height = global.screen_height/2;
|
viewPort.height = global.screen_height/2;
|
||||||
this._setViewPort(viewPort);
|
this._setViewPort(viewPort);
|
||||||
this._screenPosition = ScreenPosition.TOP_HALF;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.TOP_HALF;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -764,7 +746,7 @@ ZoomRegion.prototype = {
|
|||||||
viewPort.width = global.screen_width;
|
viewPort.width = global.screen_width;
|
||||||
viewPort.height = global.screen_height/2;
|
viewPort.height = global.screen_height/2;
|
||||||
this._setViewPort(viewPort);
|
this._setViewPort(viewPort);
|
||||||
this._screenPosition = ScreenPosition.BOTTOM_HALF;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.BOTTOM_HALF;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -778,7 +760,7 @@ ZoomRegion.prototype = {
|
|||||||
viewPort.width = global.screen_width/2;
|
viewPort.width = global.screen_width/2;
|
||||||
viewPort.height = global.screen_height;
|
viewPort.height = global.screen_height;
|
||||||
this._setViewPort(viewPort);
|
this._setViewPort(viewPort);
|
||||||
this._screenPosition = ScreenPosition.LEFT_HALF;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.LEFT_HALF;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -792,7 +774,7 @@ ZoomRegion.prototype = {
|
|||||||
viewPort.width = global.screen_width/2;
|
viewPort.width = global.screen_width/2;
|
||||||
viewPort.height = global.screen_height;
|
viewPort.height = global.screen_height;
|
||||||
this._setViewPort(viewPort);
|
this._setViewPort(viewPort);
|
||||||
this._screenPosition = ScreenPosition.RIGHT_HALF;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.RIGHT_HALF;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -808,7 +790,7 @@ ZoomRegion.prototype = {
|
|||||||
viewPort.height = global.screen_height;
|
viewPort.height = global.screen_height;
|
||||||
this.setViewPort(viewPort);
|
this.setViewPort(viewPort);
|
||||||
|
|
||||||
this._screenPosition = ScreenPosition.FULL_SCREEN;
|
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -821,19 +803,19 @@ ZoomRegion.prototype = {
|
|||||||
*/
|
*/
|
||||||
setScreenPosition: function(inPosition) {
|
setScreenPosition: function(inPosition) {
|
||||||
switch (inPosition) {
|
switch (inPosition) {
|
||||||
case ScreenPosition.FULL_SCREEN:
|
case GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN:
|
||||||
this.setFullScreenMode();
|
this.setFullScreenMode();
|
||||||
break;
|
break;
|
||||||
case ScreenPosition.TOP_HALF:
|
case GDesktopEnums.MagnifierScreenPosition.TOP_HALF:
|
||||||
this.setTopHalf();
|
this.setTopHalf();
|
||||||
break;
|
break;
|
||||||
case ScreenPosition.BOTTOM_HALF:
|
case GDesktopEnums.MagnifierScreenPosition.BOTTOM_HALF:
|
||||||
this.setBottomHalf();
|
this.setBottomHalf();
|
||||||
break;
|
break;
|
||||||
case ScreenPosition.LEFT_HALF:
|
case GDesktopEnums.MagnifierScreenPosition.LEFT_HALF:
|
||||||
this.setLeftHalf();
|
this.setLeftHalf();
|
||||||
break;
|
break;
|
||||||
case ScreenPosition.RIGHT_HALF:
|
case GDesktopEnums.MagnifierScreenPosition.RIGHT_HALF:
|
||||||
this.setRightHalf();
|
this.setRightHalf();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -856,7 +838,7 @@ ZoomRegion.prototype = {
|
|||||||
*/
|
*/
|
||||||
scrollToMousePos: function() {
|
scrollToMousePos: function() {
|
||||||
this._followingCursor = true;
|
this._followingCursor = true;
|
||||||
if (this._mouseTrackingMode != MouseTrackingMode.NONE)
|
if (this._mouseTrackingMode != GDesktopEnums.MagnifierMouseTrackingMode.NONE)
|
||||||
this._changeROI({ redoCursorTracking: true });
|
this._changeROI({ redoCursorTracking: true });
|
||||||
else
|
else
|
||||||
this._updateMousePosition();
|
this._updateMousePosition();
|
||||||
@ -991,7 +973,7 @@ ZoomRegion.prototype = {
|
|||||||
this._yMagFactor = params.yMagFactor;
|
this._yMagFactor = params.yMagFactor;
|
||||||
|
|
||||||
if (params.redoCursorTracking &&
|
if (params.redoCursorTracking &&
|
||||||
this._mouseTrackingMode != MouseTrackingMode.NONE) {
|
this._mouseTrackingMode != GDesktopEnums.MagnifierMouseTrackingMode.NONE) {
|
||||||
// This depends on this.xMagFactor/yMagFactor already being updated
|
// This depends on this.xMagFactor/yMagFactor already being updated
|
||||||
[params.xCenter, params.yCenter] = this._centerFromMousePosition();
|
[params.xCenter, params.yCenter] = this._centerFromMousePosition();
|
||||||
}
|
}
|
||||||
@ -1041,7 +1023,7 @@ ZoomRegion.prototype = {
|
|||||||
_isFullScreen: function() {
|
_isFullScreen: function() {
|
||||||
// Does the magnified view occupy the whole screen? Note that this
|
// Does the magnified view occupy the whole screen? Note that this
|
||||||
// doesn't necessarily imply
|
// doesn't necessarily imply
|
||||||
// this._screenPosition = ScreenPosition.FULL_SCREEN;
|
// this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
||||||
|
|
||||||
if (this._viewPortX != 0 || this._viewPortY != 0)
|
if (this._viewPortX != 0 || this._viewPortY != 0)
|
||||||
return false;
|
return false;
|
||||||
@ -1058,13 +1040,13 @@ ZoomRegion.prototype = {
|
|||||||
let xMouse = this._magnifier.xMouse;
|
let xMouse = this._magnifier.xMouse;
|
||||||
let yMouse = this._magnifier.yMouse;
|
let yMouse = this._magnifier.yMouse;
|
||||||
|
|
||||||
if (this._mouseTrackingMode == MouseTrackingMode.PROPORTIONAL) {
|
if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.PROPORTIONAL) {
|
||||||
return this._centerFromMouseProportional(xMouse, yMouse);
|
return this._centerFromMouseProportional(xMouse, yMouse);
|
||||||
}
|
}
|
||||||
else if (this._mouseTrackingMode == MouseTrackingMode.PUSH) {
|
else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.PUSH) {
|
||||||
return this._centerFromMousePush(xMouse, yMouse);
|
return this._centerFromMousePush(xMouse, yMouse);
|
||||||
}
|
}
|
||||||
else if (this._mouseTrackingMode == MouseTrackingMode.CENTERED) {
|
else if (this._mouseTrackingMode == GDesktopEnums.MagnifierMouseTrackingMode.CENTERED) {
|
||||||
return this._centerFromMouseCentered(xMouse, yMouse);
|
return this._centerFromMouseCentered(xMouse, yMouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1164,13 +1146,11 @@ ZoomRegion.prototype = {
|
|||||||
yMagMouse - groupHeight / 2);
|
yMagMouse - groupHeight / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Crosshairs() {
|
const Crosshairs = new Lang.Class({
|
||||||
this._init();
|
Name: 'Crosshairs',
|
||||||
}
|
|
||||||
|
|
||||||
Crosshairs.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
|
|
||||||
// Set the group containing the crosshairs to three times the desktop
|
// Set the group containing the crosshairs to three times the desktop
|
||||||
@ -1426,4 +1406,4 @@ Crosshairs.prototype = {
|
|||||||
this._vertTopHair.set_position((groupWidth - thickness) / 2, top);
|
this._vertTopHair.set_position((groupWidth - thickness) / 2, top);
|
||||||
this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom);
|
this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
|
const Lang = imports.lang;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const MAG_SERVICE_NAME = 'org.gnome.Magnifier';
|
const MAG_SERVICE_NAME = 'org.gnome.Magnifier';
|
||||||
@ -10,61 +11,99 @@ const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion';
|
|||||||
|
|
||||||
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
|
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
|
||||||
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
|
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
|
||||||
const MagnifierIface = {
|
const MagnifierIface = <interface name={MAG_SERVICE_NAME}>
|
||||||
name: MAG_SERVICE_NAME,
|
<method name="setActive">
|
||||||
methods: [
|
<arg type="b" direction="in" />
|
||||||
{ name: 'setActive', inSignature: 'b', outSignature: '' },
|
</method>
|
||||||
{ name: 'isActive', inSignature: '', outSignature: 'b' },
|
<method name="isActive">
|
||||||
{ name: 'showCursor', inSignature: '', outSignature: '' },
|
<arg type="b" direction="out" />
|
||||||
{ name: 'hideCursor', inSignature: '', outSignature: '' },
|
</method>
|
||||||
{ name: 'createZoomRegion', inSignature: 'ddaiai', outSignature: 'o' },
|
<method name="showCursor" />
|
||||||
{ name: 'addZoomRegion', inSignature: 'o', outSignature: 'b' },
|
<method name="hideCursor" />
|
||||||
{ name: 'getZoomRegions', inSignature: '', outSignature: 'ao' },
|
<method name="createZoomRegion">
|
||||||
{ name: 'clearAllZoomRegions', inSignature: '', outSignature: '' },
|
<arg type="d" direction="in" />
|
||||||
{ name: 'fullScreenCapable', inSignature: '', outSignature: 'b' },
|
<arg type="d" direction="in" />
|
||||||
|
<arg type="ai" direction="in" />
|
||||||
{ name: 'setCrosswireSize', inSignature: 'i', outSignature: '' },
|
<arg type="ai" direction="in" />
|
||||||
{ name: 'getCrosswireSize', inSignature: '', outSignature: 'i' },
|
<arg type="o" direction="out" />
|
||||||
{ name: 'setCrosswireLength', inSignature: 'i', outSignature: '' },
|
</method>
|
||||||
{ name: 'getCrosswireLength', inSignature: '', outSignature: 'i' },
|
<method name="addZoomRegion">
|
||||||
{ name: 'setCrosswireClip', inSignature: 'b', outSignature: '' },
|
<arg type="o" direction="in" />
|
||||||
{ name: 'getCrosswireClip', inSignature: '', outSignature: 'b' },
|
<arg type="b" direction="out" />
|
||||||
{ name: 'setCrosswireColor', inSignature: 'u', outSignature: '' },
|
</method>
|
||||||
{ name: 'getCrosswireColor', inSignature: '', outSignature: 'u' }
|
<method name="getZoomRegions">
|
||||||
],
|
<arg type="ao" direction="out" />
|
||||||
signals: [],
|
</method>
|
||||||
properties: []
|
<method name="clearAllZoomRegions" />
|
||||||
};
|
<method name="fullScreenCapable">
|
||||||
|
<arg type="b" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireSize">
|
||||||
|
<arg type="i" direction="in" />
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireSize">
|
||||||
|
<arg type="i" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireLength">
|
||||||
|
<arg type="i" direction="in" />
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireLength">
|
||||||
|
<arg type="i" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireClip">
|
||||||
|
<arg type="b" direction="in" />
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireClip">
|
||||||
|
<arg type="b" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireColor">
|
||||||
|
<arg type="u" direction="in" />
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireColor">
|
||||||
|
<arg type="u" direction="out" />
|
||||||
|
</method>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
|
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
|
||||||
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
|
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
|
||||||
const ZoomRegionIface = {
|
const ZoomRegionIface = <interface name={ZOOM_SERVICE_NAME}>
|
||||||
name: ZOOM_SERVICE_NAME,
|
<method name="setMagFactor">
|
||||||
methods: [
|
<arg type="d" direction="in" />
|
||||||
{ name: 'setMagFactor', inSignature: 'dd', outSignature: ''},
|
<arg type="d" direction="in" />
|
||||||
{ name: 'getMagFactor', inSignature: '', outSignature: 'dd' },
|
</method>
|
||||||
{ name: 'setRoi', inSignature: 'ai', outSignature: '' },
|
<method name="getMagFactor">
|
||||||
{ name: 'getRoi', inSignature: '', outSignature: 'ai' },
|
<arg type="d" direction="out" />
|
||||||
{ name: 'shiftContentsTo', inSignature: 'ii', outSignature: 'b' },
|
<arg type="d" direction="out" />
|
||||||
{ name: 'moveResize', inSignature: 'ai', outSignature: '' }
|
</method>
|
||||||
],
|
<method name="setRoi">
|
||||||
signals: [],
|
<arg type="ai" direction="in" />
|
||||||
properties: []
|
</method>
|
||||||
};
|
<method name="getRoi">
|
||||||
|
<arg type="ai" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="shiftContentsTo">
|
||||||
|
<arg type="i" direction="in" />
|
||||||
|
<arg type="i" direction="in" />
|
||||||
|
<arg type="b" direction="out" />
|
||||||
|
</method>
|
||||||
|
<method name="moveResize">
|
||||||
|
<arg type="ai" direction="in" />
|
||||||
|
</method>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
// For making unique ZoomRegion DBus proxy object paths of the form:
|
// For making unique ZoomRegion DBus proxy object paths of the form:
|
||||||
// '/org/gnome/Magnifier/ZoomRegion/zoomer0',
|
// '/org/gnome/Magnifier/ZoomRegion/zoomer0',
|
||||||
// '/org/gnome/Magnifier/ZoomRegion/zoomer1', etc.
|
// '/org/gnome/Magnifier/ZoomRegion/zoomer1', etc.
|
||||||
let _zoomRegionInstanceCount = 0;
|
let _zoomRegionInstanceCount = 0;
|
||||||
|
|
||||||
function ShellMagnifier() {
|
const ShellMagnifier = new Lang.Class({
|
||||||
this._init();
|
Name: 'ShellMagnifier',
|
||||||
}
|
|
||||||
|
|
||||||
ShellMagnifier.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._zoomers = {};
|
this._zoomers = {};
|
||||||
DBus.session.exportObject(MAG_SERVICE_PATH, this);
|
|
||||||
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(MagnifierIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, MAG_SERVICE_PATH);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -195,10 +234,10 @@ ShellMagnifier.prototype = {
|
|||||||
Main.magnifier.clearAllZoomRegions();
|
Main.magnifier.clearAllZoomRegions();
|
||||||
for (let objectPath in this._zoomers) {
|
for (let objectPath in this._zoomers) {
|
||||||
let proxyAndZoomer = this._zoomers[objectPath];
|
let proxyAndZoomer = this._zoomers[objectPath];
|
||||||
|
proxyAndZoomer.proxy.destroy();
|
||||||
proxyAndZoomer.proxy = null;
|
proxyAndZoomer.proxy = null;
|
||||||
proxyAndZoomer.zoomRegion = null;
|
proxyAndZoomer.zoomRegion = null;
|
||||||
delete this._zoomers[objectPath];
|
delete this._zoomers[objectPath];
|
||||||
DBus.session.unexportObject(proxyAndZoomer);
|
|
||||||
}
|
}
|
||||||
this._zoomers = {};
|
this._zoomers = {};
|
||||||
},
|
},
|
||||||
@ -285,7 +324,7 @@ ShellMagnifier.prototype = {
|
|||||||
// Drop the leading '#'.
|
// Drop the leading '#'.
|
||||||
return parseInt(colorString.slice(1), 16);
|
return parseInt(colorString.slice(1), 16);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ShellMagnifierZoomRegion:
|
* ShellMagnifierZoomRegion:
|
||||||
@ -293,15 +332,14 @@ ShellMagnifier.prototype = {
|
|||||||
* @zoomerObjectPath: String that is the path to a DBus ZoomRegion.
|
* @zoomerObjectPath: String that is the path to a DBus ZoomRegion.
|
||||||
* @zoomRegion: The actual zoom region associated with the object path.
|
* @zoomRegion: The actual zoom region associated with the object path.
|
||||||
*/
|
*/
|
||||||
function ShellMagnifierZoomRegion(zoomerObjectPath, zoomRegion) {
|
const ShellMagnifierZoomRegion = new Lang.Class({
|
||||||
this._init(zoomerObjectPath, zoomRegion);
|
Name: 'ShellMagnifierZoomRegion',
|
||||||
}
|
|
||||||
|
|
||||||
ShellMagnifierZoomRegion.prototype = {
|
|
||||||
_init: function(zoomerObjectPath, zoomRegion) {
|
_init: function(zoomerObjectPath, zoomRegion) {
|
||||||
this._zoomRegion = zoomRegion;
|
this._zoomRegion = zoomRegion;
|
||||||
DBus.session.proxifyObject(this, ZOOM_SERVICE_NAME, zoomerObjectPath);
|
|
||||||
DBus.session.exportObject(zoomerObjectPath, this);
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ZoomRegionIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, zoomerObjectPath);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -376,8 +414,9 @@ ShellMagnifierZoomRegion.prototype = {
|
|||||||
moveResize: function(viewPort) {
|
moveResize: function(viewPort) {
|
||||||
let viewRect = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
|
let viewRect = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
|
||||||
this._zoomRegion.setViewPort(viewRect);
|
this._zoomRegion.setViewPort(viewRect);
|
||||||
}
|
},
|
||||||
};
|
|
||||||
|
|
||||||
DBus.conformExport(ShellMagnifier.prototype, MagnifierIface);
|
destroy: function() {
|
||||||
DBus.conformExport(ShellMagnifierZoomRegion.prototype, ZoomRegionIface);
|
this._dbusImpl.unexport();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gdk = imports.gi.Gdk;
|
const Gdk = imports.gi.Gdk;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const GConf = imports.gi.GConf;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -134,15 +132,11 @@ function _initUserSession() {
|
|||||||
ExtensionSystem.init();
|
ExtensionSystem.init();
|
||||||
ExtensionSystem.loadExtensions();
|
ExtensionSystem.loadExtensions();
|
||||||
|
|
||||||
let shellwm = global.window_manager;
|
Meta.keybindings_set_custom_handler('panel-run-dialog', function() {
|
||||||
|
|
||||||
shellwm.takeover_keybinding('panel_run_dialog');
|
|
||||||
shellwm.connect('keybinding::panel_run_dialog', function () {
|
|
||||||
getRunDialog().open();
|
getRunDialog().open();
|
||||||
});
|
});
|
||||||
|
|
||||||
shellwm.takeover_keybinding('panel_main_menu');
|
Meta.keybindings_set_custom_handler('panel-main-menu', function () {
|
||||||
shellwm.connect('keybinding::panel_main_menu', function () {
|
|
||||||
overview.toggle();
|
overview.toggle();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -163,11 +157,6 @@ function start() {
|
|||||||
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
||||||
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
// Force a connection now; dbus.js will do this internally
|
|
||||||
// if we use its name acquisition stuff but we aren't right
|
|
||||||
// now; to do so we'd need to convert from its async calls
|
|
||||||
// back into sync ones.
|
|
||||||
DBus.session.flush();
|
|
||||||
|
|
||||||
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
||||||
// also initialize ShellAppSystem first. ShellAppSystem
|
// also initialize ShellAppSystem first. ShellAppSystem
|
||||||
@ -583,16 +572,6 @@ function _globalKeyPressHandler(actor, event) {
|
|||||||
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
||||||
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
||||||
|
|
||||||
// The screenshot action should always be available (even if a
|
|
||||||
// modal dialog is present)
|
|
||||||
if (action == Meta.KeyBindingAction.COMMAND_SCREENSHOT) {
|
|
||||||
let gconf = GConf.Client.get_default();
|
|
||||||
let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot');
|
|
||||||
if (command != null && command != '')
|
|
||||||
Util.spawnCommandLine(command);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other bindings are only available to the user session when the overview is up and
|
// Other bindings are only available to the user session when the overview is up and
|
||||||
// no modal dialog is present.
|
// no modal dialog is present.
|
||||||
if (global.session_type == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
|
if (global.session_type == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
|
||||||
@ -668,14 +647,17 @@ function _findModal(actor) {
|
|||||||
* initiated event. If not provided then the value of
|
* initiated event. If not provided then the value of
|
||||||
* global.get_current_time() is assumed.
|
* global.get_current_time() is assumed.
|
||||||
*
|
*
|
||||||
|
* @options: optional Meta.ModalOptions flags to indicate that the
|
||||||
|
* pointer is alrady grabbed
|
||||||
|
*
|
||||||
* Returns: true iff we successfully acquired a grab or already had one
|
* Returns: true iff we successfully acquired a grab or already had one
|
||||||
*/
|
*/
|
||||||
function pushModal(actor, timestamp) {
|
function pushModal(actor, timestamp, options) {
|
||||||
if (timestamp == undefined)
|
if (timestamp == undefined)
|
||||||
timestamp = global.get_current_time();
|
timestamp = global.get_current_time();
|
||||||
|
|
||||||
if (modalCount == 0) {
|
if (modalCount == 0) {
|
||||||
if (!global.begin_modal(timestamp)) {
|
if (!global.begin_modal(timestamp, options ? options : 0)) {
|
||||||
log('pushModal: invocation of begin_modal failed');
|
log('pushModal: invocation of begin_modal failed');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -83,11 +83,9 @@ function _fixMarkup(text, allowMarkup) {
|
|||||||
return GLib.markup_escape_text(text, -1);
|
return GLib.markup_escape_text(text, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function URLHighlighter(text, lineWrap, allowMarkup) {
|
const URLHighlighter = new Lang.Class({
|
||||||
this._init(text, lineWrap, allowMarkup);
|
Name: 'URLHighlighter',
|
||||||
}
|
|
||||||
|
|
||||||
URLHighlighter.prototype = {
|
|
||||||
_init: function(text, lineWrap, allowMarkup) {
|
_init: function(text, lineWrap, allowMarkup) {
|
||||||
if (!text)
|
if (!text)
|
||||||
text = '';
|
text = '';
|
||||||
@ -211,13 +209,11 @@ URLHighlighter.prototype = {
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function FocusGrabber() {
|
const FocusGrabber = new Lang.Class({
|
||||||
this._init();
|
Name: 'FocusGrabber',
|
||||||
}
|
|
||||||
|
|
||||||
FocusGrabber.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
|
|
||||||
@ -351,7 +347,7 @@ FocusGrabber.prototype = {
|
|||||||
this._togglingFocusGrabMode = false;
|
this._togglingFocusGrabMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(FocusGrabber.prototype);
|
Signals.addSignalMethods(FocusGrabber.prototype);
|
||||||
|
|
||||||
// Notification:
|
// Notification:
|
||||||
@ -408,11 +404,9 @@ Signals.addSignalMethods(FocusGrabber.prototype);
|
|||||||
// the content and the action area of the notification will be cleared.
|
// the content and the action area of the notification will be cleared.
|
||||||
// The content area is also always cleared if 'customContent' is false
|
// The content area is also always cleared if 'customContent' is false
|
||||||
// because it might contain the @banner that didn't fit in the banner mode.
|
// because it might contain the @banner that didn't fit in the banner mode.
|
||||||
function Notification(source, title, banner, params) {
|
const Notification = new Lang.Class({
|
||||||
this._init(source, title, banner, params);
|
Name: 'Notification',
|
||||||
}
|
|
||||||
|
|
||||||
Notification.prototype = {
|
|
||||||
IMAGE_SIZE: 125,
|
IMAGE_SIZE: 125,
|
||||||
|
|
||||||
_init: function(source, title, banner, params) {
|
_init: function(source, title, banner, params) {
|
||||||
@ -597,8 +591,7 @@ Notification.prototype = {
|
|||||||
this._table.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
||||||
vscrollbar_policy: this._scrollPolicy,
|
vscrollbar_policy: this._scrollPolicy,
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||||
style_class: 'vfade' });
|
|
||||||
this._table.add(this._scrollArea, { row: 1,
|
this._table.add(this._scrollArea, { row: 1,
|
||||||
col: 2 });
|
col: 2 });
|
||||||
this._updateLastColumnSettings();
|
this._updateLastColumnSettings();
|
||||||
@ -954,14 +947,12 @@ Notification.prototype = {
|
|||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
this.actor._delegate = null;
|
this.actor._delegate = null;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Notification.prototype);
|
Signals.addSignalMethods(Notification.prototype);
|
||||||
|
|
||||||
function Source(title) {
|
const Source = new Lang.Class({
|
||||||
this._init(title);
|
Name: 'MessageTraySource',
|
||||||
}
|
|
||||||
|
|
||||||
Source.prototype = {
|
|
||||||
ICON_SIZE: 24,
|
ICON_SIZE: 24,
|
||||||
|
|
||||||
_init: function(title) {
|
_init: function(title) {
|
||||||
@ -992,6 +983,7 @@ Source.prototype = {
|
|||||||
|
|
||||||
this.isTransient = false;
|
this.isTransient = false;
|
||||||
this.isChat = false;
|
this.isChat = false;
|
||||||
|
this.isMuted = false;
|
||||||
|
|
||||||
this.notifications = [];
|
this.notifications = [];
|
||||||
},
|
},
|
||||||
@ -1056,6 +1048,13 @@ Source.prototype = {
|
|||||||
this.emit('title-changed');
|
this.emit('title-changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setMuted: function(muted) {
|
||||||
|
if (!this.isChat || this.isMuted == muted)
|
||||||
|
return;
|
||||||
|
this.isMuted = muted;
|
||||||
|
this.emit('muted-changed');
|
||||||
|
},
|
||||||
|
|
||||||
// Called to create a new icon actor (of size this.ICON_SIZE).
|
// Called to create a new icon actor (of size this.ICON_SIZE).
|
||||||
// Must be overridden by the subclass if you do not pass icons
|
// Must be overridden by the subclass if you do not pass icons
|
||||||
// explicitly to the Notification() constructor.
|
// explicitly to the Notification() constructor.
|
||||||
@ -1094,7 +1093,8 @@ Source.prototype = {
|
|||||||
|
|
||||||
notify: function(notification) {
|
notify: function(notification) {
|
||||||
this.pushNotification(notification);
|
this.pushNotification(notification);
|
||||||
this.emit('notify', notification);
|
if (!this.isMuted)
|
||||||
|
this.emit('notify', notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function(reason) {
|
destroy: function(reason) {
|
||||||
@ -1134,14 +1134,12 @@ Source.prototype = {
|
|||||||
_lastNotificationRemoved: function() {
|
_lastNotificationRemoved: function() {
|
||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Source.prototype);
|
Signals.addSignalMethods(Source.prototype);
|
||||||
|
|
||||||
function SummaryItem(source) {
|
const SummaryItem = new Lang.Class({
|
||||||
this._init(source);
|
Name: 'SummaryItem',
|
||||||
}
|
|
||||||
|
|
||||||
SummaryItem.prototype = {
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
this.source = source;
|
this.source = source;
|
||||||
this.source.connect('notification-added', Lang.bind(this, this._notificationAddedToSource));
|
this.source.connect('notification-added', Lang.bind(this, this._notificationAddedToSource));
|
||||||
@ -1210,6 +1208,18 @@ SummaryItem.prototype = {
|
|||||||
}));
|
}));
|
||||||
this.rightClickMenu.add(item.actor);
|
this.rightClickMenu.add(item.actor);
|
||||||
|
|
||||||
|
if (source.isChat) {
|
||||||
|
item = new PopupMenu.PopupMenuItem('');
|
||||||
|
item.actor.connect('notify::mapped', Lang.bind(this, function() {
|
||||||
|
item.label.set_text(source.isMuted ? _("Unmute") : _("Mute"));
|
||||||
|
}));
|
||||||
|
item.connect('activate', Lang.bind(this, function() {
|
||||||
|
source.setMuted(!source.isMuted);
|
||||||
|
this.emit('done-displaying-content');
|
||||||
|
}));
|
||||||
|
this.rightClickMenu.add(item.actor);
|
||||||
|
}
|
||||||
|
|
||||||
let focusManager = St.FocusManager.get_for_stage(global.stage);
|
let focusManager = St.FocusManager.get_for_stage(global.stage);
|
||||||
focusManager.add_group(this.rightClickMenu);
|
focusManager.add_group(this.rightClickMenu);
|
||||||
},
|
},
|
||||||
@ -1320,21 +1330,22 @@ SummaryItem.prototype = {
|
|||||||
if (this.notificationStack.get_children().length > 0)
|
if (this.notificationStack.get_children().length > 0)
|
||||||
this.notificationStack.get_children()[0]._delegate.setIconVisible(true);
|
this.notificationStack.get_children()[0]._delegate.setIconVisible(true);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(SummaryItem.prototype);
|
Signals.addSignalMethods(SummaryItem.prototype);
|
||||||
|
|
||||||
function MessageTray() {
|
const MessageTray = new Lang.Class({
|
||||||
this._init();
|
Name: 'MessageTray',
|
||||||
}
|
|
||||||
|
|
||||||
MessageTray.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._presence = new GnomeSession.Presence();
|
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
|
||||||
|
this._onStatusChanged(proxy.status);
|
||||||
|
}));
|
||||||
this._userStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
this._userStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
||||||
this._busy = false;
|
this._busy = false;
|
||||||
this._backFromAway = false;
|
this._backFromAway = false;
|
||||||
this._presence.connect('StatusChanged', Lang.bind(this, this._onStatusChanged));
|
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
||||||
this._presence.getStatus(Lang.bind(this, this._onStatusChanged));
|
this._onStatusChanged(status);
|
||||||
|
}));
|
||||||
|
|
||||||
this.actor = new St.Group({ name: 'message-tray',
|
this.actor = new St.Group({ name: 'message-tray',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
@ -1518,6 +1529,14 @@ MessageTray.prototype = {
|
|||||||
|
|
||||||
source.connect('notify', Lang.bind(this, this._onNotify));
|
source.connect('notify', Lang.bind(this, this._onNotify));
|
||||||
|
|
||||||
|
source.connect('muted-changed', Lang.bind(this,
|
||||||
|
function () {
|
||||||
|
if (source.isMuted)
|
||||||
|
this._notificationQueue = this._notificationQueue.filter(function(notification) {
|
||||||
|
return source != notification.source;
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
summaryItem.actor.connect('notify::hover', Lang.bind(this,
|
summaryItem.actor.connect('notify::hover', Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
this._onSummaryItemHoverChanged(summaryItem);
|
this._onSummaryItemHoverChanged(summaryItem);
|
||||||
@ -1832,7 +1851,7 @@ MessageTray.prototype = {
|
|||||||
// automatically. Instead, the user is able to expand the notification by mousing away from it and then
|
// automatically. Instead, the user is able to expand the notification by mousing away from it and then
|
||||||
// mousing back in. Because this is an expected action, we set the boolean flag that indicates that a longer
|
// mousing back in. Because this is an expected action, we set the boolean flag that indicates that a longer
|
||||||
// timeout should be used before popping down the notification.
|
// timeout should be used before popping down the notification.
|
||||||
if (this._notificationBin.contains(actorAtShowNotificationPosition)) {
|
if (this.actor.contains(actorAtShowNotificationPosition)) {
|
||||||
this._useLongerTrayLeftTimeout = true;
|
this._useLongerTrayLeftTimeout = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1874,7 +1893,7 @@ MessageTray.prototype = {
|
|||||||
this._updateState();
|
this._updateState();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onStatusChanged: function(presence, status) {
|
_onStatusChanged: function(status) {
|
||||||
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
|
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
|
||||||
this._userStatus = status;
|
this._userStatus = status;
|
||||||
|
|
||||||
@ -2395,17 +2414,14 @@ MessageTray.prototype = {
|
|||||||
if (this._clickedSummaryItem)
|
if (this._clickedSummaryItem)
|
||||||
this._updateState();
|
this._updateState();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function SystemNotificationSource() {
|
const SystemNotificationSource = new Lang.Class({
|
||||||
this._init();
|
Name: 'SystemNotificationSource',
|
||||||
}
|
Extends: Source,
|
||||||
|
|
||||||
SystemNotificationSource.prototype = {
|
|
||||||
__proto__: Source.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Source.prototype._init.call(this, _("System Information"));
|
this.parent(_("System Information"));
|
||||||
|
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
},
|
},
|
||||||
@ -2419,4 +2435,4 @@ SystemNotificationSource.prototype = {
|
|||||||
open: function() {
|
open: function() {
|
||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -29,11 +29,9 @@ const State = {
|
|||||||
FADED_OUT: 4
|
FADED_OUT: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
function ModalDialog() {
|
const ModalDialog = new Lang.Class({
|
||||||
this._init();
|
Name: 'ModalDialog',
|
||||||
}
|
|
||||||
|
|
||||||
ModalDialog.prototype = {
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { shellReactive: false,
|
params = Params.parse(params, { shellReactive: false,
|
||||||
styleClass: null });
|
styleClass: null });
|
||||||
@ -110,7 +108,7 @@ ModalDialog.prototype = {
|
|||||||
this._buttonLayout.destroy_children();
|
this._buttonLayout.destroy_children();
|
||||||
this._actionKeys = {};
|
this._actionKeys = {};
|
||||||
|
|
||||||
for (let i = 0; i < buttons.length; i ++) {
|
for (let i = 0; i < buttons.length; i++) {
|
||||||
let buttonInfo = buttons[i];
|
let buttonInfo = buttons[i];
|
||||||
let label = buttonInfo['label'];
|
let label = buttonInfo['label'];
|
||||||
let action = buttonInfo['action'];
|
let action = buttonInfo['action'];
|
||||||
@ -303,5 +301,5 @@ ModalDialog.prototype = {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ModalDialog.prototype);
|
Signals.addSignalMethods(ModalDialog.prototype);
|
||||||
|
@ -32,15 +32,12 @@ const ModalDialog = imports.ui.modalDialog;
|
|||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
|
|
||||||
function NetworkSecretDialog() {
|
const NetworkSecretDialog = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NetworkSecretDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
NetworkSecretDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function(agent, requestId, connection, settingName, hints) {
|
_init: function(agent, requestId, connection, settingName, hints) {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'polkit-dialog' });
|
this.parent({ styleClass: 'polkit-dialog' });
|
||||||
|
|
||||||
this._agent = agent;
|
this._agent = agent;
|
||||||
this._requestId = requestId;
|
this._requestId = requestId;
|
||||||
@ -358,13 +355,11 @@ NetworkSecretDialog.prototype = {
|
|||||||
|
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NetworkAgent() {
|
const NetworkAgent = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NetworkAgent',
|
||||||
}
|
|
||||||
|
|
||||||
NetworkAgent.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._native = new Shell.NetworkAgent({ auto_register: true,
|
this._native = new Shell.NetworkAgent({ auto_register: true,
|
||||||
identifier: 'org.gnome.Shell.NetworkAgent' });
|
identifier: 'org.gnome.Shell.NetworkAgent' });
|
||||||
@ -387,4 +382,4 @@ NetworkAgent.prototype = {
|
|||||||
this._dialogs[requestId].close(global.get_current_time());
|
this._dialogs[requestId].close(global.get_current_time());
|
||||||
this._dialogs[requestId].destroy();
|
this._dialogs[requestId].destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const DBus = imports.dbus;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@ -16,49 +16,52 @@ const Util = imports.misc.util;
|
|||||||
|
|
||||||
let nextNotificationId = 1;
|
let nextNotificationId = 1;
|
||||||
|
|
||||||
// Should really be defined in dbus.js
|
// Should really be defined in Gio.js
|
||||||
const BusIface = {
|
const BusIface = <interface name="org.freedesktop.DBus">
|
||||||
name: 'org.freedesktop.DBus',
|
<method name="GetConnectionUnixProcessID">
|
||||||
methods: [{ name: 'GetConnectionUnixProcessID',
|
<arg type="s" direction="in" />
|
||||||
inSignature: 's',
|
<arg type="u" direction="out" />
|
||||||
outSignature: 'i' }]
|
</method>
|
||||||
};
|
</interface>;
|
||||||
|
|
||||||
const Bus = function () {
|
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
|
||||||
this._init();
|
function Bus() {
|
||||||
};
|
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
|
||||||
|
}
|
||||||
|
|
||||||
Bus.prototype = {
|
const NotificationDaemonIface = <interface name="org.freedesktop.Notifications">
|
||||||
_init: function() {
|
<method name="Notify">
|
||||||
DBus.session.proxifyObject(this, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
|
<arg type="s" direction="in"/>
|
||||||
}
|
<arg type="u" direction="in"/>
|
||||||
};
|
<arg type="s" direction="in"/>
|
||||||
|
<arg type="s" direction="in"/>
|
||||||
DBus.proxifyPrototype(Bus.prototype, BusIface);
|
<arg type="s" direction="in"/>
|
||||||
|
<arg type="as" direction="in"/>
|
||||||
const NotificationDaemonIface = {
|
<arg type="a{sv}" direction="in"/>
|
||||||
name: 'org.freedesktop.Notifications',
|
<arg type="i" direction="in"/>
|
||||||
methods: [{ name: 'Notify',
|
<arg type="u" direction="out"/>
|
||||||
inSignature: 'susssasa{sv}i',
|
</method>
|
||||||
outSignature: 'u'
|
<method name="CloseNotification">
|
||||||
},
|
<arg type="u" direction="in"/>
|
||||||
{ name: 'CloseNotification',
|
</method>
|
||||||
inSignature: 'u',
|
<method name="GetCapabilities">
|
||||||
outSignature: ''
|
<arg type="as" direction="out"/>
|
||||||
},
|
</method>
|
||||||
{ name: 'GetCapabilities',
|
<method name="GetServerInformation">
|
||||||
inSignature: '',
|
<arg type="s" direction="out"/>
|
||||||
outSignature: 'as'
|
<arg type="s" direction="out"/>
|
||||||
},
|
<arg type="s" direction="out"/>
|
||||||
{ name: 'GetServerInformation',
|
<arg type="s" direction="out"/>
|
||||||
inSignature: '',
|
</method>
|
||||||
outSignature: 'ssss'
|
<signal name="NotificationClosed">
|
||||||
}],
|
<arg type="u"/>
|
||||||
signals: [{ name: 'NotificationClosed',
|
<arg type="u"/>
|
||||||
inSignature: 'uu' },
|
</signal>
|
||||||
{ name: 'ActionInvoked',
|
<signal name="ActionInvoked">
|
||||||
inSignature: 'us' }]
|
<arg type="u"/>
|
||||||
};
|
<arg type="s"/>
|
||||||
|
</signal>
|
||||||
|
</interface>;
|
||||||
|
|
||||||
const NotificationClosedReason = {
|
const NotificationClosedReason = {
|
||||||
EXPIRED: 1,
|
EXPIRED: 1,
|
||||||
@ -84,13 +87,12 @@ const rewriteRules = {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
function NotificationDaemon() {
|
const NotificationDaemon = new Lang.Class({
|
||||||
this._init();
|
Name: 'NotificationDaemon',
|
||||||
}
|
|
||||||
|
|
||||||
NotificationDaemon.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
DBus.session.exportObject('/org/freedesktop/Notifications', this);
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(NotificationDaemonIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
|
||||||
|
|
||||||
this._sources = {};
|
this._sources = {};
|
||||||
this._senderToPid = {};
|
this._senderToPid = {};
|
||||||
@ -195,8 +197,8 @@ NotificationDaemon.prototype = {
|
|||||||
return source;
|
return source;
|
||||||
},
|
},
|
||||||
|
|
||||||
Notify: function(appName, replacesId, icon, summary, body,
|
NotifyAsync: function(params, invocation) {
|
||||||
actions, hints, timeout) {
|
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
|
||||||
let id;
|
let id;
|
||||||
|
|
||||||
// Filter out chat, presence, calls and invitation notifications from
|
// Filter out chat, presence, calls and invitation notifications from
|
||||||
@ -215,7 +217,7 @@ NotificationDaemon.prototype = {
|
|||||||
function () {
|
function () {
|
||||||
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
|
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
|
||||||
}));
|
}));
|
||||||
return id;
|
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
let rewrites = rewriteRules[appName];
|
let rewrites = rewriteRules[appName];
|
||||||
@ -227,6 +229,11 @@ NotificationDaemon.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let hint in hints) {
|
||||||
|
// unpack the variants
|
||||||
|
hints[hint] = hints[hint].deep_unpack();
|
||||||
|
}
|
||||||
|
|
||||||
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
|
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
|
||||||
|
|
||||||
// Be compatible with the various hints for image data and image path
|
// Be compatible with the various hints for image data and image path
|
||||||
@ -258,51 +265,55 @@ NotificationDaemon.prototype = {
|
|||||||
}
|
}
|
||||||
this._notifications[id] = ndata;
|
this._notifications[id] = ndata;
|
||||||
|
|
||||||
let sender = DBus.getCurrentMessageContext().sender;
|
let sender = invocation.get_sender();
|
||||||
let pid = this._senderToPid[sender];
|
let pid = this._senderToPid[sender];
|
||||||
|
|
||||||
let source = this._getSource(appName, pid, ndata, sender);
|
let source = this._getSource(appName, pid, ndata, sender);
|
||||||
|
|
||||||
if (source) {
|
if (source) {
|
||||||
this._notifyForSource(source, ndata);
|
this._notifyForSource(source, ndata);
|
||||||
return id;
|
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (replacesId) {
|
if (replacesId) {
|
||||||
// There's already a pending call to GetConnectionUnixProcessID,
|
// There's already a pending call to GetConnectionUnixProcessID,
|
||||||
// which will see the new notification data when it finishes,
|
// which will see the new notification data when it finishes,
|
||||||
// so we don't have to do anything.
|
// so we don't have to do anything.
|
||||||
return id;
|
return invocation.return_value(GLib.Variant.new('(u)', [id]));;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._busProxy.GetConnectionUnixProcessIDRemote(sender, Lang.bind(this,
|
this._busProxy.GetConnectionUnixProcessIDRemote(sender, Lang.bind(this, function (result, excp) {
|
||||||
function (pid, ex) {
|
// The app may have updated or removed the notification
|
||||||
// The app may have updated or removed the notification
|
ndata = this._notifications[id];
|
||||||
ndata = this._notifications[id];
|
if (!ndata)
|
||||||
if (!ndata)
|
return;
|
||||||
return;
|
|
||||||
|
|
||||||
source = this._getSource(appName, pid, ndata, sender);
|
if (excp) {
|
||||||
|
logError(excp, 'Call to GetConnectionUnixProcessID failed');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// We only store sender-pid entries for persistent sources.
|
let [pid] = result;
|
||||||
// Removing the entries once the source is destroyed
|
source = this._getSource(appName, pid, ndata, sender);
|
||||||
// would result in the entries associated with transient
|
|
||||||
// sources removed once the notification is shown anyway.
|
|
||||||
// However, keeping these pairs would mean that we would
|
|
||||||
// possibly remove an entry associated with a persistent
|
|
||||||
// source when a transient source for the same sender is
|
|
||||||
// distroyed.
|
|
||||||
if (!source.isTransient) {
|
|
||||||
this._senderToPid[sender] = pid;
|
|
||||||
source.connect('destroy', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
delete this._senderToPid[sender];
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
this._notifyForSource(source, ndata);
|
|
||||||
}));
|
|
||||||
|
|
||||||
return id;
|
// We only store sender-pid entries for persistent sources.
|
||||||
|
// Removing the entries once the source is destroyed
|
||||||
|
// would result in the entries associated with transient
|
||||||
|
// sources removed once the notification is shown anyway.
|
||||||
|
// However, keeping these pairs would mean that we would
|
||||||
|
// possibly remove an entry associated with a persistent
|
||||||
|
// source when a transient source for the same sender is
|
||||||
|
// distroyed.
|
||||||
|
if (!source.isTransient) {
|
||||||
|
this._senderToPid[sender] = pid;
|
||||||
|
source.connect('destroy', Lang.bind(this, function() {
|
||||||
|
delete this._senderToPid[sender];
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
this._notifyForSource(source, ndata);
|
||||||
|
}));
|
||||||
|
|
||||||
|
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||||
},
|
},
|
||||||
|
|
||||||
_notifyForSource: function(source, ndata) {
|
_notifyForSource: function(source, ndata) {
|
||||||
@ -442,17 +453,13 @@ NotificationDaemon.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_emitNotificationClosed: function(id, reason) {
|
_emitNotificationClosed: function(id, reason) {
|
||||||
DBus.session.emit_signal('/org/freedesktop/Notifications',
|
this._dbusImpl.emit_signal('NotificationClosed',
|
||||||
'org.freedesktop.Notifications',
|
GLib.Variant.new('(uu)', [id, reason]));
|
||||||
'NotificationClosed', 'uu',
|
|
||||||
[id, reason]);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_emitActionInvoked: function(id, action) {
|
_emitActionInvoked: function(id, action) {
|
||||||
DBus.session.emit_signal('/org/freedesktop/Notifications',
|
this._dbusImpl.emit_signal('ActionInvoked',
|
||||||
'org.freedesktop.Notifications',
|
GLib.Variant.new('(us)', [id, action]));
|
||||||
'ActionInvoked', 'us',
|
|
||||||
[id, action]);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onTrayIconAdded: function(o, icon) {
|
_onTrayIconAdded: function(o, icon) {
|
||||||
@ -465,31 +472,23 @@ NotificationDaemon.prototype = {
|
|||||||
if (source)
|
if (source)
|
||||||
source.destroy();
|
source.destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
DBus.conformExport(NotificationDaemon.prototype, NotificationDaemonIface);
|
const Source = new Lang.Class({
|
||||||
|
Name: 'NotificationDaemonSource',
|
||||||
function Source(title, pid, sender) {
|
Extends: MessageTray.Source,
|
||||||
this._init(title, pid, sender);
|
|
||||||
}
|
|
||||||
|
|
||||||
Source.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(title, pid, sender) {
|
_init: function(title, pid, sender) {
|
||||||
MessageTray.Source.prototype._init.call(this, title);
|
this.parent(title);
|
||||||
|
|
||||||
this._pid = pid;
|
this._pid = pid;
|
||||||
if (sender)
|
if (sender)
|
||||||
// TODO: dbus-glib implementation of watch_name() doesn’t return an id to be used for
|
this._nameWatcherId = Gio.DBus.session.watch_name(sender,
|
||||||
// unwatch_name() or implement unwatch_name(), however when we move to using GDBus implementation,
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
// we should save the id here and call unwatch_name() with it in destroy().
|
null,
|
||||||
// Moving to GDBus is the work in progress: https://bugzilla.gnome.org/show_bug.cgi?id=648651
|
Lang.bind(this, this._onNameVanished));
|
||||||
// and https://bugzilla.gnome.org/show_bug.cgi?id=622921 .
|
else
|
||||||
DBus.session.watch_name(sender,
|
this._nameWatcherId = 0;
|
||||||
false,
|
|
||||||
null,
|
|
||||||
Lang.bind(this, this._onNameVanished));
|
|
||||||
|
|
||||||
this._setApp();
|
this._setApp();
|
||||||
if (this.app)
|
if (this.app)
|
||||||
@ -597,6 +596,11 @@ Source.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
MessageTray.Source.prototype.destroy.call(this);
|
if (this._nameWatcherId) {
|
||||||
|
Gio.DBus.session.unwatch_name(this._nameWatcherId);
|
||||||
|
this._nameWatcherId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parent();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -46,11 +46,9 @@ const SwipeScrollResult = {
|
|||||||
CLICK: 2
|
CLICK: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
function ShellInfo() {
|
const ShellInfo = new Lang.Class({
|
||||||
this._init();
|
Name: 'ShellInfo',
|
||||||
}
|
|
||||||
|
|
||||||
ShellInfo.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._source = null;
|
this._source = null;
|
||||||
this._undoCallback = null;
|
this._undoCallback = null;
|
||||||
@ -95,13 +93,11 @@ ShellInfo.prototype = {
|
|||||||
|
|
||||||
this._source.notify(notification);
|
this._source.notify(notification);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Overview() {
|
const Overview = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Overview',
|
||||||
}
|
|
||||||
|
|
||||||
Overview.prototype = {
|
|
||||||
_init : function(params) {
|
_init : function(params) {
|
||||||
params = Params.parse(params, { isDummy: false });
|
params = Params.parse(params, { isDummy: false });
|
||||||
|
|
||||||
@ -811,5 +807,5 @@ Overview.prototype = {
|
|||||||
this._needsFakePointerEvent = false;
|
this._needsFakePointerEvent = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Overview.prototype);
|
Signals.addSignalMethods(Overview.prototype);
|
||||||
|
107
js/ui/panel.js
107
js/ui/panel.js
@ -3,6 +3,7 @@
|
|||||||
const Cairo = imports.cairo;
|
const Cairo = imports.cairo;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Pango = imports.gi.Pango;
|
const Pango = imports.gi.Pango;
|
||||||
@ -98,11 +99,9 @@ function _unpremultiply(color) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function AnimatedIcon(name, size) {
|
const AnimatedIcon = new Lang.Class({
|
||||||
this._init(name, size);
|
Name: 'AnimatedIcon',
|
||||||
}
|
|
||||||
|
|
||||||
AnimatedIcon.prototype = {
|
|
||||||
_init: function(name, size) {
|
_init: function(name, size) {
|
||||||
this.actor = new St.Bin({ visible: false });
|
this.actor = new St.Bin({ visible: false });
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
@ -139,13 +138,11 @@ AnimatedIcon.prototype = {
|
|||||||
if (this._timeoutId)
|
if (this._timeoutId)
|
||||||
Mainloop.source_remove(this._timeoutId);
|
Mainloop.source_remove(this._timeoutId);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function TextShadower() {
|
const TextShadower = new Lang.Class({
|
||||||
this._init();
|
Name: 'TextShadower',
|
||||||
}
|
|
||||||
|
|
||||||
TextShadower.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new Shell.GenericContainer();
|
this.actor = new Shell.GenericContainer();
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
@ -225,7 +222,7 @@ TextShadower.prototype = {
|
|||||||
child.allocate(childBox, flags);
|
child.allocate(childBox, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AppMenuButton:
|
* AppMenuButton:
|
||||||
@ -235,17 +232,16 @@ TextShadower.prototype = {
|
|||||||
* this menu also handles startup notification for it. So when we
|
* this menu also handles startup notification for it. So when we
|
||||||
* have an active startup notification, we switch modes to display that.
|
* have an active startup notification, we switch modes to display that.
|
||||||
*/
|
*/
|
||||||
function AppMenuButton() {
|
const AppMenuButton = new Lang.Class({
|
||||||
this._init();
|
Name: 'AppMenuButton',
|
||||||
}
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
AppMenuButton.prototype = {
|
_init: function(menuManager) {
|
||||||
__proto__: PanelMenu.Button.prototype,
|
this.parent(0.0, true);
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
PanelMenu.Button.prototype._init.call(this, 0.0);
|
|
||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
|
this._menuManager = menuManager;
|
||||||
this._targetApp = null;
|
this._targetApp = null;
|
||||||
|
|
||||||
let bin = new St.Bin({ name: 'appMenu' });
|
let bin = new St.Bin({ name: 'appMenu' });
|
||||||
@ -271,10 +267,6 @@ AppMenuButton.prototype = {
|
|||||||
|
|
||||||
this._iconBottomClip = 0;
|
this._iconBottomClip = 0;
|
||||||
|
|
||||||
this._quitMenu = new PopupMenu.PopupMenuItem('');
|
|
||||||
this.menu.addMenuItem(this._quitMenu);
|
|
||||||
this._quitMenu.connect('activate', Lang.bind(this, this._onQuit));
|
|
||||||
|
|
||||||
this._visible = !Main.overview.visible;
|
this._visible = !Main.overview.visible;
|
||||||
if (!this._visible)
|
if (!this._visible)
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
@ -453,12 +445,6 @@ AppMenuButton.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onQuit: function() {
|
|
||||||
if (this._targetApp == null)
|
|
||||||
return;
|
|
||||||
this._targetApp.request_quit();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onAppStateChanged: function(appSys, app) {
|
_onAppStateChanged: function(appSys, app) {
|
||||||
let state = app.state;
|
let state = app.state;
|
||||||
if (state != Shell.AppState.STARTING) {
|
if (state != Shell.AppState.STARTING) {
|
||||||
@ -520,8 +506,10 @@ AppMenuButton.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (targetApp == this._targetApp) {
|
if (targetApp == this._targetApp) {
|
||||||
if (targetApp && targetApp.get_state() != Shell.AppState.STARTING)
|
if (targetApp && targetApp.get_state() != Shell.AppState.STARTING) {
|
||||||
this.stopAnimation();
|
this.stopAnimation();
|
||||||
|
this._maybeSetMenu();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -535,33 +523,54 @@ AppMenuButton.prototype = {
|
|||||||
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());
|
||||||
// TODO - _quit() doesn't really work on apps in state STARTING yet
|
|
||||||
this._quitMenu.label.set_text(_("Quit %s").format(targetApp.get_name()));
|
|
||||||
|
|
||||||
this._iconBox.set_child(icon);
|
this._iconBox.set_child(icon);
|
||||||
this._iconBox.show();
|
this._iconBox.show();
|
||||||
|
|
||||||
if (targetApp.get_state() == Shell.AppState.STARTING)
|
if (targetApp.get_state() == Shell.AppState.STARTING)
|
||||||
this.startAnimation();
|
this.startAnimation();
|
||||||
|
else
|
||||||
|
this._maybeSetMenu();
|
||||||
|
|
||||||
this.emit('changed');
|
this.emit('changed');
|
||||||
|
},
|
||||||
|
|
||||||
|
_maybeSetMenu: function() {
|
||||||
|
let menu;
|
||||||
|
|
||||||
|
if (this._targetApp.action_group) {
|
||||||
|
if (this.menu instanceof PopupMenu.RemoteMenu &&
|
||||||
|
this.menu.actionGroup == this._targetApp.action_group)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu = new PopupMenu.RemoteMenu(this.actor, this._targetApp.menu, this._targetApp.action_group);
|
||||||
|
} else {
|
||||||
|
if (this.menu && !(this.menu instanceof PopupMenu.RemoteMenu))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// fallback to older menu
|
||||||
|
menu = new PopupMenu.PopupMenu(this.actor, 0.0, St.Side.TOP, 0);
|
||||||
|
menu.addAction(_("Quit"), Lang.bind(this, function() {
|
||||||
|
this._targetApp.request_quit();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setMenu(menu);
|
||||||
|
this._menuManager.addMenu(menu);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(AppMenuButton.prototype);
|
Signals.addSignalMethods(AppMenuButton.prototype);
|
||||||
|
|
||||||
// Activities button. Because everything else in the top bar is a
|
// Activities button. Because everything else in the top bar is a
|
||||||
// PanelMenu.Button, it simplifies some things to make this be one too.
|
// PanelMenu.Button, it simplifies some things to make this be one too.
|
||||||
// We just hack it up to not actually have a menu attached to it.
|
// We just hack it up to not actually have a menu attached to it.
|
||||||
function ActivitiesButton() {
|
const ActivitiesButton = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ActivitiesButton',
|
||||||
}
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
ActivitiesButton.prototype = {
|
|
||||||
__proto__: PanelMenu.Button.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.Button.prototype._init.call(this, 0.0);
|
this.parent(0.0);
|
||||||
|
|
||||||
let container = new Shell.GenericContainer();
|
let container = new Shell.GenericContainer();
|
||||||
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||||
@ -698,13 +707,11 @@ ActivitiesButton.prototype = {
|
|||||||
Mainloop.source_remove(this._xdndTimeOut);
|
Mainloop.source_remove(this._xdndTimeOut);
|
||||||
this._xdndTimeOut = 0;
|
this._xdndTimeOut = 0;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PanelCorner(panel, side) {
|
const PanelCorner = new Lang.Class({
|
||||||
this._init(panel, side);
|
Name: 'PanelCorner',
|
||||||
}
|
|
||||||
|
|
||||||
PanelCorner.prototype = {
|
|
||||||
_init: function(box, side) {
|
_init: function(box, side) {
|
||||||
this._side = side;
|
this._side = side;
|
||||||
|
|
||||||
@ -880,14 +887,12 @@ PanelCorner.prototype = {
|
|||||||
this.actor.set_size(cornerRadius, innerBorderWidth + cornerRadius);
|
this.actor.set_size(cornerRadius, innerBorderWidth + cornerRadius);
|
||||||
this.actor.set_anchor_point(0, innerBorderWidth);
|
this.actor.set_anchor_point(0, innerBorderWidth);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function Panel() {
|
const Panel = new Lang.Class({
|
||||||
this._init();
|
Name: 'Panel',
|
||||||
}
|
|
||||||
|
|
||||||
Panel.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new Shell.GenericContainer({ name: 'panel',
|
this.actor = new Shell.GenericContainer({ name: 'panel',
|
||||||
reactive: true });
|
reactive: true });
|
||||||
@ -938,9 +943,8 @@ Panel.prototype = {
|
|||||||
// more cleanly with the rest of the panel
|
// more cleanly with the rest of the panel
|
||||||
this._menus.addMenu(this._activitiesButton.menu);
|
this._menus.addMenu(this._activitiesButton.menu);
|
||||||
|
|
||||||
this._appMenu = new AppMenuButton();
|
this._appMenu = new AppMenuButton(this._menus);
|
||||||
this._leftBox.add(this._appMenu.actor);
|
this._leftBox.add(this._appMenu.actor);
|
||||||
this._menus.addMenu(this._appMenu.menu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* center */
|
/* center */
|
||||||
@ -1114,5 +1118,4 @@ Panel.prototype = {
|
|||||||
if (box && box._delegate instanceof PanelMenu.ButtonBox)
|
if (box && box._delegate instanceof PanelMenu.ButtonBox)
|
||||||
box.destroy();
|
box.destroy();
|
||||||
},
|
},
|
||||||
|
});
|
||||||
};
|
|
||||||
|
@ -11,11 +11,9 @@ const Main = imports.ui.main;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
function ButtonBox(params) {
|
const ButtonBox = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ButtonBox',
|
||||||
};
|
|
||||||
|
|
||||||
ButtonBox.prototype = {
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { style_class: 'panel-button' }, true);
|
params = Params.parse(params, { style_class: 'panel-button' }, true);
|
||||||
this.actor = new Shell.GenericContainer(params);
|
this.actor = new Shell.GenericContainer(params);
|
||||||
@ -92,31 +90,45 @@ ButtonBox.prototype = {
|
|||||||
|
|
||||||
child.allocate(childBox, flags);
|
child.allocate(childBox, flags);
|
||||||
},
|
},
|
||||||
}
|
});
|
||||||
|
|
||||||
function Button(menuAlignment) {
|
const Button = new Lang.Class({
|
||||||
this._init(menuAlignment);
|
Name: 'PanelMenuButton',
|
||||||
}
|
Extends: ButtonBox,
|
||||||
|
|
||||||
Button.prototype = {
|
_init: function(menuAlignment, dontCreateMenu) {
|
||||||
__proto__: ButtonBox.prototype,
|
this.parent({ reactive: true,
|
||||||
|
can_focus: true,
|
||||||
_init: function(menuAlignment) {
|
track_hover: true });
|
||||||
ButtonBox.prototype._init.call(this, { reactive: true,
|
|
||||||
can_focus: true,
|
|
||||||
track_hover: true });
|
|
||||||
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
||||||
this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP);
|
|
||||||
this.menu.actor.add_style_class_name('panel-menu');
|
if (dontCreateMenu)
|
||||||
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
|
this.menu = null;
|
||||||
this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress));
|
else
|
||||||
Main.uiGroup.add_actor(this.menu.actor);
|
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
||||||
this.menu.actor.hide();
|
},
|
||||||
|
|
||||||
|
setMenu: function(menu) {
|
||||||
|
if (this.menu)
|
||||||
|
this.menu.destroy();
|
||||||
|
|
||||||
|
this.menu = menu;
|
||||||
|
if (this.menu) {
|
||||||
|
this.menu.actor.add_style_class_name('panel-menu');
|
||||||
|
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
|
||||||
|
this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress));
|
||||||
|
|
||||||
|
Main.uiGroup.add_actor(this.menu.actor);
|
||||||
|
this.menu.actor.hide();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onButtonPress: function(actor, event) {
|
_onButtonPress: function(actor, event) {
|
||||||
|
if (!this.menu)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!this.menu.isOpen) {
|
if (!this.menu.isOpen) {
|
||||||
// Setting the max-height won't do any good if the minimum height of the
|
// Setting the max-height won't do any good if the minimum height of the
|
||||||
// menu is higher then the screen; it's useful if part of the menu is
|
// menu is higher then the screen; it's useful if part of the menu is
|
||||||
@ -130,6 +142,9 @@ Button.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onSourceKeyPress: function(actor, event) {
|
_onSourceKeyPress: function(actor, event) {
|
||||||
|
if (!this.menu)
|
||||||
|
return false;
|
||||||
|
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
|
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
|
||||||
this.menu.toggle();
|
this.menu.toggle();
|
||||||
@ -175,7 +190,7 @@ Button.prototype = {
|
|||||||
|
|
||||||
this.emit('destroy');
|
this.emit('destroy');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(Button.prototype);
|
Signals.addSignalMethods(Button.prototype);
|
||||||
|
|
||||||
/* SystemStatusButton:
|
/* SystemStatusButton:
|
||||||
@ -184,15 +199,13 @@ Signals.addSignalMethods(Button.prototype);
|
|||||||
* volume, bluetooth...), which is just a PanelMenuButton with an
|
* volume, bluetooth...), which is just a PanelMenuButton with an
|
||||||
* icon and a tooltip
|
* icon and a tooltip
|
||||||
*/
|
*/
|
||||||
function SystemStatusButton() {
|
const SystemStatusButton = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'SystemStatusButton',
|
||||||
}
|
Extends: Button,
|
||||||
|
|
||||||
SystemStatusButton.prototype = {
|
|
||||||
__proto__: Button.prototype,
|
|
||||||
|
|
||||||
_init: function(iconName,tooltipText) {
|
_init: function(iconName,tooltipText) {
|
||||||
Button.prototype._init.call(this, 0.0);
|
this.parent(0.0);
|
||||||
|
|
||||||
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,
|
||||||
style_class: 'system-status-icon' });
|
style_class: 'system-status-icon' });
|
||||||
@ -219,4 +232,4 @@ SystemStatusButton.prototype = {
|
|||||||
this.tooltip = null;
|
this.tooltip = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -22,11 +22,9 @@ const Util = imports.misc.util;
|
|||||||
* @iconFactory: A JavaScript callback which will create an icon texture given a size parameter
|
* @iconFactory: A JavaScript callback which will create an icon texture given a size parameter
|
||||||
* @launch: A JavaScript callback to launch the entry
|
* @launch: A JavaScript callback to launch the entry
|
||||||
*/
|
*/
|
||||||
function PlaceInfo(id, name, iconFactory, launch) {
|
const PlaceInfo = new Lang.Class({
|
||||||
this._init(id, name, iconFactory, launch);
|
Name: 'PlaceInfo',
|
||||||
}
|
|
||||||
|
|
||||||
PlaceInfo.prototype = {
|
|
||||||
_init: function(id, name, iconFactory, launch) {
|
_init: function(id, name, iconFactory, launch) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -55,7 +53,7 @@ PlaceInfo.prototype = {
|
|||||||
isRemovable: function() {
|
isRemovable: function() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// Helper function to translate launch parameters into a GAppLaunchContext
|
// Helper function to translate launch parameters into a GAppLaunchContext
|
||||||
function _makeLaunchContext(params)
|
function _makeLaunchContext(params)
|
||||||
@ -72,12 +70,9 @@ function _makeLaunchContext(params)
|
|||||||
return launchContext;
|
return launchContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
function PlaceDeviceInfo(mount) {
|
const PlaceDeviceInfo = new Lang.Class({
|
||||||
this._init(mount);
|
Name: 'PlaceDeviceInfo',
|
||||||
}
|
Extends: PlaceInfo,
|
||||||
|
|
||||||
PlaceDeviceInfo.prototype = {
|
|
||||||
__proto__: PlaceInfo.prototype,
|
|
||||||
|
|
||||||
_init: function(mount) {
|
_init: function(mount) {
|
||||||
this._mount = mount;
|
this._mount = mount;
|
||||||
@ -123,13 +118,11 @@ PlaceDeviceInfo.prototype = {
|
|||||||
_("Retry"));
|
_("Retry"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PlacesManager() {
|
const PlacesManager = new Lang.Class({
|
||||||
this._init();
|
Name: 'PlacesManager',
|
||||||
}
|
|
||||||
|
|
||||||
PlacesManager.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._defaultPlaces = [];
|
this._defaultPlaces = [];
|
||||||
this._mounts = [];
|
this._mounts = [];
|
||||||
@ -195,9 +188,9 @@ PlacesManager.prototype = {
|
|||||||
|
|
||||||
this._bookmarksPath = GLib.build_filenamev([GLib.get_home_dir(), '.gtk-bookmarks']);
|
this._bookmarksPath = GLib.build_filenamev([GLib.get_home_dir(), '.gtk-bookmarks']);
|
||||||
this._bookmarksFile = Gio.file_new_for_path(this._bookmarksPath);
|
this._bookmarksFile = Gio.file_new_for_path(this._bookmarksPath);
|
||||||
let monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
this._monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
||||||
this._bookmarkTimeoutId = 0;
|
this._bookmarkTimeoutId = 0;
|
||||||
monitor.connect('changed', Lang.bind(this, function () {
|
this._monitor.connect('changed', Lang.bind(this, function () {
|
||||||
if (this._bookmarkTimeoutId > 0)
|
if (this._bookmarkTimeoutId > 0)
|
||||||
return;
|
return;
|
||||||
/* Defensive event compression */
|
/* Defensive event compression */
|
||||||
@ -360,19 +353,15 @@ PlacesManager.prototype = {
|
|||||||
_removeById: function(sourceArray, id) {
|
_removeById: function(sourceArray, id) {
|
||||||
sourceArray.splice(this._lookupIndexById(sourceArray, id), 1);
|
sourceArray.splice(this._lookupIndexById(sourceArray, id), 1);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(PlacesManager.prototype);
|
Signals.addSignalMethods(PlacesManager.prototype);
|
||||||
|
|
||||||
|
const PlaceSearchProvider = new Lang.Class({
|
||||||
function PlaceSearchProvider() {
|
Name: 'PlaceSearchProvider',
|
||||||
this._init();
|
Extends: Search.SearchProvider,
|
||||||
}
|
|
||||||
|
|
||||||
PlaceSearchProvider.prototype = {
|
|
||||||
__proto__: Search.SearchProvider.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
Search.SearchProvider.prototype._init.call(this, _("PLACES & DEVICES"));
|
this.parent(_("PLACES & DEVICES"));
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMeta: function(resultId) {
|
getResultMeta: function(resultId) {
|
||||||
@ -434,4 +423,4 @@ PlaceSearchProvider.prototype = {
|
|||||||
let places = previousResults.map(function (id) { return Main.placesManager.lookupPlaceById(id); });
|
let places = previousResults.map(function (id) { return Main.placesManager.lookupPlaceById(id); });
|
||||||
return this._searchPlaces(places, terms);
|
return this._searchPlaces(places, terms);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -27,6 +27,7 @@ const AccountsService = imports.gi.AccountsService;
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Pango = imports.gi.Pango;
|
const Pango = imports.gi.Pango;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Polkit = imports.gi.Polkit;
|
const Polkit = imports.gi.Polkit;
|
||||||
@ -35,15 +36,12 @@ const PolkitAgent = imports.gi.PolkitAgent;
|
|||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
|
|
||||||
function AuthenticationDialog(actionId, message, cookie, userNames) {
|
const AuthenticationDialog = new Lang.Class({
|
||||||
this._init(actionId, message, cookie, userNames);
|
Name: 'AuthenticationDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
AuthenticationDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function(actionId, message, cookie, userNames) {
|
_init: function(actionId, message, cookie, userNames) {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'polkit-dialog' });
|
this.parent({ styleClass: 'polkit-dialog' });
|
||||||
|
|
||||||
this.actionId = actionId;
|
this.actionId = actionId;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
@ -88,10 +86,14 @@ AuthenticationDialog.prototype = {
|
|||||||
if (userNames.length > 1) {
|
if (userNames.length > 1) {
|
||||||
log('polkitAuthenticationAgent: Received ' + userNames.length +
|
log('polkitAuthenticationAgent: Received ' + userNames.length +
|
||||||
' identities that can be used for authentication. Only ' +
|
' identities that can be used for authentication. Only ' +
|
||||||
'considering the first one.');
|
'considering one.');
|
||||||
}
|
}
|
||||||
|
|
||||||
let userName = userNames[0];
|
let userName = GLib.get_user_name();
|
||||||
|
if (userNames.indexOf(userName) < 0)
|
||||||
|
userName = 'root';
|
||||||
|
if (userNames.indexOf(userName) < 0)
|
||||||
|
userName = userNames[0];
|
||||||
|
|
||||||
this._user = AccountsService.UserManager.get_default().get_user(userName);
|
this._user = AccountsService.UserManager.get_default().get_user(userName);
|
||||||
let userRealName = this._user.get_real_name()
|
let userRealName = this._user.get_real_name()
|
||||||
@ -330,15 +332,12 @@ AuthenticationDialog.prototype = {
|
|||||||
this.close(global.get_current_time());
|
this.close(global.get_current_time());
|
||||||
this._emitDone(false, true);
|
this._emitDone(false, true);
|
||||||
},
|
},
|
||||||
|
});
|
||||||
};
|
|
||||||
Signals.addSignalMethods(AuthenticationDialog.prototype);
|
Signals.addSignalMethods(AuthenticationDialog.prototype);
|
||||||
|
|
||||||
function AuthenticationAgent() {
|
const AuthenticationAgent = new Lang.Class({
|
||||||
this._init();
|
Name: 'AuthenticationAgent',
|
||||||
}
|
|
||||||
|
|
||||||
AuthenticationAgent.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._native = new Shell.PolkitAuthenticationAgent();
|
this._native = new Shell.PolkitAuthenticationAgent();
|
||||||
this._native.connect('initiate', Lang.bind(this, this._onInitiate));
|
this._native.connect('initiate', Lang.bind(this, this._onInitiate));
|
||||||
@ -399,7 +398,7 @@ AuthenticationAgent.prototype = {
|
|||||||
this._reallyCompleteRequest(wasDismissed);
|
this._reallyCompleteRequest(wasDismissed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
let agent = new AuthenticationAgent();
|
let agent = new AuthenticationAgent();
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
const Cairo = imports.cairo;
|
const Cairo = imports.cairo;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
@ -26,11 +28,9 @@ function _ensureStyle(actor) {
|
|||||||
actor.ensure_style();
|
actor.ensure_style();
|
||||||
}
|
}
|
||||||
|
|
||||||
function PopupBaseMenuItem(params) {
|
const PopupBaseMenuItem = new Lang.Class({
|
||||||
this._init(params);
|
Name: 'PopupBaseMenuItem',
|
||||||
}
|
|
||||||
|
|
||||||
PopupBaseMenuItem.prototype = {
|
|
||||||
_init: function (params) {
|
_init: function (params) {
|
||||||
params = Params.parse (params, { reactive: true,
|
params = Params.parse (params, { reactive: true,
|
||||||
activate: true,
|
activate: true,
|
||||||
@ -108,14 +108,16 @@ PopupBaseMenuItem.prototype = {
|
|||||||
this.emit('activate', event);
|
this.emit('activate', event);
|
||||||
},
|
},
|
||||||
|
|
||||||
setActive: function (active) {
|
setActive: function (active, params) {
|
||||||
let activeChanged = active != this.active;
|
let activeChanged = active != this.active;
|
||||||
|
params = Params.parse (params, { grabKeyboard: true });
|
||||||
|
|
||||||
if (activeChanged) {
|
if (activeChanged) {
|
||||||
this.active = active;
|
this.active = active;
|
||||||
if (active) {
|
if (active) {
|
||||||
this.actor.add_style_pseudo_class('active');
|
this.actor.add_style_pseudo_class('active');
|
||||||
this.actor.grab_key_focus();
|
if (params.grabKeyboard)
|
||||||
|
this.actor.grab_key_focus();
|
||||||
} else
|
} else
|
||||||
this.actor.remove_style_pseudo_class('active');
|
this.actor.remove_style_pseudo_class('active');
|
||||||
this.emit('active-changed', active);
|
this.emit('active-changed', active);
|
||||||
@ -375,33 +377,27 @@ PopupBaseMenuItem.prototype = {
|
|||||||
x -= availWidth + this._spacing;
|
x -= availWidth + this._spacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(PopupBaseMenuItem.prototype);
|
Signals.addSignalMethods(PopupBaseMenuItem.prototype);
|
||||||
|
|
||||||
function PopupMenuItem() {
|
const PopupMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function (text, params) {
|
_init: function (text, params) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupSeparatorMenuItem() {
|
const PopupSeparatorMenuItem = new Lang.Class({
|
||||||
this._init();
|
Name: 'PopupSeparatorMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupSeparatorMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function () {
|
_init: function () {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, { reactive: false });
|
this.parent({ reactive: false });
|
||||||
|
|
||||||
this._drawingArea = new St.DrawingArea({ style_class: 'popup-separator-menu-item' });
|
this._drawingArea = new St.DrawingArea({ style_class: 'popup-separator-menu-item' });
|
||||||
this.addActor(this._drawingArea, { span: -1, expand: true });
|
this.addActor(this._drawingArea, { span: -1, expand: true });
|
||||||
@ -427,22 +423,19 @@ PopupSeparatorMenuItem.prototype = {
|
|||||||
cr.rectangle(margin, gradientOffset, gradientWidth, gradientHeight);
|
cr.rectangle(margin, gradientOffset, gradientWidth, gradientHeight);
|
||||||
cr.fill();
|
cr.fill();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
const PopupAlternatingMenuItemState = {
|
const PopupAlternatingMenuItemState = {
|
||||||
DEFAULT: 0,
|
DEFAULT: 0,
|
||||||
ALTERNATIVE: 1
|
ALTERNATIVE: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
function PopupAlternatingMenuItem() {
|
const PopupAlternatingMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupAlternatingMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupAlternatingMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(text, alternateText, params) {
|
_init: function(text, alternateText, params) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
this.actor.add_style_class_name('popup-alternating-menu-item');
|
this.actor.add_style_class_name('popup-alternating-menu-item');
|
||||||
|
|
||||||
this._text = text;
|
this._text = text;
|
||||||
@ -528,17 +521,14 @@ PopupAlternatingMenuItem.prototype = {
|
|||||||
|
|
||||||
this._updateLabel();
|
this._updateLabel();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupSliderMenuItem() {
|
const PopupSliderMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupSliderMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupSliderMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(value) {
|
_init: function(value) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, { activate: false });
|
this.parent({ activate: false });
|
||||||
|
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||||
|
|
||||||
@ -714,13 +704,11 @@ PopupSliderMenuItem.prototype = {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Switch() {
|
const Switch = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'Switch',
|
||||||
}
|
|
||||||
|
|
||||||
Switch.prototype = {
|
|
||||||
_init: function(state) {
|
_init: function(state) {
|
||||||
this.actor = new St.Bin({ style_class: 'toggle-switch' });
|
this.actor = new St.Bin({ style_class: 'toggle-switch' });
|
||||||
// Translators: this MUST be either "toggle-switch-us"
|
// Translators: this MUST be either "toggle-switch-us"
|
||||||
@ -743,17 +731,14 @@ Switch.prototype = {
|
|||||||
toggle: function() {
|
toggle: function() {
|
||||||
this.setToggleState(!this.state);
|
this.setToggleState(!this.state);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupSwitchMenuItem() {
|
const PopupSwitchMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupSwitchMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupSwitchMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(text, active, params) {
|
_init: function(text, active, params) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this._switch = new Switch(active);
|
this._switch = new Switch(active);
|
||||||
@ -788,7 +773,7 @@ PopupSwitchMenuItem.prototype = {
|
|||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
PopupBaseMenuItem.prototype.activate.call(this, event);
|
this.parent(event);
|
||||||
},
|
},
|
||||||
|
|
||||||
toggle: function() {
|
toggle: function() {
|
||||||
@ -803,17 +788,14 @@ PopupSwitchMenuItem.prototype = {
|
|||||||
setToggleState: function(state) {
|
setToggleState: function(state) {
|
||||||
this._switch.setToggleState(state);
|
this._switch.setToggleState(state);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupImageMenuItem() {
|
const PopupImageMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupImageMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupImageMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function (text, iconName, params) {
|
_init: function (text, iconName, params) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
@ -826,13 +808,12 @@ PopupImageMenuItem.prototype = {
|
|||||||
setIcon: function(name) {
|
setIcon: function(name) {
|
||||||
this._icon.icon_name = name;
|
this._icon.icon_name = name;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupMenuBase() {
|
const PopupMenuBase = new Lang.Class({
|
||||||
throw new TypeError('Trying to instantiate abstract class PopupMenuBase');
|
Name: 'PopupMenuBase',
|
||||||
}
|
Abstract: true,
|
||||||
|
|
||||||
PopupMenuBase.prototype = {
|
|
||||||
_init: function(sourceActor, styleClass) {
|
_init: function(sourceActor, styleClass) {
|
||||||
this.sourceActor = sourceActor;
|
this.sourceActor = sourceActor;
|
||||||
|
|
||||||
@ -1019,6 +1000,11 @@ PopupMenuBase.prototype = {
|
|||||||
}
|
}
|
||||||
if (menuItem instanceof PopupMenuSection) {
|
if (menuItem instanceof PopupMenuSection) {
|
||||||
this._connectSubMenuSignals(menuItem, menuItem);
|
this._connectSubMenuSignals(menuItem, menuItem);
|
||||||
|
menuItem._closingId = this.connect('open-state-changed',
|
||||||
|
function(self, open) {
|
||||||
|
if (!open)
|
||||||
|
menuItem.close(false);
|
||||||
|
});
|
||||||
menuItem.connect('destroy', Lang.bind(this, function() {
|
menuItem.connect('destroy', Lang.bind(this, function() {
|
||||||
menuItem.disconnect(menuItem._subMenuActivateId);
|
menuItem.disconnect(menuItem._subMenuActivateId);
|
||||||
menuItem.disconnect(menuItem._subMenuActiveChangeId);
|
menuItem.disconnect(menuItem._subMenuActiveChangeId);
|
||||||
@ -1132,18 +1118,15 @@ PopupMenuBase.prototype = {
|
|||||||
|
|
||||||
this.emit('destroy');
|
this.emit('destroy');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(PopupMenuBase.prototype);
|
Signals.addSignalMethods(PopupMenuBase.prototype);
|
||||||
|
|
||||||
function PopupMenu() {
|
const PopupMenu = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupMenu',
|
||||||
}
|
Extends: PopupMenuBase,
|
||||||
|
|
||||||
PopupMenu.prototype = {
|
|
||||||
__proto__: PopupMenuBase.prototype,
|
|
||||||
|
|
||||||
_init: function(sourceActor, arrowAlignment, arrowSide) {
|
_init: function(sourceActor, arrowAlignment, arrowSide) {
|
||||||
PopupMenuBase.prototype._init.call (this, sourceActor, 'popup-menu-content');
|
this.parent(sourceActor, 'popup-menu-content');
|
||||||
|
|
||||||
this._arrowAlignment = arrowAlignment;
|
this._arrowAlignment = arrowAlignment;
|
||||||
this._arrowSide = arrowSide;
|
this._arrowSide = arrowSide;
|
||||||
@ -1228,17 +1211,14 @@ PopupMenu.prototype = {
|
|||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this.emit('open-state-changed', false);
|
this.emit('open-state-changed', false);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupSubMenu() {
|
const PopupSubMenu = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupSubMenu',
|
||||||
}
|
Extends: PopupMenuBase,
|
||||||
|
|
||||||
PopupSubMenu.prototype = {
|
|
||||||
__proto__: PopupMenuBase.prototype,
|
|
||||||
|
|
||||||
_init: function(sourceActor, sourceArrow) {
|
_init: function(sourceActor, sourceArrow) {
|
||||||
PopupMenuBase.prototype._init.call(this, sourceActor);
|
this.parent(sourceActor);
|
||||||
|
|
||||||
this._arrow = sourceArrow;
|
this._arrow = sourceArrow;
|
||||||
this._arrow.rotation_center_z_gravity = Clutter.Gravity.CENTER;
|
this._arrow.rotation_center_z_gravity = Clutter.Gravity.CENTER;
|
||||||
@ -1393,7 +1373,7 @@ PopupSubMenu.prototype = {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PopupMenuSection:
|
* PopupMenuSection:
|
||||||
@ -1403,35 +1383,30 @@ PopupSubMenu.prototype = {
|
|||||||
* can add it to another menu), but is completely transparent
|
* can add it to another menu), but is completely transparent
|
||||||
* to the user
|
* to the user
|
||||||
*/
|
*/
|
||||||
function PopupMenuSection() {
|
const PopupMenuSection = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupMenuSection',
|
||||||
}
|
Extends: PopupMenuBase,
|
||||||
|
|
||||||
PopupMenuSection.prototype = {
|
|
||||||
__proto__: PopupMenuBase.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PopupMenuBase.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this.actor = this.box;
|
this.actor = this.box;
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
// deliberately ignore any attempt to open() or close()
|
// deliberately ignore any attempt to open() or close(), but emit the
|
||||||
open: function(animate) { },
|
// corresponding signal so children can still pick it up
|
||||||
close: function() { },
|
open: function(animate) { this.emit('open-state-changed', true); },
|
||||||
}
|
close: function() { this.emit('open-state-changed', false); },
|
||||||
|
});
|
||||||
|
|
||||||
function PopupSubMenuMenuItem() {
|
const PopupSubMenuMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupSubMenuMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupSubMenuMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(text) {
|
_init: function(text) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this.actor.add_style_class_name('popup-submenu-menu-item');
|
this.actor.add_style_class_name('popup-submenu-menu-item');
|
||||||
|
|
||||||
@ -1453,7 +1428,8 @@ PopupSubMenuMenuItem.prototype = {
|
|||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
this.menu.destroy();
|
this.menu.destroy();
|
||||||
PopupBaseMenuItem.prototype.destroy.call(this);
|
|
||||||
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onKeyPressEvent: function(actor, event) {
|
_onKeyPressEvent: function(actor, event) {
|
||||||
@ -1468,7 +1444,7 @@ PopupSubMenuMenuItem.prototype = {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PopupBaseMenuItem.prototype._onKeyPressEvent.call(this, actor, event);
|
return this.parent(actor, event);
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
@ -1478,22 +1454,21 @@ PopupSubMenuMenuItem.prototype = {
|
|||||||
_onButtonReleaseEvent: function(actor) {
|
_onButtonReleaseEvent: function(actor) {
|
||||||
this.menu.toggle();
|
this.menu.toggle();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupComboMenu() {
|
const PopupComboMenu = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupComboMenu',
|
||||||
}
|
Extends: PopupMenuBase,
|
||||||
|
|
||||||
PopupComboMenu.prototype = {
|
|
||||||
__proto__: PopupMenuBase.prototype,
|
|
||||||
|
|
||||||
_init: function(sourceActor) {
|
_init: function(sourceActor) {
|
||||||
PopupMenuBase.prototype._init.call(this,
|
this.parent(sourceActor, 'popup-combo-menu');
|
||||||
sourceActor, 'popup-combo-menu');
|
|
||||||
this.actor = this.box;
|
this.actor = this.box;
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||||
this.actor.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
|
this.actor.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
|
||||||
|
sourceActor.connect('style-changed',
|
||||||
|
Lang.bind(this, this._onSourceActorStyleChanged));
|
||||||
this._activeItemPos = -1;
|
this._activeItemPos = -1;
|
||||||
global.focus_manager.add_group(this.actor);
|
global.focus_manager.add_group(this.actor);
|
||||||
},
|
},
|
||||||
@ -1513,6 +1488,26 @@ PopupComboMenu.prototype = {
|
|||||||
activeItem.actor.grab_key_focus();
|
activeItem.actor.grab_key_focus();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onSourceActorStyleChanged: function() {
|
||||||
|
// PopupComboBoxMenuItem clones the active item's actors
|
||||||
|
// to work with arbitrary items in the menu; this means
|
||||||
|
// that we need to propagate some style information and
|
||||||
|
// enforce style updates even when the menu is closed
|
||||||
|
let activeItem = this._getMenuItems()[this._activeItemPos];
|
||||||
|
if (this.sourceActor.has_style_pseudo_class('insensitive'))
|
||||||
|
activeItem.actor.add_style_pseudo_class('insensitive');
|
||||||
|
else
|
||||||
|
activeItem.actor.remove_style_pseudo_class('insensitive');
|
||||||
|
|
||||||
|
// To propagate the :active style, we need to make sure that the
|
||||||
|
// internal state of the PopupComboMenu is updated as well, but
|
||||||
|
// we must not move the keyboard grab
|
||||||
|
activeItem.setActive(this.sourceActor.has_style_pseudo_class('active'),
|
||||||
|
{ grabKeyboard: false });
|
||||||
|
|
||||||
|
_ensureStyle(this.actor);
|
||||||
|
},
|
||||||
|
|
||||||
open: function() {
|
open: function() {
|
||||||
if (this.isOpen)
|
if (this.isOpen)
|
||||||
return;
|
return;
|
||||||
@ -1572,17 +1567,14 @@ PopupComboMenu.prototype = {
|
|||||||
getItemVisible: function(position) {
|
getItemVisible: function(position) {
|
||||||
return this._getMenuItems()[position].actor.visible;
|
return this._getMenuItems()[position].actor.visible;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function PopupComboBoxMenuItem() {
|
const PopupComboBoxMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PopupComboBoxMenuItem',
|
||||||
}
|
Extends: PopupBaseMenuItem,
|
||||||
|
|
||||||
PopupComboBoxMenuItem.prototype = {
|
|
||||||
__proto__: PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function (params) {
|
_init: function (params) {
|
||||||
PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
|
|
||||||
this._itemBox = new Shell.Stack();
|
this._itemBox = new Shell.Stack();
|
||||||
this.addActor(this._itemBox);
|
this.addActor(this._itemBox);
|
||||||
@ -1700,16 +1692,262 @@ PopupComboBoxMenuItem.prototype = {
|
|||||||
this.setActiveItem(position);
|
this.setActiveItem(position);
|
||||||
this.emit('active-item-changed', position);
|
this.emit('active-item-changed', position);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RemoteMenu:
|
||||||
|
*
|
||||||
|
* A PopupMenu that tracks a GMenuModel and shows its actions
|
||||||
|
* (exposed by GApplication/GActionGroup)
|
||||||
|
*/
|
||||||
|
const RemoteMenu = new Lang.Class({
|
||||||
|
Name: 'RemoteMenu',
|
||||||
|
Extends: PopupMenu,
|
||||||
|
|
||||||
|
_init: function(sourceActor, model, actionGroup) {
|
||||||
|
this.parent(sourceActor, 0.0, St.Side.TOP);
|
||||||
|
|
||||||
|
this.model = model;
|
||||||
|
this.actionGroup = actionGroup;
|
||||||
|
|
||||||
|
this._actions = { };
|
||||||
|
this._modelChanged(this.model, 0, 0, this.model.get_n_items(), this);
|
||||||
|
|
||||||
|
this._actionStateChangeId = this.actionGroup.connect('action-state-changed', Lang.bind(this, this._actionStateChanged));
|
||||||
|
this._actionEnableChangeId = this.actionGroup.connect('action-enabled-changed', Lang.bind(this, this._actionEnabledChanged));
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
if (this._actionStateChangeId) {
|
||||||
|
this.actionGroup.disconnect(this._actionStateChangeId);
|
||||||
|
this._actionStateChangeId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._actionEnableChangeId) {
|
||||||
|
this.actionGroup.disconnect(this._actionEnableChangeId);
|
||||||
|
this._actionEnableChangeId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
_createMenuItem: function(model, index) {
|
||||||
|
let section_link = model.get_item_link(index, Gio.MENU_LINK_SECTION);
|
||||||
|
if (section_link) {
|
||||||
|
let item = new PopupMenuSection();
|
||||||
|
this._modelChanged(section_link, 0, 0, section_link.get_n_items(), item);
|
||||||
|
return [item, true, ''];
|
||||||
|
}
|
||||||
|
|
||||||
|
// labels are not checked for existance, as they're required for all items
|
||||||
|
let label = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_LABEL, null).deep_unpack();
|
||||||
|
// remove all underscores that are not followed by another underscore
|
||||||
|
label = label.replace(/_([^_])/, '$1');
|
||||||
|
let submenu_link = model.get_item_link(index, Gio.MENU_LINK_SUBMENU);
|
||||||
|
|
||||||
|
if (submenu_link) {
|
||||||
|
let item = new PopupSubMenuMenuItem(label);
|
||||||
|
this._modelChanged(submenu_link, 0, 0, submenu_link.get_n_items(), item.menu);
|
||||||
|
return [item, false, ''];
|
||||||
|
}
|
||||||
|
|
||||||
|
let action_id = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_ACTION, null).deep_unpack();
|
||||||
|
if (!this.actionGroup.has_action(action_id)) {
|
||||||
|
// the action may not be there yet, wait for action-added
|
||||||
|
return [null, false, 'action-added'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this._actions[action_id])
|
||||||
|
this._actions[action_id] = { enabled: this.actionGroup.get_action_enabled(action_id),
|
||||||
|
state: this.actionGroup.get_action_state(action_id),
|
||||||
|
items: [ ],
|
||||||
|
};
|
||||||
|
let action = this._actions[action_id];
|
||||||
|
let item, target, destroyId, specificSignalId;
|
||||||
|
|
||||||
|
if (action.state) {
|
||||||
|
// Docs have get_state_hint(), except that the DBus protocol
|
||||||
|
// has no provision for it (so ShellApp does not implement it,
|
||||||
|
// and neither GApplication), and g_action_get_state_hint()
|
||||||
|
// always returns null
|
||||||
|
// Funny :)
|
||||||
|
|
||||||
|
switch (String.fromCharCode(action.state.classify())) {
|
||||||
|
case 'b':
|
||||||
|
item = new PopupSwitchMenuItem(label, action.state.get_boolean());
|
||||||
|
action.items.push(item);
|
||||||
|
specificSignalId = item.connect('toggled', Lang.bind(this, function(item) {
|
||||||
|
this.actionGroup.change_action_state(action_id, GLib.Variant.new_boolean(item.state));
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
item = new PopupSliderMenuItem(label, action.state.get_double());
|
||||||
|
action.items.push(item);
|
||||||
|
// value-changed is emitted for each motion-event, maybe an idle is more appropriate here?
|
||||||
|
specificSignalId = item.connect('value-changed', Lang.bind(this, function(item) {
|
||||||
|
this.actionGroup.change_action_state(action_id, GLib.Variant.new_double(item.value));
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
item = new PopupMenuItem(label);
|
||||||
|
item._remoteTarget = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_TARGET, null).deep_unpack();
|
||||||
|
action.items.push(item);
|
||||||
|
item.setShowDot(action.state.deep_unpack() == item._remoteTarget);
|
||||||
|
specificSignalId = item.connect('activate', Lang.bind(this, function(item) {
|
||||||
|
this.actionGroup.change_action_state(action_id, GLib.Variant.new_string(item._remoteTarget));
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
log('Action "%s" has state of type %s, which is not supported'.format(action_id, action.state.get_type_string()));
|
||||||
|
return [null, false, 'action-state-changed'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
target = model.get_item_attribute_value(index, Gio.MENU_ATTRIBUTE_TARGET, null);
|
||||||
|
item = new PopupMenuItem(label);
|
||||||
|
action.items.push(item);
|
||||||
|
specificSignalId = item.connect('activate', Lang.bind(this, function() {
|
||||||
|
this.actionGroup.activate_action(action_id, target);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
item.actor.reactive = item.actor.can_focus = action.enabled;
|
||||||
|
if (action.enabled)
|
||||||
|
item.actor.remove_style_pseudo_class('insensitive');
|
||||||
|
else
|
||||||
|
item.actor.add_style_pseudo_class('insensitive');
|
||||||
|
|
||||||
|
destroyId = item.connect('destroy', Lang.bind(this, function() {
|
||||||
|
item.disconnect(destroyId);
|
||||||
|
item.disconnect(specificSignalId);
|
||||||
|
|
||||||
|
let pos = action.items.indexOf(item);
|
||||||
|
if (pos != -1)
|
||||||
|
action.items.splice(pos, 1);
|
||||||
|
}));
|
||||||
|
|
||||||
|
return [item, false, ''];
|
||||||
|
},
|
||||||
|
|
||||||
|
_modelChanged: function(model, position, removed, added, target) {
|
||||||
|
let j, k;
|
||||||
|
let j0, k0;
|
||||||
|
|
||||||
|
let currentItems = target._getMenuItems();
|
||||||
|
|
||||||
|
for (j0 = 0, k0 = 0; j0 < position; j0++, k0++) {
|
||||||
|
if (currentItems[k0] instanceof PopupSeparatorMenuItem)
|
||||||
|
k0++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removed == -1) {
|
||||||
|
// special flag to indicate we should destroy everything
|
||||||
|
for (k = k0; k < currentItems.length; k++)
|
||||||
|
currentItems[k].destroy();
|
||||||
|
} else {
|
||||||
|
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
|
||||||
|
currentItems[k].destroy();
|
||||||
|
|
||||||
|
if (currentItems[k] instanceof PopupSeparatorMenuItem)
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = j0, k = k0; j < j0 + added; j++, k++) {
|
||||||
|
let [item, addSeparator, changeSignal] = this._createMenuItem(model, j);
|
||||||
|
|
||||||
|
if (item) {
|
||||||
|
// separators must be added in the parent to make autohiding work
|
||||||
|
if (addSeparator) {
|
||||||
|
target.addMenuItem(new PopupSeparatorMenuItem(), k+1);
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
target.addMenuItem(item, k);
|
||||||
|
|
||||||
|
if (addSeparator) {
|
||||||
|
target.addMenuItem(new PopupSeparatorMenuItem(), k+1);
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
} else if (changeSignal) {
|
||||||
|
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function() {
|
||||||
|
this.actionGroup.disconnect(signalId);
|
||||||
|
|
||||||
|
// force a full update
|
||||||
|
this._modelChanged(model, 0, -1, model.get_n_items(), target);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!model._changedId) {
|
||||||
|
model._changedId = model.connect('items-changed', Lang.bind(this, this._modelChanged, target));
|
||||||
|
model._destroyId = target.connect('destroy', function() {
|
||||||
|
if (model._changedId)
|
||||||
|
model.disconnect(model._changedId);
|
||||||
|
if (model._destroyId)
|
||||||
|
target.disconnect(model._destroyId);
|
||||||
|
model._changedId = 0;
|
||||||
|
model._destroyId = 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target instanceof PopupMenuSection) {
|
||||||
|
target.actor.visible = target.numMenuItems != 0;
|
||||||
|
} else {
|
||||||
|
let sourceItem = target.sourceActor._delegate;
|
||||||
|
if (sourceItem instanceof PopupSubMenuMenuItem)
|
||||||
|
sourceItem.actor.visible = target.numMenuItems != 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_actionStateChanged: function(actionGroup, action_id) {
|
||||||
|
let action = this._actions[action_id];
|
||||||
|
if (!action)
|
||||||
|
return;
|
||||||
|
|
||||||
|
action.state = actionGroup.get_action_state(action_id);
|
||||||
|
if (action.items.length) {
|
||||||
|
switch (String.fromCharCode(action.state.classify())) {
|
||||||
|
case 'b':
|
||||||
|
for (let i = 0; i < action.items.length; i++)
|
||||||
|
action.items[i].setToggleState(action.state.get_boolean());
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
for (let i = 0; i < action.items.length; i++)
|
||||||
|
action.items[i].setValue(action.state.get_double());
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
for (let i = 0; i < action.items.length; i++)
|
||||||
|
action.items[i].setShowDot(action.items[i]._remoteTarget == action.state.deep_unpack());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_actionEnabledChanged: function(actionGroup, action_id) {
|
||||||
|
let action = this._actions[action_id];
|
||||||
|
if (!action)
|
||||||
|
return;
|
||||||
|
|
||||||
|
action.enabled = actionGroup.get_action_enabled(action_id);
|
||||||
|
if (action.items.length) {
|
||||||
|
for (let i = 0; i < action.items.length; i++) {
|
||||||
|
let item = action.items[i];
|
||||||
|
item.actor.reactive = item.actor.can_focus = action.enabled;
|
||||||
|
|
||||||
|
if (action.enabled)
|
||||||
|
item.actor.remove_style_pseudo_class('insensitive');
|
||||||
|
else
|
||||||
|
item.actor.add_style_pseudo_class('insensitive');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/* Basic implementation of a menu manager.
|
/* Basic implementation of a menu manager.
|
||||||
* Call addMenu to add menus
|
* Call addMenu to add menus
|
||||||
*/
|
*/
|
||||||
function PopupMenuManager(owner) {
|
const PopupMenuManager = new Lang.Class({
|
||||||
this._init(owner);
|
Name: 'PopupMenuManager',
|
||||||
}
|
|
||||||
|
|
||||||
PopupMenuManager.prototype = {
|
|
||||||
_init: function(owner) {
|
_init: function(owner) {
|
||||||
this._owner = owner;
|
this._owner = owner;
|
||||||
this.grabbed = false;
|
this.grabbed = false;
|
||||||
@ -1981,4 +2219,4 @@ PopupMenuManager.prototype = {
|
|||||||
if (this._activeMenu != null)
|
if (this._activeMenu != null)
|
||||||
this._activeMenu.close(true);
|
this._activeMenu.close(true);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -30,11 +30,9 @@ const EXEC_ARG_KEY = 'exec-arg';
|
|||||||
|
|
||||||
const DIALOG_GROW_TIME = 0.1;
|
const DIALOG_GROW_TIME = 0.1;
|
||||||
|
|
||||||
function CommandCompleter() {
|
const CommandCompleter = new Lang.Class({
|
||||||
this._init();
|
Name: 'CommandCompleter',
|
||||||
}
|
|
||||||
|
|
||||||
CommandCompleter.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._changedCount = 0;
|
this._changedCount = 0;
|
||||||
this._paths = GLib.getenv('PATH').split(':');
|
this._paths = GLib.getenv('PATH').split(':');
|
||||||
@ -162,16 +160,14 @@ CommandCompleter.prototype = {
|
|||||||
return common.substr(text.length);
|
return common.substr(text.length);
|
||||||
return common;
|
return common;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function RunDialog() {
|
const RunDialog = new Lang.Class({
|
||||||
this._init();
|
Name: 'RunDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
RunDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
|
this.parent({ styleClass: 'run-dialog' });
|
||||||
|
|
||||||
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
|
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
|
||||||
this._terminalSettings = new Gio.Settings({ schema: TERMINAL_SCHEMA });
|
this._terminalSettings = new Gio.Settings({ schema: TERMINAL_SCHEMA });
|
||||||
@ -384,8 +380,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
|
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ModalDialog.ModalDialog.prototype.open.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
});
|
||||||
};
|
|
||||||
Signals.addSignalMethods(RunDialog.prototype);
|
Signals.addSignalMethods(RunDialog.prototype);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -70,24 +69,21 @@ function waitLeisure() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const PerfHelperIface = {
|
const PerfHelperIface = <interface name="org.gnome.Shell.PerfHelper">
|
||||||
name: 'org.gnome.Shell.PerfHelper',
|
<method name="CreateWindow">
|
||||||
methods: [{ name: 'CreateWindow', inSignature: 'iibb', outSignature: '' },
|
<arg type="i" direction="in" />
|
||||||
{ name: 'WaitWindows', inSignature: '', outSignature: '' },
|
<arg type="i" direction="in" />
|
||||||
{ name: 'DestroyWindows', inSignature: '', outSignature: ''}]
|
<arg type="b" direction="in" />
|
||||||
};
|
<arg type="b" direction="in" />
|
||||||
|
</method>
|
||||||
|
<method name="WaitWindows" />
|
||||||
|
<method name="DestroyWindows" />
|
||||||
|
</interface>;
|
||||||
|
|
||||||
const PerfHelper = function () {
|
var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface);
|
||||||
this._init();
|
function PerfHelper() {
|
||||||
};
|
return new PerfHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PerfHelper', '/org/gnome/Shell/PerfHelper');
|
||||||
|
}
|
||||||
PerfHelper.prototype = {
|
|
||||||
_init: function() {
|
|
||||||
DBus.session.proxifyObject(this, 'org.gnome.Shell.PerfHelper', '/org/gnome/Shell/PerfHelper');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
DBus.proxifyPrototype(PerfHelper.prototype, PerfHelperIface);
|
|
||||||
|
|
||||||
let _perfHelper = null;
|
let _perfHelper = null;
|
||||||
function _getPerfHelper() {
|
function _getPerfHelper() {
|
||||||
|
@ -23,11 +23,9 @@ const MatchType = {
|
|||||||
MULTIPLE_PREFIX: 4
|
MULTIPLE_PREFIX: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
function SearchResultDisplay(provider) {
|
const SearchResultDisplay = new Lang.Class({
|
||||||
this._init(provider);
|
Name: 'SearchResultDisplay',
|
||||||
}
|
|
||||||
|
|
||||||
SearchResultDisplay.prototype = {
|
|
||||||
_init: function(provider) {
|
_init: function(provider) {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
@ -96,7 +94,7 @@ SearchResultDisplay.prototype = {
|
|||||||
activateSelected: function() {
|
activateSelected: function() {
|
||||||
throw new Error('Not implemented');
|
throw new Error('Not implemented');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SearchProvider:
|
* SearchProvider:
|
||||||
@ -105,11 +103,9 @@ SearchResultDisplay.prototype = {
|
|||||||
* to the search system, then call registerProvider()
|
* to the search system, then call registerProvider()
|
||||||
* in SearchSystem with an instance.
|
* in SearchSystem with an instance.
|
||||||
*/
|
*/
|
||||||
function SearchProvider(title) {
|
const SearchProvider = new Lang.Class({
|
||||||
this._init(title);
|
Name: 'SearchProvider',
|
||||||
}
|
|
||||||
|
|
||||||
SearchProvider.prototype = {
|
|
||||||
_init: function(title) {
|
_init: function(title) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.searchSystem = null;
|
this.searchSystem = null;
|
||||||
@ -243,14 +239,12 @@ SearchProvider.prototype = {
|
|||||||
activateResult: function(id) {
|
activateResult: function(id) {
|
||||||
throw new Error('Not implemented');
|
throw new Error('Not implemented');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(SearchProvider.prototype);
|
Signals.addSignalMethods(SearchProvider.prototype);
|
||||||
|
|
||||||
function OpenSearchSystem() {
|
const OpenSearchSystem = new Lang.Class({
|
||||||
this._init();
|
Name: 'OpenSearchSystem',
|
||||||
}
|
|
||||||
|
|
||||||
OpenSearchSystem.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._providers = [];
|
this._providers = [];
|
||||||
global.settings.connect('changed::' + DISABLED_OPEN_SEARCH_PROVIDERS_KEY, Lang.bind(this, this._refresh));
|
global.settings.connect('changed::' + DISABLED_OPEN_SEARCH_PROVIDERS_KEY, Lang.bind(this, this._refresh));
|
||||||
@ -338,14 +332,12 @@ OpenSearchSystem.prototype = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(OpenSearchSystem.prototype);
|
Signals.addSignalMethods(OpenSearchSystem.prototype);
|
||||||
|
|
||||||
function SearchSystem() {
|
const SearchSystem = new Lang.Class({
|
||||||
this._init();
|
Name: 'SearchSystem',
|
||||||
}
|
|
||||||
|
|
||||||
SearchSystem.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._providers = [];
|
this._providers = [];
|
||||||
this.reset();
|
this.reset();
|
||||||
@ -433,5 +425,5 @@ SearchSystem.prototype = {
|
|||||||
this._previousResults = results;
|
this._previousResults = results;
|
||||||
this.emit('search-completed', results);
|
this.emit('search-completed', results);
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(SearchSystem.prototype);
|
Signals.addSignalMethods(SearchSystem.prototype);
|
||||||
|
@ -15,11 +15,9 @@ const Search = imports.ui.search;
|
|||||||
const MAX_SEARCH_RESULTS_ROWS = 1;
|
const MAX_SEARCH_RESULTS_ROWS = 1;
|
||||||
|
|
||||||
|
|
||||||
function SearchResult(provider, metaInfo, terms) {
|
const SearchResult = new Lang.Class({
|
||||||
this._init(provider, metaInfo, terms);
|
Name: 'SearchResult',
|
||||||
}
|
|
||||||
|
|
||||||
SearchResult.prototype = {
|
|
||||||
_init: function(provider, metaInfo, terms) {
|
_init: function(provider, metaInfo, terms) {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
this.metaInfo = metaInfo;
|
this.metaInfo = metaInfo;
|
||||||
@ -97,18 +95,16 @@ SearchResult.prototype = {
|
|||||||
else
|
else
|
||||||
this.provider.activateResult(this.metaInfo.id, params);
|
this.provider.activateResult(this.metaInfo.id, params);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function GridSearchResults(provider, grid) {
|
const GridSearchResults = new Lang.Class({
|
||||||
this._init(provider, grid);
|
Name: 'GridSearchResults',
|
||||||
}
|
Extends: Search.SearchResultDisplay,
|
||||||
|
|
||||||
GridSearchResults.prototype = {
|
|
||||||
__proto__: Search.SearchResultDisplay.prototype,
|
|
||||||
|
|
||||||
_init: function(provider, grid) {
|
_init: function(provider, grid) {
|
||||||
Search.SearchResultDisplay.prototype._init.call(this, provider);
|
this.parent(provider);
|
||||||
|
|
||||||
this._grid = grid || new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
|
this._grid = grid || new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
|
||||||
xAlign: St.Align.START });
|
xAlign: St.Align.START });
|
||||||
this.actor = new St.Bin({ x_align: St.Align.START });
|
this.actor = new St.Bin({ x_align: St.Align.START });
|
||||||
@ -179,14 +175,11 @@ GridSearchResults.prototype = {
|
|||||||
let targetActor = this._grid.getItemAtIndex(this.selectionIndex);
|
let targetActor = this._grid.getItemAtIndex(this.selectionIndex);
|
||||||
targetActor._delegate.activate();
|
targetActor._delegate.activate();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
const SearchResults = new Lang.Class({
|
||||||
|
Name: 'SearchResults',
|
||||||
|
|
||||||
function SearchResults(searchSystem, openSearchSystem) {
|
|
||||||
this._init(searchSystem, openSearchSystem);
|
|
||||||
}
|
|
||||||
|
|
||||||
SearchResults.prototype = {
|
|
||||||
_init: function(searchSystem, openSearchSystem) {
|
_init: function(searchSystem, openSearchSystem) {
|
||||||
this._searchSystem = searchSystem;
|
this._searchSystem = searchSystem;
|
||||||
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateCurrentResults));
|
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateCurrentResults));
|
||||||
@ -486,4 +479,4 @@ SearchResults.prototype = {
|
|||||||
resultDisplay.activateSelected();
|
resultDisplay.activateSelected();
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,79 +1,77 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
const ExtensionSystem = imports.ui.extensionSystem;
|
const ExtensionSystem = imports.ui.extensionSystem;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const GnomeShellIface = {
|
const GnomeShellIface = <interface name="org.gnome.Shell">
|
||||||
name: 'org.gnome.Shell',
|
<method name="Eval">
|
||||||
methods: [{ name: 'Eval',
|
<arg type="s" direction="in" name="script" />
|
||||||
inSignature: 's',
|
<arg type="b" direction="out" name="success" />
|
||||||
outSignature: 'bs'
|
<arg type="s" direction="out" name="result" />
|
||||||
},
|
</method>
|
||||||
{ name: 'ListExtensions',
|
<method name="ListExtensions">
|
||||||
inSignature: '',
|
<arg type="a{sa{sv}}" direction="out" name="extensions" />
|
||||||
outSignature: 'a{sa{sv}}'
|
</method>
|
||||||
},
|
<method name="GetExtensionInfo">
|
||||||
{ name: 'GetExtensionInfo',
|
<arg type="s" direction="in" name="extension" />
|
||||||
inSignature: 's',
|
<arg type="a{sv}" direction="out" name="info" />
|
||||||
outSignature: 'a{sv}'
|
</method>
|
||||||
},
|
<method name="GetExtensionErrors">
|
||||||
{ name: 'GetExtensionErrors',
|
<arg type="s" direction="in" name="extension" />
|
||||||
inSignature: 's',
|
<arg type="as" direction="out" name="errors" />
|
||||||
outSignature: 'as'
|
</method>
|
||||||
},
|
<method name="ScreenshotArea">
|
||||||
{ name: 'ScreenshotArea',
|
<arg type="i" direction="in" name="x"/>
|
||||||
inSignature: 'iiiis',
|
<arg type="i" direction="in" name="y"/>
|
||||||
outSignature: 'b'
|
<arg type="i" direction="in" name="width"/>
|
||||||
},
|
<arg type="i" direction="in" name="height"/>
|
||||||
{ name: 'ScreenshotWindow',
|
<arg type="s" direction="in" name="filename"/>
|
||||||
inSignature: 'bs',
|
<arg type="b" direction="out" name="success"/>
|
||||||
outSignature: 'b'
|
</method>
|
||||||
},
|
<method name="ScreenshotWindow">
|
||||||
{ name: 'Screenshot',
|
<arg type="b" direction="in" name="include_frame"/>
|
||||||
inSignature: 's',
|
<arg type="s" direction="in" name="filename"/>
|
||||||
outSignature: 'b'
|
<arg type="b" direction="out" name="success"/>
|
||||||
},
|
</method>
|
||||||
{ name: 'EnableExtension',
|
<method name="Screenshot">
|
||||||
inSignature: 's',
|
<arg type="s" direction="in" name="filename"/>
|
||||||
outSignature: ''
|
<arg type="b" direction="out" name="success"/>
|
||||||
},
|
</method>
|
||||||
{ name: 'DisableExtension',
|
<method name="EnableExtension">
|
||||||
inSignature: 's',
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
outSignature: ''
|
</method>
|
||||||
},
|
<method name="DisableExtension">
|
||||||
{ name: 'InstallRemoteExtension',
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
inSignature: 'ss',
|
</method>
|
||||||
outSignature: ''
|
<method name="InstallRemoteExtension">
|
||||||
},
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
{ name: 'UninstallExtension',
|
<arg type="s" direction="in" name="version"/>
|
||||||
inSignature: 's',
|
</method>
|
||||||
outSignature: 'b'
|
<method name="UninstallExtension">
|
||||||
}
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
],
|
<arg type="b" direction="out" name="success"/>
|
||||||
signals: [{ name: 'ExtensionStatusChanged',
|
</method>
|
||||||
inSignature: 'sis' }],
|
<property name="OverviewActive" type="b" access="readwrite" />
|
||||||
properties: [{ name: 'OverviewActive',
|
<property name="ApiVersion" type="i" access="read" />
|
||||||
signature: 'b',
|
<property name="ShellVersion" type="s" access="read" />
|
||||||
access: 'readwrite' },
|
<signal name="ExtensionStatusChanged">
|
||||||
{ name: 'ApiVersion',
|
<arg type="s" name="uuid"/>
|
||||||
signature: 'i',
|
<arg type="i" name="state"/>
|
||||||
access: 'read' },
|
<arg type="s" name="error"/>
|
||||||
{ name: 'ShellVersion',
|
</signal>
|
||||||
signature: 's',
|
</interface>;
|
||||||
access: 'read' }]
|
|
||||||
};
|
|
||||||
|
|
||||||
function GnomeShell() {
|
const GnomeShell = new Lang.Class({
|
||||||
this._init();
|
Name: 'GnomeShellDBus',
|
||||||
}
|
|
||||||
|
|
||||||
GnomeShell.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
DBus.session.exportObject('/org/gnome/Shell', this);
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellIface, this);
|
||||||
|
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
|
||||||
ExtensionSystem.connect('extension-state-changed',
|
ExtensionSystem.connect('extension-state-changed',
|
||||||
Lang.bind(this, this._extensionStateChanged));
|
Lang.bind(this, this._extensionStateChanged));
|
||||||
},
|
},
|
||||||
@ -93,6 +91,9 @@ GnomeShell.prototype = {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
Eval: function(code) {
|
Eval: function(code) {
|
||||||
|
if (!global.settings.get_boolean('development-tools'))
|
||||||
|
return [false, null];
|
||||||
|
|
||||||
let returnValue;
|
let returnValue;
|
||||||
let success;
|
let success;
|
||||||
try {
|
try {
|
||||||
@ -153,11 +154,33 @@ GnomeShell.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
ListExtensions: function() {
|
ListExtensions: function() {
|
||||||
return ExtensionSystem.extensionMeta;
|
let out = {};
|
||||||
|
for (let uuid in ExtensionSystem.extensionMeta) {
|
||||||
|
let dbusObj = this.GetExtensionInfo(uuid);
|
||||||
|
out[uuid] = dbusObj;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
},
|
},
|
||||||
|
|
||||||
GetExtensionInfo: function(uuid) {
|
GetExtensionInfo: function(uuid) {
|
||||||
return ExtensionSystem.extensionMeta[uuid] || {};
|
let meta = ExtensionSystem.extensionMeta[uuid] || {};
|
||||||
|
let out = {};
|
||||||
|
for (let key in meta) {
|
||||||
|
let val = meta[key];
|
||||||
|
let type;
|
||||||
|
switch (typeof val) {
|
||||||
|
case 'string':
|
||||||
|
type = 's';
|
||||||
|
break;
|
||||||
|
case 'number':
|
||||||
|
type = 'd';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
out[key] = GLib.Variant.new(type, val);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
},
|
},
|
||||||
|
|
||||||
GetExtensionErrors: function(uuid) {
|
GetExtensionErrors: function(uuid) {
|
||||||
@ -202,12 +225,7 @@ GnomeShell.prototype = {
|
|||||||
ShellVersion: Config.PACKAGE_VERSION,
|
ShellVersion: Config.PACKAGE_VERSION,
|
||||||
|
|
||||||
_extensionStateChanged: function(_, newState) {
|
_extensionStateChanged: function(_, newState) {
|
||||||
DBus.session.emit_signal('/org/gnome/Shell',
|
this._dbusImpl.emit_signal('ExtensionStatusChanged',
|
||||||
'org.gnome.Shell',
|
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
|
||||||
'ExtensionStatusChanged', 'sis',
|
|
||||||
[newState.uuid, newState.state, newState.error]);
|
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
DBus.conformExport(GnomeShell.prototype, GnomeShellIface);
|
|
||||||
|
|
||||||
|
@ -7,18 +7,14 @@ const Main = imports.ui.main;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
|
const _EntryMenu = new Lang.Class({
|
||||||
function _EntryMenu(entry, params) {
|
Name: 'ShellEntryMenu',
|
||||||
this._init(entry, params);
|
Extends: PopupMenu.PopupMenu,
|
||||||
};
|
|
||||||
|
|
||||||
_EntryMenu.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupMenu.prototype,
|
|
||||||
|
|
||||||
_init: function(entry, params) {
|
_init: function(entry, params) {
|
||||||
params = Params.parse (params, { isPassword: false });
|
params = Params.parse (params, { isPassword: false });
|
||||||
|
|
||||||
PopupMenu.PopupMenu.prototype._init.call(this, entry, 0, St.Side.TOP);
|
this.parent(entry, 0, St.Side.TOP);
|
||||||
|
|
||||||
this.actor.add_style_class_name('entry-context-menu');
|
this.actor.add_style_class_name('entry-context-menu');
|
||||||
|
|
||||||
@ -60,7 +56,7 @@ _EntryMenu.prototype = {
|
|||||||
if (!this.actor.navigate_focus(null, direction, false))
|
if (!this.actor.navigate_focus(null, direction, false))
|
||||||
this.actor.grab_key_focus();
|
this.actor.grab_key_focus();
|
||||||
|
|
||||||
PopupMenu.PopupMenu.prototype.open.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateCopyItem: function() {
|
_updateCopyItem: function() {
|
||||||
@ -103,8 +99,7 @@ _EntryMenu.prototype = {
|
|||||||
let visible = !!(this._entry.clutter_text.password_char);
|
let visible = !!(this._entry.clutter_text.password_char);
|
||||||
this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf');
|
this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function _setMenuAlignment(entry, stageX) {
|
function _setMenuAlignment(entry, stageX) {
|
||||||
let [success, entryX, entryY] = entry.transform_stage_point(stageX, 0);
|
let [success, entryX, entryY] = entry.transform_stage_point(stageX, 0);
|
||||||
|
@ -50,11 +50,9 @@ function _setLabelsForMessage(dialog, message) {
|
|||||||
|
|
||||||
/* -------------------------------------------------------- */
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
function ListItem(app) {
|
const ListItem = new Lang.Class({
|
||||||
this._init(app);
|
Name: 'ListItem',
|
||||||
}
|
|
||||||
|
|
||||||
ListItem.prototype = {
|
|
||||||
_init: function(app) {
|
_init: function(app) {
|
||||||
this._app = app;
|
this._app = app;
|
||||||
|
|
||||||
@ -86,14 +84,12 @@ ListItem.prototype = {
|
|||||||
this.emit('activate');
|
this.emit('activate');
|
||||||
this._app.activate();
|
this._app.activate();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ListItem.prototype);
|
Signals.addSignalMethods(ListItem.prototype);
|
||||||
|
|
||||||
function ShellMountOperation(source, params) {
|
const ShellMountOperation = new Lang.Class({
|
||||||
this._init(source, params);
|
Name: 'ShellMountOperation',
|
||||||
}
|
|
||||||
|
|
||||||
ShellMountOperation.prototype = {
|
|
||||||
_init: function(source, params) {
|
_init: function(source, params) {
|
||||||
params = Params.parse(params, { reaskPassword: false });
|
params = Params.parse(params, { reaskPassword: false });
|
||||||
|
|
||||||
@ -190,17 +186,14 @@ ShellMountOperation.prototype = {
|
|||||||
|
|
||||||
this._processesDialog.update(message, processes, choices);
|
this._processesDialog.update(message, processes, choices);
|
||||||
},
|
},
|
||||||
}
|
});
|
||||||
|
|
||||||
function ShellMountQuestionDialog(icon) {
|
const ShellMountQuestionDialog = new Lang.Class({
|
||||||
this._init(icon);
|
Name: 'ShellMountQuestionDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
ShellMountQuestionDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function(icon) {
|
_init: function(icon) {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'mount-question-dialog' });
|
this.parent({ styleClass: 'mount-question-dialog' });
|
||||||
|
|
||||||
let mainContentLayout = new St.BoxLayout();
|
let mainContentLayout = new St.BoxLayout();
|
||||||
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
||||||
@ -236,19 +229,16 @@ ShellMountQuestionDialog.prototype = {
|
|||||||
_setLabelsForMessage(this, message);
|
_setLabelsForMessage(this, message);
|
||||||
_setButtonsForChoices(this, choices);
|
_setButtonsForChoices(this, choices);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
|
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
|
||||||
|
|
||||||
function ShellMountPasswordSource(message, icon, reaskPassword) {
|
const ShellMountPasswordSource = new Lang.Class({
|
||||||
this._init(message, icon, reaskPassword);
|
Name: 'ShellMountPasswordSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
ShellMountPasswordSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(message, icon, reaskPassword) {
|
_init: function(message, icon, reaskPassword) {
|
||||||
let strings = message.split('\n');
|
let strings = message.split('\n');
|
||||||
MessageTray.Source.prototype._init.call(this, strings[0]);
|
this.parent(strings[0]);
|
||||||
|
|
||||||
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
|
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
|
||||||
|
|
||||||
@ -256,21 +246,15 @@ ShellMountPasswordSource.prototype = {
|
|||||||
Main.messageTray.add(this);
|
Main.messageTray.add(this);
|
||||||
this.notify(this._notification);
|
this.notify(this._notification);
|
||||||
},
|
},
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(ShellMountPasswordSource.prototype);
|
Signals.addSignalMethods(ShellMountPasswordSource.prototype);
|
||||||
|
|
||||||
function ShellMountPasswordNotification(source, strings, icon, reaskPassword) {
|
const ShellMountPasswordNotification = new Lang.Class({
|
||||||
this._init(source, strings, icon, reaskPassword);
|
Name: 'ShellMountPasswordNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
ShellMountPasswordNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, strings, icon, reaskPassword) {
|
_init: function(source, strings, icon, reaskPassword) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source,
|
this.parent(source, strings[0], null, { customContent: true, icon: icon });
|
||||||
strings[0], null,
|
|
||||||
{ customContent: true,
|
|
||||||
icon: icon });
|
|
||||||
|
|
||||||
// set the notification to transient and urgent, so that it
|
// set the notification to transient and urgent, so that it
|
||||||
// expands out
|
// expands out
|
||||||
@ -305,17 +289,14 @@ ShellMountPasswordNotification.prototype = {
|
|||||||
|
|
||||||
this.source.emit('password-ready', text);
|
this.source.emit('password-ready', text);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function ShellProcessesDialog(icon) {
|
const ShellProcessesDialog = new Lang.Class({
|
||||||
this._init(icon);
|
Name: 'ShellProcessesDialog',
|
||||||
}
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
ShellProcessesDialog.prototype = {
|
|
||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
|
||||||
|
|
||||||
_init: function(icon) {
|
_init: function(icon) {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'show-processes-dialog' });
|
this.parent({ styleClass: 'show-processes-dialog' });
|
||||||
|
|
||||||
let mainContentLayout = new St.BoxLayout();
|
let mainContentLayout = new St.BoxLayout();
|
||||||
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
||||||
@ -401,5 +382,5 @@ ShellProcessesDialog.prototype = {
|
|||||||
_setLabelsForMessage(this, message);
|
_setLabelsForMessage(this, message);
|
||||||
_setButtonsForChoices(this, choices);
|
_setButtonsForChoices(this, choices);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
Signals.addSignalMethods(ShellProcessesDialog.prototype);
|
Signals.addSignalMethods(ShellProcessesDialog.prototype);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
const GDesktopEnums = imports.gi.GDesktopEnums;
|
||||||
const GConf = imports.gi.GConf;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -30,8 +29,8 @@ const DPI_FACTOR_LARGE = 1.25;
|
|||||||
const DPI_FACTOR_LARGER = 1.5;
|
const DPI_FACTOR_LARGER = 1.5;
|
||||||
const DPI_FACTOR_LARGEST = 2.0;
|
const DPI_FACTOR_LARGEST = 2.0;
|
||||||
|
|
||||||
const KEY_META_DIR = '/apps/metacity/general';
|
const WM_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||||
const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell';
|
const KEY_VISUAL_BELL = 'visual-bell';
|
||||||
|
|
||||||
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
|
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
|
||||||
const KEY_GTK_THEME = 'gtk-theme';
|
const KEY_GTK_THEME = 'gtk-theme';
|
||||||
@ -40,19 +39,12 @@ const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
|
|||||||
|
|
||||||
const HIGH_CONTRAST_THEME = 'HighContrast';
|
const HIGH_CONTRAST_THEME = 'HighContrast';
|
||||||
|
|
||||||
function ATIndicator() {
|
const ATIndicator = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ATIndicator',
|
||||||
}
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
ATIndicator.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-accessibility', null);
|
this.parent('preferences-desktop-accessibility', null);
|
||||||
|
|
||||||
let client = GConf.Client.get_default();
|
|
||||||
client.add_dir(KEY_META_DIR, GConf.ClientPreloadType.PRELOAD_ONELEVEL, null);
|
|
||||||
client.notify_add(KEY_META_DIR, Lang.bind(this, this._keyChanged), null, null);
|
|
||||||
|
|
||||||
let highContrast = this._buildHCItem();
|
let highContrast = this._buildHCItem();
|
||||||
this.menu.addMenuItem(highContrast);
|
this.menu.addMenuItem(highContrast);
|
||||||
@ -72,7 +64,7 @@ ATIndicator.prototype = {
|
|||||||
'screen-keyboard-enabled');
|
'screen-keyboard-enabled');
|
||||||
this.menu.addMenuItem(screenKeyboard);
|
this.menu.addMenuItem(screenKeyboard);
|
||||||
|
|
||||||
let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
|
let visualBell = this._buildItem(_("Visual Alerts"), WM_SCHEMA, KEY_VISUAL_BELL);
|
||||||
this.menu.addMenuItem(visualBell);
|
this.menu.addMenuItem(visualBell);
|
||||||
|
|
||||||
let stickyKeys = this._buildItem(_("Sticky Keys"), A11Y_SCHEMA, KEY_STICKY_KEYS_ENABLED);
|
let stickyKeys = this._buildItem(_("Sticky Keys"), A11Y_SCHEMA, KEY_STICKY_KEYS_ENABLED);
|
||||||
@ -102,22 +94,6 @@ ATIndicator.prototype = {
|
|||||||
return widget;
|
return widget;
|
||||||
},
|
},
|
||||||
|
|
||||||
_buildItemGConf: function(string, client, key) {
|
|
||||||
function on_get() {
|
|
||||||
return client.get_bool(key);
|
|
||||||
}
|
|
||||||
let widget = this._buildItemExtended(string,
|
|
||||||
client.get_bool(key),
|
|
||||||
client.key_is_writable(key),
|
|
||||||
function(enabled) {
|
|
||||||
client.set_bool(key, enabled);
|
|
||||||
});
|
|
||||||
this.connect('gconf-changed', function() {
|
|
||||||
widget.setToggleState(client.get_bool(key));
|
|
||||||
});
|
|
||||||
return widget;
|
|
||||||
},
|
|
||||||
|
|
||||||
_buildItem: function(string, schema, key) {
|
_buildItem: function(string, schema, key) {
|
||||||
let settings = new Gio.Settings({ schema: schema });
|
let settings = new Gio.Settings({ schema: schema });
|
||||||
let widget = this._buildItemExtended(string,
|
let widget = this._buildItemExtended(string,
|
||||||
@ -191,10 +167,5 @@ ATIndicator.prototype = {
|
|||||||
widget.setToggleState(active);
|
widget.setToggleState(active);
|
||||||
});
|
});
|
||||||
return widget;
|
return widget;
|
||||||
},
|
|
||||||
|
|
||||||
_keyChanged: function() {
|
|
||||||
this.emit('gconf-changed');
|
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ATIndicator.prototype);
|
|
||||||
|
@ -23,15 +23,12 @@ const ConnectionState = {
|
|||||||
CONNECTING: 3
|
CONNECTING: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
function Indicator() {
|
const Indicator = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'BTIndicator',
|
||||||
}
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
Indicator.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'bluetooth-disabled', null);
|
this.parent('bluetooth-disabled', null);
|
||||||
|
|
||||||
GLib.spawn_command_line_sync ('pkill -f "^bluetooth-applet$"');
|
GLib.spawn_command_line_sync ('pkill -f "^bluetooth-applet$"');
|
||||||
this._applet = new GnomeBluetoothApplet.Applet();
|
this._applet = new GnomeBluetoothApplet.Applet();
|
||||||
@ -204,9 +201,10 @@ Indicator.prototype = {
|
|||||||
|
|
||||||
_buildDeviceSubMenu: function(item, device) {
|
_buildDeviceSubMenu: function(item, device) {
|
||||||
if (device.can_connect) {
|
if (device.can_connect) {
|
||||||
|
let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
|
||||||
item._connected = device.connected;
|
item._connected = device.connected;
|
||||||
item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
|
item._connectedMenuItem = menuitem;
|
||||||
item._connectedMenuitem.connect('toggled', Lang.bind(this, function() {
|
menuitem.connect('toggled', Lang.bind(this, function() {
|
||||||
if (item._connected > ConnectionState.CONNECTED) {
|
if (item._connected > ConnectionState.CONNECTED) {
|
||||||
// operation already in progress, revert
|
// operation already in progress, revert
|
||||||
// (should not happen anyway)
|
// (should not happen anyway)
|
||||||
@ -241,7 +239,7 @@ Indicator.prototype = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
item.menu.addMenuItem(item._connectedMenuitem);
|
item.menu.addMenuItem(menuitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) {
|
if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) {
|
||||||
@ -334,17 +332,14 @@ Indicator.prototype = {
|
|||||||
_cancelRequest: function() {
|
_cancelRequest: function() {
|
||||||
this._source.destroy();
|
this._source.destroy();
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function Source() {
|
const Source = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'BluetoothSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
Source.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
MessageTray.Source.prototype._init.call(this, _("Bluetooth"));
|
this.parent(_("Bluetooth"));
|
||||||
|
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
},
|
},
|
||||||
@ -358,7 +353,7 @@ Source.prototype = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
MessageTray.Source.prototype.notify.call(this, notification);
|
this.parent(notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
@ -366,21 +361,17 @@ Source.prototype = {
|
|||||||
icon_type: St.IconType.SYMBOLIC,
|
icon_type: St.IconType.SYMBOLIC,
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function AuthNotification() {
|
const AuthNotification = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'AuthNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
AuthNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, applet, device_path, name, long_name, uuid) {
|
_init: function(source, applet, device_path, name, long_name, uuid) {
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(source,
|
||||||
source,
|
_("Bluetooth"),
|
||||||
_("Bluetooth"),
|
_("Authorization request from %s").format(name),
|
||||||
_("Authorization request from %s").format(name),
|
{ customContent: true });
|
||||||
{ customContent: true });
|
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this._applet = applet;
|
this._applet = applet;
|
||||||
@ -406,21 +397,17 @@ AuthNotification.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function ConfirmNotification() {
|
const ConfirmNotification = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'ConfirmNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
ConfirmNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, applet, device_path, name, long_name, pin) {
|
_init: function(source, applet, device_path, name, long_name, pin) {
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(source,
|
||||||
source,
|
_("Bluetooth"),
|
||||||
_("Bluetooth"),
|
_("Pairing confirmation for %s").format(name),
|
||||||
_("Pairing confirmation for %s").format(name),
|
{ customContent: true });
|
||||||
{ customContent: true });
|
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this._applet = applet;
|
this._applet = applet;
|
||||||
@ -439,21 +426,17 @@ ConfirmNotification.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function PinNotification() {
|
const PinNotification = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'PinNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
PinNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, applet, device_path, name, long_name, numeric) {
|
_init: function(source, applet, device_path, name, long_name, numeric) {
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(source,
|
||||||
source,
|
_("Bluetooth"),
|
||||||
_("Bluetooth"),
|
_("Pairing request for %s").format(name),
|
||||||
_("Pairing request for %s").format(name),
|
{ customContent: true });
|
||||||
{ customContent: true });
|
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this._applet = applet;
|
this._applet = applet;
|
||||||
@ -502,7 +485,7 @@ PinNotification.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
grabFocus: function(lockTray) {
|
grabFocus: function(lockTray) {
|
||||||
MessageTray.Notification.prototype.grabFocus.call(this, lockTray);
|
this.parent(lockTray);
|
||||||
global.stage.set_key_focus(this._entry);
|
global.stage.set_key_focus(this._entry);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
@ -14,15 +14,12 @@ const PopupMenu = imports.ui.popupMenu;
|
|||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
function LayoutMenuItem() {
|
const LayoutMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'LayoutMenuItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
LayoutMenuItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(config, id, indicator, long_name) {
|
_init: function(config, id, indicator, long_name) {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._id = id;
|
this._id = id;
|
||||||
@ -33,20 +30,18 @@ LayoutMenuItem.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this);
|
this.parent(event);
|
||||||
|
|
||||||
this._config.lock_group(this._id);
|
this._config.lock_group(this._id);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function XKBIndicator() {
|
const XKBIndicator = new Lang.Class({
|
||||||
this._init.call(this);
|
Name: 'XKBIndicator',
|
||||||
}
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
XKBIndicator.prototype = {
|
|
||||||
__proto__: PanelMenu.Button.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.Button.prototype._init.call(this, St.Align.START);
|
this.parent(0.0);
|
||||||
|
|
||||||
this._container = new Shell.GenericContainer();
|
this._container = new Shell.GenericContainer();
|
||||||
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||||
@ -221,4 +216,4 @@ XKBIndicator.prototype = {
|
|||||||
for (let i = 0; i < this._labelActors.length; i++)
|
for (let i = 0; i < this._labelActors.length; i++)
|
||||||
this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags);
|
this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
const ByteArray = imports.byteArray;
|
const ByteArray = imports.byteArray;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const GObject = imports.gi.GObject;
|
const GObject = imports.gi.GObject;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -98,15 +97,12 @@ function ssidToLabel(ssid) {
|
|||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
function NMNetworkMenuItem() {
|
const NMNetworkMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMNetworkMenuItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
NMNetworkMenuItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(accessPoints, title, params) {
|
_init: function(accessPoints, title, params) {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, params);
|
this.parent(params);
|
||||||
|
|
||||||
accessPoints = sortAccessPoints(accessPoints);
|
accessPoints = sortAccessPoints(accessPoints);
|
||||||
this.bestAP = accessPoints[0];
|
this.bestAP = accessPoints[0];
|
||||||
@ -185,21 +181,18 @@ NMNetworkMenuItem.prototype = {
|
|||||||
apObj.updateId = 0;
|
apObj.updateId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
PopupMenu.PopupBaseMenuItem.prototype.destroy.call(this);
|
this.parent();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMWiredSectionTitleMenuItem() {
|
const NMWiredSectionTitleMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMWiredSectionTitleMenuItem',
|
||||||
}
|
Extends: PopupMenu.PopupSwitchMenuItem,
|
||||||
|
|
||||||
NMWiredSectionTitleMenuItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupSwitchMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(label, params) {
|
_init: function(label, params) {
|
||||||
params = params || { };
|
params = params || { };
|
||||||
params.style_class = 'popup-subtitle-menu-item';
|
params.style_class = 'popup-subtitle-menu-item';
|
||||||
PopupMenu.PopupSwitchMenuItem.prototype._init.call(this, label, false, params);
|
this.parent(label, false, params);
|
||||||
},
|
},
|
||||||
|
|
||||||
updateForDevice: function(device) {
|
updateForDevice: function(device) {
|
||||||
@ -212,7 +205,7 @@ NMWiredSectionTitleMenuItem.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
PopupMenu.PopupSwitchMenuItem.prototype.activate.call(this, event);
|
this.parent(event);
|
||||||
|
|
||||||
if (!this._device) {
|
if (!this._device) {
|
||||||
log('Section title activated when there is more than one device, should be non reactive');
|
log('Section title activated when there is more than one device, should be non reactive');
|
||||||
@ -231,19 +224,16 @@ NMWiredSectionTitleMenuItem.prototype = {
|
|||||||
else
|
else
|
||||||
this._device.deactivate();
|
this._device.deactivate();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMWirelessSectionTitleMenuItem() {
|
const NMWirelessSectionTitleMenuItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMWirelessSectionTitleMenuItem',
|
||||||
}
|
Extends: PopupMenu.PopupSwitchMenuItem,
|
||||||
|
|
||||||
NMWirelessSectionTitleMenuItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupSwitchMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(client, property, title, params) {
|
_init: function(client, property, title, params) {
|
||||||
params = params || { };
|
params = params || { };
|
||||||
params.style_class = 'popup-subtitle-menu-item';
|
params.style_class = 'popup-subtitle-menu-item';
|
||||||
PopupMenu.PopupSwitchMenuItem.prototype._init.call(this, title, false, params);
|
this.parent(title, false, params);
|
||||||
|
|
||||||
this._client = client;
|
this._client = client;
|
||||||
this._property = property + '_enabled';
|
this._property = property + '_enabled';
|
||||||
@ -269,7 +259,7 @@ NMWirelessSectionTitleMenuItem.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
activate: function(event) {
|
activate: function(event) {
|
||||||
PopupMenu.PopupSwitchMenuItem.prototype.activate.call(this, event);
|
this.parent(event);
|
||||||
|
|
||||||
this._client[this._setEnabledFunc](this._switch.state);
|
this._client[this._setEnabledFunc](this._switch.state);
|
||||||
},
|
},
|
||||||
@ -286,13 +276,12 @@ NMWirelessSectionTitleMenuItem.prototype = {
|
|||||||
|
|
||||||
this.emit('enabled-changed', enabled);
|
this.emit('enabled-changed', enabled);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMDevice() {
|
const NMDevice = new Lang.Class({
|
||||||
throw new TypeError('Instantanting abstract class NMDevice');
|
Name: 'NMDevice',
|
||||||
}
|
Abstract: true,
|
||||||
|
|
||||||
NMDevice.prototype = {
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(client, device, connections) {
|
||||||
this.device = device;
|
this.device = device;
|
||||||
if (device) {
|
if (device) {
|
||||||
@ -674,26 +663,23 @@ NMDevice.prototype = {
|
|||||||
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(NMDevice.prototype);
|
Signals.addSignalMethods(NMDevice.prototype);
|
||||||
|
|
||||||
|
|
||||||
function NMDeviceWired() {
|
const NMDeviceWired = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMDeviceWired',
|
||||||
}
|
Extends: NMDevice,
|
||||||
|
|
||||||
NMDeviceWired.prototype = {
|
|
||||||
__proto__: NMDevice.prototype,
|
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(client, device, connections) {
|
||||||
this._autoConnectionName = _("Auto Ethernet");
|
this._autoConnectionName = _("Auto Ethernet");
|
||||||
this.category = NMConnectionCategory.WIRED;
|
this.category = NMConnectionCategory.WIRED;
|
||||||
|
|
||||||
NMDevice.prototype._init.call(this, client, device, connections);
|
this.parent(client, device, connections);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createSection: function() {
|
_createSection: function() {
|
||||||
NMDevice.prototype._createSection.call(this);
|
this.parent();
|
||||||
|
|
||||||
// if we have only one connection (normal or automatic)
|
// if we have only one connection (normal or automatic)
|
||||||
// we hide the connection list, and use the switch to control
|
// we hide the connection list, and use the switch to control
|
||||||
@ -718,14 +704,11 @@ NMDeviceWired.prototype = {
|
|||||||
}));
|
}));
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMDeviceModem() {
|
const NMDeviceModem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMDeviceModem',
|
||||||
}
|
Extends: NMDevice,
|
||||||
|
|
||||||
NMDeviceModem.prototype = {
|
|
||||||
__proto__: NMDevice.prototype,
|
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(client, device, connections) {
|
||||||
let is_wwan = false;
|
let is_wwan = false;
|
||||||
@ -774,7 +757,7 @@ NMDeviceModem.prototype = {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
NMDevice.prototype._init.call(this, client, device, connections);
|
this.parent(client, device, connections);
|
||||||
},
|
},
|
||||||
|
|
||||||
setEnabled: function(enabled) {
|
setEnabled: function(enabled) {
|
||||||
@ -787,7 +770,7 @@ NMDeviceModem.prototype = {
|
|||||||
this.statusItem.setStatus(this.getStatusLabel());
|
this.statusItem.setStatus(this.getStatusLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
NMDevice.prototype.setEnabled.call(this, enabled);
|
this.parent(enabled);
|
||||||
},
|
},
|
||||||
|
|
||||||
get connected() {
|
get connected() {
|
||||||
@ -804,7 +787,7 @@ NMDeviceModem.prototype = {
|
|||||||
this._signalQualityId = 0;
|
this._signalQualityId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
NMDevice.prototype.destroy.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_getSignalIcon: function() {
|
_getSignalIcon: function() {
|
||||||
@ -825,13 +808,13 @@ NMDeviceModem.prototype = {
|
|||||||
this.section.addMenuItem(this._operatorItem);
|
this.section.addMenuItem(this._operatorItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
NMDevice.prototype._createSection.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_clearSection: function() {
|
_clearSection: function() {
|
||||||
this._operatorItem = null;
|
this._operatorItem = null;
|
||||||
|
|
||||||
NMDevice.prototype._clearSection.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_createAutomaticConnection: function() {
|
_createAutomaticConnection: function() {
|
||||||
@ -841,14 +824,11 @@ NMDeviceModem.prototype = {
|
|||||||
'connect-3g', this.device.get_path()]);
|
'connect-3g', this.device.get_path()]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMDeviceBluetooth() {
|
const NMDeviceBluetooth = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMDeviceBluetooth',
|
||||||
}
|
Extends: NMDevice,
|
||||||
|
|
||||||
NMDeviceBluetooth.prototype = {
|
|
||||||
__proto__: NMDevice.prototype,
|
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(client, device, connections) {
|
||||||
this._autoConnectionName = this._makeConnectionName(device);
|
this._autoConnectionName = this._makeConnectionName(device);
|
||||||
@ -856,7 +836,7 @@ NMDeviceBluetooth.prototype = {
|
|||||||
|
|
||||||
this.category = NMConnectionCategory.WWAN;
|
this.category = NMConnectionCategory.WWAN;
|
||||||
|
|
||||||
NMDevice.prototype._init.call(this, client, device, connections);
|
this.parent(client, device, connections);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createAutomaticConnection: function() {
|
_createAutomaticConnection: function() {
|
||||||
@ -886,23 +866,20 @@ NMDeviceBluetooth.prototype = {
|
|||||||
this._clearSection();
|
this._clearSection();
|
||||||
this._createSection();
|
this._createSection();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
// Not a real device, but I save a lot code this way
|
// Not a real device, but I save a lot code this way
|
||||||
function NMDeviceVPN() {
|
const NMDeviceVPN = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMDeviceVPN',
|
||||||
}
|
Extends: NMDevice,
|
||||||
|
|
||||||
NMDeviceVPN.prototype = {
|
|
||||||
__proto__: NMDevice.prototype,
|
|
||||||
|
|
||||||
_init: function(client) {
|
_init: function(client) {
|
||||||
// Disable autoconnections
|
// Disable autoconnections
|
||||||
this._autoConnectionName = null;
|
this._autoConnectionName = null;
|
||||||
this.category = NMConnectionCategory.VPN;
|
this.category = NMConnectionCategory.VPN;
|
||||||
|
|
||||||
NMDevice.prototype._init.call(this, client, null, [ ]);
|
this.parent(client, null, [ ]);
|
||||||
},
|
},
|
||||||
|
|
||||||
connectionValid: function(connection) {
|
connectionValid: function(connection) {
|
||||||
@ -918,7 +895,7 @@ NMDeviceVPN.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setActiveConnection: function(activeConnection) {
|
setActiveConnection: function(activeConnection) {
|
||||||
NMDevice.prototype.setActiveConnection.call(this, activeConnection);
|
this.parent(activeConnection);
|
||||||
|
|
||||||
this.emit('active-connection-changed');
|
this.emit('active-connection-changed');
|
||||||
},
|
},
|
||||||
@ -935,14 +912,11 @@ NMDeviceVPN.prototype = {
|
|||||||
getStatusLabel: function() {
|
getStatusLabel: function() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMDeviceWireless() {
|
const NMDeviceWireless = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMDeviceWireless',
|
||||||
}
|
Extends: NMDevice,
|
||||||
|
|
||||||
NMDeviceWireless.prototype = {
|
|
||||||
__proto__: NMDevice.prototype,
|
|
||||||
|
|
||||||
_init: function(client, device, connections) {
|
_init: function(client, device, connections) {
|
||||||
this.category = NMConnectionCategory.WIRELESS;
|
this.category = NMConnectionCategory.WIRELESS;
|
||||||
@ -1014,7 +988,7 @@ NMDeviceWireless.prototype = {
|
|||||||
this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
|
this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
|
||||||
this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
|
this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
|
||||||
|
|
||||||
NMDevice.prototype._init.call(this, client, device, validConnections);
|
this.parent(client, device, validConnections);
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
@ -1034,7 +1008,7 @@ NMDeviceWireless.prototype = {
|
|||||||
this._apRemovedId = 0;
|
this._apRemovedId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
NMDevice.prototype.destroy.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
setEnabled: function(enabled) {
|
setEnabled: function(enabled) {
|
||||||
@ -1104,10 +1078,10 @@ NMDeviceWireless.prototype = {
|
|||||||
let activeAp = this.device.active_access_point;
|
let activeAp = this.device.active_access_point;
|
||||||
|
|
||||||
if (activeAp) {
|
if (activeAp) {
|
||||||
let pos = this._findNetwork(activeAp);
|
let res = this._findExistingNetwork(activeAp);
|
||||||
|
|
||||||
if (pos != -1)
|
if (res != null)
|
||||||
this._activeNetwork = this._networks[pos];
|
this._activeNetwork = this._networks[res.network];
|
||||||
}
|
}
|
||||||
|
|
||||||
// we don't refresh the view here, setActiveConnection will
|
// we don't refresh the view here, setActiveConnection will
|
||||||
@ -1181,6 +1155,18 @@ NMDeviceWireless.prototype = {
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_findExistingNetwork: function(accessPoint) {
|
||||||
|
for (let i = 0; i < this._networks.length; i++) {
|
||||||
|
let apObj = this._networks[i];
|
||||||
|
for (let j = 0; j < apObj.accessPoints.length; j++) {
|
||||||
|
if (apObj.accessPoints[j] == accessPoint)
|
||||||
|
return { network: i, ap: j };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
_findNetwork: function(accessPoint) {
|
_findNetwork: function(accessPoint) {
|
||||||
if (accessPoint.get_ssid() == null)
|
if (accessPoint.get_ssid() == null)
|
||||||
return -1;
|
return -1;
|
||||||
@ -1273,22 +1259,15 @@ NMDeviceWireless.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_accessPointRemoved: function(device, accessPoint) {
|
_accessPointRemoved: function(device, accessPoint) {
|
||||||
let pos = this._findNetwork(accessPoint);
|
let res = this._findExistingNetwork(accessPoint);
|
||||||
|
|
||||||
if (pos == -1) {
|
if (res == null) {
|
||||||
log('Removing an access point that was never added');
|
log('Removing an access point that was never added');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let apObj = this._networks[pos];
|
let apObj = this._networks[res.network];
|
||||||
let i = apObj.accessPoints.indexOf(accessPoint);
|
apObj.accessPoints.splice(res.ap, 1);
|
||||||
|
|
||||||
if (i == -1) {
|
|
||||||
log('Removing an access point that was never added');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
apObj.accessPoints.splice(i, 1);
|
|
||||||
|
|
||||||
if (apObj.accessPoints.length == 0) {
|
if (apObj.accessPoints.length == 0) {
|
||||||
if (this._activeNetwork == apObj)
|
if (this._activeNetwork == apObj)
|
||||||
@ -1302,22 +1281,26 @@ NMDeviceWireless.prototype = {
|
|||||||
// we removed an item in the main menu, and we have a more submenu
|
// we removed an item in the main menu, and we have a more submenu
|
||||||
// we need to extract the first item in more and move it to the submenu
|
// we need to extract the first item in more and move it to the submenu
|
||||||
|
|
||||||
let apObj = this._overflowItem.menu.firstMenuItem;
|
let item = this._overflowItem.menu.firstMenuItem;
|
||||||
if (apObj.item) {
|
if (item && item._apObj) {
|
||||||
apObj.item.destroy();
|
item.destroy();
|
||||||
|
// clear the cycle, and allow the construction of the new item
|
||||||
|
item._apObj.item = null;
|
||||||
|
|
||||||
this._createNetworkItem(apObj, NUM_VISIBLE_NETWORKS-1);
|
this._createNetworkItem(item._apObj, NUM_VISIBLE_NETWORKS-1);
|
||||||
|
} else {
|
||||||
|
log('The more... menu was existing and empty! This should not happen');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This can happen if the removed connection is from the overflow
|
// This can happen if the removed connection is from the overflow
|
||||||
// menu, or if we just moved the last connection out from the menu
|
// menu, or if we just moved the last connection out from the menu
|
||||||
if (this._overflowItem.menu.length == 0) {
|
if (this._overflowItem.menu.numMenuItems == 0) {
|
||||||
this._overflowItem.destroy();
|
this._overflowItem.destroy();
|
||||||
this._overflowItem = null;
|
this._overflowItem = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this._networks.splice(pos, 1);
|
this._networks.splice(res.network, 1);
|
||||||
|
|
||||||
} else if (apObj.item)
|
} else if (apObj.item)
|
||||||
apObj.item.updateAccessPoints(apObj.accessPoints);
|
apObj.item.updateAccessPoints(apObj.accessPoints);
|
||||||
@ -1339,7 +1322,7 @@ NMDeviceWireless.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_clearSection: function() {
|
_clearSection: function() {
|
||||||
NMDevice.prototype._clearSection.call(this);
|
this.parent();
|
||||||
|
|
||||||
for (let i = 0; i < this._networks.length; i++)
|
for (let i = 0; i < this._networks.length; i++)
|
||||||
this._networks[i].item = null;
|
this._networks[i].item = null;
|
||||||
@ -1489,18 +1472,16 @@ NMDeviceWireless.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(apObj.connections.length > 0) {
|
if(apObj.connections.length > 0) {
|
||||||
if (apObj.connections.length == 1)
|
if (apObj.connections.length == 1) {
|
||||||
apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
|
apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
|
||||||
else {
|
} else {
|
||||||
let title = apObj.ssidText;
|
let title = apObj.ssidText;
|
||||||
apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
|
apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
|
||||||
apObj.item._apObj = apObj;
|
|
||||||
for (let i = 0; i < apObj.connections.length; i++)
|
for (let i = 0; i < apObj.connections.length; i++)
|
||||||
apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
|
apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
|
apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
|
||||||
apObj.item._apObj = apObj;
|
|
||||||
apObj.item.connect('activate', Lang.bind(this, function() {
|
apObj.item.connect('activate', Lang.bind(this, function() {
|
||||||
let accessPoints = sortAccessPoints(apObj.accessPoints);
|
let accessPoints = sortAccessPoints(apObj.accessPoints);
|
||||||
if ( (accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT)
|
if ( (accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT)
|
||||||
@ -1515,6 +1496,8 @@ NMDeviceWireless.prototype = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
apObj.item._apObj = apObj;
|
||||||
|
|
||||||
if (position < NUM_VISIBLE_NETWORKS) {
|
if (position < NUM_VISIBLE_NETWORKS) {
|
||||||
apObj.isMore = false;
|
apObj.isMore = false;
|
||||||
this.section.addMenuItem(apObj.item, position);
|
this.section.addMenuItem(apObj.item, position);
|
||||||
@ -1547,16 +1530,14 @@ NMDeviceWireless.prototype = {
|
|||||||
this._createNetworkItem(apObj, j + activeOffset);
|
this._createNetworkItem(apObj, j + activeOffset);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMApplet() {
|
const NMApplet = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'NMApplet',
|
||||||
}
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
NMApplet.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'network-error');
|
this.parent('network-error', null);
|
||||||
|
|
||||||
this._client = NMClient.Client.new();
|
this._client = NMClient.Client.new();
|
||||||
|
|
||||||
@ -2056,10 +2037,11 @@ NMApplet.prototype = {
|
|||||||
}
|
}
|
||||||
this.setIcon('network-wireless-connected');
|
this.setIcon('network-wireless-connected');
|
||||||
} else {
|
} else {
|
||||||
if (this._accessPointUpdateId && this._activeAccessPoint != ap) {
|
if (this._activeAccessPoint != ap) {
|
||||||
this._activeAccessPoint.disconnect(this._accessPointUpdateId);
|
if (this._accessPointUpdateId)
|
||||||
|
this._activeAccessPoint.disconnect(this._accessPointUpdateId);
|
||||||
this._activeAccessPoint = ap;
|
this._activeAccessPoint = ap;
|
||||||
this._activeAccessPointUpdateId = ap.connect('notify::strength', Lang.bind(function() {
|
this._activeAccessPointUpdateId = ap.connect('notify::strength', Lang.bind(this, function() {
|
||||||
this.setIcon('network-wireless-signal-' + signalToIcon(ap.strength));
|
this.setIcon('network-wireless-signal-' + signalToIcon(ap.strength));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -2086,8 +2068,9 @@ NMApplet.prototype = {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._mobileUpdateId && this._mobileUpdateDevice != dev) {
|
if (dev.mobileDevice != this._mobileUpdateDevice) {
|
||||||
this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
|
if (this._mobileUpdateId)
|
||||||
|
this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
|
||||||
this._mobileUpdateDevice = dev.mobileDevice;
|
this._mobileUpdateDevice = dev.mobileDevice;
|
||||||
this._mobileUpdateId = dev.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
|
this._mobileUpdateId = dev.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
|
||||||
this.setIcon('network-cellular-signal-' + signalToIcon(dev.mobileDevice.signal_quality));
|
this.setIcon('network-cellular-signal-' + signalToIcon(dev.mobileDevice.signal_quality));
|
||||||
@ -2120,17 +2103,14 @@ NMApplet.prototype = {
|
|||||||
this._mobileUpdateId = 0;
|
this._mobileUpdateId = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function NMMessageTraySource() {
|
const NMMessageTraySource = new Lang.Class({
|
||||||
this._init();
|
Name: 'NMMessageTraySource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
NMMessageTraySource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
MessageTray.Source.prototype._init.call(this, _("Network Manager"));
|
this.parent(_("Network Manager"));
|
||||||
|
|
||||||
let icon = new St.Icon({ icon_name: 'network-transmit-receive',
|
let icon = new St.Icon({ icon_name: 'network-transmit-receive',
|
||||||
icon_type: St.IconType.SYMBOLIC,
|
icon_type: St.IconType.SYMBOLIC,
|
||||||
@ -2138,4 +2118,4 @@ NMMessageTraySource.prototype = {
|
|||||||
});
|
});
|
||||||
this._setSummaryIcon(icon);
|
this._setSummaryIcon(icon);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@ -40,31 +39,27 @@ const UPDeviceState = {
|
|||||||
PENDING_DISCHARGE: 6
|
PENDING_DISCHARGE: 6
|
||||||
};
|
};
|
||||||
|
|
||||||
const PowerManagerInterface = {
|
const PowerManagerInterface = <interface name="org.gnome.SettingsDaemon.Power">
|
||||||
name: 'org.gnome.SettingsDaemon.Power',
|
<method name="GetDevices">
|
||||||
methods: [
|
<arg type="a(susdut)" direction="out" />
|
||||||
{ name: 'GetDevices', inSignature: '', outSignature: 'a(susdut)' },
|
</method>
|
||||||
{ name: 'GetPrimaryDevice', inSignature: '', outSignature: '(susdut)' },
|
<method name="GetPrimaryDevice">
|
||||||
],
|
<arg type="(susdut)" direction="out" />
|
||||||
signals: [
|
</method>
|
||||||
{ name: 'Changed', inSignature: '' },
|
<signal name="Changed" />
|
||||||
],
|
<property name="Icon" type="s" access="read" />
|
||||||
properties: [
|
</interface>;
|
||||||
{ name: 'Icon', signature: 's', access: 'read' },
|
|
||||||
]
|
|
||||||
};
|
|
||||||
let PowerManagerProxy = DBus.makeProxyClass(PowerManagerInterface);
|
|
||||||
|
|
||||||
function Indicator() {
|
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(PowerManagerInterface);
|
||||||
this._init.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Indicator.prototype = {
|
const Indicator = new Lang.Class({
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
Name: 'PowerIndicator',
|
||||||
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'battery-missing');
|
this.parent('battery-missing', null);
|
||||||
this._proxy = new PowerManagerProxy(DBus.session, BUS_NAME, OBJECT_PATH);
|
|
||||||
|
this._proxy = new PowerManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH);
|
||||||
|
|
||||||
this._deviceItems = [ ];
|
this._deviceItems = [ ];
|
||||||
this._hasPrimary = false;
|
this._hasPrimary = false;
|
||||||
@ -81,19 +76,19 @@ Indicator.prototype = {
|
|||||||
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.connect('Changed', Lang.bind(this, this._devicesChanged));
|
this._proxy.connectSignal('Changed', Lang.bind(this, this._devicesChanged));
|
||||||
this._devicesChanged();
|
this._devicesChanged();
|
||||||
},
|
},
|
||||||
|
|
||||||
_readPrimaryDevice: function() {
|
_readPrimaryDevice: function() {
|
||||||
this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(device, error) {
|
this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(result, error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
this._hasPrimary = false;
|
this._hasPrimary = false;
|
||||||
this._primaryDeviceId = null;
|
this._primaryDeviceId = null;
|
||||||
this._batteryItem.actor.hide();
|
this._batteryItem.actor.hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let [device_id, device_type, icon, percentage, state, seconds] = device;
|
let [[device_id, device_type, icon, percentage, state, seconds]] = result;
|
||||||
if (device_type == UPDeviceType.BATTERY) {
|
if (device_type == UPDeviceType.BATTERY) {
|
||||||
this._hasPrimary = true;
|
this._hasPrimary = true;
|
||||||
let time = Math.round(seconds / 60);
|
let time = Math.round(seconds / 60);
|
||||||
@ -130,7 +125,7 @@ Indicator.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_readOtherDevices: function() {
|
_readOtherDevices: function() {
|
||||||
this._proxy.GetDevicesRemote(Lang.bind(this, function(devices, error) {
|
this._proxy.GetDevicesRemote(Lang.bind(this, function(result, error) {
|
||||||
this._deviceItems.forEach(function(i) { i.destroy(); });
|
this._deviceItems.forEach(function(i) { i.destroy(); });
|
||||||
this._deviceItems = [];
|
this._deviceItems = [];
|
||||||
|
|
||||||
@ -139,6 +134,7 @@ Indicator.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let position = 0;
|
let position = 0;
|
||||||
|
let [devices] = result;
|
||||||
for (let i = 0; i < devices.length; i++) {
|
for (let i = 0; i < devices.length; i++) {
|
||||||
let [device_id, device_type] = devices[i];
|
let [device_id, device_type] = devices[i];
|
||||||
if (device_type == UPDeviceType.AC_POWER || device_id == this._primaryDeviceId)
|
if (device_type == UPDeviceType.AC_POWER || device_id == this._primaryDeviceId)
|
||||||
@ -153,30 +149,26 @@ Indicator.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_devicesChanged: function() {
|
_devicesChanged: function() {
|
||||||
this._proxy.GetRemote('Icon', Lang.bind(this, function(icon, error) {
|
let icon = this._proxy.Icon;
|
||||||
if (icon) {
|
if (icon) {
|
||||||
let gicon = Gio.icon_new_for_string(icon);
|
let gicon = Gio.icon_new_for_string(icon);
|
||||||
this.setGIcon(gicon);
|
this.setGIcon(gicon);
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
} else {
|
} else {
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
}
|
}
|
||||||
}));
|
|
||||||
this._readPrimaryDevice();
|
this._readPrimaryDevice();
|
||||||
this._readOtherDevices();
|
this._readOtherDevices();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function DeviceItem() {
|
const DeviceItem = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'DeviceItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
DeviceItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(device) {
|
_init: function(device) {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this, { reactive: false });
|
this.parent({ reactive: false });
|
||||||
|
|
||||||
let [device_id, device_type, icon, percentage, state, time] = device;
|
let [device_id, device_type, icon, percentage, state, time] = device;
|
||||||
|
|
||||||
@ -223,4 +215,4 @@ DeviceItem.prototype = {
|
|||||||
return _("Unknown");
|
return _("Unknown");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@ -18,15 +17,12 @@ const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
|
|||||||
|
|
||||||
const VOLUME_NOTIFY_ID = 1;
|
const VOLUME_NOTIFY_ID = 1;
|
||||||
|
|
||||||
function Indicator() {
|
const Indicator = new Lang.Class({
|
||||||
this._init.apply(this, arguments);
|
Name: 'VolumeIndicator',
|
||||||
}
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
Indicator.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'audio-volume-muted', null);
|
this.parent('audio-volume-muted', null);
|
||||||
|
|
||||||
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));
|
||||||
@ -215,4 +211,4 @@ Indicator.prototype = {
|
|||||||
if (property == '_output' && !this._output.is_muted)
|
if (property == '_output' && !this._output.is_muted)
|
||||||
this.setIcon(this._volumeToIcon(this._output.volume));
|
this.setIcon(this._volumeToIcon(this._output.volume));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -23,11 +23,9 @@ const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
|
|||||||
'ibus-ui-gtk': 'input-method'
|
'ibus-ui-gtk': 'input-method'
|
||||||
};
|
};
|
||||||
|
|
||||||
function StatusIconDispatcher() {
|
const StatusIconDispatcher = new Lang.Class({
|
||||||
this._init();
|
Name: 'StatusIconDispatcher',
|
||||||
}
|
|
||||||
|
|
||||||
StatusIconDispatcher.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._traymanager = new Shell.TrayManager();
|
this._traymanager = new Shell.TrayManager();
|
||||||
this._traymanager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
this._traymanager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
||||||
@ -61,5 +59,5 @@ StatusIconDispatcher.prototype = {
|
|||||||
else
|
else
|
||||||
this.emit('message-icon-removed', icon);
|
this.emit('message-icon-removed', icon);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(StatusIconDispatcher.prototype);
|
Signals.addSignalMethods(StatusIconDispatcher.prototype);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -73,11 +72,9 @@ function makeMessageFromTplEvent(event) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function Client() {
|
const Client = new Lang.Class({
|
||||||
this._init();
|
Name: 'Client',
|
||||||
};
|
|
||||||
|
|
||||||
Client.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
// channel path -> ChatSource
|
// channel path -> ChatSource
|
||||||
this._chatSources = {};
|
this._chatSources = {};
|
||||||
@ -480,17 +477,14 @@ Client.prototype = {
|
|||||||
|
|
||||||
return this._accountSource;
|
return this._accountSource;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function ChatSource(account, conn, channel, contact, client) {
|
const ChatSource = new Lang.Class({
|
||||||
this._init(account, conn, channel, contact, client);
|
Name: 'ChatSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
ChatSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(account, conn, channel, contact, client) {
|
_init: function(account, conn, channel, contact, client) {
|
||||||
MessageTray.Source.prototype._init.call(this, contact.get_alias());
|
this.parent(contact.get_alias());
|
||||||
|
|
||||||
this.isChat = true;
|
this.isChat = true;
|
||||||
|
|
||||||
@ -698,7 +692,7 @@ ChatSource.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
notify: function() {
|
notify: function() {
|
||||||
MessageTray.Source.prototype.notify.call(this, this._notification);
|
this.parent(this._notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
respond: function(text) {
|
respond: function(text) {
|
||||||
@ -799,17 +793,14 @@ ChatSource.prototype = {
|
|||||||
|
|
||||||
this._shouldAck = false;
|
this._shouldAck = false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function ChatNotification(source) {
|
const ChatNotification = new Lang.Class({
|
||||||
this._init(source);
|
Name: 'ChatNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
ChatNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source, source.title, null, { customContent: true });
|
this.parent(source, source.title, null, { customContent: true });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||||
@ -900,7 +891,7 @@ ChatNotification.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let groups = this._contentArea.get_children();
|
let groups = this._contentArea.get_children();
|
||||||
for (let i = 0; i < groups.length; i ++) {
|
for (let i = 0; i < groups.length; i++) {
|
||||||
let group = groups[i];
|
let group = groups[i];
|
||||||
if (group.get_children().length == 0)
|
if (group.get_children().length == 0)
|
||||||
group.destroy();
|
group.destroy();
|
||||||
@ -938,7 +929,7 @@ ChatNotification.prototype = {
|
|||||||
let body = highlighter.actor;
|
let body = highlighter.actor;
|
||||||
|
|
||||||
let styles = props.styles;
|
let styles = props.styles;
|
||||||
for (let i = 0; i < styles.length; i ++)
|
for (let i = 0; i < styles.length; i++)
|
||||||
body.add_style_class_name(styles[i]);
|
body.add_style_class_name(styles[i]);
|
||||||
|
|
||||||
let group = props.group;
|
let group = props.group;
|
||||||
@ -1092,17 +1083,14 @@ ChatNotification.prototype = {
|
|||||||
this.source.setChatState(Tp.ChannelChatState.ACTIVE);
|
this.source.setChatState(Tp.ChannelChatState.ACTIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function ApproverSource(dispatchOp, text, gicon) {
|
const ApproverSource = new Lang.Class({
|
||||||
this._init(dispatchOp, text, gicon);
|
Name: 'ApproverSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
ApproverSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(dispatchOp, text, gicon) {
|
_init: function(dispatchOp, text, gicon) {
|
||||||
MessageTray.Source.prototype._init.call(this, text);
|
this.parent(text);
|
||||||
|
|
||||||
this._gicon = gicon;
|
this._gicon = gicon;
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
@ -1123,7 +1111,7 @@ ApproverSource.prototype = {
|
|||||||
this._invalidId = 0;
|
this._invalidId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageTray.Source.prototype.destroy.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
@ -1131,23 +1119,19 @@ ApproverSource.prototype = {
|
|||||||
icon_type: St.IconType.FULLCOLOR,
|
icon_type: St.IconType.FULLCOLOR,
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function RoomInviteNotification(source, dispatchOp, channel, inviter) {
|
const RoomInviteNotification = new Lang.Class({
|
||||||
this._init(source, dispatchOp, channel, inviter);
|
Name: 'RoomInviteNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
RoomInviteNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, dispatchOp, channel, inviter) {
|
_init: function(source, dispatchOp, channel, inviter) {
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(source,
|
||||||
source,
|
/* translators: argument is a room name like
|
||||||
/* translators: argument is a room name like
|
* room@jabber.org for example. */
|
||||||
* room@jabber.org for example. */
|
_("Invitation to %s").format(channel.get_identifier()),
|
||||||
_("Invitation to %s").format(channel.get_identifier()),
|
null,
|
||||||
null,
|
{ customContent: true });
|
||||||
{ customContent: true });
|
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
/* translators: first argument is the name of a contact and the second
|
/* translators: first argument is the name of a contact and the second
|
||||||
@ -1174,15 +1158,12 @@ RoomInviteNotification.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// Audio Video
|
// Audio Video
|
||||||
function AudioVideoNotification(source, dispatchOp, channel, contact, isVideo) {
|
const AudioVideoNotification = new Lang.Class({
|
||||||
this._init(source, dispatchOp, channel, contact, isVideo);
|
Name: 'AudioVideoNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
AudioVideoNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, dispatchOp, channel, contact, isVideo) {
|
_init: function(source, dispatchOp, channel, contact, isVideo) {
|
||||||
let title = '';
|
let title = '';
|
||||||
@ -1194,11 +1175,7 @@ AudioVideoNotification.prototype = {
|
|||||||
/* 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());
|
||||||
|
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(this, source, title, null, { customContent: true });
|
||||||
source,
|
|
||||||
title,
|
|
||||||
null,
|
|
||||||
{ customContent: true });
|
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this.addButton('reject', _("Reject"));
|
this.addButton('reject', _("Reject"));
|
||||||
@ -1221,28 +1198,25 @@ AudioVideoNotification.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// File Transfer
|
// File Transfer
|
||||||
function FileTransferNotification(source, dispatchOp, channel, contact) {
|
const FileTransferNotification = new Lang.Class({
|
||||||
this._init(source, dispatchOp, channel, contact);
|
Name: 'FileTransferNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
FileTransferNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, dispatchOp, channel, contact) {
|
_init: function(source, dispatchOp, channel, contact) {
|
||||||
MessageTray.Notification.prototype._init.call(this,
|
this.parent(this,
|
||||||
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
|
||||||
* like: "Alice is sending you test.ogg"
|
* like: "Alice is sending you test.ogg"
|
||||||
*/
|
*/
|
||||||
_("%s is sending you %s").format(contact.get_alias(),
|
_("%s is sending you %s").format(contact.get_alias(),
|
||||||
channel.get_filename()),
|
channel.get_filename()),
|
||||||
null,
|
null,
|
||||||
{ customContent: true });
|
{ customContent: true });
|
||||||
this.setResident(true);
|
this.setResident(true);
|
||||||
|
|
||||||
this.addButton('decline', _("Decline"));
|
this.addButton('decline', _("Decline"));
|
||||||
@ -1264,18 +1238,15 @@ FileTransferNotification.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// A notification source that can embed multiple notifications
|
// A notification source that can embed multiple notifications
|
||||||
function MultiNotificationSource(title, icon) {
|
const MultiNotificationSource = new Lang.Class({
|
||||||
this._init(title, icon);
|
Name: 'MultiNotificationSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
MultiNotificationSource.prototype = {
|
|
||||||
__proto__: MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(title, icon) {
|
_init: function(title, icon) {
|
||||||
MessageTray.Source.prototype._init.call(this, title);
|
this.parent(title);
|
||||||
|
|
||||||
this._icon = icon;
|
this._icon = icon;
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
@ -1283,7 +1254,7 @@ MultiNotificationSource.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
notify: function(notification) {
|
notify: function(notification) {
|
||||||
MessageTray.Source.prototype.notify.call(this, notification);
|
this.parent(notification);
|
||||||
|
|
||||||
this._nbNotifications += 1;
|
this._nbNotifications += 1;
|
||||||
|
|
||||||
@ -1297,25 +1268,22 @@ MultiNotificationSource.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
return new St.Icon({ gicon: Shell.util_icon_from_string(this._icon),
|
return new St.Icon({ gicon: Gio.icon_new_for_string(this._icon),
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
icon_type: St.IconType.FULLCOLOR,
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
// Subscription request
|
// Subscription request
|
||||||
function SubscriptionRequestNotification(source, contact) {
|
const SubscriptionRequestNotification = new Lang.Class({
|
||||||
this._init(source, contact);
|
Name: 'SubscriptionRequestNotification',
|
||||||
}
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
SubscriptionRequestNotification.prototype = {
|
|
||||||
__proto__: MessageTray.Notification.prototype,
|
|
||||||
|
|
||||||
_init: function(source, contact) {
|
_init: function(source, contact) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source,
|
this.parent(this, 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 });
|
||||||
|
|
||||||
this._contact = contact;
|
this._contact = contact;
|
||||||
this._connection = contact.get_connection();
|
this._connection = contact.get_connection();
|
||||||
@ -1389,7 +1357,7 @@ SubscriptionRequestNotification.prototype = {
|
|||||||
this._invalidatedId = 0;
|
this._invalidatedId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageTray.Notification.prototype.destroy.call(this);
|
this.parent();
|
||||||
},
|
},
|
||||||
|
|
||||||
_subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) {
|
_subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) {
|
||||||
@ -1398,12 +1366,7 @@ SubscriptionRequestNotification.prototype = {
|
|||||||
if (publish != Tp.SubscriptionState.ASK)
|
if (publish != Tp.SubscriptionState.ASK)
|
||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function AccountNotification(source, account, connectionError) {
|
|
||||||
this._init(source, account, connectionError);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Messages from empathy/libempathy/empathy-utils.c
|
// Messages from empathy/libempathy/empathy-utils.c
|
||||||
// create_errors_to_message_hash()
|
// create_errors_to_message_hash()
|
||||||
@ -1458,15 +1421,16 @@ _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INSECURE)]
|
|||||||
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)]
|
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)]
|
||||||
= _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library");
|
= _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library");
|
||||||
|
|
||||||
AccountNotification.prototype = {
|
const AccountNotification = new Lang.Class({
|
||||||
__proto__: MessageTray.Notification.prototype,
|
Name: 'AccountNotification',
|
||||||
|
Extends: MessageTray.Notification,
|
||||||
|
|
||||||
_init: function(source, account, connectionError) {
|
_init: function(source, account, connectionError) {
|
||||||
MessageTray.Notification.prototype._init.call(this, source,
|
this.parent(source,
|
||||||
/* translators: argument is the account name, like
|
/* translators: argument is the account name, like
|
||||||
* name@jabber.org for example. */
|
* name@jabber.org for example. */
|
||||||
_("Connection to %s failed").format(account.get_display_name()),
|
_("Connection to %s failed").format(account.get_display_name()),
|
||||||
null, { customContent: true });
|
null, { customContent: true });
|
||||||
|
|
||||||
this._label = new St.Label();
|
this._label = new St.Label();
|
||||||
this.addActor(this._label);
|
this.addActor(this._label);
|
||||||
@ -1542,6 +1506,6 @@ AccountNotification.prototype = {
|
|||||||
this._connectionStatusId = 0;
|
this._connectionStatusId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageTray.Notification.prototype.destroy.call(this);
|
this.parent();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -202,11 +202,9 @@ function registerSpecialPropertySplitter(name, splitFunction, parameters) {
|
|||||||
// time updates; even better is to pay attention to the vertical
|
// time updates; even better is to pay attention to the vertical
|
||||||
// vblank and sync to that when possible.)
|
// vblank and sync to that when possible.)
|
||||||
//
|
//
|
||||||
function ClutterFrameTicker() {
|
const ClutterFrameTicker = new Lang.Class({
|
||||||
this._init();
|
Name: 'ClutterFrameTicker',
|
||||||
}
|
|
||||||
|
|
||||||
ClutterFrameTicker.prototype = {
|
|
||||||
FRAME_RATE : 60,
|
FRAME_RATE : 60,
|
||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
@ -261,6 +259,6 @@ ClutterFrameTicker.prototype = {
|
|||||||
this._startTime = -1;
|
this._startTime = -1;
|
||||||
global.end_work();
|
global.end_work();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(ClutterFrameTicker.prototype);
|
Signals.addSignalMethods(ClutterFrameTicker.prototype);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const AccountsService = imports.gi.AccountsService;
|
const AccountsService = imports.gi.AccountsService;
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -41,15 +40,12 @@ const IMStatus = {
|
|||||||
// Copyright (C) 2008,2009 Red Hat, Inc.
|
// Copyright (C) 2008,2009 Red Hat, Inc.
|
||||||
|
|
||||||
|
|
||||||
function IMStatusItem(label, iconName) {
|
const IMStatusItem = new Lang.Class({
|
||||||
this._init(label, iconName);
|
Name: 'IMStatusItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
IMStatusItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function(label, iconName) {
|
_init: function(label, iconName) {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
|
this.parent();
|
||||||
|
|
||||||
this.actor.add_style_class_name('status-chooser-status-item');
|
this.actor.add_style_class_name('status-chooser-status-item');
|
||||||
|
|
||||||
@ -62,19 +58,15 @@ IMStatusItem.prototype = {
|
|||||||
this.label = new St.Label({ text: label });
|
this.label = new St.Label({ text: label });
|
||||||
this.addActor(this.label);
|
this.addActor(this.label);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function IMUserNameItem() {
|
const IMUserNameItem = new Lang.Class({
|
||||||
this._init();
|
Name: 'IMUserNameItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
IMUserNameItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this,
|
this.parent({ reactive: false,
|
||||||
{ reactive: false,
|
style_class: 'status-chooser-user-name' });
|
||||||
style_class: 'status-chooser-user-name' });
|
|
||||||
|
|
||||||
this._wrapper = new Shell.GenericContainer();
|
this._wrapper = new Shell.GenericContainer();
|
||||||
this._wrapper.connect('get-preferred-width',
|
this._wrapper.connect('get-preferred-width',
|
||||||
@ -103,19 +95,15 @@ IMUserNameItem.prototype = {
|
|||||||
_wrapperAllocate: function(actor, box, flags) {
|
_wrapperAllocate: function(actor, box, flags) {
|
||||||
this.label.allocate(box, flags);
|
this.label.allocate(box, flags);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function IMStatusChooserItem() {
|
const IMStatusChooserItem = new Lang.Class({
|
||||||
this._init();
|
Name: 'IMStatusChooserItem',
|
||||||
}
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
|
|
||||||
IMStatusChooserItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call (this,
|
this.parent({ reactive: false,
|
||||||
{ reactive: false,
|
style_class: 'status-chooser' });
|
||||||
style_class: 'status-chooser' });
|
|
||||||
|
|
||||||
this._iconBin = new St.Button({ style_class: 'status-chooser-user-icon' });
|
this._iconBin = new St.Button({ style_class: 'status-chooser-user-icon' });
|
||||||
this.addActor(this._iconBin);
|
this.addActor(this._iconBin);
|
||||||
@ -158,21 +146,31 @@ IMStatusChooserItem.prototype = {
|
|||||||
Lang.bind(this, this._changeIMStatus));
|
Lang.bind(this, this._changeIMStatus));
|
||||||
|
|
||||||
this._presence = new GnomeSession.Presence();
|
this._presence = new GnomeSession.Presence();
|
||||||
this._presence.connect('StatusChanged',
|
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
||||||
Lang.bind(this, this._sessionStatusChanged));
|
this._sessionStatusChanged(status);
|
||||||
|
}));
|
||||||
|
|
||||||
this._sessionPresenceRestored = false;
|
this._sessionPresenceRestored = false;
|
||||||
this._imPresenceRestored = false;
|
this._imPresenceRestored = false;
|
||||||
this._currentPresence = undefined;
|
this._currentPresence = undefined;
|
||||||
|
|
||||||
this._accountMgr = Tp.AccountManager.dup()
|
this._accountMgr = Tp.AccountManager.dup();
|
||||||
this._accountMgr.connect('most-available-presence-changed',
|
this._accountMgr.connect('most-available-presence-changed',
|
||||||
Lang.bind(this, this._IMStatusChanged));
|
Lang.bind(this, this._IMStatusChanged));
|
||||||
|
this._accountMgr.connect('account-enabled',
|
||||||
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
|
this._accountMgr.connect('account-disabled',
|
||||||
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
|
this._accountMgr.connect('account-removed',
|
||||||
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
this._accountMgr.prepare_async(null, Lang.bind(this,
|
this._accountMgr.prepare_async(null, Lang.bind(this,
|
||||||
function(mgr) {
|
function(mgr) {
|
||||||
let [presence, status, msg] = mgr.get_most_available_presence();
|
let [presence, status, msg] = mgr.get_most_available_presence();
|
||||||
|
|
||||||
let savedPresence = global.settings.get_int('saved-im-presence');
|
let savedPresence = global.settings.get_int('saved-im-presence');
|
||||||
|
|
||||||
|
this._IMAccountsChanged(mgr);
|
||||||
|
|
||||||
if (savedPresence == presence) {
|
if (savedPresence == presence) {
|
||||||
this._IMStatusChanged(mgr, presence, status, msg);
|
this._IMStatusChanged(mgr, presence, status, msg);
|
||||||
} else {
|
} else {
|
||||||
@ -199,6 +197,21 @@ IMStatusChooserItem.prototype = {
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
// clean up signal handlers
|
||||||
|
if (this._userLoadedId != 0) {
|
||||||
|
this._user.disconnect(this._userLoadedId);
|
||||||
|
this._userLoadedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._userChangedId != 0) {
|
||||||
|
this._user.disconnect(this._userChangedId);
|
||||||
|
this._userChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
// Override getColumnWidths()/setColumnWidths() to make the item
|
// Override getColumnWidths()/setColumnWidths() to make the item
|
||||||
// independent from the overall column layout of the menu
|
// independent from the overall column layout of the menu
|
||||||
getColumnWidths: function() {
|
getColumnWidths: function() {
|
||||||
@ -267,6 +280,13 @@ IMStatusChooserItem.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_IMAccountsChanged: function(mgr) {
|
||||||
|
let accounts = mgr.get_valid_accounts().filter(function(account) {
|
||||||
|
return account.enabled;
|
||||||
|
});
|
||||||
|
this._combo.setSensitive(accounts.length > 0);
|
||||||
|
},
|
||||||
|
|
||||||
_IMStatusChanged: function(accountMgr, presence, status, message) {
|
_IMStatusChanged: function(accountMgr, presence, status, message) {
|
||||||
if (!this._imPresenceRestored)
|
if (!this._imPresenceRestored)
|
||||||
this._imPresenceRestored = true;
|
this._imPresenceRestored = true;
|
||||||
@ -278,12 +298,12 @@ IMStatusChooserItem.prototype = {
|
|||||||
this._setComboboxPresence(presence);
|
this._setComboboxPresence(presence);
|
||||||
|
|
||||||
if (!this._sessionPresenceRestored) {
|
if (!this._sessionPresenceRestored) {
|
||||||
this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged));
|
this._sessionStatusChanged(this._presence.status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (presence == Tp.ConnectionPresenceType.AVAILABLE)
|
if (presence == Tp.ConnectionPresenceType.AVAILABLE)
|
||||||
this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE);
|
this._presence.status = GnomeSession.PresenceStatus.AVAILABLE;
|
||||||
|
|
||||||
// We ignore the actual value of _expectedPresence and never safe
|
// We ignore the actual value of _expectedPresence and never safe
|
||||||
// the first presence change after an "automatic" change, assuming
|
// the first presence change after an "automatic" change, assuming
|
||||||
@ -362,14 +382,14 @@ IMStatusChooserItem.prototype = {
|
|||||||
return this._currentPresence;
|
return this._currentPresence;
|
||||||
},
|
},
|
||||||
|
|
||||||
_sessionStatusChanged: function(sessionPresence, sessionStatus) {
|
_sessionStatusChanged: function(sessionStatus) {
|
||||||
if (!this._imPresenceRestored)
|
if (!this._imPresenceRestored)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this._sessionPresenceRestored) {
|
if (!this._sessionPresenceRestored) {
|
||||||
let savedStatus = global.settings.get_int('saved-session-presence');
|
let savedStatus = global.settings.get_int('saved-session-presence');
|
||||||
if (sessionStatus != savedStatus) {
|
if (sessionStatus != savedStatus) {
|
||||||
this._presence.setStatus(savedStatus);
|
this._presence.status = savedStatus;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._sessionPresenceRestored = true;
|
this._sessionPresenceRestored = true;
|
||||||
@ -391,18 +411,16 @@ IMStatusChooserItem.prototype = {
|
|||||||
this._expectedPresence = newPresence;
|
this._expectedPresence = newPresence;
|
||||||
this._accountMgr.set_all_requested_presences(newPresence, status, msg);
|
this._accountMgr.set_all_requested_presences(newPresence, status, msg);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function UserMenuButton() {
|
const UserMenuButton = new Lang.Class({
|
||||||
this._init();
|
Name: 'UserMenuButton',
|
||||||
}
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
UserMenuButton.prototype = {
|
|
||||||
__proto__: PanelMenu.Button.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
PanelMenu.Button.prototype._init.call(this, 0.0);
|
this.parent(0.0);
|
||||||
|
|
||||||
let box = new St.BoxLayout({ name: 'panelUserMenu' });
|
let box = new St.BoxLayout({ name: 'panelUserMenu' });
|
||||||
this.actor.add_actor(box);
|
this.actor.add_actor(box);
|
||||||
|
|
||||||
@ -415,7 +433,7 @@ UserMenuButton.prototype = {
|
|||||||
this._session = new GnomeSession.SessionManager();
|
this._session = new GnomeSession.SessionManager();
|
||||||
this._haveShutdown = true;
|
this._haveShutdown = true;
|
||||||
|
|
||||||
this._account_mgr = Tp.AccountManager.dup()
|
this._accountMgr = Tp.AccountManager.dup();
|
||||||
|
|
||||||
this._upClient = new UPowerGlib.Client();
|
this._upClient = new UPowerGlib.Client();
|
||||||
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
|
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
|
||||||
@ -438,13 +456,9 @@ UserMenuButton.prototype = {
|
|||||||
this._idleIcon = new St.Icon({ icon_name: 'user-idle',
|
this._idleIcon = new St.Icon({ icon_name: 'user-idle',
|
||||||
style_class: 'popup-menu-icon' });
|
style_class: 'popup-menu-icon' });
|
||||||
|
|
||||||
this._presence.connect('StatusChanged',
|
this._accountMgr.connect('most-available-presence-changed',
|
||||||
Lang.bind(this, this._updateSwitch));
|
|
||||||
this._presence.getStatus(Lang.bind(this, this._updateSwitch));
|
|
||||||
|
|
||||||
this._account_mgr.connect('most-available-presence-changed',
|
|
||||||
Lang.bind(this, this._updatePresenceIcon));
|
Lang.bind(this, this._updatePresenceIcon));
|
||||||
this._account_mgr.prepare_async(null, Lang.bind(this,
|
this._accountMgr.prepare_async(null, Lang.bind(this,
|
||||||
function(mgr) {
|
function(mgr) {
|
||||||
let [presence, s, msg] = mgr.get_most_available_presence();
|
let [presence, s, msg] = mgr.get_most_available_presence();
|
||||||
this._updatePresenceIcon(mgr, presence, s, msg);
|
this._updatePresenceIcon(mgr, presence, s, msg);
|
||||||
@ -457,8 +471,16 @@ UserMenuButton.prototype = {
|
|||||||
this._updateUserName();
|
this._updateUserName();
|
||||||
|
|
||||||
this._createSubMenu();
|
this._createSubMenu();
|
||||||
|
|
||||||
|
this._updateSwitch(this._presence.status);
|
||||||
|
this._presence.connectSignal('StatusChanged', Lang.bind(this, function (proxy, senderName, [status]) {
|
||||||
|
this._updateSwitch(status);
|
||||||
|
}));
|
||||||
|
|
||||||
this._userManager.connect('notify::is-loaded',
|
this._userManager.connect('notify::is-loaded',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateSwitchUser));
|
||||||
|
this._userManager.connect('notify::has-multiple-users',
|
||||||
|
Lang.bind(this, this._updateSwitchUser));
|
||||||
this._userManager.connect('user-added',
|
this._userManager.connect('user-added',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateSwitchUser));
|
||||||
this._userManager.connect('user-removed',
|
this._userManager.connect('user-removed',
|
||||||
@ -503,7 +525,9 @@ UserMenuButton.prototype = {
|
|||||||
|
|
||||||
_updateSwitchUser: function() {
|
_updateSwitchUser: function() {
|
||||||
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||||
if (allowSwitch && this._userManager.can_switch ())
|
if (allowSwitch &&
|
||||||
|
this._userManager.can_switch() &&
|
||||||
|
this._userManager.has_multiple_users)
|
||||||
this._loginScreenItem.actor.show();
|
this._loginScreenItem.actor.show();
|
||||||
else
|
else
|
||||||
this._loginScreenItem.actor.hide();
|
this._loginScreenItem.actor.hide();
|
||||||
@ -557,7 +581,7 @@ UserMenuButton.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateSwitch: function(presence, status) {
|
_updateSwitch: function(status) {
|
||||||
let active = status == GnomeSession.PresenceStatus.AVAILABLE;
|
let active = status == GnomeSession.PresenceStatus.AVAILABLE;
|
||||||
this._notificationsSwitch.setToggleState(active);
|
this._notificationsSwitch.setToggleState(active);
|
||||||
},
|
},
|
||||||
@ -638,7 +662,7 @@ UserMenuButton.prototype = {
|
|||||||
} else {
|
} else {
|
||||||
status = GnomeSession.PresenceStatus.BUSY;
|
status = GnomeSession.PresenceStatus.BUSY;
|
||||||
|
|
||||||
let [presence, s, msg] = this._account_mgr.get_most_available_presence();
|
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
|
||||||
let newPresence = this._statusChooser.getIMPresenceForSessionStatus(status);
|
let newPresence = this._statusChooser.getIMPresenceForSessionStatus(status);
|
||||||
if (newPresence != presence &&
|
if (newPresence != presence &&
|
||||||
newPresence == Tp.ConnectionPresenceType.BUSY)
|
newPresence == Tp.ConnectionPresenceType.BUSY)
|
||||||
@ -646,7 +670,7 @@ UserMenuButton.prototype = {
|
|||||||
_("Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."));
|
_("Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."));
|
||||||
}
|
}
|
||||||
|
|
||||||
this._presence.setStatus(status);
|
this._presence.status = status;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onMyAccountActivate: function() {
|
_onMyAccountActivate: function() {
|
||||||
@ -699,4 +723,4 @@ UserMenuButton.prototype = {
|
|||||||
this._session.ShutdownRemote();
|
this._session.ShutdownRemote();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -15,11 +15,9 @@ const SearchDisplay = imports.ui.searchDisplay;
|
|||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
function BaseTab(titleActor, pageActor, name, a11yIcon) {
|
const BaseTab = new Lang.Class({
|
||||||
this._init(titleActor, pageActor, name, a11yIcon);
|
Name: 'BaseTab',
|
||||||
}
|
|
||||||
|
|
||||||
BaseTab.prototype = {
|
|
||||||
_init: function(titleActor, pageActor, name, a11yIcon) {
|
_init: function(titleActor, pageActor, name, a11yIcon) {
|
||||||
this.title = titleActor;
|
this.title = titleActor;
|
||||||
this.page = new St.Bin({ child: pageActor,
|
this.page = new St.Bin({ child: pageActor,
|
||||||
@ -75,16 +73,13 @@ BaseTab.prototype = {
|
|||||||
_activate: function() {
|
_activate: function() {
|
||||||
this.emit('activated');
|
this.emit('activated');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(BaseTab.prototype);
|
Signals.addSignalMethods(BaseTab.prototype);
|
||||||
|
|
||||||
|
|
||||||
function ViewTab(id, label, pageActor, a11yIcon) {
|
const ViewTab = new Lang.Class({
|
||||||
this._init(id, label, pageActor, a11yIcon);
|
Name: 'ViewTab',
|
||||||
}
|
Extends: BaseTab,
|
||||||
|
|
||||||
ViewTab.prototype = {
|
|
||||||
__proto__: BaseTab.prototype,
|
|
||||||
|
|
||||||
_init: function(id, label, pageActor, a11yIcon) {
|
_init: function(id, label, pageActor, a11yIcon) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -93,17 +88,14 @@ ViewTab.prototype = {
|
|||||||
style_class: 'view-tab-title' });
|
style_class: 'view-tab-title' });
|
||||||
titleActor.connect('clicked', Lang.bind(this, this._activate));
|
titleActor.connect('clicked', Lang.bind(this, this._activate));
|
||||||
|
|
||||||
BaseTab.prototype._init.call(this, titleActor, pageActor, label, a11yIcon);
|
this.parent(titleActor, pageActor, label, a11yIcon);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function SearchTab() {
|
const SearchTab = new Lang.Class({
|
||||||
this._init();
|
Name: 'SearchTab',
|
||||||
}
|
Extends: BaseTab,
|
||||||
|
|
||||||
SearchTab.prototype = {
|
|
||||||
__proto__: BaseTab.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.active = false;
|
this.active = false;
|
||||||
@ -136,11 +128,7 @@ SearchTab.prototype = {
|
|||||||
this._iconClickedId = 0;
|
this._iconClickedId = 0;
|
||||||
|
|
||||||
this._searchResults = new SearchDisplay.SearchResults(this._searchSystem, this._openSearchSystem);
|
this._searchResults = new SearchDisplay.SearchResults(this._searchSystem, this._openSearchSystem);
|
||||||
BaseTab.prototype._init.call(this,
|
this.parent(this._entry, this._searchResults.actor, _("Search"), 'edit-find');
|
||||||
this._entry,
|
|
||||||
this._searchResults.actor,
|
|
||||||
_("Search"),
|
|
||||||
'edit-find');
|
|
||||||
|
|
||||||
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
|
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
|
||||||
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
|
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
|
||||||
@ -166,7 +154,7 @@ SearchTab.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
BaseTab.prototype.hide.call(this);
|
this.parent();
|
||||||
|
|
||||||
// Leave the entry focused when it doesn't have any text;
|
// Leave the entry focused when it doesn't have any text;
|
||||||
// when replacing a selected search term, Clutter emits
|
// when replacing a selected search term, Clutter emits
|
||||||
@ -310,14 +298,12 @@ SearchTab.prototype = {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function ViewSelector() {
|
const ViewSelector = new Lang.Class({
|
||||||
this._init();
|
Name: 'ViewSelector',
|
||||||
}
|
|
||||||
|
|
||||||
ViewSelector.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new St.BoxLayout({ name: 'viewSelector',
|
this.actor = new St.BoxLayout({ name: 'viewSelector',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
@ -577,5 +563,5 @@ ViewSelector.prototype = {
|
|||||||
removeSearchProvider: function(provider) {
|
removeSearchProvider: function(provider) {
|
||||||
this._searchTab.removeSearchProvider(provider);
|
this._searchTab.removeSearchProvider(provider);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ViewSelector.prototype);
|
Signals.addSignalMethods(ViewSelector.prototype);
|
||||||
|
@ -6,11 +6,9 @@ const Shell = imports.gi.Shell;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
|
|
||||||
function WindowAttentionHandler() {
|
const WindowAttentionHandler = new Lang.Class({
|
||||||
this._init();
|
Name: 'WindowAttentionHandler',
|
||||||
}
|
|
||||||
|
|
||||||
WindowAttentionHandler.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._tracker = Shell.WindowTracker.get_default();
|
this._tracker = Shell.WindowTracker.get_default();
|
||||||
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
||||||
@ -43,17 +41,14 @@ WindowAttentionHandler.prototype = {
|
|||||||
notification.update(title, banner);
|
notification.update(title, banner);
|
||||||
})));
|
})));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function Source(app, window) {
|
const Source = new Lang.Class({
|
||||||
this._init(app, window);
|
Name: 'WindowAttentionSource',
|
||||||
}
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
Source.prototype = {
|
|
||||||
__proto__ : MessageTray.Source.prototype,
|
|
||||||
|
|
||||||
_init: function(app, window) {
|
_init: function(app, window) {
|
||||||
MessageTray.Source.prototype._init.call(this, app.get_name());
|
this.parent(app.get_name());
|
||||||
this._window = window;
|
this._window = window;
|
||||||
this._app = app;
|
this._app = app;
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
@ -81,4 +76,4 @@ Source.prototype = {
|
|||||||
Main.activateWindow(this._window);
|
Main.activateWindow(this._window);
|
||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -31,11 +31,9 @@ function getTopInvisibleBorder(metaWindow) {
|
|||||||
return outerRect.y - inputRect.y;
|
return outerRect.y - inputRect.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
function WindowDimmer(actor) {
|
const WindowDimmer = new Lang.Class({
|
||||||
this._init(actor);
|
Name: 'WindowDimmer',
|
||||||
}
|
|
||||||
|
|
||||||
WindowDimmer.prototype = {
|
|
||||||
_init: function(actor) {
|
_init: function(actor) {
|
||||||
if (Clutter.feature_available(Clutter.FeatureFlags.SHADERS_GLSL)) {
|
if (Clutter.feature_available(Clutter.FeatureFlags.SHADERS_GLSL)) {
|
||||||
this._effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER });
|
this._effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER });
|
||||||
@ -75,7 +73,7 @@ WindowDimmer.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_dimFraction: 0.0
|
_dimFraction: 0.0
|
||||||
};
|
});
|
||||||
|
|
||||||
function getWindowDimmer(actor) {
|
function getWindowDimmer(actor) {
|
||||||
if (!actor._windowDimmer)
|
if (!actor._windowDimmer)
|
||||||
@ -84,15 +82,12 @@ function getWindowDimmer(actor) {
|
|||||||
return actor._windowDimmer;
|
return actor._windowDimmer;
|
||||||
}
|
}
|
||||||
|
|
||||||
function WindowManager() {
|
const WindowManager = new Lang.Class({
|
||||||
this._init();
|
Name: 'WindowManager',
|
||||||
}
|
|
||||||
|
|
||||||
WindowManager.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._shellwm = global.window_manager;
|
this._shellwm = global.window_manager;
|
||||||
|
|
||||||
this._keyBindingHandlers = [];
|
|
||||||
this._minimizing = [];
|
this._minimizing = [];
|
||||||
this._maximizing = [];
|
this._maximizing = [];
|
||||||
this._unmaximizing = [];
|
this._unmaximizing = [];
|
||||||
@ -121,15 +116,24 @@ WindowManager.prototype = {
|
|||||||
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
||||||
|
|
||||||
this._workspaceSwitcherPopup = null;
|
this._workspaceSwitcherPopup = null;
|
||||||
this.setKeybindingHandler('switch_to_workspace_left', Lang.bind(this, this._showWorkspaceSwitcher));
|
Meta.keybindings_set_custom_handler('switch-to-workspace-left',
|
||||||
this.setKeybindingHandler('switch_to_workspace_right', Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setKeybindingHandler('switch_to_workspace_up', Lang.bind(this, this._showWorkspaceSwitcher));
|
Meta.keybindings_set_custom_handler('switch-to-workspace-right',
|
||||||
this.setKeybindingHandler('switch_to_workspace_down', Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setKeybindingHandler('switch_windows', Lang.bind(this, this._startAppSwitcher));
|
Meta.keybindings_set_custom_handler('switch-to-workspace-up',
|
||||||
this.setKeybindingHandler('switch_group', Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setKeybindingHandler('switch_windows_backward', Lang.bind(this, this._startAppSwitcher));
|
Meta.keybindings_set_custom_handler('switch-to-workspace-down',
|
||||||
this.setKeybindingHandler('switch_group_backward', Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setKeybindingHandler('switch_panels', Lang.bind(this, this._startA11ySwitcher));
|
Meta.keybindings_set_custom_handler('switch-windows',
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
Meta.keybindings_set_custom_handler('switch-group',
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
Meta.keybindings_set_custom_handler('switch-windows-backward',
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
Meta.keybindings_set_custom_handler('switch-group-backward',
|
||||||
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
|
Meta.keybindings_set_custom_handler('switch-panels',
|
||||||
|
Lang.bind(this, this._startA11ySwitcher));
|
||||||
|
|
||||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
for (let i = 0; i < this._dimmedWindows.length; i++)
|
for (let i = 0; i < this._dimmedWindows.length; i++)
|
||||||
@ -141,16 +145,6 @@ WindowManager.prototype = {
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
setKeybindingHandler: function(keybinding, handler){
|
|
||||||
if (this._keyBindingHandlers[keybinding])
|
|
||||||
this._shellwm.disconnect(this._keyBindingHandlers[keybinding]);
|
|
||||||
else
|
|
||||||
this._shellwm.takeover_keybinding(keybinding);
|
|
||||||
|
|
||||||
this._keyBindingHandlers[keybinding] =
|
|
||||||
this._shellwm.connect('keybinding::' + keybinding, handler);
|
|
||||||
},
|
|
||||||
|
|
||||||
blockAnimations: function() {
|
blockAnimations: function() {
|
||||||
this._animationBlockCount++;
|
this._animationBlockCount++;
|
||||||
},
|
},
|
||||||
@ -160,7 +154,7 @@ WindowManager.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_shouldAnimate : function(actor) {
|
_shouldAnimate : function(actor) {
|
||||||
if (Main.overview.visible || this._animationsBlocked > 0)
|
if (Main.overview.visible || this._animationBlockCount > 0)
|
||||||
return false;
|
return false;
|
||||||
if (actor && (actor.meta_window.get_window_type() != Meta.WindowType.NORMAL))
|
if (actor && (actor.meta_window.get_window_type() != Meta.WindowType.NORMAL))
|
||||||
return false;
|
return false;
|
||||||
@ -534,37 +528,41 @@ WindowManager.prototype = {
|
|||||||
shellwm.completed_switch_workspace();
|
shellwm.completed_switch_workspace();
|
||||||
},
|
},
|
||||||
|
|
||||||
_startAppSwitcher : function(shellwm, binding, mask, window, backwards) {
|
_startAppSwitcher : function(display, screen, window, binding) {
|
||||||
/* prevent a corner case where both popups show up at once */
|
/* prevent a corner case where both popups show up at once */
|
||||||
if (this._workspaceSwitcherPopup != null)
|
if (this._workspaceSwitcherPopup != null)
|
||||||
this._workspaceSwitcherPopup.actor.hide();
|
this._workspaceSwitcherPopup.actor.hide();
|
||||||
|
|
||||||
let tabPopup = new AltTab.AltTabPopup();
|
let tabPopup = new AltTab.AltTabPopup();
|
||||||
|
|
||||||
if (!tabPopup.show(backwards, binding, mask))
|
let modifiers = binding.get_modifiers();
|
||||||
|
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
||||||
|
if (!tabPopup.show(backwards, binding.get_name(), binding.get_mask()))
|
||||||
tabPopup.destroy();
|
tabPopup.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_startA11ySwitcher : function(shellwm, binding, mask, window, backwards) {
|
_startA11ySwitcher : function(display, screen, window, binding) {
|
||||||
Main.ctrlAltTabManager.popup(backwards, mask);
|
let modifiers = binding.get_modifiers();
|
||||||
|
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
||||||
|
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
|
||||||
},
|
},
|
||||||
|
|
||||||
_showWorkspaceSwitcher : function(shellwm, binding, mask, window, backwards) {
|
_showWorkspaceSwitcher : function(display, screen, window, binding) {
|
||||||
if (global.screen.n_workspaces == 1)
|
if (screen.n_workspaces == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._workspaceSwitcherPopup == null)
|
if (this._workspaceSwitcherPopup == null)
|
||||||
this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
|
this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
|
||||||
|
|
||||||
if (binding == 'switch_to_workspace_up')
|
if (binding.get_name() == 'switch-to-workspace-up')
|
||||||
this.actionMoveWorkspaceUp();
|
this.actionMoveWorkspaceUp();
|
||||||
else if (binding == 'switch_to_workspace_down')
|
else if (binding.get_name() == 'switch-to-workspace-down')
|
||||||
this.actionMoveWorkspaceDown();
|
this.actionMoveWorkspaceDown();
|
||||||
// left/right would effectively act as synonyms for up/down if we enabled them;
|
// left/right would effectively act as synonyms for up/down if we enabled them;
|
||||||
// but that could be considered confusing.
|
// but that could be considered confusing.
|
||||||
// else if (binding == 'switch_to_workspace_left')
|
// else if (binding.get_name() == 'switch-to-workspace-left')
|
||||||
// this.actionMoveWorkspaceLeft();
|
// this.actionMoveWorkspaceLeft();
|
||||||
// else if (binding == 'switch_to_workspace_right')
|
// else if (binding.get_name() == 'switch-to-workspace-right')
|
||||||
// this.actionMoveWorkspaceRight();
|
// this.actionMoveWorkspaceRight();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -625,4 +623,4 @@ WindowManager.prototype = {
|
|||||||
if (!Main.overview.visible)
|
if (!Main.overview.visible)
|
||||||
this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.DOWN, indexToActivate);
|
this._workspaceSwitcherPopup.display(WorkspaceSwitcherPopup.DOWN, indexToActivate);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const GConf = imports.gi.GConf;
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -28,7 +28,8 @@ const CLOSE_BUTTON_FADE_TIME = 0.1;
|
|||||||
|
|
||||||
const DRAGGING_WINDOW_OPACITY = 100;
|
const DRAGGING_WINDOW_OPACITY = 100;
|
||||||
|
|
||||||
const BUTTON_LAYOUT_KEY = '/desktop/gnome/shell/windows/button_layout';
|
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
||||||
|
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||||
|
|
||||||
// Define a layout scheme for small window counts. For larger
|
// Define a layout scheme for small window counts. For larger
|
||||||
// counts we fall back to an algorithm. We need more schemes here
|
// counts we fall back to an algorithm. We need more schemes here
|
||||||
@ -55,11 +56,13 @@ function _clamp(value, min, max) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function ScaledPoint(x, y, scaleX, scaleY) {
|
const ScaledPoint = new Lang.Class({
|
||||||
[this.x, this.y, this.scaleX, this.scaleY] = arguments;
|
Name: 'ScaledPoint',
|
||||||
}
|
|
||||||
|
_init: function(x, y, scaleX, scaleY) {
|
||||||
|
[this.x, this.y, this.scaleX, this.scaleY] = arguments;
|
||||||
|
},
|
||||||
|
|
||||||
ScaledPoint.prototype = {
|
|
||||||
getPosition : function() {
|
getPosition : function() {
|
||||||
return [this.x, this.y];
|
return [this.x, this.y];
|
||||||
},
|
},
|
||||||
@ -85,14 +88,12 @@ ScaledPoint.prototype = {
|
|||||||
return [_interpolate(this.scaleX, other.scaleX, step),
|
return [_interpolate(this.scaleX, other.scaleX, step),
|
||||||
_interpolate(this.scaleY, other.scaleY, step)];
|
_interpolate(this.scaleY, other.scaleY, step)];
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
|
||||||
function WindowClone(realWindow) {
|
const WindowClone = new Lang.Class({
|
||||||
this._init(realWindow);
|
Name: 'WindowClone',
|
||||||
}
|
|
||||||
|
|
||||||
WindowClone.prototype = {
|
|
||||||
_init : function(realWindow) {
|
_init : function(realWindow) {
|
||||||
this.realWindow = realWindow;
|
this.realWindow = realWindow;
|
||||||
this.metaWindow = realWindow.meta_window;
|
this.metaWindow = realWindow.meta_window;
|
||||||
@ -417,7 +418,7 @@ WindowClone.prototype = {
|
|||||||
|
|
||||||
this.emit('drag-end');
|
this.emit('drag-end');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WindowClone.prototype);
|
Signals.addSignalMethods(WindowClone.prototype);
|
||||||
|
|
||||||
|
|
||||||
@ -426,11 +427,9 @@ Signals.addSignalMethods(WindowClone.prototype);
|
|||||||
* @parentActor: The actor which will be the parent of all overlay items
|
* @parentActor: The actor which will be the parent of all overlay items
|
||||||
* such as app icon and window caption
|
* such as app icon and window caption
|
||||||
*/
|
*/
|
||||||
function WindowOverlay(windowClone, parentActor) {
|
const WindowOverlay = new Lang.Class({
|
||||||
this._init(windowClone, parentActor);
|
Name: 'WindowOverlay',
|
||||||
}
|
|
||||||
|
|
||||||
WindowOverlay.prototype = {
|
|
||||||
_init : function(windowClone, parentActor) {
|
_init : function(windowClone, parentActor) {
|
||||||
let metaWindow = windowClone.metaWindow;
|
let metaWindow = windowClone.metaWindow;
|
||||||
|
|
||||||
@ -527,8 +526,8 @@ WindowOverlay.prototype = {
|
|||||||
let button = this.closeButton;
|
let button = this.closeButton;
|
||||||
let title = this.title;
|
let title = this.title;
|
||||||
|
|
||||||
let gconf = GConf.Client.get_default();
|
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
||||||
let layout = gconf.get_string(BUTTON_LAYOUT_KEY);
|
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
||||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
||||||
|
|
||||||
let split = layout.split(":");
|
let split = layout.split(":");
|
||||||
@ -641,7 +640,7 @@ WindowOverlay.prototype = {
|
|||||||
|
|
||||||
this._parentActor.queue_relayout();
|
this._parentActor.queue_relayout();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WindowOverlay.prototype);
|
Signals.addSignalMethods(WindowOverlay.prototype);
|
||||||
|
|
||||||
const WindowPositionFlags = {
|
const WindowPositionFlags = {
|
||||||
@ -652,11 +651,9 @@ const WindowPositionFlags = {
|
|||||||
/**
|
/**
|
||||||
* @metaWorkspace: a #Meta.Workspace, or null
|
* @metaWorkspace: a #Meta.Workspace, or null
|
||||||
*/
|
*/
|
||||||
function Workspace(metaWorkspace, monitorIndex) {
|
const Workspace = new Lang.Class({
|
||||||
this._init(metaWorkspace, monitorIndex);
|
Name: 'Workspace',
|
||||||
}
|
|
||||||
|
|
||||||
Workspace.prototype = {
|
|
||||||
_init : function(metaWorkspace, monitorIndex) {
|
_init : function(metaWorkspace, monitorIndex) {
|
||||||
// When dragging a window, we use this slot for reserve space.
|
// When dragging a window, we use this slot for reserve space.
|
||||||
this._reservedSlot = null;
|
this._reservedSlot = null;
|
||||||
@ -1517,6 +1514,6 @@ Workspace.prototype = {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(Workspace.prototype);
|
Signals.addSignalMethods(Workspace.prototype);
|
||||||
|
@ -15,11 +15,9 @@ const DISPLAY_TIMEOUT = 600;
|
|||||||
const UP = -1;
|
const UP = -1;
|
||||||
const DOWN = 1;
|
const DOWN = 1;
|
||||||
|
|
||||||
function WorkspaceSwitcherPopup() {
|
const WorkspaceSwitcherPopup = new Lang.Class({
|
||||||
this._init();
|
Name: 'WorkspaceSwitcherPopup',
|
||||||
}
|
|
||||||
|
|
||||||
WorkspaceSwitcherPopup.prototype = {
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this.actor = new St.Group({ reactive: true,
|
this.actor = new St.Group({ reactive: true,
|
||||||
x: 0,
|
x: 0,
|
||||||
@ -158,4 +156,4 @@ WorkspaceSwitcherPopup.prototype = {
|
|||||||
onCompleteScope: this
|
onCompleteScope: this
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -20,11 +20,14 @@ let MAX_THUMBNAIL_SCALE = 1/8.;
|
|||||||
const RESCALE_ANIMATION_TIME = 0.2;
|
const RESCALE_ANIMATION_TIME = 0.2;
|
||||||
const SLIDE_ANIMATION_TIME = 0.2;
|
const SLIDE_ANIMATION_TIME = 0.2;
|
||||||
|
|
||||||
function WindowClone(realWindow) {
|
// When we create workspaces by dragging, we add a "cut" into the top and
|
||||||
this._init(realWindow);
|
// bottom of each workspace so that the user doesn't have to hit the
|
||||||
}
|
// placeholder exactly.
|
||||||
|
const WORKSPACE_CUT_SIZE = 10;
|
||||||
|
|
||||||
|
const WindowClone = new Lang.Class({
|
||||||
|
Name: 'WindowClone',
|
||||||
|
|
||||||
WindowClone.prototype = {
|
|
||||||
_init : function(realWindow) {
|
_init : function(realWindow) {
|
||||||
this.actor = new Clutter.Clone({ source: realWindow.get_texture(),
|
this.actor = new Clutter.Clone({ source: realWindow.get_texture(),
|
||||||
reactive: true });
|
reactive: true });
|
||||||
@ -121,7 +124,7 @@ WindowClone.prototype = {
|
|||||||
|
|
||||||
this.emit('drag-end');
|
this.emit('drag-end');
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WindowClone.prototype);
|
Signals.addSignalMethods(WindowClone.prototype);
|
||||||
|
|
||||||
|
|
||||||
@ -139,11 +142,9 @@ const ThumbnailState = {
|
|||||||
/**
|
/**
|
||||||
* @metaWorkspace: a #Meta.Workspace
|
* @metaWorkspace: a #Meta.Workspace
|
||||||
*/
|
*/
|
||||||
function WorkspaceThumbnail(metaWorkspace) {
|
const WorkspaceThumbnail = new Lang.Class({
|
||||||
this._init(metaWorkspace);
|
Name: 'WorkspaceThumbnail',
|
||||||
}
|
|
||||||
|
|
||||||
WorkspaceThumbnail.prototype = {
|
|
||||||
_init : function(metaWorkspace) {
|
_init : function(metaWorkspace) {
|
||||||
this.metaWorkspace = metaWorkspace;
|
this.metaWorkspace = metaWorkspace;
|
||||||
this.monitorIndex = Main.layoutManager.primaryIndex;
|
this.monitorIndex = Main.layoutManager.primaryIndex;
|
||||||
@ -422,6 +423,11 @@ WorkspaceThumbnail.prototype = {
|
|||||||
if (this.state > ThumbnailState.NORMAL)
|
if (this.state > ThumbnailState.NORMAL)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
let [w, h] = this.actor.get_transformed_size();
|
||||||
|
// Bubble up if we're in the "workspace cut".
|
||||||
|
if (y < WORKSPACE_CUT_SIZE || y > h - WORKSPACE_CUT_SIZE)
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
||||||
return DND.DragMotionResult.MOVE_DROP;
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
if (source.shellWorkspaceLaunch)
|
if (source.shellWorkspaceLaunch)
|
||||||
@ -459,22 +465,21 @@ WorkspaceThumbnail.prototype = {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(WorkspaceThumbnail.prototype);
|
Signals.addSignalMethods(WorkspaceThumbnail.prototype);
|
||||||
|
|
||||||
|
|
||||||
function ThumbnailsBox() {
|
const ThumbnailsBox = new Lang.Class({
|
||||||
this._init();
|
Name: 'ThumbnailsBox',
|
||||||
}
|
|
||||||
|
|
||||||
ThumbnailsBox.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new Shell.GenericContainer({ style_class: 'workspace-thumbnails',
|
this.actor = new Shell.GenericContainer({ style_class: 'workspace-thumbnails',
|
||||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
|
this.actor._delegate = this;
|
||||||
|
|
||||||
// When we animate the scale, we don't animate the requested size of the thumbnails, rather
|
// When we animate the scale, we don't animate the requested size of the thumbnails, rather
|
||||||
// we ask for our final size and then animate within that size. This slightly simplifies the
|
// we ask for our final size and then animate within that size. This slightly simplifies the
|
||||||
@ -498,6 +503,10 @@ ThumbnailsBox.prototype = {
|
|||||||
this._indicator = indicator;
|
this._indicator = indicator;
|
||||||
this.actor.add_actor(indicator);
|
this.actor.add_actor(indicator);
|
||||||
|
|
||||||
|
this._dropPlaceholderPos = -1;
|
||||||
|
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
|
||||||
|
this.actor.add_actor(this._dropPlaceholder);
|
||||||
|
|
||||||
this._targetScale = 0;
|
this._targetScale = 0;
|
||||||
this._scale = 0;
|
this._scale = 0;
|
||||||
this._pendingScaleUpdate = false;
|
this._pendingScaleUpdate = false;
|
||||||
@ -512,6 +521,83 @@ ThumbnailsBox.prototype = {
|
|||||||
this._thumbnails = [];
|
this._thumbnails = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Draggable target interface
|
||||||
|
handleDragOver : function(source, actor, x, y, time) {
|
||||||
|
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
let spacing = this.actor.get_theme_node().get_length('spacing');
|
||||||
|
let thumbHeight = this._porthole.height * this._scale;
|
||||||
|
|
||||||
|
let workspace = -1;
|
||||||
|
let firstThumbY = this._thumbnails[0].actor.y;
|
||||||
|
for (let i = 0; i < this._thumbnails.length; i ++) {
|
||||||
|
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
|
||||||
|
|
||||||
|
// Allow the reorder target to have a 10px "cut" into
|
||||||
|
// each side of the thumbnail, to make dragging onto the
|
||||||
|
// placeholder easier
|
||||||
|
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
|
||||||
|
let targetBottom = targetBase + WORKSPACE_CUT_SIZE;
|
||||||
|
|
||||||
|
// Expand the target to include the placeholder, if it exists.
|
||||||
|
if (i == this._dropPlaceholderPos)
|
||||||
|
targetBottom += this._dropPlaceholder.get_height();
|
||||||
|
|
||||||
|
if (y > targetTop && y <= targetBottom) {
|
||||||
|
workspace = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this._dropPlaceholderPos = workspace;
|
||||||
|
this.actor.queue_relayout();
|
||||||
|
|
||||||
|
if (workspace == -1)
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
return DND.DragMotionResult.MOVE_DROP;
|
||||||
|
},
|
||||||
|
|
||||||
|
acceptDrop: function(source, actor, x, y, time) {
|
||||||
|
if (this._dropPlaceholderPos == -1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let isWindow = !!source.realWindow;
|
||||||
|
|
||||||
|
// To create a new workspace, we first slide all the windows on workspaces
|
||||||
|
// below us to the next workspace, leaving a blank workspace for us to recycle.
|
||||||
|
let newWorkspaceIndex;
|
||||||
|
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||||
|
|
||||||
|
// Nab all the windows below us.
|
||||||
|
let windows = global.get_window_actors().filter(function(win) {
|
||||||
|
if (isWindow)
|
||||||
|
return win.get_workspace() >= newWorkspaceIndex && win != source;
|
||||||
|
else
|
||||||
|
return win.get_workspace() >= newWorkspaceIndex;
|
||||||
|
});
|
||||||
|
|
||||||
|
// ... move them down one.
|
||||||
|
windows.forEach(function(win) {
|
||||||
|
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
|
||||||
|
true, time);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (isWindow)
|
||||||
|
// ... and bam, a workspace, good as new.
|
||||||
|
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
|
||||||
|
true, time);
|
||||||
|
else if (source.shellWorkspaceLaunch)
|
||||||
|
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
||||||
|
timestamp: time });
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
this._switchWorkspaceNotifyId =
|
this._switchWorkspaceNotifyId =
|
||||||
global.window_manager.connect('switch-workspace',
|
global.window_manager.connect('switch-workspace',
|
||||||
@ -840,20 +926,18 @@ ThumbnailsBox.prototype = {
|
|||||||
|
|
||||||
let y = contentBox.y1;
|
let y = contentBox.y1;
|
||||||
|
|
||||||
|
if (this._dropPlaceholderPos == -1) {
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||||
|
this._dropPlaceholder.hide();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < this._thumbnails.length; i++) {
|
for (let i = 0; i < this._thumbnails.length; i++) {
|
||||||
let thumbnail = this._thumbnails[i];
|
let thumbnail = this._thumbnails[i];
|
||||||
|
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
y += spacing - Math.round(thumbnail.collapseFraction * spacing);
|
y += spacing - Math.round(thumbnail.collapseFraction * spacing);
|
||||||
|
|
||||||
// We might end up with thumbnailHeight being something like 99.33
|
|
||||||
// pixels. To make this work and not end up with a gap at the bottom,
|
|
||||||
// we need some thumbnails to be 99 pixels and some 100 pixels height;
|
|
||||||
// we compute an actual scale separately for each thumbnail.
|
|
||||||
let y1 = Math.round(y);
|
|
||||||
let y2 = Math.round(y + thumbnailHeight);
|
|
||||||
let roundedVScale = (y2 - y1) / portholeHeight;
|
|
||||||
|
|
||||||
let x1, x2;
|
let x1, x2;
|
||||||
if (rtl) {
|
if (rtl) {
|
||||||
x1 = contentBox.x1 + slideOffset * thumbnail.slidePosition;
|
x1 = contentBox.x1 + slideOffset * thumbnail.slidePosition;
|
||||||
@ -863,6 +947,27 @@ ThumbnailsBox.prototype = {
|
|||||||
x2 = x1 + thumbnailWidth;
|
x2 = x1 + thumbnailWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i == this._dropPlaceholderPos) {
|
||||||
|
let [minHeight, placeholderHeight] = this._dropPlaceholder.get_preferred_height(-1);
|
||||||
|
childBox.x1 = x1;
|
||||||
|
childBox.x2 = x1 + thumbnailWidth;
|
||||||
|
childBox.y1 = Math.round(y);
|
||||||
|
childBox.y2 = Math.round(y + placeholderHeight);
|
||||||
|
this._dropPlaceholder.allocate(childBox, flags);
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||||
|
this._dropPlaceholder.show();
|
||||||
|
}));
|
||||||
|
y += placeholderHeight + spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We might end up with thumbnailHeight being something like 99.33
|
||||||
|
// pixels. To make this work and not end up with a gap at the bottom,
|
||||||
|
// we need some thumbnails to be 99 pixels and some 100 pixels height;
|
||||||
|
// we compute an actual scale separately for each thumbnail.
|
||||||
|
let y1 = Math.round(y);
|
||||||
|
let y2 = Math.round(y + thumbnailHeight);
|
||||||
|
let roundedVScale = (y2 - y1) / portholeHeight;
|
||||||
|
|
||||||
if (thumbnail.metaWorkspace == indicatorWorkspace)
|
if (thumbnail.metaWorkspace == indicatorWorkspace)
|
||||||
indicatorY = y1;
|
indicatorY = y1;
|
||||||
|
|
||||||
@ -917,4 +1022,4 @@ ThumbnailsBox.prototype = {
|
|||||||
onCompleteScope: this
|
onCompleteScope: this
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@ -23,11 +23,9 @@ const MAX_WORKSPACES = 16;
|
|||||||
const CONTROLS_POP_IN_TIME = 0.1;
|
const CONTROLS_POP_IN_TIME = 0.1;
|
||||||
|
|
||||||
|
|
||||||
function WorkspacesView(workspaces) {
|
const WorkspacesView = new Lang.Class({
|
||||||
this._init(workspaces);
|
Name: 'WorkspacesView',
|
||||||
}
|
|
||||||
|
|
||||||
WorkspacesView.prototype = {
|
|
||||||
_init: function(workspaces) {
|
_init: function(workspaces) {
|
||||||
this.actor = new St.Group({ style_class: 'workspaces-view' });
|
this.actor = new St.Group({ style_class: 'workspaces-view' });
|
||||||
|
|
||||||
@ -452,15 +450,13 @@ WorkspacesView.prototype = {
|
|||||||
_getWorkspaceIndexToRemove: function() {
|
_getWorkspaceIndexToRemove: function() {
|
||||||
return global.screen.get_active_workspace_index();
|
return global.screen.get_active_workspace_index();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WorkspacesView.prototype);
|
Signals.addSignalMethods(WorkspacesView.prototype);
|
||||||
|
|
||||||
|
|
||||||
function WorkspacesDisplay() {
|
const WorkspacesDisplay = new Lang.Class({
|
||||||
this._init();
|
Name: 'WorkspacesDisplay',
|
||||||
}
|
|
||||||
|
|
||||||
WorkspacesDisplay.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.actor = new Shell.GenericContainer();
|
this.actor = new Shell.GenericContainer();
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
@ -852,5 +848,5 @@ WorkspacesDisplay.prototype = {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(WorkspacesDisplay.prototype);
|
Signals.addSignalMethods(WorkspacesDisplay.prototype);
|
||||||
|
@ -6,11 +6,9 @@ const Shell = imports.gi.Shell;
|
|||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
|
|
||||||
function XdndHandler() {
|
const XdndHandler = new Lang.Class({
|
||||||
this._init();
|
Name: 'XdndHandler',
|
||||||
}
|
|
||||||
|
|
||||||
XdndHandler.prototype = {
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
// Used to display a clone of the cursor window when the
|
// Used to display a clone of the cursor window when the
|
||||||
// window group is hidden (like it happens in the overview)
|
// window group is hidden (like it happens in the overview)
|
||||||
@ -125,6 +123,6 @@ XdndHandler.prototype = {
|
|||||||
pickedActor = pickedActor.get_parent();
|
pickedActor = pickedActor.get_parent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
Signals.addSignalMethods(XdndHandler.prototype);
|
Signals.addSignalMethods(XdndHandler.prototype);
|
||||||
|
218
po/bg.po
218
po/bg.po
@ -7,8 +7,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-10-15 10:43+0300\n"
|
"POT-Creation-Date: 2011-10-21 23:34+0300\n"
|
||||||
"PO-Revision-Date: 2011-10-05 13:04+0300\n"
|
"PO-Revision-Date: 2011-10-21 23:34+0300\n"
|
||||||
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
|
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
|
||||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
@ -184,52 +184,50 @@ msgstr "Коя клавиатура да бъде да се ползва"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "изключени доставчици на OpenSearch"
|
msgstr "изключени доставчици на OpenSearch"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Сесия…"
|
msgstr "Сесия…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:788
|
#: ../js/gdm/loginDialog.js:804
|
||||||
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:833
|
#: ../js/gdm/loginDialog.js:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(или се регистрирайте с пръстов отпечатък)"
|
msgstr "(или се регистрирайте с пръстов отпечатък)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Липсва в списъка?"
|
msgstr "Липсва в списъка?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
|
#: ../js/ui/extensionSystem.js:520 ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Отказване"
|
msgstr "Отказване"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Регистриране"
|
msgstr "Регистриране"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1373
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Екран за идентификация"
|
msgstr "Екран за идентификация"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:569
|
||||||
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:571 ../js/ui/userMenu.js:640
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Приспиване"
|
msgstr "Приспиване"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
|
#: ../js/gdm/powerMenu.js:121
|
||||||
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
|
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Рестартиране"
|
msgstr "Рестартиране"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
|
#: ../js/gdm/powerMenu.js:126
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Изключване"
|
msgstr "Изключване"
|
||||||
|
|
||||||
@ -442,7 +440,7 @@ msgstr "Тази седмица"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Следващата седмица"
|
msgstr "Следващата седмица"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Неизвестно"
|
msgstr "Неизвестно"
|
||||||
@ -467,7 +465,7 @@ msgstr "Извън мрежата"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "КОНТАКТИ"
|
msgstr "КОНТАКТИ"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Изтриване"
|
msgstr "Изтриване"
|
||||||
|
|
||||||
@ -532,10 +530,12 @@ msgstr "СКОРО ОТВАРЯНИ"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:60
|
#: ../js/ui/endSessionDialog.js:60
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Изход на „%s“"
|
msgstr "Изход на „%s“"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Изход"
|
msgstr "Изход"
|
||||||
|
|
||||||
@ -564,6 +564,16 @@ msgstr[1] "Ще излезете от системата автоматично
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Излизане от системата."
|
msgstr "Излизане от системата."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:75
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Log Out"
|
||||||
|
msgstr "Изход"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Изключване"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -581,6 +591,21 @@ msgstr[1] "Системата ще се изключи автоматично с
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Изключване на системата."
|
msgstr "Изключване на системата."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:106
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Рестартиране"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Изключване"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:97
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Рестартиране"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -598,109 +623,119 @@ msgstr[1] "Системата ще се рестартира автоматич
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Рестартиране на системата."
|
msgstr "Рестартиране на системата."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:481
|
#: ../js/ui/extensionSystem.js:524
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Инсталиране"
|
msgstr "Инсталиране"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:485
|
#: ../js/ui/extensionSystem.js:528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
|
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:309
|
#: ../js/ui/keyboard.js:325
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "област за уведомяване"
|
msgstr "област за уведомяване"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:531 ../js/ui/status/power.js:211
|
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Клавиатура"
|
msgstr "Клавиатура"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:664
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Няма инсталирани разширения"
|
msgstr "Няма инсталирани разширения"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:691
|
#. Translators: argument is an extension UUID.
|
||||||
|
#: ../js/ui/lookingGlass.js:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s has not emitted any errors."
|
||||||
|
msgstr "Разширението %s не е обозначило никави грешки."
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:725
|
||||||
|
msgid "Hide Errors"
|
||||||
|
msgstr "Скриване на грешките"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:729 ../js/ui/lookingGlass.js:779
|
||||||
|
msgid "Show Errors"
|
||||||
|
msgstr "Показване на грешките"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:738
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Включено"
|
msgstr "Включено"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:740 ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Изключено"
|
msgstr "Изключено"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:695
|
#: ../js/ui/lookingGlass.js:742
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Грешка"
|
msgstr "Грешка"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:744
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Остаряло"
|
msgstr "Остаряло"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:699
|
#: ../js/ui/lookingGlass.js:746
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Изтегляне"
|
msgstr "Изтегляне"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:720
|
#: ../js/ui/lookingGlass.js:767
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Преглед на изходния код"
|
msgstr "Преглед на изходния код"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:726
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Домашна страница"
|
msgstr "Домашна страница"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Отваряне"
|
msgstr "Отваряне"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Информация за системата"
|
msgstr "Информация за системата"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgid "Show password"
|
|
||||||
msgstr "Показване на парола"
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:160
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Свързване"
|
msgstr "Свързване"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
|
#: ../js/ui/networkAgent.js:238 ../js/ui/networkAgent.js:250
|
||||||
#: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
|
#: ../js/ui/networkAgent.js:277 ../js/ui/networkAgent.js:297
|
||||||
#: ../js/ui/networkAgent.js:324
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Парола: "
|
msgstr "Парола: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:260
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Ключ: "
|
msgstr "Ключ: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
|
#: ../js/ui/networkAgent.js:275 ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Потребител: "
|
msgstr "Потребител: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:298
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Самоличност: "
|
msgstr "Самоличност: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:300
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Парола за частният ключ: "
|
msgstr "Парола за частният ключ: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Услуга: "
|
msgstr "Услуга: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Изисква се удостоверяване за безжична мрежа"
|
msgstr "Изисква се удостоверяване за безжична мрежа"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 "
|
||||||
@ -709,35 +744,35 @@ msgstr ""
|
|||||||
"За достъп до безжичната мрежа „%s“ са необходими пароли или криптирани "
|
"За достъп до безжичната мрежа „%s“ са необходими пароли или криптирани "
|
||||||
"ключове."
|
"ключове."
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:346
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Жична идентификация 802.1Х"
|
msgstr "Жична идентификация 802.1Х"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Име на мрежата: "
|
msgstr "Име на мрежата: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:353
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "Удостоверяване за DSL"
|
msgstr "Удостоверяване за DSL"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:360
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "Необходим е PIN"
|
msgstr "Необходим е PIN"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:361
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "Мобилното устройство изисква ПИН"
|
msgstr "Мобилното устройство изисква ПИН"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:362
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "ПИН: "
|
msgstr "ПИН: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:368
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Парола за мобилна широколентова връзка"
|
msgstr "Парола за мобилна широколентова връзка"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:369
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "За свързване към „%s“ се изисква парола."
|
msgstr "За свързване към „%s“ се изисква парола."
|
||||||
@ -793,15 +828,15 @@ msgstr "Свързване към…"
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "МЕСТА И УСТРОЙСТВА"
|
msgstr "МЕСТА И УСТРОЙСТВА"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Необходимо е удостоверяване"
|
msgstr "Необходимо е удостоверяване"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Администратор"
|
msgstr "Администратор"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Удостоверяване"
|
msgstr "Удостоверяване"
|
||||||
|
|
||||||
@ -809,11 +844,11 @@ msgstr "Удостоверяване"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:256
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Действието не беше успешно. Опитайте отново."
|
msgstr "Действието не беше успешно. Опитайте отново."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:268
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Парола:"
|
msgstr "Парола:"
|
||||||
|
|
||||||
@ -826,7 +861,7 @@ msgstr "Парола:"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Въведете команда:"
|
msgstr "Въведете команда:"
|
||||||
|
|
||||||
@ -838,6 +873,22 @@ msgstr "Търсене…"
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Няма съвпадения."
|
msgstr "Няма съвпадения."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Копиране"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "Поставяне"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "Показване на текста"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "Скриване на текста"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Грешна парола. Опитайте отново."
|
msgstr "Грешна парола. Опитайте отново."
|
||||||
@ -1494,39 +1545,39 @@ msgstr "Бездействие"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Недостъпно"
|
msgstr "Недостъпно"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:567 ../js/ui/userMenu.js:571 ../js/ui/userMenu.js:641
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Изключване..."
|
msgstr "Изключване..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:603
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Известяване"
|
msgstr "Известяване"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:591
|
#: ../js/ui/userMenu.js:611
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Мрежови регистрации"
|
msgstr "Мрежови регистрации"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Настройки на системата"
|
msgstr "Настройки на системата"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:602
|
#: ../js/ui/userMenu.js:622
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Заключване на екрана"
|
msgstr "Заключване на екрана"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:607
|
#: ../js/ui/userMenu.js:627
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Смяна на потребител"
|
msgstr "Смяна на потребител"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:632
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Изход…"
|
msgstr "Изход…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:640
|
#: ../js/ui/userMenu.js:660
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Състоянието ви ще се зададе да е „Зает“"
|
msgstr "Състоянието ви ще се зададе да е „Зает“"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:661
|
||||||
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."
|
||||||
@ -1539,11 +1590,11 @@ msgstr ""
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Търсене на написаното…"
|
msgstr "Търсене на написаното…"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:244
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Търсене"
|
msgstr "Търсене"
|
||||||
|
|
||||||
@ -1599,13 +1650,15 @@ msgstr "Стандартно"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Прозорецът за упълномощаване беше затворен от потребителя"
|
msgstr "Прозорецът за упълномощаване беше затворен от потребителя"
|
||||||
|
|
||||||
#: ../src/shell-util.c:100
|
#. Translators: this is the same string as the one found in
|
||||||
msgid "Home Folder"
|
#. * nautilus
|
||||||
|
#: ../src/shell-util.c:89
|
||||||
|
msgid "Home"
|
||||||
msgstr "Домашна папка"
|
msgstr "Домашна папка"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:115
|
#: ../src/shell-util.c:98
|
||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Файлова система"
|
msgstr "Файлова система"
|
||||||
|
|
||||||
@ -1614,16 +1667,7 @@ msgstr "Файлова система"
|
|||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
#. * directory called "some-directory" is in the trash.
|
#. * directory called "some-directory" is in the trash.
|
||||||
#.
|
#.
|
||||||
#: ../src/shell-util.c:311
|
#: ../src/shell-util.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
#~ msgid "%s has not emitted any errors."
|
|
||||||
#~ msgstr "Разширение %s не е давало грешки."
|
|
||||||
|
|
||||||
#~ msgid "Hide Errors"
|
|
||||||
#~ msgstr "Скриване на грешките"
|
|
||||||
|
|
||||||
#~ msgid "Show Errors"
|
|
||||||
#~ msgstr "Показване на грешките"
|
|
||||||
|
221
po/de.po
221
po/de.po
@ -6,7 +6,7 @@
|
|||||||
#
|
#
|
||||||
# Hendrik Brandt <heb@gnome-de.org>, 2009.
|
# Hendrik Brandt <heb@gnome-de.org>, 2009.
|
||||||
# Hendrik Richter <hendrikr@gnome.org>, 2009, 2010, 2011.
|
# Hendrik Richter <hendrikr@gnome.org>, 2009, 2010, 2011.
|
||||||
# Mario Blättermann <mariobl@freenet.de>, 2009, 2010, 2011.
|
# Mario Blättermann <mario.blaettermann@gmail.com>, 2009-2011.
|
||||||
# Mario Klug <mario@klug.me>, 2010.
|
# Mario Klug <mario@klug.me>, 2010.
|
||||||
# Jakob Kramer <jakob.kramer@gmx.de>, 2010.
|
# Jakob Kramer <jakob.kramer@gmx.de>, 2010.
|
||||||
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2010, 2011.
|
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2010, 2011.
|
||||||
@ -17,9 +17,9 @@ 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-10-17 20:04+0000\n"
|
"POT-Creation-Date: 2011-11-05 13:23+0000\n"
|
||||||
"PO-Revision-Date: 2011-10-17 22:05+0100\n"
|
"PO-Revision-Date: 2011-11-05 21:08+0100\n"
|
||||||
"Last-Translator: Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>\n"
|
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -56,10 +56,12 @@ msgid "Framerate used for recording screencasts."
|
|||||||
msgstr "Bildwiederholungsrate zur Aufnahme von Screencasts"
|
msgstr "Bildwiederholungsrate zur Aufnahme von Screencasts"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
|
#, fuzzy
|
||||||
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. disabled-extensions overrides this setting for extensions "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
"that appear in both lists."
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser "
|
"Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser "
|
||||||
"Schlüssel listet Erweiterungen auf, welche geladen werden sollen. »disabled-"
|
"Schlüssel listet Erweiterungen auf, welche geladen werden sollen. »disabled-"
|
||||||
@ -113,11 +115,11 @@ msgstr ""
|
|||||||
"Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei "
|
"Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei "
|
||||||
"geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. "
|
"geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. "
|
||||||
"Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder "
|
"Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder "
|
||||||
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) "
|
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) gesetzt, "
|
||||||
"gesetzt, so wird die vorgegebene Weiterleitung verwendet, welche derzeit "
|
"so wird die vorgegebene Weiterleitung verwendet, welche derzeit »videorate ! "
|
||||||
"»videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux« lautet "
|
"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux« lautet und nach WEBM "
|
||||||
"und nach WEBM mittels des VP8-Codecs aufzeichnet. %T wird als Platzhalter "
|
"mittels des VP8-Codecs aufzeichnet. %T wird als Platzhalter für die vermutete "
|
||||||
"für die vermutete optimale Threadanzahl auf dem System verwendet."
|
"optimale Threadanzahl auf dem System verwendet."
|
||||||
|
|
||||||
#: ../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"
|
||||||
@ -136,8 +138,8 @@ msgid ""
|
|||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
"favorites area."
|
"favorites area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-"
|
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-Bereich "
|
||||||
"Bereich angezeigt."
|
"angezeigt."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -196,52 +198,50 @@ msgstr "Zu verwendende Tastatur"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "deaktivierte OpenSearch-Provider"
|
msgstr "deaktivierte OpenSearch-Provider"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sitzung …"
|
msgstr "Sitzung …"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:788
|
#: ../js/gdm/loginDialog.js:804
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Anmelden"
|
msgstr "Anmelden"
|
||||||
|
|
||||||
#. 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:833
|
#: ../js/gdm/loginDialog.js:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
|
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Nicht aufgeführt?"
|
msgstr "Nicht aufgeführt?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
|
#: ../js/ui/extensionSystem.js:519 ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Anmelden"
|
msgstr "Anmelden"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1373
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Anmeldefenster"
|
msgstr "Anmeldefenster"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:573 ../js/ui/userMenu.js:575
|
||||||
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:644
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Bereitschaft"
|
msgstr "Bereitschaft"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
|
#: ../js/gdm/powerMenu.js:121
|
||||||
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
|
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Neu starten"
|
msgstr "Neu starten"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
|
#: ../js/gdm/powerMenu.js:126
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Ausschalten"
|
msgstr "Ausschalten"
|
||||||
|
|
||||||
@ -458,8 +458,8 @@ msgstr "Diese Woche"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Nächste Woche"
|
msgstr "Nächste Woche"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:350
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unbekannt"
|
msgstr "Unbekannt"
|
||||||
|
|
||||||
@ -483,7 +483,7 @@ msgstr "Abgemeldet"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTE"
|
msgstr "KONTAKTE"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1205
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1214
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
|
|
||||||
@ -548,10 +548,12 @@ msgstr "ZULETZT GEÖFFNETE DOKUMENTE"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:60
|
#: ../js/ui/endSessionDialog.js:60
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "%s abmelden"
|
msgstr "%s abmelden"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Abmelden"
|
msgstr "Abmelden"
|
||||||
|
|
||||||
@ -579,6 +581,16 @@ msgstr[1] "Sie werden automatisch in %d Sekunden abgemeldet."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Abmeldung vom System."
|
msgstr "Abmeldung vom System."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:75
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Log Out"
|
||||||
|
msgstr "Abmelden"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Ausschalten"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -596,6 +608,21 @@ msgstr[1] "Das System wird automatisch in %d Sekunden ausgeschaltet."
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Das System wird ausgeschaltet."
|
msgstr "Das System wird ausgeschaltet."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:106
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Neu starten"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Ausschalten"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:97
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Neu starten"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -613,11 +640,11 @@ msgstr[1] "Das System wird automatisch in %d Sekunden neu gestartet."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Neustart des Systems."
|
msgstr "Neustart des Systems."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:481
|
#: ../js/ui/extensionSystem.js:523
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Installieren"
|
msgstr "Installieren"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:485
|
#: ../js/ui/extensionSystem.js:527
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||||
@ -630,45 +657,68 @@ msgstr "Benachrichtigungsfeld"
|
|||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:646
|
#: ../js/ui/lookingGlass.js:664
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Keine Erweiterungen installiert"
|
msgstr "Keine Erweiterungen installiert"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:692
|
#. Translators: argument is an extension UUID.
|
||||||
|
#: ../js/ui/lookingGlass.js:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s has not emitted any errors."
|
||||||
|
msgstr "%s hat keine Fehler ausgegeben."
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:725
|
||||||
|
msgid "Hide Errors"
|
||||||
|
msgstr "Fehler verbergen"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:729 ../js/ui/lookingGlass.js:780
|
||||||
|
msgid "Show Errors"
|
||||||
|
msgstr "Fehler anzeigen"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:738
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Aktiviert"
|
msgstr "Aktiviert"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:694 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:741 ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Deaktiviert"
|
msgstr "Deaktiviert"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:696
|
#: ../js/ui/lookingGlass.js:743
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Fehler"
|
msgstr "Fehler"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:698
|
#: ../js/ui/lookingGlass.js:745
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Veraltet"
|
msgstr "Veraltet"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:700
|
#: ../js/ui/lookingGlass.js:747
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Herunterladen"
|
msgstr "Herunterladen"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:721
|
#: ../js/ui/lookingGlass.js:768
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Quelle zeigen"
|
msgstr "Quelle zeigen"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:727
|
#: ../js/ui/lookingGlass.js:774
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Webseite"
|
msgstr "Webseite"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1198
|
#: ../js/ui/messageTray.js:1207
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Öffnen"
|
msgstr "Öffnen"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2407
|
#: ../js/ui/messageTray.js:1224
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Unmute"
|
||||||
|
msgstr "Minute"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1224
|
||||||
|
msgid "Mute"
|
||||||
|
msgstr "Stumm"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:2436
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformationen"
|
msgstr "Systeminformationen"
|
||||||
|
|
||||||
@ -714,8 +764,7 @@ msgstr "Legitimierung für Funknetzwerk wird benötigt"
|
|||||||
#: ../js/ui/networkAgent.js:325
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 ""
|
||||||
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
|
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
|
||||||
"zuzugreifen."
|
"zuzugreifen."
|
||||||
@ -1090,13 +1139,13 @@ msgstr "nicht verfügbar"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "Verbindung gescheitert"
|
msgstr "Verbindung gescheitert"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
|
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1532
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Mehr ..."
|
msgstr "Mehr ..."
|
||||||
|
|
||||||
#. 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:611 ../js/ui/status/network.js:1458
|
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1467
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Verbunden (privat)"
|
msgstr "Verbunden (privat)"
|
||||||
|
|
||||||
@ -1113,7 +1162,7 @@ msgid "Auto dial-up"
|
|||||||
msgstr "Einwählverbindung (automatisch)"
|
msgstr "Einwählverbindung (automatisch)"
|
||||||
|
|
||||||
#. 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:1470
|
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "%s (automatisch)"
|
msgstr "%s (automatisch)"
|
||||||
@ -1122,47 +1171,47 @@ msgstr "%s (automatisch)"
|
|||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Bluetooth (automatisch)"
|
msgstr "Bluetooth (automatisch)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1472
|
#: ../js/ui/status/network.js:1481
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Drahtlos (automatisch)"
|
msgstr "Drahtlos (automatisch)"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1566
|
#: ../js/ui/status/network.js:1575
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Netzwerk aktivieren"
|
msgstr "Netzwerk aktivieren"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1578
|
#: ../js/ui/status/network.js:1587
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Kabelgebunden"
|
msgstr "Kabelgebunden"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1589
|
#: ../js/ui/status/network.js:1598
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Drahtlos"
|
msgstr "Drahtlos"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1599
|
#: ../js/ui/status/network.js:1608
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Mobiles Breitband"
|
msgstr "Mobiles Breitband"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1609
|
#: ../js/ui/status/network.js:1618
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "VPN-Verbindungen"
|
msgstr "VPN-Verbindungen"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1620
|
#: ../js/ui/status/network.js:1629
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Netzwerkeinstellungen"
|
msgstr "Netzwerkeinstellungen"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1757
|
#: ../js/ui/status/network.js:1766
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Verbindung gescheitert"
|
msgstr "Verbindung gescheitert"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1758
|
#: ../js/ui/status/network.js:1767
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2008
|
#: ../js/ui/status/network.js:2017
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "Netzwerk ist deaktiviert"
|
msgstr "Netzwerk ist deaktiviert"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2133
|
#: ../js/ui/status/network.js:2144
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Netzwerk-Verwaltung"
|
msgstr "Netzwerk-Verwaltung"
|
||||||
|
|
||||||
@ -1463,8 +1512,7 @@ msgid "This resource is already connected to the server"
|
|||||||
msgstr "Diese Ressource ist bereits mit dem Server verbunden"
|
msgstr "Diese Ressource ist bereits mit dem Server verbunden"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1449
|
#: ../js/ui/telepathyClient.js:1449
|
||||||
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 ""
|
||||||
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
|
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
|
||||||
"ersetzt"
|
"ersetzt"
|
||||||
@ -1529,39 +1577,39 @@ msgstr "Untätig"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nicht verfügbar"
|
msgstr "Nicht verfügbar"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:571 ../js/ui/userMenu.js:575 ../js/ui/userMenu.js:645
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Ausschalten …"
|
msgstr "Ausschalten …"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Benachrichtigungen"
|
msgstr "Benachrichtigungen"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:591
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Online-Konten"
|
msgstr "Online-Konten"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Systemeinstellungen"
|
msgstr "Systemeinstellungen"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:602
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Bildschirm sperren"
|
msgstr "Bildschirm sperren"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:607
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Benutzer wechseln"
|
msgstr "Benutzer wechseln"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:636
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Abmelden …"
|
msgstr "Abmelden …"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:640
|
#: ../js/ui/userMenu.js:664
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt"
|
msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:665
|
||||||
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."
|
||||||
@ -1578,7 +1626,7 @@ msgstr ""
|
|||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Suchbegriff eingeben …"
|
msgstr "Suchbegriff eingeben …"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:244
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
@ -1609,15 +1657,15 @@ msgstr[1] "%u Eingänge"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemklänge"
|
msgstr "Systemklänge"
|
||||||
|
|
||||||
#: ../src/main.c:480
|
#: ../src/main.c:483
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Version ausgeben"
|
msgstr "Version ausgeben"
|
||||||
|
|
||||||
#: ../src/main.c:486
|
#: ../src/main.c:489
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
|
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
|
||||||
|
|
||||||
#: ../src/shell-app.c:579
|
#: ../src/shell-app.c:567
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "»%s« konnte nicht gestartet werden"
|
msgstr "»%s« konnte nicht gestartet werden"
|
||||||
@ -1634,13 +1682,16 @@ msgstr "Vorgabe"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
|
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
|
||||||
|
|
||||||
#: ../src/shell-util.c:100
|
#. Translators: this is the same string as the one found in
|
||||||
msgid "Home Folder"
|
#. * nautilus
|
||||||
msgstr "Persönlicher Ordner"
|
#: ../src/shell-util.c:89
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Lautstärke"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:115
|
#: ../src/shell-util.c:98
|
||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Dateisystem"
|
msgstr "Dateisystem"
|
||||||
|
|
||||||
@ -1649,23 +1700,17 @@ msgstr "Dateisystem"
|
|||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
#. * directory called "some-directory" is in the trash.
|
#. * directory called "some-directory" is in the trash.
|
||||||
#.
|
#.
|
||||||
#: ../src/shell-util.c:311
|
#: ../src/shell-util.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Home Folder"
|
||||||
|
#~ msgstr "Persönlicher Ordner"
|
||||||
|
|
||||||
#~ msgid "Show password"
|
#~ msgid "Show password"
|
||||||
#~ msgstr "Passwort anzeigen"
|
#~ msgstr "Passwort anzeigen"
|
||||||
|
|
||||||
#~ msgid "%s has not emitted any errors."
|
|
||||||
#~ msgstr "%s hat keine Fehler ausgegeben."
|
|
||||||
|
|
||||||
#~ msgid "Hide Errors"
|
|
||||||
#~ msgstr "Fehler verbergen"
|
|
||||||
|
|
||||||
#~ msgid "Show Errors"
|
|
||||||
#~ msgstr "Fehler anzeigen"
|
|
||||||
|
|
||||||
#~ msgid "%s has finished starting"
|
#~ msgid "%s has finished starting"
|
||||||
#~ msgstr "Start von %s ist abgeschlossen"
|
#~ msgstr "Start von %s ist abgeschlossen"
|
||||||
|
|
||||||
|
154
po/en_GB.po
154
po/en_GB.po
@ -7,8 +7,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-10-14 19:11+0100\n"
|
"POT-Creation-Date: 2011-11-12 07:44+0000\n"
|
||||||
"PO-Revision-Date: 2011-10-14 19:12+0100\n"
|
"PO-Revision-Date: 2011-11-12 07:47+0100\n"
|
||||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||||
"Language-Team: British English <en@li.org>\n"
|
"Language-Team: British English <en@li.org>\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Virtaal 0.7.1-rc1\n"
|
"X-Generator: Virtaal 0.7.0\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
@ -180,42 +180,42 @@ msgstr "Which keyboard to use"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "disabled OpenSearch providers"
|
msgstr "disabled OpenSearch providers"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Session…"
|
msgstr "Session…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:788
|
#: ../js/gdm/loginDialog.js:804
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Sign In"
|
msgstr "Sign In"
|
||||||
|
|
||||||
#. 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:833
|
#: ../js/gdm/loginDialog.js:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(or swipe finger)"
|
msgstr "(or swipe finger)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Not listed?"
|
msgstr "Not listed?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
|
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel"
|
msgstr "Cancel"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Sign In"
|
msgstr "Sign In"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1373
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Login Window"
|
msgstr "Login Window"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:554
|
||||||
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:625
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspend"
|
msgstr "Suspend"
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ msgstr "This week"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Next week"
|
msgstr "Next week"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unknown"
|
msgstr "Unknown"
|
||||||
@ -463,7 +463,7 @@ msgstr "Offline"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTS"
|
msgstr "CONTACTS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
|
|
||||||
@ -596,100 +596,96 @@ msgstr "Install"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Download and install '%s' from extensions.gnome.org?"
|
msgstr "Download and install '%s' from extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:309
|
#: ../js/ui/keyboard.js:325
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "tray"
|
msgstr "tray"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:531 ../js/ui/status/power.js:211
|
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Keyboard"
|
msgstr "Keyboard"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:646
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "No extensions installed"
|
msgstr "No extensions installed"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:691
|
#: ../js/ui/lookingGlass.js:692
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enabled"
|
msgstr "Enabled"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:694 ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabled"
|
msgstr "Disabled"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:695
|
#: ../js/ui/lookingGlass.js:696
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:698
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Out of date"
|
msgstr "Out of date"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:699
|
#: ../js/ui/lookingGlass.js:700
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Downloading"
|
msgstr "Downloading"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:720
|
#: ../js/ui/lookingGlass.js:721
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "View Source"
|
msgstr "View Source"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:726
|
#: ../js/ui/lookingGlass.js:727
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Web Page"
|
msgstr "Web Page"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Open"
|
msgstr "Open"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "System Information"
|
msgstr "System Information"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgid "Show password"
|
|
||||||
msgstr "Show password"
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:160
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Connect"
|
msgstr "Connect"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
|
#: ../js/ui/networkAgent.js:238 ../js/ui/networkAgent.js:250
|
||||||
#: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
|
#: ../js/ui/networkAgent.js:277 ../js/ui/networkAgent.js:297
|
||||||
#: ../js/ui/networkAgent.js:324
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Password: "
|
msgstr "Password: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:260
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Key: "
|
msgstr "Key: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
|
#: ../js/ui/networkAgent.js:275 ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Username: "
|
msgstr "Username: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:298
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Identity: "
|
msgstr "Identity: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:300
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Private key password: "
|
msgstr "Private key password: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Service: "
|
msgstr "Service: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Authentication required by wireless network"
|
msgstr "Authentication required by wireless network"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 "
|
||||||
@ -698,35 +694,35 @@ msgstr ""
|
|||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
"'%s'."
|
"'%s'."
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:346
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Wired 802.1X authentication"
|
msgstr "Wired 802.1X authentication"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Network name: "
|
msgstr "Network name: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:353
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL authentication"
|
msgstr "DSL authentication"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:360
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "PIN code required"
|
msgstr "PIN code required"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:361
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "PIN code is needed for the mobile broadband device"
|
msgstr "PIN code is needed for the mobile broadband device"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:362
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:368
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Mobile broadband network password"
|
msgstr "Mobile broadband network password"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:369
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "A password is required to connect to '%s'."
|
msgstr "A password is required to connect to '%s'."
|
||||||
@ -782,15 +778,15 @@ msgstr "Connect to…"
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "PLACES & DEVICES"
|
msgstr "PLACES & DEVICES"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Authentication Required"
|
msgstr "Authentication Required"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Administrator"
|
msgstr "Administrator"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Authenticate"
|
msgstr "Authenticate"
|
||||||
|
|
||||||
@ -798,11 +794,11 @@ msgstr "Authenticate"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:256
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Sorry, that didn't work. Please try again."
|
msgstr "Sorry, that didn't work. Please try again."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:268
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Password:"
|
msgstr "Password:"
|
||||||
|
|
||||||
@ -815,7 +811,7 @@ msgstr "Password:"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Please enter a command:"
|
msgstr "Please enter a command:"
|
||||||
|
|
||||||
@ -827,6 +823,22 @@ msgstr "Searching…"
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "No matching results."
|
msgstr "No matching results."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Copy"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "Paste"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "Show Text"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "Hide Text"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Wrong password, please try again"
|
msgstr "Wrong password, please try again"
|
||||||
@ -1484,39 +1496,39 @@ msgstr "Idle"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Unavailable"
|
msgstr "Unavailable"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:552 ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:626
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Power Off…"
|
msgstr "Power Off…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:588
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:591
|
#: ../js/ui/userMenu.js:596
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Online Accounts"
|
msgstr "Online Accounts"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595
|
#: ../js/ui/userMenu.js:600
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "System Settings"
|
msgstr "System Settings"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:602
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lock Screen"
|
msgstr "Lock Screen"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:607
|
#: ../js/ui/userMenu.js:612
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Switch User"
|
msgstr "Switch User"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:617
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Log Out…"
|
msgstr "Log Out…"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:640
|
#: ../js/ui/userMenu.js:645
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Your chat status will be set to busy"
|
msgstr "Your chat status will be set to busy"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:646
|
||||||
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."
|
||||||
@ -1528,11 +1540,11 @@ msgstr ""
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Type to search…"
|
msgstr "Type to search…"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:261
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
@ -1608,6 +1620,9 @@ msgstr "File System"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Show password"
|
||||||
|
#~ msgstr "Show password"
|
||||||
|
|
||||||
#~ msgid "If true, display onscreen keyboard."
|
#~ msgid "If true, display onscreen keyboard."
|
||||||
#~ msgstr "If true, display on-screen keyboard."
|
#~ msgstr "If true, display on-screen keyboard."
|
||||||
|
|
||||||
@ -1749,9 +1764,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Show seco_nds"
|
#~ msgid "Show seco_nds"
|
||||||
#~ msgstr "Show seco_nds"
|
#~ msgstr "Show seco_nds"
|
||||||
|
|
||||||
#~ msgid "Show the _date"
|
|
||||||
#~ msgstr "Show the _date"
|
|
||||||
|
|
||||||
#~ msgid "_12 hour format"
|
#~ msgid "_12 hour format"
|
||||||
#~ msgstr "_12 hour format"
|
#~ msgstr "_12 hour format"
|
||||||
|
|
||||||
|
355
po/eo.po
355
po/eo.po
@ -3,21 +3,22 @@
|
|||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
# Tiffany Antopolski <tiffany.antopolski@gmail.com>, 2011.
|
# Tiffany Antopolski <tiffany.antopolski@gmail.com>, 2011.
|
||||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011.
|
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011.
|
||||||
|
#
|
||||||
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-10-02 16:05+0000\n"
|
"POT-Creation-Date: 2011-10-26 09:56+0000\n"
|
||||||
"PO-Revision-Date: 2011-10-03 10:32-0400\n"
|
"PO-Revision-Date: 2011-10-26 19:08+0200\n"
|
||||||
"Last-Translator: Tiffany Antopolski <tiffany.antopolski@gmail.com>\n"
|
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
|
||||||
"Language-Team: Esperanto\n"
|
"Language-Team: Esperanto <ubuntu-l10n-eo@lists.launchpad.net>\n"
|
||||||
|
"Language: eo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bits\n"
|
||||||
"Language: eo\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"X-Generator: Virtaal 0.7.1-rc1\n"
|
||||||
"X-Generator: Virtaal 0.7.0\n"
|
|
||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
@ -140,10 +141,10 @@ msgid ""
|
|||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
"remove already saved data."
|
"remove already saved data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La ŝelo kutime kontrolas la ruliĝaj aplikaĵoj por montri plej uzitaj "
|
"La ŝelo kutime kontrolas la ruliĝajn aplikaĵojn por montri la plej uzitajn "
|
||||||
"aplikaĵoj (ekz. en lanĉiloj). Kvankam ĉi tiu datumoj estos tenata privata, "
|
"aplikaĵojn (ekz. en lanĉiloj). Kvankam ĉi tiu datumoj estos tenata privata, "
|
||||||
"vi pove volos malŝalti ĉi tiu pro privatado kielo. Bonvole atentu ke faranta "
|
"vi eble volas elŝalti ĉi tion pro privateca kialo. Bonvole atentu ke faranta "
|
||||||
"ĉi tiu ne forigos jam konservitaj datumoj ."
|
"ĉi tion ne forigos jam konservitajn datumojn."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
@ -165,52 +166,50 @@ msgstr "Uzi kiun klavaron"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "elŝaltitaj OpenSearch-provizantoj"
|
msgstr "elŝaltitaj OpenSearch-provizantoj"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Seanco..."
|
msgstr "Seanco..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:804
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Ensaluti"
|
msgstr "Ensaluti"
|
||||||
|
|
||||||
#. 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:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(aŭ pasu fingron)"
|
msgstr "(aŭ pasu fingron)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:848
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ĉu ne en listo?"
|
msgstr "Ĉu ne en listo?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
|
#: ../js/ui/extensionSystem.js:520 ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Nuligi"
|
msgstr "Nuligi"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1009
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Ensaluti"
|
msgstr "Ensaluti"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1358
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ensalutfenestro"
|
msgstr "Ensalutfenestro"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:514
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:573
|
||||||
#: ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:585
|
#: ../js/ui/userMenu.js:575 ../js/ui/userMenu.js:644
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Dormeti"
|
msgstr "Dormeti"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
|
#: ../js/gdm/powerMenu.js:121
|
||||||
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
|
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Restartigi"
|
msgstr "Restartigi"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
|
#: ../js/gdm/powerMenu.js:126
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Elŝalti"
|
msgstr "Elŝalti"
|
||||||
|
|
||||||
@ -427,32 +426,32 @@ msgstr "Ĉi tiu semajno"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Sekva semajno"
|
msgstr "Sekva semajno"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:355
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:350
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nekonata"
|
msgstr "Nekonata"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:139
|
#: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponebla"
|
msgstr "Disponebla"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:148
|
#: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Fora"
|
msgstr "Fora"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:142
|
#: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Okupita"
|
msgstr "Okupita"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93
|
#: ../js/ui/contactDisplay.js:99
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Nekonektite"
|
msgstr "Nekonektite"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:140
|
#: ../js/ui/contactDisplay.js:146
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTOJ"
|
msgstr "KONTAKTOJ"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Forigi"
|
msgstr "Forigi"
|
||||||
|
|
||||||
@ -517,10 +516,12 @@ msgstr "LASTATEMPAJ ELEMENTOJ"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:60
|
#: ../js/ui/endSessionDialog.js:60
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Elsaluti %s"
|
msgstr "Elsaluti %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Elsaluti"
|
msgstr "Elsaluti"
|
||||||
|
|
||||||
@ -547,6 +548,16 @@ msgstr[1] "Vi aŭtomate elsalutos post %d sekundoj."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Elsalutanta de la sistemo."
|
msgstr "Elsalutanta de la sistemo."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:75
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Log Out"
|
||||||
|
msgstr "Elsaluti"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Elŝalti"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "Alklaku \"Elŝalti\" por ĉesi tiujn aplikaĵojn kaj elŝalti la sistemon."
|
msgstr "Alklaku \"Elŝalti\" por ĉesi tiujn aplikaĵojn kaj elŝalti la sistemon."
|
||||||
@ -562,6 +573,21 @@ msgstr[1] "La sistemo aŭtomate elŝaltiĝos post %d sekundoj."
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Elŝaltanta la sistemon."
|
msgstr "Elŝaltanta la sistemon."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:106
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Restartigi"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Elŝalti"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:97
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Restartigi"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -578,156 +604,156 @@ msgstr[1] "La sistemo aŭtomate restartos post %d sekundoj."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Restartiganta la sistemon."
|
msgstr "Restartiganta la sistemon."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:481
|
#: ../js/ui/extensionSystem.js:524
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instali"
|
msgstr "Instali"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:485
|
#: ../js/ui/extensionSystem.js:528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Elŝuti kaj instali '%s' de extensions.gnome.org?"
|
msgstr "Elŝuti kaj instali '%s' de extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:529 ../js/ui/status/power.js:211
|
#: ../js/ui/keyboard.js:325
|
||||||
|
msgid "tray"
|
||||||
|
msgstr "pleto"
|
||||||
|
|
||||||
|
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Klavaro"
|
msgstr "Klavaro"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:664
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Neniu kromprogramo instalita"
|
msgstr "Neniu kromprogramo instalita"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:700
|
#: ../js/ui/lookingGlass.js:719
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s ne eligintaj ajnaj eraroj."
|
msgstr "%s ne eligintaj ajnaj eraroj."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:706
|
#: ../js/ui/lookingGlass.js:725
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Kaŝi Erarojn"
|
msgstr "Kaŝi erarojn"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:710 ../js/ui/lookingGlass.js:764
|
#: ../js/ui/lookingGlass.js:729 ../js/ui/lookingGlass.js:779
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Montri erarojn"
|
msgstr "Montri erarojn"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:719
|
#: ../js/ui/lookingGlass.js:738
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enŝaltita"
|
msgstr "Enŝaltita"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:721 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:740 ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Elŝaltita"
|
msgstr "Elŝaltita"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:723
|
#: ../js/ui/lookingGlass.js:742
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Eraro"
|
msgstr "Eraro"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/lookingGlass.js:744
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Neaktuala"
|
msgstr "Neaktuala"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:727
|
#: ../js/ui/lookingGlass.js:746
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Elŝutanta"
|
msgstr "Elŝutanta"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:752
|
#: ../js/ui/lookingGlass.js:767
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Montri fonton"
|
msgstr "Montri fonton"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:758
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Retpaĝo"
|
msgstr "Retpaĝo"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Malfermi"
|
msgstr "Malfermi"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Sisteminformoj"
|
msgstr "Sisteminformoj"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgid "Show password"
|
|
||||||
msgstr "Montri pasvorton"
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:160
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Konekti"
|
msgstr "Konekti"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
|
#: ../js/ui/networkAgent.js:238 ../js/ui/networkAgent.js:250
|
||||||
#: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
|
#: ../js/ui/networkAgent.js:277 ../js/ui/networkAgent.js:297
|
||||||
#: ../js/ui/networkAgent.js:324
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Pasvorto: "
|
msgstr "Pasvorto: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:260
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Ŝlosilo: "
|
msgstr "Ŝlosilo: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
|
#: ../js/ui/networkAgent.js:275 ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Uzantnomo: "
|
msgstr "Uzantnomo: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:298
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Idento:"
|
msgstr "Idento:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:300
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Pasvorto por privata ŝlosilo:"
|
msgstr "Pasvorto por privata ŝlosilo:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Servo:"
|
msgstr "Servo:"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Aŭtentokontrolo bezonitas de sendrata reto"
|
msgstr "Aŭtentokontrolo bezonitas de sendrata reto"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 ""
|
||||||
"Pasvortoj aŭ ĉifrado-ŝlosiloj estas necesaĵoj por aliro al sendrata reto '%"
|
"Pasvortoj aŭ ĉifrado-ŝlosiloj estas necesaĵoj por aliro al sendrata reto "
|
||||||
"s'."
|
"'%s'."
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:346
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Dratita 802.1X aŭtentokontrolo"
|
msgstr "Dratita 802.1X aŭtentokontrolo"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Reta nomo: "
|
msgstr "Reta nomo: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:353
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL-a aŭtentokontrolo"
|
msgstr "DSL-a aŭtentokontrolo"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:360
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "PIN-kodo bezonita"
|
msgstr "PIN-kodo bezonita"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:361
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "PIN-kodo estas bezonita por la portebla larĝkapacita aparato"
|
msgstr "PIN-kodo estas bezonita por la portebla larĝkapacita aparato"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:362
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:368
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Portebla larĝkapacita retopasvorto"
|
msgstr "Portebla larĝkapacita retopasvorto"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:369
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "Pasvorto estas bezonita por konekti al '%s'."
|
msgstr "Pasvorto estas bezonita por konekti al '%s'."
|
||||||
@ -784,15 +810,15 @@ msgstr "Konekti al..."
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "EJOJ kaj APARATOJ"
|
msgstr "EJOJ kaj APARATOJ"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Aŭtentigo bezonita"
|
msgstr "Aŭtentigo bezonita"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Administranto"
|
msgstr "Administranto"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Aŭtentigi"
|
msgstr "Aŭtentigi"
|
||||||
|
|
||||||
@ -800,11 +826,11 @@ msgstr "Aŭtentigi"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:256
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Pardonu, tio ne funkcis. Bonvole provu denove."
|
msgstr "Pardonu, tio ne funkcis. Bonvole provu denove."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:268
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Pasvorto:"
|
msgstr "Pasvorto:"
|
||||||
|
|
||||||
@ -817,7 +843,7 @@ msgstr "Pasvorto:"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Bonvole enigu komandon:"
|
msgstr "Bonvole enigu komandon:"
|
||||||
|
|
||||||
@ -829,6 +855,22 @@ msgstr "Serĉanta..."
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Neniuj rezultoj kongruas."
|
msgstr "Neniuj rezultoj kongruas."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Kopii"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "Alglui"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "Montri tekston"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "Kaŝi tekston"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Erara pasvorto, bonvole provu denove"
|
msgstr "Erara pasvorto, bonvole provu denove"
|
||||||
@ -962,7 +1004,7 @@ msgstr "Ĉiam konsenti aliron"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Konsenti nur ĉi tiun fojon"
|
msgstr "Konsenti nur ĉi tiun fojon"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1200
|
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rifuzi"
|
msgstr "Rifuzi"
|
||||||
|
|
||||||
@ -1249,22 +1291,22 @@ msgstr "Abonopeto"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Konekta eraro"
|
msgstr "Konekta eraro"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:737
|
#: ../js/ui/telepathyClient.js:741
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s estas konektita."
|
msgstr "%s estas konektita."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:742
|
#: ../js/ui/telepathyClient.js:746
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s estas nekonektita."
|
msgstr "%s estas nekonektita."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:749
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s estas fora."
|
msgstr "%s estas fora."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s estas okupata."
|
msgstr "%s estas okupata."
|
||||||
@ -1272,35 +1314,35 @@ msgstr "%s estas okupata."
|
|||||||
#. 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:982
|
#: ../js/ui/telepathyClient.js:986
|
||||||
#, 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 "Sendita je <b>%X</b> je <b>A</b>"
|
msgstr "Sendita je <b>%X</b> je <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:988
|
#: ../js/ui/telepathyClient.js:992
|
||||||
#, 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 "Sendita je <b>%A</b>, <b>%B %d</b>"
|
msgstr "Sendita je <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:993
|
#: ../js/ui/telepathyClient.js:997
|
||||||
#, 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 "Sendita je <b>%A</b>, </b>%B %d</b>, %Y"
|
msgstr "Sendita je <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:1035
|
#: ../js/ui/telepathyClient.js:1039
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s estas konata kiel %s"
|
msgstr "%s estas konata kiel %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:1144
|
#: ../js/ui/telepathyClient.js:1148
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invito al %s"
|
msgstr "Invito al %s"
|
||||||
@ -1308,34 +1350,35 @@ msgstr "Invito al %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:1152
|
#: ../js/ui/telepathyClient.js:1156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s invitas vin aliĝi al %s"
|
msgstr "%s invitas vin aliĝi al %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1154 ../js/ui/telepathyClient.js:1243
|
#: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248
|
||||||
#: ../js/ui/telepathyClient.js:1347
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Refuzi"
|
msgstr "Refuzi"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1155 ../js/ui/telepathyClient.js:1244
|
#: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249
|
||||||
#: ../js/ui/telepathyClient.js:1348
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Akcepti"
|
msgstr "Akcepti"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1188
|
#: ../js/ui/telepathyClient.js:1192
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videa voko de %s"
|
msgstr "Videa voko 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:1191
|
#: ../js/ui/telepathyClient.js:1195
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Voko de %s"
|
msgstr "Voko de %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1201
|
#. translators: this is a button label (verb), not a noun
|
||||||
|
#: ../js/ui/telepathyClient.js:1206
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Repondo"
|
msgstr "Repondo"
|
||||||
|
|
||||||
@ -1344,109 +1387,109 @@ msgstr "Repondo"
|
|||||||
#. * 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:1237
|
#: ../js/ui/telepathyClient.js:1242
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s sendas %s al vi"
|
msgstr "%s sendas %s al vi"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1312
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
#, 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 volus permiso por vidi kiam vi estas konektita"
|
msgstr "%s volus permiso por vidi kiam vi estas konektita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1410
|
#: ../js/ui/telepathyClient.js:1415
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Reta eraro"
|
msgstr "Reta eraro"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1412
|
#: ../js/ui/telepathyClient.js:1417
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Aŭtentigo malsukcesis"
|
msgstr "Aŭtentigo malsukcesis"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1414
|
#: ../js/ui/telepathyClient.js:1419
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Ĉifrado-eraro"
|
msgstr "Ĉifrado-eraro"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1416
|
#: ../js/ui/telepathyClient.js:1421
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Atestilo ne donita"
|
msgstr "Atestilo ne donita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1418
|
#: ../js/ui/telepathyClient.js:1423
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Malfidita atestilo"
|
msgstr "Malfidita atestilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1420
|
#: ../js/ui/telepathyClient.js:1425
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Posttempa atestilo"
|
msgstr "Posttempa atestilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1422
|
#: ../js/ui/telepathyClient.js:1427
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Atestilo ne aktivigita"
|
msgstr "Atestilo ne aktivigita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1424
|
#: ../js/ui/telepathyClient.js:1429
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Atestilo-nomo de gastiga komputilo miskongruas"
|
msgstr "Atestilo-nomo de gastiga komputilo miskongruas"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1426
|
#: ../js/ui/telepathyClient.js:1431
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Atestilo-fingropremo miskongruas"
|
msgstr "Atestilo-fingropremo miskongruas"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1433
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Memsubskribita atestilo"
|
msgstr "Memsubskribita atestilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1430
|
#: ../js/ui/telepathyClient.js:1435
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Stato agordas kiam nekonektita."
|
msgstr "Stato agordas kiam nekonektita."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1432
|
#: ../js/ui/telepathyClient.js:1437
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Ĉifrado nehavebla"
|
msgstr "Ĉifrado nehavebla"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1434
|
#: ../js/ui/telepathyClient.js:1439
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Nevalida atestilo"
|
msgstr "Nevalida atestilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1436
|
#: ../js/ui/telepathyClient.js:1441
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Refuzinta konekto"
|
msgstr "Refuzinta konekto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1438
|
#: ../js/ui/telepathyClient.js:1443
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Ne povas establi konekton"
|
msgstr "Ne povas establi konekton"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1440
|
#: ../js/ui/telepathyClient.js:1445
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Konekto perdiĝis"
|
msgstr "Konekto perdiĝis"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1442
|
#: ../js/ui/telepathyClient.js:1447
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "Ĉi tio risurco jam konektata al servilo"
|
msgstr "Ĉi tio risurco jam konektata al servilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1444
|
#: ../js/ui/telepathyClient.js:1449
|
||||||
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 "Konekto anstataŭigis per nova konekto uzanta la saman risurcon"
|
msgstr "Konekto anstataŭigis per nova konekto uzanta la saman risurcon"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1446
|
#: ../js/ui/telepathyClient.js:1451
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "La konto jam ekzistas sur la servilo"
|
msgstr "La konto jam ekzistas sur la servilo"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1448
|
#: ../js/ui/telepathyClient.js:1453
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Servilo estas nun tro okupata por akcepti la konekton"
|
msgstr "Servilo estas nun tro okupata por akcepti la konekton"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1450
|
#: ../js/ui/telepathyClient.js:1455
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Atestilo senvalidigita"
|
msgstr "Atestilo senvalidigita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1452
|
#: ../js/ui/telepathyClient.js:1457
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Atestilo uzas malsekuran ĉifrigan algoritmon aŭ estas kriptografie malforta."
|
"Atestilo uzas malsekuran ĉifrigan algoritmon aŭ estas kriptografie malforta."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1454
|
#: ../js/ui/telepathyClient.js:1459
|
||||||
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"
|
||||||
@ -1456,20 +1499,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:1463
|
#: ../js/ui/telepathyClient.js:1468
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Malsukcesis konekton al %s"
|
msgstr "Malsukcesis konekton al %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1472
|
#: ../js/ui/telepathyClient.js:1477
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Rekonekti"
|
msgstr "Rekonekti"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1473
|
#: ../js/ui/telepathyClient.js:1478
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Redakti konton"
|
msgstr "Redakti konton"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1519
|
#: ../js/ui/telepathyClient.js:1524
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Nekonata kialo"
|
msgstr "Nekonata kialo"
|
||||||
|
|
||||||
@ -1485,39 +1528,39 @@ msgstr "Neokupita"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nedisponebla"
|
msgstr "Nedisponebla"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:512 ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:586
|
#: ../js/ui/userMenu.js:571 ../js/ui/userMenu.js:575 ../js/ui/userMenu.js:645
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Elŝalti..."
|
msgstr "Elŝalti..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:548
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Avizoj"
|
msgstr "Avizoj"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:556
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Retaj kontoj"
|
msgstr "Retaj kontoj"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:560
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Sistem-agordoj"
|
msgstr "Sistem-agordoj"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:567
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Ŝlosi ekranon"
|
msgstr "Ŝlosi ekranon"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:572
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Ŝanĝi uzanton"
|
msgstr "Ŝanĝi uzanton"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:577
|
#: ../js/ui/userMenu.js:636
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Elsaluti..."
|
msgstr "Elsaluti..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:605
|
#: ../js/ui/userMenu.js:664
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Vi babila stato agordos okupita"
|
msgstr "Vi babila stato agordos okupita"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:606
|
#: ../js/ui/userMenu.js:665
|
||||||
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."
|
||||||
@ -1529,11 +1572,11 @@ msgstr ""
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Tajpi por serĉi..."
|
msgstr "Tajpi por serĉi..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:244
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Serĉi"
|
msgstr "Serĉi"
|
||||||
|
|
||||||
@ -1564,15 +1607,15 @@ msgstr[1] "%u enigoj"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sistemsonoj"
|
msgstr "Sistemsonoj"
|
||||||
|
|
||||||
#: ../src/main.c:480
|
#: ../src/main.c:483
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Presi version"
|
msgstr "Presi version"
|
||||||
|
|
||||||
#: ../src/main.c:486
|
#: ../src/main.c:489
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Reĝimo uzata de GDM por la ensalutekrano"
|
msgstr "Reĝimo uzata de GDM por la ensalutekrano"
|
||||||
|
|
||||||
#: ../src/shell-app.c:581
|
#: ../src/shell-app.c:567
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Malsukcesis lanĉi '%s'"
|
msgstr "Malsukcesis lanĉi '%s'"
|
||||||
@ -1589,13 +1632,15 @@ msgstr "Defaŭlto"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "La dialogo de la aŭtentokontrolo malakceptis de la uzanto"
|
msgstr "La dialogo de la aŭtentokontrolo malakceptis de la uzanto"
|
||||||
|
|
||||||
#: ../src/shell-util.c:100
|
#. Translators: this is the same string as the one found in
|
||||||
msgid "Home Folder"
|
#. * nautilus
|
||||||
msgstr "Hejma dosierujo"
|
#: ../src/shell-util.c:89
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Hejmo"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:115
|
#: ../src/shell-util.c:98
|
||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Dosiersistemo"
|
msgstr "Dosiersistemo"
|
||||||
|
|
||||||
@ -1604,10 +1649,16 @@ msgstr "Dosiersistemo"
|
|||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
#. * directory called "some-directory" is in the trash.
|
#. * directory called "some-directory" is in the trash.
|
||||||
#.
|
#.
|
||||||
#: ../src/shell-util.c:311
|
#: ../src/shell-util.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Home Folder"
|
||||||
|
#~ msgstr "Hejma dosierujo"
|
||||||
|
|
||||||
|
#~ msgid "Show password"
|
||||||
|
#~ msgstr "Montri pasvorton"
|
||||||
|
|
||||||
#~ msgid "%s has finished starting"
|
#~ msgid "%s has finished starting"
|
||||||
#~ msgstr "Starto de %s finiĝis"
|
#~ msgstr "Starto de %s finiĝis"
|
||||||
|
283
po/fa.po
283
po/fa.po
@ -8,10 +8,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-10-04 20:49+0000\n"
|
"POT-Creation-Date: 2011-10-18 19:39+0000\n"
|
||||||
"PO-Revision-Date: 2011-10-15 16:02+0330\n"
|
"PO-Revision-Date: 2011-10-24 21:11+0330\n"
|
||||||
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
||||||
"Language-Team: Persian <>\n"
|
"Language-Team: Persian\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@ -130,47 +130,47 @@ msgstr "استفاده از کدام صفحهکلید"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "نشست..."
|
msgstr "نشست..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:804
|
||||||
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:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(یا انگشتتان را بکشید)"
|
msgstr "(یا انگشتتان را بکشید)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:848
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "فهرست نشده؟"
|
msgstr "فهرست نشده؟"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1004
|
#: ../js/gdm/loginDialog.js:1035
|
||||||
#: ../js/ui/endSessionDialog.js:426
|
#: ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477
|
#: ../js/ui/extensionSystem.js:477
|
||||||
#: ../js/ui/networkAgent.js:165
|
#: ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:171
|
#: ../js/ui/polkitAuthenticationAgent.js:173
|
||||||
#: ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "لغو"
|
msgstr "لغو"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1009
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "ورود"
|
msgstr "ورود"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1358
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "پنجرهی ورود به سیستم"
|
msgstr "پنجرهی ورود به سیستم"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116
|
#: ../js/gdm/powerMenu.js:116
|
||||||
#: ../js/ui/userMenu.js:514
|
#: ../js/ui/userMenu.js:554
|
||||||
#: ../js/ui/userMenu.js:516
|
#: ../js/ui/userMenu.js:556
|
||||||
#: ../js/ui/userMenu.js:585
|
#: ../js/ui/userMenu.js:625
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "تعلیق"
|
msgstr "تعلیق"
|
||||||
|
|
||||||
@ -396,38 +396,38 @@ msgstr "این هفته"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "هفته آینده"
|
msgstr "هفته آینده"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:59
|
#: ../js/ui/contactDisplay.js:65
|
||||||
#: ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223
|
#: ../js/ui/status/power.js:223
|
||||||
#: ../src/shell-app.c:355
|
#: ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "ناشناخته"
|
msgstr "ناشناخته"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:80
|
#: ../js/ui/contactDisplay.js:86
|
||||||
#: ../js/ui/userMenu.js:139
|
#: ../js/ui/userMenu.js:139
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "در دسترس"
|
msgstr "در دسترس"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:85
|
#: ../js/ui/contactDisplay.js:91
|
||||||
#: ../js/ui/userMenu.js:148
|
#: ../js/ui/userMenu.js:148
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "غائب"
|
msgstr "غائب"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:89
|
#: ../js/ui/contactDisplay.js:95
|
||||||
#: ../js/ui/userMenu.js:142
|
#: ../js/ui/userMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "مشغول"
|
msgstr "مشغول"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93
|
#: ../js/ui/contactDisplay.js:99
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "برونخط"
|
msgstr "برونخط"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:140
|
#: ../js/ui/contactDisplay.js:146
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTS"
|
msgstr "CONTACTS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172
|
#: ../js/ui/dash.js:174
|
||||||
#: ../js/ui/messageTray.js:1204
|
#: ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "حذف"
|
msgstr "حذف"
|
||||||
|
|
||||||
@ -561,139 +561,134 @@ msgstr "نصب"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:308
|
#: ../js/ui/keyboard.js:325
|
||||||
#| msgid "Retry"
|
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "سینی"
|
msgstr "سینی"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:530
|
#: ../js/ui/keyboard.js:547
|
||||||
#: ../js/ui/status/power.js:211
|
#: ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "صفحهکلید"
|
msgstr "صفحهکلید"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:646
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "هیچ افزونهای نصب نشده است"
|
msgstr "هیچ افزونهای نصب نشده است"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:691
|
#: ../js/ui/lookingGlass.js:692
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "به کار انداختن"
|
msgstr "به کار انداختن"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:693
|
#: ../js/ui/lookingGlass.js:694
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1093
|
#: ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "از کار انداختن"
|
msgstr "از کار انداختن"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:695
|
#: ../js/ui/lookingGlass.js:696
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "خطا"
|
msgstr "خطا"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:698
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "قدیمی"
|
msgstr "قدیمی"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:699
|
#: ../js/ui/lookingGlass.js:700
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "در حال بارگیری"
|
msgstr "در حال بارگیری"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:720
|
#: ../js/ui/lookingGlass.js:721
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "نمایش منبع"
|
msgstr "نمایش منبع"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:726
|
#: ../js/ui/lookingGlass.js:727
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "صفحهی وب"
|
msgstr "صفحهی وب"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "بازکردن"
|
msgstr "بازکردن"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "اطلاعات سیستم"
|
msgstr "اطلاعات سیستم"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgid "Show password"
|
|
||||||
msgstr "نمایش گذرواژه"
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:160
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "اتصال"
|
msgstr "اتصال"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:255
|
#: ../js/ui/networkAgent.js:238
|
||||||
#: ../js/ui/networkAgent.js:267
|
#: ../js/ui/networkAgent.js:250
|
||||||
#: ../js/ui/networkAgent.js:294
|
#: ../js/ui/networkAgent.js:277
|
||||||
#: ../js/ui/networkAgent.js:314
|
#: ../js/ui/networkAgent.js:297
|
||||||
#: ../js/ui/networkAgent.js:324
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "گذرواژه: "
|
msgstr "گذرواژه: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:260
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "کلید: "
|
msgstr "کلید: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:292
|
#: ../js/ui/networkAgent.js:275
|
||||||
#: ../js/ui/networkAgent.js:310
|
#: ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "نامکاربری: "
|
msgstr "نامکاربری: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:298
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "شناسه: "
|
msgstr "شناسه: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:300
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "گذرواژه کلید خصوصی: "
|
msgstr "گذرواژه کلید خصوصی: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "سرویس: "
|
msgstr "سرویس: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "تایید هویت برای شبکه بیسیم لازم است"
|
msgstr "تایید هویت برای شبکه بیسیم لازم است"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||||
msgstr "گذرواژه یا کلیدهای رمزنگاری برای دسترسی به شبکه «%s» لازم است."
|
msgstr "گذرواژه یا کلیدهای رمزنگاری برای دسترسی به شبکه «%s» لازم است."
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:346
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "تایید هویت 802.1X سیمی"
|
msgstr "تایید هویت 802.1X سیمی"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "نام شبکه: "
|
msgstr "نام شبکه: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:353
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "تایید هویت DSL"
|
msgstr "تایید هویت DSL"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:360
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "کد پین لازم است"
|
msgstr "کد پین لازم است"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:361
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "کد پین برای دستگاه پهنباند تلفنهمراه لازم است"
|
msgstr "کد پین برای دستگاه پهنباند تلفنهمراه لازم است"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:362
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "پین: "
|
msgstr "پین: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:368
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "گذرواژه شبکه پهنباند تلفن همراه"
|
msgstr "گذرواژه شبکه پهنباند تلفن همراه"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:369
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "برای اتصال به «%s» گذرواژه لازم است."
|
msgstr "برای اتصال به «%s» گذرواژه لازم است."
|
||||||
@ -749,15 +744,15 @@ msgstr "اتصال به..."
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "محلها و ابزارها"
|
msgstr "محلها و ابزارها"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "تایید هویت لازم است"
|
msgstr "تایید هویت لازم است"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "مدیر"
|
msgstr "مدیر"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "تایید هویت"
|
msgstr "تایید هویت"
|
||||||
|
|
||||||
@ -765,11 +760,11 @@ msgstr "تایید هویت"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:256
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "متاسفتم، تاثیری نداشت! مجددا تلاش کنید."
|
msgstr "متاسفتم، تاثیری نداشت! مجددا تلاش کنید."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:268
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "گذرواژه"
|
msgstr "گذرواژه"
|
||||||
|
|
||||||
@ -782,7 +777,7 @@ msgstr "گذرواژه"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "لطفا یک فرمان وارد کنید:"
|
msgstr "لطفا یک فرمان وارد کنید:"
|
||||||
|
|
||||||
@ -794,6 +789,23 @@ msgstr "درحال حستجو..."
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "نتیجهی منطبقی پیدا نشد."
|
msgstr "نتیجهی منطبقی پیدا نشد."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "رونوشت"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "چسباندن"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "نمایش متن"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
#| msgid "Large Text"
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "مخفیکردن متن"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "گذرواژهی نادرست، لطفا دوباره تلاش کنید"
|
msgstr "گذرواژهی نادرست، لطفا دوباره تلاش کنید"
|
||||||
@ -806,7 +818,6 @@ msgstr "بزرگنمایی"
|
|||||||
#. 'screen-reader-enabled');
|
#. 'screen-reader-enabled');
|
||||||
#. this.menu.addMenuItem(screenReader);
|
#. this.menu.addMenuItem(screenReader);
|
||||||
#: ../js/ui/status/accessibility.js:71
|
#: ../js/ui/status/accessibility.js:71
|
||||||
#| msgid "Keyboard"
|
|
||||||
msgid "Screen Keyboard"
|
msgid "Screen Keyboard"
|
||||||
msgstr "صفحهکلید مجازی"
|
msgstr "صفحهکلید مجازی"
|
||||||
|
|
||||||
@ -935,7 +946,7 @@ msgid "Grant this time only"
|
|||||||
msgstr "موافقت تنها در همین زمان"
|
msgstr "موافقت تنها در همین زمان"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:392
|
#: ../js/ui/status/bluetooth.js:392
|
||||||
#: ../js/ui/telepathyClient.js:1200
|
#: ../js/ui/telepathyClient.js:1204
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "رد کردن"
|
msgstr "رد کردن"
|
||||||
|
|
||||||
@ -1226,22 +1237,22 @@ msgstr "درخواست اشتراک"
|
|||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "خطا اتصال"
|
msgstr "خطا اتصال"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:737
|
#: ../js/ui/telepathyClient.js:741
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s بر خط است."
|
msgstr "%s بر خط است."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:742
|
#: ../js/ui/telepathyClient.js:746
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s برون خط است."
|
msgstr "%s برون خط است."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:745
|
#: ../js/ui/telepathyClient.js:749
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s غایب است."
|
msgstr "%s غایب است."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:748
|
#: ../js/ui/telepathyClient.js:752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s مشغول است."
|
msgstr "%s مشغول است."
|
||||||
@ -1249,35 +1260,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:982
|
#: ../js/ui/telepathyClient.js:986
|
||||||
#, 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>%OH:%OM</b> در <b>%A</b>"
|
msgstr "ارسال در <b>%OH:%OM</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:988
|
#: ../js/ui/telepathyClient.js:992
|
||||||
#, 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>%B %d</b>"
|
msgstr "ارسال در <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:993
|
#: ../js/ui/telepathyClient.js:997
|
||||||
#, 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>%B %d</b>, %Y"
|
msgstr "ارسال در <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:1035
|
#: ../js/ui/telepathyClient.js:1039
|
||||||
#, 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:1144
|
#: ../js/ui/telepathyClient.js:1148
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "دعوتنامه به %s"
|
msgstr "دعوتنامه به %s"
|
||||||
@ -1285,36 +1296,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:1152
|
#: ../js/ui/telepathyClient.js:1156
|
||||||
#, 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:1154
|
#: ../js/ui/telepathyClient.js:1158
|
||||||
#: ../js/ui/telepathyClient.js:1243
|
#: ../js/ui/telepathyClient.js:1248
|
||||||
#: ../js/ui/telepathyClient.js:1347
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "رد کردن"
|
msgstr "رد کردن"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1155
|
#: ../js/ui/telepathyClient.js:1159
|
||||||
#: ../js/ui/telepathyClient.js:1244
|
#: ../js/ui/telepathyClient.js:1249
|
||||||
#: ../js/ui/telepathyClient.js:1348
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
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:1188
|
#: ../js/ui/telepathyClient.js:1192
|
||||||
#, 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:1191
|
#: ../js/ui/telepathyClient.js:1195
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "تماس از طرف %s"
|
msgstr "تماس از طرف %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1201
|
#. translators: this is a button label (verb), not a noun
|
||||||
|
#: ../js/ui/telepathyClient.js:1206
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "پاسخگویی"
|
msgstr "پاسخگویی"
|
||||||
|
|
||||||
@ -1323,125 +1335,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:1237
|
#: ../js/ui/telepathyClient.js:1242
|
||||||
#, 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:1312
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
#, 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:1410
|
#: ../js/ui/telepathyClient.js:1415
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "خطا شبکه"
|
msgstr "خطا شبکه"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1412
|
#: ../js/ui/telepathyClient.js:1417
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "تایید هویت شکست خورد"
|
msgstr "تایید هویت شکست خورد"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1414
|
#: ../js/ui/telepathyClient.js:1419
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "خطا رمزنگاری"
|
msgstr "خطا رمزنگاری"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1416
|
#: ../js/ui/telepathyClient.js:1421
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "گواهینامه ارائه نشده"
|
msgstr "گواهینامه ارائه نشده"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1418
|
#: ../js/ui/telepathyClient.js:1423
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "گواهینامه نامعتبر است"
|
msgstr "گواهینامه نامعتبر است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1420
|
#: ../js/ui/telepathyClient.js:1425
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "گواهینامه منقضی شده"
|
msgstr "گواهینامه منقضی شده"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1422
|
#: ../js/ui/telepathyClient.js:1427
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "گواهینامه فعال نشده"
|
msgstr "گواهینامه فعال نشده"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1424
|
#: ../js/ui/telepathyClient.js:1429
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "نام کارگزار گواهینامه نامنطبق است"
|
msgstr "نام کارگزار گواهینامه نامنطبق است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1426
|
#: ../js/ui/telepathyClient.js:1431
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "اثرانگشت گواهینامه نامنطبق است"
|
msgstr "اثرانگشت گواهینامه نامنطبق است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1428
|
#: ../js/ui/telepathyClient.js:1433
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "گواهینامه خود-امضا شده"
|
msgstr "گواهینامه خود-امضا شده"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1430
|
#: ../js/ui/telepathyClient.js:1435
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "وضعیت بر روی برون خط تنظیم شده"
|
msgstr "وضعیت بر روی برون خط تنظیم شده"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1432
|
#: ../js/ui/telepathyClient.js:1437
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "رمزنگاری موجود نیست"
|
msgstr "رمزنگاری موجود نیست"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1434
|
#: ../js/ui/telepathyClient.js:1439
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "گواهینامه نامعتبر است"
|
msgstr "گواهینامه نامعتبر است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1436
|
#: ../js/ui/telepathyClient.js:1441
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "اتصال رد شده است"
|
msgstr "اتصال رد شده است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1438
|
#: ../js/ui/telepathyClient.js:1443
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "اتصال نمیتواند برقرار شود"
|
msgstr "اتصال نمیتواند برقرار شود"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1440
|
#: ../js/ui/telepathyClient.js:1445
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "اتصال از دست رفته است"
|
msgstr "اتصال از دست رفته است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1442
|
#: ../js/ui/telepathyClient.js:1447
|
||||||
msgid "This resource is already connected to the server"
|
msgid "This resource is already connected to the server"
|
||||||
msgstr "این منبع از قبل به کارگزار متصل شده است"
|
msgstr "این منبع از قبل به کارگزار متصل شده است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1444
|
#: ../js/ui/telepathyClient.js:1449
|
||||||
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:1446
|
#: ../js/ui/telepathyClient.js:1451
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
|
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1448
|
#: ../js/ui/telepathyClient.js:1453
|
||||||
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:1450
|
#: ../js/ui/telepathyClient.js:1455
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "گواهینامه لغو شده است"
|
msgstr "گواهینامه لغو شده است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1452
|
#: ../js/ui/telepathyClient.js:1457
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography ضعیف است"
|
msgstr "گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography ضعیف است"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1454
|
#: ../js/ui/telepathyClient.js:1459
|
||||||
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 "اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد"
|
msgstr "اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد"
|
||||||
|
|
||||||
#. 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:1463
|
#: ../js/ui/telepathyClient.js:1468
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "اتصال به %s شکست خورد"
|
msgstr "اتصال به %s شکست خورد"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1472
|
#: ../js/ui/telepathyClient.js:1477
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "اتصال مجدد"
|
msgstr "اتصال مجدد"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1473
|
#: ../js/ui/telepathyClient.js:1478
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "ویرایش حساب"
|
msgstr "ویرایش حساب"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1519
|
#: ../js/ui/telepathyClient.js:1524
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "دلیل ناشناخته"
|
msgstr "دلیل ناشناخته"
|
||||||
|
|
||||||
@ -1457,41 +1469,41 @@ msgstr "بیکار"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "خارج از دسترس"
|
msgstr "خارج از دسترس"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:512
|
#: ../js/ui/userMenu.js:552
|
||||||
#: ../js/ui/userMenu.js:516
|
#: ../js/ui/userMenu.js:556
|
||||||
#: ../js/ui/userMenu.js:586
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "خاموش کردن..."
|
msgstr "خاموش کردن..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:548
|
#: ../js/ui/userMenu.js:588
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "اعلانها"
|
msgstr "اعلانها"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:556
|
#: ../js/ui/userMenu.js:596
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "حسابهای برخط"
|
msgstr "حسابهای برخط"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:560
|
#: ../js/ui/userMenu.js:600
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "تنظیمات سیستم"
|
msgstr "تنظیمات سیستم"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:567
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "قفل کردن صفحه"
|
msgstr "قفل کردن صفحه"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:572
|
#: ../js/ui/userMenu.js:612
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "تعویض کاربر"
|
msgstr "تعویض کاربر"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:577
|
#: ../js/ui/userMenu.js:617
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "خروج از سیستم..."
|
msgstr "خروج از سیستم..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:605
|
#: ../js/ui/userMenu.js:645
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "وضعیت گپ شما «مشغول» تنظیم میشود"
|
msgstr "وضعیت گپ شما «مشغول» تنظیم میشود"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:606
|
#: ../js/ui/userMenu.js:646
|
||||||
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 "هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای تنظیم شده است که به دیگران نشان دهد ممکن است شما پیامهایشان را نبینید."
|
||||||
|
|
||||||
@ -1499,11 +1511,11 @@ msgstr "هماکنون اعلانها، از جمله پیامهای گ
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "برای جستجو تایپ کنید..."
|
msgstr "برای جستجو تایپ کنید..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140
|
#: ../js/ui/viewSelector.js:142
|
||||||
#: ../src/shell-util.c:261
|
#: ../src/shell-util.c:261
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "جستجو"
|
msgstr "جستجو"
|
||||||
@ -1543,7 +1555,7 @@ msgstr "چاپ نسخه"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
|
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
|
||||||
|
|
||||||
#: ../src/shell-app.c:581
|
#: ../src/shell-app.c:579
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "راهاندازی «%s» شکست خورد"
|
msgstr "راهاندازی «%s» شکست خورد"
|
||||||
@ -1580,6 +1592,9 @@ msgstr "سیستم پروندهها"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Show password"
|
||||||
|
#~ msgstr "نمایش گذرواژه"
|
||||||
|
|
||||||
#~ msgid "If true, display onscreen keyboard."
|
#~ msgid "If true, display onscreen keyboard."
|
||||||
#~ msgstr "در صورت تنظیم بر روی «درست»، صفحهکلید مجازی نمایش داده میشود."
|
#~ msgstr "در صورت تنظیم بر روی «درست»، صفحهکلید مجازی نمایش داده میشود."
|
||||||
|
|
||||||
|
298
po/fi.po
298
po/fi.po
@ -19,18 +19,20 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"POT-Creation-Date: 2011-09-26 15:40+0300\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"PO-Revision-Date: 2011-09-26 15:39+0300\n"
|
"POT-Creation-Date: 2011-10-18 19:39+0000\n"
|
||||||
"Last-Translator: Tommi Vainikainen <thv@iki.fi>\n"
|
"PO-Revision-Date: 2011-11-15 22:19+0200\n"
|
||||||
|
"Last-Translator: Ville-Pekka Vainio <vpvainio@iki.fi>\n"
|
||||||
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
|
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Virtaal 0.6.1\n"
|
"X-Generator: Virtaal 0.7.1-rc1\n"
|
||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
@ -40,6 +42,7 @@ msgstr "Gnomen ikkunanhallinta"
|
|||||||
msgid "Window management and application launching"
|
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
|
||||||
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."
|
||||||
@ -47,16 +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"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ota käyttöön sisäiset kehittäjiä ja testaajia hyödyttävät työkalut Alt-F2:sta"
|
"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
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Tiedostopääte ruutunauhoitusten tallentamiseen"
|
msgstr "Tiedostopääte ruutunauhoitusten tallentamiseen"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Ruutunauhoitusten kuvataajuus."
|
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. disabled-extensions overrides this setting for extensions "
|
"should be loaded. disabled-extensions overrides this setting for extensions "
|
||||||
@ -67,24 +74,31 @@ msgstr ""
|
|||||||
"kytketyt laajennukset) ylittää tämän asetuksen mikäli laajennus esiintyy "
|
"kytketyt laajennukset) ylittää tämän asetuksen mikäli laajennus esiintyy "
|
||||||
"molemmissa luetteloissa."
|
"molemmissa luetteloissa."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
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: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:8
|
||||||
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:9
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Jos tosi, näytä sekunnit ajassa."
|
msgstr "Jos tosi, näytä sekunnit ajassa."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
|
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille"
|
msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille"
|
||||||
|
|
||||||
|
#: ../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 "
|
||||||
@ -110,20 +124,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:14
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Näytä päivämäärä kellossa"
|
msgstr "Näytä päivämäärä kellossa"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Näytä viikonpäivä kalenterissa"
|
msgstr "Näytä viikonpäivä kalenterissa"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Näytä aika sekuntien kera"
|
msgstr "Näytä aika sekuntien kera"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
msgid ""
|
msgid ""
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
"favorites area."
|
"favorites area."
|
||||||
msgstr "Näitä tunnisteita vastaavat sovellukset näytetään suosikkien alueella."
|
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 "
|
||||||
@ -133,6 +152,7 @@ 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."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -140,9 +160,11 @@ msgstr ""
|
|||||||
"Nauhoituksesta tuloksena saatavan ruutunauhoituksen kuvataajuus kun käytössä "
|
"Nauhoituksesta tuloksena saatavan ruutunauhoituksen kuvataajuus kun käytössä "
|
||||||
"on GNOMEn ikkunanhallinnan nauhoitin, kuvaa per sekunti."
|
"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"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "Gstreamer-liukuhihna jolla ruutunauhoitukset pakataan"
|
msgstr "Gstreamer-liukuhihna jolla ruutunauhoitukset pakataan"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"The shell normally monitors active applications in order to present the most "
|
"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 "
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
@ -155,52 +177,72 @@ msgstr ""
|
|||||||
"yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin "
|
"yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin "
|
||||||
"tallennettuja tietoja."
|
"tallennettuja tietoja."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Käytettävän näppäimistön tyyppi."
|
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"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "Käyttöön otettavien laajennosten UUID:t"
|
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"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr "Kerätäänkö sovellusten käytöstä tilastoja"
|
msgstr "Kerätäänkö sovellusten käytöstä tilastoja"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Mitä näppäimistöä käytetään"
|
msgstr "Mitä näppäimistöä käytetään"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "käytöstä poistetut OpenSearch-tarjoajat"
|
msgstr "käytöstä poistetut OpenSearch-tarjoajat"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Istunto…"
|
msgstr "Istunto…"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:804
|
||||||
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:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(tai pyyhkäise sormella)"
|
msgstr "(tai pyyhkäise sormella)"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ei luettelossa?"
|
msgstr "Ei luettelossa?"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
|
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Peru"
|
msgstr "Peru"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Kirjaudu sisään"
|
msgstr "Kirjaudu sisään"
|
||||||
|
|
||||||
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Kirjautumisikkuna"
|
msgstr "Kirjautumisikkuna"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:554
|
||||||
|
#: ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:625
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Valmiustila"
|
msgstr "Valmiustila"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
|
||||||
|
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Käynnistä uudelleen"
|
msgstr "Käynnistä uudelleen"
|
||||||
|
|
||||||
|
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
|
||||||
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Sammuta"
|
msgstr "Sammuta"
|
||||||
|
|
||||||
@ -254,13 +296,16 @@ msgstr "%s on lisätty suosikkeihin."
|
|||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s on poistettu suosikeista."
|
msgstr "%s on poistettu suosikeista."
|
||||||
|
|
||||||
|
#: ../js/ui/autorunManager.js:280
|
||||||
msgid "Removable Devices"
|
msgid "Removable Devices"
|
||||||
msgstr "Irroitettavat laitteet"
|
msgstr "Irroitettavat laitteet"
|
||||||
|
|
||||||
|
#: ../js/ui/autorunManager.js:590
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Avaa käyttäen %s"
|
msgstr "Avaa käyttäen sovellusta %s"
|
||||||
|
|
||||||
|
#: ../js/ui/autorunManager.js:616
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Poista asemasta"
|
msgstr "Poista asemasta"
|
||||||
|
|
||||||
@ -412,28 +457,32 @@ msgstr "Tällä viikolla"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Ensi viikolla"
|
msgstr "Ensi viikolla"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:355
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Tuntematon"
|
msgstr "Tuntematon"
|
||||||
|
|
||||||
|
#: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Tavoitettavissa"
|
msgstr "Tavoitettavissa"
|
||||||
|
|
||||||
|
#: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Poissa"
|
msgstr "Poissa"
|
||||||
|
|
||||||
|
#: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Kiireinen"
|
msgstr "Kiireinen"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:93
|
#: ../js/ui/contactDisplay.js:99
|
||||||
msgid "Offline"
|
msgid "Offline"
|
||||||
msgstr "Ei linjoilla"
|
msgstr "Ei linjoilla"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:140
|
#: ../js/ui/contactDisplay.js:146
|
||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "YHTEYSTIEDOT"
|
msgstr "YHTEYSTIEDOT"
|
||||||
|
|
||||||
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Poista"
|
msgstr "Poista"
|
||||||
|
|
||||||
@ -583,108 +632,131 @@ msgstr "Asenna"
|
|||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Lataa ja asenna ”%s” sivustolta extensions.gnome.org?"
|
msgstr "Lataa ja asenna ”%s” sivustolta extensions.gnome.org?"
|
||||||
|
|
||||||
|
#: ../js/ui/keyboard.js:325
|
||||||
|
msgid "tray"
|
||||||
|
msgstr "ilmoitusalue"
|
||||||
|
|
||||||
|
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Näppäimistö"
|
msgstr "Näppäimistö"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:646
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Laajennuksia ei asennettu"
|
msgstr "Laajennuksia ei asennettu"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:691
|
#: ../js/ui/lookingGlass.js:692
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Käytössä"
|
msgstr "Käytössä"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:694 ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Ei käytössä"
|
msgstr "Ei käytössä"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:695
|
#: ../js/ui/lookingGlass.js:696
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Virhe"
|
msgstr "Virhe"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:698
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Ei ajan tasalla"
|
msgstr "Ei ajan tasalla"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:699
|
#: ../js/ui/lookingGlass.js:700
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Noudetaan"
|
msgstr "Noudetaan"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:724
|
#: ../js/ui/lookingGlass.js:721
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Näytä lähde"
|
msgstr "Näytä lähde"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:730
|
#: ../js/ui/lookingGlass.js:727
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "WWW-sivu"
|
msgstr "WWW-sivu"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Avaa"
|
msgstr "Avaa"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Järjestelmän tiedot"
|
msgstr "Järjestelmän tiedot"
|
||||||
|
|
||||||
msgid "Show password"
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgstr "Näytä salasana"
|
|
||||||
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Yhdistä"
|
msgstr "Yhdistä"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
|
#: ../js/ui/networkAgent.js:238 ../js/ui/networkAgent.js:250
|
||||||
|
#: ../js/ui/networkAgent.js:277 ../js/ui/networkAgent.js:297
|
||||||
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Salasana: "
|
msgstr "Salasana: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Avain: "
|
msgstr "Avain: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
|
#: ../js/ui/networkAgent.js:275 ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Käyttäjänimi: "
|
msgstr "Käyttäjänimi: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Henkilöllisyys: "
|
msgstr "Henkilöllisyys: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Salaisen avaimen salasana: "
|
msgstr "Salaisen avaimen salasana: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Palvelu: "
|
msgstr "Palvelu: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Langaton verkko vaatii tunnistautumisen"
|
msgstr "Langaton verkko vaatii tunnistautumisen"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 "Langaton verkko %s vaatii salasanan tai salausavaimia."
|
msgstr "Langaton verkko %s vaatii salasanan tai salausavaimia."
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
|
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Verkon nimi: "
|
msgstr "Verkon nimi: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL-tunnistautuminen"
|
msgstr "DSL-tunnistautuminen"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "PIN-koodi vaaditaan"
|
msgstr "PIN-koodi vaaditaan"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "Mobiililaajakaista vaatii PIN-koodin"
|
msgstr "Mobiililaajakaista vaatii PIN-koodin"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Mobiililaajakaistan verkkosalasana"
|
msgstr "Mobiililaajakaistan verkkosalasana"
|
||||||
|
|
||||||
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "Salasana vaaditaan kohteeseen %s yhdistämiseksi."
|
msgstr "Salasana vaaditaan kohteeseen %s yhdistämiseksi."
|
||||||
@ -708,15 +780,18 @@ msgid "Dash"
|
|||||||
msgstr "Pikavalikko"
|
msgstr "Pikavalikko"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
|
#: ../js/ui/panel.js:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Lopeta %s"
|
msgstr "Lopeta %s"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
|
#: ../js/ui/panel.js:575
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Toiminnot"
|
msgstr "Toiminnot"
|
||||||
|
|
||||||
|
#: ../js/ui/panel.js:967
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Yläpalkki"
|
msgstr "Yläpalkki"
|
||||||
|
|
||||||
@ -737,14 +812,15 @@ msgstr "Yhdistä…"
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "SIJAINNIT JA LAITTEET"
|
msgstr "SIJAINNIT JA LAITTEET"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Tunnistautuminen vaaditaan"
|
msgstr "Tunnistautuminen vaaditaan"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Ylläpitäjä"
|
msgstr "Ylläpitäjä"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Tunnistaudu"
|
msgstr "Tunnistaudu"
|
||||||
|
|
||||||
@ -752,9 +828,11 @@ msgstr "Tunnistaudu"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Tunnistautuminen epäonnistui. Yritä uudelleen."
|
msgstr "Tunnistautuminen epäonnistui. Yritä uudelleen."
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Salasana:"
|
msgstr "Salasana:"
|
||||||
|
|
||||||
@ -763,10 +841,11 @@ msgstr "Salasana:"
|
|||||||
#. "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:731
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Syötä komento:"
|
msgstr "Syötä komento:"
|
||||||
|
|
||||||
@ -778,6 +857,22 @@ msgstr "Haetaan…"
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Ei tuloksia."
|
msgstr "Ei tuloksia."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Kopioi"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "Liitä"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "Näytä teksti"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "Piilota teksti"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Väärä salasana, yritä uudelleen"
|
msgstr "Väärä salasana, yritä uudelleen"
|
||||||
@ -789,6 +884,7 @@ msgstr "Lähennys"
|
|||||||
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
#. 'screen-reader-enabled');
|
#. 'screen-reader-enabled');
|
||||||
#. this.menu.addMenuItem(screenReader);
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#: ../js/ui/status/accessibility.js:71
|
||||||
msgid "Screen Keyboard"
|
msgid "Screen Keyboard"
|
||||||
msgstr "Näyttönäppäimistö"
|
msgstr "Näyttönäppäimistö"
|
||||||
|
|
||||||
@ -910,7 +1006,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:392 ../js/ui/telepathyClient.js:1196
|
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Hylkää"
|
msgstr "Hylkää"
|
||||||
|
|
||||||
@ -950,9 +1046,11 @@ msgstr "Kirjoita laitteella mainittu PIN-koodi."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: ../js/ui/status/keyboard.js:73
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Näytä näppäimistön asettelu"
|
msgstr "Näytä näppäimistön asettelu"
|
||||||
|
|
||||||
|
#: ../js/ui/status/keyboard.js:78
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "Kielen ja alueen asetukset"
|
msgstr "Kielen ja alueen asetukset"
|
||||||
|
|
||||||
@ -997,11 +1095,13 @@ msgstr "ei käytettävissä"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "yhteys katkesi"
|
msgstr "yhteys katkesi"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Lisää…"
|
msgstr "Lisää…"
|
||||||
|
|
||||||
#. 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:611 ../js/ui/status/network.js:1458
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Yhdistetty (yksityinen)"
|
msgstr "Yhdistetty (yksityinen)"
|
||||||
|
|
||||||
@ -1018,6 +1118,7 @@ msgid "Auto dial-up"
|
|||||||
msgstr "Automaattinen, puhelinverkko"
|
msgstr "Automaattinen, puhelinverkko"
|
||||||
|
|
||||||
#. 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:1470
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Automaattinen: %s"
|
msgstr "Automaattinen: %s"
|
||||||
@ -1026,36 +1127,47 @@ msgstr "Automaattinen: %s"
|
|||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Automaattinen: Bluetooth"
|
msgstr "Automaattinen: Bluetooth"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1472
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Automaattinen: langaton"
|
msgstr "Automaattinen: langaton"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1566
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Ota verkko käyttöön"
|
msgstr "Ota verkko käyttöön"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1578
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Kiinteä"
|
msgstr "Kiinteä"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1589
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Langaton"
|
msgstr "Langaton"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1599
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Mobiililaajakaista"
|
msgstr "Mobiililaajakaista"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1609
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "VPN-yhteydet"
|
msgstr "VPN-yhteydet"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1620
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Verkkoasetukset"
|
msgstr "Verkkoasetukset"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1757
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Yhteys epäonnistui"
|
msgstr "Yhteys epäonnistui"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1758
|
||||||
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:2008
|
||||||
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:2133
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Verkon hallinta"
|
msgstr "Verkon hallinta"
|
||||||
|
|
||||||
@ -1163,39 +1275,39 @@ msgid "Invitation"
|
|||||||
msgstr "Kutsu"
|
msgstr "Kutsu"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:325
|
#: ../js/ui/telepathyClient.js:327
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Soita"
|
msgstr "Soita"
|
||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:353
|
#: ../js/ui/telepathyClient.js:357
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Tiedostonsiirto"
|
msgstr "Tiedostonsiirto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:434
|
#: ../js/ui/telepathyClient.js:438
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "Tilauspyyntö"
|
msgstr "Tilauspyyntö"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:470
|
#: ../js/ui/telepathyClient.js:474
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "Yhteysvirhe"
|
msgstr "Yhteysvirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:733
|
#: ../js/ui/telepathyClient.js:741
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s on linjoilla."
|
msgstr "%s on linjoilla."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:738
|
#: ../js/ui/telepathyClient.js:746
|
||||||
#, 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:741
|
#: ../js/ui/telepathyClient.js:749
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s on poissa."
|
msgstr "%s on poissa."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:744
|
#: ../js/ui/telepathyClient.js:752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s on kiireinen."
|
msgstr "%s on kiireinen."
|
||||||
@ -1203,35 +1315,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:978
|
#: ../js/ui/telepathyClient.js:986
|
||||||
#, 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:984
|
#: ../js/ui/telepathyClient.js:992
|
||||||
#, 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:989
|
#: ../js/ui/telepathyClient.js:997
|
||||||
#, 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:1031
|
#: ../js/ui/telepathyClient.js:1039
|
||||||
#, 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:1140
|
#: ../js/ui/telepathyClient.js:1148
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Kutsu huoneeseen %s"
|
msgstr "Kutsu huoneeseen %s"
|
||||||
@ -1239,34 +1351,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:1148
|
#: ../js/ui/telepathyClient.js:1156
|
||||||
#, 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:1150 ../js/ui/telepathyClient.js:1239
|
#: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Kieltäydy"
|
msgstr "Kieltäydy"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1151 ../js/ui/telepathyClient.js:1240
|
#: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249
|
||||||
#: ../js/ui/telepathyClient.js:1344
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
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:1184
|
#: ../js/ui/telepathyClient.js:1192
|
||||||
#, 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:1187
|
#: ../js/ui/telepathyClient.js:1195
|
||||||
#, 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"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1197
|
#. translators: this is a button label (verb), not a noun
|
||||||
|
#: ../js/ui/telepathyClient.js:1206
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Vastaa"
|
msgstr "Vastaa"
|
||||||
|
|
||||||
@ -1275,108 +1388,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:1233
|
#: ../js/ui/telepathyClient.js:1242
|
||||||
#, 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:1308
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
#, 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:1406
|
#: ../js/ui/telepathyClient.js:1415
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Verkkovirhe"
|
msgstr "Verkkovirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1408
|
#: ../js/ui/telepathyClient.js:1417
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Tunnistautuminen epäonnistui"
|
msgstr "Tunnistautuminen epäonnistui"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1410
|
#: ../js/ui/telepathyClient.js:1419
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Salausvirhe"
|
msgstr "Salausvirhe"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1412
|
#: ../js/ui/telepathyClient.js:1421
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Varmennetta ei annettu"
|
msgstr "Varmennetta ei annettu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1414
|
#: ../js/ui/telepathyClient.js:1423
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Varmenteeseen ei luoteta"
|
msgstr "Varmenteeseen ei luoteta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1416
|
#: ../js/ui/telepathyClient.js:1425
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Varmenne on vanhentunut"
|
msgstr "Varmenne on vanhentunut"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1418
|
#: ../js/ui/telepathyClient.js:1427
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Varmennetta ei ole aktivoitu"
|
msgstr "Varmennetta ei ole aktivoitu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1420
|
#: ../js/ui/telepathyClient.js:1429
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Varmenteen konenimiristiriita"
|
msgstr "Varmenteen konenimiristiriita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1422
|
#: ../js/ui/telepathyClient.js:1431
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Varmenteen sormenjälkiristiriita"
|
msgstr "Varmenteen sormenjälkiristiriita"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1424
|
#: ../js/ui/telepathyClient.js:1433
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Varmenne on itseallekirjoitettu"
|
msgstr "Varmenne on itseallekirjoitettu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1426
|
#: ../js/ui/telepathyClient.js:1435
|
||||||
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:1428
|
#: ../js/ui/telepathyClient.js:1437
|
||||||
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:1430
|
#: ../js/ui/telepathyClient.js:1439
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Varmenne ei kelpaa"
|
msgstr "Varmenne ei kelpaa"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1432
|
#: ../js/ui/telepathyClient.js:1441
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Yhteys on evätty"
|
msgstr "Yhteys on evätty"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1434
|
#: ../js/ui/telepathyClient.js:1443
|
||||||
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:1436
|
#: ../js/ui/telepathyClient.js:1445
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Yhteys on katkennut"
|
msgstr "Yhteys on katkennut"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1438
|
#: ../js/ui/telepathyClient.js:1447
|
||||||
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:1440
|
#: ../js/ui/telepathyClient.js:1449
|
||||||
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:1442
|
#: ../js/ui/telepathyClient.js:1451
|
||||||
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:1444
|
#: ../js/ui/telepathyClient.js:1453
|
||||||
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:1446
|
#: ../js/ui/telepathyClient.js:1455
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Varmenne on kumottu"
|
msgstr "Varmenne on kumottu"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1448
|
#: ../js/ui/telepathyClient.js:1457
|
||||||
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:1450
|
#: ../js/ui/telepathyClient.js:1459
|
||||||
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"
|
||||||
@ -1385,56 +1498,68 @@ 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:1459
|
#: ../js/ui/telepathyClient.js:1468
|
||||||
#, 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:1468
|
#: ../js/ui/telepathyClient.js:1477
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Yhdistä uudelleen"
|
msgstr "Yhdistä uudelleen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1469
|
#: ../js/ui/telepathyClient.js:1478
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Muokkaa tiliä"
|
msgstr "Muokkaa tiliä"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1515
|
#: ../js/ui/telepathyClient.js:1524
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Tuntematon syy"
|
msgstr "Tuntematon syy"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:145
|
||||||
msgid "Hidden"
|
msgid "Hidden"
|
||||||
msgstr "Piilotettu"
|
msgstr "Piilotettu"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:151
|
||||||
msgid "Idle"
|
msgid "Idle"
|
||||||
msgstr "Jouten"
|
msgstr "Jouten"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:154
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Ei tavoitettavissa"
|
msgstr "Ei tavoitettavissa"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:552 ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:626
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Sammuta…"
|
msgstr "Sammuta…"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:588
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Ilmoitukset"
|
msgstr "Ilmoitukset"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:596
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Verkkotilit"
|
msgstr "Verkkotilit"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:600
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Järjestelmän asetukset"
|
msgstr "Järjestelmän asetukset"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lukitse näyttö"
|
msgstr "Lukitse näyttö"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:612
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Vaihda käyttäjää"
|
msgstr "Vaihda käyttäjää"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:617
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Kirjaudu ulos…"
|
msgstr "Kirjaudu ulos…"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:645
|
||||||
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:646
|
||||||
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."
|
||||||
@ -1447,20 +1572,15 @@ msgstr ""
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Kirjoita hakeaksesi…"
|
msgstr "Kirjoita hakeaksesi…"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:261
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Haku"
|
msgstr "Haku"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:39
|
#: ../js/ui/windowAttentionHandler.js:35
|
||||||
#, c-format
|
|
||||||
msgid "%s has finished starting"
|
|
||||||
msgstr "%s on käynnistynyt"
|
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:41
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "%s on valmis"
|
msgstr "%s on valmis"
|
||||||
@ -1495,7 +1615,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:581
|
#: ../src/shell-app.c:579
|
||||||
#, 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"
|
||||||
@ -1532,6 +1652,12 @@ msgstr "Tiedostojärjestelmä"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Show password"
|
||||||
|
#~ msgstr "Näytä salasana"
|
||||||
|
|
||||||
|
#~ msgid "%s has finished starting"
|
||||||
|
#~ msgstr "%s on käynnistynyt"
|
||||||
|
|
||||||
#~ msgid "Connectivity lost"
|
#~ msgid "Connectivity lost"
|
||||||
#~ msgstr "Yhteys katkesi"
|
#~ msgstr "Yhteys katkesi"
|
||||||
|
|
||||||
|
103
po/ja.po
103
po/ja.po
@ -5,20 +5,21 @@
|
|||||||
# Kiyotaka NISHIBORI <ml.nishibori.kiyotaka@gmail.com>, 2011.
|
# Kiyotaka NISHIBORI <ml.nishibori.kiyotaka@gmail.com>, 2011.
|
||||||
# Jiro Matsuzawa <jmatsuzawa@src.gnome.org>, 2011.
|
# Jiro Matsuzawa <jmatsuzawa@src.gnome.org>, 2011.
|
||||||
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2011.
|
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2011.
|
||||||
|
# Hideki Yamane <henrich@debian.org>, 2011.
|
||||||
#
|
#
|
||||||
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-10-17 14:02+0000\n"
|
"POT-Creation-Date: 2011-11-08 00:01+0000\n"
|
||||||
"PO-Revision-Date: 2011-10-17 23:22+0900\n"
|
"PO-Revision-Date: 2011-11-03 10:22+0900\n"
|
||||||
"Last-Translator: Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
|
"Last-Translator: Hideki Yamane <henrich@debian.org>\n"
|
||||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||||
"Language: ja\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: ja\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
|
|
||||||
@ -140,9 +141,7 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
msgstr ""
|
msgstr "GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒あたりのフレーム数です。"
|
||||||
"GNOME Shell のスクリーンキャスト・レコーダーで録画するスクリーンキャストの 1"
|
|
||||||
"秒あたりのフレーム数です。"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
@ -179,42 +178,42 @@ msgstr "使いたいキーボードの種類"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "OpenSearch プロバイダーを無効にする"
|
msgstr "OpenSearch プロバイダーを無効にする"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "セッション..."
|
msgstr "セッション..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:788
|
#: ../js/gdm/loginDialog.js:804
|
||||||
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:833
|
#: ../js/gdm/loginDialog.js:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(あるいは指でスワイプする)"
|
msgstr "(あるいは指でスワイプする)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:851
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "アカウントが見つかりませんか?"
|
msgstr "アカウントが見つかりませんか?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035 ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
|
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "キャンセル"
|
msgstr "キャンセル"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1024
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "サインイン"
|
msgstr "サインイン"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1373
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "ログインウィンドウ"
|
msgstr "ログインウィンドウ"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
|
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:554
|
||||||
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:625
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "サスペンド"
|
msgstr "サスペンド"
|
||||||
|
|
||||||
@ -437,7 +436,7 @@ msgstr "今週"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "来週"
|
msgstr "来週"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:459
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
#: ../js/ui/status/power.js:223 ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "不明なデバイス"
|
msgstr "不明なデバイス"
|
||||||
@ -462,7 +461,7 @@ msgstr "オフライン"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "連絡先"
|
msgstr "連絡先"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "削除"
|
msgstr "削除"
|
||||||
|
|
||||||
@ -593,15 +592,16 @@ msgid "Install"
|
|||||||
msgstr "インストール"
|
msgstr "インストール"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:485
|
#: ../js/ui/extensionSystem.js:485
|
||||||
|
#: ../js/ui/extensionSystem.js:527
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "extensions.gnome.org から '%s' をダウンロードし、インストールしますか?"
|
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:309
|
#: ../js/ui/keyboard.js:325
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "トレイ"
|
msgstr "トレイ"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:531 ../js/ui/status/power.js:211
|
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "キーボード"
|
msgstr "キーボード"
|
||||||
|
|
||||||
@ -639,11 +639,11 @@ msgstr "ソースの表示"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "ウェブページ"
|
msgstr "ウェブページ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "開く"
|
msgstr "開く"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "システム情報"
|
msgstr "システム情報"
|
||||||
|
|
||||||
@ -689,8 +689,8 @@ msgstr "無線ネットワークでは認証が要求されます"
|
|||||||
#: ../js/ui/networkAgent.js:325
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, 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 ""
|
||||||
"無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要"
|
"無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要"
|
||||||
"です。"
|
"です。"
|
||||||
@ -785,7 +785,7 @@ msgstr "認証が要求されました"
|
|||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:107
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "アドミニストレーター"
|
msgstr "管理者"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:177
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
@ -824,6 +824,22 @@ msgstr "検索しています..."
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "一致するものがありません。"
|
msgstr "一致するものがありません。"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "コピー"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "貼り付け"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "文字を表示"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "文字を非表示"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "パスワードが間違っています、再度試してください"
|
msgstr "パスワードが間違っています、再度試してください"
|
||||||
@ -1023,7 +1039,7 @@ 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:495
|
#: ../js/ui/status/network.js:495
|
||||||
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
|
||||||
@ -1176,7 +1192,7 @@ msgstr "バッテリー"
|
|||||||
|
|
||||||
#: ../js/ui/status/power.js:205
|
#: ../js/ui/status/power.js:205
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "無停電電源装置"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:207
|
#: ../js/ui/status/power.js:207
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
@ -1317,7 +1333,7 @@ msgstr "受け入れる"
|
|||||||
#: ../js/ui/telepathyClient.js:1192
|
#: ../js/ui/telepathyClient.js:1192
|
||||||
#, 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:1195
|
#: ../js/ui/telepathyClient.js:1195
|
||||||
@ -1441,9 +1457,7 @@ msgstr "証明書が安全でない暗号のアルゴリズムを使っている
|
|||||||
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"
|
||||||
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.
|
||||||
@ -1476,39 +1490,39 @@ msgstr "待機中"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "オフライン"
|
msgstr "オフライン"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:552 ../js/ui/userMenu.js:556 ../js/ui/userMenu.js:626
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "電源オフ..."
|
msgstr "電源オフ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:588
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "メッセージ通知"
|
msgstr "メッセージ通知"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:591
|
#: ../js/ui/userMenu.js:596
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "オンラインアカウント"
|
msgstr "オンラインアカウント"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595
|
#: ../js/ui/userMenu.js:600
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "システム設定"
|
msgstr "システム設定"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:602
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "画面のロック"
|
msgstr "画面のロック"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:607
|
#: ../js/ui/userMenu.js:612
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "ユーザーの切り替え"
|
msgstr "ユーザーの切り替え"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:617
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "ログアウト..."
|
msgstr "ログアウト..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:640
|
#: ../js/ui/userMenu.js:645
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "取り込み中に設定されます"
|
msgstr "取り込み中に設定されます"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:646
|
||||||
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."
|
||||||
@ -1678,9 +1692,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Confirm"
|
#~ msgid "Confirm"
|
||||||
#~ msgstr "確定"
|
#~ msgstr "確定"
|
||||||
|
|
||||||
#~ msgid "Panel"
|
|
||||||
#~ msgstr "パネル"
|
|
||||||
|
|
||||||
#~ msgid "No such application"
|
#~ msgid "No such application"
|
||||||
#~ msgstr "アプリケーションが見当たりません"
|
#~ msgstr "アプリケーションが見当たりません"
|
||||||
|
|
||||||
@ -1719,9 +1730,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Show seco_nds"
|
#~ msgid "Show seco_nds"
|
||||||
#~ msgstr "秒の表示(_n)"
|
#~ msgstr "秒の表示(_n)"
|
||||||
|
|
||||||
#~ msgid "Show the _date"
|
|
||||||
#~ msgstr "日付の表示(_d)"
|
|
||||||
|
|
||||||
#~ msgid "_12 hour format"
|
#~ msgid "_12 hour format"
|
||||||
#~ msgstr "12時間形式(_1)"
|
#~ msgstr "12時間形式(_1)"
|
||||||
|
|
||||||
@ -1758,3 +1766,4 @@ msgstr "%1$s: %2$s"
|
|||||||
|
|
||||||
#~ msgid "Recent Documents"
|
#~ msgid "Recent Documents"
|
||||||
#~ msgstr "最近利用したドキュメント"
|
#~ msgstr "最近利用したドキュメント"
|
||||||
|
|
||||||
|
429
po/lt.po
429
po/lt.po
@ -7,18 +7,16 @@
|
|||||||
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-10-22 09:53+0000\n"
|
||||||
"POT-Creation-Date: 2011-10-08 07:34+0000\n"
|
"PO-Revision-Date: 2011-10-22 22:55+0300\n"
|
||||||
"PO-Revision-Date: 2011-10-08 19:48+0300\n"
|
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||||
"Last-Translator: Algimantas Margevičius <gymka@mail.ru>\n"
|
|
||||||
"Language-Team: Lietuvių <>\n"
|
"Language-Team: Lietuvių <>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bits\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Language: lt\n"
|
"Language: lt\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||||
"100<10 || n%100>=20) ? 1 : 2)\n"
|
|
||||||
"X-Generator: Virtaal 0.6.1\n"
|
"X-Generator: Virtaal 0.6.1\n"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
@ -30,18 +28,12 @@ msgid "Window management and application launching"
|
|||||||
msgstr "Langų valdymas ir programų paleidimas"
|
msgstr "Langų valdymas ir programų paleidimas"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
msgid ""
|
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
msgstr "Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-F2 dialogą."
|
||||||
"dialog."
|
|
||||||
msgstr ""
|
|
||||||
"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-"
|
|
||||||
"F2 dialogą."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr ""
|
msgstr "Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus programuotojams ir bandytojams "
|
||||||
"Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus "
|
|
||||||
"programuotojams ir bandytojams "
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
@ -52,14 +44,8 @@ msgid "Framerate used for recording screencasts."
|
|||||||
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
|
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
msgid ""
|
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. disabled-extensions overrides this setting for extensions that appear in both lists."
|
||||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
msgstr "GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, kurie neturėtų būti įkelti. Raktas disabled-extensions turi pirmenybę prieš šį plėtiniams, kurie yra abiejuose sąrašuose."
|
||||||
"should be loaded. disabled-extensions overrides this setting for extensions "
|
|
||||||
"that appear in both lists."
|
|
||||||
msgstr ""
|
|
||||||
"GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, "
|
|
||||||
"kurie neturėtų būti įkelti. Raktas disabled-extensions turi pirmenybę prieš "
|
|
||||||
"šį plėtiniams, kurie yra abiejuose sąrašuose."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
@ -87,29 +73,8 @@ msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
|
|||||||
|
|
||||||
#: ../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 ""
|
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."
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
msgstr "Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-launch naudojama sintaksė. Konvejeryje turėtų būti neprijungtas apjungiantis elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, naudojamas numatytasis konvejeris. Šiuo metu tai yra „videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
|
||||||
"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."
|
|
||||||
msgstr ""
|
|
||||||
"Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-"
|
|
||||||
"launch naudojama sintaksė. Konvejeryje turėtų būti neprijungtas apjungiantis "
|
|
||||||
"elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas "
|
|
||||||
"šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. "
|
|
||||||
"Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali "
|
|
||||||
"būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar "
|
|
||||||
"pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, "
|
|
||||||
"naudojamas numatytasis konvejeris. Šiuo metu tai yra „videorate ! vp8enc "
|
|
||||||
"quality=10 speed=2 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant "
|
|
||||||
"VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus "
|
|
||||||
"sistemoje spėjimui."
|
|
||||||
|
|
||||||
#: ../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"
|
||||||
@ -124,46 +89,24 @@ msgid "Show time with seconds"
|
|||||||
msgstr "Rodyti laiką su sekundėmis"
|
msgstr "Rodyti laiką su sekundėmis"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
msgid ""
|
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
msgstr "Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų srityje."
|
||||||
"favorites area."
|
|
||||||
msgstr ""
|
|
||||||
"Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų "
|
|
||||||
"srityje."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid ""
|
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
msgstr "Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą konteinerio formatą jį reikėtų pakeisti."
|
||||||
"current date, and use this extension. It should be changed when recording to "
|
|
||||||
"a different container format."
|
|
||||||
msgstr ""
|
|
||||||
"Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas "
|
|
||||||
"atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą "
|
|
||||||
"konteinerio formatą jį reikėtų pakeisti."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid ""
|
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
msgstr "GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis kadrais per sekundę."
|
||||||
"screencast recorder in frames-per-second."
|
|
||||||
msgstr ""
|
|
||||||
"GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis "
|
|
||||||
"kadrais per sekundę."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
|
msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid ""
|
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."
|
||||||
"The shell normally monitors active applications in order to present the most "
|
msgstr "Apvalkalas paprastai stebi aktyvias programas siekiant pateikti dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad tai padarius jau įrašyti duomenys jau nebus įrašyti."
|
||||||
"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 ""
|
|
||||||
"Apvalkalas paprastai stebi aktyvias programas siekiant pateikti dažniausiai "
|
|
||||||
"naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, "
|
|
||||||
"jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad "
|
|
||||||
"tai padarius jau įrašyti duomenys jau nebus įrašyti."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
@ -185,52 +128,55 @@ msgstr "Kurią klaviatūrą naudoti"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "išjungti OpenSearch tiekėjai"
|
msgstr "išjungti OpenSearch tiekėjai"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:617
|
#: ../js/gdm/loginDialog.js:633
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Seansas..."
|
msgstr "Seansas..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:785
|
#: ../js/gdm/loginDialog.js:804
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prisijungti"
|
msgstr "Prisijungti"
|
||||||
|
|
||||||
#. 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:849
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(arba perbraukite pirštu)"
|
msgstr "(arba perbraukite pirštu)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:848
|
#: ../js/gdm/loginDialog.js:867
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Nėra sąraše?"
|
msgstr "Nėra sąraše?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426
|
#: ../js/gdm/loginDialog.js:1035
|
||||||
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
|
#: ../js/ui/endSessionDialog.js:426
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
|
#: ../js/ui/extensionSystem.js:520
|
||||||
|
#: ../js/ui/networkAgent.js:148
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:173
|
||||||
|
#: ../js/ui/status/bluetooth.js:480
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Atšaukti"
|
msgstr "Atšaukti"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1009
|
#: ../js/gdm/loginDialog.js:1040
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prisijungti"
|
msgstr "Prisijungti"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1358
|
#: ../js/gdm/loginDialog.js:1392
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Prisijungimo langas"
|
msgstr "Prisijungimo langas"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
|
#: ../js/gdm/powerMenu.js:116
|
||||||
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
|
#: ../js/ui/userMenu.js:573
|
||||||
|
#: ../js/ui/userMenu.js:575
|
||||||
|
#: ../js/ui/userMenu.js:644
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Užmigdyti"
|
msgstr "Užmigdyti"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
|
#: ../js/gdm/powerMenu.js:121
|
||||||
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
|
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Įkelti iš naujo"
|
msgstr "Įkelti iš naujo"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
|
#: ../js/gdm/powerMenu.js:126
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Išjungti"
|
msgstr "Išjungti"
|
||||||
|
|
||||||
@ -443,20 +389,25 @@ msgstr "Šią savaitę"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Kitą savaitę"
|
msgstr "Kitą savaitę"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
|
#: ../js/ui/contactDisplay.js:65
|
||||||
#: ../js/ui/status/power.js:223 ../src/shell-app.c:355
|
#: ../js/ui/notificationDaemon.js:459
|
||||||
|
#: ../js/ui/status/power.js:223
|
||||||
|
#: ../src/shell-app.c:353
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nežinoma"
|
msgstr "Nežinoma"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139
|
#: ../js/ui/contactDisplay.js:86
|
||||||
|
#: ../js/ui/userMenu.js:139
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Esu"
|
msgstr "Esu"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148
|
#: ../js/ui/contactDisplay.js:91
|
||||||
|
#: ../js/ui/userMenu.js:148
|
||||||
msgid "Away"
|
msgid "Away"
|
||||||
msgstr "Išėjęs"
|
msgstr "Išėjęs"
|
||||||
|
|
||||||
#: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142
|
#: ../js/ui/contactDisplay.js:95
|
||||||
|
#: ../js/ui/userMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Užsiėmęs (-usi)"
|
msgstr "Užsiėmęs (-usi)"
|
||||||
|
|
||||||
@ -468,7 +419,8 @@ msgstr "Atsijungęs"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "ADRESATAI"
|
msgstr "ADRESATAI"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
|
#: ../js/ui/dash.js:174
|
||||||
|
#: ../js/ui/messageTray.js:1206
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Pašalinti"
|
msgstr "Pašalinti"
|
||||||
|
|
||||||
@ -533,18 +485,18 @@ msgstr "PASKUTINIEJI ELEMENTAI"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:60
|
#: ../js/ui/endSessionDialog.js:60
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Atjungti %s"
|
msgstr "Atsijungti %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Atsijungti"
|
msgstr "Atsijungti"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:62
|
#: ../js/ui/endSessionDialog.js:62
|
||||||
msgid "Click Log Out to quit these applications and log out of the system."
|
msgid "Click Log Out to quit these applications and log out of the system."
|
||||||
msgstr ""
|
msgstr "Spauskite „išeiti“, jei norite užverti šias programas ir atsijungti nuo sistemos."
|
||||||
"Spauskite „išeiti“, jei norite užverti šias programas ir atsijungti nuo "
|
|
||||||
"sistemos."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:64
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -566,10 +518,19 @@ msgstr[2] "Jūs būsite automatiškai atjungtas po %d sekundžių."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Atsijungiama nuo sistemos."
|
msgstr "Atsijungiama nuo sistemos."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:75
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Log Out"
|
||||||
|
msgstr "Atsijungti"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Išjungti"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
msgid "Click Power Off to quit these applications and power off the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr ""
|
msgstr "Spauskite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
||||||
"Spauskite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:83
|
#: ../js/ui/endSessionDialog.js:83
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -583,11 +544,25 @@ msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių."
|
|||||||
msgid "Powering off the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Sistema išjungiama."
|
msgstr "Sistema išjungiama."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
|
#: ../js/ui/endSessionDialog.js:106
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Įkelti iš naujo"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Power Off"
|
||||||
|
msgstr "Išjungti"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:97
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Restart"
|
||||||
|
msgstr "Įkelti iš naujo"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr "Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti sistemą iš naujo."
|
||||||
"Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti "
|
|
||||||
"sistemą iš naujo."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:100
|
#: ../js/ui/endSessionDialog.js:100
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -601,146 +576,158 @@ msgstr[2] "Sistema bus įkelta iš naujo po %d sekundžių."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Sistemos įkėlimas iš naujo"
|
msgstr "Sistemos įkėlimas iš naujo"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:481
|
#: ../js/ui/extensionSystem.js:524
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Įdiegti"
|
msgstr "Įdiegti"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:485
|
#: ../js/ui/extensionSystem.js:528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:308
|
#: ../js/ui/keyboard.js:325
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "dėklas"
|
msgstr "dėklas"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:530 ../js/ui/status/power.js:211
|
#: ../js/ui/keyboard.js:547
|
||||||
|
#: ../js/ui/status/power.js:211
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Klaviatūra"
|
msgstr "Klaviatūra"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:645
|
#: ../js/ui/lookingGlass.js:664
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Nėra įdiegtų plėtinių"
|
msgstr "Nėra įdiegtų plėtinių"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:691
|
#. Translators: argument is an extension UUID.
|
||||||
|
#: ../js/ui/lookingGlass.js:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s has not emitted any errors."
|
||||||
|
msgstr "%s nesukėlė jokių klaidų."
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:725
|
||||||
|
msgid "Hide Errors"
|
||||||
|
msgstr "Slėpti klaidas"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:729
|
||||||
|
#: ../js/ui/lookingGlass.js:779
|
||||||
|
msgid "Show Errors"
|
||||||
|
msgstr "Rodyti klaidas"
|
||||||
|
|
||||||
|
#: ../js/ui/lookingGlass.js:738
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Įjungta"
|
msgstr "Įjungta"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:740
|
||||||
|
#: ../src/gvc/gvc-mixer-control.c:1093
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Išjungta"
|
msgstr "Išjungta"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:695
|
#: ../js/ui/lookingGlass.js:742
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Klaida"
|
msgstr "Klaida"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:744
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Pasenęs"
|
msgstr "Pasenęs"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:699
|
#: ../js/ui/lookingGlass.js:746
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Parsiunčiama"
|
msgstr "Parsiunčiama"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:720
|
#: ../js/ui/lookingGlass.js:767
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Žiūrėti šaltinį"
|
msgstr "Žiūrėti šaltinį"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:726
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Tinklalapis"
|
msgstr "Tinklalapis"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1197
|
#: ../js/ui/messageTray.js:1199
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Atverti"
|
msgstr "Atverti"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2406
|
#: ../js/ui/messageTray.js:2408
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Sistemos informacija"
|
msgstr "Sistemos informacija"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:145
|
#: ../js/ui/networkAgent.js:143
|
||||||
msgid "Show password"
|
|
||||||
msgstr "Rodyti slaptažodį"
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:160
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Prisijungti"
|
msgstr "Prisijungti"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
|
#: ../js/ui/networkAgent.js:238
|
||||||
#: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
|
#: ../js/ui/networkAgent.js:250
|
||||||
#: ../js/ui/networkAgent.js:324
|
#: ../js/ui/networkAgent.js:277
|
||||||
|
#: ../js/ui/networkAgent.js:297
|
||||||
|
#: ../js/ui/networkAgent.js:307
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Slaptažodis: "
|
msgstr "Slaptažodis: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: ../js/ui/networkAgent.js:260
|
#: ../js/ui/networkAgent.js:243
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Raktas: "
|
msgstr "Raktas: "
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
|
#: ../js/ui/networkAgent.js:275
|
||||||
|
#: ../js/ui/networkAgent.js:293
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Naudotojo vardas: "
|
msgstr "Naudotojo vardas: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:298
|
#: ../js/ui/networkAgent.js:281
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Identitetas: "
|
msgstr "Identitetas: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:300
|
#: ../js/ui/networkAgent.js:283
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Privataus rakto slaptažodis: "
|
msgstr "Privataus rakto slaptažodis: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:295
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Tarnyba: "
|
msgstr "Tarnyba: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:324
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
|
msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:342
|
#: ../js/ui/networkAgent.js:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||||
"Passwords or encryption keys are required to access the wireless network '%"
|
msgstr "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio tinklo „%s“."
|
||||||
"s'."
|
|
||||||
msgstr ""
|
|
||||||
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
|
|
||||||
"tinklo „%s“."
|
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:346
|
#: ../js/ui/networkAgent.js:329
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Laidinis 802.1X tapatybės patvirtinimas"
|
msgstr "Laidinis 802.1X tapatybės patvirtinimas"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:348
|
#: ../js/ui/networkAgent.js:331
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Tinklo vardas: "
|
msgstr "Tinklo vardas: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:353
|
#: ../js/ui/networkAgent.js:336
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL tapatybės patvirtinimas"
|
msgstr "DSL tapatybės patvirtinimas"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:360
|
#: ../js/ui/networkAgent.js:343
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "Būtinas PIN kodas"
|
msgstr "Būtinas PIN kodas"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:361
|
#: ../js/ui/networkAgent.js:344
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "Būtinas PIN kodas mobiliam plačiajuosčiam įrenginiui"
|
msgstr "Būtinas PIN kodas mobiliam plačiajuosčiam įrenginiui"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:362
|
#: ../js/ui/networkAgent.js:345
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:368
|
#: ../js/ui/networkAgent.js:351
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Mobilaus plačiajuosčio tinklo slaptažodis"
|
msgstr "Mobilaus plačiajuosčio tinklo slaptažodis"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:369
|
#: ../js/ui/networkAgent.js:352
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“"
|
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“"
|
||||||
@ -796,15 +783,15 @@ msgstr "Prisijungti prie..."
|
|||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "VIETOS ir ĮRENGINIAI"
|
msgstr "VIETOS ir ĮRENGINIAI"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:72
|
#: ../js/ui/polkitAuthenticationAgent.js:73
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Reikia patvirtinti tapatybę"
|
msgstr "Reikia patvirtinti tapatybę"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:106
|
#: ../js/ui/polkitAuthenticationAgent.js:107
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Administratorius"
|
msgstr "Administratorius"
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
#: ../js/ui/polkitAuthenticationAgent.js:177
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Patvirtinti tapatybę"
|
msgstr "Patvirtinti tapatybę"
|
||||||
|
|
||||||
@ -812,11 +799,11 @@ msgstr "Patvirtinti tapatybę"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:256
|
#: ../js/ui/polkitAuthenticationAgent.js:258
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Atsiprašome, tai nesuveikė. Pabandykite dar kartą."
|
msgstr "Atsiprašome, tai nesuveikė. Pabandykite dar kartą."
|
||||||
|
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:268
|
#: ../js/ui/polkitAuthenticationAgent.js:270
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Slaptažodis:"
|
msgstr "Slaptažodis:"
|
||||||
|
|
||||||
@ -829,7 +816,7 @@ msgstr "Slaptažodis:"
|
|||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:208
|
#: ../js/ui/runDialog.js:209
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Įveskite komandą:"
|
msgstr "Įveskite komandą:"
|
||||||
|
|
||||||
@ -841,6 +828,22 @@ msgstr "Ieškoma..."
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Nerasta atitikmenų."
|
msgstr "Nerasta atitikmenų."
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:30
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Kopijuoti"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:35
|
||||||
|
msgid "Paste"
|
||||||
|
msgstr "Įdėti"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:81
|
||||||
|
msgid "Show Text"
|
||||||
|
msgstr "Rodyti tekstą"
|
||||||
|
|
||||||
|
#: ../js/ui/shellEntry.js:83
|
||||||
|
msgid "Hide Text"
|
||||||
|
msgstr "Slėpti tekstą"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:285
|
#: ../js/ui/shellMountOperation.js:285
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
msgstr "Neteisingas slaptažodis, badykite dar kartą"
|
msgstr "Neteisingas slaptažodis, badykite dar kartą"
|
||||||
@ -888,9 +891,12 @@ msgstr "Didelis kontrastas"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Didelis tekstas"
|
msgstr "Didelis tekstas"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:39 ../js/ui/status/bluetooth.js:261
|
#: ../js/ui/status/bluetooth.js:39
|
||||||
#: ../js/ui/status/bluetooth.js:347 ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:261
|
||||||
#: ../js/ui/status/bluetooth.js:421 ../js/ui/status/bluetooth.js:454
|
#: ../js/ui/status/bluetooth.js:347
|
||||||
|
#: ../js/ui/status/bluetooth.js:381
|
||||||
|
#: ../js/ui/status/bluetooth.js:421
|
||||||
|
#: ../js/ui/status/bluetooth.js:454
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -919,11 +925,13 @@ msgstr "įrenginys išjungtas"
|
|||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Ryšys"
|
msgstr "Ryšys"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486
|
#: ../js/ui/status/bluetooth.js:217
|
||||||
|
#: ../js/ui/status/network.js:486
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "atsijungiama..."
|
msgstr "atsijungiama..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492
|
#: ../js/ui/status/bluetooth.js:230
|
||||||
|
#: ../js/ui/status/network.js:492
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "jungiamasi..."
|
msgstr "jungiamasi..."
|
||||||
|
|
||||||
@ -952,7 +960,8 @@ msgstr "Klaviatūros nustatymai"
|
|||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Pelės nustatymai"
|
msgstr "Pelės nustatymai"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:279 ../js/ui/status/volume.js:62
|
#: ../js/ui/status/bluetooth.js:279
|
||||||
|
#: ../js/ui/status/volume.js:62
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Garso nustatymai"
|
msgstr "Garso nustatymai"
|
||||||
|
|
||||||
@ -974,7 +983,8 @@ msgstr "Visada leisti prieigą"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Leisti tik šį kartą"
|
msgstr "Leisti tik šį kartą"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204
|
#: ../js/ui/status/bluetooth.js:392
|
||||||
|
#: ../js/ui/telepathyClient.js:1204
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Atmesti"
|
msgstr "Atmesti"
|
||||||
|
|
||||||
@ -983,7 +993,8 @@ msgstr "Atmesti"
|
|||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Suporavimo patvirtinimas įrenginiui %s"
|
msgstr "Suporavimo patvirtinimas įrenginiui %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:428 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/status/bluetooth.js:428
|
||||||
|
#: ../js/ui/status/bluetooth.js:462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Įrenginys %s nori susiporuoti su šiuo kompiuteriu"
|
msgstr "Įrenginys %s nori susiporuoti su šiuo kompiuteriu"
|
||||||
@ -1063,13 +1074,15 @@ msgstr "nepasiekiamas"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "nepavyko prisijungti"
|
msgstr "nepavyko prisijungti"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
|
#: ../js/ui/status/network.js:575
|
||||||
|
#: ../js/ui/status/network.js:1523
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Daugiau..."
|
msgstr "Daugiau..."
|
||||||
|
|
||||||
#. 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:611 ../js/ui/status/network.js:1458
|
#: ../js/ui/status/network.js:611
|
||||||
|
#: ../js/ui/status/network.js:1458
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Prisijungta (privatus)"
|
msgstr "Prisijungta (privatus)"
|
||||||
|
|
||||||
@ -1086,7 +1099,8 @@ msgid "Auto dial-up"
|
|||||||
msgstr "Automatinis telefoninis"
|
msgstr "Automatinis telefoninis"
|
||||||
|
|
||||||
#. 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:1470
|
#: ../js/ui/status/network.js:878
|
||||||
|
#: ../js/ui/status/network.js:1470
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "Automatinis %s"
|
msgstr "Automatinis %s"
|
||||||
@ -1185,7 +1199,8 @@ msgstr[0] "liko %d minutė"
|
|||||||
msgstr[1] "liko %d minutės"
|
msgstr[1] "liko %d minutės"
|
||||||
msgstr[2] "liko %d minučių"
|
msgstr[2] "liko %d minučių"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:121 ../js/ui/status/power.js:194
|
#: ../js/ui/status/power.js:121
|
||||||
|
#: ../js/ui/status/power.js:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "percent of battery remaining"
|
msgctxt "percent of battery remaining"
|
||||||
msgid "%d%%"
|
msgid "%d%%"
|
||||||
@ -1328,12 +1343,14 @@ msgstr "Kvietimas į %s"
|
|||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s jus kviečia prisijungti prie %s"
|
msgstr "%s jus kviečia prisijungti prie %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248
|
#: ../js/ui/telepathyClient.js:1158
|
||||||
|
#: ../js/ui/telepathyClient.js:1248
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1352
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Atmesti"
|
msgstr "Atmesti"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249
|
#: ../js/ui/telepathyClient.js:1159
|
||||||
|
#: ../js/ui/telepathyClient.js:1249
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1353
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Priimti"
|
msgstr "Priimti"
|
||||||
@ -1440,8 +1457,7 @@ msgid "This resource is already connected to the server"
|
|||||||
msgstr "Resursas jau prijungtas prie serverio"
|
msgstr "Resursas jau prijungtas prie serverio"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1449
|
#: ../js/ui/telepathyClient.js:1449
|
||||||
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 "Ryšys pakeistas nauju ryšiu naudojant tą patį resursą"
|
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį resursą"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1451
|
#: ../js/ui/telepathyClient.js:1451
|
||||||
@ -1457,19 +1473,12 @@ msgid "Certificate has been revoked"
|
|||||||
msgstr "Liudijimas atšauktas"
|
msgstr "Liudijimas atšauktas"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1457
|
#: ../js/ui/telepathyClient.js:1457
|
||||||
msgid ""
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgstr "Liudijimas naudoja nesaugų šifravimo algoritmą arba yra kriptografiškai silpnas"
|
||||||
msgstr ""
|
|
||||||
"Liudijimas naudoja nesaugų šifravimo algoritmą arba yra kriptografiškai "
|
|
||||||
"silpnas"
|
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1459
|
#: ../js/ui/telepathyClient.js:1459
|
||||||
msgid ""
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
msgstr "Serverio liudijimo ilgis arba liudijimų grandinės gylis viršija kriptografijos bibliotekos apribojimus"
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
|
||||||
msgstr ""
|
|
||||||
"Serverio liudijimo ilgis arba liudijimų grandinės gylis viršija "
|
|
||||||
"kriptografijos bibliotekos apribojimus"
|
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
@ -1502,56 +1511,54 @@ msgstr "Neužimtas"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Nepasiekiamas"
|
msgstr "Nepasiekiamas"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
|
#: ../js/ui/userMenu.js:571
|
||||||
|
#: ../js/ui/userMenu.js:575
|
||||||
|
#: ../js/ui/userMenu.js:645
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Išjungti..."
|
msgstr "Išjungti..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:583
|
#: ../js/ui/userMenu.js:607
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Pranešimai"
|
msgstr "Pranešimai"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:591
|
#: ../js/ui/userMenu.js:615
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "Tinklo paskyros"
|
msgstr "Tinklo paskyros"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595
|
#: ../js/ui/userMenu.js:619
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Sistemos nustatymai"
|
msgstr "Sistemos nustatymai"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:602
|
#: ../js/ui/userMenu.js:626
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Užrakinti ekraną"
|
msgstr "Užrakinti ekraną"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:607
|
#: ../js/ui/userMenu.js:631
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Keisti naudotoją"
|
msgstr "Keisti naudotoją"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:612
|
#: ../js/ui/userMenu.js:636
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Atsijungti ..."
|
msgstr "Atsijungti ..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:640
|
#: ../js/ui/userMenu.js:664
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Jūsų pokalbio būsena bus nustatyta į užimtą"
|
msgstr "Jūsų pokalbio būsena bus nustatyta į užimtą"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:641
|
#: ../js/ui/userMenu.js:665
|
||||||
msgid ""
|
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."
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
msgstr "Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs galite nepamatyti jų pranešimų."
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
|
||||||
msgstr ""
|
|
||||||
"Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų "
|
|
||||||
"būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs "
|
|
||||||
"galite nepamatyti jų pranešimų."
|
|
||||||
|
|
||||||
#. Translators: this is the text displayed
|
#. Translators: this is the text displayed
|
||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:120
|
#: ../js/ui/viewSelector.js:121
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Ieškoti..."
|
msgstr "Ieškoti..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
|
#: ../js/ui/viewSelector.js:142
|
||||||
|
#: ../src/shell-util.c:244
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Ieškoti"
|
msgstr "Ieškoti"
|
||||||
|
|
||||||
@ -1592,7 +1599,7 @@ msgstr "Atspausdinti versiją"
|
|||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
|
msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
|
||||||
|
|
||||||
#: ../src/shell-app.c:581
|
#: ../src/shell-app.c:579
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch '%s'"
|
msgid "Failed to launch '%s'"
|
||||||
msgstr "Nepavyko paleisti „%s“"
|
msgstr "Nepavyko paleisti „%s“"
|
||||||
@ -1609,13 +1616,15 @@ msgstr "Numatyta"
|
|||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
||||||
|
|
||||||
#: ../src/shell-util.c:100
|
#. Translators: this is the same string as the one found in
|
||||||
msgid "Home Folder"
|
#. * nautilus
|
||||||
msgstr "Namų aplankas"
|
#: ../src/shell-util.c:89
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Namai"
|
||||||
|
|
||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:115
|
#: ../src/shell-util.c:98
|
||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Failų sistema"
|
msgstr "Failų sistema"
|
||||||
|
|
||||||
@ -1624,10 +1633,8 @@ msgstr "Failų sistema"
|
|||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
#. * directory called "some-directory" is in the trash.
|
#. * directory called "some-directory" is in the trash.
|
||||||
#.
|
#.
|
||||||
#: ../src/shell-util.c:311
|
#: ../src/shell-util.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
#~ msgid "%s has finished starting"
|
|
||||||
#~ msgstr "%s buvo paleista"
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user