Compare commits
1 Commits
3.15.4
...
wip/wobbly
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7f82c66de |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -23,7 +23,6 @@ data/gnome-shell-wayland.desktop
|
|||||||
data/gnome-shell-wayland.desktop.in
|
data/gnome-shell-wayland.desktop.in
|
||||||
data/gnome-shell-extension-prefs.desktop
|
data/gnome-shell-extension-prefs.desktop
|
||||||
data/gnome-shell-extension-prefs.desktop.in
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
data/gnome-shell-theme.gresource
|
|
||||||
data/gschemas.compiled
|
data/gschemas.compiled
|
||||||
data/perf-background.xml
|
data/perf-background.xml
|
||||||
data/org.gnome.shell.gschema.xml
|
data/org.gnome.shell.gschema.xml
|
||||||
@@ -86,7 +85,6 @@ src/gnome-shell-perf-helper
|
|||||||
src/gnome-shell-perf-tool
|
src/gnome-shell-perf-tool
|
||||||
src/gnome-shell-portal-helper
|
src/gnome-shell-portal-helper
|
||||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||||
src/org-gtk-application.[ch]
|
|
||||||
src/run-js-test
|
src/run-js-test
|
||||||
src/test-recorder
|
src/test-recorder
|
||||||
src/test-recorder.ogg
|
src/test-recorder.ogg
|
||||||
|
|||||||
164
NEWS
164
NEWS
@@ -1,167 +1,3 @@
|
|||||||
3.15.4
|
|
||||||
======
|
|
||||||
* Add mode parameter to AcceleratorActivated signal [Florian; #711682]
|
|
||||||
* Fix PID based window/app association [Sebastian; #736527]
|
|
||||||
* Fix current day highlight on day change [Sebastian; #742492]
|
|
||||||
* Switch to vp9 for screencast recordings [Adel; #742744]
|
|
||||||
* Disable IBus input sources on password entries [Takao; #730628]
|
|
||||||
* Make slider scrolling smoother [Adel; #742648]
|
|
||||||
* Allow move-up shortcut to move window above top workspace [Florian; #665764]
|
|
||||||
* Misc. bug fixes [Adel, Rui; #742748, #742824, #741114]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Cosimo Cecchi, Takao Fujiwara, Adel Gadllah, Sebastian Keller, Rui Matos,
|
|
||||||
Florian Müllner, Jasper St. Pierre
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Andika Triwidada [id], Matej Urbančič [sl], Saibal Ray [bn_IN],
|
|
||||||
Inaki Larranaga Murgoitio [eu], Stas Solovey [ru], Kjartan Maraas [nb],
|
|
||||||
Balázs Úr [hu], Marek Černocký [cs], Rafael Ferreira [pt_BR],
|
|
||||||
Bernd Homuth [de], Daniel Mustieles [es], Fabio Tomat [fur]
|
|
||||||
|
|
||||||
3.15.3
|
|
||||||
======
|
|
||||||
* Add support for high-contrast themes [Florian; #740447]
|
|
||||||
* Fix banner message on login screen without user list [Ray; #703972]
|
|
||||||
* Fix flicker when activating windows on another workspace [Florian; #741680]
|
|
||||||
* Misc. bug fixes [Giovanni, Florian; #735308, #740237]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Balázs Úr [hu], Josef Andersson [sv], Muhammet Kara [tr],
|
|
||||||
Baurzhan Muftakhidinov [kk], Inaki Larranaga Murgoitio [eu]
|
|
||||||
|
|
||||||
3.15.2
|
|
||||||
======
|
|
||||||
* Fix visual glitch of window preview outline in overview [Chris; #699044]
|
|
||||||
* Change user facing name of "Captive Portal" to "Network Login" [Elad; #737198]
|
|
||||||
* Port to Python 3 [Slavek; #732478]
|
|
||||||
* Hide Airplane mode indicator when g-s-d says so [Cosimo; #736292]
|
|
||||||
* Allow translators to change non-work days [Lavi; #664645]
|
|
||||||
* Delay invocation of caribou daemon until really needed [Daiki; #739712]
|
|
||||||
* Don't lock screen after crash if locking is disabled [Adel; #704884]
|
|
||||||
* Improve layout of extension installation dialog [William; #739888]
|
|
||||||
* Fix workspace changes from app picker [Yuki; #737534]
|
|
||||||
* Preload all ibus input sources in user configuration [Takao; #695428]
|
|
||||||
* Properly remove network connections from list [Ryan; #740227]
|
|
||||||
* Support CSS margin property [Carlos; #728437]
|
|
||||||
* Improve handling of BUSY application state [Phillip; #736492]
|
|
||||||
* Fix erroneous week numbers in calendar [Florian; #736722]
|
|
||||||
* Misc. bugfixes and cleanups [Darcy, Yuki, Alexander, Eskild, Bastien, Cosimo, Colin,
|
|
||||||
Ray; #738725, #739497, #739241, #672500, #739822, #740074, #704163, #740141]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Yuki, Lavi .A, Elad Alfassa, Cosimo Cecchi, Takao Fujiwara, Adel Gadllah,
|
|
||||||
Eskild Hustvedt, Chris Johns, William Jon McCann, Slavek Kabrda, Ryan Lortie,
|
|
||||||
Florian Müllner, Bastien Nocera, Christian Persch, Carlos Soriano,
|
|
||||||
Jasper St. Pierre, Ray Strode, Alexander Tsoy, Daiki Ueno, Colin Walters,
|
|
||||||
Phillip Wood
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Jorge Perez Perez [an], Daniel Martinez [an], Daniel Mustieles [es],
|
|
||||||
Trần Ngọc Quân [vi], Changwoo Ryu [ko], Kjartan Maraas [nb],
|
|
||||||
Yosef Or Boczko [he], Marek Černocký [cs]
|
|
||||||
|
|
||||||
3.15.1
|
|
||||||
======
|
|
||||||
* Use GResources for theme loading [Cosimo; #736936]
|
|
||||||
* Reset the OSK to primary on monitor changes [Rui; #738536]
|
|
||||||
* Use LC_TIME locale for format string translations [Florian; #738640]
|
|
||||||
* Summarize queued up notifications [Devyani; #702460]
|
|
||||||
* Improve handling of multi-day events [Andreas; #727302]
|
|
||||||
* Support EXTERNAL scroll policy type [Florian; #739379]
|
|
||||||
* Misc. bugfixes [Owen, Rui; #738652, #739252]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Andreas Brauchli, Cosimo Cecchi, Devyani Kota, Rui Matos, Florian Müllner,
|
|
||||||
Jasper St. Pierre, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Bahodir Mansurov [uz@cyrillic]
|
|
||||||
|
|
||||||
3.14.1
|
|
||||||
======
|
|
||||||
* Fix pulse animation for scrolled app folders [Florian; #736885]
|
|
||||||
* Fix updating background on file changes [Owen; #710756]
|
|
||||||
* Obtain keyboard variant from IBus [Jinkyu; #735066]
|
|
||||||
* Implement Ctrl-u / Ctrl-k keybindings in entries [Florian; #737346]
|
|
||||||
* Pass VPN hints to auth dialog [Dan; #737592]
|
|
||||||
* Only allow one screenshot request at a time [Adel; #737456]
|
|
||||||
* Respect disable-save-to-disc lockdown setting [Florian; #737846]
|
|
||||||
* Respect scaling-factor for profile pictures [Darcy; #735419]
|
|
||||||
* Focus login screen after lifting the lock screen shield [Ray; #708105]
|
|
||||||
* Speed up pulse animation for few items [Carlos S.; #737017]
|
|
||||||
* Fix gap between workspace switcher and screen edge [Florian; #728899]
|
|
||||||
* Disable unredirection during recordings [Adel; #738226]
|
|
||||||
* Ensure there's always at least one input source [Rui; #738303]
|
|
||||||
* Restrict width of dash icons' context menus [Adel; #738054]
|
|
||||||
* Misc. bug fixes [Jasper, Florian, Carlos G., Owen; #736999, #737382, #737001,
|
|
||||||
#738314, #738256, #738147]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Darcy Beurle, Cosimo Cecchi, Adel Gadllah, Carlos Garnacho, Rui Matos,
|
|
||||||
Florian Müllner, Carlos Soriano, Jasper St. Pierre, Ray Strode, Patrick Ward,
|
|
||||||
Dan Williams, Owen W. Taylor, Jinkyu Yi
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Мирослав Николић po/sr, sr@latin.po, Fran Diéguez [gl], Marek Černocký [cs],
|
|
||||||
Saibal Ray [bn_IN], Rajesh Ranjan [hi], Friedel Wolff [af],
|
|
||||||
Zhou Fang [zh_CN], Krishnababu Krothapalli [te], Kjartan Maraas [nb],
|
|
||||||
Rūdolfs Mazurs [lv], Sweta Kothari [gu], Christian Kirbach [de],
|
|
||||||
Cheng-Chia Tseng [zh_TW], Pedro Albuquerque [pt], Daniel Mustieles [es],
|
|
||||||
Luca Ferretti [it], Baurzhan Muftakhidinov [kk], Arash Mousavi [fa],
|
|
||||||
Milo Casagrande [it]
|
|
||||||
|
|
||||||
3.14.0
|
|
||||||
======
|
|
||||||
* Fix exposure of the accessible tree [Alejandro; #736821]
|
|
||||||
* Hide empty app folders in app picker [Florian; #736910]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Florian Müllner, Alejandro Piñeiro
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Yuri Myasoedov [ru], Pawan Chitrakar [ne], Manoj Kumar Giri [or],
|
|
||||||
Daniel Mustieles [es], GNOME Translation Robot [de], Rajesh Ranjan [hi],
|
|
||||||
Shankar Prasad [kn], Kenneth Nielsen [da], Daniel Korostil [uk],
|
|
||||||
Changwoo Ryu [ko], A S Alam [pa], Tom Tryfonidis [el], Petr Kovar [cs]
|
|
||||||
|
|
||||||
3.13.92
|
|
||||||
=======
|
|
||||||
* Fix submenu arrow animations [Hashem; #728927]
|
|
||||||
* Always initialize clutter accessibility [Alejandro; #735908]
|
|
||||||
* Adapt to mutter background changes [Owen; #735638]
|
|
||||||
* Improve handling of outOfDate extensions in prefs [Florian; #736185]
|
|
||||||
* Port offline updates to PackageKit's DBus interface [Kalev; #736337]
|
|
||||||
* location: Translate accuracy levels for geoclue [Zeeshan; #736479]
|
|
||||||
* Implement input source switching [Rui; #736435]
|
|
||||||
* Fix crash when dragging window from workspace switcher [Carlos G.; #735972]
|
|
||||||
* Clean out list of default favorites [Elad; #735682]
|
|
||||||
* Add settings link to location submenu [Florian; #736542]
|
|
||||||
* Fix keynav of message tray menu button [Florian; #707799]
|
|
||||||
* Misc. bug fixes [Carlos G., Florian, Rui; #736110, #736329, #736343,
|
|
||||||
#735927, #735976]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Elad Alfassa, Zeeshan Ali (Khattak), Michael Catanzaro, Adel Gadllah,
|
|
||||||
Carlos Garnacho, Kalev Lember, Rui Matos, Florian Müllner, Hashem Nasarat,
|
|
||||||
Alejandro Piñeiro, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor
|
|
||||||
|
|
||||||
Translations:
|
|
||||||
Piotr Drąg [pl], Changwoo Ryu [ko], Yuri Myasoedov [ru], Zhou Fang [ja],
|
|
||||||
Peter Mráz [sk], Ville-Pekka Vainio [fi], Sweta Kothari [gu],
|
|
||||||
Marek Černocký [cs], A S Alam [pa], Christian Kirbach [de],
|
|
||||||
Alexandre Franke [fr], Aurimas Černius [lt], Khaled Hosny [ar],
|
|
||||||
Enrico Nicoletto [pt_BR], Andika Triwidada [id], Shantha kumar [ta],
|
|
||||||
Matej Urbančič [sl], Pawan Chitrakar [ne], Yosef Or Boczko [he],
|
|
||||||
Balázs Úr [hu], Dušan Kazik [sk], Gil Forcada [ca],
|
|
||||||
Carles Ferrando [ca@valencia], Nilamdyuti Goswami [as], Ivaylo Valkov [bg],
|
|
||||||
Sandeep Sheshrao Shedmake [mr], Umarzuki Bin Mochlis Moktar [ms],
|
|
||||||
Muhammet Kara [tr], Jiro Matsuzawa [ja], Kris Thomsen [da],
|
|
||||||
Mattias Eriksson [sv]
|
|
||||||
|
|
||||||
3.13.91
|
3.13.91
|
||||||
=======
|
=======
|
||||||
* Fix keynav into session menu on login screen [Florian; #735614]
|
* Fix keynav into session menu on login screen [Florian; #735614]
|
||||||
|
|||||||
21
configure.ac
21
configure.ac
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.15.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.13.91],[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])
|
||||||
@@ -37,7 +37,7 @@ AC_PATH_PROG([XSLTPROC], [xsltproc])
|
|||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
# Get a value to substitute into gnome-shell.in
|
# Get a value to substitute into gnome-shell.in
|
||||||
AM_PATH_PYTHON([3])
|
AM_PATH_PYTHON([2.5])
|
||||||
AC_SUBST(PYTHON)
|
AC_SUBST(PYTHON)
|
||||||
|
|
||||||
# We need at least this, since gst_plugin_register_static() was added
|
# We need at least this, since gst_plugin_register_static() was added
|
||||||
@@ -76,8 +76,8 @@ AC_MSG_RESULT($enable_systemd)
|
|||||||
CLUTTER_MIN_VERSION=1.15.90
|
CLUTTER_MIN_VERSION=1.15.90
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||||
GJS_MIN_VERSION=1.39.0
|
GJS_MIN_VERSION=1.39.0
|
||||||
MUTTER_MIN_VERSION=3.15.4
|
MUTTER_MIN_VERSION=3.13.91
|
||||||
GTK_MIN_VERSION=3.15.0
|
GTK_MIN_VERSION=3.7.9
|
||||||
GIO_MIN_VERSION=2.37.0
|
GIO_MIN_VERSION=2.37.0
|
||||||
LIBECAL_MIN_VERSION=3.5.3
|
LIBECAL_MIN_VERSION=3.5.3
|
||||||
LIBEDATASERVER_MIN_VERSION=3.5.3
|
LIBEDATASERVER_MIN_VERSION=3.5.3
|
||||||
@@ -97,6 +97,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||||
$recorder_modules
|
$recorder_modules
|
||||||
gdk-x11-3.0 libsoup-2.4
|
gdk-x11-3.0 libsoup-2.4
|
||||||
|
xtst
|
||||||
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
||||||
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
||||||
@@ -118,7 +119,7 @@ PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
|||||||
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
|
||||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||||
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
|
||||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.13.1)
|
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4)
|
||||||
PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
|
PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
|
||||||
|
|
||||||
AC_ARG_ENABLE(browser-plugin,
|
AC_ARG_ENABLE(browser-plugin,
|
||||||
@@ -231,17 +232,9 @@ esac
|
|||||||
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
|
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
|
||||||
AC_SUBST(AM_CFLAGS)
|
AC_SUBST(AM_CFLAGS)
|
||||||
|
|
||||||
if test -z "${BROWSER_PLUGIN_DIR}"; then
|
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
|
||||||
BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
|
|
||||||
fi
|
|
||||||
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
|
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
|
||||||
|
|
||||||
AC_ARG_VAR([GDBUS_CODEGEN],[the gdbus-codegen programme])
|
|
||||||
AC_PATH_PROG([GDBUS_CODEGEN],[gdbus-codegen],[])
|
|
||||||
if test -z "$GDBUS_CODEGEN"; then
|
|
||||||
AC_MSG_ERROR([gdbus-codegen not found])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
data/Makefile
|
data/Makefile
|
||||||
|
|||||||
@@ -35,11 +35,44 @@ introspection_DATA = \
|
|||||||
org.gnome.ShellSearchProvider.xml \
|
org.gnome.ShellSearchProvider.xml \
|
||||||
org.gnome.ShellSearchProvider2.xml
|
org.gnome.ShellSearchProvider2.xml
|
||||||
|
|
||||||
resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml)
|
themedir = $(pkgdatadir)/theme
|
||||||
gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files)
|
dist_theme_DATA = \
|
||||||
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $<
|
theme/calendar-arrow-left.svg \
|
||||||
resourcedir = $(pkgdatadir)
|
theme/calendar-arrow-right.svg \
|
||||||
resource_DATA = gnome-shell-theme.gresource
|
theme/calendar-today.svg \
|
||||||
|
theme/checkbox-focused.svg \
|
||||||
|
theme/checkbox-off-focused.svg \
|
||||||
|
theme/checkbox-off.svg \
|
||||||
|
theme/checkbox.svg \
|
||||||
|
theme/close-window.svg \
|
||||||
|
theme/close.svg \
|
||||||
|
theme/corner-ripple-ltr.png \
|
||||||
|
theme/corner-ripple-rtl.png \
|
||||||
|
theme/dash-placeholder.svg \
|
||||||
|
theme/filter-selected-ltr.svg \
|
||||||
|
theme/filter-selected-rtl.svg \
|
||||||
|
theme/gnome-shell.css \
|
||||||
|
theme/logged-in-indicator.svg \
|
||||||
|
theme/message-tray-background.png \
|
||||||
|
theme/more-results.svg \
|
||||||
|
theme/noise-texture.png \
|
||||||
|
theme/page-indicator-active.svg \
|
||||||
|
theme/page-indicator-inactive.svg \
|
||||||
|
theme/page-indicator-checked.svg \
|
||||||
|
theme/page-indicator-hover.svg \
|
||||||
|
theme/panel-button-border.svg \
|
||||||
|
theme/panel-button-highlight-narrow.svg \
|
||||||
|
theme/panel-button-highlight-wide.svg \
|
||||||
|
theme/process-working.svg \
|
||||||
|
theme/running-indicator.svg \
|
||||||
|
theme/source-button-border.svg \
|
||||||
|
theme/summary-counter.svg \
|
||||||
|
theme/toggle-off-us.svg \
|
||||||
|
theme/toggle-off-intl.svg \
|
||||||
|
theme/toggle-on-us.svg \
|
||||||
|
theme/toggle-on-intl.svg \
|
||||||
|
theme/ws-switch-arrow-up.png \
|
||||||
|
theme/ws-switch-arrow-down.png
|
||||||
|
|
||||||
backgrounddir = $(pkgdatadir)
|
backgrounddir = $(pkgdatadir)
|
||||||
background_DATA = perf-background.xml
|
background_DATA = perf-background.xml
|
||||||
@@ -83,9 +116,7 @@ EXTRA_DIST = \
|
|||||||
perf-background.xml.in \
|
perf-background.xml.in \
|
||||||
org.gnome.Shell.PortalHelper.desktop.in \
|
org.gnome.Shell.PortalHelper.desktop.in \
|
||||||
org.gnome.Shell.PortalHelper.service.in \
|
org.gnome.Shell.PortalHelper.service.in \
|
||||||
org.gnome.shell.gschema.xml.in.in \
|
org.gnome.shell.gschema.xml.in.in
|
||||||
gnome-shell-theme.gresource.xml \
|
|
||||||
$(resource_files)
|
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
gnome-shell.desktop.in \
|
gnome-shell.desktop.in \
|
||||||
@@ -97,5 +128,4 @@ CLEANFILES += \
|
|||||||
perf-background.xml \
|
perf-background.xml \
|
||||||
gschemas.compiled \
|
gschemas.compiled \
|
||||||
org.gnome.shell.gschema.valid \
|
org.gnome.shell.gschema.valid \
|
||||||
org.gnome.shell.gschema.xml.in \
|
org.gnome.shell.gschema.xml.in
|
||||||
gnome-shell-theme.gresource
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<gresources>
|
|
||||||
<gresource prefix="/org/gnome/shell/theme">
|
|
||||||
<file>calendar-arrow-left.svg</file>
|
|
||||||
<file>calendar-arrow-right.svg</file>
|
|
||||||
<file>calendar-today.svg</file>
|
|
||||||
<file>checkbox-focused.svg</file>
|
|
||||||
<file>checkbox-off-focused.svg</file>
|
|
||||||
<file>checkbox-off.svg</file>
|
|
||||||
<file>checkbox.svg</file>
|
|
||||||
<file>close-window.svg</file>
|
|
||||||
<file>close.svg</file>
|
|
||||||
<file>corner-ripple-ltr.png</file>
|
|
||||||
<file>corner-ripple-rtl.png</file>
|
|
||||||
<file>dash-placeholder.svg</file>
|
|
||||||
<file>filter-selected-ltr.svg</file>
|
|
||||||
<file>filter-selected-rtl.svg</file>
|
|
||||||
<file>gnome-shell.css</file>
|
|
||||||
<file>gnome-shell-high-contrast.css</file>
|
|
||||||
<file>logged-in-indicator.svg</file>
|
|
||||||
<file>message-tray-background.png</file>
|
|
||||||
<file>more-results.svg</file>
|
|
||||||
<file>noise-texture.png</file>
|
|
||||||
<file>page-indicator-active.svg</file>
|
|
||||||
<file>page-indicator-inactive.svg</file>
|
|
||||||
<file>page-indicator-checked.svg</file>
|
|
||||||
<file>page-indicator-hover.svg</file>
|
|
||||||
<file>panel-button-border.svg</file>
|
|
||||||
<file>panel-button-highlight-narrow.svg</file>
|
|
||||||
<file>panel-button-highlight-wide.svg</file>
|
|
||||||
<file>process-working.svg</file>
|
|
||||||
<file>running-indicator.svg</file>
|
|
||||||
<file>source-button-border.svg</file>
|
|
||||||
<file>summary-counter.svg</file>
|
|
||||||
<file>toggle-off-us.svg</file>
|
|
||||||
<file>toggle-off-intl.svg</file>
|
|
||||||
<file>toggle-on-us.svg</file>
|
|
||||||
<file>toggle-on-intl.svg</file>
|
|
||||||
<file>ws-switch-arrow-up.png</file>
|
|
||||||
<file>ws-switch-arrow-down.png</file>
|
|
||||||
</gresource>
|
|
||||||
</gresources>
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
_Name=Network Login
|
_Name=Captive Portal
|
||||||
Type=Application
|
Type=Application
|
||||||
Exec=gapplication launch org.gnome.Shell.PortalHelper
|
Exec=gapplication launch org.gnome.Shell.PortalHelper
|
||||||
DBusActivatable=true
|
DBusActivatable=true
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
</_description>
|
</_description>
|
||||||
</key>
|
</key>
|
||||||
<key name="favorite-apps" type="as">
|
<key name="favorite-apps" type="as">
|
||||||
<default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
|
<default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Documents.desktop', 'org.gnome.Software.desktop' ]</default>
|
||||||
<_summary>List of desktop file IDs for favorite applications</_summary>
|
<_summary>List of desktop file IDs for favorite applications</_summary>
|
||||||
<_description>
|
<_description>
|
||||||
The applications corresponding to these identifiers
|
The applications corresponding to these identifiers
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
/* Copyright 2014, Red Hat, Inc.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms and conditions of the GNU Lesser General Public License,
|
|
||||||
* version 2.1, as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
|
|
||||||
* more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with this program; if not, write to the Free Software Foundation,
|
|
||||||
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*/
|
|
||||||
@import url("resource:///org/gnome/shell/theme/gnome-shell.css");
|
|
||||||
|
|
||||||
stage {
|
|
||||||
-st-icon-style: symbolic;
|
|
||||||
}
|
|
||||||
@@ -232,10 +232,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-well-menu {
|
|
||||||
max-width: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The remaining popup-menu sizing is all done in ems, so that if you
|
/* The remaining popup-menu sizing is all done in ems, so that if you
|
||||||
* override .popup-menu.font-size, everything else will scale with it.
|
* override .popup-menu.font-size, everything else will scale with it.
|
||||||
*/
|
*/
|
||||||
@@ -829,7 +825,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
.window-clone-border {
|
.window-clone-border {
|
||||||
border: 4px solid rgba(255, 255, 255, 0.5);
|
border: 4px solid rgba(255, 255, 255, 0.5);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-shadow: inset 0px 0px 0px 1px rgba(255, 255, 255, 0.5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-close {
|
.notification-close {
|
||||||
@@ -1495,10 +1490,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.events-day-time-ellipses {
|
|
||||||
color: rgba(153, 153, 153, 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.events-day-time:rtl {
|
.events-day-time:rtl {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
@@ -2107,15 +2098,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Resize popup */
|
|
||||||
.resize-popup {
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
|
||||||
border: 2px solid #868686;
|
|
||||||
padding: 16px;
|
|
||||||
font-size: 14pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ShellMountOperation Dialogs */
|
/* ShellMountOperation Dialogs */
|
||||||
.shell-mount-operation-icon {
|
.shell-mount-operation-icon {
|
||||||
icon-size: 48px;
|
icon-size: 48px;
|
||||||
@@ -2397,10 +2379,6 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Login Dialog */
|
/* Login Dialog */
|
||||||
.login-dialog-banner-view {
|
|
||||||
padding-top: 24px;
|
|
||||||
max-width: 23em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.framed-user-icon {
|
.framed-user-icon {
|
||||||
border: 2px solid #8b8b8b;
|
border: 2px solid #8b8b8b;
|
||||||
@@ -2413,7 +2391,11 @@ StScrollBar StButton#vhandle:active {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog-banner {
|
.login-dialog-banner {
|
||||||
|
font-size: 10pt;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
|
padding-bottom: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-dialog {
|
.login-dialog {
|
||||||
|
|||||||
@@ -59,10 +59,14 @@ const Application = new Lang.Class({
|
|||||||
|
|
||||||
_extensionAvailable: function(uuid) {
|
_extensionAvailable: function(uuid) {
|
||||||
let extension = ExtensionUtils.extensions[uuid];
|
let extension = ExtensionUtils.extensions[uuid];
|
||||||
|
let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
|
||||||
|
|
||||||
if (!extension)
|
if (!extension)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (checkVersion && ExtensionUtils.isOutOfDate(extension))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (!extension.dir.get_child('prefs.js').query_exists(null))
|
if (!extension.dir.get_child('prefs.js').query_exists(null))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -281,10 +285,6 @@ const ExtensionRow = new Lang.Class({
|
|||||||
function() {
|
function() {
|
||||||
this._switch.state = this._isEnabled();
|
this._switch.state = this._isEnabled();
|
||||||
}));
|
}));
|
||||||
this._settings.connect('changed::disable-extension-version-validation',
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._switch.sensitive = this._canEnable();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._buildUI();
|
this._buildUI();
|
||||||
},
|
},
|
||||||
@@ -323,7 +323,6 @@ const ExtensionRow = new Lang.Class({
|
|||||||
this.prefsButton = button;
|
this.prefsButton = button;
|
||||||
|
|
||||||
this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
|
this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
|
||||||
sensitive: this._canEnable(),
|
|
||||||
state: this._isEnabled() });
|
state: this._isEnabled() });
|
||||||
this._switch.connect('notify::active', Lang.bind(this,
|
this._switch.connect('notify::active', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
@@ -336,13 +335,6 @@ const ExtensionRow = new Lang.Class({
|
|||||||
hbox.add(this._switch);
|
hbox.add(this._switch);
|
||||||
},
|
},
|
||||||
|
|
||||||
_canEnable: function() {
|
|
||||||
let extension = ExtensionUtils.extensions[this.uuid];
|
|
||||||
let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
|
|
||||||
|
|
||||||
return !(checkVersion && ExtensionUtils.isOutOfDate(extension));
|
|
||||||
},
|
|
||||||
|
|
||||||
_isEnabled: function() {
|
_isEnabled: function() {
|
||||||
let extensions = this._settings.get_strv('enabled-extensions');
|
let extensions = this._settings.get_strv('enabled-extensions');
|
||||||
return extensions.indexOf(this.uuid) != -1;
|
return extensions.indexOf(this.uuid) != -1;
|
||||||
|
|||||||
@@ -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 Gio = imports.gi.Gio;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
@@ -127,7 +126,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
|
|
||||||
this._initButtons();
|
this._initButtons();
|
||||||
|
|
||||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
let spinnerIcon = global.datadir + '/theme/process-working.svg';
|
||||||
this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE);
|
this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE);
|
||||||
this._spinner.actor.opacity = 0;
|
this._spinner.actor.opacity = 0;
|
||||||
this._spinner.actor.show();
|
this._spinner.actor.show();
|
||||||
@@ -135,7 +134,8 @@ const AuthPrompt = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
this._userVerifier.destroy();
|
this._userVerifier.clear();
|
||||||
|
this._userVerifier.disconnectAll();
|
||||||
this._userVerifier = null;
|
this._userVerifier = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -261,7 +261,6 @@ const AuthPrompt = new Lang.Class({
|
|||||||
|
|
||||||
_onVerificationComplete: function() {
|
_onVerificationComplete: function() {
|
||||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||||
this.cancelButton.reactive = false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onReset: function() {
|
_onReset: function() {
|
||||||
@@ -420,20 +419,17 @@ const AuthPrompt = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setUser: function(user) {
|
setUser: function(user) {
|
||||||
let oldChild = this._userWell.get_child();
|
|
||||||
if (oldChild)
|
|
||||||
oldChild.destroy();
|
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
let userWidget = new UserWidget.UserWidget(user);
|
let userWidget = new UserWidget.UserWidget(user);
|
||||||
this._userWell.set_child(userWidget.actor);
|
this._userWell.set_child(userWidget.actor);
|
||||||
|
} else {
|
||||||
|
this._userWell.set_child(null);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
reset: function() {
|
reset: function() {
|
||||||
let oldStatus = this.verificationStatus;
|
let oldStatus = this.verificationStatus;
|
||||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||||
this.cancelButton.reactive = true;
|
|
||||||
|
|
||||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
if (oldStatus == AuthPromptStatus.VERIFYING)
|
||||||
this._userVerifier.cancel();
|
this._userVerifier.cancel();
|
||||||
@@ -502,9 +498,6 @@ const AuthPrompt = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.reset();
|
this.reset();
|
||||||
this.emit('cancelled');
|
this.emit('cancelled');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ const Gtk = imports.gi.Gtk;
|
|||||||
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;
|
||||||
const Pango = imports.gi.Pango;
|
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
@@ -65,8 +64,6 @@ const UserListItem = new Lang.Class({
|
|||||||
reactive: true,
|
reactive: true,
|
||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
x_fill: true });
|
x_fill: true });
|
||||||
this.actor.connect('destroy',
|
|
||||||
Lang.bind(this, this._onDestroy));
|
|
||||||
|
|
||||||
this._userWidget = new UserWidget.UserWidget(this.user);
|
this._userWidget = new UserWidget.UserWidget(this.user);
|
||||||
layout.add(this._userWidget.actor);
|
layout.add(this._userWidget.actor);
|
||||||
@@ -90,10 +87,6 @@ const UserListItem = new Lang.Class({
|
|||||||
this.actor.remove_style_pseudo_class('logged-in');
|
this.actor.remove_style_pseudo_class('logged-in');
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
|
||||||
this._user.disconnect(this._userChangedId);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onClicked: function() {
|
_onClicked: function() {
|
||||||
this.emit('activate');
|
this.emit('activate');
|
||||||
},
|
},
|
||||||
@@ -365,12 +358,12 @@ const LoginDialog = new Lang.Class({
|
|||||||
Name: 'LoginDialog',
|
Name: 'LoginDialog',
|
||||||
|
|
||||||
_init: function(parentActor) {
|
_init: function(parentActor) {
|
||||||
this.actor = new Shell.GenericContainer({ style_class: 'login-dialog',
|
this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW,
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
style_class: 'login-dialog',
|
||||||
visible: false });
|
visible: false });
|
||||||
this.actor.get_accessible().set_role(Atk.Role.WINDOW);
|
|
||||||
|
|
||||||
this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
|
this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._onAllocate));
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
parentActor.add_child(this.actor);
|
parentActor.add_child(this.actor);
|
||||||
|
|
||||||
@@ -380,11 +373,12 @@ const LoginDialog = new Lang.Class({
|
|||||||
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
||||||
this._greeter = gdmClient.get_greeter_sync(null);
|
this._greeter = gdmClient.get_greeter_sync(null);
|
||||||
|
|
||||||
this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed',
|
this._greeter.connect('default-session-name-changed',
|
||||||
Lang.bind(this, this._onDefaultSessionChanged));
|
Lang.bind(this, this._onDefaultSessionChanged));
|
||||||
this._sessionOpenedId = this._greeter.connect('session-opened',
|
|
||||||
|
this._greeter.connect('session-opened',
|
||||||
Lang.bind(this, this._onSessionOpened));
|
Lang.bind(this, this._onSessionOpened));
|
||||||
this._timedLoginRequestedId = this._greeter.connect('timed-login-requested',
|
this._greeter.connect('timed-login-requested',
|
||||||
Lang.bind(this, this._onTimedLoginRequested));
|
Lang.bind(this, this._onTimedLoginRequested));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,16 +394,23 @@ const LoginDialog = new Lang.Class({
|
|||||||
Lang.bind(this, this._updateLogo));
|
Lang.bind(this, this._updateLogo));
|
||||||
|
|
||||||
this._textureCache = St.TextureCache.get_default();
|
this._textureCache = St.TextureCache.get_default();
|
||||||
this._updateLogoTextureId = this._textureCache.connect('texture-file-changed',
|
this._textureCache.connect('texture-file-changed',
|
||||||
Lang.bind(this, this._updateLogoTexture));
|
Lang.bind(this, this._updateLogoTexture));
|
||||||
|
|
||||||
this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box',
|
this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box',
|
||||||
x_align: Clutter.ActorAlign.CENTER,
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
y_align: Clutter.ActorAlign.CENTER,
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
vertical: true,
|
vertical: true,
|
||||||
visible: false });
|
visible: false });
|
||||||
this.actor.add_child(this._userSelectionBox);
|
this.actor.add_child(this._userSelectionBox);
|
||||||
|
|
||||||
|
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
|
||||||
|
text: '' });
|
||||||
|
this._userSelectionBox.add(this._bannerLabel);
|
||||||
|
this._updateBanner();
|
||||||
|
|
||||||
this._userList = new UserList();
|
this._userList = new UserList();
|
||||||
this._userSelectionBox.add(this._userList.actor,
|
this._userSelectionBox.add(this._userList.actor,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@@ -444,25 +445,11 @@ const LoginDialog = new Lang.Class({
|
|||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
x_fill: true });
|
x_fill: true });
|
||||||
|
|
||||||
this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view',
|
|
||||||
opacity: 0,
|
|
||||||
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
|
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
|
||||||
this.actor.add_child(this._bannerView);
|
|
||||||
|
|
||||||
let bannerBox = new St.BoxLayout({ vertical: true });
|
|
||||||
|
|
||||||
this._bannerView.add_actor(bannerBox);
|
|
||||||
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
|
|
||||||
text: '' });
|
|
||||||
this._bannerLabel.clutter_text.line_wrap = true;
|
|
||||||
this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
|
||||||
bannerBox.add_child(this._bannerLabel);
|
|
||||||
this._updateBanner();
|
|
||||||
|
|
||||||
this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin',
|
this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin',
|
||||||
x_align: Clutter.ActorAlign.CENTER,
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
y_align: Clutter.ActorAlign.END });
|
y_align: Clutter.ActorAlign.END,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true });
|
||||||
this.actor.add_child(this._logoBin);
|
this.actor.add_child(this._logoBin);
|
||||||
this._updateLogo();
|
this._updateLogo();
|
||||||
|
|
||||||
@@ -489,184 +476,10 @@ const LoginDialog = new Lang.Class({
|
|||||||
// If the user list is enabled, it should take key focus; make sure the
|
// If the user list is enabled, it should take key focus; make sure the
|
||||||
// screen shield is initialized first to prevent it from stealing the
|
// screen shield is initialized first to prevent it from stealing the
|
||||||
// focus later
|
// focus later
|
||||||
this._startupCompleteId = Main.layoutManager.connect('startup-complete',
|
Main.layoutManager.connect('startup-complete',
|
||||||
Lang.bind(this, this._updateDisableUserList));
|
Lang.bind(this, this._updateDisableUserList));
|
||||||
},
|
},
|
||||||
|
|
||||||
_getBannerAllocation: function (dialogBox) {
|
|
||||||
let actorBox = new Clutter.ActorBox();
|
|
||||||
|
|
||||||
let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size();
|
|
||||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
|
||||||
|
|
||||||
actorBox.x1 = centerX - natWidth / 2;
|
|
||||||
actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height;
|
|
||||||
actorBox.x2 = actorBox.x1 + natWidth;
|
|
||||||
actorBox.y2 = actorBox.y1 + natHeight;
|
|
||||||
|
|
||||||
return actorBox;
|
|
||||||
},
|
|
||||||
|
|
||||||
_getLogoBinAllocation: function (dialogBox) {
|
|
||||||
let actorBox = new Clutter.ActorBox();
|
|
||||||
|
|
||||||
let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size();
|
|
||||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
|
||||||
|
|
||||||
actorBox.x1 = centerX - natWidth / 2;
|
|
||||||
actorBox.y1 = dialogBox.y2 - natHeight;
|
|
||||||
actorBox.x2 = actorBox.x1 + natWidth;
|
|
||||||
actorBox.y2 = actorBox.y1 + natHeight;
|
|
||||||
|
|
||||||
return actorBox;
|
|
||||||
},
|
|
||||||
|
|
||||||
_getCenterActorAllocation: function (dialogBox, actor) {
|
|
||||||
let actorBox = new Clutter.ActorBox();
|
|
||||||
|
|
||||||
let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size();
|
|
||||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
|
||||||
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
|
|
||||||
|
|
||||||
actorBox.x1 = centerX - natWidth / 2;
|
|
||||||
actorBox.y1 = centerY - natHeight / 2;
|
|
||||||
actorBox.x2 = actorBox.x1 + natWidth;
|
|
||||||
actorBox.y2 = actorBox.y1 + natHeight;
|
|
||||||
|
|
||||||
return actorBox;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onAllocate: function (actor, dialogBox, flags) {
|
|
||||||
let dialogWidth = dialogBox.x2 - dialogBox.x1;
|
|
||||||
let dialogHeight = dialogBox.y2 - dialogBox.y1;
|
|
||||||
|
|
||||||
// First find out what space the children require
|
|
||||||
let bannerAllocation = null;
|
|
||||||
let bannerHeight = 0;
|
|
||||||
let bannerWidth = 0;
|
|
||||||
if (this._bannerView.visible) {
|
|
||||||
bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView);
|
|
||||||
bannerHeight = bannerAllocation.y2 - bannerAllocation.y1;
|
|
||||||
bannerWidth = bannerAllocation.x2 - bannerAllocation.x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let authPromptAllocation = null;
|
|
||||||
let authPromptHeight = 0;
|
|
||||||
let authPromptWidth = 0;
|
|
||||||
if (this._authPrompt.actor.visible) {
|
|
||||||
authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor);
|
|
||||||
authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1;
|
|
||||||
authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let userSelectionAllocation = null;
|
|
||||||
let userSelectionHeight = 0;
|
|
||||||
if (this._userSelectionBox.visible) {
|
|
||||||
userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox);
|
|
||||||
userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let logoAllocation = null;
|
|
||||||
let logoHeight = 0;
|
|
||||||
if (this._logoBin.visible) {
|
|
||||||
logoAllocation = this._getLogoBinAllocation(dialogBox);
|
|
||||||
logoHeight = logoAllocation.y2 - logoAllocation.y1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Then figure out if we're overly constrained and need to
|
|
||||||
// try a different layout, or if we have what extra space we
|
|
||||||
// can hand out
|
|
||||||
if (bannerAllocation) {
|
|
||||||
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
|
|
||||||
|
|
||||||
if (leftOverYSpace > 0) {
|
|
||||||
// First figure out how much left over space is up top
|
|
||||||
let leftOverTopSpace = leftOverYSpace / 2;
|
|
||||||
|
|
||||||
// Then, shift the banner into the middle of that extra space
|
|
||||||
let yShift = leftOverTopSpace / 2;
|
|
||||||
|
|
||||||
bannerAllocation.y1 += yShift;
|
|
||||||
bannerAllocation.y2 += yShift;
|
|
||||||
} else {
|
|
||||||
// Then figure out how much space there would be if we switched to a
|
|
||||||
// wide layout with banner on one side and authprompt on the other.
|
|
||||||
let leftOverXSpace = dialogWidth - authPromptWidth;
|
|
||||||
|
|
||||||
// In a wide view, half of the available space goes to the banner,
|
|
||||||
// and the other half goes to the margins.
|
|
||||||
let wideBannerWidth = leftOverXSpace / 2;
|
|
||||||
let wideSpacing = leftOverXSpace - wideBannerWidth;
|
|
||||||
|
|
||||||
// If we do go with a wide layout, we need there to be at least enough
|
|
||||||
// space for the banner and the auth prompt to be the same width,
|
|
||||||
// so it doesn't look unbalanced.
|
|
||||||
if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) {
|
|
||||||
let centerX = dialogBox.x1 + dialogWidth / 2;
|
|
||||||
let centerY = dialogBox.y1 + dialogHeight / 2;
|
|
||||||
|
|
||||||
// A small portion of the spacing goes down the center of the
|
|
||||||
// screen to help delimit the two columns of the wide view
|
|
||||||
let centerGap = wideSpacing / 8;
|
|
||||||
|
|
||||||
// place the banner along the left edge of the center margin
|
|
||||||
bannerAllocation.x2 = centerX - centerGap / 2;
|
|
||||||
bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth;
|
|
||||||
|
|
||||||
// figure out how tall it would like to be and try to accomodate
|
|
||||||
// but don't let it get too close to the logo
|
|
||||||
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);
|
|
||||||
|
|
||||||
let maxWideHeight = dialogHeight - 3 * logoHeight;
|
|
||||||
wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight);
|
|
||||||
bannerAllocation.y1 = centerY - wideBannerHeight / 2;
|
|
||||||
bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight;
|
|
||||||
|
|
||||||
// place the auth prompt along the right edge of the center margin
|
|
||||||
authPromptAllocation.x1 = centerX + centerGap / 2;
|
|
||||||
authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth;
|
|
||||||
} else {
|
|
||||||
// If we aren't going to do a wide view, then we need to limit
|
|
||||||
// the height of the banner so it will present scrollbars
|
|
||||||
|
|
||||||
// First figure out how much space there is without the banner
|
|
||||||
leftOverYSpace += bannerHeight;
|
|
||||||
|
|
||||||
// Then figure out how much of that space is up top
|
|
||||||
let availableTopSpace = leftOverYSpace / 2;
|
|
||||||
|
|
||||||
// Then give all of that space to the banner
|
|
||||||
bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (userSelectionAllocation) {
|
|
||||||
// Grow the user list to fill the space
|
|
||||||
let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight;
|
|
||||||
|
|
||||||
if (leftOverYSpace > 0) {
|
|
||||||
let topExpansion = leftOverYSpace / 2;
|
|
||||||
let bottomExpansion = topExpansion;
|
|
||||||
|
|
||||||
userSelectionAllocation.y1 -= topExpansion;
|
|
||||||
userSelectionAllocation.y2 += bottomExpansion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finally hand out the allocations
|
|
||||||
if (bannerAllocation) {
|
|
||||||
this._bannerView.allocate(bannerAllocation, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (authPromptAllocation)
|
|
||||||
this._authPrompt.actor.allocate(authPromptAllocation, flags);
|
|
||||||
|
|
||||||
if (userSelectionAllocation)
|
|
||||||
this._userSelectionBox.allocate(userSelectionAllocation, flags);
|
|
||||||
|
|
||||||
if (logoAllocation)
|
|
||||||
this._logoBin.allocate(logoAllocation, flags);
|
|
||||||
},
|
|
||||||
|
|
||||||
_ensureUserListLoaded: function() {
|
_ensureUserListLoaded: function() {
|
||||||
if (!this._userManager.is_loaded) {
|
if (!this._userManager.is_loaded) {
|
||||||
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
|
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
|
||||||
@@ -719,26 +532,14 @@ const LoginDialog = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeInBannerView: function() {
|
_updateLogoTexture: function(cache, uri) {
|
||||||
Tweener.addTween(this._bannerView,
|
if (this._logoFileUri != uri)
|
||||||
{ opacity: 255,
|
|
||||||
time: _FADE_ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
},
|
|
||||||
|
|
||||||
_hideBannerView: function() {
|
|
||||||
Tweener.removeTweens(this._bannerView);
|
|
||||||
this._bannerView.opacity = 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateLogoTexture: function(cache, file) {
|
|
||||||
if (this._logoFile && !this._logoFile.equal(file))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._logoBin.destroy_all_children();
|
this._logoBin.destroy_all_children();
|
||||||
if (this._logoFile) {
|
if (this._logoFileUri) {
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile,
|
this._logoBin.add_child(this._textureCache.load_uri_async(this._logoFileUri,
|
||||||
-1, _LOGO_ICON_HEIGHT,
|
-1, _LOGO_ICON_HEIGHT,
|
||||||
scaleFactor));
|
scaleFactor));
|
||||||
}
|
}
|
||||||
@@ -747,8 +548,8 @@ const LoginDialog = new Lang.Class({
|
|||||||
_updateLogo: function() {
|
_updateLogo: function() {
|
||||||
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
||||||
|
|
||||||
this._logoFile = path ? Gio.file_new_for_path(path) : null;
|
this._logoFileUri = path ? Gio.file_new_for_path(path).get_uri() : null;
|
||||||
this._updateLogoTexture(this._textureCache, this._logoFile);
|
this._updateLogoTexture(this._textureCache, this._logoFileUri);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onPrompted: function() {
|
_onPrompted: function() {
|
||||||
@@ -798,7 +599,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
time: _FADE_ANIMATION_TIME,
|
time: _FADE_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad' });
|
transition: 'easeOutQuad' });
|
||||||
this._fadeInBannerView();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_showRealmLoginHint: function(realmManager, hint) {
|
_showRealmLoginHint: function(realmManager, hint) {
|
||||||
@@ -838,8 +638,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
realmManager.release();
|
realmManager.release();
|
||||||
}));
|
}));
|
||||||
this._updateCancelButton();
|
this._updateCancelButton();
|
||||||
|
|
||||||
this._authPrompt.updateSensitivity(true);
|
|
||||||
this._showPrompt();
|
this._showPrompt();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -867,8 +665,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_gotGreeterSessionProxy: function(proxy) {
|
_gotGreeterSessionProxy: function(proxy) {
|
||||||
this._greeterSessionProxy = proxy;
|
|
||||||
this._greeterSessionProxyChangedId =
|
|
||||||
proxy.connect('g-properties-changed', Lang.bind(this, function() {
|
proxy.connect('g-properties-changed', Lang.bind(this, function() {
|
||||||
if (proxy.Active)
|
if (proxy.Active)
|
||||||
this._loginScreenSessionActivated();
|
this._loginScreenSessionActivated();
|
||||||
@@ -1055,7 +851,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
_showUserList: function() {
|
_showUserList: function() {
|
||||||
this._ensureUserListLoaded();
|
this._ensureUserListLoaded();
|
||||||
this._authPrompt.hide();
|
this._authPrompt.hide();
|
||||||
this._hideBannerView();
|
|
||||||
this._sessionMenuButton.close();
|
this._sessionMenuButton.close();
|
||||||
this._setUserListExpanded(true);
|
this._setUserListExpanded(true);
|
||||||
this._notListedButton.show();
|
this._notListedButton.show();
|
||||||
@@ -1095,30 +890,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userManager.disconnect(this._userManagerLoadedId);
|
this._userManager.disconnect(this._userManagerLoadedId);
|
||||||
this._userManagerLoadedId = 0;
|
this._userManagerLoadedId = 0;
|
||||||
}
|
}
|
||||||
if (this._userAddedId) {
|
|
||||||
this._userManager.disconnect(this._userAddedId);
|
|
||||||
this._userAddedId = 0;
|
|
||||||
}
|
|
||||||
if (this._userRemovedId) {
|
|
||||||
this._userManager.disconnect(this._userRemovedId);
|
|
||||||
this._userRemovedId = 0;
|
|
||||||
}
|
|
||||||
this._textureCache.disconnect(this._updateLogoTextureId);
|
|
||||||
Main.layoutManager.disconnect(this._startupCompleteId);
|
|
||||||
if (this._settings) {
|
|
||||||
this._settings.run_dispose();
|
|
||||||
this._settings = null;
|
|
||||||
}
|
|
||||||
if (this._greeter) {
|
|
||||||
this._greeter.disconnect(this._defaultSessionChangedId);
|
|
||||||
this._greeter.disconnect(this._sessionOpenedId);
|
|
||||||
this._greeter.disconnect(this._timedLoginRequestedId);
|
|
||||||
this._greeter = null;
|
|
||||||
}
|
|
||||||
if (this._greeterSessionProxy) {
|
|
||||||
this._greeterSessionProxy.disconnect(this._greeterSessionProxyChangedId);
|
|
||||||
this._greeterSessionProxy = null;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_loadUserList: function() {
|
_loadUserList: function() {
|
||||||
@@ -1133,12 +904,12 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._userList.addUser(users[i]);
|
this._userList.addUser(users[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._userAddedId = this._userManager.connect('user-added',
|
this._userManager.connect('user-added',
|
||||||
Lang.bind(this, function(userManager, user) {
|
Lang.bind(this, function(userManager, user) {
|
||||||
this._userList.addUser(user);
|
this._userList.addUser(user);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._userRemovedId = this._userManager.connect('user-removed',
|
this._userManager.connect('user-removed',
|
||||||
Lang.bind(this, function(userManager, user) {
|
Lang.bind(this, function(userManager, user) {
|
||||||
this._userList.removeUser(user);
|
this._userList.removeUser(user);
|
||||||
}));
|
}));
|
||||||
@@ -1155,7 +926,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
this.actor.show();
|
this.actor.show();
|
||||||
this.actor.opacity = 0;
|
this.actor.opacity = 0;
|
||||||
|
|
||||||
Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOGIN_SCREEN });
|
Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOGIN_SCREEN });
|
||||||
|
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
|
|||||||
@@ -142,9 +142,9 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
// after a user has been picked.
|
// after a user has been picked.
|
||||||
this._checkForSmartcard();
|
this._checkForSmartcard();
|
||||||
|
|
||||||
this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted',
|
this._smartcardManager.connect('smartcard-inserted',
|
||||||
Lang.bind(this, this._checkForSmartcard));
|
Lang.bind(this, this._checkForSmartcard));
|
||||||
this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed',
|
this._smartcardManager.connect('smartcard-removed',
|
||||||
Lang.bind(this, this._checkForSmartcard));
|
Lang.bind(this, this._checkForSmartcard));
|
||||||
|
|
||||||
this._messageQueue = [];
|
this._messageQueue = [];
|
||||||
@@ -159,7 +159,7 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
if (this._oVirtCredentialsManager.hasToken())
|
if (this._oVirtCredentialsManager.hasToken())
|
||||||
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
|
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
|
||||||
|
|
||||||
this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated',
|
this._oVirtCredentialsManager.connect('user-authenticated',
|
||||||
Lang.bind(this, this._oVirtUserAuthenticated));
|
Lang.bind(this, this._oVirtUserAuthenticated));
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -191,37 +191,20 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_clearUserVerifier: function() {
|
|
||||||
if (this._userVerifier) {
|
|
||||||
this._userVerifier.run_dispose();
|
|
||||||
this._userVerifier = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
clear: function() {
|
clear: function() {
|
||||||
if (this._cancellable) {
|
if (this._cancellable) {
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._cancellable = null;
|
this._cancellable = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._clearUserVerifier();
|
if (this._userVerifier) {
|
||||||
|
this._userVerifier.run_dispose();
|
||||||
|
this._userVerifier = null;
|
||||||
|
}
|
||||||
|
|
||||||
this._clearMessageQueue();
|
this._clearMessageQueue();
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
this.clear();
|
|
||||||
|
|
||||||
this._settings.run_dispose();
|
|
||||||
this._settings = null;
|
|
||||||
|
|
||||||
this._smartcardManager.disconnect(this._smartcardInsertedId);
|
|
||||||
this._smartcardManager.disconnect(this._smartcardRemovedId);
|
|
||||||
this._smartcardManager = null;
|
|
||||||
|
|
||||||
this._oVirtCredentialsManager.disconnect(this._oVirtUserAuthenticatedId);
|
|
||||||
this._oVirtCredentialsManager = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
answerQuery: function(serviceName, answer) {
|
answerQuery: function(serviceName, answer) {
|
||||||
if (!this.hasPendingMessages) {
|
if (!this.hasPendingMessages) {
|
||||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||||
@@ -300,10 +283,9 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
|
|
||||||
this._fprintManager.GetDefaultDeviceRemote(Gio.DBusCallFlags.NONE, this._cancellable, Lang.bind(this,
|
this._fprintManager.GetDefaultDeviceRemote(Gio.DBusCallFlags.NONE, this._cancellable, Lang.bind(this,
|
||||||
function(device, error) {
|
function(device, error) {
|
||||||
if (!error && device) {
|
if (!error && device)
|
||||||
this._haveFingerprintReader = true;
|
this._haveFingerprintReader = true;
|
||||||
this._updateDefaultService();
|
this._updateDefaultService();
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -344,7 +326,6 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
|
|
||||||
_reauthenticationChannelOpened: function(client, result) {
|
_reauthenticationChannelOpened: function(client, result) {
|
||||||
try {
|
try {
|
||||||
this._clearUserVerifier();
|
|
||||||
this._userVerifier = client.open_reauthentication_channel_finish(result);
|
this._userVerifier = client.open_reauthentication_channel_finish(result);
|
||||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
|
||||||
return;
|
return;
|
||||||
@@ -368,7 +349,6 @@ const ShellUserVerifier = new Lang.Class({
|
|||||||
|
|
||||||
_userVerifierGot: function(client, result) {
|
_userVerifierGot: function(client, result) {
|
||||||
try {
|
try {
|
||||||
this._clearUserVerifier();
|
|
||||||
this._userVerifier = client.get_user_verifier_finish(result);
|
this._userVerifier = client.get_user_verifier_finish(result);
|
||||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
|
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -16,9 +16,7 @@
|
|||||||
<file>misc/fileUtils.js</file>
|
<file>misc/fileUtils.js</file>
|
||||||
<file>misc/gnomeSession.js</file>
|
<file>misc/gnomeSession.js</file>
|
||||||
<file>misc/history.js</file>
|
<file>misc/history.js</file>
|
||||||
<file>misc/ibusManager.js</file>
|
|
||||||
<file>misc/jsParse.js</file>
|
<file>misc/jsParse.js</file>
|
||||||
<file>misc/keyboardManager.js</file>
|
|
||||||
<file>misc/loginManager.js</file>
|
<file>misc/loginManager.js</file>
|
||||||
<file>misc/modemManager.js</file>
|
<file>misc/modemManager.js</file>
|
||||||
<file>misc/objectManager.js</file>
|
<file>misc/objectManager.js</file>
|
||||||
@@ -92,6 +90,7 @@
|
|||||||
<file>ui/windowAttentionHandler.js</file>
|
<file>ui/windowAttentionHandler.js</file>
|
||||||
<file>ui/windowMenu.js</file>
|
<file>ui/windowMenu.js</file>
|
||||||
<file>ui/windowManager.js</file>
|
<file>ui/windowManager.js</file>
|
||||||
|
<file>ui/wobbly.js</file>
|
||||||
<file>ui/workspace.js</file>
|
<file>ui/workspace.js</file>
|
||||||
<file>ui/workspaceSwitcherPopup.js</file>
|
<file>ui/workspaceSwitcherPopup.js</file>
|
||||||
<file>ui/workspaceThumbnail.js</file>
|
<file>ui/workspaceThumbnail.js</file>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ function getCurrentExtension() {
|
|||||||
let path = match[1];
|
let path = match[1];
|
||||||
let file = Gio.File.new_for_path(path);
|
let file = Gio.File.new_for_path(path);
|
||||||
|
|
||||||
// Walk up the directory tree, looking for an extension with
|
// Walk up the directory tree, looking for an extesion with
|
||||||
// the same UUID as a directory name.
|
// the same UUID as a directory name.
|
||||||
while (file != null) {
|
while (file != null) {
|
||||||
let extension = extensions[file.get_basename()];
|
let extension = extensions[file.get_basename()];
|
||||||
|
|||||||
@@ -1,234 +0,0 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
|
||||||
|
|
||||||
const Gio = imports.gi.Gio;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
const Signals = imports.signals;
|
|
||||||
|
|
||||||
try {
|
|
||||||
var IBus = imports.gi.IBus;
|
|
||||||
_checkIBusVersion(1, 5, 2);
|
|
||||||
const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
|
|
||||||
} catch (e) {
|
|
||||||
var IBus = null;
|
|
||||||
log(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
let _ibusManager = null;
|
|
||||||
|
|
||||||
function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) {
|
|
||||||
if ((IBus.MAJOR_VERSION > requiredMajor) ||
|
|
||||||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION > requiredMinor) ||
|
|
||||||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION == requiredMinor &&
|
|
||||||
IBus.MICRO_VERSION >= requiredMicro))
|
|
||||||
return;
|
|
||||||
|
|
||||||
throw "Found IBus version %d.%d.%d but required is %d.%d.%d".
|
|
||||||
format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MINOR_VERSION,
|
|
||||||
requiredMajor, requiredMinor, requiredMicro);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getIBusManager() {
|
|
||||||
if (_ibusManager == null)
|
|
||||||
_ibusManager = new IBusManager();
|
|
||||||
return _ibusManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
const IBusManager = new Lang.Class({
|
|
||||||
Name: 'IBusManager',
|
|
||||||
|
|
||||||
// This is the longest we'll keep the keyboard frozen until an input
|
|
||||||
// source is active.
|
|
||||||
_MAX_INPUT_SOURCE_ACTIVATION_TIME: 4000, // ms
|
|
||||||
_PRELOAD_ENGINES_DELAY_TIME: 30, // sec
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
if (!IBus)
|
|
||||||
return;
|
|
||||||
|
|
||||||
IBus.init();
|
|
||||||
|
|
||||||
this._candidatePopup = new IBusCandidatePopup.CandidatePopup();
|
|
||||||
|
|
||||||
this._panelService = null;
|
|
||||||
this._engines = {};
|
|
||||||
this._ready = false;
|
|
||||||
this._registerPropertiesId = 0;
|
|
||||||
this._currentEngineName = null;
|
|
||||||
this._preloadEnginesId = 0;
|
|
||||||
|
|
||||||
this._ibus = IBus.Bus.new_async();
|
|
||||||
this._ibus.connect('connected', Lang.bind(this, this._onConnected));
|
|
||||||
this._ibus.connect('disconnected', Lang.bind(this, this._clear));
|
|
||||||
// Need to set this to get 'global-engine-changed' emitions
|
|
||||||
this._ibus.set_watch_ibus_signal(true);
|
|
||||||
this._ibus.connect('global-engine-changed', Lang.bind(this, this._engineChanged));
|
|
||||||
|
|
||||||
this._spawn();
|
|
||||||
},
|
|
||||||
|
|
||||||
_spawn: function() {
|
|
||||||
try {
|
|
||||||
Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'],
|
|
||||||
Gio.SubprocessFlags.NONE);
|
|
||||||
} catch(e) {
|
|
||||||
log('Failed to launch ibus-daemon: ' + e.message);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_clear: function() {
|
|
||||||
if (this._panelService)
|
|
||||||
this._panelService.destroy();
|
|
||||||
|
|
||||||
this._panelService = null;
|
|
||||||
this._candidatePopup.setPanelService(null);
|
|
||||||
this._engines = {};
|
|
||||||
this._ready = false;
|
|
||||||
this._registerPropertiesId = 0;
|
|
||||||
this._currentEngineName = null;
|
|
||||||
|
|
||||||
this.emit('ready', false);
|
|
||||||
|
|
||||||
this._spawn();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onConnected: function() {
|
|
||||||
this._ibus.list_engines_async(-1, null, Lang.bind(this, this._initEngines));
|
|
||||||
this._ibus.request_name_async(IBus.SERVICE_PANEL,
|
|
||||||
IBus.BusNameFlag.REPLACE_EXISTING,
|
|
||||||
-1, null,
|
|
||||||
Lang.bind(this, this._initPanelService));
|
|
||||||
},
|
|
||||||
|
|
||||||
_initEngines: function(ibus, result) {
|
|
||||||
let enginesList = this._ibus.list_engines_async_finish(result);
|
|
||||||
if (enginesList) {
|
|
||||||
for (let i = 0; i < enginesList.length; ++i) {
|
|
||||||
let name = enginesList[i].get_name();
|
|
||||||
this._engines[name] = enginesList[i];
|
|
||||||
}
|
|
||||||
this._updateReadiness();
|
|
||||||
} else {
|
|
||||||
this._clear();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_initPanelService: function(ibus, result) {
|
|
||||||
let success = this._ibus.request_name_async_finish(result);
|
|
||||||
if (success) {
|
|
||||||
this._panelService = new IBus.PanelService({ connection: this._ibus.get_connection(),
|
|
||||||
object_path: IBus.PATH_PANEL });
|
|
||||||
this._candidatePopup.setPanelService(this._panelService);
|
|
||||||
this._panelService.connect('update-property', Lang.bind(this, this._updateProperty));
|
|
||||||
try {
|
|
||||||
// IBus versions older than 1.5.10 have a bug which
|
|
||||||
// causes spurious set-content-type emissions when
|
|
||||||
// switching input focus that temporarily lose purpose
|
|
||||||
// and hints defeating its intended semantics and
|
|
||||||
// confusing users. We thus don't use it in that case.
|
|
||||||
_checkIBusVersion(1, 5, 10);
|
|
||||||
this._panelService.connect('set-content-type', Lang.bind(this, this._setContentType));
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
// If an engine is already active we need to get its properties
|
|
||||||
this._ibus.get_global_engine_async(-1, null, Lang.bind(this, function(i, result) {
|
|
||||||
let engine;
|
|
||||||
try {
|
|
||||||
engine = this._ibus.get_global_engine_async_finish(result);
|
|
||||||
if (!engine)
|
|
||||||
return;
|
|
||||||
} catch(e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this._engineChanged(this._ibus, engine.get_name());
|
|
||||||
}));
|
|
||||||
this._updateReadiness();
|
|
||||||
} else {
|
|
||||||
this._clear();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateReadiness: function() {
|
|
||||||
this._ready = (Object.keys(this._engines).length > 0 &&
|
|
||||||
this._panelService != null);
|
|
||||||
this.emit('ready', this._ready);
|
|
||||||
},
|
|
||||||
|
|
||||||
_engineChanged: function(bus, engineName) {
|
|
||||||
if (!this._ready)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._currentEngineName = engineName;
|
|
||||||
|
|
||||||
if (this._registerPropertiesId != 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._registerPropertiesId =
|
|
||||||
this._panelService.connect('register-properties', Lang.bind(this, function(p, props) {
|
|
||||||
if (!props.get(0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._panelService.disconnect(this._registerPropertiesId);
|
|
||||||
this._registerPropertiesId = 0;
|
|
||||||
|
|
||||||
this.emit('properties-registered', this._currentEngineName, props);
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateProperty: function(panel, prop) {
|
|
||||||
this.emit('property-updated', this._currentEngineName, prop);
|
|
||||||
},
|
|
||||||
|
|
||||||
_setContentType: function(panel, purpose, hints) {
|
|
||||||
this.emit('set-content-type', purpose, hints);
|
|
||||||
},
|
|
||||||
|
|
||||||
activateProperty: function(key, state) {
|
|
||||||
this._panelService.property_activate(key, state);
|
|
||||||
},
|
|
||||||
|
|
||||||
getEngineDesc: function(id) {
|
|
||||||
if (!IBus || !this._ready)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
return this._engines[id];
|
|
||||||
},
|
|
||||||
|
|
||||||
setEngine: function(id, callback) {
|
|
||||||
// Send id even if id == this._currentEngineName
|
|
||||||
// because 'properties-registered' signal can be emitted
|
|
||||||
// while this._ibusSources == null on a lock screen.
|
|
||||||
if (!IBus || !this._ready) {
|
|
||||||
if (callback)
|
|
||||||
callback();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
|
|
||||||
null, callback);
|
|
||||||
},
|
|
||||||
|
|
||||||
preloadEngines: function(ids) {
|
|
||||||
if (!IBus || !this._ibus || ids.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this._preloadEnginesId != 0) {
|
|
||||||
Mainloop.source_remove(this._preloadEnginesId);
|
|
||||||
this._preloadEnginesId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._preloadEnginesId =
|
|
||||||
Mainloop.timeout_add_seconds(this._PRELOAD_ENGINES_DELAY_TIME,
|
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._ibus.preload_engines_async(
|
|
||||||
ids,
|
|
||||||
-1,
|
|
||||||
null,
|
|
||||||
null);
|
|
||||||
this._preloadEnginesId = 0;
|
|
||||||
return GLib.SOURCE_REMOVE;
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
});
|
|
||||||
Signals.addSignalMethods(IBusManager.prototype);
|
|
||||||
@@ -1,153 +0,0 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
|
||||||
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Meta = imports.gi.Meta;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const DEFAULT_LOCALE = 'en_US';
|
|
||||||
const DEFAULT_LAYOUT = 'us';
|
|
||||||
const DEFAULT_VARIANT = '';
|
|
||||||
|
|
||||||
let _xkbInfo = null;
|
|
||||||
|
|
||||||
function getXkbInfo() {
|
|
||||||
if (_xkbInfo == null)
|
|
||||||
_xkbInfo = new GnomeDesktop.XkbInfo();
|
|
||||||
return _xkbInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
let _keyboardManager = null;
|
|
||||||
|
|
||||||
function getKeyboardManager() {
|
|
||||||
if (_keyboardManager == null)
|
|
||||||
_keyboardManager = new KeyboardManager();
|
|
||||||
return _keyboardManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
function releaseKeyboard() {
|
|
||||||
if (Main.modalCount > 0)
|
|
||||||
global.display.unfreeze_keyboard(global.get_current_time());
|
|
||||||
else
|
|
||||||
global.display.ungrab_keyboard(global.get_current_time());
|
|
||||||
}
|
|
||||||
|
|
||||||
function holdKeyboard() {
|
|
||||||
global.display.freeze_keyboard(global.get_current_time());
|
|
||||||
}
|
|
||||||
|
|
||||||
const KeyboardManager = new Lang.Class({
|
|
||||||
Name: 'KeyboardManager',
|
|
||||||
|
|
||||||
// The XKB protocol doesn't allow for more that 4 layouts in a
|
|
||||||
// keymap. Wayland doesn't impose this limit and libxkbcommon can
|
|
||||||
// handle up to 32 layouts but since we need to support X clients
|
|
||||||
// even as a Wayland compositor, we can't bump this.
|
|
||||||
MAX_LAYOUTS_PER_GROUP: 4,
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
this._xkbInfo = getXkbInfo();
|
|
||||||
this._current = null;
|
|
||||||
this._localeLayoutInfo = this._getLocaleLayout();
|
|
||||||
this._layoutInfos = {};
|
|
||||||
},
|
|
||||||
|
|
||||||
_applyLayoutGroup: function(group) {
|
|
||||||
let options = this._buildOptionsString();
|
|
||||||
let [layouts, variants] = this._buildGroupStrings(group);
|
|
||||||
Meta.get_backend().set_keymap(layouts, variants, options);
|
|
||||||
},
|
|
||||||
|
|
||||||
_applyLayoutGroupIndex: function(idx) {
|
|
||||||
Meta.get_backend().lock_layout_group(idx);
|
|
||||||
},
|
|
||||||
|
|
||||||
apply: function(id) {
|
|
||||||
let info = this._layoutInfos[id];
|
|
||||||
if (!info)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this._current && this._current.group == info.group) {
|
|
||||||
if (this._current.groupIndex != info.groupIndex)
|
|
||||||
this._applyLayoutGroupIndex(info.groupIndex);
|
|
||||||
} else {
|
|
||||||
this._applyLayoutGroup(info.group);
|
|
||||||
this._applyLayoutGroupIndex(info.groupIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._current = info;
|
|
||||||
},
|
|
||||||
|
|
||||||
reapply: function() {
|
|
||||||
if (!this._current)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._applyLayoutGroup(this._current.group);
|
|
||||||
this._applyLayoutGroupIndex(this._current.groupIndex);
|
|
||||||
},
|
|
||||||
|
|
||||||
setUserLayouts: function(ids) {
|
|
||||||
this._current = null;
|
|
||||||
this._layoutInfos = {};
|
|
||||||
|
|
||||||
for (let i = 0; i < ids.length; ++i) {
|
|
||||||
let [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(ids[i]);
|
|
||||||
if (found)
|
|
||||||
this._layoutInfos[ids[i]] = { id: ids[i], layout: _layout, variant: _variant };
|
|
||||||
}
|
|
||||||
|
|
||||||
let i = 0;
|
|
||||||
let group = [];
|
|
||||||
for (let id in this._layoutInfos) {
|
|
||||||
// We need to leave one slot on each group free so that we
|
|
||||||
// can add a layout containing the symbols for the
|
|
||||||
// language used in UI strings to ensure that toolkits can
|
|
||||||
// handle mnemonics like Alt+Ф even if the user is
|
|
||||||
// actually typing in a different layout.
|
|
||||||
let groupIndex = i % (this.MAX_LAYOUTS_PER_GROUP - 1);
|
|
||||||
if (groupIndex == 0)
|
|
||||||
group = [];
|
|
||||||
|
|
||||||
let info = this._layoutInfos[id];
|
|
||||||
group[groupIndex] = info;
|
|
||||||
info.group = group;
|
|
||||||
info.groupIndex = groupIndex;
|
|
||||||
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getLocaleLayout: function() {
|
|
||||||
let locale = GLib.get_language_names()[0];
|
|
||||||
if (locale.indexOf('_') == -1)
|
|
||||||
locale = DEFAULT_LOCALE;
|
|
||||||
|
|
||||||
let [found, , id] = GnomeDesktop.get_input_source_from_locale(locale);
|
|
||||||
if (!found)
|
|
||||||
[, , id] = GnomeDesktop.get_input_source_from_locale(DEFAULT_LOCALE);
|
|
||||||
|
|
||||||
let [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(id);
|
|
||||||
if (found)
|
|
||||||
return { layout: _layout, variant: _variant };
|
|
||||||
else
|
|
||||||
return { layout: DEFAULT_LAYOUT, variant: DEFAULT_VARIANT };
|
|
||||||
},
|
|
||||||
|
|
||||||
_buildGroupStrings: function(_group) {
|
|
||||||
let group = _group.concat(this._localeLayoutInfo);
|
|
||||||
let layouts = group.map(function(g) { return g.layout; }).join(',');
|
|
||||||
let variants = group.map(function(g) { return g.variant; }).join(',');
|
|
||||||
return [layouts, variants];
|
|
||||||
},
|
|
||||||
|
|
||||||
setKeyboardOptions: function(options) {
|
|
||||||
this._xkbOptions = options;
|
|
||||||
},
|
|
||||||
|
|
||||||
_buildOptionsString: function() {
|
|
||||||
let options = this._xkbOptions.join(',');
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -58,14 +58,6 @@ const AppSwitcherPopup = new Lang.Class({
|
|||||||
this._currentWindow = -1;
|
this._currentWindow = -1;
|
||||||
|
|
||||||
this.thumbnailsVisible = false;
|
this.thumbnailsVisible = false;
|
||||||
|
|
||||||
let apps = Shell.AppSystem.get_default().get_running ();
|
|
||||||
|
|
||||||
if (apps.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._switcherList = new AppSwitcher(apps, this);
|
|
||||||
this._items = this._switcherList.icons;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_allocate: function (actor, box, flags) {
|
_allocate: function (actor, box, flags) {
|
||||||
@@ -81,6 +73,7 @@ const AppSwitcherPopup = new Lang.Class({
|
|||||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
||||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
||||||
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||||
|
let vPadding = this.actor.get_theme_node().get_vertical_padding();
|
||||||
let hPadding = leftPadding + rightPadding;
|
let hPadding = leftPadding + rightPadding;
|
||||||
|
|
||||||
let icon = this._items[this._selectedIndex].actor;
|
let icon = this._items[this._selectedIndex].actor;
|
||||||
@@ -106,6 +99,20 @@ const AppSwitcherPopup = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_createSwitcher: function() {
|
||||||
|
let apps = Shell.AppSystem.get_default().get_running ();
|
||||||
|
|
||||||
|
if (apps.length == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
this._switcherList = new AppSwitcher(apps, this);
|
||||||
|
this._items = this._switcherList.icons;
|
||||||
|
if (this._items.length == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
_initialSelection: function(backward, binding) {
|
_initialSelection: function(backward, binding) {
|
||||||
if (binding == 'switch-group') {
|
if (binding == 'switch-group') {
|
||||||
if (backward) {
|
if (backward) {
|
||||||
@@ -358,18 +365,9 @@ const WindowSwitcherPopup = new Lang.Class({
|
|||||||
Name: 'WindowSwitcherPopup',
|
Name: 'WindowSwitcherPopup',
|
||||||
Extends: SwitcherPopup.SwitcherPopup,
|
Extends: SwitcherPopup.SwitcherPopup,
|
||||||
|
|
||||||
_init: function() {
|
_init: function(items) {
|
||||||
this.parent();
|
this.parent(items);
|
||||||
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
|
||||||
|
|
||||||
let windows = this._getWindowList();
|
|
||||||
|
|
||||||
if (windows.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
let mode = this._settings.get_enum('app-icon-mode');
|
|
||||||
this._switcherList = new WindowList(windows, mode);
|
|
||||||
this._items = this._switcherList.icons;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_getWindowList: function() {
|
_getWindowList: function() {
|
||||||
@@ -377,6 +375,31 @@ const WindowSwitcherPopup = new Lang.Class({
|
|||||||
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_createSwitcher: function() {
|
||||||
|
let windows = this._getWindowList();
|
||||||
|
|
||||||
|
if (windows.length == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let mode = this._settings.get_enum('app-icon-mode');
|
||||||
|
this._switcherList = new WindowList(windows, mode);
|
||||||
|
this._items = this._switcherList.icons;
|
||||||
|
|
||||||
|
if (this._items.length == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_initialSelection: function(backward, binding) {
|
||||||
|
if (binding == 'switch-windows-backward' || backward)
|
||||||
|
this._select(this._items.length - 1);
|
||||||
|
else if (this._items.length == 1)
|
||||||
|
this._select(0);
|
||||||
|
else
|
||||||
|
this._select(1);
|
||||||
|
},
|
||||||
|
|
||||||
_keyPressHandler: function(keysym, action) {
|
_keyPressHandler: function(keysym, action) {
|
||||||
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
|
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
|
||||||
this._select(this._next());
|
this._select(this._next());
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
|
|||||||
const Animation = new Lang.Class({
|
const Animation = new Lang.Class({
|
||||||
Name: 'Animation',
|
Name: 'Animation',
|
||||||
|
|
||||||
_init: function(file, width, height, speed) {
|
_init: function(filename, width, height, speed) {
|
||||||
this.actor = new St.Bin();
|
this.actor = new St.Bin();
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
this._speed = speed;
|
this._speed = speed;
|
||||||
@@ -23,7 +23,7 @@ const Animation = new Lang.Class({
|
|||||||
this._frame = 0;
|
this._frame = 0;
|
||||||
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
this._animations = St.TextureCache.get_default().load_sliced_image (file, width, height, scaleFactor,
|
this._animations = St.TextureCache.get_default().load_sliced_image (filename, width, height, scaleFactor,
|
||||||
Lang.bind(this, this._animationsLoaded));
|
Lang.bind(this, this._animationsLoaded));
|
||||||
this.actor.set_child(this._animations);
|
this.actor.set_child(this._animations);
|
||||||
},
|
},
|
||||||
@@ -82,7 +82,7 @@ const AnimatedIcon = new Lang.Class({
|
|||||||
Name: 'AnimatedIcon',
|
Name: 'AnimatedIcon',
|
||||||
Extends: Animation,
|
Extends: Animation,
|
||||||
|
|
||||||
_init: function(file, size) {
|
_init: function(filename, size) {
|
||||||
this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
|
this.parent(filename, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -379,7 +379,9 @@ const AllView = new Lang.Class({
|
|||||||
this.actor.add_actor(this._scrollView);
|
this.actor.add_actor(this._scrollView);
|
||||||
|
|
||||||
this._scrollView.set_policy(Gtk.PolicyType.NEVER,
|
this._scrollView.set_policy(Gtk.PolicyType.NEVER,
|
||||||
Gtk.PolicyType.EXTERNAL);
|
Gtk.PolicyType.AUTOMATIC);
|
||||||
|
// we are only using ScrollView for the fade effect, hide scrollbars
|
||||||
|
this._scrollView.vscroll.hide();
|
||||||
this._adjustment = this._scrollView.vscroll.adjustment;
|
this._adjustment = this._scrollView.vscroll.adjustment;
|
||||||
|
|
||||||
this._pageIndicators = new PageIndicators();
|
this._pageIndicators = new PageIndicators();
|
||||||
@@ -1265,7 +1267,6 @@ const FolderIcon = new Lang.Class({
|
|||||||
addAppId(appInfo.get_id());
|
addAppId(appInfo.get_id());
|
||||||
});
|
});
|
||||||
|
|
||||||
this.actor.visible = this.view.getAllItems().length > 0;
|
|
||||||
this.view.loadGrid();
|
this.view.loadGrid();
|
||||||
this.emit('apps-changed');
|
this.emit('apps-changed');
|
||||||
},
|
},
|
||||||
@@ -1562,11 +1563,10 @@ const AppIcon = new Lang.Class({
|
|||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._menuTimeoutId = 0;
|
this._menuTimeoutId = 0;
|
||||||
this._stateChangedId = this.app.connect('notify::state', Lang.bind(this,
|
this._stateChangedId = this.app.connect('notify::state',
|
||||||
function () {
|
Lang.bind(this,
|
||||||
this._updateRunningStyle();
|
this._onStateChanged));
|
||||||
}));
|
this._onStateChanged();
|
||||||
this._updateRunningStyle();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
@@ -1587,7 +1587,7 @@ const AppIcon = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateRunningStyle: function() {
|
_onStateChanged: function() {
|
||||||
if (this.app.state != Shell.AppState.STOPPED)
|
if (this.app.state != Shell.AppState.STOPPED)
|
||||||
this.actor.add_style_class_name('running');
|
this.actor.add_style_class_name('running');
|
||||||
else
|
else
|
||||||
@@ -1687,8 +1687,7 @@ const AppIcon = new Lang.Class({
|
|||||||
activate: function (button) {
|
activate: function (button) {
|
||||||
let event = Clutter.get_current_event();
|
let event = Clutter.get_current_event();
|
||||||
let modifiers = event ? event.get_state() : 0;
|
let modifiers = event ? event.get_state() : 0;
|
||||||
let openNewWindow = this.app.can_open_new_window () &&
|
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK &&
|
||||||
modifiers & Clutter.ModifierType.CONTROL_MASK &&
|
|
||||||
this.app.state == Shell.AppState.RUNNING ||
|
this.app.state == Shell.AppState.RUNNING ||
|
||||||
button && button == 2;
|
button && button == 2;
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,6 @@ const RENAMED_DESKTOP_IDS = {
|
|||||||
'gcalctool.desktop': 'gnome-calculator.desktop',
|
'gcalctool.desktop': 'gnome-calculator.desktop',
|
||||||
'gedit.desktop': 'org.gnome.gedit.desktop',
|
'gedit.desktop': 'org.gnome.gedit.desktop',
|
||||||
'glchess.desktop': 'gnome-chess.desktop',
|
'glchess.desktop': 'gnome-chess.desktop',
|
||||||
'glines.desktop': 'five-or-more.desktop',
|
|
||||||
'gnect.desktop': 'four-in-a-row.desktop',
|
|
||||||
'gnibbles.desktop': 'gnome-nibbles.desktop',
|
|
||||||
'gnobots2.desktop': 'gnome-robots.desktop',
|
|
||||||
'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
|
|
||||||
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
|
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
|
||||||
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
|
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
|
||||||
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
|
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
|
||||||
@@ -28,9 +23,6 @@ const RENAMED_DESKTOP_IDS = {
|
|||||||
'gnome-software.desktop': 'org.gnome.Software.desktop',
|
'gnome-software.desktop': 'org.gnome.Software.desktop',
|
||||||
'gnome-weather.desktop': 'org.gnome.Weather.Application.desktop',
|
'gnome-weather.desktop': 'org.gnome.Weather.Application.desktop',
|
||||||
'gnomine.desktop': 'gnome-mines.desktop',
|
'gnomine.desktop': 'gnome-mines.desktop',
|
||||||
'gnotravex.desktop': 'gnome-tetravex.desktop',
|
|
||||||
'gnotski.desktop': 'gnome-klotski.desktop',
|
|
||||||
'gtali.desktop': 'tali.desktop',
|
|
||||||
'nautilus.desktop': 'org.gnome.Nautilus.desktop',
|
'nautilus.desktop': 'org.gnome.Nautilus.desktop',
|
||||||
'polari.desktop': 'org.gnome.Polari.desktop',
|
'polari.desktop': 'org.gnome.Polari.desktop',
|
||||||
'totem.desktop': 'org.gnome.Totem.desktop',
|
'totem.desktop': 'org.gnome.Totem.desktop',
|
||||||
|
|||||||
@@ -106,8 +106,6 @@ const Main = imports.ui.main;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
|
||||||
|
|
||||||
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
||||||
const PRIMARY_COLOR_KEY = 'primary-color';
|
const PRIMARY_COLOR_KEY = 'primary-color';
|
||||||
const SECONDARY_COLOR_KEY = 'secondary-color';
|
const SECONDARY_COLOR_KEY = 'secondary-color';
|
||||||
@@ -127,16 +125,6 @@ const ANIMATION_MIN_WAKEUP_INTERVAL = 1.0;
|
|||||||
|
|
||||||
let _backgroundCache = null;
|
let _backgroundCache = null;
|
||||||
|
|
||||||
function _fileEqual0(file1, file2) {
|
|
||||||
if (file1 == file2)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (!file1 || !file2)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return file1.equal(file2);
|
|
||||||
}
|
|
||||||
|
|
||||||
const BackgroundCache = new Lang.Class({
|
const BackgroundCache = new Lang.Class({
|
||||||
Name: 'BackgroundCache',
|
Name: 'BackgroundCache',
|
||||||
|
|
||||||
@@ -146,25 +134,25 @@ const BackgroundCache = new Lang.Class({
|
|||||||
this._backgroundSources = {};
|
this._backgroundSources = {};
|
||||||
},
|
},
|
||||||
|
|
||||||
monitorFile: function(file) {
|
monitorFile: function(filename) {
|
||||||
let key = file.hash();
|
if (this._fileMonitors[filename])
|
||||||
if (this._fileMonitors[key])
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
let file = Gio.File.new_for_path(filename);
|
||||||
let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null);
|
let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null);
|
||||||
monitor.connect('changed',
|
monitor.connect('changed',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this.emit('file-changed', file);
|
this.emit('file-changed', filename);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._fileMonitors[key] = monitor;
|
this._fileMonitors[filename] = monitor;
|
||||||
},
|
},
|
||||||
|
|
||||||
getAnimation: function(params) {
|
getAnimation: function(params) {
|
||||||
params = Params.parse(params, { file: null,
|
params = Params.parse(params, { filename: null,
|
||||||
onLoaded: null });
|
onLoaded: null });
|
||||||
|
|
||||||
if (_fileEqual0(this._animationFile, params.file)) {
|
if (this._animationFilename == params.filename) {
|
||||||
if (params.onLoaded) {
|
if (params.onLoaded) {
|
||||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||||
params.onLoaded(this._animation);
|
params.onLoaded(this._animation);
|
||||||
@@ -172,13 +160,12 @@ const BackgroundCache = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let animation = new Animation({ file: params.file });
|
let animation = new Animation({ filename: params.filename });
|
||||||
|
|
||||||
animation.load(Lang.bind(this, function() {
|
animation.load(Lang.bind(this, function() {
|
||||||
this._animationFile = params.file;
|
this._animationFilename = params.filename;
|
||||||
this._animation = animation;
|
this._animation = animation;
|
||||||
|
|
||||||
if (params.onLoaded) {
|
if (params.onLoaded) {
|
||||||
@@ -231,14 +218,14 @@ const Background = new Lang.Class({
|
|||||||
params = Params.parse(params, { monitorIndex: 0,
|
params = Params.parse(params, { monitorIndex: 0,
|
||||||
layoutManager: Main.layoutManager,
|
layoutManager: Main.layoutManager,
|
||||||
settings: null,
|
settings: null,
|
||||||
file: null,
|
filename: null,
|
||||||
style: null });
|
style: null });
|
||||||
|
|
||||||
this.background = new Meta.Background({ meta_screen: global.screen });
|
this.background = new Meta.Background({ meta_screen: global.screen });
|
||||||
this.background._delegate = this;
|
this.background._delegate = this;
|
||||||
|
|
||||||
this._settings = params.settings;
|
this._settings = params.settings;
|
||||||
this._file = params.file;
|
this._filename = params.filename;
|
||||||
this._style = params.style;
|
this._style = params.style;
|
||||||
this._monitorIndex = params.monitorIndex;
|
this._monitorIndex = params.monitorIndex;
|
||||||
this._layoutManager = params.layoutManager;
|
this._layoutManager = params.layoutManager;
|
||||||
@@ -255,7 +242,11 @@ const Background = new Lang.Class({
|
|||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._removeAnimationTimeout();
|
|
||||||
|
if (this._updateAnimationTimeoutId) {
|
||||||
|
GLib.source_remove (this._updateAnimationTimeoutId);
|
||||||
|
this._updateAnimationTimeoutId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
let i;
|
let i;
|
||||||
let keys = Object.keys(this._fileWatches);
|
let keys = Object.keys(this._fileWatches);
|
||||||
@@ -269,13 +260,6 @@ const Background = new Lang.Class({
|
|||||||
this._settingsChangedSignalId = 0;
|
this._settingsChangedSignalId = 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateResolution: function() {
|
|
||||||
if (this._animation) {
|
|
||||||
this._removeAnimationTimeout();
|
|
||||||
this._updateAnimation();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_setLoaded: function() {
|
_setLoaded: function() {
|
||||||
if (this.isLoaded)
|
if (this.isLoaded)
|
||||||
return;
|
return;
|
||||||
@@ -305,28 +289,18 @@ const Background = new Lang.Class({
|
|||||||
this.background.set_gradient(shadingType, color, secondColor);
|
this.background.set_gradient(shadingType, color, secondColor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_watchFile: function(file) {
|
_watchFile: function(filename) {
|
||||||
let key = file.hash();
|
if (this._fileWatches[filename])
|
||||||
if (this._fileWatches[key])
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._cache.monitorFile(file);
|
this._cache.monitorFile(filename);
|
||||||
let signalId = this._cache.connect('file-changed',
|
let signalId = this._cache.connect('file-changed',
|
||||||
Lang.bind(this, function(cache, changedFile) {
|
Lang.bind(this, function(cache, changedFile) {
|
||||||
if (changedFile.equal(file)) {
|
if (changedFile == filename) {
|
||||||
let imageCache = Meta.BackgroundImageCache.get_default();
|
|
||||||
imageCache.purge(changedFile);
|
|
||||||
this.emit('changed');
|
this.emit('changed');
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
this._fileWatches[key] = signalId;
|
this._fileWatches[filename] = signalId;
|
||||||
},
|
|
||||||
|
|
||||||
_removeAnimationTimeout: function() {
|
|
||||||
if (this._updateAnimationTimeoutId) {
|
|
||||||
GLib.source_remove(this._updateAnimationTimeoutId);
|
|
||||||
this._updateAnimationTimeoutId = 0;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateAnimation: function() {
|
_updateAnimation: function() {
|
||||||
@@ -342,9 +316,9 @@ const Background = new Lang.Class({
|
|||||||
this._animation.transitionProgress,
|
this._animation.transitionProgress,
|
||||||
this._style);
|
this._style);
|
||||||
} else if (files.length > 0) {
|
} else if (files.length > 0) {
|
||||||
this.background.set_file(files[0], this._style);
|
this.background.set_filename(files[0], this._style);
|
||||||
} else {
|
} else {
|
||||||
this.background.set_file(null, this._style);
|
this.background.set_filename(null, this._style);
|
||||||
}
|
}
|
||||||
this._queueUpdateAnimation();
|
this._queueUpdateAnimation();
|
||||||
});
|
});
|
||||||
@@ -401,8 +375,8 @@ const Background = new Lang.Class({
|
|||||||
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
|
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
|
||||||
},
|
},
|
||||||
|
|
||||||
_loadAnimation: function(file) {
|
_loadAnimation: function(filename) {
|
||||||
this._cache.getAnimation({ file: file,
|
this._cache.getAnimation({ filename: filename,
|
||||||
onLoaded: Lang.bind(this, function(animation) {
|
onLoaded: Lang.bind(this, function(animation) {
|
||||||
this._animation = animation;
|
this._animation = animation;
|
||||||
|
|
||||||
@@ -412,17 +386,17 @@ const Background = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._updateAnimation();
|
this._updateAnimation();
|
||||||
this._watchFile(file);
|
this._watchFile(filename);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_loadImage: function(file) {
|
_loadImage: function(filename) {
|
||||||
this.background.set_file(file, this._style);
|
this.background.set_filename(filename, this._style);
|
||||||
this._watchFile(file);
|
this._watchFile(filename);
|
||||||
|
|
||||||
let cache = Meta.BackgroundImageCache.get_default();
|
let cache = Meta.BackgroundImageCache.get_default();
|
||||||
let image = cache.load(file);
|
let image = cache.load(filename);
|
||||||
if (image.is_loaded())
|
if (image.is_loaded())
|
||||||
this._setLoaded();
|
this._setLoaded();
|
||||||
else {
|
else {
|
||||||
@@ -434,11 +408,11 @@ const Background = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_loadFile: function(file) {
|
_loadFile: function(filename) {
|
||||||
if (file.get_basename().endsWith('.xml'))
|
if (filename.endsWith('.xml'))
|
||||||
this._loadAnimation(file);
|
this._loadAnimation(filename);
|
||||||
else
|
else
|
||||||
this._loadImage(file);
|
this._loadImage(filename);
|
||||||
},
|
},
|
||||||
|
|
||||||
_load: function () {
|
_load: function () {
|
||||||
@@ -446,12 +420,12 @@ const Background = new Lang.Class({
|
|||||||
|
|
||||||
this._loadPattern();
|
this._loadPattern();
|
||||||
|
|
||||||
if (!this._file) {
|
if (!this._filename) {
|
||||||
this._setLoaded();
|
this._setLoaded();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._loadFile(this._file);
|
this._loadFile(this._filename);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(Background.prototype);
|
Signals.addSignalMethods(Background.prototype);
|
||||||
@@ -462,12 +436,11 @@ const SystemBackground = new Lang.Class({
|
|||||||
Name: 'SystemBackground',
|
Name: 'SystemBackground',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
|
let filename = global.datadir + '/theme/noise-texture.png';
|
||||||
|
|
||||||
if (_systemBackground == null) {
|
if (_systemBackground == null) {
|
||||||
_systemBackground = new Meta.Background({ meta_screen: global.screen });
|
_systemBackground = new Meta.Background({ meta_screen: global.screen });
|
||||||
_systemBackground.set_color(DEFAULT_BACKGROUND_COLOR);
|
_systemBackground.set_filename(filename, GDesktopEnums.BackgroundStyle.WALLPAPER);
|
||||||
_systemBackground.set_file(file, GDesktopEnums.BackgroundStyle.WALLPAPER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.actor = new Meta.BackgroundActor({ meta_screen: global.screen,
|
this.actor = new Meta.BackgroundActor({ meta_screen: global.screen,
|
||||||
@@ -475,7 +448,7 @@ const SystemBackground = new Lang.Class({
|
|||||||
background: _systemBackground });
|
background: _systemBackground });
|
||||||
|
|
||||||
let cache = Meta.BackgroundImageCache.get_default();
|
let cache = Meta.BackgroundImageCache.get_default();
|
||||||
let image = cache.load(file);
|
let image = cache.load(filename);
|
||||||
if (image.is_loaded()) {
|
if (image.is_loaded()) {
|
||||||
image = null;
|
image = null;
|
||||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||||
@@ -504,37 +477,23 @@ const BackgroundSource = new Lang.Class({
|
|||||||
this._overrideImage = GLib.getenv('SHELL_BACKGROUND_IMAGE');
|
this._overrideImage = GLib.getenv('SHELL_BACKGROUND_IMAGE');
|
||||||
this._settings = new Gio.Settings({ schema_id: settingsSchema });
|
this._settings = new Gio.Settings({ schema_id: settingsSchema });
|
||||||
this._backgrounds = [];
|
this._backgrounds = [];
|
||||||
|
|
||||||
this._monitorsChangedId = global.screen.connect('monitors-changed',
|
|
||||||
Lang.bind(this, this._onMonitorsChanged));
|
|
||||||
},
|
|
||||||
|
|
||||||
_onMonitorsChanged: function() {
|
|
||||||
for (let monitorIndex in this._backgrounds) {
|
|
||||||
let background = this._backgrounds[monitorIndex];
|
|
||||||
|
|
||||||
if (monitorIndex < this._layoutManager.monitors.length) {
|
|
||||||
background.updateResolution();
|
|
||||||
} else {
|
|
||||||
background.disconnect(background._changedId);
|
|
||||||
background.destroy();
|
|
||||||
delete this._backgrounds[monitorIndex];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getBackground: function(monitorIndex) {
|
getBackground: function(monitorIndex) {
|
||||||
let file = null;
|
let filename = null;
|
||||||
let style;
|
let style;
|
||||||
|
|
||||||
if (this._overrideImage != null) {
|
if (this._overrideImage != null) {
|
||||||
file = Gio.File.new_for_path(this._overrideImage);
|
filename = this._overrideImage;
|
||||||
style = GDesktopEnums.BackgroundStyle.ZOOM; // Hardcode
|
style = GDesktopEnums.BackgroundStyle.ZOOM; // Hardcode
|
||||||
} else {
|
} else {
|
||||||
style = this._settings.get_enum(BACKGROUND_STYLE_KEY);
|
style = this._settings.get_enum(BACKGROUND_STYLE_KEY);
|
||||||
if (style != GDesktopEnums.BackgroundStyle.NONE) {
|
if (style != GDesktopEnums.BackgroundStyle.NONE) {
|
||||||
let uri = this._settings.get_string(PICTURE_URI_KEY);
|
let uri = this._settings.get_string(PICTURE_URI_KEY);
|
||||||
file = Gio.File.new_for_commandline_arg(uri);
|
if (GLib.uri_parse_scheme(uri) != null)
|
||||||
|
filename = Gio.File.new_for_uri(uri).get_path();
|
||||||
|
else
|
||||||
|
filename = uri;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -542,7 +501,7 @@ const BackgroundSource = new Lang.Class({
|
|||||||
// they can have variants that depend on the aspect ratio and
|
// they can have variants that depend on the aspect ratio and
|
||||||
// size of the monitor; for other backgrounds we can use the
|
// size of the monitor; for other backgrounds we can use the
|
||||||
// same background object for all monitors.
|
// same background object for all monitors.
|
||||||
if (file == null || !file.get_basename().endsWith('.xml'))
|
if (filename == null || !filename.endsWith('.xml'))
|
||||||
monitorIndex = 0;
|
monitorIndex = 0;
|
||||||
|
|
||||||
if (!(monitorIndex in this._backgrounds)) {
|
if (!(monitorIndex in this._backgrounds)) {
|
||||||
@@ -550,12 +509,12 @@ const BackgroundSource = new Lang.Class({
|
|||||||
monitorIndex: monitorIndex,
|
monitorIndex: monitorIndex,
|
||||||
layoutManager: this._layoutManager,
|
layoutManager: this._layoutManager,
|
||||||
settings: this._settings,
|
settings: this._settings,
|
||||||
file: file,
|
filename: filename,
|
||||||
style: style
|
style: style
|
||||||
});
|
});
|
||||||
|
|
||||||
background._changedId = background.connect('changed', Lang.bind(this, function() {
|
let changedId = background.connect('changed', Lang.bind(this, function() {
|
||||||
background.disconnect(background._changedId);
|
background.disconnect(changedId);
|
||||||
background.destroy();
|
background.destroy();
|
||||||
delete this._backgrounds[monitorIndex];
|
delete this._backgrounds[monitorIndex];
|
||||||
}));
|
}));
|
||||||
@@ -567,13 +526,8 @@ const BackgroundSource = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
global.screen.disconnect(this._monitorsChangedId);
|
for (let monitorIndex in this._backgrounds)
|
||||||
|
this._backgrounds[monitorIndex].destroy();
|
||||||
for (let monitorIndex in this._backgrounds) {
|
|
||||||
let background = this._backgrounds[monitorIndex];
|
|
||||||
background.disconnect(background._changedId);
|
|
||||||
background.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._backgrounds = null;
|
this._backgrounds = null;
|
||||||
}
|
}
|
||||||
@@ -583,9 +537,9 @@ const Animation = new Lang.Class({
|
|||||||
Name: 'Animation',
|
Name: 'Animation',
|
||||||
|
|
||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { file: null });
|
params = Params.parse(params, { filename: null });
|
||||||
|
|
||||||
this.file = params.file;
|
this.filename = params.filename;
|
||||||
this.keyFrameFiles = [];
|
this.keyFrameFiles = [];
|
||||||
this.transitionProgress = 0.0;
|
this.transitionProgress = 0.0;
|
||||||
this.transitionDuration = 0.0;
|
this.transitionDuration = 0.0;
|
||||||
@@ -593,7 +547,9 @@ const Animation = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
load: function(callback) {
|
load: function(callback) {
|
||||||
this._show = new GnomeDesktop.BGSlideShow({ filename: this.file.get_path() });
|
let file = Gio.File.new_for_path(this.filename);
|
||||||
|
|
||||||
|
this._show = new GnomeDesktop.BGSlideShow({ filename: this.filename });
|
||||||
|
|
||||||
this._show.load_async(null,
|
this._show.load_async(null,
|
||||||
Lang.bind(this,
|
Lang.bind(this,
|
||||||
@@ -613,16 +569,16 @@ const Animation = new Lang.Class({
|
|||||||
if (this._show.get_num_slides() < 1)
|
if (this._show.get_num_slides() < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let [progress, duration, isFixed, filename1, filename2] = this._show.get_current_slide(monitor.width, monitor.height);
|
let [progress, duration, isFixed, file1, file2] = this._show.get_current_slide(monitor.width, monitor.height);
|
||||||
|
|
||||||
this.transitionDuration = duration;
|
this.transitionDuration = duration;
|
||||||
this.transitionProgress = progress;
|
this.transitionProgress = progress;
|
||||||
|
|
||||||
if (filename1)
|
if (file1)
|
||||||
this.keyFrameFiles.push(Gio.File.new_for_path(filename1));
|
this.keyFrameFiles.push(file1);
|
||||||
|
|
||||||
if (filename2)
|
if (file2)
|
||||||
this.keyFrameFiles.push(Gio.File.new_for_path(filename2));
|
this.keyFrameFiles.push(file2);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(Animation.prototype);
|
Signals.addSignalMethods(Animation.prototype);
|
||||||
@@ -745,7 +701,7 @@ const BackgroundManager = new Lang.Class({
|
|||||||
background.disconnect(changeSignalId);
|
background.disconnect(changeSignalId);
|
||||||
|
|
||||||
if (backgroundActor.loadedSignalId)
|
if (backgroundActor.loadedSignalId)
|
||||||
background.disconnect(backgroundActor.loadedSignalId);
|
backgroundActor.background._delegate.disconnect(backgroundActor.loadedSignalId);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return backgroundActor;
|
return backgroundActor;
|
||||||
|
|||||||
@@ -13,11 +13,9 @@ const Shell = imports.gi.Shell;
|
|||||||
|
|
||||||
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||||
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||||
const ELLIPSIS_CHAR = '\u2026';
|
|
||||||
|
|
||||||
// alias to prevent xgettext from picking up strings translated in GTK+
|
// alias to prevent xgettext from picking up strings translated in GTK+
|
||||||
const gtk30_ = Gettext_gtk30.gettext;
|
const gtk30_ = Gettext_gtk30.gettext;
|
||||||
const NC_ = function(context, str) { return str; };
|
|
||||||
|
|
||||||
// in org.gnome.desktop.interface
|
// in org.gnome.desktop.interface
|
||||||
const CLOCK_FORMAT_KEY = 'clock-format';
|
const CLOCK_FORMAT_KEY = 'clock-format';
|
||||||
@@ -34,10 +32,12 @@ function _sameDay(dateA, dateB) {
|
|||||||
return _sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
|
return _sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO: maybe needs config - right now we assume that Saturday and
|
||||||
|
* Sunday are non-work days (not true in e.g. Israel, it's Sunday and
|
||||||
|
* Monday there)
|
||||||
|
*/
|
||||||
function _isWorkDay(date) {
|
function _isWorkDay(date) {
|
||||||
/* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
return date.getDay() != 0 && date.getDay() != 6;
|
||||||
let days = C_('calendar-no-work', "06");
|
|
||||||
return days.indexOf(date.getDay().toString()) == -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getBeginningOfDay(date) {
|
function _getBeginningOfDay(date) {
|
||||||
@@ -58,21 +58,19 @@ function _getEndOfDay(date) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _formatEventTime(event, clockFormat, periodBegin, periodEnd) {
|
function _formatEventTime(event, clockFormat) {
|
||||||
let ret;
|
let ret;
|
||||||
let allDay = (event.allDay || (event.date <= periodBegin && event.end >= periodEnd));
|
if (event.allDay) {
|
||||||
if (allDay) {
|
|
||||||
/* Translators: Shown in calendar event list for all day events
|
/* Translators: Shown in calendar event list for all day events
|
||||||
* Keep it short, best if you can use less then 10 characters
|
* Keep it short, best if you can use less then 10 characters
|
||||||
*/
|
*/
|
||||||
ret = C_("event list time", "All Day");
|
ret = C_("event list time", "All Day");
|
||||||
} else {
|
} else {
|
||||||
let date = event.date >= periodBegin ? event.date : event.end;
|
|
||||||
switch (clockFormat) {
|
switch (clockFormat) {
|
||||||
case '24h':
|
case '24h':
|
||||||
/* Translators: Shown in calendar event list, if 24h format,
|
/* Translators: Shown in calendar event list, if 24h format,
|
||||||
\u2236 is a ratio character, similar to : */
|
\u2236 is a ratio character, similar to : */
|
||||||
ret = date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
|
ret = event.date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -81,13 +79,30 @@ function _formatEventTime(event, clockFormat, periodBegin, periodEnd) {
|
|||||||
/* Translators: Shown in calendar event list, if 12h format,
|
/* Translators: Shown in calendar event list, if 12h format,
|
||||||
\u2236 is a ratio character, similar to : and \u2009 is
|
\u2236 is a ratio character, similar to : and \u2009 is
|
||||||
a thin space */
|
a thin space */
|
||||||
ret = date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
|
ret = event.date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _getCalendarWeekForDate(date) {
|
||||||
|
// Based on the algorithms found here:
|
||||||
|
// http://en.wikipedia.org/wiki/Talk:ISO_week_date
|
||||||
|
let midnightDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
||||||
|
// Need to get Monday to be 1 ... Sunday to be 7
|
||||||
|
let dayOfWeek = 1 + ((midnightDate.getDay() + 6) % 7);
|
||||||
|
let nearestThursday = new Date(midnightDate.getFullYear(), midnightDate.getMonth(),
|
||||||
|
midnightDate.getDate() + (4 - dayOfWeek));
|
||||||
|
|
||||||
|
let jan1st = new Date(nearestThursday.getFullYear(), 0, 1);
|
||||||
|
let diffDate = nearestThursday - jan1st;
|
||||||
|
let dayNumber = Math.floor(Math.abs(diffDate) / MSECS_IN_DAY);
|
||||||
|
let weekNumber = Math.floor(dayNumber / 7) + 1;
|
||||||
|
|
||||||
|
return weekNumber;
|
||||||
|
}
|
||||||
|
|
||||||
function _getCalendarDayAbbreviation(dayNumber) {
|
function _getCalendarDayAbbreviation(dayNumber) {
|
||||||
let abbreviations = [
|
let abbreviations = [
|
||||||
/* Translators: Calendar grid abbreviation for Sunday.
|
/* Translators: Calendar grid abbreviation for Sunday.
|
||||||
@@ -233,25 +248,12 @@ const DBusEventSource = new Lang.Class({
|
|||||||
this._initialized = false;
|
this._initialized = false;
|
||||||
this._dbusProxy = new CalendarServer();
|
this._dbusProxy = new CalendarServer();
|
||||||
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
|
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
|
||||||
let loaded = false;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this._dbusProxy.init_finish(result);
|
this._dbusProxy.init_finish(result);
|
||||||
loaded = true;
|
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
|
|
||||||
// Ignore timeouts and install signals as normal, because with high
|
|
||||||
// probability the service will appear later on, and we will get a
|
|
||||||
// NameOwnerChanged which will finish loading
|
|
||||||
//
|
|
||||||
// (But still _initialized to false, because the proxy does not know
|
|
||||||
// about the HasCalendars property and would cause an exception trying
|
|
||||||
// to read it)
|
|
||||||
} else {
|
|
||||||
log('Error loading calendars: ' + e.message);
|
log('Error loading calendars: ' + e.message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
|
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
|
||||||
|
|
||||||
@@ -266,11 +268,9 @@ const DBusEventSource = new Lang.Class({
|
|||||||
this.emit('notify::has-calendars');
|
this.emit('notify::has-calendars');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._initialized = loaded;
|
this._initialized = true;
|
||||||
if (loaded) {
|
|
||||||
this.emit('notify::has-calendars');
|
this.emit('notify::has-calendars');
|
||||||
this._onNameAppeared();
|
this._onNameAppeared();
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -292,7 +292,6 @@ const DBusEventSource = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onNameAppeared: function(owner) {
|
_onNameAppeared: function(owner) {
|
||||||
this._initialized = true;
|
|
||||||
this._resetCache();
|
this._resetCache();
|
||||||
this._loadEvents(true);
|
this._loadEvents(true);
|
||||||
},
|
},
|
||||||
@@ -362,12 +361,6 @@ const DBusEventSource = new Lang.Class({
|
|||||||
result.push(event);
|
result.push(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.sort(function(event1, event2) {
|
|
||||||
// sort events by end time on ending day
|
|
||||||
let d1 = event1.date < begin && event1.end <= end ? event1.end : event1.date;
|
|
||||||
let d2 = event2.date < begin && event2.end <= end ? event2.end : event2.date;
|
|
||||||
return d1.getTime() - d2.getTime();
|
|
||||||
});
|
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -601,7 +594,6 @@ const Calendar = new Lang.Class({
|
|||||||
beginDate.setHours(12);
|
beginDate.setHours(12);
|
||||||
|
|
||||||
this._calendarBegin = new Date(beginDate);
|
this._calendarBegin = new Date(beginDate);
|
||||||
this._markedAsToday = now;
|
|
||||||
|
|
||||||
let year = beginDate.getYear();
|
let year = beginDate.getYear();
|
||||||
|
|
||||||
@@ -669,7 +661,7 @@ const Calendar = new Lang.Class({
|
|||||||
this._buttons.push(button);
|
this._buttons.push(button);
|
||||||
|
|
||||||
if (this._useWeekdate && iter.getDay() == 4) {
|
if (this._useWeekdate && iter.getDay() == 4) {
|
||||||
let label = new St.Label({ text: iter.toLocaleFormat('%V'),
|
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
|
||||||
style_class: 'calendar-day-base calendar-week-number'});
|
style_class: 'calendar-day-base calendar-week-number'});
|
||||||
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
||||||
}
|
}
|
||||||
@@ -693,7 +685,7 @@ const Calendar = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
|
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
|
||||||
|
|
||||||
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin) || !_sameDay(now, this._markedAsToday))
|
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin))
|
||||||
this._rebuildCalendar();
|
this._rebuildCalendar();
|
||||||
|
|
||||||
this._buttons.forEach(Lang.bind(this, function(button) {
|
this._buttons.forEach(Lang.bind(this, function(button) {
|
||||||
@@ -729,16 +721,12 @@ const EventsList = new Lang.Class({
|
|||||||
this._eventSource.connect('changed', Lang.bind(this, this._update));
|
this._eventSource.connect('changed', Lang.bind(this, this._update));
|
||||||
},
|
},
|
||||||
|
|
||||||
_addEvent: function(event, index, includeDayName, periodBegin, periodEnd) {
|
_addEvent: function(event, index, includeDayName) {
|
||||||
let dayString;
|
let dayString;
|
||||||
if (includeDayName) {
|
if (includeDayName)
|
||||||
if (event.date >= periodBegin)
|
|
||||||
dayString = _getEventDayAbbreviation(event.date.getDay());
|
dayString = _getEventDayAbbreviation(event.date.getDay());
|
||||||
else /* show event end day if it began earlier */
|
else
|
||||||
dayString = _getEventDayAbbreviation(event.end.getDay());
|
|
||||||
} else {
|
|
||||||
dayString = '';
|
dayString = '';
|
||||||
}
|
|
||||||
|
|
||||||
let dayLabel = new St.Label({ style_class: 'events-day-dayname',
|
let dayLabel = new St.Label({ style_class: 'events-day-dayname',
|
||||||
text: dayString,
|
text: dayString,
|
||||||
@@ -751,30 +739,16 @@ const EventsList = new Lang.Class({
|
|||||||
|
|
||||||
let layout = this.actor.layout_manager;
|
let layout = this.actor.layout_manager;
|
||||||
layout.attach(dayLabel, rtl ? 2 : 0, index, 1, 1);
|
layout.attach(dayLabel, rtl ? 2 : 0, index, 1, 1);
|
||||||
|
|
||||||
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
|
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
|
||||||
let timeString = _formatEventTime(event, clockFormat, periodBegin, periodEnd);
|
let timeString = _formatEventTime(event, clockFormat);
|
||||||
let timeLabel = new St.Label({ style_class: 'events-day-time',
|
let timeLabel = new St.Label({ style_class: 'events-day-time',
|
||||||
text: timeString,
|
text: timeString,
|
||||||
y_align: Clutter.ActorAlign.START });
|
y_align: Clutter.ActorAlign.START });
|
||||||
timeLabel.clutter_text.line_wrap = false;
|
timeLabel.clutter_text.line_wrap = false;
|
||||||
timeLabel.clutter_text.ellipsize = false;
|
timeLabel.clutter_text.ellipsize = false;
|
||||||
|
|
||||||
let preEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
|
layout.attach(timeLabel, 1, index, 1, 1);
|
||||||
text: ELLIPSIS_CHAR,
|
|
||||||
y_align: Clutter.ActorAlign.START });
|
|
||||||
let postEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
|
|
||||||
text: ELLIPSIS_CHAR,
|
|
||||||
y_align: Clutter.ActorAlign.START });
|
|
||||||
if (event.allDay || event.date >= periodBegin)
|
|
||||||
preEllipsisLabel.opacity = 0;
|
|
||||||
if (event.allDay || event.end <= periodEnd)
|
|
||||||
postEllipsisLabel.opacity = 0;
|
|
||||||
|
|
||||||
let timeLabelBoxLayout = new St.BoxLayout();
|
|
||||||
timeLabelBoxLayout.add(preEllipsisLabel);
|
|
||||||
timeLabelBoxLayout.add(timeLabel);
|
|
||||||
timeLabelBoxLayout.add(postEllipsisLabel);
|
|
||||||
layout.attach(timeLabelBoxLayout, 1, index, 1, 1);
|
|
||||||
|
|
||||||
let titleLabel = new St.Label({ style_class: 'events-day-task',
|
let titleLabel = new St.Label({ style_class: 'events-day-task',
|
||||||
text: event.summary,
|
text: event.summary,
|
||||||
@@ -785,8 +759,8 @@ const EventsList = new Lang.Class({
|
|||||||
layout.attach(titleLabel, rtl ? 0 : 2, index, 1, 1);
|
layout.attach(titleLabel, rtl ? 0 : 2, index, 1, 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
_addPeriod: function(header, index, periodBegin, periodEnd, includeDayName, showNothingScheduled) {
|
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
|
||||||
let events = this._eventSource.getEvents(periodBegin, periodEnd);
|
let events = this._eventSource.getEvents(begin, end);
|
||||||
|
|
||||||
if (events.length == 0 && !showNothingScheduled)
|
if (events.length == 0 && !showNothingScheduled)
|
||||||
return index;
|
return index;
|
||||||
@@ -797,14 +771,15 @@ const EventsList = new Lang.Class({
|
|||||||
index++;
|
index++;
|
||||||
|
|
||||||
for (let n = 0; n < events.length; n++) {
|
for (let n = 0; n < events.length; n++) {
|
||||||
this._addEvent(events[n], index, includeDayName, periodBegin, periodEnd);
|
this._addEvent(events[n], index, includeDayName);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events.length == 0 && showNothingScheduled) {
|
if (events.length == 0 && showNothingScheduled) {
|
||||||
|
let now = new Date();
|
||||||
/* Translators: Text to show if there are no events */
|
/* Translators: Text to show if there are no events */
|
||||||
let nothingEvent = new CalendarEvent(periodBegin, periodBegin, _("Nothing Scheduled"), true);
|
let nothingEvent = new CalendarEvent(now, now, _("Nothing Scheduled"), true);
|
||||||
this._addEvent(nothingEvent, index, false, periodBegin, periodEnd);
|
this._addEvent(nothingEvent, index, false);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,17 +792,14 @@ const EventsList = new Lang.Class({
|
|||||||
let dayBegin = _getBeginningOfDay(day);
|
let dayBegin = _getBeginningOfDay(day);
|
||||||
let dayEnd = _getEndOfDay(day);
|
let dayEnd = _getEndOfDay(day);
|
||||||
|
|
||||||
let dayFormat;
|
let dayString;
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
if (_sameYear(day, now))
|
if (_sameYear(day, now))
|
||||||
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
||||||
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
|
dayString = day.toLocaleFormat(C_("calendar heading", "%A, %B %d"));
|
||||||
"%A, %B %d"));
|
|
||||||
else
|
else
|
||||||
/* Translators: Shown on calendar heading when selected day occurs on different year */
|
/* Translators: Shown on calendar heading when selected day occurs on different year */
|
||||||
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
|
dayString = day.toLocaleFormat(C_("calendar heading", "%A, %B %d, %Y"));
|
||||||
"%A, %B %d, %Y"));
|
|
||||||
let dayString = day.toLocaleFormat(dayFormat);
|
|
||||||
this._addPeriod(dayString, 0, dayBegin, dayEnd, false, true);
|
this._addPeriod(dayString, 0, dayBegin, dayEnd, false, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ const KeyringDialog = new Lang.Class({
|
|||||||
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
||||||
layout_manager: layout });
|
layout_manager: layout });
|
||||||
layout.hookup_style(table);
|
layout.hookup_style(table);
|
||||||
let rtl = table.get_text_direction() == Clutter.TextDirection.RTL;
|
|
||||||
let row = 0;
|
let row = 0;
|
||||||
|
|
||||||
if (this.prompt.password_visible) {
|
if (this.prompt.password_visible) {
|
||||||
@@ -93,6 +92,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
label.set_text(_("Password:"));
|
label.set_text(_("Password:"));
|
||||||
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
layout.attach(label, 0, row, 1, 1);
|
||||||
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
text: '',
|
text: '',
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
@@ -100,14 +100,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
||||||
|
|
||||||
if (rtl) {
|
|
||||||
layout.attach(this._passwordEntry, 0, row, 1, 1);
|
|
||||||
layout.attach(label, 1, row, 1, 1);
|
|
||||||
} else {
|
|
||||||
layout.attach(label, 0, row, 1, 1);
|
|
||||||
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
||||||
}
|
|
||||||
row++;
|
row++;
|
||||||
} else {
|
} else {
|
||||||
this._passwordEntry = null;
|
this._passwordEntry = null;
|
||||||
@@ -118,6 +111,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
x_align: Clutter.ActorAlign.START,
|
x_align: Clutter.ActorAlign.START,
|
||||||
y_align: Clutter.ActorAlign.CENTER }));
|
y_align: Clutter.ActorAlign.CENTER }));
|
||||||
label.set_text(_("Type again:"));
|
label.set_text(_("Type again:"));
|
||||||
|
layout.attach(label, 0, row, 1, 1);
|
||||||
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
text: '',
|
text: '',
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
@@ -125,13 +119,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
|
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
|
||||||
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
|
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
|
||||||
if (rtl) {
|
|
||||||
layout.attach(this._confirmEntry, 0, row, 1, 1);
|
|
||||||
layout.attach(label, 1, row, 1, 1);
|
|
||||||
} else {
|
|
||||||
layout.attach(label, 0, row, 1, 1);
|
|
||||||
layout.attach(this._confirmEntry, 1, row, 1, 1);
|
layout.attach(this._confirmEntry, 1, row, 1, 1);
|
||||||
}
|
|
||||||
row++;
|
row++;
|
||||||
} else {
|
} else {
|
||||||
this._confirmEntry = null;
|
this._confirmEntry = null;
|
||||||
@@ -144,7 +132,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
let choice = new CheckBox.CheckBox();
|
let choice = new CheckBox.CheckBox();
|
||||||
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
|
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
|
||||||
layout.attach(choice.actor, rtl ? 0 : 1, row, 1, 1);
|
layout.attach(choice.actor, 1, row, 1, 1);
|
||||||
row++;
|
row++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +140,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
x_align: Clutter.ActorAlign.START });
|
x_align: Clutter.ActorAlign.START });
|
||||||
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
warning.clutter_text.line_wrap = true;
|
warning.clutter_text.line_wrap = true;
|
||||||
layout.attach(warning, rtl ? 0 : 1, row, 1, 1);
|
layout.attach(warning, 1, row, 1, 1);
|
||||||
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||||
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
|
|||||||
@@ -380,12 +380,6 @@ const VPNRequestHandler = new Lang.Class({
|
|||||||
argv.push('-i');
|
argv.push('-i');
|
||||||
if (flags & NMClient.SecretAgentGetSecretsFlags.REQUEST_NEW)
|
if (flags & NMClient.SecretAgentGetSecretsFlags.REQUEST_NEW)
|
||||||
argv.push('-r');
|
argv.push('-r');
|
||||||
if (authHelper.supportsHints) {
|
|
||||||
for (let i = 0; i < hints.length; i++) {
|
|
||||||
argv.push('-t');
|
|
||||||
argv.push(hints[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this._newStylePlugin = authHelper.externalUIMode;
|
this._newStylePlugin = authHelper.externalUIMode;
|
||||||
|
|
||||||
@@ -604,9 +598,7 @@ const NetworkAgent = new Lang.Class({
|
|||||||
Name: 'NetworkAgent',
|
Name: 'NetworkAgent',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
|
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent' });
|
||||||
capabilities: NMClient.SecretAgentCapabilities.VPN_HINTS
|
|
||||||
});
|
|
||||||
|
|
||||||
this._dialogs = { };
|
this._dialogs = { };
|
||||||
this._vpnRequests = { };
|
this._vpnRequests = { };
|
||||||
@@ -706,23 +698,16 @@ const NetworkAgent = new Lang.Class({
|
|||||||
let service = keyfile.get_string('VPN Connection', 'service');
|
let service = keyfile.get_string('VPN Connection', 'service');
|
||||||
let binary = keyfile.get_string('GNOME', 'auth-dialog');
|
let binary = keyfile.get_string('GNOME', 'auth-dialog');
|
||||||
let externalUIMode = false;
|
let externalUIMode = false;
|
||||||
let hints = false;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
externalUIMode = keyfile.get_boolean('GNOME', 'supports-external-ui-mode');
|
externalUIMode = keyfile.get_boolean('GNOME', 'supports-external-ui-mode');
|
||||||
} catch(e) { } // ignore errors if key does not exist
|
} catch(e) { } // ignore errors if key does not exist
|
||||||
|
|
||||||
try {
|
|
||||||
hints = keyfile.get_boolean('GNOME', 'supports-hints');
|
|
||||||
} catch(e) { } // ignore errors if key does not exist
|
|
||||||
|
|
||||||
let path = binary;
|
let path = binary;
|
||||||
if (!GLib.path_is_absolute(path)) {
|
if (!GLib.path_is_absolute(path)) {
|
||||||
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE))
|
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE))
|
||||||
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode };
|
||||||
else
|
else
|
||||||
throw new Error('VPN plugin at %s is not executable'.format(path));
|
throw new Error('VPN plugin at %s is not executable'.format(path));
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ const NotificationDirection = {
|
|||||||
RECEIVED: 'chat-received'
|
RECEIVED: 'chat-received'
|
||||||
};
|
};
|
||||||
|
|
||||||
const N_ = function(s) { return s; };
|
|
||||||
|
|
||||||
function makeMessageFromTpMessage(tpMessage, direction) {
|
function makeMessageFromTpMessage(tpMessage, direction) {
|
||||||
let [text, flags] = tpMessage.to_text();
|
let [text, flags] = tpMessage.to_text();
|
||||||
|
|
||||||
@@ -952,70 +950,70 @@ const ChatNotification = new Lang.Class({
|
|||||||
// Show only the time if date is on today
|
// Show only the time if date is on today
|
||||||
if(daysAgo < 1){
|
if(daysAgo < 1){
|
||||||
/* Translators: Time in 24h format */
|
/* Translators: Time in 24h format */
|
||||||
format = N_("%H\u2236%M");
|
format = _("%H\u2236%M");
|
||||||
}
|
}
|
||||||
// Show the word "Yesterday" and time if date is on yesterday
|
// Show the word "Yesterday" and time if date is on yesterday
|
||||||
else if(daysAgo <2){
|
else if(daysAgo <2){
|
||||||
/* Translators: this is the word "Yesterday" followed by a
|
/* Translators: this is the word "Yesterday" followed by a
|
||||||
time string in 24h format. i.e. "Yesterday, 14:30" */
|
time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("Yesterday, %H\u2236%M");
|
format = _("Yesterday, %H\u2236%M");
|
||||||
}
|
}
|
||||||
// Show a week day and time if date is in the last week
|
// Show a week day and time if date is in the last week
|
||||||
else if (daysAgo < 7) {
|
else if (daysAgo < 7) {
|
||||||
/* Translators: this is the week day name followed by a time
|
/* Translators: this is the week day name followed by a time
|
||||||
string in 24h format. i.e. "Monday, 14:30" */
|
string in 24h format. i.e. "Monday, 14:30" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%A, %H\u2236%M");
|
format = _("%A, %H\u2236%M");
|
||||||
|
|
||||||
} else if (date.getYear() == now.getYear()) {
|
} else if (date.getYear() == now.getYear()) {
|
||||||
/* Translators: this is the month name and day number
|
/* Translators: this is the month name and day number
|
||||||
followed by a time string in 24h format.
|
followed by a time string in 24h format.
|
||||||
i.e. "May 25, 14:30" */
|
i.e. "May 25, 14:30" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%B %d, %H\u2236%M");
|
format = _("%B %d, %H\u2236%M");
|
||||||
} else {
|
} else {
|
||||||
/* Translators: this is the month name, day number, year
|
/* Translators: this is the month name, day number, year
|
||||||
number followed by a time string in 24h format.
|
number followed by a time string in 24h format.
|
||||||
i.e. "May 25 2012, 14:30" */
|
i.e. "May 25 2012, 14:30" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%B %d %Y, %H\u2236%M");
|
format = _("%B %d %Y, %H\u2236%M");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Show only the time if date is on today
|
// Show only the time if date is on today
|
||||||
if(daysAgo < 1){
|
if(daysAgo < 1){
|
||||||
/* Translators: Time in 24h format */
|
/* Translators: Time in 24h format */
|
||||||
format = N_("%l\u2236%M %p");
|
format = _("%l\u2236%M %p");
|
||||||
}
|
}
|
||||||
// Show the word "Yesterday" and time if date is on yesterday
|
// Show the word "Yesterday" and time if date is on yesterday
|
||||||
else if(daysAgo <2){
|
else if(daysAgo <2){
|
||||||
/* Translators: this is the word "Yesterday" followed by a
|
/* Translators: this is the word "Yesterday" followed by a
|
||||||
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("Yesterday, %l\u2236%M %p");
|
format = _("Yesterday, %l\u2236%M %p");
|
||||||
}
|
}
|
||||||
// Show a week day and time if date is in the last week
|
// Show a week day and time if date is in the last week
|
||||||
else if (daysAgo < 7) {
|
else if (daysAgo < 7) {
|
||||||
/* Translators: this is the week day name followed by a time
|
/* Translators: this is the week day name followed by a time
|
||||||
string in 12h format. i.e. "Monday, 2:30 pm" */
|
string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%A, %l\u2236%M %p");
|
format = _("%A, %l\u2236%M %p");
|
||||||
|
|
||||||
} else if (date.getYear() == now.getYear()) {
|
} else if (date.getYear() == now.getYear()) {
|
||||||
/* Translators: this is the month name and day number
|
/* Translators: this is the month name and day number
|
||||||
followed by a time string in 12h format.
|
followed by a time string in 12h format.
|
||||||
i.e. "May 25, 2:30 pm" */
|
i.e. "May 25, 2:30 pm" */
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%B %d, %l\u2236%M %p");
|
format = _("%B %d, %l\u2236%M %p");
|
||||||
} else {
|
} else {
|
||||||
/* Translators: this is the month name, day number, year
|
/* Translators: this is the month name, day number, year
|
||||||
number followed by a time string in 12h format.
|
number followed by a time string in 12h format.
|
||||||
i.e. "May 25 2012, 2:30 pm"*/
|
i.e. "May 25 2012, 2:30 pm"*/
|
||||||
// xgettext:no-c-format
|
// xgettext:no-c-format
|
||||||
format = N_("%B %d %Y, %l\u2236%M %p");
|
format = _("%B %d %Y, %l\u2236%M %p");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return date.toLocaleFormat(Shell.util_translate_time_string(format));
|
return date.toLocaleFormat(format);
|
||||||
},
|
},
|
||||||
|
|
||||||
appendTimestamp: function() {
|
appendTimestamp: function() {
|
||||||
@@ -1266,8 +1264,9 @@ const SubscriptionRequestNotification = new Lang.Class({
|
|||||||
let file = contact.get_avatar_file();
|
let file = contact.get_avatar_file();
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
let uri = file.get_uri();
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
iconBox.child = textureCache.load_file_async(file, iconBox._size, iconBox._size, scaleFactor);
|
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ const CtrlAltTabManager = new Lang.Class({
|
|||||||
if (app)
|
if (app)
|
||||||
icon = app.create_icon_texture(POPUP_APPICON_SIZE);
|
icon = app.create_icon_texture(POPUP_APPICON_SIZE);
|
||||||
else
|
else
|
||||||
icon = textureCache.bind_cairo_surface_property(windows[i], 'icon');
|
icon = textureCache.bind_pixbuf_property(windows[i], 'icon');
|
||||||
}
|
}
|
||||||
|
|
||||||
items.push({ name: windows[i].title,
|
items.push({ name: windows[i].title,
|
||||||
@@ -140,10 +140,20 @@ const CtrlAltTabPopup = new Lang.Class({
|
|||||||
Name: 'CtrlAltTabPopup',
|
Name: 'CtrlAltTabPopup',
|
||||||
Extends: SwitcherPopup.SwitcherPopup,
|
Extends: SwitcherPopup.SwitcherPopup,
|
||||||
|
|
||||||
_init: function(items) {
|
_createSwitcher: function() {
|
||||||
this.parent(items);
|
|
||||||
|
|
||||||
this._switcherList = new CtrlAltTabSwitcher(this._items);
|
this._switcherList = new CtrlAltTabSwitcher(this._items);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_initialSelection: function(backward, binding) {
|
||||||
|
if (binding == 'switch-panels') {
|
||||||
|
if (backward)
|
||||||
|
this._selectedIndex = this._items.length - 1;
|
||||||
|
} else if (binding == 'switch-panels-backward') {
|
||||||
|
if (!backward)
|
||||||
|
this._selectedIndex = this._items.length - 1;
|
||||||
|
}
|
||||||
|
this._select(this._selectedIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
_keyPressHandler: function(keysym, action) {
|
_keyPressHandler: function(keysym, action) {
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||||
const GObject = imports.gi.GObject;
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Cairo = imports.cairo;
|
const Cairo = imports.cairo;
|
||||||
@@ -125,19 +124,14 @@ const DateMenuButton = new Lang.Class({
|
|||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
this._calendar.setDate(now);
|
this._calendar.setDate(now);
|
||||||
|
|
||||||
/* Translators: This is the date format to use when the calendar popup is
|
|
||||||
* shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
|
||||||
*/
|
|
||||||
let dateFormat = Shell.util_translate_time_string (N_("%A %B %e, %Y"));
|
|
||||||
this._date.set_label(now.toLocaleFormat(dateFormat));
|
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Done with hbox for calendar and event list
|
// Done with hbox for calendar and event list
|
||||||
|
|
||||||
this._clock = new GnomeDesktop.WallClock();
|
this._clock = new GnomeDesktop.WallClock();
|
||||||
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
|
this._clock.connect('notify::clock', Lang.bind(this, this._updateClockAndDate));
|
||||||
|
this._updateClockAndDate();
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
@@ -147,7 +141,7 @@ const DateMenuButton = new Lang.Class({
|
|||||||
let now = new Date();
|
let now = new Date();
|
||||||
return now.getYear() == date.getYear() &&
|
return now.getYear() == date.getYear() &&
|
||||||
now.getMonth() == date.getMonth() &&
|
now.getMonth() == date.getMonth() &&
|
||||||
now.getDate() == date.getDate();
|
now.getDay() == date.getDay();
|
||||||
},
|
},
|
||||||
|
|
||||||
_appInstalledChanged: function() {
|
_appInstalledChanged: function() {
|
||||||
@@ -173,10 +167,6 @@ const DateMenuButton = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_getEventSource: function() {
|
|
||||||
return new Calendar.DBusEventSource();
|
|
||||||
},
|
|
||||||
|
|
||||||
_setEventSource: function(eventSource) {
|
_setEventSource: function(eventSource) {
|
||||||
if (this._eventSource)
|
if (this._eventSource)
|
||||||
this._eventSource.destroy();
|
this._eventSource.destroy();
|
||||||
@@ -194,7 +184,7 @@ const DateMenuButton = new Lang.Class({
|
|||||||
let eventSource;
|
let eventSource;
|
||||||
let showEvents = Main.sessionMode.showCalendarEvents;
|
let showEvents = Main.sessionMode.showCalendarEvents;
|
||||||
if (showEvents) {
|
if (showEvents) {
|
||||||
eventSource = this._getEventSource();
|
eventSource = new Calendar.DBusEventSource();
|
||||||
} else {
|
} else {
|
||||||
eventSource = new Calendar.EmptyEventSource();
|
eventSource = new Calendar.EmptyEventSource();
|
||||||
}
|
}
|
||||||
@@ -206,6 +196,16 @@ const DateMenuButton = new Lang.Class({
|
|||||||
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
|
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateClockAndDate: function() {
|
||||||
|
this._clockDisplay.set_text(this._clock.clock);
|
||||||
|
/* Translators: This is the date format to use when the calendar popup is
|
||||||
|
* shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
|
*/
|
||||||
|
let dateFormat = _("%A %B %e, %Y");
|
||||||
|
let displayDate = new Date();
|
||||||
|
this._date.set_label(displayDate.toLocaleFormat(dateFormat));
|
||||||
|
},
|
||||||
|
|
||||||
_getCalendarApp: function() {
|
_getCalendarApp: function() {
|
||||||
if (this._calendarApp !== undefined)
|
if (this._calendarApp !== undefined)
|
||||||
return this._calendarApp;
|
return this._calendarApp;
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ const Meta = imports.gi.Meta;
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
|
|
||||||
const EDGE_THRESHOLD = 20;
|
const EDGE_THRESHOLD = 20;
|
||||||
const DRAG_DISTANCE = 80;
|
const DRAG_DISTANCE = 80;
|
||||||
|
|
||||||
@@ -15,10 +13,9 @@ const EdgeDragAction = new Lang.Class({
|
|||||||
Name: 'EdgeDragAction',
|
Name: 'EdgeDragAction',
|
||||||
Extends: Clutter.GestureAction,
|
Extends: Clutter.GestureAction,
|
||||||
|
|
||||||
_init : function(side, allowedModes) {
|
_init : function(side) {
|
||||||
this.parent();
|
this.parent();
|
||||||
this._side = side;
|
this._side = side;
|
||||||
this._allowedModes = allowedModes;
|
|
||||||
this.set_n_touch_points(1);
|
this.set_n_touch_points(1);
|
||||||
|
|
||||||
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
||||||
@@ -37,9 +34,6 @@ const EdgeDragAction = new Lang.Class({
|
|||||||
if (this.get_n_current_points() == 0)
|
if (this.get_n_current_points() == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!(this._allowedModes & Main.actionMode))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
let [x, y] = this.get_press_coords(0);
|
let [x, y] = this.get_press_coords(0);
|
||||||
let monitorRect = this._getMonitorRect(x, y);
|
let monitorRect = this._getMonitorRect(x, y);
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ const UserWidget = imports.ui.userWidget;
|
|||||||
|
|
||||||
let _endSessionDialog = null;
|
let _endSessionDialog = null;
|
||||||
|
|
||||||
|
const TRIGGER_OFFLINE_UPDATE = '/usr/libexec/pk-trigger-offline-update';
|
||||||
|
|
||||||
const _ITEM_ICON_SIZE = 48;
|
const _ITEM_ICON_SIZE = 48;
|
||||||
const _DIALOG_ICON_SIZE = 48;
|
const _DIALOG_ICON_SIZE = 48;
|
||||||
|
|
||||||
@@ -132,18 +134,11 @@ const restartInstallDialogContent = {
|
|||||||
showOtherSessions: true,
|
showOtherSessions: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
const DialogType = {
|
|
||||||
LOGOUT: 0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */,
|
|
||||||
SHUTDOWN: 1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */,
|
|
||||||
RESTART: 2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */,
|
|
||||||
UPDATE_RESTART: 3
|
|
||||||
};
|
|
||||||
|
|
||||||
const DialogContent = {
|
const DialogContent = {
|
||||||
0 /* DialogType.LOGOUT */: logoutDialogContent,
|
0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */: logoutDialogContent,
|
||||||
1 /* DialogType.SHUTDOWN */: shutdownDialogContent,
|
1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */: shutdownDialogContent,
|
||||||
2 /* DialogType.RESTART */: restartDialogContent,
|
2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */: restartDialogContent,
|
||||||
3 /* DialogType.UPDATE_RESTART */: restartInstallDialogContent
|
3: restartInstallDialogContent
|
||||||
};
|
};
|
||||||
|
|
||||||
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
||||||
@@ -160,19 +155,6 @@ const LogindSessionIface = '<node> \
|
|||||||
|
|
||||||
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
|
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
|
||||||
|
|
||||||
const PkOfflineIface = '<node> \
|
|
||||||
<interface name="org.freedesktop.PackageKit.Offline"> \
|
|
||||||
<property name="UpdatePrepared" type="b" access="read"/> \
|
|
||||||
<property name="TriggerAction" type="s" access="read"/> \
|
|
||||||
<method name="Trigger"> \
|
|
||||||
<arg type="s" name="action" direction="in"/> \
|
|
||||||
</method> \
|
|
||||||
<method name="Cancel"/> \
|
|
||||||
</interface> \
|
|
||||||
</node>';
|
|
||||||
|
|
||||||
const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface);
|
|
||||||
|
|
||||||
const UPowerIface = '<node> \
|
const UPowerIface = '<node> \
|
||||||
<interface name="org.freedesktop.UPower"> \
|
<interface name="org.freedesktop.UPower"> \
|
||||||
<property name="OnBattery" type="b" access="read"/> \
|
<property name="OnBattery" type="b" access="read"/> \
|
||||||
@@ -263,14 +245,9 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
this._userManager = AccountsService.UserManager.get_default();
|
this._userManager = AccountsService.UserManager.get_default();
|
||||||
this._user = this._userManager.get_user(GLib.get_user_name());
|
this._user = this._userManager.get_user(GLib.get_user_name());
|
||||||
|
this._updatesFile = Gio.File.new_for_path('/system-update');
|
||||||
|
this._preparedUpdateFile = Gio.File.new_for_path('/var/lib/PackageKit/prepared-update');
|
||||||
|
|
||||||
this._pkOfflineProxy = new PkOfflineProxy(Gio.DBus.system,
|
|
||||||
'org.freedesktop.PackageKit',
|
|
||||||
'/org/freedesktop/PackageKit',
|
|
||||||
Lang.bind(this, function(proxy, error) {
|
|
||||||
if (error)
|
|
||||||
log(error.message);
|
|
||||||
}));
|
|
||||||
this._powerProxy = new UPowerProxy(Gio.DBus.system,
|
this._powerProxy = new UPowerProxy(Gio.DBus.system,
|
||||||
'org.freedesktop.UPower',
|
'org.freedesktop.UPower',
|
||||||
'/org/freedesktop/UPower',
|
'/org/freedesktop/UPower',
|
||||||
@@ -522,29 +499,31 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_triggerOfflineUpdateReboot: function(callback) {
|
_triggerOfflineUpdateReboot: function(callback) {
|
||||||
this._pkOfflineProxy.TriggerRemote('reboot',
|
this._pkexecSpawn([TRIGGER_OFFLINE_UPDATE, 'reboot'], callback);
|
||||||
function (result, error) {
|
|
||||||
if (error)
|
|
||||||
log(error.message);
|
|
||||||
|
|
||||||
callback();
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_triggerOfflineUpdateShutdown: function(callback) {
|
_triggerOfflineUpdateShutdown: function(callback) {
|
||||||
this._pkOfflineProxy.TriggerRemote('power-off',
|
this._pkexecSpawn([TRIGGER_OFFLINE_UPDATE, 'power-off'], callback);
|
||||||
function (result, error) {
|
|
||||||
if (error)
|
|
||||||
log(error.message);
|
|
||||||
|
|
||||||
callback();
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_triggerOfflineUpdateCancel: function(callback) {
|
_triggerOfflineUpdateCancel: function(callback) {
|
||||||
this._pkOfflineProxy.CancelRemote(function (result, error) {
|
this._pkexecSpawn([TRIGGER_OFFLINE_UPDATE, '--cancel'], callback);
|
||||||
if (error)
|
},
|
||||||
log(error.message);
|
|
||||||
|
_pkexecSpawn: function(argv, callback) {
|
||||||
|
let ret, pid;
|
||||||
|
try {
|
||||||
|
[ret, pid] = GLib.spawn_async(null, ['pkexec'].concat(argv), null,
|
||||||
|
GLib.SpawnFlags.DO_NOT_REAP_CHILD | GLib.SpawnFlags.SEARCH_PATH,
|
||||||
|
null);
|
||||||
|
} catch (e) {
|
||||||
|
log('Error spawning "pkexec %s": %s'.format(argv.join(' '), e.toString()));
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function(pid, status) {
|
||||||
|
GLib.spawn_close_pid(pid);
|
||||||
|
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
@@ -698,9 +677,8 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
this._totalSecondsToStayOpen = totalSecondsToStayOpen;
|
||||||
this._type = type;
|
this._type = type;
|
||||||
|
|
||||||
if (this._type == DialogType.RESTART &&
|
if (this._type == 2 && this._updatesFile.query_exists(null))
|
||||||
this._pkOfflineProxy.TriggerAction == 'reboot')
|
this._type = 3;
|
||||||
this._type = DialogType.UPDATE_RESTART;
|
|
||||||
|
|
||||||
this._applications = [];
|
this._applications = [];
|
||||||
this._applicationList.destroy_all_children();
|
this._applicationList.destroy_all_children();
|
||||||
@@ -727,19 +705,19 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
if (dialogContent.showOtherSessions)
|
if (dialogContent.showOtherSessions)
|
||||||
this._loadSessions();
|
this._loadSessions();
|
||||||
|
|
||||||
let updateAlreadyTriggered = this._pkOfflineProxy.TriggerAction == 'power-off' || this._pkOfflineProxy.TriggerAction == 'reboot';
|
let preparedUpdate = this._preparedUpdateFile.query_exists(null);
|
||||||
let updatePrepared = this._pkOfflineProxy.UpdatePrepared;
|
let updateAlreadyTriggered = this._updatesFile.query_exists(null);
|
||||||
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
|
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
|
||||||
|
|
||||||
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText);
|
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText);
|
||||||
this._checkBox.actor.visible = (dialogContent.checkBoxText && updatePrepared && updatesAllowed);
|
this._checkBox.actor.visible = (dialogContent.checkBoxText && preparedUpdate && updatesAllowed);
|
||||||
this._checkBox.actor.checked = (updatePrepared && updateAlreadyTriggered);
|
this._checkBox.actor.checked = (preparedUpdate && updateAlreadyTriggered);
|
||||||
|
|
||||||
// We show the warning either together with the checkbox, or when
|
// We show the warning either together with the checkbox, or when
|
||||||
// updates have already been triggered, but the user doesn't have
|
// updates have already been triggered, but the user doesn't have
|
||||||
// enough permissions to cancel them.
|
// enough permissions to cancel them.
|
||||||
this._batteryWarning.visible = (dialogContent.showBatteryWarning &&
|
this._batteryWarning.visible = (dialogContent.showBatteryWarning &&
|
||||||
(this._checkBox.actor.visible || updatePrepared && updateAlreadyTriggered && !updatesAllowed));
|
(this._checkBox.actor.visible || preparedUpdate && updateAlreadyTriggered && !updatesAllowed));
|
||||||
|
|
||||||
this._updateButtons();
|
this._updateButtons();
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,6 @@ function init() {
|
|||||||
window._ = Gettext.gettext;
|
window._ = Gettext.gettext;
|
||||||
window.C_ = Gettext.pgettext;
|
window.C_ = Gettext.pgettext;
|
||||||
window.ngettext = Gettext.ngettext;
|
window.ngettext = Gettext.ngettext;
|
||||||
window.N_ = function(s) { return s; };
|
|
||||||
|
|
||||||
// Miscellaneous monkeypatching
|
// Miscellaneous monkeypatching
|
||||||
_patchContainerClass(St.BoxLayout);
|
_patchContainerClass(St.BoxLayout);
|
||||||
|
|||||||
@@ -203,16 +203,14 @@ const InstallExtensionDialog = new Lang.Class({
|
|||||||
|
|
||||||
let message = _("Download and install “%s” from extensions.gnome.org?").format(info.name);
|
let message = _("Download and install “%s” from extensions.gnome.org?").format(info.name);
|
||||||
|
|
||||||
let box = new St.BoxLayout({ style_class: 'prompt-dialog-main-layout',
|
let box = new St.BoxLayout();
|
||||||
vertical: false });
|
|
||||||
this.contentLayout.add(box);
|
this.contentLayout.add(box);
|
||||||
|
|
||||||
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_uri(REPOSITORY_URL_BASE + info.icon) })
|
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_uri(REPOSITORY_URL_BASE + info.icon) })
|
||||||
let icon = new St.Icon({ gicon: gicon });
|
let icon = new St.Icon({ gicon: gicon });
|
||||||
box.add(icon);
|
box.add(icon);
|
||||||
|
|
||||||
let label = new St.Label({ style_class: 'prompt-dialog-headline',
|
let label = new St.Label({ text: message });
|
||||||
text: message });
|
|
||||||
box.add(label);
|
box.add(label);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ function disableExtension(uuid) {
|
|||||||
|
|
||||||
if (extension.stylesheet) {
|
if (extension.stylesheet) {
|
||||||
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
||||||
theme.unload_stylesheet(extension.stylesheet);
|
theme.unload_stylesheet(extension.stylesheet.get_path());
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -118,7 +118,7 @@ function enableExtension(uuid) {
|
|||||||
let stylesheetFile = extension.dir.get_child(stylesheetNames[i]);
|
let stylesheetFile = extension.dir.get_child(stylesheetNames[i]);
|
||||||
if (stylesheetFile.query_exists(null)) {
|
if (stylesheetFile.query_exists(null)) {
|
||||||
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
||||||
theme.load_stylesheet(stylesheetFile);
|
theme.load_stylesheet(stylesheetFile.get_path());
|
||||||
extension.stylesheet = stylesheetFile;
|
extension.stylesheet = stylesheetFile;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -271,17 +271,10 @@ function onEnabledExtensionsChanged() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _onVersionValidationChanged() {
|
function _onVersionValidationChanged() {
|
||||||
// we want to reload all extensions, but only enable
|
|
||||||
// extensions when allowed by the sessionMode, so
|
|
||||||
// temporarily disable them all
|
|
||||||
enabledExtensions = [];
|
|
||||||
for (let uuid in ExtensionUtils.extensions)
|
|
||||||
reloadExtension(ExtensionUtils.extensions[uuid]);
|
|
||||||
enabledExtensions = getEnabledExtensions();
|
|
||||||
|
|
||||||
if (Main.sessionMode.allowExtensions) {
|
if (Main.sessionMode.allowExtensions) {
|
||||||
enabledExtensions.forEach(function(uuid) {
|
enabledExtensions.forEach(function(uuid) {
|
||||||
enableExtension(uuid);
|
if (ExtensionUtils.extensions[uuid])
|
||||||
|
reloadExtension(ExtensionUtils.extensions[uuid]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ const EXTRA_SPACE_ANIMATION_TIME = 0.25;
|
|||||||
const ANIMATION_TIME_IN = 0.350;
|
const ANIMATION_TIME_IN = 0.350;
|
||||||
const ANIMATION_TIME_OUT = 1/2 * ANIMATION_TIME_IN;
|
const ANIMATION_TIME_OUT = 1/2 * ANIMATION_TIME_IN;
|
||||||
const ANIMATION_MAX_DELAY_FOR_ITEM = 2/3 * ANIMATION_TIME_IN;
|
const ANIMATION_MAX_DELAY_FOR_ITEM = 2/3 * ANIMATION_TIME_IN;
|
||||||
const ANIMATION_BASE_DELAY_FOR_ITEM = 1/4 * ANIMATION_MAX_DELAY_FOR_ITEM;
|
|
||||||
const ANIMATION_MAX_DELAY_OUT_FOR_ITEM = 2/3 * ANIMATION_TIME_OUT;
|
const ANIMATION_MAX_DELAY_OUT_FOR_ITEM = 2/3 * ANIMATION_TIME_OUT;
|
||||||
const ANIMATION_FADE_IN_TIME_FOR_ITEM = 1/4 * ANIMATION_TIME_IN;
|
const ANIMATION_FADE_IN_TIME_FOR_ITEM = 1/4 * ANIMATION_TIME_IN;
|
||||||
|
|
||||||
@@ -430,30 +429,34 @@ const IconGrid = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For few items the animation can be slow, so use a smaller
|
|
||||||
// delay when there are less than 4 items
|
|
||||||
// (ANIMATION_BASE_DELAY_FOR_ITEM = 1/4 *
|
|
||||||
// ANIMATION_MAX_DELAY_FOR_ITEM)
|
|
||||||
let maxDelay = Math.min(ANIMATION_BASE_DELAY_FOR_ITEM * actors.length,
|
|
||||||
ANIMATION_MAX_DELAY_FOR_ITEM);
|
|
||||||
|
|
||||||
for (let index = 0; index < actors.length; index++) {
|
for (let index = 0; index < actors.length; index++) {
|
||||||
let actor = actors[index];
|
let actor = actors[index];
|
||||||
|
actor.opacity = 0;
|
||||||
actor.reactive = false;
|
actor.reactive = false;
|
||||||
actor.set_scale(0, 0);
|
|
||||||
actor.set_pivot_point(0.5, 0.5);
|
|
||||||
|
|
||||||
let delay = index / actors.length * maxDelay;
|
let delay = index / actors.length * ANIMATION_MAX_DELAY_FOR_ITEM;
|
||||||
|
let [originalX, originalY] = actor.get_transformed_position();
|
||||||
|
let [originalWidth, originalHeight,,] = this._getAllocatedChildSizeAndSpacing(actor);
|
||||||
|
|
||||||
|
let actorClone = new Clutter.Clone({ source: actor });
|
||||||
|
Main.uiGroup.add_actor(actorClone);
|
||||||
|
|
||||||
|
actorClone.set_position(originalX, originalY);
|
||||||
|
actorClone.set_scale(0, 0);
|
||||||
|
actorClone.set_pivot_point(0.5, 0.5);
|
||||||
|
actorClone.set_size(originalWidth, originalHeight);
|
||||||
|
|
||||||
let bounceUpTime = ANIMATION_TIME_IN / 4;
|
let bounceUpTime = ANIMATION_TIME_IN / 4;
|
||||||
|
// Defeat onComplete anonymous function closure
|
||||||
let isLastItem = index == actors.length - 1;
|
let isLastItem = index == actors.length - 1;
|
||||||
Tweener.addTween(actor,
|
Tweener.addTween(actorClone,
|
||||||
{ time: bounceUpTime,
|
{ time: bounceUpTime,
|
||||||
transition: 'easeInOutQuad',
|
transition: 'easeInOutQuad',
|
||||||
delay: delay,
|
delay: delay,
|
||||||
scale_x: ANIMATION_BOUNCE_ICON_SCALE,
|
scale_x: ANIMATION_BOUNCE_ICON_SCALE,
|
||||||
scale_y: ANIMATION_BOUNCE_ICON_SCALE,
|
scale_y: ANIMATION_BOUNCE_ICON_SCALE,
|
||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
Tweener.addTween(actor,
|
Tweener.addTween(actorClone,
|
||||||
{ time: ANIMATION_TIME_IN - bounceUpTime,
|
{ time: ANIMATION_TIME_IN - bounceUpTime,
|
||||||
transition: 'easeInOutQuad',
|
transition: 'easeInOutQuad',
|
||||||
scale_x: 1,
|
scale_x: 1,
|
||||||
@@ -461,7 +464,10 @@ const IconGrid = new Lang.Class({
|
|||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
if (isLastItem)
|
if (isLastItem)
|
||||||
this._animationDone();
|
this._animationDone();
|
||||||
|
|
||||||
|
actor.opacity = 255;
|
||||||
actor.reactive = true;
|
actor.reactive = true;
|
||||||
|
actorClone.destroy();
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -515,10 +521,11 @@ const IconGrid = new Lang.Class({
|
|||||||
let scaleY = sourceScaledHeight / height;
|
let scaleY = sourceScaledHeight / height;
|
||||||
let [adjustedSourcePositionX, adjustedSourcePositionY] = [sourceCenterX - sourceScaledWidth / 2, sourceCenterY - sourceScaledHeight / 2];
|
let [adjustedSourcePositionX, adjustedSourcePositionY] = [sourceCenterX - sourceScaledWidth / 2, sourceCenterY - sourceScaledHeight / 2];
|
||||||
|
|
||||||
|
// Defeat onComplete anonymous function closure
|
||||||
|
let isLastItem = index == actors.length - 1;
|
||||||
|
|
||||||
let movementParams, fadeParams;
|
let movementParams, fadeParams;
|
||||||
if (animationDirection == AnimationDirection.IN) {
|
if (animationDirection == AnimationDirection.IN) {
|
||||||
let isLastItem = actor._distance == minDist;
|
|
||||||
|
|
||||||
actorClone.opacity = 0;
|
actorClone.opacity = 0;
|
||||||
actorClone.set_scale(scaleX, scaleY);
|
actorClone.set_scale(scaleX, scaleY);
|
||||||
|
|
||||||
@@ -546,8 +553,6 @@ const IconGrid = new Lang.Class({
|
|||||||
delay: delay,
|
delay: delay,
|
||||||
opacity: 255 };
|
opacity: 255 };
|
||||||
} else {
|
} else {
|
||||||
let isLastItem = actor._distance == maxDist;
|
|
||||||
|
|
||||||
let [startX, startY] = actor._transformedPosition;
|
let [startX, startY] = actor._transformedPosition;
|
||||||
actorClone.set_position(startX, startY);
|
actorClone.set_position(startX, startY);
|
||||||
|
|
||||||
@@ -564,7 +569,6 @@ const IconGrid = new Lang.Class({
|
|||||||
this._animationDone();
|
this._animationDone();
|
||||||
this._restoreItemsOpacity();
|
this._restoreItemsOpacity();
|
||||||
}
|
}
|
||||||
actor.reactive = true;
|
|
||||||
actorClone.destroy();
|
actorClone.destroy();
|
||||||
})};
|
})};
|
||||||
fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM,
|
fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM,
|
||||||
|
|||||||
@@ -75,7 +75,6 @@ const Key = new Lang.Class({
|
|||||||
_init : function(key) {
|
_init : function(key) {
|
||||||
this._key = key;
|
this._key = key;
|
||||||
this.actor = this._makeKey(key, GLib.markup_escape_text(key.label, -1));
|
this.actor = this._makeKey(key, GLib.markup_escape_text(key.label, -1));
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
|
||||||
|
|
||||||
this._extended_keys = this._key.get_extended_keys();
|
this._extended_keys = this._key.get_extended_keys();
|
||||||
this._extended_keyboard = null;
|
this._extended_keyboard = null;
|
||||||
@@ -98,13 +97,6 @@ const Key = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
|
||||||
if (this._boxPointer) {
|
|
||||||
this._boxPointer.actor.destroy();
|
|
||||||
this._boxPointer = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_makeKey: function (key, label) {
|
_makeKey: function (key, label) {
|
||||||
let button = new St.Button ({ label: label,
|
let button = new St.Button ({ label: label,
|
||||||
style_class: 'keyboard-key' });
|
style_class: 'keyboard-key' });
|
||||||
@@ -187,7 +179,14 @@ const Keyboard = new Lang.Class({
|
|||||||
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
|
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
|
||||||
Lang.bind(this, this._sync),
|
Lang.bind(this, this._sync),
|
||||||
Lang.bind(this, this._sync));
|
Lang.bind(this, this._sync));
|
||||||
this._daemonProxy = null;
|
this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
|
||||||
|
CARIBOU_OBJECT_PATH,
|
||||||
|
Lang.bind(this, function(proxy, error) {
|
||||||
|
if (error) {
|
||||||
|
log(error.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}));
|
||||||
this._cursorProxy = new CursorManagerProxy(Gio.DBus.session, CURSOR_BUS_NAME,
|
this._cursorProxy = new CursorManagerProxy(Gio.DBus.session, CURSOR_BUS_NAME,
|
||||||
CURSOR_OBJECT_PATH,
|
CURSOR_OBJECT_PATH,
|
||||||
Lang.bind(this, function(proxy, error) {
|
Lang.bind(this, function(proxy, error) {
|
||||||
@@ -249,28 +248,15 @@ const Keyboard = new Lang.Class({
|
|||||||
this.actor = null;
|
this.actor = null;
|
||||||
|
|
||||||
this._destroySource();
|
this._destroySource();
|
||||||
if (this._daemonProxy) {
|
|
||||||
this._daemonProxy.QuitRemote(function (result, error) {
|
this._daemonProxy.QuitRemote(function (result, error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
log(error.message);
|
log(error.message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this._daemonProxy = null;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_setupKeyboard: function() {
|
_setupKeyboard: function() {
|
||||||
if (!this._daemonProxy) {
|
|
||||||
this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
|
|
||||||
CARIBOU_OBJECT_PATH,
|
|
||||||
Lang.bind(this, function(proxy, error) {
|
|
||||||
if (error) {
|
|
||||||
log(error.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
this._daemonProxy.RunRemote(function (result, error) {
|
this._daemonProxy.RunRemote(function (result, error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
log(error.message);
|
log(error.message);
|
||||||
@@ -616,7 +602,7 @@ const Keyboard = new Lang.Class({
|
|||||||
|
|
||||||
_moveTemporarily: function () {
|
_moveTemporarily: function () {
|
||||||
let currentWindow = global.screen.get_display().focus_window;
|
let currentWindow = global.screen.get_display().focus_window;
|
||||||
let rect = currentWindow.get_frame_rect();
|
let rect = currentWindow.get_outer_rect();
|
||||||
|
|
||||||
let newX = rect.x;
|
let newX = rect.x;
|
||||||
let newY = 3 * this.actor.height / 2;
|
let newY = 3 * this.actor.height / 2;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ const Tweener = imports.ui.tweener;
|
|||||||
const STARTUP_ANIMATION_TIME = 0.5;
|
const STARTUP_ANIMATION_TIME = 0.5;
|
||||||
const KEYBOARD_ANIMATION_TIME = 0.15;
|
const KEYBOARD_ANIMATION_TIME = 0.15;
|
||||||
const BACKGROUND_FADE_ANIMATION_TIME = 1.0;
|
const BACKGROUND_FADE_ANIMATION_TIME = 1.0;
|
||||||
|
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||||
|
|
||||||
// The message tray takes this much pressure
|
// The message tray takes this much pressure
|
||||||
// in the pressure barrier at once to release it.
|
// in the pressure barrier at once to release it.
|
||||||
@@ -159,10 +160,10 @@ const LayoutManager = new Lang.Class({
|
|||||||
this._isPopupWindowVisible = false;
|
this._isPopupWindowVisible = false;
|
||||||
this._startingUp = true;
|
this._startingUp = true;
|
||||||
|
|
||||||
// We don't want to paint the stage background color because either
|
// Normally, the stage is always covered so Clutter doesn't need to clear
|
||||||
// the SystemBackground we create or the MetaBackgroundActor inside
|
// it; however it becomes visible during the startup animation
|
||||||
// global.window_group covers the entirety of the screen.
|
// See the comment below for a longer explanation
|
||||||
global.stage.no_clear_hint = true;
|
global.stage.background_color = DEFAULT_BACKGROUND_COLOR;
|
||||||
|
|
||||||
// Set up stage hierarchy to group all UI actors under one container.
|
// Set up stage hierarchy to group all UI actors under one container.
|
||||||
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
|
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
|
||||||
@@ -229,10 +230,6 @@ const LayoutManager = new Lang.Class({
|
|||||||
global.stage.remove_actor(global.top_window_group);
|
global.stage.remove_actor(global.top_window_group);
|
||||||
this.uiGroup.add_actor(global.top_window_group);
|
this.uiGroup.add_actor(global.top_window_group);
|
||||||
|
|
||||||
let feedbackGroup = Meta.get_feedback_group_for_screen(global.screen);
|
|
||||||
global.stage.remove_actor(feedbackGroup);
|
|
||||||
this.uiGroup.add_actor(feedbackGroup);
|
|
||||||
|
|
||||||
this._backgroundGroup = new Meta.BackgroundGroup();
|
this._backgroundGroup = new Meta.BackgroundGroup();
|
||||||
global.window_group.add_child(this._backgroundGroup);
|
global.window_group.add_child(this._backgroundGroup);
|
||||||
this._backgroundGroup.lower_bottom();
|
this._backgroundGroup.lower_bottom();
|
||||||
@@ -262,6 +259,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
|
|
||||||
this._inOverview = true;
|
this._inOverview = true;
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
|
this._updateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
hideOverview: function() {
|
hideOverview: function() {
|
||||||
@@ -269,6 +267,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
|
|
||||||
this._inOverview = false;
|
this._inOverview = false;
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
_sessionUpdated: function() {
|
_sessionUpdated: function() {
|
||||||
@@ -422,7 +421,10 @@ const LayoutManager = new Lang.Class({
|
|||||||
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
|
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
|
||||||
this.panelBox.set_size(this.primaryMonitor.width, -1);
|
this.panelBox.set_size(this.primaryMonitor.width, -1);
|
||||||
|
|
||||||
|
if (this.keyboardIndex < 0)
|
||||||
this.keyboardIndex = this.primaryIndex;
|
this.keyboardIndex = this.primaryIndex;
|
||||||
|
else
|
||||||
|
this._updateKeyboardBox();
|
||||||
|
|
||||||
this.trayBox.set_position(this.bottomMonitor.x,
|
this.trayBox.set_position(this.bottomMonitor.x,
|
||||||
this.bottomMonitor.y + this.bottomMonitor.height);
|
this.bottomMonitor.y + this.bottomMonitor.height);
|
||||||
@@ -458,8 +460,8 @@ const LayoutManager = new Lang.Class({
|
|||||||
_setupTrayPressure: function() {
|
_setupTrayPressure: function() {
|
||||||
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
|
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
|
||||||
MESSAGE_TRAY_PRESSURE_TIMEOUT,
|
MESSAGE_TRAY_PRESSURE_TIMEOUT,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW);
|
Shell.KeyBindingMode.OVERVIEW);
|
||||||
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
|
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
|
||||||
this._trayPressure.connect('trigger', function(barrier) {
|
this._trayPressure.connect('trigger', function(barrier) {
|
||||||
if (Main.layoutManager.bottomMonitor.inFullscreen)
|
if (Main.layoutManager.bottomMonitor.inFullscreen)
|
||||||
@@ -587,6 +589,10 @@ const LayoutManager = new Lang.Class({
|
|||||||
//
|
//
|
||||||
// When starting a normal user session, we want to grow it out of the middle
|
// When starting a normal user session, we want to grow it out of the middle
|
||||||
// of the screen.
|
// of the screen.
|
||||||
|
//
|
||||||
|
// Usually, we don't want to paint the stage background color because the
|
||||||
|
// MetaBackgroundActor inside global.window_group covers the entirety of the
|
||||||
|
// screen. So, we set no_clear_hint at the end of the animation.
|
||||||
|
|
||||||
_prepareStartupAnimation: function() {
|
_prepareStartupAnimation: function() {
|
||||||
// During the initial transition, add a simple actor to block all events,
|
// During the initial transition, add a simple actor to block all events,
|
||||||
@@ -667,6 +673,10 @@ const LayoutManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_startupAnimationComplete: function() {
|
_startupAnimationComplete: function() {
|
||||||
|
// At this point, the UI group is covering everything, so
|
||||||
|
// we no longer need to clear the stage
|
||||||
|
global.stage.no_clear_hint = true;
|
||||||
|
|
||||||
this._coverPane.destroy();
|
this._coverPane.destroy();
|
||||||
this._coverPane = null;
|
this._coverPane = null;
|
||||||
|
|
||||||
@@ -905,6 +915,9 @@ const LayoutManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_queueUpdateRegions: function() {
|
_queueUpdateRegions: function() {
|
||||||
|
if (Main.sessionMode.isGreeter)
|
||||||
|
return;
|
||||||
|
|
||||||
if (this._startingUp)
|
if (this._startingUp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -938,16 +951,13 @@ const LayoutManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateRegions: function() {
|
_updateRegions: function() {
|
||||||
|
let rects = [], struts = [], i;
|
||||||
|
|
||||||
if (this._updateRegionIdle) {
|
if (this._updateRegionIdle) {
|
||||||
Meta.later_remove(this._updateRegionIdle);
|
Meta.later_remove(this._updateRegionIdle);
|
||||||
delete this._updateRegionIdle;
|
delete this._updateRegionIdle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No need to update when we have a modal.
|
|
||||||
if (Main.modalCount > 0)
|
|
||||||
return GLib.SOURCE_REMOVE;
|
|
||||||
|
|
||||||
let rects = [], struts = [], i;
|
|
||||||
let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow);
|
let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow);
|
||||||
let wantsInputRegion = !isPopupMenuVisible;
|
let wantsInputRegion = !isPopupMenuVisible;
|
||||||
|
|
||||||
@@ -1033,13 +1043,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
},
|
}
|
||||||
|
|
||||||
modalEnded: function() {
|
|
||||||
// We don't update the stage input region while in a modal,
|
|
||||||
// so queue an update now.
|
|
||||||
this._queueUpdateRegions();
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(LayoutManager.prototype);
|
Signals.addSignalMethods(LayoutManager.prototype);
|
||||||
|
|
||||||
@@ -1067,8 +1071,8 @@ const HotCorner = new Lang.Class({
|
|||||||
|
|
||||||
this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
|
this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
|
||||||
HOT_CORNER_PRESSURE_TIMEOUT,
|
HOT_CORNER_PRESSURE_TIMEOUT,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW);
|
Shell.KeyBindingMode.OVERVIEW);
|
||||||
this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview));
|
this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview));
|
||||||
|
|
||||||
// Cache the three ripples instead of dynamically creating and destroying them.
|
// Cache the three ripples instead of dynamically creating and destroying them.
|
||||||
@@ -1245,10 +1249,10 @@ const HotCorner = new Lang.Class({
|
|||||||
const PressureBarrier = new Lang.Class({
|
const PressureBarrier = new Lang.Class({
|
||||||
Name: 'PressureBarrier',
|
Name: 'PressureBarrier',
|
||||||
|
|
||||||
_init: function(threshold, timeout, actionMode) {
|
_init: function(threshold, timeout, keybindingMode) {
|
||||||
this._threshold = threshold;
|
this._threshold = threshold;
|
||||||
this._timeout = timeout;
|
this._timeout = timeout;
|
||||||
this._actionMode = actionMode;
|
this._keybindingMode = keybindingMode;
|
||||||
this._barriers = [];
|
this._barriers = [];
|
||||||
this._eventFilter = null;
|
this._eventFilter = null;
|
||||||
|
|
||||||
@@ -1351,7 +1355,7 @@ const PressureBarrier = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Throw out all events not in the proper keybinding mode
|
// Throw out all events not in the proper keybinding mode
|
||||||
if (!(this._actionMode & Main.actionMode))
|
if (!(this._keybindingMode & Main.keybindingMode))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let slide = this._getDistanceAlongBarrier(barrier, event);
|
let slide = this._getDistanceAlongBarrier(barrier, event);
|
||||||
|
|||||||
@@ -1086,7 +1086,7 @@ const LookingGlass = new Lang.Class({
|
|||||||
if (this._open)
|
if (this._open)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Main.pushModal(this._entry, { actionMode: Shell.ActionMode.LOOKING_GLASS }))
|
if (!Main.pushModal(this._entry, { keybindingMode: Shell.KeyBindingMode.LOOKING_GLASS }))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._notebook.selectIndex(0);
|
this._notebook.selectIndex(0);
|
||||||
|
|||||||
@@ -1198,7 +1198,12 @@ const ZoomRegion = new Lang.Class({
|
|||||||
|
|
||||||
// Add a background for when the magnified uiGroup is scrolled
|
// Add a background for when the magnified uiGroup is scrolled
|
||||||
// out of view (don't want to see desktop showing through).
|
// out of view (don't want to see desktop showing through).
|
||||||
this._background = (new Background.SystemBackground()).actor;
|
this._background = new Clutter.Actor({ background_color: Main.DEFAULT_BACKGROUND_COLOR,
|
||||||
|
layout_manager: new Clutter.BinLayout(),
|
||||||
|
width: global.screen_width,
|
||||||
|
height: global.screen_height });
|
||||||
|
let noiseTexture = (new Background.SystemBackground()).actor;
|
||||||
|
this._background.add_actor(noiseTexture);
|
||||||
mainGroup.add_actor(this._background);
|
mainGroup.add_actor(this._background);
|
||||||
|
|
||||||
// Clone the group that contains all of UI on the screen. This is the
|
// Clone the group that contains all of UI on the screen. This is the
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
|
|||||||
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 Gtk = imports.gi.Gtk;
|
|
||||||
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;
|
||||||
@@ -41,6 +40,8 @@ const Magnifier = imports.ui.magnifier;
|
|||||||
const XdndHandler = imports.ui.xdndHandler;
|
const XdndHandler = imports.ui.xdndHandler;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
|
||||||
|
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
|
||||||
|
|
||||||
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
||||||
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
||||||
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
||||||
@@ -63,7 +64,7 @@ let shellMountOpDBusService = null;
|
|||||||
let screenSaverDBus = null;
|
let screenSaverDBus = null;
|
||||||
let screencastService = null;
|
let screencastService = null;
|
||||||
let modalCount = 0;
|
let modalCount = 0;
|
||||||
let actionMode = Shell.ActionMode.NONE;
|
let keybindingMode = Shell.KeyBindingMode.NONE;
|
||||||
let modalActorFocusStack = [];
|
let modalActorFocusStack = [];
|
||||||
let uiGroup = null;
|
let uiGroup = null;
|
||||||
let magnifier = null;
|
let magnifier = null;
|
||||||
@@ -76,19 +77,18 @@ let _cssStylesheet = null;
|
|||||||
let _a11ySettings = null;
|
let _a11ySettings = null;
|
||||||
|
|
||||||
function _sessionUpdated() {
|
function _sessionUpdated() {
|
||||||
if (sessionMode.isPrimary)
|
|
||||||
_loadDefaultStylesheet();
|
_loadDefaultStylesheet();
|
||||||
|
|
||||||
wm.setCustomKeybindingHandler('panel-main-menu',
|
wm.setCustomKeybindingHandler('panel-main-menu',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null);
|
sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null);
|
||||||
wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
|
wm.allowKeybinding('overlay-key', Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW);
|
Shell.KeyBindingMode.OVERVIEW);
|
||||||
|
|
||||||
wm.setCustomKeybindingHandler('panel-run-dialog',
|
wm.setCustomKeybindingHandler('panel-run-dialog',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
sessionMode.hasRunDialog ? openRunDialog : null);
|
sessionMode.hasRunDialog ? openRunDialog : null);
|
||||||
|
|
||||||
if (!sessionMode.hasRunDialog) {
|
if (!sessionMode.hasRunDialog) {
|
||||||
@@ -111,8 +111,6 @@ function start() {
|
|||||||
|
|
||||||
sessionMode = new SessionMode.SessionMode();
|
sessionMode = new SessionMode.SessionMode();
|
||||||
sessionMode.connect('updated', _sessionUpdated);
|
sessionMode.connect('updated', _sessionUpdated);
|
||||||
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
|
|
||||||
_loadDefaultStylesheet);
|
|
||||||
_initializeUI();
|
_initializeUI();
|
||||||
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
@@ -133,9 +131,6 @@ function _initializeUI() {
|
|||||||
Shell.WindowTracker.get_default();
|
Shell.WindowTracker.get_default();
|
||||||
Shell.AppUsage.get_default();
|
Shell.AppUsage.get_default();
|
||||||
|
|
||||||
let resource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
|
|
||||||
resource._register();
|
|
||||||
|
|
||||||
_loadDefaultStylesheet();
|
_loadDefaultStylesheet();
|
||||||
|
|
||||||
// Setup the stage hierarchy early
|
// Setup the stage hierarchy early
|
||||||
@@ -209,8 +204,8 @@ function _initializeUI() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
layoutManager.connect('startup-complete', function() {
|
layoutManager.connect('startup-complete', function() {
|
||||||
if (actionMode == Shell.ActionMode.NONE) {
|
if (keybindingMode == Shell.KeyBindingMode.NONE) {
|
||||||
actionMode = Shell.ActionMode.NORMAL;
|
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
||||||
}
|
}
|
||||||
if (screenShield) {
|
if (screenShield) {
|
||||||
screenShield.lockIfWasLocked();
|
screenShield.lockIfWasLocked();
|
||||||
@@ -229,38 +224,12 @@ function _initializeUI() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getStylesheet(name) {
|
|
||||||
let stylesheet;
|
|
||||||
|
|
||||||
stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/' + name);
|
|
||||||
if (stylesheet.query_exists(null))
|
|
||||||
return stylesheet;
|
|
||||||
|
|
||||||
stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name);
|
|
||||||
if (stylesheet.query_exists(null))
|
|
||||||
return stylesheet;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getDefaultStylesheet() {
|
|
||||||
let stylesheet = null;
|
|
||||||
let name = sessionMode.stylesheetName;
|
|
||||||
|
|
||||||
// Look for a high-contrast variant first when using GTK+'s HighContrast
|
|
||||||
// theme
|
|
||||||
if (Gtk.Settings.get_default().gtk_theme_name == 'HighContrast')
|
|
||||||
stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css'));
|
|
||||||
|
|
||||||
if (stylesheet == null)
|
|
||||||
stylesheet = _getStylesheet(sessionMode.stylesheetName);
|
|
||||||
|
|
||||||
return stylesheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _loadDefaultStylesheet() {
|
function _loadDefaultStylesheet() {
|
||||||
let stylesheet = _getDefaultStylesheet();
|
if (!sessionMode.isPrimary)
|
||||||
if (_defaultCssStylesheet && _defaultCssStylesheet.equal(stylesheet))
|
return;
|
||||||
|
|
||||||
|
let stylesheet = global.datadir + '/theme/' + sessionMode.stylesheetName;
|
||||||
|
if (_defaultCssStylesheet == stylesheet)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_defaultCssStylesheet = stylesheet;
|
_defaultCssStylesheet = stylesheet;
|
||||||
@@ -272,7 +241,7 @@ function _loadDefaultStylesheet() {
|
|||||||
*
|
*
|
||||||
* Get the theme CSS file that the shell will load
|
* Get the theme CSS file that the shell will load
|
||||||
*
|
*
|
||||||
* Returns: A #GFile that contains the theme CSS,
|
* Returns: A file path that contains the theme CSS,
|
||||||
* null if using the default
|
* null if using the default
|
||||||
*/
|
*/
|
||||||
function getThemeStylesheet() {
|
function getThemeStylesheet() {
|
||||||
@@ -287,7 +256,7 @@ function getThemeStylesheet() {
|
|||||||
* Set the theme CSS file that the shell will load
|
* Set the theme CSS file that the shell will load
|
||||||
*/
|
*/
|
||||||
function setThemeStylesheet(cssStylesheet) {
|
function setThemeStylesheet(cssStylesheet) {
|
||||||
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
|
_cssStylesheet = cssStylesheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -372,7 +341,7 @@ function _findModal(actor) {
|
|||||||
* - options: Meta.ModalOptions flags to indicate that the pointer is
|
* - options: Meta.ModalOptions flags to indicate that the pointer is
|
||||||
* already grabbed
|
* already grabbed
|
||||||
*
|
*
|
||||||
* - actionMode: used to set the current Shell.ActionMode to filter
|
* - keybindingMode: used to set the current Shell.KeyBindingMode to filter
|
||||||
* global keybindings; the default of NONE will filter
|
* global keybindings; the default of NONE will filter
|
||||||
* out all keybindings
|
* out all keybindings
|
||||||
*
|
*
|
||||||
@@ -381,7 +350,7 @@ function _findModal(actor) {
|
|||||||
function pushModal(actor, params) {
|
function pushModal(actor, params) {
|
||||||
params = Params.parse(params, { timestamp: global.get_current_time(),
|
params = Params.parse(params, { timestamp: global.get_current_time(),
|
||||||
options: 0,
|
options: 0,
|
||||||
actionMode: Shell.ActionMode.NONE });
|
keybindingMode: Shell.KeyBindingMode.NONE });
|
||||||
|
|
||||||
if (modalCount == 0) {
|
if (modalCount == 0) {
|
||||||
if (!global.begin_modal(params.timestamp, params.options)) {
|
if (!global.begin_modal(params.timestamp, params.options)) {
|
||||||
@@ -411,9 +380,9 @@ function pushModal(actor, params) {
|
|||||||
destroyId: actorDestroyId,
|
destroyId: actorDestroyId,
|
||||||
prevFocus: prevFocus,
|
prevFocus: prevFocus,
|
||||||
prevFocusDestroyId: prevFocusDestroyId,
|
prevFocusDestroyId: prevFocusDestroyId,
|
||||||
actionMode: actionMode });
|
keybindingMode: keybindingMode });
|
||||||
|
|
||||||
actionMode = params.actionMode;
|
keybindingMode = params.keybindingMode;
|
||||||
global.stage.set_key_focus(actor);
|
global.stage.set_key_focus(actor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -439,7 +408,7 @@ function popModal(actor, timestamp) {
|
|||||||
if (focusIndex < 0) {
|
if (focusIndex < 0) {
|
||||||
global.stage.set_key_focus(null);
|
global.stage.set_key_focus(null);
|
||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
actionMode = Shell.ActionMode.NORMAL;
|
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
||||||
|
|
||||||
throw new Error('incorrect pop');
|
throw new Error('incorrect pop');
|
||||||
}
|
}
|
||||||
@@ -452,7 +421,7 @@ function popModal(actor, timestamp) {
|
|||||||
if (focusIndex == modalActorFocusStack.length - 1) {
|
if (focusIndex == modalActorFocusStack.length - 1) {
|
||||||
if (record.prevFocus)
|
if (record.prevFocus)
|
||||||
record.prevFocus.disconnect(record.prevFocusDestroyId);
|
record.prevFocus.disconnect(record.prevFocusDestroyId);
|
||||||
actionMode = record.actionMode;
|
keybindingMode = record.keybindingMode;
|
||||||
global.stage.set_key_focus(record.prevFocus);
|
global.stage.set_key_focus(record.prevFocus);
|
||||||
} else {
|
} else {
|
||||||
// If we have:
|
// If we have:
|
||||||
@@ -477,7 +446,7 @@ function popModal(actor, timestamp) {
|
|||||||
for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) {
|
for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) {
|
||||||
modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus;
|
modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus;
|
||||||
modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId;
|
modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId;
|
||||||
modalActorFocusStack[i].actionMode = modalActorFocusStack[i - 1].actionMode;
|
modalActorFocusStack[i].keybindingMode = modalActorFocusStack[i - 1].keybindingMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
modalActorFocusStack.splice(focusIndex, 1);
|
modalActorFocusStack.splice(focusIndex, 1);
|
||||||
@@ -485,10 +454,9 @@ function popModal(actor, timestamp) {
|
|||||||
if (modalCount > 0)
|
if (modalCount > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
layoutManager.modalEnded();
|
|
||||||
global.end_modal(timestamp);
|
global.end_modal(timestamp);
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
actionMode = Shell.ActionMode.NORMAL;
|
keybindingMode = Shell.KeyBindingMode.NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createLookingGlass() {
|
function createLookingGlass() {
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ const PopupMenu = imports.ui.popupMenu;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
const ViewSelector = imports.ui.viewSelector;
|
|
||||||
|
|
||||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||||
|
|
||||||
@@ -1159,7 +1158,6 @@ const SourceActor = new Lang.Class({
|
|||||||
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.connect('destroy', Lang.bind(this, function() {
|
this.actor.connect('destroy', Lang.bind(this, function() {
|
||||||
this._source.disconnect(this._iconUpdatedId);
|
|
||||||
this._actorDestroyed = true;
|
this._actorDestroyed = true;
|
||||||
}));
|
}));
|
||||||
this._actorDestroyed = false;
|
this._actorDestroyed = false;
|
||||||
@@ -1171,7 +1169,7 @@ const SourceActor = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.add_actor(this._iconBin);
|
this.actor.add_actor(this._iconBin);
|
||||||
|
|
||||||
this._iconUpdatedId = this._source.connect('icon-updated', Lang.bind(this, this._updateIcon));
|
this._source.connect('icon-updated', Lang.bind(this, this._updateIcon));
|
||||||
this._updateIcon();
|
this._updateIcon();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1229,12 +1227,8 @@ const SourceActorWithLabel = new Lang.Class({
|
|||||||
|
|
||||||
this.actor.add_actor(this._counterBin);
|
this.actor.add_actor(this._counterBin);
|
||||||
|
|
||||||
this._countUpdatedId = this._source.connect('count-updated', Lang.bind(this, this._updateCount));
|
this._source.connect('count-updated', Lang.bind(this, this._updateCount));
|
||||||
this._updateCount();
|
this._updateCount();
|
||||||
|
|
||||||
this.actor.connect('destroy', function() {
|
|
||||||
this._source.disconnect(this._countUpdatedId);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
@@ -1817,13 +1811,6 @@ const MessageTray = new Lang.Class({
|
|||||||
y_expand: true });
|
y_expand: true });
|
||||||
this.actor.add_actor(this._summary);
|
this.actor.add_actor(this._summary);
|
||||||
|
|
||||||
this._focusTrap = new ViewSelector.FocusTrap({ can_focus: true });
|
|
||||||
this._focusTrap.connect('key-focus-in', Lang.bind(this,
|
|
||||||
function() {
|
|
||||||
this._messageTrayMenuButton.actor.grab_key_focus();
|
|
||||||
}));
|
|
||||||
this._summary.add_actor(this._focusTrap);
|
|
||||||
|
|
||||||
this._summaryMotionId = 0;
|
this._summaryMotionId = 0;
|
||||||
|
|
||||||
this._summaryBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM,
|
this._summaryBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM,
|
||||||
@@ -1852,7 +1839,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this.idleMonitor = Meta.IdleMonitor.get_core();
|
this.idleMonitor = Meta.IdleMonitor.get_core();
|
||||||
|
|
||||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor,
|
this._grabHelper = new GrabHelper.GrabHelper(this.actor,
|
||||||
{ actionMode: Shell.ActionMode.MESSAGE_TRAY });
|
{ keybindingMode: Shell.KeyBindingMode.MESSAGE_TRAY });
|
||||||
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
||||||
this._grabHelper.addActor(this.actor);
|
this._grabHelper.addActor(this.actor);
|
||||||
|
|
||||||
@@ -1916,16 +1903,16 @@ const MessageTray = new Lang.Class({
|
|||||||
Main.wm.addKeybinding('toggle-message-tray',
|
Main.wm.addKeybinding('toggle-message-tray',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.MESSAGE_TRAY |
|
Shell.KeyBindingMode.MESSAGE_TRAY |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this.toggleAndNavigate));
|
Lang.bind(this, this.toggleAndNavigate));
|
||||||
Main.wm.addKeybinding('focus-active-notification',
|
Main.wm.addKeybinding('focus-active-notification',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.MESSAGE_TRAY |
|
Shell.KeyBindingMode.MESSAGE_TRAY |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._expandActiveNotification));
|
Lang.bind(this, this._expandActiveNotification));
|
||||||
|
|
||||||
this._sources = new Map();
|
this._sources = new Map();
|
||||||
@@ -1948,12 +1935,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._messageTrayMenuButton = new MessageTrayMenuButton(this);
|
this._messageTrayMenuButton = new MessageTrayMenuButton(this);
|
||||||
this.actor.add_actor(this._messageTrayMenuButton.actor);
|
this.actor.add_actor(this._messageTrayMenuButton.actor);
|
||||||
|
|
||||||
this._messageTrayMenuButton.actor.connect('key-press-event',
|
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM);
|
||||||
Lang.bind(this, this._onTrayButtonKeyPress));
|
|
||||||
|
|
||||||
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM,
|
|
||||||
Shell.ActionMode.NORMAL |
|
|
||||||
Shell.ActionMode.OVERVIEW);
|
|
||||||
gesture.connect('activated', Lang.bind(this, this.toggle));
|
gesture.connect('activated', Lang.bind(this, this.toggle));
|
||||||
global.stage.add_action(gesture);
|
global.stage.add_action(gesture);
|
||||||
},
|
},
|
||||||
@@ -2048,16 +2030,6 @@ const MessageTray = new Lang.Class({
|
|||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onTrayButtonKeyPress: function(actor, event) {
|
|
||||||
if (event.get_key_symbol() == Clutter.ISO_Left_Tab) {
|
|
||||||
this._focusTrap.can_focus = false;
|
|
||||||
this._summary.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
|
||||||
this._focusTrap.can_focus = true;
|
|
||||||
return Clutter.EVENT_STOP;
|
|
||||||
}
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onNotificationKeyRelease: function(actor, event) {
|
_onNotificationKeyRelease: function(actor, event) {
|
||||||
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
||||||
this._expireNotification();
|
this._expireNotification();
|
||||||
@@ -2434,23 +2406,9 @@ const MessageTray = new Lang.Class({
|
|||||||
if (shouldShowNotification && nextNotification) {
|
if (shouldShowNotification && nextNotification) {
|
||||||
let limited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen;
|
let limited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen;
|
||||||
let showNextNotification = (!limited || nextNotification.forFeedback || nextNotification.urgency == Urgency.CRITICAL);
|
let showNextNotification = (!limited || nextNotification.forFeedback || nextNotification.urgency == Urgency.CRITICAL);
|
||||||
if (showNextNotification) {
|
if (showNextNotification)
|
||||||
let len = this._notificationQueue.length;
|
|
||||||
if (len > 1) {
|
|
||||||
this._notificationQueue.length = 0;
|
|
||||||
let source = new SystemNotificationSource();
|
|
||||||
this.add(source);
|
|
||||||
let notification = new Notification(source, ngettext("%d new message", "%d new messages", len).format(len));
|
|
||||||
notification.setTransient(true);
|
|
||||||
notification.connect('clicked', Lang.bind(this, function() {
|
|
||||||
this.openTray();
|
|
||||||
}));
|
|
||||||
source.notify(notification);
|
|
||||||
} else {
|
|
||||||
this._showNotification();
|
this._showNotification();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (this._notificationState == State.SHOWN) {
|
} else if (this._notificationState == State.SHOWN) {
|
||||||
let expired = (this._userActiveWhileNotificationShown &&
|
let expired = (this._userActiveWhileNotificationShown &&
|
||||||
this._notificationTimeoutId == 0 &&
|
this._notificationTimeoutId == 0 &&
|
||||||
|
|||||||
@@ -41,14 +41,14 @@ const ModalDialog = new Lang.Class({
|
|||||||
_init: function(params) {
|
_init: function(params) {
|
||||||
params = Params.parse(params, { shellReactive: false,
|
params = Params.parse(params, { shellReactive: false,
|
||||||
styleClass: null,
|
styleClass: null,
|
||||||
actionMode: Shell.ActionMode.SYSTEM_MODAL,
|
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
|
||||||
shouldFadeIn: true,
|
shouldFadeIn: true,
|
||||||
shouldFadeOut: true,
|
shouldFadeOut: true,
|
||||||
destroyOnClose: true });
|
destroyOnClose: true });
|
||||||
|
|
||||||
this.state = State.CLOSED;
|
this.state = State.CLOSED;
|
||||||
this._hasModal = false;
|
this._hasModal = false;
|
||||||
this._actionMode = params.actionMode;
|
this._keybindingMode = params.keybindingMode;
|
||||||
this._shellReactive = params.shellReactive;
|
this._shellReactive = params.shellReactive;
|
||||||
this._shouldFadeIn = params.shouldFadeIn;
|
this._shouldFadeIn = params.shouldFadeIn;
|
||||||
this._shouldFadeOut = params.shouldFadeOut;
|
this._shouldFadeOut = params.shouldFadeOut;
|
||||||
@@ -194,7 +194,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
placeSpinner: function(layoutInfo) {
|
placeSpinner: function(layoutInfo) {
|
||||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
let spinnerIcon = global.datadir + '/theme/process-working.svg';
|
||||||
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||||
this._workSpinner.actor.opacity = 0;
|
this._workSpinner.actor.opacity = 0;
|
||||||
this._workSpinner.actor.show();
|
this._workSpinner.actor.show();
|
||||||
@@ -362,7 +362,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
if (this._hasModal)
|
if (this._hasModal)
|
||||||
return true;
|
return true;
|
||||||
if (!Main.pushModal(this._group, { timestamp: timestamp,
|
if (!Main.pushModal(this._group, { timestamp: timestamp,
|
||||||
actionMode: this._actionMode }))
|
keybindingMode: this._keybindingMode }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._hasModal = true;
|
this._hasModal = true;
|
||||||
|
|||||||
@@ -435,17 +435,17 @@ const Overview = new Lang.Class({
|
|||||||
this._inDrag = false;
|
this._inDrag = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
beginWindowDrag: function(window) {
|
beginWindowDrag: function(clone) {
|
||||||
this.emit('window-drag-begin', window);
|
this.emit('window-drag-begin', clone);
|
||||||
this._inDrag = true;
|
this._inDrag = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
cancelledWindowDrag: function(window) {
|
cancelledWindowDrag: function(clone) {
|
||||||
this.emit('window-drag-cancelled', window);
|
this.emit('window-drag-cancelled', clone);
|
||||||
},
|
},
|
||||||
|
|
||||||
endWindowDrag: function(window) {
|
endWindowDrag: function(clone) {
|
||||||
this.emit('window-drag-end', window);
|
this.emit('window-drag-end', clone);
|
||||||
this._inDrag = false;
|
this._inDrag = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -509,7 +509,7 @@ const Overview = new Lang.Class({
|
|||||||
if (shouldBeModal) {
|
if (shouldBeModal) {
|
||||||
if (!this._modal) {
|
if (!this._modal) {
|
||||||
if (Main.pushModal(this._overview,
|
if (Main.pushModal(this._overview,
|
||||||
{ actionMode: Shell.ActionMode.OVERVIEW })) {
|
{ keybindingMode: Shell.KeyBindingMode.OVERVIEW })) {
|
||||||
this._modal = true;
|
this._modal = true;
|
||||||
} else {
|
} else {
|
||||||
this.hide();
|
this.hide();
|
||||||
@@ -605,9 +605,9 @@ const Overview = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._shown = false;
|
|
||||||
|
|
||||||
this._animateNotVisible();
|
this._animateNotVisible();
|
||||||
|
|
||||||
|
this._shown = false;
|
||||||
this._syncGrab();
|
this._syncGrab();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -64,8 +64,7 @@ const SlideLayout = new Lang.Class({
|
|||||||
// flags only determine what to do if the allocated box is bigger
|
// flags only determine what to do if the allocated box is bigger
|
||||||
// than the actor's box.
|
// than the actor's box.
|
||||||
let realDirection = getRtlSlideDirection(this._direction, child);
|
let realDirection = getRtlSlideDirection(this._direction, child);
|
||||||
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth)
|
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth) : 0;
|
||||||
: (availWidth - natWidth * this._slideX);
|
|
||||||
|
|
||||||
let actorBox = new Clutter.ActorBox();
|
let actorBox = new Clutter.ActorBox();
|
||||||
actorBox.x1 = box.x1 + alignX + this._translationX;
|
actorBox.x1 = box.x1 + alignX + this._translationX;
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._targetApp = null;
|
this._targetApp = null;
|
||||||
this._appMenuNotifyId = 0;
|
this._appMenuNotifyId = 0;
|
||||||
this._actionGroupNotifyId = 0;
|
this._actionGroupNotifyId = 0;
|
||||||
this._busyNotifyId = 0;
|
|
||||||
|
|
||||||
let bin = new St.Bin({ name: 'appMenu' });
|
let bin = new St.Bin({ name: 'appMenu' });
|
||||||
bin.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
bin.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
||||||
@@ -274,7 +273,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
_onStyleChanged: function(actor) {
|
_onStyleChanged: function(actor) {
|
||||||
let node = actor.get_theme_node();
|
let node = actor.get_theme_node();
|
||||||
let [success, icon] = node.lookup_url('spinner-image', false);
|
let [success, icon] = node.lookup_url('spinner-image', false);
|
||||||
if (!success || (this._spinnerIcon && this._spinnerIcon.equal(icon)))
|
if (!success || this._spinnerIcon == icon)
|
||||||
return;
|
return;
|
||||||
this._spinnerIcon = icon;
|
this._spinnerIcon = icon;
|
||||||
this._spinner = new Animation.AnimatedIcon(this._spinnerIcon, PANEL_ICON_SIZE);
|
this._spinner = new Animation.AnimatedIcon(this._spinnerIcon, PANEL_ICON_SIZE);
|
||||||
@@ -458,17 +457,12 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._targetApp.disconnect(this._actionGroupNotifyId);
|
this._targetApp.disconnect(this._actionGroupNotifyId);
|
||||||
this._actionGroupNotifyId = 0;
|
this._actionGroupNotifyId = 0;
|
||||||
}
|
}
|
||||||
if (this._busyNotifyId) {
|
|
||||||
this._targetApp.disconnect(this._busyNotifyId);
|
|
||||||
this._busyNotifyId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._targetApp = targetApp;
|
this._targetApp = targetApp;
|
||||||
|
|
||||||
if (this._targetApp) {
|
if (this._targetApp) {
|
||||||
this._appMenuNotifyId = this._targetApp.connect('notify::menu', Lang.bind(this, this._sync));
|
this._appMenuNotifyId = this._targetApp.connect('notify::menu', Lang.bind(this, this._sync));
|
||||||
this._actionGroupNotifyId = this._targetApp.connect('notify::action-group', Lang.bind(this, this._sync));
|
this._actionGroupNotifyId = this._targetApp.connect('notify::action-group', Lang.bind(this, this._sync));
|
||||||
this._busyNotifyId = this._targetApp.connect('notify::busy', Lang.bind(this, this._sync));
|
|
||||||
this._label.setText(this._targetApp.get_name());
|
this._label.setText(this._targetApp.get_name());
|
||||||
this.actor.set_accessible_name(this._targetApp.get_name());
|
this.actor.set_accessible_name(this._targetApp.get_name());
|
||||||
}
|
}
|
||||||
@@ -482,7 +476,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
let isBusy = (this._targetApp != null &&
|
let isBusy = (this._targetApp != null &&
|
||||||
(this._targetApp.get_state() == Shell.AppState.STARTING ||
|
(this._targetApp.get_state() == Shell.AppState.STARTING ||
|
||||||
this._targetApp.get_busy()));
|
this._targetApp.get_state() == Shell.AppState.BUSY));
|
||||||
if (isBusy)
|
if (isBusy)
|
||||||
this.startAnimation();
|
this.startAnimation();
|
||||||
else
|
else
|
||||||
@@ -893,7 +887,7 @@ const Panel = new Lang.Class({
|
|||||||
|
|
||||||
this.statusArea = {};
|
this.statusArea = {};
|
||||||
|
|
||||||
this.menuManager = new PopupMenu.PopupMenuManager(this, { actionMode: Shell.ActionMode.TOPBAR_POPUP });
|
this.menuManager = new PopupMenu.PopupMenuManager(this, { keybindingMode: Shell.KeyBindingMode.TOPBAR_POPUP });
|
||||||
|
|
||||||
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
|
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
|
||||||
this.actor.add_actor(this._leftBox);
|
this.actor.add_actor(this._leftBox);
|
||||||
@@ -1025,7 +1019,7 @@ const Panel = new Lang.Class({
|
|||||||
if (!dragWindow)
|
if (!dragWindow)
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
let rect = dragWindow.get_frame_rect();
|
let rect = dragWindow.get_outer_rect();
|
||||||
let [stageX, stageY] = event.get_coords();
|
let [stageX, stageY] = event.get_coords();
|
||||||
|
|
||||||
let allowDrag = dragWindow.maximized_vertically &&
|
let allowDrag = dragWindow.maximized_vertically &&
|
||||||
|
|||||||
@@ -918,14 +918,14 @@ const PopupSubMenu = new Lang.Class({
|
|||||||
if (animate && needsScrollbar)
|
if (animate && needsScrollbar)
|
||||||
animate = false;
|
animate = false;
|
||||||
|
|
||||||
let targetAngle = this.actor.text_direction == Clutter.TextDirection.RTL ? -90 : 90;
|
|
||||||
|
|
||||||
if (animate) {
|
if (animate) {
|
||||||
let [minHeight, naturalHeight] = this.actor.get_preferred_height(-1);
|
let [minHeight, naturalHeight] = this.actor.get_preferred_height(-1);
|
||||||
this.actor.height = 0;
|
this.actor.height = 0;
|
||||||
this.actor._arrowRotation = this._arrow.rotation_angle_z;
|
this.actor._arrowRotation = this._arrow.rotation_angle_z;
|
||||||
|
let angle = this.actor._arrowRotation;
|
||||||
|
// animate to the first multiple of 90 greater than current angle
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ _arrowRotation: targetAngle,
|
{ _arrowRotation: angle - angle % 90 + 90,
|
||||||
height: naturalHeight,
|
height: naturalHeight,
|
||||||
time: 0.25,
|
time: 0.25,
|
||||||
onUpdateScope: this,
|
onUpdateScope: this,
|
||||||
@@ -938,7 +938,7 @@ const PopupSubMenu = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this._arrow.rotation_angle_z = targetAngle;
|
this._arrow.rotation_angle_z = this.actor._arrowRotation + 90;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -957,8 +957,10 @@ const PopupSubMenu = new Lang.Class({
|
|||||||
|
|
||||||
if (animate) {
|
if (animate) {
|
||||||
this.actor._arrowRotation = this._arrow.rotation_angle_z;
|
this.actor._arrowRotation = this._arrow.rotation_angle_z;
|
||||||
|
let angle = this.actor._arrowRotation;
|
||||||
|
// animate to the first multiple of 90 less than current angle
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ _arrowRotation: 0,
|
{ _arrowRotation: (angle - 1) - (angle - 1) % 90,
|
||||||
height: 0,
|
height: 0,
|
||||||
time: 0.25,
|
time: 0.25,
|
||||||
onUpdateScope: this,
|
onUpdateScope: this,
|
||||||
@@ -972,7 +974,7 @@ const PopupSubMenu = new Lang.Class({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this._arrow.rotation_angle_z = 0;
|
this._arrow.rotation_angle_z = this.actor._arrowRotation - 90;
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1050,6 +1052,8 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
|||||||
this._triangleBin = new St.Widget({ y_expand: true,
|
this._triangleBin = new St.Widget({ y_expand: true,
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this._triangleBin.add_child(this._triangle);
|
this._triangleBin.add_child(this._triangle);
|
||||||
|
if (this._triangleBin.get_text_direction() == Clutter.TextDirection.RTL)
|
||||||
|
this._triangleBin.set_scale(-1.0, 1.0);
|
||||||
|
|
||||||
this.actor.add_child(this._triangleBin);
|
this.actor.add_child(this._triangleBin);
|
||||||
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
|
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||||
|
|||||||
@@ -85,8 +85,7 @@ const Clock = new Lang.Class({
|
|||||||
let date = new Date();
|
let date = new Date();
|
||||||
/* Translators: This is a time format for a date in
|
/* Translators: This is a time format for a date in
|
||||||
long format */
|
long format */
|
||||||
let dateFormat = Shell.util_translate_time_string(N_("%A, %B %d"));
|
this._date.text = date.toLocaleFormat(_("%A, %B %d"));
|
||||||
this._date.text = date.toLocaleFormat(dateFormat);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
@@ -647,14 +646,14 @@ const ScreenShield = new Lang.Class({
|
|||||||
if (this._isModal)
|
if (this._isModal)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
this._isModal = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN });
|
this._isModal = Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN });
|
||||||
if (this._isModal)
|
if (this._isModal)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// We failed to get a pointer grab, it means that
|
// We failed to get a pointer grab, it means that
|
||||||
// something else has it. Try with a keyboard grab only
|
// something else has it. Try with a keyboard grab only
|
||||||
this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED,
|
this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED,
|
||||||
actionMode: Shell.ActionMode.LOCK_SCREEN });
|
keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN });
|
||||||
return this._isModal;
|
return this._isModal;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -670,9 +669,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
if (this._lockScreenState != MessageTray.State.SHOWN)
|
if (this._lockScreenState != MessageTray.State.SHOWN)
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
let isEnter = (symbol == Clutter.KEY_Return ||
|
let isEnter = (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_KP_Enter);
|
||||||
symbol == Clutter.KEY_KP_Enter ||
|
|
||||||
symbol == Clutter.KEY_ISO_Enter);
|
|
||||||
if (!isEnter && !(GLib.unichar_isprint(unichar) || symbol == Clutter.KEY_Escape))
|
if (!isEnter && !(GLib.unichar_isprint(unichar) || symbol == Clutter.KEY_Escape))
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
@@ -922,11 +919,6 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
this._lockScreenState = MessageTray.State.HIDDEN;
|
this._lockScreenState = MessageTray.State.HIDDEN;
|
||||||
this._lockScreenGroup.hide();
|
this._lockScreenGroup.hide();
|
||||||
|
|
||||||
if (this._dialog) {
|
|
||||||
this._dialog.actor.grab_key_focus();
|
|
||||||
this._dialog.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideLockScreen: function(animate, velocity) {
|
_hideLockScreen: function(animate, velocity) {
|
||||||
@@ -1335,8 +1327,6 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
// If the previous shell crashed, and gnome-session restarted us, then re-lock
|
// If the previous shell crashed, and gnome-session restarted us, then re-lock
|
||||||
lockIfWasLocked: function() {
|
lockIfWasLocked: function() {
|
||||||
if (!this._settings.get_boolean(LOCK_ENABLED_KEY))
|
|
||||||
return;
|
|
||||||
let wasLocked = global.get_runtime_state('b', LOCKED_STATE_STR);
|
let wasLocked = global.get_runtime_state('b', LOCKED_STATE_STR);
|
||||||
if (wasLocked === null)
|
if (wasLocked === null)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -43,8 +43,6 @@ const ScreencastService = new Lang.Class({
|
|||||||
|
|
||||||
this._recorders = new Map();
|
this._recorders = new Map();
|
||||||
|
|
||||||
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
|
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -70,8 +68,8 @@ const ScreencastService = new Lang.Class({
|
|||||||
if (Main.sessionMode.allowScreencast)
|
if (Main.sessionMode.allowScreencast)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (let sender of this._recorders.keys())
|
this._recorders.clear();
|
||||||
this._stopRecordingForSender(sender);
|
this.emit('updated');
|
||||||
},
|
},
|
||||||
|
|
||||||
_onNameVanished: function(connection, name) {
|
_onNameVanished: function(connection, name) {
|
||||||
@@ -105,8 +103,7 @@ const ScreencastService = new Lang.Class({
|
|||||||
|
|
||||||
ScreencastAsync: function(params, invocation) {
|
ScreencastAsync: function(params, invocation) {
|
||||||
let returnValue = [false, ''];
|
let returnValue = [false, ''];
|
||||||
if (!Main.sessionMode.allowScreencast ||
|
if (!Main.sessionMode.allowScreencast) {
|
||||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
|
||||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -120,8 +117,6 @@ const ScreencastService = new Lang.Class({
|
|||||||
this._applyOptionalParameters(recorder, options);
|
this._applyOptionalParameters(recorder, options);
|
||||||
let [success, fileName] = recorder.record();
|
let [success, fileName] = recorder.record();
|
||||||
returnValue = [success, fileName ? fileName : ''];
|
returnValue = [success, fileName ? fileName : ''];
|
||||||
if (!success)
|
|
||||||
this._stopRecordingForSender(sender);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
@@ -129,8 +124,7 @@ const ScreencastService = new Lang.Class({
|
|||||||
|
|
||||||
ScreencastAreaAsync: function(params, invocation) {
|
ScreencastAreaAsync: function(params, invocation) {
|
||||||
let returnValue = [false, ''];
|
let returnValue = [false, ''];
|
||||||
if (!Main.sessionMode.allowScreencast ||
|
if (!Main.sessionMode.allowScreencast) {
|
||||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
|
||||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -156,8 +150,6 @@ const ScreencastService = new Lang.Class({
|
|||||||
this._applyOptionalParameters(recorder, options);
|
this._applyOptionalParameters(recorder, options);
|
||||||
let [success, fileName] = recorder.record();
|
let [success, fileName] = recorder.record();
|
||||||
returnValue = [success, fileName ? fileName : ''];
|
returnValue = [success, fileName ? fileName : ''];
|
||||||
if (!success)
|
|
||||||
this._stopRecordingForSender(sender);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
|
||||||
|
|||||||
@@ -65,44 +65,9 @@ const ScreenshotService = new Lang.Class({
|
|||||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
|
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
|
||||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
|
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
|
||||||
|
|
||||||
this._screenShooter = new Map();
|
|
||||||
|
|
||||||
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
|
|
||||||
|
|
||||||
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||||
},
|
},
|
||||||
|
|
||||||
_createScreenshot: function(invocation) {
|
|
||||||
let sender = invocation.get_sender();
|
|
||||||
if (this._screenShooter.has(sender) ||
|
|
||||||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
|
|
||||||
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let shooter = new Shell.Screenshot();
|
|
||||||
shooter._watchNameId =
|
|
||||||
Gio.bus_watch_name(Gio.BusType.SESSION, sender, 0, null,
|
|
||||||
Lang.bind(this, this._onNameVanished));
|
|
||||||
|
|
||||||
this._screenShooter.set(sender, shooter);
|
|
||||||
|
|
||||||
return shooter;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onNameVanished: function(connection, name) {
|
|
||||||
this._removeShooterForSender(name);
|
|
||||||
},
|
|
||||||
|
|
||||||
_removeShooterForSender: function(sender) {
|
|
||||||
let shooter = this._screenShooter.get(sender);
|
|
||||||
if (!shooter)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Gio.bus_unwatch_name(shooter._watchNameId);
|
|
||||||
this._screenShooter.delete(sender);
|
|
||||||
},
|
|
||||||
|
|
||||||
_checkArea: function(x, y, width, height) {
|
_checkArea: function(x, y, width, height) {
|
||||||
return x >= 0 && y >= 0 &&
|
return x >= 0 && y >= 0 &&
|
||||||
width > 0 && height > 0 &&
|
width > 0 && height > 0 &&
|
||||||
@@ -111,15 +76,9 @@ const ScreenshotService = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
|
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
|
||||||
if (result) {
|
if (flash && result) {
|
||||||
if (flash) {
|
|
||||||
let flashspot = new Flashspot(area);
|
let flashspot = new Flashspot(area);
|
||||||
flashspot.fire(Lang.bind(this, function() {
|
flashspot.fire();
|
||||||
this._removeShooterForSender(invocation.get_sender());
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
this._removeShooterForSender(invocation.get_sender());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
||||||
@@ -153,9 +112,7 @@ const ScreenshotService = new Lang.Class({
|
|||||||
"Invalid params");
|
"Invalid params");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let screenshot = this._createScreenshot(invocation);
|
let screenshot = new Shell.Screenshot();
|
||||||
if (!screenshot)
|
|
||||||
return;
|
|
||||||
screenshot.screenshot_area (x, y, width, height, filename,
|
screenshot.screenshot_area (x, y, width, height, filename,
|
||||||
Lang.bind(this, this._onScreenshotComplete,
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
flash, invocation));
|
flash, invocation));
|
||||||
@@ -163,9 +120,7 @@ const ScreenshotService = new Lang.Class({
|
|||||||
|
|
||||||
ScreenshotWindowAsync : function (params, invocation) {
|
ScreenshotWindowAsync : function (params, invocation) {
|
||||||
let [include_frame, include_cursor, flash, filename] = params;
|
let [include_frame, include_cursor, flash, filename] = params;
|
||||||
let screenshot = this._createScreenshot(invocation);
|
let screenshot = new Shell.Screenshot();
|
||||||
if (!screenshot)
|
|
||||||
return;
|
|
||||||
screenshot.screenshot_window (include_frame, include_cursor, filename,
|
screenshot.screenshot_window (include_frame, include_cursor, filename,
|
||||||
Lang.bind(this, this._onScreenshotComplete,
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
flash, invocation));
|
flash, invocation));
|
||||||
@@ -173,9 +128,7 @@ const ScreenshotService = new Lang.Class({
|
|||||||
|
|
||||||
ScreenshotAsync : function (params, invocation) {
|
ScreenshotAsync : function (params, invocation) {
|
||||||
let [include_cursor, flash, filename] = params;
|
let [include_cursor, flash, filename] = params;
|
||||||
let screenshot = this._createScreenshot(invocation);
|
let screenshot = new Shell.Screenshot();
|
||||||
if (!screenshot)
|
|
||||||
return;
|
|
||||||
screenshot.screenshot(include_cursor, filename,
|
screenshot.screenshot(include_cursor, filename,
|
||||||
Lang.bind(this, this._onScreenshotComplete,
|
Lang.bind(this, this._onScreenshotComplete,
|
||||||
flash, invocation));
|
flash, invocation));
|
||||||
@@ -349,7 +302,7 @@ const Flashspot = new Lang.Class({
|
|||||||
this.actor.set_position(area.x, area.y);
|
this.actor.set_position(area.x, area.y);
|
||||||
},
|
},
|
||||||
|
|
||||||
fire: function(doneCallback) {
|
fire: function() {
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
this.actor.opacity = 255;
|
this.actor.opacity = 255;
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
@@ -357,8 +310,6 @@ const Flashspot = new Lang.Class({
|
|||||||
time: FLASHSPOT_ANIMATION_OUT_TIME,
|
time: FLASHSPOT_ANIMATION_OUT_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
if (doneCallback)
|
|
||||||
doneCallback();
|
|
||||||
this.destroy();
|
this.destroy();
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
307
js/ui/search.js
307
js/ui/search.js
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
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;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@@ -25,6 +24,108 @@ const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
|
|||||||
const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
|
const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
|
||||||
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;
|
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;
|
||||||
|
|
||||||
|
const SearchSystem = new Lang.Class({
|
||||||
|
Name: 'SearchSystem',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this._providers = [];
|
||||||
|
|
||||||
|
this._registerProvider(new AppDisplay.AppSearchProvider());
|
||||||
|
|
||||||
|
this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA });
|
||||||
|
this._searchSettings.connect('changed::enabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
|
||||||
|
|
||||||
|
this._reloadRemoteProviders();
|
||||||
|
|
||||||
|
this._cancellable = new Gio.Cancellable();
|
||||||
|
},
|
||||||
|
|
||||||
|
addProvider: function(provider) {
|
||||||
|
this._providers.push(provider);
|
||||||
|
this.emit('providers-changed');
|
||||||
|
},
|
||||||
|
|
||||||
|
_reloadRemoteProviders: function() {
|
||||||
|
let remoteProviders = this._providers.filter(function(provider) {
|
||||||
|
return provider.isRemoteProvider;
|
||||||
|
});
|
||||||
|
remoteProviders.forEach(Lang.bind(this, function(provider) {
|
||||||
|
this._unregisterProvider(provider);
|
||||||
|
}));
|
||||||
|
|
||||||
|
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
|
||||||
|
providers.forEach(Lang.bind(this, this._registerProvider));
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.emit('providers-changed');
|
||||||
|
},
|
||||||
|
|
||||||
|
_registerProvider: function (provider) {
|
||||||
|
this._providers.push(provider);
|
||||||
|
},
|
||||||
|
|
||||||
|
_unregisterProvider: function (provider) {
|
||||||
|
let index = this._providers.indexOf(provider);
|
||||||
|
this._providers.splice(index, 1);
|
||||||
|
|
||||||
|
if (provider.display)
|
||||||
|
provider.display.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
getProviders: function() {
|
||||||
|
return this._providers;
|
||||||
|
},
|
||||||
|
|
||||||
|
getTerms: function() {
|
||||||
|
return this._terms;
|
||||||
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
this._terms = [];
|
||||||
|
this._results = {};
|
||||||
|
},
|
||||||
|
|
||||||
|
_gotResults: function(results, provider) {
|
||||||
|
this._results[provider.id] = results;
|
||||||
|
this.emit('search-updated', provider, results);
|
||||||
|
},
|
||||||
|
|
||||||
|
setTerms: function(terms) {
|
||||||
|
this._cancellable.cancel();
|
||||||
|
this._cancellable.reset();
|
||||||
|
|
||||||
|
let previousResults = this._results;
|
||||||
|
let previousTerms = this._terms;
|
||||||
|
this.reset();
|
||||||
|
|
||||||
|
if (!terms)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let searchString = terms.join(' ');
|
||||||
|
let previousSearchString = previousTerms.join(' ');
|
||||||
|
if (searchString == previousSearchString)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let isSubSearch = false;
|
||||||
|
if (previousTerms.length > 0)
|
||||||
|
isSubSearch = searchString.indexOf(previousSearchString) == 0;
|
||||||
|
|
||||||
|
this._terms = terms;
|
||||||
|
|
||||||
|
this._providers.forEach(Lang.bind(this, function(provider) {
|
||||||
|
let previousProviderResults = previousResults[provider.id];
|
||||||
|
if (isSubSearch && previousProviderResults)
|
||||||
|
provider.getSubsearchResultSet(previousProviderResults, terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
|
||||||
|
else
|
||||||
|
provider.getInitialResultSet(terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(SearchSystem.prototype);
|
||||||
|
|
||||||
const MaxWidthBin = new Lang.Class({
|
const MaxWidthBin = new Lang.Class({
|
||||||
Name: 'MaxWidthBin',
|
Name: 'MaxWidthBin',
|
||||||
Extends: St.Bin,
|
Extends: St.Bin,
|
||||||
@@ -199,9 +300,12 @@ const SearchResultsBase = new Lang.Class({
|
|||||||
this._cancellable.reset();
|
this._cancellable.reset();
|
||||||
|
|
||||||
this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
|
this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
|
||||||
|
if (metas.length == 0) {
|
||||||
|
callback(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (metas.length != metasNeeded.length) {
|
if (metas.length != metasNeeded.length) {
|
||||||
log('Wrong number of result metas returned by search provider ' + this.provider.id +
|
log('Wrong number of result metas returned by search provider');
|
||||||
': expected ' + metasNeeded.length + ' but got ' + metas.length);
|
|
||||||
callback(false);
|
callback(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -231,11 +335,9 @@ const SearchResultsBase = new Lang.Class({
|
|||||||
let hasMoreResults = results.length < providerResults.length;
|
let hasMoreResults = results.length < providerResults.length;
|
||||||
|
|
||||||
this._ensureResultActors(results, Lang.bind(this, function(successful) {
|
this._ensureResultActors(results, Lang.bind(this, function(successful) {
|
||||||
if (!successful) {
|
|
||||||
this._clearResultDisplay();
|
this._clearResultDisplay();
|
||||||
callback();
|
if (!successful)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// To avoid CSS transitions causing flickering when
|
// To avoid CSS transitions causing flickering when
|
||||||
// the first search result stays the same, we hide the
|
// the first search result stays the same, we hide the
|
||||||
@@ -395,136 +497,16 @@ const SearchResults = new Lang.Class({
|
|||||||
this._statusText = new St.Label({ style_class: 'search-statustext' });
|
this._statusText = new St.Label({ style_class: 'search-statustext' });
|
||||||
this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
|
this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
|
||||||
y_align: St.Align.MIDDLE });
|
y_align: St.Align.MIDDLE });
|
||||||
this.actor.add(this._statusBin, { expand: true });
|
this._content.add(this._statusBin, { expand: true });
|
||||||
this._statusBin.add_actor(this._statusText);
|
this._statusBin.add_actor(this._statusText);
|
||||||
|
|
||||||
this._highlightDefault = false;
|
this._highlightDefault = false;
|
||||||
this._defaultResult = null;
|
this._defaultResult = null;
|
||||||
this._startingSearch = false;
|
|
||||||
|
|
||||||
this._terms = [];
|
this._searchSystem = new SearchSystem();
|
||||||
this._results = {};
|
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
|
||||||
|
this._searchSystem.connect('providers-changed', Lang.bind(this, this._updateProviderDisplays));
|
||||||
this._providers = [];
|
this._updateProviderDisplays();
|
||||||
|
|
||||||
this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA });
|
|
||||||
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
|
|
||||||
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
|
|
||||||
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
|
|
||||||
|
|
||||||
this._searchTimeoutId = 0;
|
|
||||||
this._cancellable = new Gio.Cancellable();
|
|
||||||
|
|
||||||
this._registerProvider(new AppDisplay.AppSearchProvider());
|
|
||||||
this._reloadRemoteProviders();
|
|
||||||
},
|
|
||||||
|
|
||||||
_reloadRemoteProviders: function() {
|
|
||||||
let remoteProviders = this._providers.filter(function(provider) {
|
|
||||||
return provider.isRemoteProvider;
|
|
||||||
});
|
|
||||||
remoteProviders.forEach(Lang.bind(this, function(provider) {
|
|
||||||
this._unregisterProvider(provider);
|
|
||||||
}));
|
|
||||||
|
|
||||||
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
|
|
||||||
providers.forEach(Lang.bind(this, this._registerProvider));
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
_registerProvider: function (provider) {
|
|
||||||
this._providers.push(provider);
|
|
||||||
this._ensureProviderDisplay(provider);
|
|
||||||
},
|
|
||||||
|
|
||||||
_unregisterProvider: function (provider) {
|
|
||||||
let index = this._providers.indexOf(provider);
|
|
||||||
this._providers.splice(index, 1);
|
|
||||||
|
|
||||||
if (provider.display)
|
|
||||||
provider.display.destroy();
|
|
||||||
},
|
|
||||||
|
|
||||||
_gotResults: function(results, provider) {
|
|
||||||
this._results[provider.id] = results;
|
|
||||||
this._updateResults(provider, results);
|
|
||||||
},
|
|
||||||
|
|
||||||
_clearSearchTimeout: function() {
|
|
||||||
if (this._searchTimeoutId > 0) {
|
|
||||||
GLib.source_remove(this._searchTimeoutId);
|
|
||||||
this._searchTimeoutId = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_reset: function() {
|
|
||||||
this._terms = [];
|
|
||||||
this._results = {};
|
|
||||||
this._clearDisplay();
|
|
||||||
this._clearSearchTimeout();
|
|
||||||
this._defaultResult = null;
|
|
||||||
this._startingSearch = false;
|
|
||||||
|
|
||||||
this._updateSearchProgress();
|
|
||||||
},
|
|
||||||
|
|
||||||
_doSearch: function() {
|
|
||||||
this._startingSearch = false;
|
|
||||||
|
|
||||||
let previousResults = this._results;
|
|
||||||
this._results = {};
|
|
||||||
|
|
||||||
this._providers.forEach(Lang.bind(this, function(provider) {
|
|
||||||
provider.searchInProgress = true;
|
|
||||||
|
|
||||||
let previousProviderResults = previousResults[provider.id];
|
|
||||||
if (this._isSubSearch && previousProviderResults)
|
|
||||||
provider.getSubsearchResultSet(previousProviderResults, this._terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
|
|
||||||
else
|
|
||||||
provider.getInitialResultSet(this._terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._updateSearchProgress();
|
|
||||||
|
|
||||||
this._clearSearchTimeout();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onSearchTimeout: function() {
|
|
||||||
this._searchTimeoutId = 0;
|
|
||||||
this._doSearch();
|
|
||||||
return GLib.SOURCE_REMOVE;
|
|
||||||
},
|
|
||||||
|
|
||||||
setTerms: function(terms) {
|
|
||||||
// Check for the case of making a duplicate previous search before
|
|
||||||
// setting state of the current search or cancelling the search.
|
|
||||||
// This will prevent incorrect state being as a result of a duplicate
|
|
||||||
// search while the previous search is still active.
|
|
||||||
let searchString = terms.join(' ');
|
|
||||||
let previousSearchString = this._terms.join(' ');
|
|
||||||
if (searchString == previousSearchString)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this._startingSearch = true;
|
|
||||||
|
|
||||||
this._cancellable.cancel();
|
|
||||||
this._cancellable.reset();
|
|
||||||
|
|
||||||
if (terms.length == 0) {
|
|
||||||
this._reset();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let isSubSearch = false;
|
|
||||||
if (this._terms.length > 0)
|
|
||||||
isSubSearch = searchString.indexOf(previousSearchString) == 0;
|
|
||||||
|
|
||||||
this._terms = terms;
|
|
||||||
this._isSubSearch = isSubSearch;
|
|
||||||
this._updateSearchProgress();
|
|
||||||
|
|
||||||
if (this._searchTimeoutId == 0)
|
|
||||||
this._searchTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, Lang.bind(this, this._onSearchTimeout));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onPan: function(action) {
|
_onPan: function(action) {
|
||||||
@@ -546,24 +528,44 @@ const SearchResults = new Lang.Class({
|
|||||||
if (provider.appInfo)
|
if (provider.appInfo)
|
||||||
providerDisplay = new ListSearchResults(provider);
|
providerDisplay = new ListSearchResults(provider);
|
||||||
else
|
else
|
||||||
providerDisplay = new GridSearchResults(provider, this.actor);
|
providerDisplay = new GridSearchResults(provider, this._content);
|
||||||
|
|
||||||
providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
|
||||||
providerDisplay.actor.hide();
|
|
||||||
this._content.add(providerDisplay.actor);
|
this._content.add(providerDisplay.actor);
|
||||||
provider.display = providerDisplay;
|
provider.display = providerDisplay;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateProviderDisplays: function() {
|
||||||
|
this._searchSystem.getProviders().forEach(Lang.bind(this, this._ensureProviderDisplay));
|
||||||
|
},
|
||||||
|
|
||||||
_clearDisplay: function() {
|
_clearDisplay: function() {
|
||||||
this._providers.forEach(function(provider) {
|
this._searchSystem.getProviders().forEach(function(provider) {
|
||||||
provider.display.clear();
|
provider.display.clear();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
reset: function() {
|
||||||
|
this._searchSystem.reset();
|
||||||
|
this._statusBin.hide();
|
||||||
|
this._clearDisplay();
|
||||||
|
this._defaultResult = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
startingSearch: function() {
|
||||||
|
this.reset();
|
||||||
|
this._statusText.set_text(_("Searching…"));
|
||||||
|
this._statusBin.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
setTerms: function(terms) {
|
||||||
|
this._searchSystem.setTerms(terms);
|
||||||
|
},
|
||||||
|
|
||||||
_maybeSetInitialSelection: function() {
|
_maybeSetInitialSelection: function() {
|
||||||
let newDefaultResult = null;
|
let newDefaultResult = null;
|
||||||
|
|
||||||
let providers = this._providers;
|
let providers = this._searchSystem.getProviders();
|
||||||
for (let i = 0; i < providers.length; i++) {
|
for (let i = 0; i < providers.length; i++) {
|
||||||
let provider = providers[i];
|
let provider = providers[i];
|
||||||
let display = provider.display;
|
let display = provider.display;
|
||||||
@@ -586,50 +588,31 @@ const SearchResults = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
get searchInProgress() {
|
_updateStatusText: function () {
|
||||||
if (this._startingSearch)
|
let haveResults = this._searchSystem.getProviders().some(function(provider) {
|
||||||
return true;
|
|
||||||
|
|
||||||
return this._providers.some(function(provider) {
|
|
||||||
return provider.searchInProgress;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateSearchProgress: function () {
|
|
||||||
let haveResults = this._providers.some(function(provider) {
|
|
||||||
let display = provider.display;
|
let display = provider.display;
|
||||||
return (display.getFirstResult() != null);
|
return (display.getFirstResult() != null);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._scrollView.visible = haveResults;
|
|
||||||
this._statusBin.visible = !haveResults;
|
|
||||||
|
|
||||||
if (!haveResults) {
|
if (!haveResults) {
|
||||||
if (this.searchInProgress) {
|
|
||||||
this._statusText.set_text(_("Searching…"));
|
|
||||||
} else {
|
|
||||||
this._statusText.set_text(_("No results."));
|
this._statusText.set_text(_("No results."));
|
||||||
}
|
this._statusBin.show();
|
||||||
|
} else {
|
||||||
|
this._statusBin.hide();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateResults: function(provider, results) {
|
_updateResults: function(searchSystem, provider, results) {
|
||||||
let terms = this._terms;
|
let terms = searchSystem.getTerms();
|
||||||
let display = provider.display;
|
let display = provider.display;
|
||||||
|
|
||||||
display.updateSearch(results, terms, Lang.bind(this, function() {
|
display.updateSearch(results, terms, Lang.bind(this, function() {
|
||||||
provider.searchInProgress = false;
|
|
||||||
|
|
||||||
this._maybeSetInitialSelection();
|
this._maybeSetInitialSelection();
|
||||||
this._updateSearchProgress();
|
this._updateStatusText();
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
activateDefault: function() {
|
activateDefault: function() {
|
||||||
// If we have a search queued up, force the search now.
|
|
||||||
if (this._searchTimeoutId > 0)
|
|
||||||
this._doSearch();
|
|
||||||
|
|
||||||
if (this._defaultResult)
|
if (this._defaultResult)
|
||||||
this._defaultResult.activate();
|
this._defaultResult.activate();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ const GnomeShellIface = '<node> \
|
|||||||
</method> \
|
</method> \
|
||||||
<signal name="AcceleratorActivated"> \
|
<signal name="AcceleratorActivated"> \
|
||||||
<arg name="action" type="u" /> \
|
<arg name="action" type="u" /> \
|
||||||
<arg name="parameters" type="a{sv}" /> \
|
<arg name="deviceid" type="u" /> \
|
||||||
|
<arg name="timestamp" type="u" /> \
|
||||||
</signal> \
|
</signal> \
|
||||||
<property name="Mode" type="s" access="read" /> \
|
<property name="Mode" type="s" access="read" /> \
|
||||||
<property name="OverviewActive" type="b" access="readwrite" /> \
|
<property name="OverviewActive" type="b" access="readwrite" /> \
|
||||||
@@ -89,12 +90,6 @@ const GnomeShell = new Lang.Class({
|
|||||||
function(display, action, deviceid, timestamp) {
|
function(display, action, deviceid, timestamp) {
|
||||||
this._emitAcceleratorActivated(action, deviceid, timestamp);
|
this._emitAcceleratorActivated(action, deviceid, timestamp);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._cachedOverviewVisible = false;
|
|
||||||
Main.overview.connect('showing',
|
|
||||||
Lang.bind(this, this._checkOverviewVisibleChanged));
|
|
||||||
Main.overview.connect('hidden',
|
|
||||||
Lang.bind(this, this._checkOverviewVisibleChanged));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -139,7 +134,7 @@ const GnomeShell = new Lang.Class({
|
|||||||
params[param] = params[param].deep_unpack();
|
params[param] = params[param].deep_unpack();
|
||||||
|
|
||||||
let monitorIndex = -1;
|
let monitorIndex = -1;
|
||||||
if (params['monitor'] >= 0)
|
if (params['monitor'])
|
||||||
monitorIndex = params['monitor'];
|
monitorIndex = params['monitor'];
|
||||||
|
|
||||||
let icon = null;
|
let icon = null;
|
||||||
@@ -195,14 +190,11 @@ const GnomeShell = new Lang.Class({
|
|||||||
|
|
||||||
let connection = this._dbusImpl.get_connection();
|
let connection = this._dbusImpl.get_connection();
|
||||||
let info = this._dbusImpl.get_info();
|
let info = this._dbusImpl.get_info();
|
||||||
let params = { 'device-id': GLib.Variant.new('u', deviceid),
|
|
||||||
'timestamp': GLib.Variant.new('u', timestamp),
|
|
||||||
'action-mode': GLib.Variant.new('u', Main.actionMode) };
|
|
||||||
connection.emit_signal(destination,
|
connection.emit_signal(destination,
|
||||||
this._dbusImpl.get_object_path(),
|
this._dbusImpl.get_object_path(),
|
||||||
info ? info.name : null,
|
info ? info.name : null,
|
||||||
'AcceleratorActivated',
|
'AcceleratorActivated',
|
||||||
GLib.Variant.new('(ua{sv})', [action, params]));
|
GLib.Variant.new('(uuu)', [action, deviceid, timestamp]));
|
||||||
},
|
},
|
||||||
|
|
||||||
_grabAcceleratorForSender: function(accelerator, flags, sender) {
|
_grabAcceleratorForSender: function(accelerator, flags, sender) {
|
||||||
@@ -243,15 +235,8 @@ const GnomeShell = new Lang.Class({
|
|||||||
|
|
||||||
Mode: global.session_mode,
|
Mode: global.session_mode,
|
||||||
|
|
||||||
_checkOverviewVisibleChanged: function() {
|
|
||||||
if (Main.overview.visible !== this._cachedOverviewVisible) {
|
|
||||||
this._cachedOverviewVisible = Main.overview.visible;
|
|
||||||
this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
get OverviewActive() {
|
get OverviewActive() {
|
||||||
return this._cachedOverviewVisible;
|
return Main.overview.visible;
|
||||||
},
|
},
|
||||||
|
|
||||||
set OverviewActive(visible) {
|
set OverviewActive(visible) {
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ const EntryMenu = new Lang.Class({
|
|||||||
_init: function(entry) {
|
_init: function(entry) {
|
||||||
this.parent(entry, 0, St.Side.TOP);
|
this.parent(entry, 0, St.Side.TOP);
|
||||||
|
|
||||||
|
this.actor.add_style_class_name('entry-context-menu');
|
||||||
|
|
||||||
this._entry = entry;
|
this._entry = entry;
|
||||||
this._clipboard = St.Clipboard.get_default();
|
this._clipboard = St.Clipboard.get_default();
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const Lang = imports.lang;
|
|||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
|
const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */
|
||||||
|
|
||||||
const Slider = new Lang.Class({
|
const Slider = new Lang.Class({
|
||||||
Name: "Slider",
|
Name: "Slider",
|
||||||
@@ -197,7 +197,7 @@ const Slider = new Lang.Class({
|
|||||||
let [dx, dy] = event.get_scroll_delta();
|
let [dx, dy] = event.get_scroll_delta();
|
||||||
// Even though the slider is horizontal, use dy to match
|
// Even though the slider is horizontal, use dy to match
|
||||||
// the UP/DOWN above.
|
// the UP/DOWN above.
|
||||||
delta = -dy * SLIDER_SCROLL_STEP;
|
delta = -dy / 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._value = Math.min(Math.max(0, this._value + delta), 1);
|
this._value = Math.min(Math.max(0, this._value + delta), 1);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,15 +13,6 @@ const LOCATION_SCHEMA = 'org.gnome.system.location';
|
|||||||
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
|
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
|
||||||
const ENABLED = 'enabled';
|
const ENABLED = 'enabled';
|
||||||
|
|
||||||
const GeoclueAccuracyLevel = {
|
|
||||||
NONE: 0,
|
|
||||||
COUNTRY: 1,
|
|
||||||
CITY: 4,
|
|
||||||
NEIGHBORHOOD: 5,
|
|
||||||
STREET: 6,
|
|
||||||
EXACT: 8
|
|
||||||
};
|
|
||||||
|
|
||||||
var GeoclueIface = '<node> \
|
var GeoclueIface = '<node> \
|
||||||
<interface name="org.freedesktop.GeoClue2.Manager"> \
|
<interface name="org.freedesktop.GeoClue2.Manager"> \
|
||||||
<property name="InUse" type="b" access="read"/> \
|
<property name="InUse" type="b" access="read"/> \
|
||||||
@@ -70,7 +61,6 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._item.status.text = _("Enabled");
|
this._item.status.text = _("Enabled");
|
||||||
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
||||||
this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop');
|
|
||||||
|
|
||||||
this.menu.addMenuItem(this._item);
|
this.menu.addMenuItem(this._item);
|
||||||
|
|
||||||
@@ -191,14 +181,10 @@ const Indicator = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getMaxAccuracyLevel: function() {
|
_getMaxAccuracyLevel: function() {
|
||||||
if (this._settings.get_boolean(ENABLED)) {
|
if (this._settings.get_boolean(ENABLED))
|
||||||
let level = this._settings.get_string(MAX_ACCURACY_LEVEL);
|
return this._settings.get_enum(MAX_ACCURACY_LEVEL);
|
||||||
|
else
|
||||||
return GeoclueAccuracyLevel[level.toUpperCase()] ||
|
return 0;
|
||||||
GeoclueAccuracyLevel.NONE;
|
|
||||||
} else {
|
|
||||||
return GeoclueAccuracyLevel.NONE;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_notifyMaxAccuracyLevel: function() {
|
_notifyMaxAccuracyLevel: function() {
|
||||||
|
|||||||
@@ -876,8 +876,7 @@ const NMWirelessDialog = new Lang.Class({
|
|||||||
x_align: Clutter.ActorAlign.CENTER,
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
|
|
||||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
this._noNetworksSpinner = new Animation.AnimatedIcon(global.datadir + '/theme/process-working.svg', 24, 24);
|
||||||
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 24, 24);
|
|
||||||
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
|
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
|
||||||
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
|
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
|
||||||
text: _("No Networks") }));
|
text: _("No Networks") }));
|
||||||
@@ -1867,7 +1866,7 @@ const NMApplet = new Lang.Class({
|
|||||||
_connectionRemoved: function(connection) {
|
_connectionRemoved: function(connection) {
|
||||||
let pos = this._connections.indexOf(connection);
|
let pos = this._connections.indexOf(connection);
|
||||||
if (pos != -1)
|
if (pos != -1)
|
||||||
this._connections.splice(pos, 1);
|
this._connections.splice(connection, 1);
|
||||||
|
|
||||||
let section = connection._section;
|
let section = connection._section;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ const RfkillManagerInterface = '<node> \
|
|||||||
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
|
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
|
||||||
<property name="AirplaneMode" type="b" access="readwrite" /> \
|
<property name="AirplaneMode" type="b" access="readwrite" /> \
|
||||||
<property name="HardwareAirplaneMode" type="b" access="read" /> \
|
<property name="HardwareAirplaneMode" type="b" access="read" /> \
|
||||||
<property name="ShouldShowAirplaneMode" type="b" access="read" /> \
|
|
||||||
</interface> \
|
</interface> \
|
||||||
</node>';
|
</node>';
|
||||||
|
|
||||||
@@ -49,10 +48,6 @@ const RfkillManager = new Lang.Class({
|
|||||||
return this._proxy.HardwareAirplaneMode;
|
return this._proxy.HardwareAirplaneMode;
|
||||||
},
|
},
|
||||||
|
|
||||||
get shouldShowAirplaneMode() {
|
|
||||||
return this._proxy.ShouldShowAirplaneMode;
|
|
||||||
},
|
|
||||||
|
|
||||||
_changed: function() {
|
_changed: function() {
|
||||||
this.emit('airplane-mode-changed');
|
this.emit('airplane-mode-changed');
|
||||||
}
|
}
|
||||||
@@ -106,10 +101,11 @@ const Indicator = new Lang.Class({
|
|||||||
_sync: function() {
|
_sync: function() {
|
||||||
let airplaneMode = this._manager.airplaneMode;
|
let airplaneMode = this._manager.airplaneMode;
|
||||||
let hwAirplaneMode = this._manager.hwAirplaneMode;
|
let hwAirplaneMode = this._manager.hwAirplaneMode;
|
||||||
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
|
let changed = (airplaneMode != this._indicator.visible) ||
|
||||||
|
(hwAirplaneMode != this._offItem.actor.visible);
|
||||||
|
|
||||||
this._indicator.visible = (airplaneMode && showAirplaneMode);
|
this._indicator.visible = airplaneMode;
|
||||||
this._item.actor.visible = (airplaneMode && showAirplaneMode);
|
this._item.actor.visible = airplaneMode;
|
||||||
this._offItem.setSensitive(!hwAirplaneMode);
|
this._offItem.setSensitive(!hwAirplaneMode);
|
||||||
|
|
||||||
if (hwAirplaneMode)
|
if (hwAirplaneMode)
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ const SwitcherPopup = new Lang.Class({
|
|||||||
|
|
||||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
||||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
||||||
|
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||||
|
let vPadding = this.actor.get_theme_node().get_vertical_padding();
|
||||||
let hPadding = leftPadding + rightPadding;
|
let hPadding = leftPadding + rightPadding;
|
||||||
|
|
||||||
// Allocate the switcherList
|
// Allocate the switcherList
|
||||||
@@ -100,17 +102,16 @@ const SwitcherPopup = new Lang.Class({
|
|||||||
this._switcherList.actor.allocate(childBox, flags);
|
this._switcherList.actor.allocate(childBox, flags);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_createSwitcher: function() {
|
||||||
|
throw new Error('Not implemented');
|
||||||
|
},
|
||||||
|
|
||||||
_initialSelection: function(backward, binding) {
|
_initialSelection: function(backward, binding) {
|
||||||
if (backward)
|
throw new Error('Not implemented');
|
||||||
this._select(this._items.length - 1);
|
|
||||||
else if (this._items.length == 1)
|
|
||||||
this._select(0);
|
|
||||||
else
|
|
||||||
this._select(1);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function(backward, binding, mask) {
|
show: function(backward, binding, mask) {
|
||||||
if (this._items.length == 0)
|
if (!this._createSwitcher())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Main.pushModal(this.actor)) {
|
if (!Main.pushModal(this.actor)) {
|
||||||
@@ -138,6 +139,11 @@ const SwitcherPopup = new Lang.Class({
|
|||||||
this.actor.show();
|
this.actor.show();
|
||||||
this.actor.get_allocation_box();
|
this.actor.get_allocation_box();
|
||||||
|
|
||||||
|
if (this._items.length > 1)
|
||||||
|
this._selectedIndex = 1;
|
||||||
|
else
|
||||||
|
this._selectedIndex = 0;
|
||||||
|
|
||||||
this._initialSelection(backward, binding);
|
this._initialSelection(backward, binding);
|
||||||
|
|
||||||
// There's a race condition; if the user released Alt before
|
// There's a race condition; if the user released Alt before
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ const UnlockDialog = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!Main.pushModal(this.actor, { timestamp: timestamp,
|
if (!Main.pushModal(this.actor, { timestamp: timestamp,
|
||||||
actionMode: Shell.ActionMode.UNLOCK_SCREEN }))
|
keybindingMode: Shell.KeyBindingMode.UNLOCK_SCREEN }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._isModal = true;
|
this._isModal = true;
|
||||||
|
|||||||
@@ -28,12 +28,11 @@ const Avatar = new Lang.Class({
|
|||||||
styleClass: 'framed-user-icon' });
|
styleClass: 'framed-user-icon' });
|
||||||
this._iconSize = params.iconSize;
|
this._iconSize = params.iconSize;
|
||||||
|
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
this.actor = new St.Bin({ style_class: params.styleClass,
|
this.actor = new St.Bin({ style_class: params.styleClass,
|
||||||
track_hover: params.reactive,
|
track_hover: params.reactive,
|
||||||
reactive: params.reactive,
|
reactive: params.reactive,
|
||||||
width: this._iconSize * scaleFactor,
|
width: this._iconSize,
|
||||||
height: this._iconSize * scaleFactor });
|
height: this._iconSize });
|
||||||
},
|
},
|
||||||
|
|
||||||
setSensitive: function(sensitive) {
|
setSensitive: function(sensitive) {
|
||||||
|
|||||||
@@ -65,8 +65,7 @@ const ShowOverviewAction = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_prepare : function(action, actor) {
|
vfunc_gesture_prepare : function(action, actor) {
|
||||||
return Main.actionMode == Shell.ActionMode.NORMAL &&
|
return this.get_n_current_points() == this.get_n_touch_points();
|
||||||
this.get_n_current_points() == this.get_n_touch_points();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_getBoundingRect : function(motion) {
|
_getBoundingRect : function(motion) {
|
||||||
@@ -126,6 +125,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
this._activePage = null;
|
this._activePage = null;
|
||||||
|
|
||||||
this._searchActive = false;
|
this._searchActive = false;
|
||||||
|
this._searchTimeoutId = 0;
|
||||||
|
|
||||||
this._entry = searchEntry;
|
this._entry = searchEntry;
|
||||||
ShellEntry.addContextMenu(this._entry);
|
ShellEntry.addContextMenu(this._entry);
|
||||||
@@ -144,8 +144,12 @@ const ViewSelector = new Lang.Class({
|
|||||||
|
|
||||||
this._entry.set_primary_icon(new St.Icon({ style_class: 'search-entry-icon',
|
this._entry.set_primary_icon(new St.Icon({ style_class: 'search-entry-icon',
|
||||||
icon_name: 'edit-find-symbolic' }));
|
icon_name: 'edit-find-symbolic' }));
|
||||||
|
if (this._entry.get_text_direction() == Clutter.TextDirection.RTL)
|
||||||
this._clearIcon = new St.Icon({ style_class: 'search-entry-icon',
|
this._clearIcon = new St.Icon({ style_class: 'search-entry-icon',
|
||||||
icon_name: 'edit-clear-symbolic' });
|
icon_name: 'edit-clear-symbolic-rtl' });
|
||||||
|
else
|
||||||
|
this._clearIcon = new St.Icon({ style_class: 'search-entry-icon',
|
||||||
|
icon_name: 'edit-clear-symbolic-ltr' });
|
||||||
|
|
||||||
this._iconClickedId = 0;
|
this._iconClickedId = 0;
|
||||||
this._capturedEventId = 0;
|
this._capturedEventId = 0;
|
||||||
@@ -194,30 +198,27 @@ const ViewSelector = new Lang.Class({
|
|||||||
// the windows to animate, but now we no longer want to
|
// the windows to animate, but now we no longer want to
|
||||||
// show it given that we are now on the apps page or
|
// show it given that we are now on the apps page or
|
||||||
// search page.
|
// search page.
|
||||||
if (this._activePage != this._workspacesPage) {
|
if (this._activePage != this._workspacesPage)
|
||||||
this._workspacesPage.opacity = 0;
|
this._workspacesPage.opacity = 0;
|
||||||
this._workspacesPage.hide();
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
Main.wm.addKeybinding('toggle-application-view',
|
Main.wm.addKeybinding('toggle-application-view',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._toggleAppsPage));
|
Lang.bind(this, this._toggleAppsPage));
|
||||||
|
|
||||||
Main.wm.addKeybinding('toggle-overview',
|
Main.wm.addKeybinding('toggle-overview',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(Main.overview, Main.overview.toggle));
|
Lang.bind(Main.overview, Main.overview.toggle));
|
||||||
|
|
||||||
let gesture;
|
let gesture;
|
||||||
|
|
||||||
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT,
|
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT);
|
||||||
Shell.ActionMode.NORMAL);
|
|
||||||
gesture.connect('activated', Lang.bind(this, function() {
|
gesture.connect('activated', Lang.bind(this, function() {
|
||||||
if (Main.overview.visible)
|
if (Main.overview.visible)
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
@@ -488,23 +489,36 @@ const ViewSelector = new Lang.Class({
|
|||||||
_onTextChanged: function (se, prop) {
|
_onTextChanged: function (se, prop) {
|
||||||
let terms = getTermsForSearchString(this._entry.get_text());
|
let terms = getTermsForSearchString(this._entry.get_text());
|
||||||
|
|
||||||
|
let searchPreviouslyActive = this._searchActive;
|
||||||
this._searchActive = (terms.length > 0);
|
this._searchActive = (terms.length > 0);
|
||||||
this._searchResults.setTerms(terms);
|
|
||||||
|
let startSearch = this._searchActive && !searchPreviouslyActive;
|
||||||
|
if (startSearch)
|
||||||
|
this._searchResults.startingSearch();
|
||||||
|
|
||||||
if (this._searchActive) {
|
if (this._searchActive) {
|
||||||
this._showPage(this._searchPage);
|
|
||||||
|
|
||||||
this._entry.set_secondary_icon(this._clearIcon);
|
this._entry.set_secondary_icon(this._clearIcon);
|
||||||
|
|
||||||
if (this._iconClickedId == 0)
|
if (this._iconClickedId == 0)
|
||||||
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
||||||
Lang.bind(this, this.reset));
|
Lang.bind(this, this.reset));
|
||||||
|
|
||||||
|
if (this._searchTimeoutId == 0) {
|
||||||
|
this._searchTimeoutId = Mainloop.timeout_add(150,
|
||||||
|
Lang.bind(this, this._doSearch));
|
||||||
|
GLib.Source.set_name_by_id(this._searchTimeoutId, '[gnome-shell] this._doSearch');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this._iconClickedId > 0) {
|
if (this._iconClickedId > 0) {
|
||||||
this._entry.disconnect(this._iconClickedId);
|
this._entry.disconnect(this._iconClickedId);
|
||||||
this._iconClickedId = 0;
|
this._iconClickedId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this._searchTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._searchTimeoutId);
|
||||||
|
this._searchTimeoutId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
this._entry.set_secondary_icon(null);
|
this._entry.set_secondary_icon(null);
|
||||||
this._searchCancelled();
|
this._searchCancelled();
|
||||||
}
|
}
|
||||||
@@ -542,6 +556,12 @@ const ViewSelector = new Lang.Class({
|
|||||||
this._searchResults.navigateFocus(nextDirection);
|
this._searchResults.navigateFocus(nextDirection);
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
} else if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
} else if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||||
|
// We can't connect to 'activate' here because search providers
|
||||||
|
// might want to do something with the modifiers in activateDefault.
|
||||||
|
if (this._searchTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._searchTimeoutId);
|
||||||
|
this._doSearch();
|
||||||
|
}
|
||||||
this._searchResults.activateDefault();
|
this._searchResults.activateDefault();
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
}
|
}
|
||||||
@@ -564,6 +584,17 @@ const ViewSelector = new Lang.Class({
|
|||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_doSearch: function () {
|
||||||
|
this._searchTimeoutId = 0;
|
||||||
|
|
||||||
|
let terms = getTermsForSearchString(this._entry.get_text());
|
||||||
|
|
||||||
|
this._searchResults.setTerms(terms);
|
||||||
|
this._showPage(this._searchPage);
|
||||||
|
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
},
|
||||||
|
|
||||||
getActivePage: function() {
|
getActivePage: function() {
|
||||||
if (this._activePage == this._workspacesPage)
|
if (this._activePage == this._workspacesPage)
|
||||||
return ViewPage.WINDOWS;
|
return ViewPage.WINDOWS;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ const Main = imports.ui.main;
|
|||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const WindowMenu = imports.ui.windowMenu;
|
const WindowMenu = imports.ui.windowMenu;
|
||||||
|
const Wobbly = imports.ui.wobbly;
|
||||||
|
|
||||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||||
const MAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
const MAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
||||||
@@ -413,7 +414,7 @@ const TilePreview = new Lang.Class({
|
|||||||
y: monitor.y,
|
y: monitor.y,
|
||||||
width: monitor.width,
|
width: monitor.width,
|
||||||
height: monitor.height });
|
height: monitor.height });
|
||||||
let [, rect] = window.get_frame_rect().intersect(monitorRect);
|
let [, rect] = window.get_outer_rect().intersect(monitorRect);
|
||||||
this.actor.set_size(rect.width, rect.height);
|
this.actor.set_size(rect.width, rect.height);
|
||||||
this.actor.set_position(rect.x, rect.y);
|
this.actor.set_position(rect.x, rect.y);
|
||||||
this.actor.opacity = 0;
|
this.actor.opacity = 0;
|
||||||
@@ -478,9 +479,7 @@ const WorkspaceSwitchAction = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_prepare : function(action, actor) {
|
vfunc_gesture_prepare : function(action, actor) {
|
||||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
return this.get_n_current_points() == this.get_n_touch_points();
|
||||||
return this.get_n_current_points() == this.get_n_touch_points() &&
|
|
||||||
(allowedModes & Main.actionMode);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_end : function(action, actor) {
|
vfunc_gesture_end : function(action, actor) {
|
||||||
@@ -528,11 +527,6 @@ const AppSwitchAction = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_prepare : function(action, actor) {
|
vfunc_gesture_prepare : function(action, actor) {
|
||||||
if (Main.actionMode != Shell.ActionMode.NORMAL) {
|
|
||||||
this.cancel();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.get_n_current_points() <= 4;
|
return this.get_n_current_points() <= 4;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -580,35 +574,6 @@ const AppSwitchAction = new Lang.Class({
|
|||||||
});
|
});
|
||||||
Signals.addSignalMethods(AppSwitchAction.prototype);
|
Signals.addSignalMethods(AppSwitchAction.prototype);
|
||||||
|
|
||||||
const ResizePopup = new Lang.Class({
|
|
||||||
Name: 'ResizePopup',
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
|
||||||
this._label = new St.Label({ style_class: 'resize-popup',
|
|
||||||
x_align: Clutter.ActorAlign.CENTER,
|
|
||||||
y_align: Clutter.ActorAlign.CENTER,
|
|
||||||
x_expand: true, y_expand: true });
|
|
||||||
this._widget.add_child(this._label);
|
|
||||||
Main.uiGroup.add_actor(this._widget);
|
|
||||||
},
|
|
||||||
|
|
||||||
set: function(rect, displayW, displayH) {
|
|
||||||
/* Translators: This represents the size of a window. The first number is
|
|
||||||
* the width of the window and the second is the height. */
|
|
||||||
let text = _("%d x %d").format(displayW, displayH);
|
|
||||||
this._label.set_text(text);
|
|
||||||
|
|
||||||
this._widget.set_position(rect.x, rect.y);
|
|
||||||
this._widget.set_size(rect.width, rect.height);
|
|
||||||
},
|
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
this._widget.destroy();
|
|
||||||
this._widget = null;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const WindowManager = new Lang.Class({
|
const WindowManager = new Lang.Class({
|
||||||
Name: 'WindowManager',
|
Name: 'WindowManager',
|
||||||
|
|
||||||
@@ -647,182 +612,179 @@ const WindowManager = new Lang.Class({
|
|||||||
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
||||||
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
|
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
|
||||||
this._shellwm.connect('confirm-display-change', Lang.bind(this, this._confirmDisplayChange));
|
this._shellwm.connect('confirm-display-change', Lang.bind(this, this._confirmDisplayChange));
|
||||||
global.screen.connect('restacked', Lang.bind(this, this._syncStacking));
|
|
||||||
|
|
||||||
this._workspaceSwitcherPopup = null;
|
this._workspaceSwitcherPopup = null;
|
||||||
this._tilePreview = null;
|
this._tilePreview = null;
|
||||||
|
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-left',
|
this.setCustomKeybindingHandler('switch-to-workspace-left',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-right',
|
this.setCustomKeybindingHandler('switch-to-workspace-right',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-up',
|
this.setCustomKeybindingHandler('switch-to-workspace-up',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-down',
|
this.setCustomKeybindingHandler('switch-to-workspace-down',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-last',
|
this.setCustomKeybindingHandler('switch-to-workspace-last',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-left',
|
this.setCustomKeybindingHandler('move-to-workspace-left',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-right',
|
this.setCustomKeybindingHandler('move-to-workspace-right',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-up',
|
this.setCustomKeybindingHandler('move-to-workspace-up',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-down',
|
this.setCustomKeybindingHandler('move-to-workspace-down',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-1',
|
this.setCustomKeybindingHandler('switch-to-workspace-1',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-2',
|
this.setCustomKeybindingHandler('switch-to-workspace-2',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-3',
|
this.setCustomKeybindingHandler('switch-to-workspace-3',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-4',
|
this.setCustomKeybindingHandler('switch-to-workspace-4',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-5',
|
this.setCustomKeybindingHandler('switch-to-workspace-5',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-6',
|
this.setCustomKeybindingHandler('switch-to-workspace-6',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-7',
|
this.setCustomKeybindingHandler('switch-to-workspace-7',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-8',
|
this.setCustomKeybindingHandler('switch-to-workspace-8',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-9',
|
this.setCustomKeybindingHandler('switch-to-workspace-9',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-10',
|
this.setCustomKeybindingHandler('switch-to-workspace-10',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-11',
|
this.setCustomKeybindingHandler('switch-to-workspace-11',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-to-workspace-12',
|
this.setCustomKeybindingHandler('switch-to-workspace-12',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.KeyBindingMode.OVERVIEW,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-1',
|
this.setCustomKeybindingHandler('move-to-workspace-1',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-2',
|
this.setCustomKeybindingHandler('move-to-workspace-2',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-3',
|
this.setCustomKeybindingHandler('move-to-workspace-3',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-4',
|
this.setCustomKeybindingHandler('move-to-workspace-4',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-5',
|
this.setCustomKeybindingHandler('move-to-workspace-5',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-6',
|
this.setCustomKeybindingHandler('move-to-workspace-6',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-7',
|
this.setCustomKeybindingHandler('move-to-workspace-7',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-8',
|
this.setCustomKeybindingHandler('move-to-workspace-8',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-9',
|
this.setCustomKeybindingHandler('move-to-workspace-9',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-10',
|
this.setCustomKeybindingHandler('move-to-workspace-10',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-11',
|
this.setCustomKeybindingHandler('move-to-workspace-11',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-12',
|
this.setCustomKeybindingHandler('move-to-workspace-12',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('move-to-workspace-last',
|
this.setCustomKeybindingHandler('move-to-workspace-last',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-applications',
|
this.setCustomKeybindingHandler('switch-applications',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-group',
|
this.setCustomKeybindingHandler('switch-group',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-applications-backward',
|
this.setCustomKeybindingHandler('switch-applications-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-group-backward',
|
this.setCustomKeybindingHandler('switch-group-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startAppSwitcher));
|
Lang.bind(this, this._startAppSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-windows',
|
this.setCustomKeybindingHandler('switch-windows',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startWindowSwitcher));
|
Lang.bind(this, this._startWindowSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-windows-backward',
|
this.setCustomKeybindingHandler('switch-windows-backward',
|
||||||
Shell.ActionMode.NORMAL,
|
Shell.KeyBindingMode.NORMAL,
|
||||||
Lang.bind(this, this._startWindowSwitcher));
|
Lang.bind(this, this._startWindowSwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-panels',
|
this.setCustomKeybindingHandler('switch-panels',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW |
|
Shell.KeyBindingMode.OVERVIEW |
|
||||||
Shell.ActionMode.LOCK_SCREEN |
|
Shell.KeyBindingMode.LOCK_SCREEN |
|
||||||
Shell.ActionMode.UNLOCK_SCREEN |
|
Shell.KeyBindingMode.UNLOCK_SCREEN |
|
||||||
Shell.ActionMode.LOGIN_SCREEN,
|
Shell.KeyBindingMode.LOGIN_SCREEN,
|
||||||
Lang.bind(this, this._startA11ySwitcher));
|
Lang.bind(this, this._startA11ySwitcher));
|
||||||
this.setCustomKeybindingHandler('switch-panels-backward',
|
this.setCustomKeybindingHandler('switch-panels-backward',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW |
|
Shell.KeyBindingMode.OVERVIEW |
|
||||||
Shell.ActionMode.LOCK_SCREEN |
|
Shell.KeyBindingMode.LOCK_SCREEN |
|
||||||
Shell.ActionMode.UNLOCK_SCREEN |
|
Shell.KeyBindingMode.UNLOCK_SCREEN |
|
||||||
Shell.ActionMode.LOGIN_SCREEN,
|
Shell.KeyBindingMode.LOGIN_SCREEN,
|
||||||
Lang.bind(this, this._startA11ySwitcher));
|
Lang.bind(this, this._startA11ySwitcher));
|
||||||
|
|
||||||
this.addKeybinding('pause-resume-tweens',
|
this.addKeybinding('pause-resume-tweens',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.ALL,
|
Shell.KeyBindingMode.ALL,
|
||||||
Lang.bind(this, this._toggleTweens));
|
Lang.bind(this, this._toggleTweens));
|
||||||
|
|
||||||
this.addKeybinding('open-application-menu',
|
this.addKeybinding('open-application-menu',
|
||||||
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
|
||||||
Meta.KeyBindingFlags.NONE,
|
Meta.KeyBindingFlags.NONE,
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.ActionMode.TOPBAR_POPUP,
|
Shell.KeyBindingMode.TOPBAR_POPUP,
|
||||||
Lang.bind(this, this._toggleAppMenu));
|
Lang.bind(this, this._toggleAppMenu));
|
||||||
|
|
||||||
global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
|
|
||||||
|
|
||||||
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++)
|
||||||
this._undimWindow(this._dimmedWindows[i]);
|
this._undimWindow(this._dimmedWindows[i]);
|
||||||
@@ -850,6 +812,8 @@ const WindowManager = new Lang.Class({
|
|||||||
gesture = new AppSwitchAction();
|
gesture = new AppSwitchAction();
|
||||||
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
||||||
global.stage.add_action(gesture);
|
global.stage.add_action(gesture);
|
||||||
|
|
||||||
|
this._wobblyWindows = new Wobbly.WobblyWindowManager();
|
||||||
},
|
},
|
||||||
|
|
||||||
_lookupIndex: function (windows, metaWindow) {
|
_lookupIndex: function (windows, metaWindow) {
|
||||||
@@ -888,44 +852,6 @@ const WindowManager = new Lang.Class({
|
|||||||
Main.activateWindow(nextWindow);
|
Main.activateWindow(nextWindow);
|
||||||
},
|
},
|
||||||
|
|
||||||
insertWorkspace: function(pos) {
|
|
||||||
if (!Meta.prefs_get_dynamic_workspaces())
|
|
||||||
return;
|
|
||||||
|
|
||||||
let windows = global.get_window_actors().map(function(winActor) {
|
|
||||||
return winActor.meta_window;
|
|
||||||
});
|
|
||||||
|
|
||||||
// To create a new workspace, we slide all the windows on workspaces
|
|
||||||
// below us to the next workspace, leaving a blank workspace for us
|
|
||||||
// to recycle.
|
|
||||||
windows.forEach(function(window) {
|
|
||||||
// If the window is attached to an ancestor, we don't need/want
|
|
||||||
// to move it
|
|
||||||
if (window.get_transient_for() != null)
|
|
||||||
return;
|
|
||||||
// Same for OR windows
|
|
||||||
if (window.is_override_redirect())
|
|
||||||
return;
|
|
||||||
// Windows on workspaces below pos don't need moving
|
|
||||||
let index = window.get_workspace().index();
|
|
||||||
if (index < pos)
|
|
||||||
return;
|
|
||||||
window.change_workspace_by_index(index + 1, true);
|
|
||||||
});
|
|
||||||
|
|
||||||
// If the new workspace was inserted before the active workspace,
|
|
||||||
// activate the workspace to which its windows went
|
|
||||||
let activeIndex = global.screen.get_active_workspace_index();
|
|
||||||
if (activeIndex >= pos) {
|
|
||||||
let newWs = global.screen.get_workspace_by_index(activeIndex + 1);
|
|
||||||
this._blockAnimations = true;
|
|
||||||
newWs.activate(global.get_current_time());
|
|
||||||
this._blockAnimations = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
keepWorkspaceAlive: function(workspace, duration) {
|
keepWorkspaceAlive: function(workspace, duration) {
|
||||||
if (!this._workspaceTracker)
|
if (!this._workspaceTracker)
|
||||||
return;
|
return;
|
||||||
@@ -947,7 +873,7 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
removeKeybinding: function(name) {
|
removeKeybinding: function(name) {
|
||||||
if (global.display.remove_keybinding(name))
|
if (global.display.remove_keybinding(name))
|
||||||
this.allowKeybinding(name, Shell.ActionMode.NONE);
|
this.allowKeybinding(name, Shell.KeyBindingMode.NONE);
|
||||||
},
|
},
|
||||||
|
|
||||||
allowKeybinding: function(name, modes) {
|
allowKeybinding: function(name, modes) {
|
||||||
@@ -955,7 +881,7 @@ const WindowManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_shouldAnimate: function() {
|
_shouldAnimate: function() {
|
||||||
return !(Main.overview.visible || this._blockAnimations);
|
return !Main.overview.visible;
|
||||||
},
|
},
|
||||||
|
|
||||||
_shouldAnimateActor: function(actor, types) {
|
_shouldAnimateActor: function(actor, types) {
|
||||||
@@ -1146,8 +1072,10 @@ const WindowManager = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actor.meta_window.is_attached_dialog())
|
if (actor.meta_window.is_attached_dialog()) {
|
||||||
|
/* Scale the window from the center of the parent */
|
||||||
this._checkDimming(actor.get_meta_window().get_transient_for());
|
this._checkDimming(actor.get_meta_window().get_transient_for());
|
||||||
|
}
|
||||||
|
|
||||||
switch (actor._windowType) {
|
switch (actor._windowType) {
|
||||||
case Meta.WindowType.NORMAL:
|
case Meta.WindowType.NORMAL:
|
||||||
@@ -1302,36 +1230,18 @@ const WindowManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_filterKeybinding: function(shellwm, binding) {
|
_filterKeybinding: function(shellwm, binding) {
|
||||||
if (Main.actionMode == Shell.ActionMode.NONE)
|
if (Main.keybindingMode == Shell.KeyBindingMode.NONE)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// There's little sense in implementing a keybinding in mutter and
|
// There's little sense in implementing a keybinding in mutter and
|
||||||
// not having it work in NORMAL mode; handle this case generically
|
// not having it work in NORMAL mode; handle this case generically
|
||||||
// so we don't have to explicitly allow all builtin keybindings in
|
// so we don't have to explicitly allow all builtin keybindings in
|
||||||
// NORMAL mode.
|
// NORMAL mode.
|
||||||
if (Main.actionMode == Shell.ActionMode.NORMAL &&
|
if (Main.keybindingMode == Shell.KeyBindingMode.NORMAL &&
|
||||||
binding.is_builtin())
|
binding.is_builtin())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode);
|
return !(this._allowedKeybindings[binding.get_name()] & Main.keybindingMode);
|
||||||
},
|
|
||||||
|
|
||||||
_syncStacking: function() {
|
|
||||||
if (this._switchData == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Update stacking of windows in inGroup (aka the workspace we are
|
|
||||||
// switching to). Windows in outGroup are about to be hidden anyway,
|
|
||||||
// so we just ignore them here.
|
|
||||||
let windows = global.get_window_actors();
|
|
||||||
let sibling = null;
|
|
||||||
for (let i = 0; i < windows.length; i++) {
|
|
||||||
if (windows[i].get_parent() != this._switchData.inGroup)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
this._switchData.inGroup.set_child_above_sibling(windows[i], sibling);
|
|
||||||
sibling = windows[i];
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_switchWorkspace : function(shellwm, from, to, direction) {
|
_switchWorkspace : function(shellwm, from, to, direction) {
|
||||||
@@ -1525,11 +1435,6 @@ const WindowManager = new Lang.Class({
|
|||||||
direction = Meta.MotionDirection.DOWN;
|
direction = Meta.MotionDirection.DOWN;
|
||||||
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
|
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
|
||||||
} else if (isNaN(target)) {
|
} else if (isNaN(target)) {
|
||||||
// Prepend a new workspace dynamically
|
|
||||||
if (screen.get_active_workspace_index() == 0 &&
|
|
||||||
action == 'move' && target == 'up')
|
|
||||||
this.insertWorkspace(0);
|
|
||||||
|
|
||||||
direction = Meta.MotionDirection[target.toUpperCase()];
|
direction = Meta.MotionDirection[target.toUpperCase()];
|
||||||
newWs = screen.get_active_workspace().get_neighbor(direction);
|
newWs = screen.get_active_workspace().get_neighbor(direction);
|
||||||
} else if (target > 0) {
|
} else if (target > 0) {
|
||||||
@@ -1594,18 +1499,4 @@ const WindowManager = new Lang.Class({
|
|||||||
let dialog = new DisplayChangeDialog(this._shellwm);
|
let dialog = new DisplayChangeDialog(this._shellwm);
|
||||||
dialog.open();
|
dialog.open();
|
||||||
},
|
},
|
||||||
|
|
||||||
_showResizePopup: function(display, show, rect, displayW, displayH) {
|
|
||||||
if (show) {
|
|
||||||
if (!this._resizePopup)
|
|
||||||
this._resizePopup = new ResizePopup();
|
|
||||||
|
|
||||||
this._resizePopup.set(rect, displayW, displayH);
|
|
||||||
} else {
|
|
||||||
if (this._resizePopup) {
|
|
||||||
this._resizePopup.destroy();
|
|
||||||
this._resizePopup = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ const WindowMenu = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
if (window.is_above())
|
if (window.is_above())
|
||||||
item.setOrnament(PopupMenu.Ornament.DOT);
|
item.setOrnament(PopupMenu.Ornament.DOT);
|
||||||
if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
|
if (window.get_maximized() ||
|
||||||
type == Meta.WindowType.DOCK ||
|
type == Meta.WindowType.DOCK ||
|
||||||
type == Meta.WindowType.DESKTOP ||
|
type == Meta.WindowType.DESKTOP ||
|
||||||
type == Meta.WindowType.SPLASHSCREEN)
|
type == Meta.WindowType.SPLASHSCREEN)
|
||||||
|
|||||||
130
js/ui/wobbly.js
Normal file
130
js/ui/wobbly.js
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
|
function clampAbs(v, cap) {
|
||||||
|
if (v > cap)
|
||||||
|
v = cap;
|
||||||
|
if (v < -cap)
|
||||||
|
v = -cap;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ActorWobbler = new Lang.Class({
|
||||||
|
Name: 'ActorWobbler',
|
||||||
|
|
||||||
|
_init: function(actor) {
|
||||||
|
this._actor = actor;
|
||||||
|
this._effect = new Shell.WobblyEffect();
|
||||||
|
this._actor.add_effect(this._effect);
|
||||||
|
this._actor._wobbler = this;
|
||||||
|
|
||||||
|
this._currentBend = 0;
|
||||||
|
this._currentHeightOffset = 0;
|
||||||
|
this._running = false;
|
||||||
|
|
||||||
|
this._allocationChangedId = this._actor.connect('allocation-changed', Lang.bind(this, this._allocationChanged));
|
||||||
|
|
||||||
|
this._timeline = new Clutter.Timeline({ duration: 100, repeat_count: -1 });
|
||||||
|
this._timeline.connect('new-frame', Lang.bind(this, this._newFrame));
|
||||||
|
this._timeline.start();
|
||||||
|
},
|
||||||
|
|
||||||
|
start: function() {
|
||||||
|
this._running = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
stop: function() {
|
||||||
|
this._running = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_destroy: function() {
|
||||||
|
this._timeline.run_dispose();
|
||||||
|
this._timeline = null;
|
||||||
|
|
||||||
|
this._actor.disconnect(this._allocationChangedId);
|
||||||
|
this._actor.scale_y = 1.0;
|
||||||
|
this._actor.remove_effect(this._effect);
|
||||||
|
this._actor._wobbler = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_newFrame: function() {
|
||||||
|
this._step();
|
||||||
|
},
|
||||||
|
|
||||||
|
_step: function() {
|
||||||
|
const DAMPEN = 0.8;
|
||||||
|
this._currentBend *= DAMPEN;
|
||||||
|
if (Math.abs(this._currentBend) < 1)
|
||||||
|
this._currentBend = 0;
|
||||||
|
this._currentHeightOffset *= DAMPEN;
|
||||||
|
if (Math.abs(this._currentHeightOffset) < 1)
|
||||||
|
this._currentHeightOffset = 0;
|
||||||
|
|
||||||
|
// Cap the bend to a 100px shift.
|
||||||
|
const BEND_CAP = 50;
|
||||||
|
this._currentBend = clampAbs(this._currentBend, BEND_CAP);
|
||||||
|
this._effect.set_bend_x(this._currentBend);
|
||||||
|
|
||||||
|
// Cap the height change to 25px in either direction.
|
||||||
|
const HEIGHT_OFFSET_CAP = 25;
|
||||||
|
this._currentHeightOffset = clampAbs(this._currentHeightOffset, HEIGHT_OFFSET_CAP);
|
||||||
|
let [minHeight, natHeight] = this._actor.get_preferred_height(-1);
|
||||||
|
let scale = (natHeight + this._currentHeightOffset) / natHeight;
|
||||||
|
this._actor.scale_y = scale;
|
||||||
|
|
||||||
|
if (!this._running && this._currentBend == 0 && this._currentHeightOffset == 0)
|
||||||
|
this._destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
_allocationChanged: function(actor, box, flags) {
|
||||||
|
if (!this._running)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this._oldX) {
|
||||||
|
let deltaX = box.x1 - this._oldX;
|
||||||
|
// Every 2px the user moves the window, we bend it by 1px.
|
||||||
|
this._currentBend -= deltaX / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._oldY) {
|
||||||
|
let deltaY = box.y1 - this._oldY;
|
||||||
|
// Every 2px the user moves the window, we scale it by 1px.
|
||||||
|
this._currentHeightOffset -= deltaY / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._oldX = box.x1;
|
||||||
|
this._oldY = box.y1;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const WobblyWindowManager = new Lang.Class({
|
||||||
|
Name: 'WobblyWindowManager',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
global.display.connect('grab-op-begin', Lang.bind(this, this._grabOpBegin));
|
||||||
|
global.display.connect('grab-op-end', Lang.bind(this, this._grabOpEnd));
|
||||||
|
},
|
||||||
|
|
||||||
|
_grabOpBegin: function(display, screen, window, op) {
|
||||||
|
if (op != Meta.GrabOp.MOVING)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let actor = window.get_compositor_private();
|
||||||
|
if (!actor._wobbler)
|
||||||
|
new ActorWobbler(actor);
|
||||||
|
actor._wobbler.start();
|
||||||
|
},
|
||||||
|
|
||||||
|
_grabOpEnd: function(display, screen, window, op) {
|
||||||
|
if (!window)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let actor = window.get_compositor_private();
|
||||||
|
if (actor._wobbler)
|
||||||
|
actor._wobbler.stop();
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -254,7 +254,7 @@ const WindowClone = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_computeBoundingBox: function() {
|
_computeBoundingBox: function() {
|
||||||
let rect = this.metaWindow.get_frame_rect();
|
let rect = this.metaWindow.get_outer_rect();
|
||||||
|
|
||||||
this.actor.get_children().forEach(function (child) {
|
this.actor.get_children().forEach(function (child) {
|
||||||
let realWindow;
|
let realWindow;
|
||||||
@@ -264,7 +264,7 @@ const WindowClone = new Lang.Class({
|
|||||||
realWindow = child.source;
|
realWindow = child.source;
|
||||||
|
|
||||||
let metaWindow = realWindow.meta_window;
|
let metaWindow = realWindow.meta_window;
|
||||||
rect = rect.union(metaWindow.get_frame_rect());
|
rect = rect.union(metaWindow.get_outer_rect());
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
// Convert from a MetaRectangle to a native JS object
|
// Convert from a MetaRectangle to a native JS object
|
||||||
@@ -1209,18 +1209,14 @@ const Workspace = new Lang.Class({
|
|||||||
return this._windows.length == 0;
|
return this._windows.length == 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
setReservedSlot: function(metaWindow) {
|
setReservedSlot: function(clone) {
|
||||||
if (this._reservedSlotWindow == metaWindow)
|
if (this._reservedSlot == clone)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!metaWindow || this.containsMetaWindow(metaWindow)) {
|
if (clone && this.containsMetaWindow(clone.metaWindow))
|
||||||
this._reservedSlotWindow = null;
|
clone = null;
|
||||||
this._reservedSlot = null;
|
|
||||||
} else {
|
|
||||||
this._reservedSlotWindow = metaWindow;
|
|
||||||
this._reservedSlot = this._windows[this._lookupIndex(metaWindow)];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
this._reservedSlot = clone;
|
||||||
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
|
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1818,16 +1814,16 @@ const Workspace = new Lang.Class({
|
|||||||
Lang.bind(this, this._onCloneSelected));
|
Lang.bind(this, this._onCloneSelected));
|
||||||
clone.connect('drag-begin',
|
clone.connect('drag-begin',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.beginWindowDrag(clone.metaWindow);
|
Main.overview.beginWindowDrag(clone);
|
||||||
overlay.hide();
|
overlay.hide();
|
||||||
}));
|
}));
|
||||||
clone.connect('drag-cancelled',
|
clone.connect('drag-cancelled',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.cancelledWindowDrag(clone.metaWindow);
|
Main.overview.cancelledWindowDrag(clone);
|
||||||
}));
|
}));
|
||||||
clone.connect('drag-end',
|
clone.connect('drag-end',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.endWindowDrag(clone.metaWindow);
|
Main.overview.endWindowDrag(clone);
|
||||||
overlay.show();
|
overlay.show();
|
||||||
}));
|
}));
|
||||||
clone.connect('size-changed',
|
clone.connect('size-changed',
|
||||||
|
|||||||
@@ -161,14 +161,14 @@ const WindowClone = new Lang.Class({
|
|||||||
|
|
||||||
_updateDialogPosition: function(realDialog, cloneDialog) {
|
_updateDialogPosition: function(realDialog, cloneDialog) {
|
||||||
let metaDialog = realDialog.meta_window;
|
let metaDialog = realDialog.meta_window;
|
||||||
let dialogRect = metaDialog.get_frame_rect();
|
let dialogRect = metaDialog.get_outer_rect();
|
||||||
let rect = this.metaWindow.get_frame_rect();
|
let rect = this.metaWindow.get_outer_rect();
|
||||||
|
|
||||||
cloneDialog.set_position(dialogRect.x - rect.x, dialogRect.y - rect.y);
|
cloneDialog.set_position(dialogRect.x - rect.x, dialogRect.y - rect.y);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onPositionChanged: function() {
|
_onPositionChanged: function() {
|
||||||
let rect = this.metaWindow.get_frame_rect();
|
let rect = this.metaWindow.get_outer_rect();
|
||||||
this.actor.set_position(this.realWindow.x, this.realWindow.y);
|
this.actor.set_position(this.realWindow.x, this.realWindow.y);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -518,15 +518,15 @@ const WorkspaceThumbnail = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
clone.connect('drag-begin',
|
clone.connect('drag-begin',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.beginWindowDrag(clone.metaWindow);
|
Main.overview.beginWindowDrag(clone);
|
||||||
}));
|
}));
|
||||||
clone.connect('drag-cancelled',
|
clone.connect('drag-cancelled',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.cancelledWindowDrag(clone.metaWindow);
|
Main.overview.cancelledWindowDrag(clone);
|
||||||
}));
|
}));
|
||||||
clone.connect('drag-end',
|
clone.connect('drag-end',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.endWindowDrag(clone.metaWindow);
|
Main.overview.endWindowDrag(clone);
|
||||||
}));
|
}));
|
||||||
this._contents.add_actor(clone.actor);
|
this._contents.add_actor(clone.actor);
|
||||||
|
|
||||||
@@ -795,13 +795,35 @@ const ThumbnailsBox = new Lang.Class({
|
|||||||
|
|
||||||
let isWindow = !!source.realWindow;
|
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;
|
let newWorkspaceIndex;
|
||||||
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||||
|
|
||||||
|
// Nab all the windows below us.
|
||||||
|
let windows = global.get_window_actors().filter(function(winActor) {
|
||||||
|
// If the window is attached to an ancestor, we don't need/want to move it
|
||||||
|
let window = winActor.meta_window;
|
||||||
|
|
||||||
|
if (window.get_transient_for() != null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (isWindow)
|
||||||
|
return window.get_workspace().index() >= newWorkspaceIndex && winActor != source;
|
||||||
|
else
|
||||||
|
return window.get_workspace().index() >= newWorkspaceIndex;
|
||||||
|
});
|
||||||
|
|
||||||
this._spliceIndex = newWorkspaceIndex;
|
this._spliceIndex = newWorkspaceIndex;
|
||||||
|
|
||||||
Main.wm.insertWorkspace(newWorkspaceIndex);
|
// ... move them down one.
|
||||||
|
windows.forEach(function(winActor) {
|
||||||
|
let window = winActor.meta_window;
|
||||||
|
window.change_workspace_by_index(window.get_workspace().index() + 1, true);
|
||||||
|
});
|
||||||
|
|
||||||
if (isWindow) {
|
if (isWindow) {
|
||||||
|
// ... and bam, a workspace, good as new.
|
||||||
// Move the window to our monitor first if necessary.
|
// Move the window to our monitor first if necessary.
|
||||||
let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex;
|
let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex;
|
||||||
if (source.metaWindow.get_monitor() != thumbMonitor)
|
if (source.metaWindow.get_monitor() != thumbMonitor)
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ const Workspace = imports.ui.workspace;
|
|||||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||||
|
|
||||||
const WORKSPACE_SWITCH_TIME = 0.25;
|
const WORKSPACE_SWITCH_TIME = 0.25;
|
||||||
|
// Note that mutter has a compile-time limit of 36
|
||||||
|
const MAX_WORKSPACES = 16;
|
||||||
|
|
||||||
const AnimationType = {
|
const AnimationType = {
|
||||||
ZOOM: 0,
|
ZOOM: 0,
|
||||||
@@ -61,9 +63,9 @@ const WorkspacesViewBase = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_dragBegin: function(overview, window) {
|
_dragBegin: function(overview, clone) {
|
||||||
this._inDrag = true;
|
this._inDrag = true;
|
||||||
this._setReservedSlot(window);
|
this._setReservedSlot(clone);
|
||||||
},
|
},
|
||||||
|
|
||||||
_dragEnd: function() {
|
_dragEnd: function() {
|
||||||
@@ -125,9 +127,9 @@ const WorkspacesView = new Lang.Class({
|
|||||||
Lang.bind(this, this._activeWorkspaceChanged));
|
Lang.bind(this, this._activeWorkspaceChanged));
|
||||||
},
|
},
|
||||||
|
|
||||||
_setReservedSlot: function(window) {
|
_setReservedSlot: function(clone) {
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setReservedSlot(window);
|
this._workspaces[i].setReservedSlot(clone);
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncFullGeometry: function() {
|
_syncFullGeometry: function() {
|
||||||
@@ -364,8 +366,8 @@ const ExtraWorkspaceView = new Lang.Class({
|
|||||||
this.actor.add_actor(this._workspace.actor);
|
this.actor.add_actor(this._workspace.actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_setReservedSlot: function(window) {
|
_setReservedSlot: function(clone) {
|
||||||
this._workspace.setReservedSlot(window);
|
this._workspace.setReservedSlot(clone);
|
||||||
},
|
},
|
||||||
|
|
||||||
_syncFullGeometry: function() {
|
_syncFullGeometry: function() {
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ mk
|
|||||||
mr
|
mr
|
||||||
ms
|
ms
|
||||||
nb
|
nb
|
||||||
ne
|
|
||||||
nl
|
nl
|
||||||
nn
|
nn
|
||||||
or
|
or
|
||||||
@@ -68,7 +67,6 @@ th
|
|||||||
tr
|
tr
|
||||||
ug
|
ug
|
||||||
uk
|
uk
|
||||||
uz@cyrillic
|
|
||||||
vi
|
vi
|
||||||
zh_CN
|
zh_CN
|
||||||
zh_HK
|
zh_HK
|
||||||
|
|||||||
332
po/as.po
332
po/as.po
@@ -9,8 +9,8 @@ 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: 2014-09-15 07:36+0000\n"
|
"POT-Creation-Date: 2014-08-13 07:33+0000\n"
|
||||||
"PO-Revision-Date: 2014-09-15 14:59+0530\n"
|
"PO-Revision-Date: 2014-08-13 17:32+0530\n"
|
||||||
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
|
||||||
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: as_IN\n"
|
"Language: as_IN\n"
|
||||||
@@ -110,9 +110,8 @@ msgid ""
|
|||||||
"load all extensions regardless of the versions they claim to support."
|
"load all extensions regardless of the versions they claim to support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"GNOME শ্বেলে কেৱল বৰ্তমান চলি থকা সংস্কৰণক সমৰ্থন কৰা সম্প্ৰসাৰনসমূহ ল'ড "
|
"GNOME শ্বেলে কেৱল বৰ্তমান চলি থকা সংস্কৰণক সমৰ্থন কৰা সম্প্ৰসাৰনসমূহ ল'ড "
|
||||||
"কৰিব। এই "
|
"কৰিব। এই বিকল্প সামৰ্থবান কৰিলে এই নিৰীক্ষণ অসামৰ্থবান কৰা হব আৰু সিহতে "
|
||||||
"বিকল্প সামৰ্থবান কৰিলে এই নিৰীক্ষণ অসামৰ্থবান কৰা হব আৰু সিহতে সমৰ্থন কৰা "
|
"সমৰ্থন কৰা সংস্কৰণসমূহৰ নিৰপেক্ষে সকলো সম্প্ৰসাৰন ল'ড কৰিব।"
|
||||||
"সংস্কৰণসমূহৰ নিৰপেক্ষে সকলো সম্প্ৰসাৰন ল'ড কৰিব।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
@@ -158,8 +157,8 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ইনক্ৰিপ্টেড অথবা দূৰৱৰ্তী ফাইলচিস্টেমসমূহ মাউণ্ট কৰাৰ বাবে পাছৱৰ্ড মনত ৰখা হব "
|
"ইনক্ৰিপ্টেড অথবা দূৰৱৰ্তী ফাইলচিস্টেমসমূহ মাউন্ট কৰাৰ বাবে পাছৱৰ্ড মনত ৰখা "
|
||||||
"নে"
|
"হব নে"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -170,11 +169,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"শ্বেলে এটা পাছৱৰ্ড অনুৰোধ কৰিব যেতিয়া এটা ইনক্ৰিপ্টেড ডিভাইচ অথবা এটা "
|
"শ্বেলে এটা পাছৱৰ্ড অনুৰোধ কৰিব যেতিয়া এটা ইনক্ৰিপ্টেড ডিভাইচ অথবা এটা "
|
||||||
"দূৰৱৰ্তী "
|
"দূৰৱৰ্তী "
|
||||||
"ফাইলচিস্টেম মাউণ্ট কৰা হয়। যদি পাছৱৰ্ডক ভৱিষ্যত ব্যৱহাৰৰ বাবে সংৰক্ষণ কৰিব "
|
"ফাইলচিস্টেম মাউন্ট কৰা হয়। যদি পাছৱৰ্ডক ভৱিষ্যত ব্যৱহাৰৰ বাবে সংৰক্ষণ কৰিব "
|
||||||
"পাৰি "
|
"পাৰি "
|
||||||
"তেন্তে এটা 'পাছৱৰ্ড মনত ৰাখক' চেকবাকচ উপস্থিত থাকিব। এই কি'য়ে চেকবাকচৰ "
|
"তেন্তে এটা 'পাছৱৰ্ড মনত ৰাখক' চেকবাকচ উপস্থিত থাকিব। এই কি'য়ে চেকবাকচৰ "
|
||||||
"অবিকল্পিত "
|
"অবিকল্পিত অৱস্থা সংহতি কৰে।"
|
||||||
"অৱস্থা সংহতি কৰে।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
@@ -250,8 +248,7 @@ msgid ""
|
|||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানক উইন্ডো থকা এপ্লিকেচনসমূক চুইচাৰত দেখুৱা "
|
"যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানক উইন্ডো থকা এপ্লিকেচনসমূক চুইচাৰত দেখুৱা "
|
||||||
"হব। নহলে, "
|
"হব। নহলে, সকলো এপ্লিকেচন অন্তৰ্ভুক্ত কৰা হয়।"
|
||||||
"সকলো এপ্লিকেচন অন্তৰ্ভুক্ত কৰা হয়।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
@@ -274,8 +271,7 @@ msgid ""
|
|||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানৰ পৰা উইন্ডোসমূহক চুইচাৰত দেখুৱা হব। নহলে, "
|
"যদি সত্য, কেৱল বৰ্তমান কাৰ্য্যস্থানৰ পৰা উইন্ডোসমূহক চুইচাৰত দেখুৱা হব। নহলে, "
|
||||||
"সকলো "
|
"সকলো উইন্ডো অন্তৰ্ভুক্ত কৰা হব।"
|
||||||
"উইন্ডো অন্তৰ্ভুক্ত কৰা হব।"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
@@ -307,17 +303,18 @@ msgstr ""
|
|||||||
msgid "Captive Portal"
|
msgid "Captive Portal"
|
||||||
msgstr "কেপটিভ পৰ্টেল"
|
msgstr "কেপটিভ পৰ্টেল"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:127
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "%s ৰ বাবে পছন্দসমূহ ডাইলগ ল'ড কৰোতে এটা ত্ৰুটি হৈছিল:"
|
msgstr "%s ৰ বাবে পছন্দসমূহ ডাইলগ ল'ড কৰোতে এটা ত্ৰুটি হৈছিল:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:159
|
||||||
|
#| msgid "Configure GNOME Shell Extensions"
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ"
|
msgstr "GNOME শ্বেল সম্প্ৰসাৰনসমূহ"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:915
|
#: ../js/ui/status/network.js:915
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
@@ -380,44 +377,46 @@ msgstr "কমান্ড বিশ্লেষন কৰিব নোৱাৰ
|
|||||||
msgid "Execution of “%s” failed:"
|
msgid "Execution of “%s” failed:"
|
||||||
msgstr "“%s” ৰ প্ৰেৰণ ব্যৰ্থ হল:"
|
msgstr "“%s” ৰ প্ৰেৰণ ব্যৰ্থ হল:"
|
||||||
|
|
||||||
#: ../js/portalHelper/main.js:85
|
#: ../js/portalHelper/main.js:84
|
||||||
|
#| msgid "Authentication Required"
|
||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "ৱেব প্ৰমাণীকৰণৰ পুনৰনিৰ্দেশ"
|
msgstr "ৱেব প্ৰমাণীকৰণৰ পুনৰনিৰ্দেশ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:772
|
#: ../js/ui/appDisplay.js:659
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব"
|
msgstr "সঘনে ব্যৱহাৰ কৰা এপ্লিকেচনসমূহ ইয়াত উপস্থিত হব"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:883
|
#: ../js/ui/appDisplay.js:770
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "সঘন"
|
msgstr "সঘন"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:890
|
#: ../js/ui/appDisplay.js:777
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "সকলো"
|
msgstr "সকলো"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1789
|
#: ../js/ui/appDisplay.js:1649
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "নতুন উইন্ডো"
|
msgstr "নতুন উইন্ডো"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
|
#: ../js/ui/appDisplay.js:1672 ../js/ui/dash.js:285
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "পছন্দৰ পৰা আতৰাওক"
|
msgstr "পছন্দৰ পৰা আতৰাওক"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1821
|
#: ../js/ui/appDisplay.js:1678
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "পছন্দলে যোগ কৰক"
|
msgstr "পছন্দলে যোগ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1830
|
#: ../js/ui/appDisplay.js:1687
|
||||||
|
#| msgid "Show Text"
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "বিৱৰণসমূহ দেখুৱাওক"
|
msgstr "বিৱৰণসমূহ দেখুৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:124
|
#: ../js/ui/appFavorites.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s ক আপোনাৰ পছন্দলে যোগ কৰা হৈছে।"
|
msgstr "%s ক আপোনাৰ পছন্দলে যোগ কৰা হৈছে।"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:158
|
#: ../js/ui/appFavorites.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s ক আপোনাৰ পছন্দৰ পৰা আতৰোৱা হৈছে।"
|
msgstr "%s ক আপোনাৰ পছন্দৰ পৰা আতৰোৱা হৈছে।"
|
||||||
@@ -609,11 +608,11 @@ msgstr "%s ৰ সৈতে খোলক"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "উলিৱাওক"
|
msgstr "উলিৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
|
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "পাছৱৰ্ড:"
|
msgstr "পাছৱৰ্ড:"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:120
|
#: ../js/ui/components/keyring.js:113
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "আকৌ টাইপ কৰক:"
|
msgstr "আকৌ টাইপ কৰক:"
|
||||||
|
|
||||||
@@ -656,7 +655,8 @@ 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” অভিগম কৰিবলে পাছৱৰ্ডসমূহ অথবা ইনক্ৰিপষণ কি'সমূহৰ "
|
||||||
|
"প্ৰয়োজন।"
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:323
|
#: ../js/ui/components/networkAgent.js:323
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
@@ -736,77 +736,89 @@ msgid "Mute"
|
|||||||
msgstr "মোন কৰক"
|
msgstr "মোন কৰক"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:953
|
#: ../js/ui/components/telepathyClient.js:957
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
msgstr "%H∶%M"
|
msgstr "%H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:960
|
#: ../js/ui/components/telepathyClient.js:964
|
||||||
|
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
|
||||||
msgid "Yesterday, %H∶%M"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "যোৱাকালী, %H∶%M"
|
msgstr "যোৱাকালী, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:967
|
#: ../js/ui/components/telepathyClient.js:971
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%A, %H∶%M"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A, %H∶%M"
|
msgstr "%A, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 24h format.
|
#. followed by a time string in 24h format.
|
||||||
#. i.e. "May 25, 14:30" */
|
#. i.e. "May 25, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:974
|
#: ../js/ui/components/telepathyClient.js:978
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%B %d, %H∶%M"
|
msgid "%B %d, %H∶%M"
|
||||||
msgstr "%B %d, %H∶%M"
|
msgstr "%B %d, %H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 24h format.
|
#. number followed by a time string in 24h format.
|
||||||
#. i.e. "May 25 2012, 14:30" */
|
#. i.e. "May 25 2012, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:980
|
#: ../js/ui/components/telepathyClient.js:984
|
||||||
msgid "%B %d %Y, %H∶%M"
|
msgid "%B %d %Y, %H∶%M"
|
||||||
msgstr "%B %d %Y, %H∶%M"
|
msgstr "%B %d %Y, %H∶%M"
|
||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:986
|
#: ../js/ui/components/telepathyClient.js:990
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%l∶%M %p"
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%l∶%M %p"
|
msgstr "%l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:993
|
#: ../js/ui/components/telepathyClient.js:997
|
||||||
msgid "Yesterday, %l∶%M %p"
|
msgid "Yesterday, %l∶%M %p"
|
||||||
msgstr "যোৱাকালী, %l∶%M %p"
|
msgstr "যোৱাকালী, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1000
|
#: ../js/ui/components/telepathyClient.js:1004
|
||||||
|
#| msgid "%a %l:%M %p"
|
||||||
msgid "%A, %l∶%M %p"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A, %l∶%M %p"
|
msgstr "%A, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm" */
|
#. i.e. "May 25, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1007
|
#: ../js/ui/components/telepathyClient.js:1011
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d, %l∶%M %p"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%B %d, %l∶%M %p"
|
msgstr "%B %d, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||||
#: ../js/ui/components/telepathyClient.js:1013
|
#: ../js/ui/components/telepathyClient.js:1017
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d %Y, %l∶%M %p"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%B %d %Y, %l∶%M %p"
|
msgstr "%B %d %Y, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1045
|
#: ../js/ui/components/telepathyClient.js:1049
|
||||||
#, javascript-format
|
#, javascript-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/components/telepathyClient.js:1149
|
#: ../js/ui/components/telepathyClient.js:1153
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s লে নিমন্ত্ৰণ"
|
msgstr "%s লে নিমন্ত্ৰণ"
|
||||||
@@ -814,38 +826,38 @@ 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/components/telepathyClient.js:1157
|
#: ../js/ui/components/telepathyClient.js:1161
|
||||||
#, javascript-format
|
#, javascript-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/components/telepathyClient.js:1159
|
#: ../js/ui/components/telepathyClient.js:1163
|
||||||
#: ../js/ui/components/telepathyClient.js:1194
|
#: ../js/ui/components/telepathyClient.js:1198
|
||||||
#: ../js/ui/components/telepathyClient.js:1228
|
#: ../js/ui/components/telepathyClient.js:1232
|
||||||
#: ../js/ui/components/telepathyClient.js:1286
|
#: ../js/ui/components/telepathyClient.js:1290
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "নাকচ কৰক"
|
msgstr "নাকচ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1165
|
#: ../js/ui/components/telepathyClient.js:1169
|
||||||
#: ../js/ui/components/telepathyClient.js:1234
|
#: ../js/ui/components/telepathyClient.js:1238
|
||||||
#: ../js/ui/components/telepathyClient.js:1291
|
#: ../js/ui/components/telepathyClient.js:1295
|
||||||
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/components/telepathyClient.js:1184
|
#: ../js/ui/components/telepathyClient.js:1188
|
||||||
#, javascript-format
|
#, javascript-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/components/telepathyClient.js:1187
|
#: ../js/ui/components/telepathyClient.js:1191
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s ৰ পৰা কল"
|
msgstr "%s ৰ পৰা কল"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun */
|
#. translators: this is a button label (verb), not a noun */
|
||||||
#: ../js/ui/components/telepathyClient.js:1201
|
#: ../js/ui/components/telepathyClient.js:1205
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "উত্তৰ দিয়ক"
|
msgstr "উত্তৰ দিয়ক"
|
||||||
|
|
||||||
@@ -854,110 +866,110 @@ 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/components/telepathyClient.js:1222
|
#: ../js/ui/components/telepathyClient.js:1226
|
||||||
#, javascript-format
|
#, javascript-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/components/telepathyClient.js:1251
|
#: ../js/ui/components/telepathyClient.js:1255
|
||||||
#, javascript-format
|
#, javascript-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/components/telepathyClient.js:1337
|
#: ../js/ui/components/telepathyClient.js:1341
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "নেটৱৰ্ক ত্ৰুটি"
|
msgstr "নেটৱৰ্ক ত্ৰুটি"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1339
|
#: ../js/ui/components/telepathyClient.js:1343
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "প্ৰমাণীকৰণ ব্যৰ্থ"
|
msgstr "প্ৰমাণীকৰণ ব্যৰ্থ"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1341
|
#: ../js/ui/components/telepathyClient.js:1345
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "ইনক্ৰিপষণ ত্ৰুটি"
|
msgstr "ইনক্ৰিপষণ ত্ৰুটি"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1343
|
#: ../js/ui/components/telepathyClient.js:1347
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "প্ৰমাণপত্ৰ প্ৰদান কৰা হোৱা নাই"
|
msgstr "প্ৰমাণপত্ৰ প্ৰদান কৰা হোৱা নাই"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1345
|
#: ../js/ui/components/telepathyClient.js:1349
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "প্ৰমাণপত্ৰক ভৰষা কৰিব নোৱাৰি"
|
msgstr "প্ৰমাণপত্ৰক ভৰষা কৰিব নোৱাৰি"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1347
|
#: ../js/ui/components/telepathyClient.js:1351
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "প্ৰমাণপত্ৰৰ অৱসান ঘটিছে"
|
msgstr "প্ৰমাণপত্ৰৰ অৱসান ঘটিছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1349
|
#: ../js/ui/components/telepathyClient.js:1353
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "প্ৰমাণপত্ৰ সক্ৰিয় কৰা হোৱা নাই"
|
msgstr "প্ৰমাণপত্ৰ সক্ৰিয় কৰা হোৱা নাই"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1351
|
#: ../js/ui/components/telepathyClient.js:1355
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "প্ৰমাণপত্ৰ হস্টনাম অমিল"
|
msgstr "প্ৰমাণপত্ৰ হস্টনাম অমিল"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1353
|
#: ../js/ui/components/telepathyClient.js:1357
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "প্ৰমাণপত্ৰ ফিংগাৰপ্ৰিণ্ট অমিল"
|
msgstr "প্ৰমাণপত্ৰ ফিংগাৰপ্ৰিন্ট অমিল"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1355
|
#: ../js/ui/components/telepathyClient.js:1359
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "প্ৰমাণপত্ৰ স্ব-স্বাক্ষৰীত"
|
msgstr "প্ৰমাণপত্ৰ স্ব-স্বাক্ষৰীত"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1357
|
#: ../js/ui/components/telepathyClient.js:1361
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "অৱস্থা অফলাইনলে সংহতি কৰা হৈছে"
|
msgstr "অৱস্থা অফলাইনলে সংহতি কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1359
|
#: ../js/ui/components/telepathyClient.js:1363
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "ইনক্ৰিপষণ উপলব্ধ নহয়"
|
msgstr "ইনক্ৰিপষণ উপলব্ধ নহয়"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1361
|
#: ../js/ui/components/telepathyClient.js:1365
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "প্ৰমাণপত্ৰ অবৈধ"
|
msgstr "প্ৰমাণপত্ৰ অবৈধ"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1363
|
#: ../js/ui/components/telepathyClient.js:1367
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "সংযোগ নাকচ কৰা হৈছে"
|
msgstr "সংযোগ নাকচ কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1365
|
#: ../js/ui/components/telepathyClient.js:1369
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "সংযোগ স্থাপন কৰিব নোৱাৰি"
|
msgstr "সংযোগ স্থাপন কৰিব নোৱাৰি"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1367
|
#: ../js/ui/components/telepathyClient.js:1371
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "সংযোগ হেৰাইছে"
|
msgstr "সংযোগ হেৰাইছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1369
|
#: ../js/ui/components/telepathyClient.js:1373
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "এই একাওণ্ট ইতিমধ্যে চাৰ্ভাৰৰ সৈতে সংযোগিত"
|
msgstr "এই একাওন্ট ইতিমধ্যে চাৰ্ভাৰৰ সৈতে সংযোগিত"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1371
|
#: ../js/ui/components/telepathyClient.js:1375
|
||||||
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 "সংযোগক একে সম্পদ ব্যৱহাৰ কৰি এটা নতুন সংযোগৰে প্ৰতিস্থাপন কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1373
|
#: ../js/ui/components/telepathyClient.js:1377
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "একাওণ্ট ইতিমধ্যে চাৰ্ভাৰত উপস্থিত"
|
msgstr "একাওন্ট ইতিমধ্যে চাৰ্ভাৰত উপস্থিত"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1375
|
#: ../js/ui/components/telepathyClient.js:1379
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "চাৰ্ভাৰ সংযোগ ব্যৱস্থাপনা কৰিবলে বৰ্তমানে অতি ব্যস্ত"
|
msgstr "চাৰ্ভাৰ সংযোগ ব্যৱস্থাপনা কৰিবলে বৰ্তমানে অতি ব্যস্ত"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1377
|
#: ../js/ui/components/telepathyClient.js:1381
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "প্ৰমাণপত্ৰ প্ৰত্যাহাৰ কৰা হৈছে"
|
msgstr "প্ৰমাণপত্ৰ প্ৰত্যাহাৰ কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1379
|
#: ../js/ui/components/telepathyClient.js:1383
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"প্ৰমাণপত্ৰয় এটা অসুৰক্ষিত চিফাৰ এলগৰিথম ব্যৱহাৰ কৰে অথবা ক্ৰিপ্টোগ্ৰাফিয়ভাৱে "
|
"প্ৰমাণপত্ৰয় এটা অসুৰক্ষিত চিফাৰ এলগৰিথম ব্যৱহাৰ কৰে অথবা ক্ৰিপ্টোগ্ৰাফিয়ভাৱে "
|
||||||
"দুৰ্বল"
|
"দুৰ্বল"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1381
|
#: ../js/ui/components/telepathyClient.js:1385
|
||||||
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"
|
||||||
@@ -966,26 +978,26 @@ msgstr ""
|
|||||||
"ক্ৰিপ্টোগ্ৰাফী "
|
"ক্ৰিপ্টোগ্ৰাফী "
|
||||||
"লাইব্ৰেৰীয়ে প্ৰণয়ন কৰা সীমাসমূহত অতিক্ৰম কৰে"
|
"লাইব্ৰেৰীয়ে প্ৰণয়ন কৰা সীমাসমূহত অতিক্ৰম কৰে"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1383
|
#: ../js/ui/components/telepathyClient.js:1387
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "অভ্যন্তৰীক ত্ৰুটি"
|
msgstr "অভ্যন্তৰীক ত্ৰুটি"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example. */
|
#. * name@jabber.org for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1393
|
#: ../js/ui/components/telepathyClient.js:1397
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Unable to connect to %s"
|
msgid "Unable to connect to %s"
|
||||||
msgstr "%s ৰ সৈতে সংযোগ কৰিবলে অক্ষম"
|
msgstr "%s ৰ সৈতে সংযোগ কৰিবলে অক্ষম"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1398
|
#: ../js/ui/components/telepathyClient.js:1402
|
||||||
msgid "View account"
|
msgid "View account"
|
||||||
msgstr "একাওণ্ট দৰ্শন কৰক"
|
msgstr "একাওন্ট দৰ্শন কৰক"
|
||||||
|
|
||||||
#: ../js/ui/components/telepathyClient.js:1435
|
#: ../js/ui/components/telepathyClient.js:1439
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "অজ্ঞাত কাৰণ"
|
msgstr "অজ্ঞাত কাৰণ"
|
||||||
|
|
||||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "উইন্ডোসমূহ"
|
msgstr "উইন্ডোসমূহ"
|
||||||
|
|
||||||
@@ -1016,86 +1028,86 @@ msgstr "তাৰিখ আৰু সময সংহতিসমূহ"
|
|||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %B %e, %Y"
|
msgstr "%A %B %e, %Y"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:66
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "%s ক লগ আউট কৰক"
|
msgstr "%s ক লগ আউট কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:67
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "লগ আউট কৰক"
|
msgstr "লগ আউট কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:67
|
#: ../js/ui/endSessionDialog.js:69
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।"
|
msgstr[0] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।"
|
||||||
msgstr[1] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।"
|
msgstr[1] "%s স্বচালিতভাৱে %d ছেকেণ্ডৰ পিছত লগ আউট হৈ যাব।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:72
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।"
|
msgstr[0] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।"
|
||||||
msgstr[1] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।"
|
msgstr[1] "আপুনি স্বচালিতভাৱে %d ছেকেণ্ড পিছত লগ আউট হৈ যাব।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "লগ আউট কৰক"
|
msgstr "লগ আউট কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:86
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "বন্ধ কৰক"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:87
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Install Updates & Power Off"
|
msgid "Install Updates & Power Off"
|
||||||
msgstr "আপডেইটসমূহ ইনস্টল কৰি চিস্টেম বন্ধ কৰক"
|
msgstr "আপডেইটসমূহ ইনস্টল কৰি চিস্টেম বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "চিস্টেম %d ছেকেণ্ড পিছত স্বচালিতভাৱে বন্ধ কৰক হব। "
|
msgstr[0] "চিস্টেম %d ছেকেণ্ড পিছত স্বচালিতভাৱে বন্ধ কৰক হব। "
|
||||||
msgstr[1] "চিস্টেম %d ছেকেণ্ডৰ পিছত স্বচালিতভাৱে বন্ধ হব। "
|
msgstr[1] "চিস্টেম %d ছেকেণ্ডৰ পিছত স্বচালিতভাৱে বন্ধ হব। "
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Install pending software updates"
|
msgid "Install pending software updates"
|
||||||
msgstr "বাকি থকা চফ্টৱেৰ আপডেইটসমূহ ইনস্টল কৰক"
|
msgstr "বাকি থকা চফ্টৱেৰ আপডেইটসমূহ ইনস্টল কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
|
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "পুনৰাম্ভ কৰক"
|
msgstr "পুনৰাম্ভ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:96
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "বন্ধ কৰক"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:103
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "পুনৰাম্ভ কৰক"
|
msgstr "পুনৰাম্ভ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
|
msgstr[0] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
|
||||||
msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
|
msgstr[1] "চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:119
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart & Install Updates"
|
msgid "Restart & Install Updates"
|
||||||
msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক"
|
msgstr "পুনাৰম্ভ কৰক আৰু আপডেইটসমূহ ইনস্টল কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural ""
|
msgid_plural ""
|
||||||
@@ -1105,44 +1117,46 @@ msgstr[0] ""
|
|||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
"চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব আৰু আপডেইটসমূহ ইনস্টল কৰিব।"
|
"চিস্টেম %d ছেকেণ্ডত স্বচালিতভাৱে পুনৰাম্ভ হব আৰু আপডেইটসমূহ ইনস্টল কৰিব।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
|
#| msgctxt "button"
|
||||||
|
#| msgid "Restart & Install"
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart & Install"
|
msgid "Restart & Install"
|
||||||
msgstr "পুনৰাম্ভ কৰক & ইনস্টল কৰক"
|
msgstr "পুনৰাম্ভ কৰক & ইনস্টল কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:128
|
#: ../js/ui/endSessionDialog.js:130
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Install & Power Off"
|
msgid "Install & Power Off"
|
||||||
msgstr "ইনস্টল কৰক & চিস্টেম বন্ধ কৰক"
|
msgstr "ইনস্টল কৰক & চিস্টেম বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:131
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Power off after updates are installed"
|
msgid "Power off after updates are installed"
|
||||||
msgstr "আপডেইটসমূহ ইনস্টল কৰাৰ পিছত চিস্টেম বন্ধ কৰক"
|
msgstr "আপডেইটসমূহ ইনস্টল কৰাৰ পিছত চিস্টেম বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"বেটাৰি শক্তিত চলি আছে: অনুগ্ৰহ কৰি আপডেইটসমূহ ইনস্টল কৰাৰ আগত চাৰ্জাৰ লগাওক।"
|
"বেটাৰি শক্তিত চলি আছে: অনুগ্ৰহ কৰি আপডেইটসমূহ ইনস্টল কৰাৰ আগত চাৰ্জাৰ লগাওক।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"কিছুমান এপ্লিকেচন ব্যস্ত হব পাৰে অথবা সিহতৰ কিছুমান অসংৰক্ষিত কাৰ্য্য থাকিব "
|
"কিছুমান এপ্লিকেচন ব্যস্ত হব পাৰে অথবা সিহতৰ কিছুমান অসংৰক্ষিত কাৰ্য্য থাকিব "
|
||||||
"পাৰে।"
|
"পাৰে।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:362
|
#: ../js/ui/endSessionDialog.js:339
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "অন্য ব্যৱহাৰকাৰীসকল লগ্ড ইন আছে।"
|
msgstr "অন্য ব্যৱহাৰকাৰীসকল লগ্ড ইন আছে।"
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||||
#: ../js/ui/endSessionDialog.js:640
|
#: ../js/ui/endSessionDialog.js:619
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (দূৰৱৰ্তী)"
|
msgstr "%s (দূৰৱৰ্তী)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console */
|
#. Translators: Console here refers to a tty like a VT console */
|
||||||
#: ../js/ui/endSessionDialog.js:643
|
#: ../js/ui/endSessionDialog.js:622
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (কনচৌল)"
|
msgstr "%s (কনচৌল)"
|
||||||
@@ -1156,7 +1170,7 @@ msgstr "ইনস্টল কৰক"
|
|||||||
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:692 ../js/ui/status/keyboard.js:523
|
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "কিবৰ্ড"
|
msgstr "কিবৰ্ড"
|
||||||
|
|
||||||
@@ -1178,8 +1192,8 @@ msgstr "ত্ৰুটিসমূহ লুকুৱাওক"
|
|||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "ত্ৰুটিসমূহ দেখুৱাওক"
|
msgstr "ত্ৰুটিসমূহ দেখুৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
|
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:164
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "সামৰ্থবান কৰা আছে"
|
msgstr "সামৰ্থবান কৰা আছে"
|
||||||
|
|
||||||
@@ -1187,7 +1201,7 @@ msgstr "সামৰ্থবান কৰা আছে"
|
|||||||
#. because it's disabled by rfkill (airplane mode) */
|
#. because it's disabled by rfkill (airplane mode) */
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:167
|
||||||
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "অসামৰ্থবান কৰা আছে"
|
msgstr "অসামৰ্থবান কৰা আছে"
|
||||||
@@ -1212,39 +1226,39 @@ msgstr "উৎস দৰ্শন কৰক"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "ৱেব পৃষ্ঠা"
|
msgstr "ৱেব পৃষ্ঠা"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1326
|
#: ../js/ui/messageTray.js:1325
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "খোলক"
|
msgstr "খোলক"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1333
|
#: ../js/ui/messageTray.js:1332
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "আতৰাওক"
|
msgstr "আতৰাওক"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1630
|
#: ../js/ui/messageTray.js:1629
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "অধিসূচনাসমূহ"
|
msgstr "অধিসূচনাসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1637
|
#: ../js/ui/messageTray.js:1636
|
||||||
msgid "Clear Messages"
|
msgid "Clear Messages"
|
||||||
msgstr "বাৰ্তাসমূহ পৰিষ্কাৰ কৰক"
|
msgstr "বাৰ্তাসমূহ পৰিষ্কাৰ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1656
|
#: ../js/ui/messageTray.js:1655
|
||||||
msgid "Notification Settings"
|
msgid "Notification Settings"
|
||||||
msgstr "অধিসূচনা সংহতিসমূহ"
|
msgstr "অধিসূচনা সংহতিসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1709
|
#: ../js/ui/messageTray.js:1708
|
||||||
msgid "Tray Menu"
|
msgid "Tray Menu"
|
||||||
msgstr "ট্ৰে মেনু"
|
msgstr "ট্ৰে মেনু"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1926
|
#: ../js/ui/messageTray.js:1925
|
||||||
msgid "No Messages"
|
msgid "No Messages"
|
||||||
msgstr "কোনো বাৰ্তা নাই"
|
msgstr "কোনো বাৰ্তা নাই"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1968
|
#: ../js/ui/messageTray.js:1963
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "বাৰ্তা ট্ৰে"
|
msgstr "বাৰ্তা ট্ৰে"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2971
|
#: ../js/ui/messageTray.js:2966
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "চিস্টেম তথ্য"
|
msgstr "চিস্টেম তথ্য"
|
||||||
|
|
||||||
@@ -1272,7 +1286,7 @@ 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/overview.js:246
|
#: ../js/ui/overview.js:250
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "সন্ধান কৰিবলে টাইপ কৰক…"
|
msgstr "সন্ধান কৰিবলে টাইপ কৰক…"
|
||||||
|
|
||||||
@@ -1290,7 +1304,7 @@ msgstr "কাৰ্য্যসমূহ"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "উপৰৰ বাৰ"
|
msgstr "উপৰৰ বাৰ"
|
||||||
|
|
||||||
#: ../js/ui/popupMenu.js:269
|
#: ../js/ui/popupMenu.js:280
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
@@ -1302,7 +1316,8 @@ msgstr "এটা কমান্ড সুমুৱাওক"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "বন্ধ কৰক"
|
msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:277
|
#: ../js/ui/runDialog.js:273
|
||||||
|
#| msgid "Estimating…"
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "পুনাৰম্ভ কৰা হৈছে…"
|
msgstr "পুনাৰম্ভ কৰা হৈছে…"
|
||||||
|
|
||||||
@@ -1319,43 +1334,43 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d নতুন অধিসূচনা"
|
msgstr[0] "%d নতুন অধিসূচনা"
|
||||||
msgstr[1] "%d নতুন অধিসূচনাসমূহ"
|
msgstr[1] "%d নতুন অধিসূচনাসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
|
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "লক কৰক"
|
msgstr "লক কৰক"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:706
|
#: ../js/ui/screenShield.js:708
|
||||||
msgid "GNOME needs to lock the screen"
|
msgid "GNOME needs to lock the screen"
|
||||||
msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
|
msgstr "GNOME এ পৰ্দা লক কৰিব লাগিব"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
|
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1306
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "লক কৰিবলে অক্ষম"
|
msgstr "লক কৰিবলে অক্ষম"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
|
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1307
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল"
|
msgstr "লক কাৰ্য্য এটা এপ্লিকেচন দ্বাৰা প্ৰতিৰোধ কৰা হৈছিল"
|
||||||
|
|
||||||
#: ../js/ui/search.js:594
|
#: ../js/ui/search.js:614
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "সন্ধান কৰা হৈছে…"
|
msgstr "সন্ধান কৰা হৈছে…"
|
||||||
|
|
||||||
#: ../js/ui/search.js:596
|
#: ../js/ui/search.js:660
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "কোনো ফলাফল নাই।"
|
msgstr "কোনো ফলাফল নাই।"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:25
|
#: ../js/ui/shellEntry.js:27
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "কপি কৰক"
|
msgstr "কপি কৰক"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:30
|
#: ../js/ui/shellEntry.js:32
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "পেইস্ট কৰক"
|
msgstr "পেইস্ট কৰক"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:97
|
#: ../js/ui/shellEntry.js:99
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "লিখনি দেখুৱাওক"
|
msgstr "লিখনি দেখুৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:99
|
#: ../js/ui/shellEntry.js:101
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "লিখনি লুকুৱাওক"
|
msgstr "লিখনি লুকুৱাওক"
|
||||||
|
|
||||||
@@ -1441,28 +1456,26 @@ msgstr "সংযুক্ত নহয়"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "উজ্জ্বলতা"
|
msgstr "উজ্জ্বলতা"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:547
|
#: ../js/ui/status/keyboard.js:407
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
|
msgstr "কিবৰ্ড বিন্যাস দেখুৱাওক"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:65
|
#: ../js/ui/status/location.js:56
|
||||||
|
#| msgid "Notifications"
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "অবস্থান"
|
msgstr "অবস্থান"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:165
|
||||||
|
#| msgid "Disabled"
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "অসামৰ্থবান কৰক"
|
msgstr "অসামৰ্থবান কৰক"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:164
|
||||||
#| msgid "Power Settings"
|
|
||||||
msgid "Privacy Settings"
|
|
||||||
msgstr "গোপনীয়তা সংহতিসমূহ"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
|
||||||
msgid "In Use"
|
msgid "In Use"
|
||||||
msgstr "ব্যৱহৃত"
|
msgstr "ব্যৱহৃত"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:168
|
||||||
|
#| msgid "Enabled"
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "সামৰ্থবান কৰক"
|
msgstr "সামৰ্থবান কৰক"
|
||||||
|
|
||||||
@@ -1476,31 +1489,37 @@ msgid "Off"
|
|||||||
msgstr "অফ"
|
msgstr "অফ"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:459
|
#: ../js/ui/status/network.js:459
|
||||||
|
#| msgid "Connect"
|
||||||
msgid "Connected"
|
msgid "Connected"
|
||||||
msgstr "সংযুক্ত"
|
msgstr "সংযুক্ত"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||||
#: ../js/ui/status/network.js:463
|
#: ../js/ui/status/network.js:463
|
||||||
|
#| msgid "unmanaged"
|
||||||
msgid "Unmanaged"
|
msgid "Unmanaged"
|
||||||
msgstr "অব্যৱস্থাপিত"
|
msgstr "অব্যৱস্থাপিত"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:465
|
#: ../js/ui/status/network.js:465
|
||||||
|
#| msgid "disconnecting..."
|
||||||
msgid "Disconnecting"
|
msgid "Disconnecting"
|
||||||
msgstr "বিচ্ছিনিত কৰা হৈছে"
|
msgstr "বিচ্ছিনিত কৰা হৈছে"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
||||||
|
#| msgid "Connection"
|
||||||
msgid "Connecting"
|
msgid "Connecting"
|
||||||
msgstr "সংযোগ কৰা হৈছে"
|
msgstr "সংযোগ কৰা হৈছে"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password */
|
#. Translators: this is for network connections that require some kind of key or password */
|
||||||
#: ../js/ui/status/network.js:474
|
#: ../js/ui/status/network.js:474
|
||||||
|
#| msgid "authentication required"
|
||||||
msgid "Authentication required"
|
msgid "Authentication required"
|
||||||
msgstr "প্ৰমাণীকৰণৰ প্ৰয়োজন"
|
msgstr "প্ৰমাণীকৰণৰ প্ৰয়োজন"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing */
|
#. module, which is missing */
|
||||||
#: ../js/ui/status/network.js:482
|
#: ../js/ui/status/network.js:482
|
||||||
|
#| msgid "firmware missing"
|
||||||
msgid "Firmware missing"
|
msgid "Firmware missing"
|
||||||
msgstr "ফাৰ্মৱেৰ সন্ধানহীন"
|
msgstr "ফাৰ্মৱেৰ সন্ধানহীন"
|
||||||
|
|
||||||
@@ -1604,6 +1623,7 @@ msgid "Network Settings"
|
|||||||
msgstr "নেটৱৰ্ক সংহতিসমূহ"
|
msgstr "নেটৱৰ্ক সংহতিসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1482
|
#: ../js/ui/status/network.js:1482
|
||||||
|
#| msgid "Settings"
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "VPN সংহতিসমূহ"
|
msgstr "VPN সংহতিসমূহ"
|
||||||
|
|
||||||
@@ -1697,11 +1717,11 @@ msgstr "অন্য ব্যৱহাৰকাৰী হিচাপে লগ
|
|||||||
msgid "Unlock Window"
|
msgid "Unlock Window"
|
||||||
msgstr "উইন্ডো আনলক কৰক"
|
msgstr "উইন্ডো আনলক কৰক"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:158
|
#: ../js/ui/viewSelector.js:232
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "এপ্লিকেচনসমূহ"
|
msgstr "এপ্লিকেচনসমূহ"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:162
|
#: ../js/ui/viewSelector.js:236
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "সন্ধান কৰক"
|
msgstr "সন্ধান কৰক"
|
||||||
|
|
||||||
@@ -1798,19 +1818,19 @@ msgstr[1] "%u ইনপুটসমূহ"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "চিস্টেম শব্দসমূহ"
|
msgstr "চিস্টেম শব্দসমূহ"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "প্ৰিণ্ট সংস্কৰণ"
|
msgstr "প্ৰিন্ট সংস্কৰণ"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "লগিন স্ক্ৰিনৰ বাবে GDM দ্বাৰা ব্যৱহাৰ কৰা অৱস্থা"
|
msgstr "লগিন স্ক্ৰিনৰ বাবে GDM দ্বাৰা ব্যৱহাৰ কৰা অৱস্থা"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:383
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "লগিন পৰ্দাৰ বাবে এটা বিশেষ অৱস্থা, উদাহৰণস্বৰূপ \"gdm\" ব্যৱহাৰ কৰক"
|
msgstr "লগিন পৰ্দাৰ বাবে এটা বিশেষ অৱস্থা, উদাহৰণস্বৰূপ \"gdm\" ব্যৱহাৰ কৰক"
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "সম্ভাব্য অৱস্থাসমূহ তালিকাভুক্ত কৰক"
|
msgstr "সম্ভাব্য অৱস্থাসমূহ তালিকাভুক্ত কৰক"
|
||||||
|
|
||||||
@@ -2014,7 +2034,7 @@ msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰক
|
|||||||
#~ "সংহিত, অবিকল্পিত পাইপলাইন ব্যৱহাৰ কৰা হব। এইটো বৰ্তমানত 'vp8enc "
|
#~ "সংহিত, অবিকল্পিত পাইপলাইন ব্যৱহাৰ কৰা হব। এইটো বৰ্তমানত 'vp8enc "
|
||||||
#~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads="
|
#~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads="
|
||||||
#~ "%T ! queue ! webmmux' আৰু VP8 কডেক ব্যৱহাৰ কৰি WEBM ত ৰেকৰ্ড কৰে। %T ক "
|
#~ "%T ! queue ! webmmux' আৰু VP8 কডেক ব্যৱহাৰ কৰি WEBM ত ৰেকৰ্ড কৰে। %T ক "
|
||||||
#~ "চিস্টেমত অনুকূলিত থ্ৰেড কাওণ্টত এটা অনুমানৰ প্লেইচহল্ডাৰ হিচাপে ব্যৱহাৰ কৰা হয়।"
|
#~ "চিস্টেমত অনুকূলিত থ্ৰেড কাওন্টত এটা অনুমানৰ প্লেইচহল্ডাৰ হিচাপে ব্যৱহাৰ কৰা হয়।"
|
||||||
|
|
||||||
#~ msgid "File extension used for storing the screencast"
|
#~ msgid "File extension used for storing the screencast"
|
||||||
#~ msgstr "screencast সংৰক্ষণ কৰাৰ কাৰণে লথিপত্ৰ সম্প্ৰসাৰন"
|
#~ msgstr "screencast সংৰক্ষণ কৰাৰ কাৰণে লথিপত্ৰ সম্প্ৰসাৰন"
|
||||||
@@ -2297,7 +2317,7 @@ msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰক
|
|||||||
#~ msgstr "চিস্টেম সংহতিসমূহ"
|
#~ msgstr "চিস্টেম সংহতিসমূহ"
|
||||||
|
|
||||||
#~ msgid "Failed to unmount '%s'"
|
#~ msgid "Failed to unmount '%s'"
|
||||||
#~ msgstr "'%s' আনমাউণ্ট কৰিবলে ব্যৰ্থ"
|
#~ msgstr "'%s' আনমাউন্ট কৰিবলে ব্যৰ্থ"
|
||||||
|
|
||||||
#~ msgid "Retry"
|
#~ msgid "Retry"
|
||||||
#~ msgstr "পুনৰ চেষ্টা কৰক"
|
#~ msgstr "পুনৰ চেষ্টা কৰক"
|
||||||
@@ -2375,7 +2395,7 @@ msgstr "প্ৰমাণীকৰণ ডাইলগ ব্যৱহাৰক
|
|||||||
#~ msgstr "বন্ধ কৰক"
|
#~ msgstr "বন্ধ কৰক"
|
||||||
|
|
||||||
#~ msgid "Online Accounts"
|
#~ msgid "Online Accounts"
|
||||||
#~ msgstr "অনলাইন একাওণ্টসমূহ"
|
#~ msgstr "অনলাইন একাওন্টসমূহ"
|
||||||
|
|
||||||
#~ msgid "Lock Screen"
|
#~ msgid "Lock Screen"
|
||||||
#~ msgstr "পৰ্দা লক কৰক"
|
#~ msgstr "পৰ্দা লক কৰক"
|
||||||
|
|||||||
2542
po/bn_IN.po
2542
po/bn_IN.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
207
po/fa.po
207
po/fa.po
@@ -9,8 +9,8 @@ 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: 2014-10-06 19:42+0000\n"
|
"POT-Creation-Date: 2014-08-28 07:38+0000\n"
|
||||||
"PO-Revision-Date: 2014-10-10 10:51+0330\n"
|
"PO-Revision-Date: 2014-08-28 20:57+0430\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"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
@@ -19,7 +19,7 @@ msgstr ""
|
|||||||
"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-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
"X-Generator: Poedit 1.6.9\n"
|
"X-Generator: Gtranslator 2.91.6\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -81,10 +81,16 @@ msgstr ""
|
|||||||
"F2."
|
"F2."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
|
#| msgid "Uuids of extensions to enable"
|
||||||
msgid "UUIDs of extensions to enable"
|
msgid "UUIDs of extensions to enable"
|
||||||
msgstr "شناسههای UUID افزونهها جهت فعالسازی"
|
msgstr "شناسههای UUID افزونهها جهت فعالسازی"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
|
#| msgid ""
|
||||||
|
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||||
|
#| "which should be loaded. Any extension that wants to be loaded needs to be "
|
||||||
|
#| "in this list. You can also manipulate this list with the EnableExtension "
|
||||||
|
#| "and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
"GNOME Shell extensions have a UUID property; this key lists extensions which "
|
||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||||
@@ -137,10 +143,14 @@ msgid "History for the looking glass dialog"
|
|||||||
msgstr "تاریخچه برای نما محاوره شیشهای"
|
msgstr "تاریخچه برای نما محاوره شیشهای"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
|
#| msgid "Always show the 'Log out' menuitem in the user menu."
|
||||||
msgid "Always show the 'Log out' menu item in the user menu."
|
msgid "Always show the 'Log out' menu item in the user menu."
|
||||||
msgstr "همیشه «خروج از سیستم» را در منو کاربر نمایش بده."
|
msgstr "همیشه «خروج از سیستم» را در منو کاربر نمایش بده."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
|
#| msgid ""
|
||||||
|
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
|
||||||
|
#| "single-user, single-session situations."
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||||
"user, single-session situations."
|
"user, single-session situations."
|
||||||
@@ -297,17 +307,18 @@ msgstr ""
|
|||||||
msgid "Captive Portal"
|
msgid "Captive Portal"
|
||||||
msgstr "پرتال درگیر"
|
msgstr "پرتال درگیر"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:127
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "خطایی هنگام باز کردن محاورهی ترجیحات برای %s رُخ داد:"
|
msgstr "خطایی هنگام باز کردن محاورهی ترجیحات برای %s رُخ داد:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:159
|
||||||
|
#| msgid "Configure GNOME Shell Extensions"
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "افزونههای گنومشل"
|
msgstr "افزونههای گنومشل"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:915
|
#: ../js/ui/status/network.js:915
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
@@ -367,47 +378,50 @@ msgstr "عدم توانایی در تجزیه فرمان:"
|
|||||||
|
|
||||||
#: ../js/misc/util.js:156
|
#: ../js/misc/util.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "Execution of '%s' failed:"
|
||||||
msgid "Execution of “%s” failed:"
|
msgid "Execution of “%s” failed:"
|
||||||
msgstr "اجرای «%s» شکست خورد:"
|
msgstr "اجرای «%s» شکست خورد:"
|
||||||
|
|
||||||
#: ../js/portalHelper/main.js:85
|
#: ../js/portalHelper/main.js:85
|
||||||
|
#| msgid "Authentication Required"
|
||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "تغییر مسیر برای تایید هویت وب"
|
msgstr "تغییر مسیر برای تایید هویت وب"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:772
|
#: ../js/ui/appDisplay.js:660
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "برنامههای بیشتر استفاده شده در اینجا نمایش داده میشود"
|
msgstr "برنامههای بیشتر استفاده شده در اینجا نمایش داده میشود"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:883
|
#: ../js/ui/appDisplay.js:771
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "پُراستفاده"
|
msgstr "پُراستفاده"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:890
|
#: ../js/ui/appDisplay.js:778
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "همه"
|
msgstr "همه"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1790
|
#: ../js/ui/appDisplay.js:1650
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "پنجرهی جدید"
|
msgstr "پنجرهی جدید"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
|
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "حذف از مورد پسندها"
|
msgstr "حذف از مورد پسندها"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1822
|
#: ../js/ui/appDisplay.js:1679
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "اضافه کردن به مورد پسندها"
|
msgstr "اضافه کردن به مورد پسندها"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1831
|
#: ../js/ui/appDisplay.js:1688
|
||||||
|
#| msgid "Show Text"
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "نمایش جزئیات"
|
msgstr "نمایش جزئیات"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:132
|
#: ../js/ui/appFavorites.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "مورد %s به مورد پسندهای شما اضافه شد."
|
msgstr "مورد %s به مورد پسندهای شما اضافه شد."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:166
|
#: ../js/ui/appFavorites.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "مورد %s ازمورد پسندهای شما حذف شد."
|
msgstr "مورد %s ازمورد پسندهای شما حذف شد."
|
||||||
@@ -599,11 +613,11 @@ msgstr "باز کردن با %s"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "بیرون دادن"
|
msgstr "بیرون دادن"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
|
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "گذرواژه"
|
msgstr "گذرواژه"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:120
|
#: ../js/ui/components/keyring.js:113
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "تلاش مجدد:"
|
msgstr "تلاش مجدد:"
|
||||||
|
|
||||||
@@ -642,6 +656,9 @@ msgstr "تایید هویت برای شبکه بیسیم لازم است"
|
|||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:319
|
#: ../js/ui/components/networkAgent.js:319
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "Passwords or encryption keys are required to access the wireless network "
|
||||||
|
#| "'%s'."
|
||||||
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”."
|
||||||
@@ -677,6 +694,7 @@ msgstr "گذرواژه شبکه پهنباند تلفن همراه"
|
|||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:346
|
#: ../js/ui/components/networkAgent.js:346
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "A password is required to connect to '%s'."
|
||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "برای اتصال به «%s» گذرواژه لازم است."
|
msgstr "برای اتصال به «%s» گذرواژه لازم است."
|
||||||
|
|
||||||
@@ -726,18 +744,23 @@ msgstr "بیصدا"
|
|||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:953
|
#: ../js/ui/components/telepathyClient.js:953
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
msgstr "%OH∶%OM"
|
msgstr "%OH∶%OM"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:960
|
#: ../js/ui/components/telepathyClient.js:960
|
||||||
|
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
|
||||||
msgid "Yesterday, %H∶%M"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "<b>دیروز</b>، <b>%OH:%OM"
|
msgstr "<b>دیروز</b>، <b>%OH:%OM"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:967
|
#: ../js/ui/components/telepathyClient.js:967
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%A, %H∶%M"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A، %OH∶%OM"
|
msgstr "%A، %OH∶%OM"
|
||||||
|
|
||||||
@@ -745,6 +768,8 @@ msgstr "%A، %OH∶%OM"
|
|||||||
#. followed by a time string in 24h format.
|
#. followed by a time string in 24h format.
|
||||||
#. i.e. "May 25, 14:30" */
|
#. i.e. "May 25, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:974
|
#: ../js/ui/components/telepathyClient.js:974
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%H∶%M"
|
||||||
msgid "%B %d, %H∶%M"
|
msgid "%B %d, %H∶%M"
|
||||||
msgstr "%d %B، %OH∶%OM"
|
msgstr "%d %B، %OH∶%OM"
|
||||||
|
|
||||||
@@ -757,6 +782,8 @@ msgstr "%Od %OB %OY، %OH:%OM"
|
|||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:986
|
#: ../js/ui/components/telepathyClient.js:986
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%l∶%M %p"
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%Ol∶%OM %p"
|
msgstr "%Ol∶%OM %p"
|
||||||
|
|
||||||
@@ -769,6 +796,7 @@ msgstr "دیروز، %OI:%OM"
|
|||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1000
|
#: ../js/ui/components/telepathyClient.js:1000
|
||||||
|
#| msgid "%a %l:%M %p"
|
||||||
msgid "%A, %l∶%M %p"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A، %OH:%OM"
|
msgstr "%A، %OH:%OM"
|
||||||
|
|
||||||
@@ -776,6 +804,7 @@ msgstr "%A، %OH:%OM"
|
|||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm" */
|
#. i.e. "May 25, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1007
|
#: ../js/ui/components/telepathyClient.js:1007
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d, %l∶%M %p"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%Od %B، %OH:%OM"
|
msgstr "%Od %B، %OH:%OM"
|
||||||
|
|
||||||
@@ -783,6 +812,7 @@ msgstr "%Od %B، %OH:%OM"
|
|||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||||
#: ../js/ui/components/telepathyClient.js:1013
|
#: ../js/ui/components/telepathyClient.js:1013
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d %Y, %l∶%M %p"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%Od %B، %OH:%OM"
|
msgstr "%Od %B، %OH:%OM"
|
||||||
|
|
||||||
@@ -974,7 +1004,7 @@ msgstr "نمایش حساب"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "دلیل ناشناخته"
|
msgstr "دلیل ناشناخته"
|
||||||
|
|
||||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "پنجرهها"
|
msgstr "پنجرهها"
|
||||||
|
|
||||||
@@ -986,105 +1016,105 @@ msgstr "نمایش برنامهها"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "دَش"
|
msgstr "دَش"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:97
|
#: ../js/ui/dateMenu.js:96
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "بازکردن تقویم"
|
msgstr "بازکردن تقویم"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:101
|
#: ../js/ui/dateMenu.js:100
|
||||||
msgid "Open Clocks"
|
msgid "Open Clocks"
|
||||||
msgstr "باز کردن ساعتها"
|
msgstr "باز کردن ساعتها"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:108
|
#: ../js/ui/dateMenu.js:107
|
||||||
msgid "Date & Time Settings"
|
msgid "Date & Time Settings"
|
||||||
msgstr "تنظیمات تاریخ و ساعت"
|
msgstr "تنظیمات تاریخ و ساعت"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/dateMenu.js:132
|
#: ../js/ui/dateMenu.js:204
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %Od %B"
|
msgstr "%A %Od %B"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:66
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "خروج از %s"
|
msgstr "خروج از %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:67
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "خروج از سیستم"
|
msgstr "خروج از سیستم"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:67
|
#: ../js/ui/endSessionDialog.js:69
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||||
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:72
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج میشوید."
|
msgstr[0] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج میشوید."
|
||||||
msgstr[1] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج میشوید."
|
msgstr[1] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج میشوید."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "خروج از سیستم"
|
msgstr "خروج از سیستم"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:86
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "خاموش کردن"
|
msgstr "خاموش کردن"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:87
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Install Updates & Power Off"
|
msgid "Install Updates & Power Off"
|
||||||
msgstr "نصب بروزرسانیها و خاموش کردن"
|
msgstr "نصب بروزرسانیها و خاموش کردن"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار خاموش میشود."
|
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار خاموش میشود."
|
||||||
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار خاموش میشود."
|
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار خاموش میشود."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Install pending software updates"
|
msgid "Install pending software updates"
|
||||||
msgstr "نصب بروزرسانیهایِ در انتظار"
|
msgstr "نصب بروزرسانیهایِ در انتظار"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
|
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "راهاندازی مجدد"
|
msgstr "راهاندازی مجدد"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:96
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "خاموش کردن"
|
msgstr "خاموش کردن"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:103
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "راهاندازی مجدد"
|
msgstr "راهاندازی مجدد"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود."
|
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود."
|
||||||
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود."
|
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:119
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart & Install Updates"
|
msgid "Restart & Install Updates"
|
||||||
msgstr "راهاندازی مجدد و نصب بروزرسانیها"
|
msgstr "راهاندازی مجدد و نصب بروزرسانیها"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural ""
|
msgid_plural ""
|
||||||
@@ -1096,42 +1126,44 @@ msgstr[1] ""
|
|||||||
"سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود و بروزرسانیهای را "
|
"سیستم پس از %Id ثانیه به طور خودکار مجددا راهاندازی میشود و بروزرسانیهای را "
|
||||||
"نصب میکند."
|
"نصب میکند."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
|
#| msgctxt "button"
|
||||||
|
#| msgid "Restart & Install"
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart & Install"
|
msgid "Restart & Install"
|
||||||
msgstr "راهاندازی مجدد و نصب"
|
msgstr "راهاندازی مجدد و نصب"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:128
|
#: ../js/ui/endSessionDialog.js:130
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Install & Power Off"
|
msgid "Install & Power Off"
|
||||||
msgstr "نصب و خاموش کردن"
|
msgstr "نصب و خاموش کردن"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:131
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Power off after updates are installed"
|
msgid "Power off after updates are installed"
|
||||||
msgstr "خاموش کردن بعد از نصب بروزرسانیها"
|
msgstr "خاموش کردن بعد از نصب بروزرسانیها"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"درحال اجرا بر روی انرژی باتری: لطفا قبل از نصب بروزرسانیها، به برق وصل کنید."
|
"درحال اجرا بر روی انرژی باتری: لطفا قبل از نصب بروزرسانیها، به برق وصل کنید."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr "تعدادی از برنامهها مشغول هستند یا کارهای ذخیره نشده دارند."
|
msgstr "تعدادی از برنامهها مشغول هستند یا کارهای ذخیره نشده دارند."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:362
|
#: ../js/ui/endSessionDialog.js:339
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "کاربران دیگر وارد سیستم هستند."
|
msgstr "کاربران دیگر وارد سیستم هستند."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||||
#: ../js/ui/endSessionDialog.js:640
|
#: ../js/ui/endSessionDialog.js:619
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (دوردست)"
|
msgstr "%s (دوردست)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console */
|
#. Translators: Console here refers to a tty like a VT console */
|
||||||
#: ../js/ui/endSessionDialog.js:643
|
#: ../js/ui/endSessionDialog.js:622
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (پایانه)"
|
msgstr "%s (پایانه)"
|
||||||
@@ -1142,10 +1174,11 @@ msgstr "نصب"
|
|||||||
|
|
||||||
#: ../js/ui/extensionDownloader.js:204
|
#: ../js/ui/extensionDownloader.js:204
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
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:700 ../js/ui/status/keyboard.js:523
|
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "صفحهکلید"
|
msgstr "صفحهکلید"
|
||||||
|
|
||||||
@@ -1167,8 +1200,8 @@ msgstr "مخفی کردن خطاها"
|
|||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "نمایش خطاها"
|
msgstr "نمایش خطاها"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
|
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "به کار انداختن"
|
msgstr "به کار انداختن"
|
||||||
|
|
||||||
@@ -1176,7 +1209,7 @@ msgstr "به کار انداختن"
|
|||||||
#. because it's disabled by rfkill (airplane mode) */
|
#. because it's disabled by rfkill (airplane mode) */
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
|
||||||
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "از کار انداختن"
|
msgstr "از کار انداختن"
|
||||||
@@ -1201,39 +1234,39 @@ msgstr "نمایش منبع"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "صفحهی وب"
|
msgstr "صفحهی وب"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1327
|
#: ../js/ui/messageTray.js:1325
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "بازکردن"
|
msgstr "بازکردن"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1334
|
#: ../js/ui/messageTray.js:1332
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "حذف"
|
msgstr "حذف"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1631
|
#: ../js/ui/messageTray.js:1629
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "اعلانها"
|
msgstr "اعلانها"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1638
|
#: ../js/ui/messageTray.js:1636
|
||||||
msgid "Clear Messages"
|
msgid "Clear Messages"
|
||||||
msgstr "پاک کردن پیامها"
|
msgstr "پاک کردن پیامها"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1657
|
#: ../js/ui/messageTray.js:1655
|
||||||
msgid "Notification Settings"
|
msgid "Notification Settings"
|
||||||
msgstr "تنظیمات اعلانها"
|
msgstr "تنظیمات اعلانها"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1710
|
#: ../js/ui/messageTray.js:1708
|
||||||
msgid "Tray Menu"
|
msgid "Tray Menu"
|
||||||
msgstr "منو سینی"
|
msgstr "منو سینی"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1934
|
#: ../js/ui/messageTray.js:1925
|
||||||
msgid "No Messages"
|
msgid "No Messages"
|
||||||
msgstr "پیامی وجود ندارد"
|
msgstr "پیامی وجود ندارد"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1979
|
#: ../js/ui/messageTray.js:1963
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "سینی پیام"
|
msgstr "سینی پیام"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2992
|
#: ../js/ui/messageTray.js:2966
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "اطلاعات سیستم"
|
msgstr "اطلاعات سیستم"
|
||||||
|
|
||||||
@@ -1261,7 +1294,7 @@ 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/overview.js:246
|
#: ../js/ui/overview.js:250
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "برای جستجو تایپ کنید..."
|
msgstr "برای جستجو تایپ کنید..."
|
||||||
|
|
||||||
@@ -1292,6 +1325,7 @@ msgid "Close"
|
|||||||
msgstr "بستن"
|
msgstr "بستن"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:277
|
#: ../js/ui/runDialog.js:277
|
||||||
|
#| msgid "Estimating…"
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "درحال راهاندازی مجدد..."
|
msgstr "درحال راهاندازی مجدد..."
|
||||||
|
|
||||||
@@ -1324,27 +1358,27 @@ msgstr "نمیتوان قفل کرد"
|
|||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "قفل توسط یک برنامه مسدود شده بود"
|
msgstr "قفل توسط یک برنامه مسدود شده بود"
|
||||||
|
|
||||||
#: ../js/ui/search.js:611
|
#: ../js/ui/search.js:606
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "درحال حستجو..."
|
msgstr "درحال حستجو..."
|
||||||
|
|
||||||
#: ../js/ui/search.js:613
|
#: ../js/ui/search.js:652
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "بدون نتیجه."
|
msgstr "بدون نتیجه."
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:25
|
#: ../js/ui/shellEntry.js:27
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "رونوشت"
|
msgstr "رونوشت"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:30
|
#: ../js/ui/shellEntry.js:32
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "چسباندن"
|
msgstr "چسباندن"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:97
|
#: ../js/ui/shellEntry.js:99
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "نمایش متن"
|
msgstr "نمایش متن"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:99
|
#: ../js/ui/shellEntry.js:101
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "مخفیکردن متن"
|
msgstr "مخفیکردن متن"
|
||||||
|
|
||||||
@@ -1430,27 +1464,26 @@ msgstr "متصل نیست"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "روشنایی"
|
msgstr "روشنایی"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:547
|
#: ../js/ui/status/keyboard.js:406
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "نمایش چیدمان صفحهکلید"
|
msgstr "نمایش چیدمان صفحهکلید"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:65
|
#: ../js/ui/status/location.js:56
|
||||||
|
#| msgid "Notifications"
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "مکان"
|
msgstr "مکان"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
|
||||||
|
#| msgid "Disabled"
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "از کار انداختن"
|
msgstr "از کار انداختن"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Privacy Settings"
|
|
||||||
msgstr "تنظیمات حریمخصوصی"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
|
||||||
msgid "In Use"
|
msgid "In Use"
|
||||||
msgstr "درحال استفاده"
|
msgstr "درحال استفاده"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:170
|
||||||
|
#| msgid "Enabled"
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "به کار انداختن"
|
msgstr "به کار انداختن"
|
||||||
|
|
||||||
@@ -1464,31 +1497,37 @@ msgid "Off"
|
|||||||
msgstr "خاموش"
|
msgstr "خاموش"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:459
|
#: ../js/ui/status/network.js:459
|
||||||
|
#| msgid "Connect"
|
||||||
msgid "Connected"
|
msgid "Connected"
|
||||||
msgstr "متصل شده"
|
msgstr "متصل شده"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||||
#: ../js/ui/status/network.js:463
|
#: ../js/ui/status/network.js:463
|
||||||
|
#| msgid "unmanaged"
|
||||||
msgid "Unmanaged"
|
msgid "Unmanaged"
|
||||||
msgstr "مدیریت نشده"
|
msgstr "مدیریت نشده"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:465
|
#: ../js/ui/status/network.js:465
|
||||||
|
#| msgid "disconnecting..."
|
||||||
msgid "Disconnecting"
|
msgid "Disconnecting"
|
||||||
msgstr "درحال قطع ارتباط"
|
msgstr "درحال قطع ارتباط"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
||||||
|
#| msgid "Connection"
|
||||||
msgid "Connecting"
|
msgid "Connecting"
|
||||||
msgstr "درحال اتصال"
|
msgstr "درحال اتصال"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password */
|
#. Translators: this is for network connections that require some kind of key or password */
|
||||||
#: ../js/ui/status/network.js:474
|
#: ../js/ui/status/network.js:474
|
||||||
|
#| msgid "authentication required"
|
||||||
msgid "Authentication required"
|
msgid "Authentication required"
|
||||||
msgstr "تایید هویت لازم است"
|
msgstr "تایید هویت لازم است"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing */
|
#. module, which is missing */
|
||||||
#: ../js/ui/status/network.js:482
|
#: ../js/ui/status/network.js:482
|
||||||
|
#| msgid "firmware missing"
|
||||||
msgid "Firmware missing"
|
msgid "Firmware missing"
|
||||||
msgstr "میانافزار موجود نیست"
|
msgstr "میانافزار موجود نیست"
|
||||||
|
|
||||||
@@ -1503,6 +1542,7 @@ msgid "Connection failed"
|
|||||||
msgstr "اتصال شکست خورد"
|
msgstr "اتصال شکست خورد"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:504
|
#: ../js/ui/status/network.js:504
|
||||||
|
#| msgid "Wi-Fi Settings"
|
||||||
msgid "Wired Settings"
|
msgid "Wired Settings"
|
||||||
msgstr "تنظیمات اتصال سیمی"
|
msgstr "تنظیمات اتصال سیمی"
|
||||||
|
|
||||||
@@ -1519,6 +1559,7 @@ msgid "Use as Internet connection"
|
|||||||
msgstr "استفاده به عنوان اتصال اینترنت"
|
msgstr "استفاده به عنوان اتصال اینترنت"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:813
|
#: ../js/ui/status/network.js:813
|
||||||
|
#| msgid "Airplane Mode"
|
||||||
msgid "Airplane Mode is On"
|
msgid "Airplane Mode is On"
|
||||||
msgstr "حالت هواپیمایی روشن است"
|
msgstr "حالت هواپیمایی روشن است"
|
||||||
|
|
||||||
@@ -1527,10 +1568,12 @@ msgid "Wi-Fi is disabled when airplane mode is on."
|
|||||||
msgstr "در زمان روشن بودن حالت هواپیمایی وای-فای غیرفعال میشود."
|
msgstr "در زمان روشن بودن حالت هواپیمایی وای-فای غیرفعال میشود."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:815
|
#: ../js/ui/status/network.js:815
|
||||||
|
#| msgid "Airplane Mode"
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
msgstr "خاموش کردن حالت هواپیمایی"
|
msgstr "خاموش کردن حالت هواپیمایی"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:824
|
#: ../js/ui/status/network.js:824
|
||||||
|
#| msgid "Wi-Fi Settings"
|
||||||
msgid "Wi-Fi is Off"
|
msgid "Wi-Fi is Off"
|
||||||
msgstr "بیسیم خاموش است"
|
msgstr "بیسیم خاموش است"
|
||||||
|
|
||||||
@@ -1539,6 +1582,7 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
|||||||
msgstr "برای اتصال به شبکه باید وای-فای روشن شود."
|
msgstr "برای اتصال به شبکه باید وای-فای روشن شود."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:826
|
#: ../js/ui/status/network.js:826
|
||||||
|
#| msgid "Turn On"
|
||||||
msgid "Turn On Wi-Fi"
|
msgid "Turn On Wi-Fi"
|
||||||
msgstr "روشن کردن بیسیم"
|
msgstr "روشن کردن بیسیم"
|
||||||
|
|
||||||
@@ -1592,6 +1636,7 @@ msgid "Network Settings"
|
|||||||
msgstr "تنظیمات شبکه"
|
msgstr "تنظیمات شبکه"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1482
|
#: ../js/ui/status/network.js:1482
|
||||||
|
#| msgid "Settings"
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "تنظیمات VPN"
|
msgstr "تنظیمات VPN"
|
||||||
|
|
||||||
@@ -1685,16 +1730,17 @@ msgstr "ورود به سیستم بعنوان کاربری دیگر"
|
|||||||
msgid "Unlock Window"
|
msgid "Unlock Window"
|
||||||
msgstr "بازکردن قفل پنجره"
|
msgstr "بازکردن قفل پنجره"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:158
|
#: ../js/ui/viewSelector.js:232
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "برنامهها"
|
msgstr "برنامهها"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:162
|
#: ../js/ui/viewSelector.js:236
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "جستجو"
|
msgstr "جستجو"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:19
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "'%s' is ready"
|
||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "«%s» آماده است"
|
msgstr "«%s» آماده است"
|
||||||
|
|
||||||
@@ -1786,24 +1832,25 @@ msgstr[1] "%Iu ورودی"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "صداهای سیستم"
|
msgstr "صداهای سیستم"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "چاپ نسخه"
|
msgstr "چاپ نسخه"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
|
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:383
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "استفاده از حالت مشخص، مثال «gdm» برای صفحه ورود به سیستم"
|
msgstr "استفاده از حالت مشخص، مثال «gdm» برای صفحه ورود به سیستم"
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "فهرست کردن حالتهای ممکن"
|
msgstr "فهرست کردن حالتهای ممکن"
|
||||||
|
|
||||||
#: ../src/shell-app.c:666
|
#: ../src/shell-app.c:666
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "Failed to launch '%s'"
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "راهاندازی «%s» شکست خورد"
|
msgstr "راهاندازی «%s» شکست خورد"
|
||||||
|
|
||||||
|
|||||||
148
po/fr.po
148
po/fr.po
@@ -19,7 +19,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell master fr\n"
|
"Project-Id-Version: gnome-shell master fr\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: 2014-09-12 17:00+0000\n"
|
"POT-Creation-Date: 2014-08-25 07:37+0000\n"
|
||||||
"PO-Revision-Date: 2014-08-25 17:00+0200\n"
|
"PO-Revision-Date: 2014-08-25 17:00+0200\n"
|
||||||
"Last-Translator: Alain Lojewski <allomervan@gmail.com>\n"
|
"Last-Translator: Alain Lojewski <allomervan@gmail.com>\n"
|
||||||
"Language-Team: français <gnomefr@traduc.org>\n"
|
"Language-Team: français <gnomefr@traduc.org>\n"
|
||||||
@@ -242,8 +242,8 @@ msgstr "Combinaison de touches pour donner le focus à la notification active."
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Combinaison de touches pour stopper et fermer toutes les transitions à des "
|
"Combinaison de touches pour stopper et fermer toutes les transitions à des fins "
|
||||||
"fins de débogage"
|
"de débogage"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
@@ -322,19 +322,19 @@ msgstr ""
|
|||||||
msgid "Captive Portal"
|
msgid "Captive Portal"
|
||||||
msgstr "Portail captif"
|
msgstr "Portail captif"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:127
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Une erreur s'est produite lors du chargement de la boîte de dialogue des "
|
"Une erreur s'est produite lors du chargement de la boîte de dialogue des "
|
||||||
"préférences de %s :"
|
"préférences de %s :"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:159
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Extensions GNOME Shell"
|
msgstr "Extensions GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:915
|
#: ../js/ui/status/network.js:915
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
@@ -401,40 +401,40 @@ msgstr "Exécution de « %s » impossible :"
|
|||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "Redirection de l'authentification Web"
|
msgstr "Redirection de l'authentification Web"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:772
|
#: ../js/ui/appDisplay.js:660
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "Les applications fréquemment utilisées apparaîtront ici"
|
msgstr "Les applications fréquemment utilisées apparaîtront ici"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:883
|
#: ../js/ui/appDisplay.js:771
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Fréquemment utilisées"
|
msgstr "Fréquemment utilisées"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:890
|
#: ../js/ui/appDisplay.js:778
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Toutes"
|
msgstr "Toutes"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1789
|
#: ../js/ui/appDisplay.js:1650
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nouvelle fenêtre"
|
msgstr "Nouvelle fenêtre"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
|
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Enlever des favoris"
|
msgstr "Enlever des favoris"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1821
|
#: ../js/ui/appDisplay.js:1679
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Ajouter aux favoris"
|
msgstr "Ajouter aux favoris"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1830
|
#: ../js/ui/appDisplay.js:1688
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Afficher les détails"
|
msgstr "Afficher les détails"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:124
|
#: ../js/ui/appFavorites.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s a été ajouté à vos favoris."
|
msgstr "%s a été ajouté à vos favoris."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:158
|
#: ../js/ui/appFavorites.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s a été supprimé de vos favoris."
|
msgstr "%s a été supprimé de vos favoris."
|
||||||
@@ -647,11 +647,11 @@ msgstr "Ouvrir avec %s"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Éjecter"
|
msgstr "Éjecter"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
|
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Mot de passe :"
|
msgstr "Mot de passe :"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:120
|
#: ../js/ui/components/keyring.js:113
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Saisissez à nouveau :"
|
msgstr "Saisissez à nouveau :"
|
||||||
|
|
||||||
@@ -1025,7 +1025,7 @@ msgstr "Afficher le compte"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Raison inconnue"
|
msgstr "Raison inconnue"
|
||||||
|
|
||||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Fenêtres"
|
msgstr "Fenêtres"
|
||||||
|
|
||||||
@@ -1062,86 +1062,86 @@ msgstr "Paramètres de date et heure"
|
|||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B %Y"
|
msgstr "%A %e %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:66
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Fermer la session de %s"
|
msgstr "Fermer la session de %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:67
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Fermer la session"
|
msgstr "Fermer la session"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:67
|
#: ../js/ui/endSessionDialog.js:69
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s sera déconnecté automatiquement dans %d seconde."
|
msgstr[0] "%s sera déconnecté automatiquement dans %d seconde."
|
||||||
msgstr[1] "%s sera déconnecté automatiquement dans %d secondes."
|
msgstr[1] "%s sera déconnecté automatiquement dans %d secondes."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:72
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "Vous allez être déconnecté automatiquement dans %d seconde."
|
msgstr[0] "Vous allez être déconnecté automatiquement dans %d seconde."
|
||||||
msgstr[1] "Vous allez être déconnecté automatiquement dans %d secondes."
|
msgstr[1] "Vous allez être déconnecté automatiquement dans %d secondes."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Fermer la session"
|
msgstr "Fermer la session"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:86
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Éteindre"
|
msgstr "Éteindre"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:87
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Install Updates & Power Off"
|
msgid "Install Updates & Power Off"
|
||||||
msgstr "Installer les mises à jour et éteindre"
|
msgstr "Installer les mises à jour et éteindre"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "Cet ordinateur s'éteindra automatiquement dans %d seconde."
|
msgstr[0] "Cet ordinateur s'éteindra automatiquement dans %d seconde."
|
||||||
msgstr[1] "Cet ordinateur s'éteindra automatiquement dans %d secondes."
|
msgstr[1] "Cet ordinateur s'éteindra automatiquement dans %d secondes."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Install pending software updates"
|
msgid "Install pending software updates"
|
||||||
msgstr "Installer les mises à jour logicielles en attente"
|
msgstr "Installer les mises à jour logicielles en attente"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
|
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Redémarrer"
|
msgstr "Redémarrer"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:96
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Éteindre"
|
msgstr "Éteindre"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:103
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Redémarrer"
|
msgstr "Redémarrer"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "Cet ordinateur redémarrera automatiquement dans %d seconde."
|
msgstr[0] "Cet ordinateur redémarrera automatiquement dans %d seconde."
|
||||||
msgstr[1] "Cet ordinateur redémarrera automatiquement dans %d secondes."
|
msgstr[1] "Cet ordinateur redémarrera automatiquement dans %d secondes."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:119
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart & Install Updates"
|
msgid "Restart & Install Updates"
|
||||||
msgstr "Redémarrer et installer les mises à jour"
|
msgstr "Redémarrer et installer les mises à jour"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural ""
|
msgid_plural ""
|
||||||
@@ -1149,44 +1149,44 @@ msgid_plural ""
|
|||||||
msgstr[0] "Le système redémarrera automatiquement dans %d seconde."
|
msgstr[0] "Le système redémarrera automatiquement dans %d seconde."
|
||||||
msgstr[1] "Le système redémarrera automatiquement dans %d secondes."
|
msgstr[1] "Le système redémarrera automatiquement dans %d secondes."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart & Install"
|
msgid "Restart & Install"
|
||||||
msgstr "Redémarrer et installer"
|
msgstr "Redémarrer et installer"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:128
|
#: ../js/ui/endSessionDialog.js:130
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Install & Power Off"
|
msgid "Install & Power Off"
|
||||||
msgstr "Installer et éteindre"
|
msgstr "Installer et éteindre"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:131
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Power off after updates are installed"
|
msgid "Power off after updates are installed"
|
||||||
msgstr "Éteindre après l'installation des mises à jour"
|
msgstr "Éteindre après l'installation des mises à jour"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Fonctionnement sur batterie : veuillez vous brancher avant d'installer les "
|
"Fonctionnement sur batterie : veuillez vous brancher avant d'installer les "
|
||||||
"mises à jour."
|
"mises à jour."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Certaines applications sont occupées ou ont des travaux non-sauvegardés."
|
"Certaines applications sont occupées ou ont des travaux non-sauvegardés."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:362
|
#: ../js/ui/endSessionDialog.js:339
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "D'autres utilisateurs sont connectés."
|
msgstr "D'autres utilisateurs sont connectés."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||||
#: ../js/ui/endSessionDialog.js:640
|
#: ../js/ui/endSessionDialog.js:619
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (distant)"
|
msgstr "%s (distant)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console */
|
#. Translators: Console here refers to a tty like a VT console */
|
||||||
#: ../js/ui/endSessionDialog.js:643
|
#: ../js/ui/endSessionDialog.js:622
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (console)"
|
msgstr "%s (console)"
|
||||||
@@ -1200,7 +1200,7 @@ msgstr "Installer"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
|
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
|
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Clavier"
|
msgstr "Clavier"
|
||||||
|
|
||||||
@@ -1222,8 +1222,8 @@ msgstr "Masquer les erreurs"
|
|||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Afficher les erreurs"
|
msgstr "Afficher les erreurs"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
|
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activé"
|
msgstr "Activé"
|
||||||
|
|
||||||
@@ -1231,7 +1231,7 @@ msgstr "Activé"
|
|||||||
#. because it's disabled by rfkill (airplane mode) */
|
#. because it's disabled by rfkill (airplane mode) */
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
|
||||||
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Désactivé"
|
msgstr "Désactivé"
|
||||||
@@ -1256,39 +1256,39 @@ msgstr "Afficher la source"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Page Web"
|
msgstr "Page Web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1326
|
#: ../js/ui/messageTray.js:1325
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Ouvrir"
|
msgstr "Ouvrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1333
|
#: ../js/ui/messageTray.js:1332
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Enlever"
|
msgstr "Enlever"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1630
|
#: ../js/ui/messageTray.js:1629
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1637
|
#: ../js/ui/messageTray.js:1636
|
||||||
msgid "Clear Messages"
|
msgid "Clear Messages"
|
||||||
msgstr "Effacer les messages"
|
msgstr "Effacer les messages"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1656
|
#: ../js/ui/messageTray.js:1655
|
||||||
msgid "Notification Settings"
|
msgid "Notification Settings"
|
||||||
msgstr "Paramètres de notifications"
|
msgstr "Paramètres de notifications"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1709
|
#: ../js/ui/messageTray.js:1708
|
||||||
msgid "Tray Menu"
|
msgid "Tray Menu"
|
||||||
msgstr "Menu du tiroir de messagerie"
|
msgstr "Menu du tiroir de messagerie"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1926
|
#: ../js/ui/messageTray.js:1925
|
||||||
msgid "No Messages"
|
msgid "No Messages"
|
||||||
msgstr "Aucun message"
|
msgstr "Aucun message"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1968
|
#: ../js/ui/messageTray.js:1963
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Tiroir de messagerie"
|
msgstr "Tiroir de messagerie"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2971
|
#: ../js/ui/messageTray.js:2966
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informations du système"
|
msgstr "Informations du système"
|
||||||
|
|
||||||
@@ -1316,7 +1316,7 @@ msgstr "Vue d'ensemble"
|
|||||||
#. 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/overview.js:246
|
#: ../js/ui/overview.js:250
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Rechercher…"
|
msgstr "Rechercher…"
|
||||||
|
|
||||||
@@ -1379,27 +1379,27 @@ msgstr "Impossible de verrouiller"
|
|||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Le verrouillage a été bloqué par une application"
|
msgstr "Le verrouillage a été bloqué par une application"
|
||||||
|
|
||||||
#: ../js/ui/search.js:594
|
#: ../js/ui/search.js:606
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Recherche en cours…"
|
msgstr "Recherche en cours…"
|
||||||
|
|
||||||
#: ../js/ui/search.js:596
|
#: ../js/ui/search.js:652
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Aucun résultat."
|
msgstr "Aucun résultat."
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:25
|
#: ../js/ui/shellEntry.js:27
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "Copier"
|
msgstr "Copier"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:30
|
#: ../js/ui/shellEntry.js:32
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "Coller"
|
msgstr "Coller"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:97
|
#: ../js/ui/shellEntry.js:99
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "Afficher le texte"
|
msgstr "Afficher le texte"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:99
|
#: ../js/ui/shellEntry.js:101
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Masquer le texte"
|
msgstr "Masquer le texte"
|
||||||
|
|
||||||
@@ -1485,27 +1485,23 @@ msgstr "Non connecté"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Luminosité"
|
msgstr "Luminosité"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:547
|
#: ../js/ui/status/keyboard.js:406
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Afficher la disposition du clavier"
|
msgstr "Afficher la disposition du clavier"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:65
|
#: ../js/ui/status/location.js:56
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "Localisation"
|
msgstr "Localisation"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Désactiver"
|
msgstr "Désactiver"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Privacy Settings"
|
|
||||||
msgstr "Paramètres de confidentialité"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
|
||||||
msgid "In Use"
|
msgid "In Use"
|
||||||
msgstr "En cours d'utilisation"
|
msgstr "En cours d'utilisation"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:170
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activer"
|
msgstr "Activer"
|
||||||
|
|
||||||
@@ -1740,11 +1736,11 @@ msgstr "Se connecter en tant qu'autre utilisateur"
|
|||||||
msgid "Unlock Window"
|
msgid "Unlock Window"
|
||||||
msgstr "Fenêtre de déverrouillage"
|
msgstr "Fenêtre de déverrouillage"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:158
|
#: ../js/ui/viewSelector.js:232
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applications"
|
msgstr "Applications"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:162
|
#: ../js/ui/viewSelector.js:236
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Recherche"
|
msgstr "Recherche"
|
||||||
|
|
||||||
@@ -1841,20 +1837,20 @@ msgstr[1] "%u entrées"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons système"
|
msgstr "Sons système"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Affiche la version"
|
msgstr "Affiche la version"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Mode utilisé par GDM pour l'écran de connexion"
|
msgstr "Mode utilisé par GDM pour l'écran de connexion"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:383
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Utiliser un mode particulier, par ex. « gdm » pour l'écran de connexion"
|
"Utiliser un mode particulier, par ex. « gdm » pour l'écran de connexion"
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Lister les modes possibles"
|
msgstr "Lister les modes possibles"
|
||||||
|
|
||||||
|
|||||||
308
po/gl.po
308
po/gl.po
@@ -11,8 +11,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: 2014-09-23 01:50+0200\n"
|
"POT-Creation-Date: 2014-08-25 23:06+0200\n"
|
||||||
"PO-Revision-Date: 2014-09-23 01:51+0200\n"
|
"PO-Revision-Date: 2014-08-25 23:08+0200\n"
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||||
"Language: gl\n"
|
"Language: gl\n"
|
||||||
@@ -300,17 +300,17 @@ msgstr "Atrasar os cambios de foco no modo rato até que o punteiro se pare"
|
|||||||
msgid "Captive Portal"
|
msgid "Captive Portal"
|
||||||
msgstr "Portal cautivo"
|
msgstr "Portal cautivo"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:127
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %s:"
|
msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:159
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Extensións de GNOME Shell"
|
msgstr "Extensións de GNOME Shell"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:915
|
#: ../js/ui/status/network.js:915
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
@@ -334,23 +334,15 @@ msgstr "Iniciar sesión"
|
|||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Escolla unha sesión"
|
msgstr "Escolla unha sesión"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
|
||||||
#. login screen. It can be activated to reveal an entry for
|
|
||||||
#. manually entering the username.
|
|
||||||
#: ../js/gdm/loginDialog.js:429
|
#: ../js/gdm/loginDialog.js:429
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Non está na lista?"
|
msgstr "Non está na lista?"
|
||||||
|
|
||||||
#. Translators: this message is shown below the username entry field
|
|
||||||
#. to clue the user in on how to login to the local network realm
|
|
||||||
#: ../js/gdm/loginDialog.js:614
|
#: ../js/gdm/loginDialog.js:614
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(p.ex., usuario ou %s)"
|
msgstr "(p.ex., usuario ou %s)"
|
||||||
|
|
||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
|
||||||
#. is not visible here since we only care about phase2 authentication
|
|
||||||
#. (and don't even care of which one)
|
|
||||||
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
|
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
|
||||||
#: ../js/ui/components/networkAgent.js:287
|
#: ../js/ui/components/networkAgent.js:287
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
@@ -364,11 +356,6 @@ msgstr "Xanela de inicio de sesión"
|
|||||||
msgid "Authentication error"
|
msgid "Authentication error"
|
||||||
msgstr "Erro de autenticación"
|
msgstr "Erro de autenticación"
|
||||||
|
|
||||||
#. We don't show fingerprint messages directly since it's
|
|
||||||
#. not the main auth service. Instead we use the messages
|
|
||||||
#. as a cue to display our own message.
|
|
||||||
#. Translators: this message is shown below the password entry field
|
|
||||||
#. to indicate the user can swipe their finger instead
|
|
||||||
#: ../js/gdm/util.js:453
|
#: ../js/gdm/util.js:453
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ou pase o dedo)"
|
msgstr "(ou pase o dedo)"
|
||||||
@@ -377,8 +364,6 @@ msgstr "(ou pase o dedo)"
|
|||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Orde non atopada"
|
msgstr "Orde non atopada"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
|
||||||
#. something nicer
|
|
||||||
#: ../js/misc/util.js:148
|
#: ../js/misc/util.js:148
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Non foi posíbel analizar a orde:"
|
msgstr "Non foi posíbel analizar a orde:"
|
||||||
@@ -388,46 +373,44 @@ msgstr "Non foi posíbel analizar a orde:"
|
|||||||
msgid "Execution of “%s” failed:"
|
msgid "Execution of “%s” failed:"
|
||||||
msgstr "Produciuse un fallo na execución de «%s»:"
|
msgstr "Produciuse un fallo na execución de «%s»:"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the title of the wifi captive portal login
|
|
||||||
#. window, until we know the title of the actual login page
|
|
||||||
#: ../js/portalHelper/main.js:85
|
#: ../js/portalHelper/main.js:85
|
||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "Redirección web de autenticación"
|
msgstr "Redirección web de autenticación"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:772
|
#: ../js/ui/appDisplay.js:660
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "Os aplicativos usados recentemente aparecerán aquí"
|
msgstr "Os aplicativos usados recentemente aparecerán aquí"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:883
|
#: ../js/ui/appDisplay.js:771
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Frecuentes"
|
msgstr "Frecuentes"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:890
|
#: ../js/ui/appDisplay.js:778
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todos"
|
msgstr "Todos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1790
|
#: ../js/ui/appDisplay.js:1650
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Xanela nova"
|
msgstr "Xanela nova"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
|
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Retirar dos marcadores"
|
msgstr "Retirar dos marcadores"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1822
|
#: ../js/ui/appDisplay.js:1679
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Engadir aos favoritos"
|
msgstr "Engadir aos favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1831
|
#: ../js/ui/appDisplay.js:1688
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Mostrar detalles"
|
msgstr "Mostrar detalles"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:132
|
#: ../js/ui/appFavorites.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s foi engadido aos seus favoritos."
|
msgstr "%s foi engadido aos seus favoritos."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:166
|
#: ../js/ui/appFavorites.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s retirouse dos seus marcadores."
|
msgstr "%s retirouse dos seus marcadores."
|
||||||
@@ -443,14 +426,14 @@ msgstr "Cambiar fondo de escritorio…"
|
|||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/calendar.js:67
|
#: ../js/ui/calendar.js:67
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Todo o día"
|
msgstr "Todo o día"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list, if 24h format,
|
#. Translators: Shown in calendar event list, if 24h format,
|
||||||
#. \u2236 is a ratio character, similar to :
|
#. \u2236 is a ratio character, similar to : */
|
||||||
#: ../js/ui/calendar.js:73
|
#: ../js/ui/calendar.js:73
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
@@ -458,7 +441,7 @@ msgstr "%H∶%M"
|
|||||||
|
|
||||||
#. Translators: Shown in calendar event list, if 12h format,
|
#. Translators: Shown in calendar event list, if 12h format,
|
||||||
#. \u2236 is a ratio character, similar to : and \u2009 is
|
#. \u2236 is a ratio character, similar to : and \u2009 is
|
||||||
#. a thin space
|
#. a thin space */
|
||||||
#: ../js/ui/calendar.js:82
|
#: ../js/ui/calendar.js:82
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
@@ -468,43 +451,43 @@ msgstr "%l∶%M %p"
|
|||||||
#. *
|
#. *
|
||||||
#. * NOTE: These grid abbreviations are always shown together
|
#. * NOTE: These grid abbreviations are always shown together
|
||||||
#. * and in order, e.g. "S M T W T F S".
|
#. * and in order, e.g. "S M T W T F S".
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/calendar.js:113
|
#: ../js/ui/calendar.js:113
|
||||||
msgctxt "grid sunday"
|
msgctxt "grid sunday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "D"
|
msgstr "D"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Monday
|
#. Translators: Calendar grid abbreviation for Monday */
|
||||||
#: ../js/ui/calendar.js:115
|
#: ../js/ui/calendar.js:115
|
||||||
msgctxt "grid monday"
|
msgctxt "grid monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "L"
|
msgstr "L"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Tuesday
|
#. Translators: Calendar grid abbreviation for Tuesday */
|
||||||
#: ../js/ui/calendar.js:117
|
#: ../js/ui/calendar.js:117
|
||||||
msgctxt "grid tuesday"
|
msgctxt "grid tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "M"
|
msgstr "M"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Wednesday
|
#. Translators: Calendar grid abbreviation for Wednesday */
|
||||||
#: ../js/ui/calendar.js:119
|
#: ../js/ui/calendar.js:119
|
||||||
msgctxt "grid wednesday"
|
msgctxt "grid wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "W"
|
msgstr "W"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Thursday
|
#. Translators: Calendar grid abbreviation for Thursday */
|
||||||
#: ../js/ui/calendar.js:121
|
#: ../js/ui/calendar.js:121
|
||||||
msgctxt "grid thursday"
|
msgctxt "grid thursday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "X"
|
msgstr "X"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Friday
|
#. Translators: Calendar grid abbreviation for Friday */
|
||||||
#: ../js/ui/calendar.js:123
|
#: ../js/ui/calendar.js:123
|
||||||
msgctxt "grid friday"
|
msgctxt "grid friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "V"
|
msgstr "V"
|
||||||
|
|
||||||
#. Translators: Calendar grid abbreviation for Saturday
|
#. Translators: Calendar grid abbreviation for Saturday */
|
||||||
#: ../js/ui/calendar.js:125
|
#: ../js/ui/calendar.js:125
|
||||||
msgctxt "grid saturday"
|
msgctxt "grid saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
@@ -515,43 +498,43 @@ msgstr "S"
|
|||||||
#. * NOTE: These list abbreviations are normally not shown together
|
#. * NOTE: These list abbreviations are normally not shown together
|
||||||
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
|
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
|
||||||
#. * both be 'T').
|
#. * both be 'T').
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/calendar.js:138
|
#: ../js/ui/calendar.js:138
|
||||||
msgctxt "list sunday"
|
msgctxt "list sunday"
|
||||||
msgid "Su"
|
msgid "Su"
|
||||||
msgstr "Do"
|
msgstr "Do"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Monday
|
#. Translators: Event list abbreviation for Monday */
|
||||||
#: ../js/ui/calendar.js:140
|
#: ../js/ui/calendar.js:140
|
||||||
msgctxt "list monday"
|
msgctxt "list monday"
|
||||||
msgid "M"
|
msgid "M"
|
||||||
msgstr "L"
|
msgstr "L"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Tuesday
|
#. Translators: Event list abbreviation for Tuesday */
|
||||||
#: ../js/ui/calendar.js:142
|
#: ../js/ui/calendar.js:142
|
||||||
msgctxt "list tuesday"
|
msgctxt "list tuesday"
|
||||||
msgid "T"
|
msgid "T"
|
||||||
msgstr "M"
|
msgstr "M"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Wednesday
|
#. Translators: Event list abbreviation for Wednesday */
|
||||||
#: ../js/ui/calendar.js:144
|
#: ../js/ui/calendar.js:144
|
||||||
msgctxt "list wednesday"
|
msgctxt "list wednesday"
|
||||||
msgid "W"
|
msgid "W"
|
||||||
msgstr "W"
|
msgstr "W"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Thursday
|
#. Translators: Event list abbreviation for Thursday */
|
||||||
#: ../js/ui/calendar.js:146
|
#: ../js/ui/calendar.js:146
|
||||||
msgctxt "list thursday"
|
msgctxt "list thursday"
|
||||||
msgid "Th"
|
msgid "Th"
|
||||||
msgstr "X"
|
msgstr "X"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Friday
|
#. Translators: Event list abbreviation for Friday */
|
||||||
#: ../js/ui/calendar.js:148
|
#: ../js/ui/calendar.js:148
|
||||||
msgctxt "list friday"
|
msgctxt "list friday"
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "V"
|
msgstr "V"
|
||||||
|
|
||||||
#. Translators: Event list abbreviation for Saturday
|
#. Translators: Event list abbreviation for Saturday */
|
||||||
#: ../js/ui/calendar.js:150
|
#: ../js/ui/calendar.js:150
|
||||||
msgctxt "list saturday"
|
msgctxt "list saturday"
|
||||||
msgid "S"
|
msgid "S"
|
||||||
@@ -565,18 +548,18 @@ msgstr "Anterior mes"
|
|||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Seguinte mes"
|
msgstr "Seguinte mes"
|
||||||
|
|
||||||
#. Translators: Text to show if there are no events
|
#. Translators: Text to show if there are no events */
|
||||||
#: ../js/ui/calendar.js:781
|
#: ../js/ui/calendar.js:781
|
||||||
msgid "Nothing Scheduled"
|
msgid "Nothing Scheduled"
|
||||||
msgstr "Nada programado"
|
msgstr "Nada programado"
|
||||||
|
|
||||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
#. Translators: Shown on calendar heading when selected day occurs on current year */
|
||||||
#: ../js/ui/calendar.js:799
|
#: ../js/ui/calendar.js:799
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d de %B"
|
msgstr "%A, %d de %B"
|
||||||
|
|
||||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
#. Translators: Shown on calendar heading when selected day occurs on different year */
|
||||||
#: ../js/ui/calendar.js:802
|
#: ../js/ui/calendar.js:802
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
@@ -619,11 +602,11 @@ msgstr "Abrir con %s"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "Expulsar"
|
msgstr "Expulsar"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
|
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Contrasinal:"
|
msgstr "Contrasinal:"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:120
|
#: ../js/ui/components/keyring.js:113
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Escriba de novo:"
|
msgstr "Escriba de novo:"
|
||||||
|
|
||||||
@@ -632,7 +615,6 @@ msgstr "Escriba de novo:"
|
|||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Conectar"
|
msgstr "Conectar"
|
||||||
|
|
||||||
#. Cisco LEAP
|
|
||||||
#: ../js/ui/components/networkAgent.js:231
|
#: ../js/ui/components/networkAgent.js:231
|
||||||
#: ../js/ui/components/networkAgent.js:243
|
#: ../js/ui/components/networkAgent.js:243
|
||||||
#: ../js/ui/components/networkAgent.js:271
|
#: ../js/ui/components/networkAgent.js:271
|
||||||
@@ -641,7 +623,6 @@ msgstr "Conectar"
|
|||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Contrasinal: "
|
msgstr "Contrasinal: "
|
||||||
|
|
||||||
#. static WEP
|
|
||||||
#: ../js/ui/components/networkAgent.js:236
|
#: ../js/ui/components/networkAgent.js:236
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Chave: "
|
msgstr "Chave: "
|
||||||
@@ -719,23 +700,19 @@ msgstr "Autenticar"
|
|||||||
#. Translators: "that didn't work" refers to the fact that the
|
#. Translators: "that didn't work" refers to the fact that the
|
||||||
#. * 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/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383
|
#: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383
|
||||||
msgid "Sorry, that didn't work. Please try again."
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
||||||
|
|
||||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
|
||||||
#. system-users for now as Empathy does.
|
|
||||||
#: ../js/ui/components/telepathyClient.js:240
|
#: ../js/ui/components/telepathyClient.js:240
|
||||||
msgid "Invitation"
|
msgid "Invitation"
|
||||||
msgstr "Convite"
|
msgstr "Convite"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#: ../js/ui/components/telepathyClient.js:300
|
#: ../js/ui/components/telepathyClient.js:300
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "Chamar"
|
msgstr "Chamar"
|
||||||
|
|
||||||
#. We got the TpContact
|
|
||||||
#: ../js/ui/components/telepathyClient.js:316
|
#: ../js/ui/components/telepathyClient.js:316
|
||||||
msgid "File Transfer"
|
msgid "File Transfer"
|
||||||
msgstr "Transferencia de ficheiro"
|
msgstr "Transferencia de ficheiro"
|
||||||
@@ -752,85 +729,77 @@ msgstr "Desactivar silencio"
|
|||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#. Translators: Time in 24h format
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:953
|
#: ../js/ui/components/telepathyClient.js:953
|
||||||
msgid "%H∶%M"
|
msgid "%H∶%M"
|
||||||
msgstr "%H∶%M"
|
msgstr "%H∶%M"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:960
|
#: ../js/ui/components/telepathyClient.js:960
|
||||||
#, no-c-format
|
|
||||||
msgid "Yesterday, %H∶%M"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "Onte, %H:%M"
|
msgstr "Onte, %H:%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30"
|
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:967
|
#: ../js/ui/components/telepathyClient.js:967
|
||||||
#, no-c-format
|
|
||||||
msgid "%A, %H∶%M"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A ás %H:%M"
|
msgstr "%A ás %H:%M"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 24h format.
|
#. followed by a time string in 24h format.
|
||||||
#. i.e. "May 25, 14:30"
|
#. i.e. "May 25, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:974
|
#: ../js/ui/components/telepathyClient.js:974
|
||||||
#, no-c-format
|
|
||||||
msgid "%B %d, %H∶%M"
|
msgid "%B %d, %H∶%M"
|
||||||
msgstr "%d de %B ás %H:%M"
|
msgstr "%d de %B ás %H:%M"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 24h format.
|
#. number followed by a time string in 24h format.
|
||||||
#. i.e. "May 25 2012, 14:30"
|
#. i.e. "May 25 2012, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:980
|
#: ../js/ui/components/telepathyClient.js:980
|
||||||
#, no-c-format
|
|
||||||
msgid "%B %d %Y, %H∶%M"
|
msgid "%B %d %Y, %H∶%M"
|
||||||
msgstr "%d de %B de %Y ás %H:%M"
|
msgstr "%d de %B de %Y ás %H:%M"
|
||||||
|
|
||||||
#. Translators: Time in 24h format
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:986
|
#: ../js/ui/components/telepathyClient.js:986
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%l:%M %p"
|
msgstr "%l:%M %p"
|
||||||
|
|
||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:993
|
#: ../js/ui/components/telepathyClient.js:993
|
||||||
#, no-c-format
|
|
||||||
msgid "Yesterday, %l∶%M %p"
|
msgid "Yesterday, %l∶%M %p"
|
||||||
msgstr "Onte, %H:%M"
|
msgstr "Onte, %H:%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1000
|
#: ../js/ui/components/telepathyClient.js:1000
|
||||||
#, no-c-format
|
|
||||||
msgid "%A, %l∶%M %p"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A, %l∶%M %p"
|
msgstr "%A, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name and day number
|
#. Translators: this is the month name and day number
|
||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm"
|
#. i.e. "May 25, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1007
|
#: ../js/ui/components/telepathyClient.js:1007
|
||||||
#, no-c-format
|
|
||||||
msgid "%B %d, %l∶%M %p"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%d de %B, %l∶%M %p"
|
msgstr "%d de %B, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the month name, day number, year
|
#. Translators: this is the month name, day number, year
|
||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"
|
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||||
#: ../js/ui/components/telepathyClient.js:1013
|
#: ../js/ui/components/telepathyClient.js:1013
|
||||||
#, no-c-format
|
|
||||||
msgid "%B %d %Y, %l∶%M %p"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%d de %B de %Y, %l∶%M %p"
|
msgstr "%d de %B de %Y, %l∶%M %p"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1045
|
#: ../js/ui/components/telepathyClient.js:1045
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Agora %s chámase %s"
|
msgstr "Agora %s chámase %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/components/telepathyClient.js:1149
|
#: ../js/ui/components/telepathyClient.js:1149
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
@@ -838,7 +807,7 @@ msgstr "Convite a %s"
|
|||||||
|
|
||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1157
|
#: ../js/ui/components/telepathyClient.js:1157
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
@@ -857,19 +826,19 @@ msgstr "Rexeitar"
|
|||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1184
|
#: ../js/ui/components/telepathyClient.js:1184
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videochamada de %s"
|
msgstr "Videochamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1187
|
#: ../js/ui/components/telepathyClient.js:1187
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Chamada de %s"
|
msgstr "Chamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun */
|
||||||
#: ../js/ui/components/telepathyClient.js:1201
|
#: ../js/ui/components/telepathyClient.js:1201
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Responder"
|
msgstr "Responder"
|
||||||
@@ -878,13 +847,13 @@ msgstr "Responder"
|
|||||||
#. * 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"
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/components/telepathyClient.js:1222
|
#: ../js/ui/components/telepathyClient.js:1222
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s esta enviándolle %s"
|
msgstr "%s esta enviándolle %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias */
|
||||||
#: ../js/ui/components/telepathyClient.js:1251
|
#: ../js/ui/components/telepathyClient.js:1251
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
@@ -998,7 +967,7 @@ msgid "Internal error"
|
|||||||
msgstr "Erro interno"
|
msgstr "Erro interno"
|
||||||
|
|
||||||
#. 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/components/telepathyClient.js:1393
|
#: ../js/ui/components/telepathyClient.js:1393
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Unable to connect to %s"
|
msgid "Unable to connect to %s"
|
||||||
@@ -1012,7 +981,7 @@ msgstr "Ver conta"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón descoñecida"
|
msgstr "Razón descoñecida"
|
||||||
|
|
||||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Xanelas"
|
msgstr "Xanelas"
|
||||||
|
|
||||||
@@ -1020,8 +989,6 @@ msgstr "Xanelas"
|
|||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Mostrar aplicativos"
|
msgstr "Mostrar aplicativos"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
|
||||||
#. the left of the overview
|
|
||||||
#: ../js/ui/dash.js:445
|
#: ../js/ui/dash.js:445
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Taboleiro"
|
msgstr "Taboleiro"
|
||||||
@@ -1040,91 +1007,91 @@ msgstr "Preferencias de data e hora"
|
|||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. Translators: This is the date format to use when the calendar popup is
|
||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/dateMenu.js:204
|
#: ../js/ui/dateMenu.js:204
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a, %e de %B, %Y"
|
msgstr "%a, %e de %B, %Y"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:66
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Saír da sesión %s"
|
msgstr "Saír da sesión %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:67
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Saír da sesión"
|
msgstr "Saír da sesión"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:67
|
#: ../js/ui/endSessionDialog.js:69
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "Vaise pechar a sesión de %s en %d segundo."
|
msgstr[0] "Vaise pechar a sesión de %s en %d segundo."
|
||||||
msgstr[1] "Vaise pechar a sesión de %s en %d segundos."
|
msgstr[1] "Vaise pechar a sesión de %s en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:72
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "A súa sesión pecharase automaticamente en %d segundo."
|
msgstr[0] "A súa sesión pecharase automaticamente en %d segundo."
|
||||||
msgstr[1] "A súa sesión pecharase automaticamente en %d segundos."
|
msgstr[1] "A súa sesión pecharase automaticamente en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Saír da sesión"
|
msgstr "Saír da sesión"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:86
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:87
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Install Updates & Power Off"
|
msgid "Install Updates & Power Off"
|
||||||
msgstr "Instalar anovacións e apagar"
|
msgstr "Instalar anovacións e apagar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "O sistema apagarase automaticamente en %d segundo."
|
msgstr[0] "O sistema apagarase automaticamente en %d segundo."
|
||||||
msgstr[1] "O sistema apagarase automaticamente en %d segundos."
|
msgstr[1] "O sistema apagarase automaticamente en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Install pending software updates"
|
msgid "Install pending software updates"
|
||||||
msgstr "Instalar anovacións de software pendentes"
|
msgstr "Instalar anovacións de software pendentes"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
|
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:96
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:103
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "O sistema reiniciarase automaticamente en %d segundo."
|
msgstr[0] "O sistema reiniciarase automaticamente en %d segundo."
|
||||||
msgstr[1] "O sistema reiniciarase automaticamente en %d segundos."
|
msgstr[1] "O sistema reiniciarase automaticamente en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:119
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart & Install Updates"
|
msgid "Restart & Install Updates"
|
||||||
msgstr "Reiniciar e instalar actualizacións"
|
msgstr "Reiniciar e instalar actualizacións"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural ""
|
msgid_plural ""
|
||||||
@@ -1136,41 +1103,41 @@ msgstr[1] ""
|
|||||||
"O sistema reiniciarase automaticamente e instalará as actualizacións en %d "
|
"O sistema reiniciarase automaticamente e instalará as actualizacións en %d "
|
||||||
"segundos."
|
"segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart & Install"
|
msgid "Restart & Install"
|
||||||
msgstr "Reiniciar e instalar"
|
msgstr "Reiniciar e instalar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:128
|
#: ../js/ui/endSessionDialog.js:130
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Install & Power Off"
|
msgid "Install & Power Off"
|
||||||
msgstr "Instalar e apagar"
|
msgstr "Instalar e apagar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:131
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Power off after updates are installed"
|
msgid "Power off after updates are installed"
|
||||||
msgstr "Apagar despois de instalar as anovacións"
|
msgstr "Apagar despois de instalar as anovacións"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr "Con enerxía da batería: enchufar antes de instalar anovacións."
|
msgstr "Con enerxía da batería: enchufar antes de instalar anovacións."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr "Algúns aplicativos están ocupados ou teñen traballo sen gardar."
|
msgstr "Algúns aplicativos están ocupados ou teñen traballo sen gardar."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:362
|
#: ../js/ui/endSessionDialog.js:339
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "Hai outros usuarios conectados."
|
msgstr "Hai outros usuarios conectados."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||||
#: ../js/ui/endSessionDialog.js:640
|
#: ../js/ui/endSessionDialog.js:619
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (remoto)"
|
msgstr "%s (remoto)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console
|
#. Translators: Console here refers to a tty like a VT console */
|
||||||
#: ../js/ui/endSessionDialog.js:643
|
#: ../js/ui/endSessionDialog.js:622
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (consola)"
|
msgstr "%s (consola)"
|
||||||
@@ -1184,7 +1151,7 @@ msgstr "Instalar"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
|
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
@@ -1192,7 +1159,7 @@ msgstr "Teclado"
|
|||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Non hai ningunha extensión instalada"
|
msgstr "Non hai ningunha extensión instalada"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID. */
|
||||||
#: ../js/ui/lookingGlass.js:697
|
#: ../js/ui/lookingGlass.js:697
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
@@ -1206,16 +1173,16 @@ msgstr "Ocultar erros"
|
|||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostrar erros"
|
msgstr "Mostrar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
|
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activado"
|
msgstr "Activado"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated
|
#. Translators: this is for a network device that cannot be activated
|
||||||
#. because it's disabled by rfkill (airplane mode)
|
#. because it's disabled by rfkill (airplane mode) */
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
|
||||||
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
@@ -1240,39 +1207,39 @@ msgstr "Ver fonte"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Páxina web"
|
msgstr "Páxina web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1327
|
#: ../js/ui/messageTray.js:1325
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1334
|
#: ../js/ui/messageTray.js:1332
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Retirar"
|
msgstr "Retirar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1631
|
#: ../js/ui/messageTray.js:1629
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacións"
|
msgstr "Notificacións"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1638
|
#: ../js/ui/messageTray.js:1636
|
||||||
msgid "Clear Messages"
|
msgid "Clear Messages"
|
||||||
msgstr "Limpar mensaxes"
|
msgstr "Limpar mensaxes"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1657
|
#: ../js/ui/messageTray.js:1655
|
||||||
msgid "Notification Settings"
|
msgid "Notification Settings"
|
||||||
msgstr "Preferencias das notificacións"
|
msgstr "Preferencias das notificacións"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1710
|
#: ../js/ui/messageTray.js:1708
|
||||||
msgid "Tray Menu"
|
msgid "Tray Menu"
|
||||||
msgstr "Menú da bandexa do sistema"
|
msgstr "Menú da bandexa do sistema"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1934
|
#: ../js/ui/messageTray.js:1925
|
||||||
msgid "No Messages"
|
msgid "No Messages"
|
||||||
msgstr "Non hai mensaxes"
|
msgstr "Non hai mensaxes"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1979
|
#: ../js/ui/messageTray.js:1963
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "Bandexa de mensaxes"
|
msgstr "Bandexa de mensaxes"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2992
|
#: ../js/ui/messageTray.js:2966
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información do sistema"
|
msgstr "Información do sistema"
|
||||||
|
|
||||||
@@ -1299,8 +1266,8 @@ msgstr "Vista xeral"
|
|||||||
#. 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/overview.js:246
|
#: ../js/ui/overview.js:250
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "Escriba para buscar…"
|
msgstr "Escriba para buscar…"
|
||||||
|
|
||||||
@@ -1309,7 +1276,7 @@ msgid "Quit"
|
|||||||
msgstr "Saír"
|
msgstr "Saír"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview". */
|
||||||
#: ../js/ui/panel.js:567
|
#: ../js/ui/panel.js:567
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
@@ -1318,11 +1285,6 @@ msgstr "Actividades"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
|
||||||
#. (for toggle switches containing the English words
|
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
#. switches containing "◯" and "|"). Other values will
|
|
||||||
#. simply result in invisible toggle switches.
|
|
||||||
#: ../js/ui/popupMenu.js:269
|
#: ../js/ui/popupMenu.js:269
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
@@ -1340,7 +1302,7 @@ msgid "Restarting…"
|
|||||||
msgstr "Restimando…"
|
msgstr "Restimando…"
|
||||||
|
|
||||||
#. Translators: This is a time format for a date in
|
#. Translators: This is a time format for a date in
|
||||||
#. long format
|
#. long format */
|
||||||
#: ../js/ui/screenShield.js:88
|
#: ../js/ui/screenShield.js:88
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d de %B"
|
msgstr "%A, %d de %B"
|
||||||
@@ -1360,13 +1322,6 @@ msgstr "Bloquear"
|
|||||||
msgid "GNOME needs to lock the screen"
|
msgid "GNOME needs to lock the screen"
|
||||||
msgstr "GNOME precisa bloquear a pantalla"
|
msgstr "GNOME precisa bloquear a pantalla"
|
||||||
|
|
||||||
#. We could not become modal, so we can't activate the
|
|
||||||
#. screenshield. The user is probably very upset at this
|
|
||||||
#. point, but any application using global grabs is broken
|
|
||||||
#. Just tell him to stop using this app
|
|
||||||
#.
|
|
||||||
#. XXX: another option is to kick the user into the gdm login
|
|
||||||
#. screen, where we're not affected by grabs
|
|
||||||
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
|
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "Non foi posíbel bloquear"
|
msgstr "Non foi posíbel bloquear"
|
||||||
@@ -1375,27 +1330,27 @@ msgstr "Non foi posíbel bloquear"
|
|||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Un aplicativo impediu o bloqueo"
|
msgstr "Un aplicativo impediu o bloqueo"
|
||||||
|
|
||||||
#: ../js/ui/search.js:594
|
#: ../js/ui/search.js:606
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/search.js:596
|
#: ../js/ui/search.js:652
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Sen resultados."
|
msgstr "Sen resultados."
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:25
|
#: ../js/ui/shellEntry.js:27
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "Copiar"
|
msgstr "Copiar"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:30
|
#: ../js/ui/shellEntry.js:32
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "Pegar"
|
msgstr "Pegar"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:97
|
#: ../js/ui/shellEntry.js:99
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "Mostrar texto"
|
msgstr "Mostrar texto"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:99
|
#: ../js/ui/shellEntry.js:101
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Ocultar texto"
|
msgstr "Ocultar texto"
|
||||||
|
|
||||||
@@ -1451,8 +1406,6 @@ msgstr "Contraste alto"
|
|||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
|
||||||
#. so just statically build it with a "Turn Off" menu item.
|
|
||||||
#: ../js/ui/status/bluetooth.js:49
|
#: ../js/ui/status/bluetooth.js:49
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
@@ -1483,27 +1436,23 @@ msgstr "Non conectado"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brillo"
|
msgstr "Brillo"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:547
|
#: ../js/ui/status/keyboard.js:406
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostrar a distribución do teclado"
|
msgstr "Mostrar a distribución do teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:65
|
#: ../js/ui/status/location.js:56
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "Localización"
|
msgstr "Localización"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Desactivar"
|
msgstr "Desactivar"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Privacy Settings"
|
|
||||||
msgstr "Preferencias da privacidade"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
|
||||||
msgid "In Use"
|
msgid "In Use"
|
||||||
msgstr "En uso"
|
msgstr "En uso"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:170
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activar"
|
msgstr "Activar"
|
||||||
|
|
||||||
@@ -1521,7 +1470,7 @@ msgid "Connected"
|
|||||||
msgstr "Conectado"
|
msgstr "Conectado"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||||
#: ../js/ui/status/network.js:463
|
#: ../js/ui/status/network.js:463
|
||||||
msgid "Unmanaged"
|
msgid "Unmanaged"
|
||||||
msgstr "Sen xestionar"
|
msgstr "Sen xestionar"
|
||||||
@@ -1534,19 +1483,19 @@ msgstr "Desconectando…"
|
|||||||
msgid "Connecting"
|
msgid "Connecting"
|
||||||
msgstr "Conectando"
|
msgstr "Conectando"
|
||||||
|
|
||||||
#. 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:474
|
#: ../js/ui/status/network.js:474
|
||||||
msgid "Authentication required"
|
msgid "Authentication required"
|
||||||
msgstr "Requírese autenticación"
|
msgstr "Requírese autenticación"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing */
|
||||||
#: ../js/ui/status/network.js:482
|
#: ../js/ui/status/network.js:482
|
||||||
msgid "Firmware missing"
|
msgid "Firmware missing"
|
||||||
msgstr "Falta o «firmware»"
|
msgstr "Falta o «firmware»"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage */
|
||||||
#: ../js/ui/status/network.js:486
|
#: ../js/ui/status/network.js:486
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Non dispoñíbel"
|
msgstr "Non dispoñíbel"
|
||||||
@@ -1631,7 +1580,7 @@ msgstr "Punto wifi activo"
|
|||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "conectando…"
|
msgstr "conectando…"
|
||||||
|
|
||||||
#. 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:1412
|
#: ../js/ui/status/network.js:1412
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "requírese autenticación"
|
msgstr "requírese autenticación"
|
||||||
@@ -1668,19 +1617,15 @@ msgstr "Preferencias de enerxía"
|
|||||||
msgid "Fully Charged"
|
msgid "Fully Charged"
|
||||||
msgstr "Carga completa"
|
msgstr "Carga completa"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
|
||||||
#. to estimate battery life
|
|
||||||
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||||
msgid "Estimating…"
|
msgid "Estimating…"
|
||||||
msgstr "Estimando…"
|
msgstr "Estimando…"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
|
||||||
#: ../js/ui/status/power.js:86
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d%%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "Faltan %d:%02d (%d%%)"
|
msgstr "Faltan %d:%02d (%d%%)"
|
||||||
|
|
||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
|
||||||
#: ../js/ui/status/power.js:91
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d%%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
@@ -1694,9 +1639,6 @@ msgstr "SAI"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "Batería"
|
msgstr "Batería"
|
||||||
|
|
||||||
#. The menu only appears when airplane mode is on, so just
|
|
||||||
#. statically build it as if it was on, rather than dynamically
|
|
||||||
#. changing the menu contents.
|
|
||||||
#: ../js/ui/status/rfkill.js:83
|
#: ../js/ui/status/rfkill.js:83
|
||||||
msgid "Airplane Mode"
|
msgid "Airplane Mode"
|
||||||
msgstr "Modo avión"
|
msgstr "Modo avión"
|
||||||
@@ -1745,11 +1687,11 @@ msgstr "Iniciar sesión como outro usuario"
|
|||||||
msgid "Unlock Window"
|
msgid "Unlock Window"
|
||||||
msgstr "Desbloquear xanela"
|
msgstr "Desbloquear xanela"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:158
|
#: ../js/ui/viewSelector.js:232
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicativos"
|
msgstr "Aplicativos"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:162
|
#: ../js/ui/viewSelector.js:236
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Buscar"
|
msgstr "Buscar"
|
||||||
|
|
||||||
@@ -1764,7 +1706,7 @@ msgstr "Desexa manter estas preferencias de pantalla?"
|
|||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in lenght,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#.
|
#. */
|
||||||
#: ../js/ui/windowManager.js:84
|
#: ../js/ui/windowManager.js:84
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "Reverter preferencias"
|
msgstr "Reverter preferencias"
|
||||||
@@ -1846,21 +1788,21 @@ msgstr[1] "%u entradas"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons do sistema"
|
msgstr "Sons do sistema"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:383
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
||||||
"sesión"
|
"sesión"
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Listar os modos posíbeis"
|
msgstr "Listar os modos posíbeis"
|
||||||
|
|
||||||
|
|||||||
337
po/gu.po
337
po/gu.po
@@ -9,8 +9,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gu\n"
|
"Project-Id-Version: gu\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
||||||
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2014-10-01 07:39+0000\n"
|
"POT-Creation-Date: 2014-08-26 07:37+0000\n"
|
||||||
"PO-Revision-Date: 2014-10-01 15:51+0530\n"
|
"PO-Revision-Date: 2014-08-26 16:19+0530\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@@ -63,7 +63,7 @@ msgstr "GNOME Shell ઍક્સટેન્શનને રૂપરેખા
|
|||||||
|
|
||||||
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell (wayland compositor)"
|
msgid "GNOME Shell (wayland compositor)"
|
||||||
msgstr "GNOME Shell (વેલૅન્ડ કંપોઝીટર)"
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
@@ -76,10 +76,12 @@ msgid ""
|
|||||||
msgstr "Alt-F2 સંવાદની મદદથી આંતરિક ડિબગીંગ અને મોનિટરીંગ સાધનોને વાપરવા પરવાનગી આપે છે."
|
msgstr "Alt-F2 સંવાદની મદદથી આંતરિક ડિબગીંગ અને મોનિટરીંગ સાધનોને વાપરવા પરવાનગી આપે છે."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||||
|
#| msgid "Uuids of extensions to enable"
|
||||||
msgid "UUIDs of extensions to enable"
|
msgid "UUIDs of extensions to enable"
|
||||||
msgstr "સક્રિય કરવા માટે એક્સટેન્શનનું UUIDs"
|
msgstr "સક્રિય કરવા માટે એક્સટેન્શનનું UUIDs"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||||
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "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. Any extension that wants to be loaded needs to be "
|
#| "which should be loaded. Any extension that wants to be loaded needs to be "
|
||||||
@@ -91,14 +93,14 @@ msgid ""
|
|||||||
"list. You can also manipulate this list with the EnableExtension and "
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
"DisableExtension D-Bus methods on org.gnome.Shell."
|
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"GNOME Shell ઍક્સટેન્શન પાસે UUID ગુણધર્મ છે; આ કી ઍક્સટેન્શનની યાદી કરે છે કે જેને લાવેલ હોવુ "
|
"GNOME Shell ઍક્સટેન્શન પાસે uuid ગુણધર્મ છે; આ કી ઍક્સટેન્શનની યાદી કરે છે કે જેને લાવેલ હોવુ "
|
||||||
"જોઇએ. કોઇપણ ઍક્સટેન્શન કે જેને આ યાદીમાં લાવવાની જરૂર છે. તમે પણ org.gnome.Shell પર "
|
"જોઇએ. કોઇપણ ઍક્સટેન્શન કે જેને આ યાદીમાં લાવવાની જરૂર છે. તમે પણ org.gnome.Shell પર "
|
||||||
"EnableExtension અને DisableExtension DBus પદ્દતિઓ સાથે આ યાદીને કુશળતાપૂર્વક વાપરી "
|
"EnableExtension અને DisableExtension DBus પદ્દતિઓ સાથે આ યાદીને કુશળતાપૂર્વક વાપરી "
|
||||||
"શકો છો."
|
"શકો છો."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||||
msgid "Disables the validation of extension version compatibility"
|
msgid "Disables the validation of extension version compatibility"
|
||||||
msgstr "ઍક્સટેન્શન આવૃત્તિ સુસંગતતાની માન્યતાને નિષ્ક્રિય કરે છે"
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -106,9 +108,6 @@ msgid ""
|
|||||||
"running version. Enabling this option will disable this check and try to "
|
"running version. Enabling this option will disable this check and try to "
|
||||||
"load all extensions regardless of the versions they claim to support."
|
"load all extensions regardless of the versions they claim to support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"GNOME Shell એ ફક્ત ઍક્સટેન્શનને લાવશે કે જે હાલની ચાલતી આવૃત્તિને આધાર આપવા માટે દાવો કરે છે. "
|
|
||||||
"આ વિકલ્પને સક્રિય કરવાનું આ ચકાસણીને નિષ્ક્રિય કરશે અને આવૃત્તિને બાદ કરતા બધા ઍક્સટેન્શનને "
|
|
||||||
"લાવવાનો પ્રયત્ન કરે છે જે તેઓ આધાર આપવા માટે દાવો કરે છે."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
@@ -122,11 +121,11 @@ msgstr "કાર્યક્રમો આ ઓળખકર્તાઓ સાથ
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||||
msgid "App Picker View"
|
msgid "App Picker View"
|
||||||
msgstr "કાર્યક્રમ પસંદકર્તા દૃશ્ય"
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||||
msgid "Index of the currently selected view in the application picker."
|
msgid "Index of the currently selected view in the application picker."
|
||||||
msgstr "કાર્યક્રમ પસંદકર્તામાં હાલમાં પસંદ થયેલ દૃશ્યની અનુક્રમણિકા."
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
@@ -137,10 +136,13 @@ msgid "History for the looking glass dialog"
|
|||||||
msgstr "ગ્લાસ સંવાદને જોવા માટે ઇતિહાસ"
|
msgstr "ગ્લાસ સંવાદને જોવા માટે ઇતિહાસ"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Always show the 'Log out' menuitem in the user menu."
|
||||||
msgid "Always show the 'Log out' menu item in the user menu."
|
msgid "Always show the 'Log out' menu item in the user menu."
|
||||||
msgstr "વપરાશકર્તા મેનુમાં હંમેશા 'બહાર નીકળો' મેનુ વસ્તુને બતાવો."
|
msgstr "હંમેશા વપરાશકર્તા મેનુમાં 'બહાર નીકળો' મેનુવસ્તુને બતાવે છે."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
|
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
|
||||||
#| "single-user, single-session situations."
|
#| "single-user, single-session situations."
|
||||||
@@ -148,8 +150,7 @@ msgid ""
|
|||||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||||
"user, single-session situations."
|
"user, single-session situations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"આ કી એકજ વપરાશકર્તા, એકજ-સત્ર પરિસ્થિતિઓમાં 'બહાર નીકળો' મેનુવસ્તુને આપમેળે છુપાવવા આ કીને "
|
"આ કી એકજ વપરાશકર્તામાં 'બહાર નીકળો' મેનુવસ્તુને આપમેળે છુપાવવા આ કીને ઓવરરાઇડ કરવામાં "
|
||||||
"ઓવરરાઇડ કરવામાં "
|
|
||||||
"આવી છે."
|
"આવી છે."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
@@ -192,12 +193,16 @@ msgid "Keybinding to open the \"Show Applications\" view of the Activities Overv
|
|||||||
msgstr "પ્રવૃત્તિ ઝાંખીનાં \"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ."
|
msgstr "પ્રવૃત્તિ ઝાંખીનાં \"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ"
|
msgstr "\"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "પ્રવૃત્તિ ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ"
|
msgstr "\"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to toggle the visibility of the message tray"
|
msgid "Keybinding to toggle the visibility of the message tray"
|
||||||
@@ -217,7 +222,7 @@ msgstr "સક્રિય સૂચના પર પ્રકાશ નાં
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr "કીબાઇન્ડીંગ કે જે બધી ચાલતી ટ્વીનને અટકાવે છે અને પાછુ લાવે છે, ડિબગીંગ હેતુઓ માટે"
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
@@ -229,15 +234,13 @@ msgstr "વાપરવા માટે કિબોર્ડનો પ્રક
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "વર્તમાન કામ કરવાની જગ્યા માટે સ્વિચર મર્યાદિત કરી છે."
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"જો true હોય તો, ફક્ત કાર્યક્રમો કે જેની પાસે હાલની કાર્ય કરવાની જગ્યા પર વિન્ડો છે તે "
|
|
||||||
"સ્વીચરમાં બતાવેલ છે. નહિંતો, બધા કાર્યક્રમનો સમાવેલ છે."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
@@ -258,8 +261,6 @@ msgid ""
|
|||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"જો true હોય તો, હાલની કાર્ય કરવાની જગ્યામાંથી વિન્ડો સ્વીચરમાં બતાવેલ છે. નહિં તો, બધી "
|
|
||||||
"વિન્ડોને સમાવેલ છે."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
@@ -283,23 +284,24 @@ msgstr "ફક્ત પ્રાથમિક મોનિટર પર કા
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr "માઉસ સ્થિતિમાં ફેરફારો કરવામાં વિલંબ જ્યાં સુધી પોઇંટર ખસેડવાનું બંધ થાય"
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
||||||
msgid "Captive Portal"
|
msgid "Captive Portal"
|
||||||
msgstr "કૅપ્ટીવ પોર્ટલ"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:127
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "ત્યાં %s માટે પસંદગી સંવાદને લાવવામાં ભૂલ હતી:"
|
msgstr "ત્યાં %s માટે પસંદગી સંવાદને લાવવામાં ભૂલ હતી:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:159
|
||||||
|
#| msgid "Configure GNOME Shell Extensions"
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "GNOME Shell ઍક્સટેન્શન"
|
msgstr "GNOME Shell ઍક્સટેન્શન"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
|
||||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||||
#: ../js/ui/status/network.js:915
|
#: ../js/ui/status/network.js:915
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
@@ -320,6 +322,7 @@ msgid "Sign In"
|
|||||||
msgstr "પ્રવેશો"
|
msgstr "પ્રવેશો"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:269
|
#: ../js/gdm/loginDialog.js:269
|
||||||
|
#| msgid "Switch Session"
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "સત્ર પસંદ કરો"
|
msgstr "સત્ર પસંદ કરો"
|
||||||
|
|
||||||
@@ -358,48 +361,52 @@ msgid "Could not parse command:"
|
|||||||
msgstr "આદેશનું પદચ્છેદન કરી શક્યા નથી:"
|
msgstr "આદેશનું પદચ્છેદન કરી શક્યા નથી:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:156
|
#: ../js/misc/util.js:156
|
||||||
#, javascript-format
|
#, fuzzy, javascript-format
|
||||||
|
#| msgid "Execution of '%s' failed:"
|
||||||
msgid "Execution of “%s” failed:"
|
msgid "Execution of “%s” failed:"
|
||||||
msgstr "“%s” ને અમલમાં મૂકવાનુ નિષ્ફળ:"
|
msgstr "'%s' ને અમલમાં મૂકવાનુ નિષ્ફળ:"
|
||||||
|
|
||||||
#: ../js/portalHelper/main.js:85
|
#: ../js/portalHelper/main.js:85
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Authentication Required"
|
||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "વેબ સત્તાધિકરણ દિશામાન"
|
msgstr "સત્તાધિકરણ જરૂરી"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:772
|
#: ../js/ui/appDisplay.js:660
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "વારંવાર વપરાતા કાર્યક્રમો અહિંયા દેખાશે"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:883
|
#: ../js/ui/appDisplay.js:771
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "સામાન્ય"
|
msgstr "સામાન્ય"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:890
|
#: ../js/ui/appDisplay.js:778
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "બધા"
|
msgstr "બધા"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1790
|
#: ../js/ui/appDisplay.js:1650
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "નવી વિન્ડો"
|
msgstr "નવી વિન્ડો"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
|
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "પસંદીદાઓ માંથી દૂર કરો"
|
msgstr "પસંદીદાઓ માંથી દૂર કરો"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1822
|
#: ../js/ui/appDisplay.js:1679
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "પસંદીદાને ઉમેરો"
|
msgstr "પસંદીદાને ઉમેરો"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1831
|
#: ../js/ui/appDisplay.js:1688
|
||||||
|
#| msgid "Show Text"
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "વિગતો બતાવો"
|
msgstr "વિગતો બતાવો"
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:132
|
#: ../js/ui/appFavorites.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s ને તમારી પસંદીદામાં ઉમેરી દેવામાં આવ્યુ છે."
|
msgstr "%s ને તમારી પસંદીદામાં ઉમેરી દેવામાં આવ્યુ છે."
|
||||||
|
|
||||||
#: ../js/ui/appFavorites.js:166
|
#: ../js/ui/appFavorites.js:156
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s ને તમારી પસંદીદામાંથી દૂર કરી દેવામાં આવ્યુ છે."
|
msgstr "%s ને તમારી પસંદીદામાંથી દૂર કરી દેવામાં આવ્યુ છે."
|
||||||
@@ -591,11 +598,11 @@ msgstr "%s સાથે ખોલો"
|
|||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "રદ કરો"
|
msgstr "રદ કરો"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
|
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "પાસવર્ડ:"
|
msgstr "પાસવર્ડ:"
|
||||||
|
|
||||||
#: ../js/ui/components/keyring.js:120
|
#: ../js/ui/components/keyring.js:113
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "ફરીથી પ્રયત્ન કરો:"
|
msgstr "ફરીથી પ્રયત્ન કરો:"
|
||||||
|
|
||||||
@@ -633,11 +640,14 @@ msgid "Authentication required by wireless network"
|
|||||||
msgstr "વાયરલેસ નેટવર્ક દ્દારાસત્તાધિકરણ જરૂરી"
|
msgstr "વાયરલેસ નેટવર્ક દ્દારાસત્તાધિકરણ જરૂરી"
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:319
|
#: ../js/ui/components/networkAgent.js:319
|
||||||
#, javascript-format
|
#, fuzzy, javascript-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "Passwords or encryption keys are required to access the wireless network "
|
||||||
|
#| "'%s'."
|
||||||
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 "પાસવર્ડ અથવા એનક્રિપ્શન કીઓને વાયરલેસ નેટવર્ક “%s” માં પ્રવેશની જરૂર છે."
|
msgstr "પાસવર્ડ અથવા એનક્રિપ્શન કીઓને વાયરલેસ નેટવર્ક '%s' માં પ્રવેશની જરૂર છે."
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:323
|
#: ../js/ui/components/networkAgent.js:323
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
@@ -669,6 +679,7 @@ msgstr "મોબાઇલ બ્રોડબેન્ડ નેટવર્ક
|
|||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:346
|
#: ../js/ui/components/networkAgent.js:346
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "A password is required to connect to '%s'."
|
||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "પાસવર્ડ “%s” સાથે જોડાવા માટે જરૂરી છે."
|
msgstr "પાસવર્ડ “%s” સાથે જોડાવા માટે જરૂરી છે."
|
||||||
|
|
||||||
@@ -724,12 +735,14 @@ msgstr "%H∶%M"
|
|||||||
#. Translators: this is the word "Yesterday" followed by a
|
#. Translators: this is the word "Yesterday" followed by a
|
||||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:960
|
#: ../js/ui/components/telepathyClient.js:960
|
||||||
|
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
|
||||||
msgid "Yesterday, %H∶%M"
|
msgid "Yesterday, %H∶%M"
|
||||||
msgstr "ગઇ કાલે, %H:%M"
|
msgstr "ગઇ કાલે, %H:%M"
|
||||||
|
|
||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||||
#: ../js/ui/components/telepathyClient.js:967
|
#: ../js/ui/components/telepathyClient.js:967
|
||||||
|
#| msgid "%A, %B %d"
|
||||||
msgid "%A, %H∶%M"
|
msgid "%A, %H∶%M"
|
||||||
msgstr "%A, %H∶%M"
|
msgstr "%A, %H∶%M"
|
||||||
|
|
||||||
@@ -749,6 +762,8 @@ msgstr "%B %d %Y, %H∶%M"
|
|||||||
|
|
||||||
#. Translators: Time in 24h format */
|
#. Translators: Time in 24h format */
|
||||||
#: ../js/ui/components/telepathyClient.js:986
|
#: ../js/ui/components/telepathyClient.js:986
|
||||||
|
#| msgctxt "event list time"
|
||||||
|
#| msgid "%l:%M %p"
|
||||||
msgid "%l∶%M %p"
|
msgid "%l∶%M %p"
|
||||||
msgstr "%l∶%M %p"
|
msgstr "%l∶%M %p"
|
||||||
|
|
||||||
@@ -761,6 +776,7 @@ msgstr "ગઈકાલે ∶%l:%M %p"
|
|||||||
#. Translators: this is the week day name followed by a time
|
#. Translators: this is the week day name followed by a time
|
||||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1000
|
#: ../js/ui/components/telepathyClient.js:1000
|
||||||
|
#| msgid "%a %l:%M %p"
|
||||||
msgid "%A, %l∶%M %p"
|
msgid "%A, %l∶%M %p"
|
||||||
msgstr "%A, %l∶%M %p"
|
msgstr "%A, %l∶%M %p"
|
||||||
|
|
||||||
@@ -768,6 +784,7 @@ msgstr "%A, %l∶%M %p"
|
|||||||
#. followed by a time string in 12h format.
|
#. followed by a time string in 12h format.
|
||||||
#. i.e. "May 25, 2:30 pm" */
|
#. i.e. "May 25, 2:30 pm" */
|
||||||
#: ../js/ui/components/telepathyClient.js:1007
|
#: ../js/ui/components/telepathyClient.js:1007
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d, %l∶%M %p"
|
msgid "%B %d, %l∶%M %p"
|
||||||
msgstr "%B %d, %l∶%M %p"
|
msgstr "%B %d, %l∶%M %p"
|
||||||
|
|
||||||
@@ -775,6 +792,7 @@ msgstr "%B %d, %l∶%M %p"
|
|||||||
#. number followed by a time string in 12h format.
|
#. number followed by a time string in 12h format.
|
||||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||||
#: ../js/ui/components/telepathyClient.js:1013
|
#: ../js/ui/components/telepathyClient.js:1013
|
||||||
|
#| msgid "%a %b %e, %l:%M %p"
|
||||||
msgid "%B %d %Y, %l∶%M %p"
|
msgid "%B %d %Y, %l∶%M %p"
|
||||||
msgstr "%B %d %Y, %l∶%M %p"
|
msgstr "%B %d %Y, %l∶%M %p"
|
||||||
|
|
||||||
@@ -961,7 +979,7 @@ msgstr "ખાતામાં જુઓ"
|
|||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "અજ્ઞાત કારણ"
|
msgstr "અજ્ઞાત કારણ"
|
||||||
|
|
||||||
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
|
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "વિન્ડો"
|
msgstr "વિન્ડો"
|
||||||
|
|
||||||
@@ -992,129 +1010,132 @@ msgstr "તારીખ અને સમય સુયોજનો"
|
|||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %B %e, %Y"
|
msgstr "%A %B %e, %Y"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64
|
#: ../js/ui/endSessionDialog.js:66
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "%s માંથી બહાર નીકળો"
|
msgstr "%s માંથી બહાર નીકળો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:67
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "બહાર નીકળો"
|
msgstr "બહાર નીકળો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:67
|
#: ../js/ui/endSessionDialog.js:69
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s એ %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
|
msgstr[0] "%s એ %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
|
||||||
msgstr[1] "%s એ %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
|
msgstr[1] "%s એ %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:72
|
#: ../js/ui/endSessionDialog.js:74
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "તમે %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
|
msgstr[0] "તમે %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
|
||||||
msgstr[1] "તમે %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
|
msgstr[1] "તમે %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:80
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "બહાર નીકળો"
|
msgstr "બહાર નીકળો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:86
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "પાવર બંધ"
|
msgstr "પાવર બંધ"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Install Updates & Restart"
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Install Updates & Power Off"
|
msgid "Install Updates & Power Off"
|
||||||
msgstr "સુધારા સ્થાપિત કરો અને પાવર બંધ કરો"
|
msgstr "સુધારા સ્થાપિત કરો અને પુન:શરૂ કરો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
|
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
|
||||||
msgstr[1] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
|
msgstr[1] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:91
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Install pending software updates"
|
msgid "Install pending software updates"
|
||||||
msgstr "બાકી રહેલા સોફ્ટવેર સુધારાને સ્થાપિત કરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
|
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "પુન:શરૂ કરો"
|
msgstr "પુન:શરૂ કરો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:96
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "પાવર બંધ"
|
msgstr "પાવર બંધ"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:103
|
#: ../js/ui/endSessionDialog.js:105
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "પુન:શરૂ કરો"
|
msgstr "પુન:શરૂ કરો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:105
|
#: ../js/ui/endSessionDialog.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે."
|
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે."
|
||||||
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે."
|
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:119
|
#: ../js/ui/endSessionDialog.js:121
|
||||||
|
#| msgid "Install Updates & Restart"
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart & Install Updates"
|
msgid "Restart & Install Updates"
|
||||||
msgstr "સુધારા સ્થાપિત કરો અને પુન:શરૂ કરો"
|
msgstr "સુધારા સ્થાપિત કરો અને પુન:શરૂ કરો"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:121
|
#: ../js/ui/endSessionDialog.js:123
|
||||||
#, javascript-format
|
#, fuzzy, javascript-format
|
||||||
#| msgid "The system will restart automatically in %d second."
|
#| msgid "The system will restart automatically in %d second."
|
||||||
#| msgid_plural "The system will restart automatically in %d seconds."
|
#| msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgid "The system will automatically restart and install updates in %d second."
|
msgid "The system will automatically restart and install updates in %d second."
|
||||||
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
||||||
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે."
|
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે."
|
||||||
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે."
|
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:127
|
|
||||||
msgctxt "button"
|
|
||||||
msgid "Restart & Install"
|
|
||||||
msgstr "પુન:શરૂ કરો અને સ્થાપિત કરો"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:128
|
|
||||||
msgctxt "button"
|
|
||||||
msgid "Install & Power Off"
|
|
||||||
msgstr "સ્થાપિત કરો અને પાવર બંધ "
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:129
|
#: ../js/ui/endSessionDialog.js:129
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Restart & Install"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:130
|
||||||
|
msgctxt "button"
|
||||||
|
msgid "Install & Power Off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:131
|
||||||
msgctxt "checkbox"
|
msgctxt "checkbox"
|
||||||
msgid "Power off after updates are installed"
|
msgid "Power off after updates are installed"
|
||||||
msgstr "સુધારા સ્થાપિત થાય પછી પાવર બંધ કરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:338
|
#: ../js/ui/endSessionDialog.js:315
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr "બેટરી પાવર પર ચાલી રહ્યુ છે: મહેરબાની કરીને સુધારા સ્થાપિત કરતા પહેલાં પ્લગઇન કરો."
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:355
|
#: ../js/ui/endSessionDialog.js:332
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr "અમુક કાર્યક્રમો વ્યસ્ત છે અથવા તેની પાસે અસંગ્રહેલ કામ છે."
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:362
|
#: ../js/ui/endSessionDialog.js:339
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "બીજા વપરાશકર્તાઓ પ્રવેશેલ છે."
|
msgstr "બીજા વપરાશકર્તાઓ પ્રવેશેલ છે."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||||
#: ../js/ui/endSessionDialog.js:640
|
#: ../js/ui/endSessionDialog.js:619
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (દૂરસ્થ)"
|
msgstr "%s (દૂરસ્થ)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console */
|
#. Translators: Console here refers to a tty like a VT console */
|
||||||
#: ../js/ui/endSessionDialog.js:643
|
#: ../js/ui/endSessionDialog.js:622
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (કન્સોલ)"
|
msgstr "%s (કન્સોલ)"
|
||||||
@@ -1124,11 +1145,12 @@ msgid "Install"
|
|||||||
msgstr "સ્થાપિત કરો"
|
msgstr "સ્થાપિત કરો"
|
||||||
|
|
||||||
#: ../js/ui/extensionDownloader.js:204
|
#: ../js/ui/extensionDownloader.js:204
|
||||||
#, javascript-format
|
#, fuzzy, javascript-format
|
||||||
|
#| msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
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:700 ../js/ui/status/keyboard.js:523
|
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "કિબોર્ડ"
|
msgstr "કિબોર્ડ"
|
||||||
|
|
||||||
@@ -1150,8 +1172,8 @@ msgstr "ભૂલો છુપાડો"
|
|||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "ભૂલો બતાવો"
|
msgstr "ભૂલો બતાવો"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
|
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
|
||||||
#: ../js/ui/status/location.js:176
|
#: ../js/ui/status/location.js:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "સક્રિય"
|
msgstr "સક્રિય"
|
||||||
|
|
||||||
@@ -1159,7 +1181,7 @@ msgstr "સક્રિય"
|
|||||||
#. because it's disabled by rfkill (airplane mode) */
|
#. because it's disabled by rfkill (airplane mode) */
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
|
||||||
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "નિષ્ક્રિય"
|
msgstr "નિષ્ક્રિય"
|
||||||
@@ -1184,39 +1206,39 @@ msgstr "સ્ત્રોત દર્શાવો"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "વેબ પાનું"
|
msgstr "વેબ પાનું"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1327
|
#: ../js/ui/messageTray.js:1325
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "ખોલો"
|
msgstr "ખોલો"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1334
|
#: ../js/ui/messageTray.js:1332
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "દૂર કરો"
|
msgstr "દૂર કરો"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1631
|
#: ../js/ui/messageTray.js:1629
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "સૂચનાઓ"
|
msgstr "સૂચનાઓ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1638
|
#: ../js/ui/messageTray.js:1636
|
||||||
msgid "Clear Messages"
|
msgid "Clear Messages"
|
||||||
msgstr "સંદેશા સાફ કરો"
|
msgstr "સંદેશા સાફ કરો"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1657
|
#: ../js/ui/messageTray.js:1655
|
||||||
msgid "Notification Settings"
|
msgid "Notification Settings"
|
||||||
msgstr "સૂચના સુયોજનો"
|
msgstr "સૂચના સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1710
|
#: ../js/ui/messageTray.js:1708
|
||||||
msgid "Tray Menu"
|
msgid "Tray Menu"
|
||||||
msgstr "ટ્રે મેનુ"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1934
|
#: ../js/ui/messageTray.js:1925
|
||||||
msgid "No Messages"
|
msgid "No Messages"
|
||||||
msgstr "સંદેશા નથી"
|
msgstr "સંદેશા નથી"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1979
|
#: ../js/ui/messageTray.js:1963
|
||||||
msgid "Message Tray"
|
msgid "Message Tray"
|
||||||
msgstr "સંદેશો ટ્રે"
|
msgstr "સંદેશો ટ્રે"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2992
|
#: ../js/ui/messageTray.js:2966
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "સિસ્ટમ જાણકારી"
|
msgstr "સિસ્ટમ જાણકારી"
|
||||||
|
|
||||||
@@ -1244,7 +1266,7 @@ 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/overview.js:246
|
#: ../js/ui/overview.js:250
|
||||||
msgid "Type to search…"
|
msgid "Type to search…"
|
||||||
msgstr "શોધવા માટે ટાઇપ કરો..."
|
msgstr "શોધવા માટે ટાઇપ કરો..."
|
||||||
|
|
||||||
@@ -1275,6 +1297,7 @@ msgid "Close"
|
|||||||
msgstr "બંધ કરો"
|
msgstr "બંધ કરો"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:277
|
#: ../js/ui/runDialog.js:277
|
||||||
|
#| msgid "Estimating…"
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "પુન:શરૂ કરી રહ્યા છે…"
|
msgstr "પુન:શરૂ કરી રહ્યા છે…"
|
||||||
|
|
||||||
@@ -1307,27 +1330,27 @@ msgstr "તાળુ મારવામાં અસમર્થ"
|
|||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "તાળુ કાર્યક્રમ દ્દારા બ્લોક થયેલ છે"
|
msgstr "તાળુ કાર્યક્રમ દ્દારા બ્લોક થયેલ છે"
|
||||||
|
|
||||||
#: ../js/ui/search.js:607
|
#: ../js/ui/search.js:606
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "શોધી રહ્યા છે..."
|
msgstr "શોધી રહ્યા છે..."
|
||||||
|
|
||||||
#: ../js/ui/search.js:609
|
#: ../js/ui/search.js:652
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "પરિણામો નથી."
|
msgstr "પરિણામો નથી."
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:25
|
#: ../js/ui/shellEntry.js:27
|
||||||
msgid "Copy"
|
msgid "Copy"
|
||||||
msgstr "નકલ કરો"
|
msgstr "નકલ કરો"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:30
|
#: ../js/ui/shellEntry.js:32
|
||||||
msgid "Paste"
|
msgid "Paste"
|
||||||
msgstr "ચોંટાડો"
|
msgstr "ચોંટાડો"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:97
|
#: ../js/ui/shellEntry.js:99
|
||||||
msgid "Show Text"
|
msgid "Show Text"
|
||||||
msgstr "લખાણ બતાવો"
|
msgstr "લખાણ બતાવો"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:99
|
#: ../js/ui/shellEntry.js:101
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "લખાણ છુપાડો"
|
msgstr "લખાણ છુપાડો"
|
||||||
|
|
||||||
@@ -1399,13 +1422,15 @@ msgid "Bluetooth Settings"
|
|||||||
msgstr "બ્લુટુથ સુયોજનો"
|
msgstr "બ્લુટુથ સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:104
|
#: ../js/ui/status/bluetooth.js:104
|
||||||
#, javascript-format
|
#, fuzzy, javascript-format
|
||||||
|
#| msgid "Connected (private)"
|
||||||
msgid "%d Connected Device"
|
msgid "%d Connected Device"
|
||||||
msgid_plural "%d Connected Devices"
|
msgid_plural "%d Connected Devices"
|
||||||
msgstr[0] "%d જોડાયેલ ઉપકરણ"
|
msgstr[0] "જોડાયેલ (ખાનગી)"
|
||||||
msgstr[1] "%d જોડાયેલ ઉપકરણો"
|
msgstr[1] "જોડાયેલ (ખાનગી)"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
|
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
|
||||||
|
#| msgid "Connect"
|
||||||
msgid "Not Connected"
|
msgid "Not Connected"
|
||||||
msgstr "જોડાયેલ નથી"
|
msgstr "જોડાયેલ નથી"
|
||||||
|
|
||||||
@@ -1413,28 +1438,26 @@ msgstr "જોડાયેલ નથી"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "તેજસ્વિતા"
|
msgstr "તેજસ્વિતા"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:547
|
#: ../js/ui/status/keyboard.js:406
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "કીબોર્ડ લેઆઉટને બતાવો"
|
msgstr "કીબોર્ડ લેઆઉટને બતાવો"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:65
|
#: ../js/ui/status/location.js:56
|
||||||
|
#| msgid "Notifications"
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "સ્થાન"
|
msgstr "સ્થાન"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
|
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
|
||||||
|
#| msgid "Disabled"
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "નિષ્ક્રિય"
|
msgstr "નિષ્ક્રિય"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:73
|
#: ../js/ui/status/location.js:166
|
||||||
#| msgid "Power Settings"
|
|
||||||
msgid "Privacy Settings"
|
|
||||||
msgstr "ખાનગી સુયોજનો"
|
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:176
|
|
||||||
msgid "In Use"
|
msgid "In Use"
|
||||||
msgstr "વપરાશમાં"
|
msgstr "વપરાશમાં"
|
||||||
|
|
||||||
#: ../js/ui/status/location.js:180
|
#: ../js/ui/status/location.js:170
|
||||||
|
#| msgid "Enabled"
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "સક્રિય"
|
msgstr "સક્રિય"
|
||||||
|
|
||||||
@@ -1444,35 +1467,42 @@ msgstr "<અજ્ઞાત>"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
|
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
|
||||||
#: ../js/ui/status/network.js:1511
|
#: ../js/ui/status/network.js:1511
|
||||||
|
#| msgid "Offline"
|
||||||
msgid "Off"
|
msgid "Off"
|
||||||
msgstr "બંધ"
|
msgstr "બંધ"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:459
|
#: ../js/ui/status/network.js:459
|
||||||
|
#| msgid "Connect"
|
||||||
msgid "Connected"
|
msgid "Connected"
|
||||||
msgstr "જોડાયેલ"
|
msgstr "જોડાયેલ"
|
||||||
|
|
||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||||
#: ../js/ui/status/network.js:463
|
#: ../js/ui/status/network.js:463
|
||||||
|
#| msgid "unmanaged"
|
||||||
msgid "Unmanaged"
|
msgid "Unmanaged"
|
||||||
msgstr "સંચાલિત થયેલ નથી"
|
msgstr "સંચાલિત થયેલ નથી"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:465
|
#: ../js/ui/status/network.js:465
|
||||||
|
#| msgid "disconnecting..."
|
||||||
msgid "Disconnecting"
|
msgid "Disconnecting"
|
||||||
msgstr "જોડાઇ તૂટી રહ્યુ છે"
|
msgstr "જોડાઇ તૂટી રહ્યુ છે"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
|
||||||
|
#| msgid "Connection"
|
||||||
msgid "Connecting"
|
msgid "Connecting"
|
||||||
msgstr "જોડાઇ રહ્યા છે"
|
msgstr "જોડાઇ રહ્યા છે"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password */
|
#. Translators: this is for network connections that require some kind of key or password */
|
||||||
#: ../js/ui/status/network.js:474
|
#: ../js/ui/status/network.js:474
|
||||||
|
#| msgid "authentication required"
|
||||||
msgid "Authentication required"
|
msgid "Authentication required"
|
||||||
msgstr "સત્તાધિકરણ જરૂરી"
|
msgstr "સત્તાધિકરણ જરૂરી"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing */
|
#. module, which is missing */
|
||||||
#: ../js/ui/status/network.js:482
|
#: ../js/ui/status/network.js:482
|
||||||
|
#| msgid "firmware missing"
|
||||||
msgid "Firmware missing"
|
msgid "Firmware missing"
|
||||||
msgstr "ફર્મવેર ગેરહાજર"
|
msgstr "ફર્મવેર ગેરહાજર"
|
||||||
|
|
||||||
@@ -1487,32 +1517,36 @@ msgid "Connection failed"
|
|||||||
msgstr "જોડાણ નિષ્ફળ"
|
msgstr "જોડાણ નિષ્ફળ"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:504
|
#: ../js/ui/status/network.js:504
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Settings"
|
||||||
msgid "Wired Settings"
|
msgid "Wired Settings"
|
||||||
msgstr "વાયર થયેલ સુયોજનો"
|
msgstr "સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624
|
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624
|
||||||
|
#| msgid "Mobile broadband"
|
||||||
msgid "Mobile Broadband Settings"
|
msgid "Mobile Broadband Settings"
|
||||||
msgstr "મોબાઇલ બ્રોડબેન્ડ સુયોજનો"
|
msgstr "મોબાઇલ બ્રોડબેન્ડ સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
|
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
|
||||||
|
#| msgid "hardware disabled"
|
||||||
msgid "Hardware Disabled"
|
msgid "Hardware Disabled"
|
||||||
msgstr "હાર્ડવેર નિષ્ક્રિય"
|
msgstr "હાર્ડવેર નિષ્ક્રિય"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:632
|
#: ../js/ui/status/network.js:632
|
||||||
msgid "Use as Internet connection"
|
msgid "Use as Internet connection"
|
||||||
msgstr "ઇન્ટરનેટ જોડાણ તરીકે વાપરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:813
|
#: ../js/ui/status/network.js:813
|
||||||
msgid "Airplane Mode is On"
|
msgid "Airplane Mode is On"
|
||||||
msgstr "ઍરપ્લેન સ્થિતિ ચાલુ છે"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:814
|
#: ../js/ui/status/network.js:814
|
||||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||||
msgstr "Wi-Fi નિષ્ક્રિય થયેલ છે જ્યારે ઍરપ્લેન સ્થિતિ ચાલુ હોય."
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:815
|
#: ../js/ui/status/network.js:815
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
msgstr "ઍરપ્લેન સ્થિતિને બંધ કરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:824
|
#: ../js/ui/status/network.js:824
|
||||||
msgid "Wi-Fi is Off"
|
msgid "Wi-Fi is Off"
|
||||||
@@ -1520,33 +1554,38 @@ msgstr "Wi-Fi બંધ છે"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:825
|
#: ../js/ui/status/network.js:825
|
||||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||||
msgstr "નેટવર્કમાં જોડાવા માટે ક્રમમાં Wi-Fi ને ચાલુ કરવાની જરૂર છે."
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:826
|
#: ../js/ui/status/network.js:826
|
||||||
msgid "Turn On Wi-Fi"
|
msgid "Turn On Wi-Fi"
|
||||||
msgstr "Wi-Fi ચાલુ કરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:851
|
#: ../js/ui/status/network.js:851
|
||||||
|
#| msgid "Network"
|
||||||
msgid "Wi-Fi Networks"
|
msgid "Wi-Fi Networks"
|
||||||
msgstr "Wi-Fi નેટવર્ક"
|
msgstr "Wi-Fi નેટવર્ક"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:853
|
#: ../js/ui/status/network.js:853
|
||||||
|
#| msgid "Enable networking"
|
||||||
msgid "Select a network"
|
msgid "Select a network"
|
||||||
msgstr "નેટવર્ક પસંદ કરો"
|
msgstr "નેટવર્ક પસંદ કરો"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:882
|
#: ../js/ui/status/network.js:882
|
||||||
|
#| msgid "Network"
|
||||||
msgid "No Networks"
|
msgid "No Networks"
|
||||||
msgstr "નેટવર્ક નથી"
|
msgstr "નેટવર્ક નથી"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
|
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
|
||||||
msgid "Use hardware switch to turn off"
|
msgid "Use hardware switch to turn off"
|
||||||
msgstr "બંધ કરવા માટે હાર્ડવેર સ્વીચને વાપરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1173
|
#: ../js/ui/status/network.js:1173
|
||||||
|
#| msgid "Network"
|
||||||
msgid "Select Network"
|
msgid "Select Network"
|
||||||
msgstr "નેટવર્ક પસંદ કરો"
|
msgstr "નેટવર્ક પસંદ કરો"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1179
|
#: ../js/ui/status/network.js:1179
|
||||||
|
#| msgid "Settings"
|
||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Wi-Fi સુયોજનો"
|
msgstr "Wi-Fi સુયોજનો"
|
||||||
|
|
||||||
@@ -1556,7 +1595,7 @@ msgstr "ચાલુ કરો"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:1298
|
#: ../js/ui/status/network.js:1298
|
||||||
msgid "Hotspot Active"
|
msgid "Hotspot Active"
|
||||||
msgstr "હૉટસ્પોટ સક્રિય"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1409
|
#: ../js/ui/status/network.js:1409
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
@@ -1576,6 +1615,7 @@ msgid "Network Settings"
|
|||||||
msgstr "નેટવર્ક સુયોજનો"
|
msgstr "નેટવર્ક સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1482
|
#: ../js/ui/status/network.js:1482
|
||||||
|
#| msgid "Settings"
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "VPN સુયોજનો"
|
msgstr "VPN સુયોજનો"
|
||||||
|
|
||||||
@@ -1606,12 +1646,12 @@ msgstr "અંદાજ કરી રહ્યા છે..."
|
|||||||
#: ../js/ui/status/power.js:86
|
#: ../js/ui/status/power.js:86
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Remaining (%d%%)"
|
msgid "%d∶%02d Remaining (%d%%)"
|
||||||
msgstr "%d∶%02d બાકી રહેલ છે (%d%%)"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:91
|
#: ../js/ui/status/power.js:91
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d%%)"
|
msgid "%d∶%02d Until Full (%d%%)"
|
||||||
msgstr "%d∶%02d જ્યાં સુધી સંપૂર્ણ થાય (%d%%)"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:119
|
#: ../js/ui/status/power.js:119
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
@@ -1623,9 +1663,10 @@ msgstr "બેટરી"
|
|||||||
|
|
||||||
#: ../js/ui/status/rfkill.js:83
|
#: ../js/ui/status/rfkill.js:83
|
||||||
msgid "Airplane Mode"
|
msgid "Airplane Mode"
|
||||||
msgstr "ઍરપ્લેન સ્થિતિ"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/rfkill.js:85
|
#: ../js/ui/status/rfkill.js:85
|
||||||
|
#| msgid "Open"
|
||||||
msgid "On"
|
msgid "On"
|
||||||
msgstr "ચાલુ"
|
msgstr "ચાલુ"
|
||||||
|
|
||||||
@@ -1639,7 +1680,7 @@ msgstr "બહાર નીકળો"
|
|||||||
|
|
||||||
#: ../js/ui/status/system.js:341
|
#: ../js/ui/status/system.js:341
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "દિશા તાળુ"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:349
|
#: ../js/ui/status/system.js:349
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
@@ -1669,40 +1710,43 @@ msgstr "બીજા વપરાશકર્તા તરીકે પ્રવ
|
|||||||
msgid "Unlock Window"
|
msgid "Unlock Window"
|
||||||
msgstr "વિન્ડોનું તાળુ ખોલો"
|
msgstr "વિન્ડોનું તાળુ ખોલો"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:158
|
#: ../js/ui/viewSelector.js:232
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "કાર્યક્રમો"
|
msgstr "કાર્યક્રમો"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:162
|
#: ../js/ui/viewSelector.js:236
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "શોધો"
|
msgstr "શોધો"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:19
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
|
#| msgid "'%s' is ready"
|
||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "“%s” તૈયાર છે"
|
msgstr "“%s” તૈયાર છે"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:65
|
#: ../js/ui/windowManager.js:65
|
||||||
msgid "Do you want to keep these display settings?"
|
msgid "Do you want to keep these display settings?"
|
||||||
msgstr "શું તમને આ દર્શાવ સુયોજનોને રાખવા માંગો છો?ે"
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in lenght,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/windowManager.js:84
|
#: ../js/ui/windowManager.js:84
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Power Settings"
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "સુયોજનોને પાછા લાવો"
|
msgstr "પાવર સુયોજનો"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:88
|
#: ../js/ui/windowManager.js:88
|
||||||
msgid "Keep Changes"
|
msgid "Keep Changes"
|
||||||
msgstr "ફેરફારો કરો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:107
|
#: ../js/ui/windowManager.js:107
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Settings changes will revert in %d second"
|
msgid "Settings changes will revert in %d second"
|
||||||
msgid_plural "Settings changes will revert in %d seconds"
|
msgid_plural "Settings changes will revert in %d seconds"
|
||||||
msgstr[0] "સુયોજન ફેરફારો એ %d સેકંડમાં પાછા આવશે"
|
msgstr[0] ""
|
||||||
msgstr[1] "સુયોજન ફેરફારો એ %d સેકંડોમાં પાછા આવશે"
|
msgstr[1] ""
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:34
|
#: ../js/ui/windowMenu.js:34
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
@@ -1726,7 +1770,7 @@ msgstr "માપ બદલો"
|
|||||||
|
|
||||||
#: ../js/ui/windowMenu.js:65
|
#: ../js/ui/windowMenu.js:65
|
||||||
msgid "Move Titlebar Onscreen"
|
msgid "Move Titlebar Onscreen"
|
||||||
msgstr "શીર્ષકપટ્ટી ઓનસ્ક્રીનને ખસેડો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:70
|
#: ../js/ui/windowMenu.js:70
|
||||||
msgid "Always on Top"
|
msgid "Always on Top"
|
||||||
@@ -1734,15 +1778,15 @@ msgstr "હંમેશા ટોચ ઉપર"
|
|||||||
|
|
||||||
#: ../js/ui/windowMenu.js:89
|
#: ../js/ui/windowMenu.js:89
|
||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "હંમેશા દૃશ્ય કામ કરવાની જગ્યા પર"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:106
|
#: ../js/ui/windowMenu.js:106
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "ઉપર કામ કરવાની જગ્યા પર ખસેડો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:111
|
#: ../js/ui/windowMenu.js:111
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "નીચે કામ કરવાની જગ્યાએ ખસેડો"
|
msgstr ""
|
||||||
|
|
||||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
@@ -1770,24 +1814,25 @@ msgstr[1] "%u ઇનપુટો"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "સિસ્ટમ અવાજો"
|
msgstr "સિસ્ટમ અવાજો"
|
||||||
|
|
||||||
#: ../src/main.c:373
|
#: ../src/main.c:371
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "ા"
|
msgstr "ા"
|
||||||
|
|
||||||
#: ../src/main.c:379
|
#: ../src/main.c:377
|
||||||
msgid "Mode used by GDM for login screen"
|
msgid "Mode used by GDM for login screen"
|
||||||
msgstr "લૉગિન સ્ક્રીન માટે GDM દ્દારા વાપરેલ સ્થિતિ"
|
msgstr "લૉગિન સ્ક્રીન માટે GDM દ્દારા વાપરેલ સ્થિતિ"
|
||||||
|
|
||||||
#: ../src/main.c:385
|
#: ../src/main.c:383
|
||||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||||
msgstr "ખાસ સ્થિતિને વાપરો, દા.ત. પ્રવેશ સ્ક્રીન માટે \"gdm\""
|
msgstr "ખાસ સ્થિતિને વાપરો, દા.ત. પ્રવેશ સ્ક્રીન માટે \"gdm\""
|
||||||
|
|
||||||
#: ../src/main.c:391
|
#: ../src/main.c:389
|
||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "શક્ય સ્થિતિઓની યાદી કરો"
|
msgstr "શક્ય સ્થિતિઓની યાદી કરો"
|
||||||
|
|
||||||
#: ../src/shell-app.c:666
|
#: ../src/shell-app.c:666
|
||||||
#, c-format
|
#, c-format
|
||||||
|
#| msgid "Failed to launch '%s'"
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "“%s” ને શરૂ કરવામાં નિષ્ફળતા"
|
msgstr "“%s” ને શરૂ કરવામાં નિષ્ફળતા"
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user