Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
07c39959d9 | ||
![]() |
23d1d18619 | ||
![]() |
23bf5db80c | ||
![]() |
550e9973b7 | ||
![]() |
e4e6b26e15 | ||
![]() |
9551e1c2f5 | ||
![]() |
a70ea12be8 | ||
![]() |
fb5a3a53fa | ||
![]() |
30eac56691 | ||
![]() |
cb6f3a0836 | ||
![]() |
8e579024b1 | ||
![]() |
41c70293df | ||
![]() |
4b015903bc |
7
.gitignore
vendored
@@ -3,11 +3,11 @@
|
||||
*.o
|
||||
.deps
|
||||
.libs
|
||||
ABOUT-NLS
|
||||
ChangeLog
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
NEWS
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.h
|
||||
@@ -30,13 +30,8 @@ m4/
|
||||
omf.make
|
||||
po/*.gmo
|
||||
po/gnome-shell.pot
|
||||
po/*.header
|
||||
po/*.sed
|
||||
po/*.sin
|
||||
po/Makefile.in.in
|
||||
po/Makevars.template
|
||||
po/POTFILES
|
||||
po/Rules-quot
|
||||
po/stamp-it
|
||||
scripts/launcher.pyc
|
||||
src/*.gir
|
||||
|
@@ -3,5 +3,5 @@ E-mail: otaylor@redhat.com
|
||||
Userid: otaylor
|
||||
|
||||
Colin Walters
|
||||
E-mail: walters@verbum.org
|
||||
E-mail: walters@redhat.com
|
||||
Userid: walters
|
||||
|
263
NEWS
@@ -1,263 +0,0 @@
|
||||
3.1.2
|
||||
=====
|
||||
* Fix problem with "user theme extension" breaking the CSS for other
|
||||
extensions [Giovanni; #650971]
|
||||
* Telepathy IM framework integration
|
||||
- Switch to using telepathy-glib rather than talking to
|
||||
Telepathy via D-Bus [Guillaume, Jasper; #645585, #649633, #651138, #651227]
|
||||
- Acknowledge messages when the user clicks on them [Guillaume, #647893]
|
||||
- Fix problem with telepathy icon blinking for incoming messages
|
||||
even though the user has been notified of them [Guillaume; #643594]
|
||||
* Networking
|
||||
- keep wirelesss networks in predictable order [Giovanni; #646580, #652313]
|
||||
- Show unmanaged devices in the menu [Giovanni; #646946]
|
||||
- Fix overflow when too many VPN connections [Giovanni; #651602]
|
||||
* Bluetooth
|
||||
- Show "hardware disabled" when disabled by rfkill [Giovanni; #648048]
|
||||
- Fix bug updating status of devices [Giovanni; #647565]
|
||||
* LookingGlass console:
|
||||
- Add a "Memory" tab [Colin; #650692]
|
||||
- Make escape work from any page [Dan Winship; #647303]
|
||||
- Provide a way to refer to panel items as, e.g.,
|
||||
Main.panel._activities [Dan Winship; #646915]
|
||||
* User menu
|
||||
- Fix problem with suspend menu option locking the screen even when the user
|
||||
disabled that. [Florian; #652327]
|
||||
- Hide "power off..." option if shutdown is disabled via PolicyKit
|
||||
[Florian; #652038]
|
||||
* Track changes to WM_CLASS (fixes problems with LibreOffice tracking)
|
||||
[Colin; #649315]
|
||||
* Remove app tracking workarounds for Firefox and LibreOffice [Colin; #651015]
|
||||
* Use upstream gettext autoconfigury rather than glib version [Javier; #631576]
|
||||
* Show messages in the message tray when an application is fullscreen
|
||||
[Dan Winship; #608667]
|
||||
* Don't autohide the workspace pager if there is more than one workspace
|
||||
[Florian; #652714, #653078, #653142]
|
||||
* Don't always slide out the workspace pager at drag begin [Florian; #652730]
|
||||
* Only offer to remove a favorite app when dragging it's icon [Owen; #642895]
|
||||
* Allow dropping an icon anywhere on a workspace [Adel; #652079]
|
||||
* st-scroll-view: Make the fade effect and offset themable [Jasper; #651813]
|
||||
* Obey the user's preference when running an application in a terminal
|
||||
from the run dialog [Florian; #648422]
|
||||
* Consistently exit overview when launching external applications
|
||||
[Colin; #653095]
|
||||
* Adapt to changes in GJS for how GObject APIs are bound
|
||||
[Alex, Colin, Florian, Jasper, Marc-Antoine; #649981, #652597]
|
||||
* Fix problems with scrolling in overflow for alt-Tab switcher
|
||||
[Dan Winship, Adel; #647807]
|
||||
* Mark relationships between labels and actors for accessibility [Alejandro]
|
||||
* Add org.gnome.shell.enabled-extensions complementing disabled-extensions
|
||||
GSetting [Tassilo; #651088]
|
||||
* Visual tweaks [Jakub, Jasper; #646261, #652715]
|
||||
* Switch to building against clutter-1.7 with independent Cogl [Adel; #653397]
|
||||
* Code cleanups [Colin, Dan Winship, Florian; #633620, #645031, #648755, #648758,
|
||||
#648760, #649203, #649517, #650317, #652730]
|
||||
* Memory leak fixes [Colin, Maxim; #649508, #650934]
|
||||
* Build Fixes [Colin, Dan Winship, Florian, Ionut, Morten, Owen, Sean; #647395,
|
||||
#648006, #650869, #653199, #653275
|
||||
* Miscellaneous bug fixes [Adam, Adel, Dan Williams, Dan Winship, Florian,
|
||||
Ionut, Jasper, Maxim, Ray; #620105, #639459, #641570, #642793, #643513,
|
||||
#645848, #646919, #647186, #648305, #648410, #648562, #648894, #649001,
|
||||
#645990, #647893, #647907, #651012, #651086, #651606, #651569, #651866,
|
||||
#652388, #653511]
|
||||
|
||||
Contributors:
|
||||
Ionut Biru, Giovanni Campagna, Guillaume Desmottes, Adam Dingle,
|
||||
Maxim Ermilov, Adel Gadllah, Tassilo Horn, Javier Jardón, Jonny Lamb,
|
||||
Alexander Larsson, Rui Matos, Morten Mjelva, Florian Müllner,
|
||||
Marc-Antoine Perennou, Alejandro Piñeiro, Jasper St. Pierre, Jakub Steiner,
|
||||
Ray Strode, Owen Taylor, Colin Walters, Dan Williams, Sean Wilson, Dan Winship
|
||||
|
||||
Translations:
|
||||
Daniel Martinez Cucalon [ar], Ihar Hrachyshka [be], Carles Ferrando,
|
||||
Gil Forcada, Sílvia Miranda [ca], Kristjan Schmidt [eo], Jorge González,
|
||||
Daniel Mustieles [es], Seán de Búrca [ga], Fran Diéguez [gl],
|
||||
Yaron Shahrabani [he], Kjartan Maraas [nb], Misha Shnurapet,
|
||||
Yuri Myasoedov [ru], Daniel Nylander [se], Peter Mráz [sk],
|
||||
Matej Urbančič [sl], Krishnababu Krothapalli [te], Daniel Korostil [uk],
|
||||
Aron Xu [zh_CN]
|
||||
|
||||
|
||||
3.0.2
|
||||
=====
|
||||
* Network Menu [Dan Williams]
|
||||
- Fix connecting to WPA2 Enterprise access points
|
||||
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171
|
||||
- Show the mobile broadband wizard when selecting 3G network
|
||||
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=649318
|
||||
- Miscellaneous bug fixes
|
||||
648648, 650124
|
||||
* Fix duplicate icons in the application browser [Owen]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648739
|
||||
* Make clicking anywhere on the volume icon slider work [Giovanni]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646660
|
||||
* Fix a case where activating and clicking the hot corner
|
||||
at the same time could result in immediately leaving the
|
||||
overview [Rui]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649427
|
||||
* Fix a case where applications became misordered in Alt-Tab [Jasper]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=643302
|
||||
* Fix a bug where messages you send could show up in
|
||||
notifications as if someone else sent them [Jonny]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=650219
|
||||
* Memory leak fixes [Colin, Maxim]
|
||||
642652, 649508, 649497
|
||||
* Miscellaneous minor bug fixes [Adel, Christopher, Jasper]
|
||||
649596, 648765, 648983, 649632
|
||||
|
||||
Contributors:
|
||||
Christopher Aillon, Giovanni Campagna, Maxim Ermilov,
|
||||
Adel Gadllah, Jonny Lamb, Rui Matos, Jasper St. Pierre,
|
||||
Owen Taylor, Colin Walters, Dan Williams
|
||||
|
||||
Translations:
|
||||
Arash Mousavi [fa], Seán de Búrca [ga], Timo Jyrinki [fi],
|
||||
Sigurd Gartmann [nb], Daniel Nylander [se], Peter Mráz [sl],
|
||||
Abduxukur Abdurixit [ug], Nguyễn Thái Ngọc Duy [vi]
|
||||
|
||||
3.0.1
|
||||
=====
|
||||
|
||||
* Network menu
|
||||
- Fix problems updating the menu for mobile broadband devices [Giovanni]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646395
|
||||
- Fix missing device descriptions with multiple devices of the
|
||||
same type [Giovanni]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646074
|
||||
- Label ad-hoc neworks with an appropriate icon [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646141
|
||||
- Fix displaying some devices states as "invalid" [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646946
|
||||
- Fix problems with access points that don't report a SSID [Giovanni]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647040
|
||||
- Miscellaneous minor bug fixes [Dan, Giovanni, Owen]
|
||||
645981, 646558, 646443, 646708, 646968
|
||||
* Application menu and icon
|
||||
- Fix bug where application menu icon was missing at GNOME Shell
|
||||
startup. [Florian]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=644122
|
||||
- Fix missing application menu for dialog windows [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647082
|
||||
- When launching an application through an alternate launcher
|
||||
(like for a System Settings pane), association the windows with
|
||||
the application, not the launcher. [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646689
|
||||
* Activities overview
|
||||
- Load the applications view incrementally to avoid potentially freezing
|
||||
for multiple seconds [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647778
|
||||
- Fix bug where package installation while the overview
|
||||
was up could result in a corrupted application display. [Giovanni]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=645801
|
||||
- Fix dragging from the search results to launch apps and docs [Florian]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=645990
|
||||
- Fix flickering of selection when searching in the overview [Florian]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646019
|
||||
- Fix bug when typing into the search box when text was already
|
||||
selected [Nohemi]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=636341
|
||||
* Fix layout of notifications for right-to-left languages [Florian]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646921
|
||||
* Remove a confusing special case where Alt-Tab sometimes switched
|
||||
to a different window of the same application rather than to
|
||||
a different application. [Rui]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648132
|
||||
* Fix a crash that could happen when a window was opened on a
|
||||
workspace that was immediately removed [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648132
|
||||
* Fix keyboard navigation in logout/reboot dialogs [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646740
|
||||
* Fix missing inspector icon in Looking Glass console [Dan]
|
||||
* Miscellaneous minor bug fixes [Adel, Colin, Dan, Florian, Nohemi]
|
||||
645648, 646205, 646257, 646855, 647098, 646730
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Nohemi Fernandez, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||
Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Hendrik Richter [de], Jorge González [es], Arash Mousavi [fa],
|
||||
Fran Diéguez [gl], Jiro Matsuzawa [ja], Piotr Drąg [pl], Daniel Nylander [sv],
|
||||
Sira Nokyoongtong [th], Muhammet Kara [tr], Nguyễn Thái Ngọc Duy [vi],
|
||||
Aron Xu [zh_CN], Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
3.0.0.2
|
||||
=======
|
||||
|
||||
* Fix missing import that was preventing extensions from loading.
|
||||
[Maxim Ermilov]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646333
|
||||
|
||||
Translations:
|
||||
Timo Jyrinki [fi]
|
||||
|
||||
3.0.0.1
|
||||
=======
|
||||
|
||||
* Fix problem with stuck event handling if network menu pops down while
|
||||
user is using the scrollbar. [Owen Taylor]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=646825
|
||||
|
||||
Contributors to GNOME Shell 3.0
|
||||
===============================
|
||||
|
||||
Code:
|
||||
|
||||
Josh Adams, Kiyoshi Aman, Nuno Araujo, Emmanuele Bassi, Dirk-Jan C. Binnema,
|
||||
Wouter Bolsterlee, Raphael Bosshard, Milan Bouchet-Valat, Christina Boumpouka,
|
||||
Mathieu Bridon, Alban Browaeys, Phil Bull, Micro Cai, Giovanni Campagna,
|
||||
Cosimo Cecchi, Tor-björn Claesson, Matthias Clasen, Jason D. Clinton,
|
||||
Frederic Crozat, Guillaume Desmottes, Sander Dijkhuis, Neha Doijode,
|
||||
Maxim Ermilov, Diego Escalante Urrelo, Luca Ferretti, Steve Frécinaux,
|
||||
Takao Fujiwara, Adel Gadllah, Vadim Girlin, Nick Glynn, Guido Günther,
|
||||
Leon Handreke, Lex Hider, Richard Hughes, Javier Jardón, Abderrahim Kitouni,
|
||||
Andre Klapper, Alexander Larsson, Nickolas Lloyd, Ryan Lortie, Kjartan Maraas,
|
||||
Koop Mast, Rui Matos, Jonathan Matthew, William Jon McCann, Morten Mjelva,
|
||||
Federico Mena Quintero, Florian Müllner, Jon Nettleton, Hellyna Ng,
|
||||
Discardi Nicola, Carlos Martín Nieto, Bastien Nocera, Bill Nottingham,
|
||||
Matt Novenstern, Marc-Antoine Perennou, Neil Perry, Frédéric Péters,
|
||||
Alejandro Piñeiro, Siegfried-Angel Gevatter Pujals, "res", Neil Roberts,
|
||||
"Sardem FF7", Florian Scandella, Joseph Scheuhammer, Christian Schramm,
|
||||
Gustavo Noronha Silva, Jasper St. Pierre, Eric Springer, Jakub Steiner,
|
||||
Jonathan Strander, Ray Strode, Owen Taylor, Rico Tzschichholz,
|
||||
Sergey V. Udaltsov, Daiki Ueno, Vincent Untz, Marcelo Jorge Vieira,
|
||||
Mads Villadsen, Colin Walters, Dan Winship, William Wolf, Thomas Wood,
|
||||
Pierre Yager, David Zeuthen, Marina Zhurakhinskaya
|
||||
|
||||
Design:
|
||||
|
||||
Allan Day, William Jon McCann, Jeremy Perry, Jakub Steiner
|
||||
2008 Boston GNOME design hackfest participants (especially Neil J. Patel
|
||||
for turning the resulting sketches into our first mockups.)
|
||||
Everybody on irc.gnome.org:#gnome-design
|
||||
|
||||
Translations:
|
||||
|
||||
Friedel Wolff (af), Khaled Hosny (ar), Ivaylo Valkov (bg), Jamil Ahmed (bn)
|
||||
Runa Bhattacharjee (bn_IN), Gil Forcada, Siegfried-Angel Gevatter Pujals,
|
||||
Jordi Serratosa (ca), Andre Klapper, Petr Kovar (cs), Kenneth Nielsen,
|
||||
Kris Thomsen (da), Mario Blättermann, Hendrik Brandt, Christian Kirbach,
|
||||
Hendrik Richter, Wolfgang Stöggl (de), Michael Kotsarinis, Kostas Papadimas,
|
||||
Jennie Petoumenou, Sterios Prosiniklis, Fotis Tsamis, Simos Xenitellis (el),
|
||||
Bruce Cowan, Philip Withnall (en_GB), Jorge Gonzalez, Daniel Mustieles (es),
|
||||
Mattias Põldaru, Ivar Smolin (et), Inaki Larranaga Murgoitio (eu),
|
||||
Mahyar Moghimi (fa), Timo Jyrinki (fi), Cyril Arnaud, Bruno Brouard,
|
||||
Pablo Martin-Gomez, Claude Paroz, Frédéric Peters (fr), Seán de Búrca (ga)
|
||||
Francisco Diéguez, Antón Méixome (gl), Sweta Kothari (gu), Liel Fridman,
|
||||
Yaron Shahrabani (he), Rajesh Ranjan (hi), Gabor Kelemen (hu), Milo Casagrande,
|
||||
Luca Ferretti (it), Dirgita, Andika Triwidada (id), Takayuki KUSANO,
|
||||
Takayoshi OKANO, Kiyotaka NISHIBORI, Futoshi NISHIO (ja), Shankar Prasad (kn),
|
||||
Young-Ho Cha, Changwoo Ryu (ko), Žygimantas Beručka, Gintautas Miliauskas (lt),
|
||||
Rudolfs Mazurs (lv), Sandeep Shedmake (mr), Kjartan Maraas (nb),
|
||||
Wouter Bolsterlee, Sander Dijkhuis, Reinout van Schouwen (nl),
|
||||
Torstein Winterseth (nn), A S Alam (pa), Tomasz Dominikowski, Piotr Drąg (pl),
|
||||
Duarte Loreto (pt), Felipe Borges, Rodrigo Padula de Oliveira,
|
||||
Rodrigo L. M. Flores, Amanda Magalhães, Og B. Maciel, Gabriel F. Vilar,
|
||||
Jonh Wendell (pt_BR), Lucian Adrian Grijincu, Daniel Șerbănescu (ro),
|
||||
Sergey V. Kovylov, Andrey Korzinev, Yuri Myasoedov, Marina Zhurakhinskaya (ru),
|
||||
Daniel Nylander (se), Matej Urbančič, Andrej Žnidaršič (sl),
|
||||
Miloš Popović (sr, sr@latin), Miroslav Nikolić (sr), Tirumurti Vasudevan (ta),
|
||||
Sira Nokyoongtong (th), Baris Cicek (tr), Abduxukur Abdurixit,
|
||||
Gheyret T. Kenji (ug), Maxim V. Dziumanenko, Daniel Korostil (uk),
|
||||
Nguyễn Thái Ngọc Duy (vi), Jessica Ban, 'jiero', Wei Li, YunQiang Su, Ray Wang,
|
||||
Aron Xu (zh_CN), Chao-Hsiung Liao (zh_HK, zh_TW)
|
42
configure.ac
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.1.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[2.91.93],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@@ -23,16 +23,12 @@ AM_PROG_CC_C_O
|
||||
LT_PREREQ([2.2.6])
|
||||
LT_INIT([disable-static])
|
||||
|
||||
# i18n
|
||||
IT_PROG_INTLTOOL([0.40])
|
||||
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.17])
|
||||
|
||||
GETTEXT_PACKAGE=gnome-shell
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||
[The prefix for our gettext translation domains.])
|
||||
IT_PROG_INTLTOOL(0.26)
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
PKG_PROG_PKG_CONFIG([0.22])
|
||||
|
||||
@@ -67,16 +63,16 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
CLUTTER_MIN_VERSION=1.5.15
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=0.7.11
|
||||
MUTTER_MIN_VERSION=3.0.0
|
||||
MUTTER_MIN_VERSION=2.91.93
|
||||
GTK_MIN_VERSION=3.0.0
|
||||
GIO_MIN_VERSION=2.25.9
|
||||
LIBECAL_MIN_VERSION=2.32.0
|
||||
LIBEDATASERVER_MIN_VERSION=1.2.0
|
||||
LIBEDATASERVERUI_MIN_VERSION=2.91.6
|
||||
TELEPATHY_GLIB_MIN_VERSION=0.15.0
|
||||
LIBEDATASERVERUI2_MIN_VERSION=1.2.0
|
||||
LIBEDATASERVERUI3_MIN_VERSION=2.91.6
|
||||
TELEPATHY_GLIB_MIN_VERSION=0.13.12
|
||||
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||
POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
|
||||
# Collect more than 20 libraries for a prize!
|
||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
||||
@@ -88,7 +84,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
||||
gdk-x11-3.0
|
||||
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
|
||||
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
|
||||
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
|
||||
libstartup-notification-1.0
|
||||
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
|
||||
libcanberra
|
||||
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
||||
@@ -104,7 +100,7 @@ AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
||||
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
||||
JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
|
||||
# NM is the only typelib we use that we don't jhbuild
|
||||
PKG_CHECK_EXISTS([libnm-glib >= 0.8.999],
|
||||
PKG_CHECK_EXISTS([libnm-glib >= 0.8.995],
|
||||
[NM_TYPELIBDIR=`$PKG_CONFIG --variable=libdir libnm-glib`/girepository-1.0
|
||||
if test "$INTROSPECTION_TYPELIBDIR" != "$NM_TYPELIBDIR"; then
|
||||
JHBUILD_TYPELIBDIR="$JHBUILD_TYPELIBDIR:$NM_TYPELIBDIR"
|
||||
@@ -115,20 +111,22 @@ saved_CFLAGS=$CFLAGS
|
||||
saved_LIBS=$LIBS
|
||||
CFLAGS=$GNOME_SHELL_CFLAGS
|
||||
LIBS=$GNOME_SHELL_LIBS
|
||||
AC_CHECK_FUNCS(JS_NewGlobalObject XFixesCreatePointerBarrier)
|
||||
# sn_startup_sequence_get_application_id, we can replace with a version check later
|
||||
AC_CHECK_FUNCS(JS_NewGlobalObject sn_startup_sequence_get_application_id XFixesCreatePointerBarrier)
|
||||
CFLAGS=$saved_CFLAGS
|
||||
LIBS=$saved_LIBS
|
||||
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 gnome-desktop-3.0 >= 2.90.0 x11)
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 gnome-desktop-3.0 >= 2.90.0 x11)
|
||||
PKG_CHECK_MODULES(GDMUSER, dbus-glib-1 gtk+-3.0)
|
||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
||||
PKG_CHECK_MODULES(JS_TEST, clutter-x11-1.0 gjs-1.0 gobject-introspection-1.0 gtk+-3.0)
|
||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
|
||||
|
||||
AC_MSG_CHECKING([for bluetooth support])
|
||||
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
||||
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
|
||||
BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
|
||||
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 2.90.0],
|
||||
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=libdir gnome-bluetooth-1.0`/gnome-bluetooth
|
||||
BLUETOOTH_LIBS="-L'$BLUETOOTH_DIR' -lgnome-bluetooth-applet"
|
||||
AC_SUBST([BLUETOOTH_LIBS],["$BLUETOOTH_LIBS"])
|
||||
AC_DEFINE_UNQUOTED([BLUETOOTH_DIR],["$BLUETOOTH_DIR"],[Path to installed GnomeBluetooth typelib and library])
|
||||
AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
|
||||
@@ -138,7 +136,13 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
||||
AC_SUBST([HAVE_BLUETOOTH],[0])
|
||||
AC_MSG_RESULT([no])])
|
||||
|
||||
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
|
||||
# Default to libedataserverui-3.0, but allow falling back to 1.2
|
||||
PKG_CHECK_EXISTS(libedataserverui-3.0,
|
||||
[EDS_API=3.0
|
||||
LIBEDATASERVERUI_MIN_VERSION=$LIBEDATASERVERUI3_MIN_VERSION],
|
||||
[EDS_API=1.2
|
||||
LIBEDATASERVERUI_MIN_VERSION=$LIBEDATASERVERUI2_MIN_VERSION])
|
||||
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-$EDS_API >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
|
||||
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
||||
AC_SUBST(CALENDAR_SERVER_LIBS)
|
||||
|
||||
|
@@ -30,14 +30,26 @@ dist_theme_DATA = \
|
||||
theme/filter-selected-ltr.svg \
|
||||
theme/filter-selected-rtl.svg \
|
||||
theme/gnome-shell.css \
|
||||
theme/mosaic-view-active.svg \
|
||||
theme/mosaic-view.svg \
|
||||
theme/move-window-on-new.svg \
|
||||
theme/panel-border.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/scroll-button-down-hover.png \
|
||||
theme/scroll-button-down.png \
|
||||
theme/scroll-button-up-hover.png \
|
||||
theme/scroll-button-up.png \
|
||||
theme/scroll-hhandle.svg \
|
||||
theme/scroll-vhandle.svg \
|
||||
theme/section-more.svg \
|
||||
theme/section-more-open.svg \
|
||||
theme/separator-white.png \
|
||||
theme/single-view-active.svg \
|
||||
theme/single-view.svg \
|
||||
theme/source-button-border.svg \
|
||||
theme/toggle-off-us.svg \
|
||||
theme/toggle-off-intl.svg \
|
||||
|
@@ -15,18 +15,8 @@
|
||||
<default>[]</default>
|
||||
<_summary>Uuids of extensions to disable</_summary>
|
||||
<_description>
|
||||
GNOME Shell extensions have a uuid property; this key lists extensions
|
||||
which should not be loaded. This setting overrides enabled-extensions
|
||||
for extensions that appear in both lists.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="enabled-extensions" type="as">
|
||||
<default>[]</default>
|
||||
<_summary>Uuids of extensions to enable</_summary>
|
||||
<_description>
|
||||
GNOME Shell extensions have a uuid property; this key lists extensions
|
||||
which should be loaded. disabled-extensions overrides this setting for
|
||||
extensions that appear in both lists.
|
||||
GNOME Shell extensions have a uuid property;
|
||||
this key lists extensions which should not be loaded.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="enable-app-monitoring" type="b">
|
||||
|
@@ -39,11 +39,6 @@ StScrollBar
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
StScrollView.vfade
|
||||
{
|
||||
-st-vfade-offset: 68px;
|
||||
}
|
||||
|
||||
StScrollView StScrollBar
|
||||
{
|
||||
min-width: 16px;
|
||||
@@ -107,36 +102,8 @@ StTooltip StLabel {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.popup-submenu-menu-item:open {
|
||||
background-color: #4c4c4c;
|
||||
}
|
||||
|
||||
.popup-sub-menu {
|
||||
background-gradient-start: rgba(80,80,80,0.3);
|
||||
background-gradient-end: rgba(80,80,80,0.7);
|
||||
background-gradient-direction: vertical;
|
||||
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
|
||||
}
|
||||
|
||||
.popup-sub-menu .popup-menu-item:ltr {
|
||||
padding-right: 0em;
|
||||
}
|
||||
|
||||
.popup-sub-menu .popup-menu-item:rtl {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
.popup-sub-menu StScrollBar {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.popup-sub-menu StScrollBar StBin#trough {
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
.popup-sub-menu StScrollBar StBin#vhandle {
|
||||
background-color: #4c4c4c;
|
||||
border-width: 0px;
|
||||
background-color: #606060;
|
||||
}
|
||||
|
||||
/* The remaining popup-menu sizing is all done in ems, so that if you
|
||||
@@ -187,7 +154,6 @@ StTooltip StLabel {
|
||||
}
|
||||
|
||||
.popup-inactive-menu-item {
|
||||
font-weight: normal;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
@@ -799,7 +765,7 @@ StTooltip StLabel {
|
||||
|
||||
#calendarArea {
|
||||
/* this is the width of the entire popup */
|
||||
min-width: 600px;
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.calendar-vertical-separator {
|
||||
@@ -937,13 +903,11 @@ StTooltip StLabel {
|
||||
}
|
||||
|
||||
.events-header-vbox {
|
||||
spacing: 6pt;
|
||||
padding-right: 1.75em;
|
||||
spacing: 8px;
|
||||
}
|
||||
|
||||
.events-header-vbox:rtl {
|
||||
padding-right: 0em;
|
||||
padding-left: 1.75em;
|
||||
.events-header {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.events-header-hbox {
|
||||
@@ -988,17 +952,17 @@ StTooltip StLabel {
|
||||
}
|
||||
|
||||
.events-day-name-box {
|
||||
min-width: 15pt;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.events-time-box {
|
||||
min-width: 53pt;
|
||||
padding-right: 6pt;
|
||||
width: 70px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.events-time-box:rtl {
|
||||
padding-right: 0px;
|
||||
padding-left: 6pt;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.events-event-box {
|
||||
|
113
data/theme/mosaic-view-active.svg
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="16"
|
||||
id="svg6503"
|
||||
version="1.1"
|
||||
inkscape:version="0.47pre4 r22446"
|
||||
sodipodi:docname="mosaic-view-active.svg">
|
||||
<defs
|
||||
id="defs6505">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective6511" />
|
||||
<inkscape:perspective
|
||||
id="perspective6494"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="-15.97056"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata6508">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,-16)">
|
||||
<g
|
||||
style="display:inline;fill:#cbcbcb;fill-opacity:1"
|
||||
transform="translate(-449.85476,-685.85869)"
|
||||
id="g5306">
|
||||
<rect
|
||||
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none"
|
||||
id="rect5308"
|
||||
width="11"
|
||||
height="7"
|
||||
x="450.5"
|
||||
y="710.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
|
||||
id="rect5310"
|
||||
width="11"
|
||||
height="7"
|
||||
x="462.5"
|
||||
y="702.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999976000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
|
||||
id="rect5312"
|
||||
width="11"
|
||||
height="7"
|
||||
x="450.5"
|
||||
y="702.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#cbcbcb;fill-opacity:1;stroke:#000000;stroke-width:0.99999970000000005;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.44262299999999999;stroke-dasharray:none;display:inline"
|
||||
id="rect5314"
|
||||
width="11"
|
||||
height="7"
|
||||
x="462.5"
|
||||
y="710.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
113
data/theme/mosaic-view.svg
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="16"
|
||||
id="svg6503"
|
||||
version="1.1"
|
||||
inkscape:version="0.47pre4 r22446"
|
||||
sodipodi:docname="New document 19">
|
||||
<defs
|
||||
id="defs6505">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective6511" />
|
||||
<inkscape:perspective
|
||||
id="perspective6494"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="16"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata6508">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,-16)">
|
||||
<g
|
||||
style="display:inline"
|
||||
transform="translate(-449.85476,-685.85869)"
|
||||
id="g5306">
|
||||
<rect
|
||||
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none"
|
||||
id="rect5308"
|
||||
width="11"
|
||||
height="7"
|
||||
x="450.5"
|
||||
y="710.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
|
||||
id="rect5310"
|
||||
width="11"
|
||||
height="7"
|
||||
x="462.5"
|
||||
y="702.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
|
||||
id="rect5312"
|
||||
width="11"
|
||||
height="7"
|
||||
x="450.5"
|
||||
y="702.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
<rect
|
||||
style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.442623;stroke-dasharray:none;display:inline"
|
||||
id="rect5314"
|
||||
width="11"
|
||||
height="7"
|
||||
x="462.5"
|
||||
y="710.5"
|
||||
rx="0.99999958"
|
||||
ry="1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
89
data/theme/move-window-on-new.svg
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="98"
|
||||
height="98"
|
||||
id="svg6375"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="add-workspace.svg">
|
||||
<defs
|
||||
id="defs6377">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective6383" />
|
||||
<inkscape:perspective
|
||||
id="perspective6366"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.9590209"
|
||||
inkscape:cx="56.650687"
|
||||
inkscape:cy="20.635343"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata6380">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,66)">
|
||||
<g
|
||||
id="g2824"
|
||||
transform="matrix(11.568551,0,0,11.698271,-78.828159,-304.81518)">
|
||||
<path
|
||||
style="fill:none;stroke:#666666;stroke-width:1.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 11.07363,21.36834 0,6.43903"
|
||||
id="path5322" />
|
||||
<path
|
||||
style="fill:none;stroke:#666666;stroke-width:1.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||
d="m 14.29314,24.58786 -6.43902,0"
|
||||
id="path5324" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:0.98823529"
|
||||
d="m 48.239516,97.908047 c -0.41677,-0.05102 -1.269253,-0.222408 -1.894408,-0.380859 -4.088493,-1.036262 -7.520781,-4.753234 -8.330163,-9.021094 -0.154947,-0.817026 -0.257819,-6.68112 -0.257819,-14.696556 l 0,-13.337088 -13.829177,-0.08909 C 10.802042,60.298796 10.026884,60.268266 8.6851548,59.783022 3.6288503,57.954375 0.62673331,53.828648 0.62673331,48.708554 c 0,-5.625522 4.25936019,-10.425065 9.97721469,-11.242548 0.987903,-0.141242 7.368912,-0.254994 14.460646,-0.257791 l 12.692532,-0.005 0,-13.586668 c 0,-14.6441583 0.03287,-15.0698926 1.364686,-17.6753047 2.185477,-4.2754229 6.938193,-6.75739913 11.687647,-6.10355607 3.382776,0.46569661 6.737962,2.72496967 8.414081,5.66577137 1.480816,2.5981315 1.519067,3.0522448 1.519067,18.0333334 l 0,13.666424 12.692533,0.005 c 7.091733,0.0028 13.472742,0.116549 14.460646,0.257791 6.395303,0.914337 10.804785,6.623716 9.941157,12.871766 -0.698243,5.051565 -4.792685,9.104635 -9.941157,9.840713 -0.987904,0.141242 -7.368913,0.254995 -14.460646,0.257791 l -12.692533,0.005 0,13.801945 c 0,13.031417 -0.02798,13.895893 -0.501177,15.484801 -1.526902,5.127058 -6.919246,8.802262 -12.001914,8.18002 z"
|
||||
id="path2828"
|
||||
transform="translate(0,-66)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.0 KiB |
@@ -2,62 +2,24 @@
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="119.97824"
|
||||
height="119.97824"
|
||||
id="svg7355"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="running-indicator.svg">
|
||||
<metadata
|
||||
id="metadata4175">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#2c1cff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1141"
|
||||
id="namedview4173"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8.1348081"
|
||||
inkscape:cx="81.120662"
|
||||
inkscape:cy="58.117986"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g30864" />
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs7357">
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient36429"
|
||||
id="radialGradient7461"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.011539,0,0,0.57582113,-0.39262194,71.83807)"
|
||||
cx="47.428951"
|
||||
cy="167.16817"
|
||||
fx="47.428951"
|
||||
fy="167.16817"
|
||||
gradientTransform="matrix(1.0525552,0,0,1.0525552,-2.5162753,-9.0000838)"
|
||||
cx="47.878681"
|
||||
cy="171.25"
|
||||
fx="47.878681"
|
||||
fy="171.25"
|
||||
r="37" />
|
||||
<linearGradient
|
||||
id="linearGradient36429">
|
||||
@@ -97,7 +59,7 @@
|
||||
fx="49.067139"
|
||||
cy="242.50381"
|
||||
cx="49.067139"
|
||||
gradientTransform="matrix(1.1891549,0,0,0.15252127,-9.281289,132.52772)"
|
||||
gradientTransform="matrix(1.1891549,0,0,0.55513246,-9.281289,36.12653)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient7488"
|
||||
xlink:href="#linearGradient36471" />
|
||||
@@ -110,21 +72,19 @@
|
||||
id="g30864"
|
||||
transform="translate(255.223,70.118091)">
|
||||
<rect
|
||||
ry="3.4593496"
|
||||
rx="3.4593496"
|
||||
y="99.596962"
|
||||
x="12.596948"
|
||||
height="71.116341"
|
||||
width="71.116341"
|
||||
ry="3.5996203"
|
||||
rx="3.5996203"
|
||||
y="98"
|
||||
x="11"
|
||||
height="74"
|
||||
width="74"
|
||||
id="rect14000"
|
||||
style="opacity:0.37187500000000001;fill:url(#radialGradient7461);fill-opacity:1;stroke:none" />
|
||||
style="opacity:0.371875;fill:url(#radialGradient7461);fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
id="rect34520"
|
||||
d="m 83.273151,166.72152 c 0,1.96759 -1.584022,3.55163 -3.551629,3.55163 l -63.443032,0 c -1.967608,0 -3.551648,-1.58402 -3.551643,-3.55164 0,-5.85318 0,-5.85318 0,0"
|
||||
style="opacity:0.35;fill:none;stroke:url(#radialGradient7488);stroke-width:1;stroke-opacity:1"
|
||||
connector-curvature="0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccscc" />
|
||||
d="m 84.506708,167.95508 c 6e-6,1.96759 -1.584022,3.55162 -3.551629,3.55163 l -65.910146,0 c -1.967608,-1e-5 -3.551648,-1.58402 -3.551643,-3.55164"
|
||||
style="opacity:0.2;fill:none;stroke:url(#radialGradient7488);stroke-width:1;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 2.7 KiB |
BIN
data/theme/scroll-button-down-hover.png
Normal file
After Width: | Height: | Size: 225 B |
BIN
data/theme/scroll-button-down.png
Normal file
After Width: | Height: | Size: 225 B |
BIN
data/theme/scroll-button-up-hover.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
data/theme/scroll-button-up.png
Normal file
After Width: | Height: | Size: 211 B |
87
data/theme/section-more-open.svg
Normal file
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="5.8600588"
|
||||
height="9"
|
||||
id="svg3647"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="section-more.svg">
|
||||
<defs
|
||||
id="defs3649">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective3655" />
|
||||
<inkscape:perspective
|
||||
id="perspective3603"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="82.777778"
|
||||
inkscape:cx="2.9300294"
|
||||
inkscape:cy="5.466443"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3652">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-262.78425,-490.71933)">
|
||||
<path
|
||||
transform="matrix(0,-0.98149546,0.71467449,0,25.404986,578.15569)"
|
||||
d="M 88.830127,340 80.169873,340 84.5,332.5 88.830127,340 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5707963"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:r2="2.5"
|
||||
sodipodi:r1="5"
|
||||
sodipodi:cy="337.5"
|
||||
sodipodi:cx="84.5"
|
||||
sodipodi:sides="3"
|
||||
id="path5497-5"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.59699643;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||
sodipodi:type="star" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
87
data/theme/section-more.svg
Executable file
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="5.8600588"
|
||||
height="9"
|
||||
id="svg3647"
|
||||
version="1.1"
|
||||
inkscape:version="0.46+devel"
|
||||
sodipodi:docname="New document 6">
|
||||
<defs
|
||||
id="defs3649">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 526.18109 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||
id="perspective3655" />
|
||||
<inkscape:perspective
|
||||
id="perspective3603"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="112.21575"
|
||||
inkscape:cy="-32.642856"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="609"
|
||||
inkscape:window-height="501"
|
||||
inkscape:window-x="164"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3652">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-262.78425,-490.71933)">
|
||||
<path
|
||||
transform="matrix(0,0.98149546,-0.71467449,0,506.02358,412.28296)"
|
||||
d="M 88.830127,340 80.169873,340 84.5,332.5 88.830127,340 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5707963"
|
||||
sodipodi:arg1="0.52359878"
|
||||
sodipodi:r2="2.5"
|
||||
sodipodi:r1="5"
|
||||
sodipodi:cy="337.5"
|
||||
sodipodi:cx="84.5"
|
||||
sodipodi:sides="3"
|
||||
id="path5497-5"
|
||||
style="fill:#5f5f5f;fill-opacity:1;stroke:#5f5f5f;stroke-width:0.59699643;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||
sodipodi:type="star" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
BIN
data/theme/separator-white.png
Normal file
After Width: | Height: | Size: 531 B |
81
data/theme/single-view-active.svg
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="16"
|
||||
id="svg6446"
|
||||
version="1.1"
|
||||
inkscape:version="0.47pre4 r22446"
|
||||
sodipodi:docname="single-view-active.svg">
|
||||
<defs
|
||||
id="defs6448">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective6454" />
|
||||
<inkscape:perspective
|
||||
id="perspective6441"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="0.014720032"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata6451">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,-17)">
|
||||
<rect
|
||||
ry="0.5"
|
||||
rx="0.49999979"
|
||||
y="17.483809"
|
||||
x="0.53483802"
|
||||
height="15"
|
||||
width="23"
|
||||
id="rect5304"
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:#cccccc;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
81
data/theme/single-view.svg
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="16"
|
||||
id="svg6446"
|
||||
version="1.1"
|
||||
inkscape:version="0.47pre4 r22446"
|
||||
sodipodi:docname="single-view.svg">
|
||||
<defs
|
||||
id="defs6448">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="32 : 16 : 1"
|
||||
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||
id="perspective6454" />
|
||||
<inkscape:perspective
|
||||
id="perspective6441"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.197802"
|
||||
inkscape:cx="0.014720032"
|
||||
inkscape:cy="16"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata6451">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,-17)">
|
||||
<rect
|
||||
ry="0.5"
|
||||
rx="0.49999979"
|
||||
y="17.483809"
|
||||
x="0.53483802"
|
||||
height="15"
|
||||
width="23"
|
||||
id="rect5304"
|
||||
style="fill:#626262;fill-opacity:1;stroke:#cccccc;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
@@ -13,8 +13,8 @@
|
||||
height="22"
|
||||
id="svg3199"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="toggle-on-intl.svg">
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="New document 11">
|
||||
<defs
|
||||
id="defs3201">
|
||||
<inkscape:perspective
|
||||
@@ -39,14 +39,14 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="49.147112"
|
||||
inkscape:cy="17.532036"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="32.500004"
|
||||
inkscape:cy="10.999997"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1412"
|
||||
inkscape:window-height="1067"
|
||||
inkscape:window-width="609"
|
||||
inkscape:window-height="501"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="0" />
|
||||
@@ -58,7 +58,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -72,7 +72,7 @@
|
||||
transform="translate(-453.5,448.36218)"
|
||||
id="g16453">
|
||||
<rect
|
||||
style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="color:#000000;fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect16256-9-4"
|
||||
width="63.000004"
|
||||
height="19"
|
||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
@@ -13,8 +13,8 @@
|
||||
height="22"
|
||||
id="svg2857"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="toggle-on-us.svg">
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2859">
|
||||
<inkscape:perspective
|
||||
@@ -40,18 +40,16 @@
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="19.689855"
|
||||
inkscape:cy="2.0517979"
|
||||
inkscape:cx="-69.642856"
|
||||
inkscape:cy="42.428569"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="941"
|
||||
inkscape:window-height="751"
|
||||
inkscape:window-x="2577"
|
||||
inkscape:window-y="206"
|
||||
inkscape:window-maximized="0"
|
||||
borderlayer="true"
|
||||
inkscape:showpageshadow="false" />
|
||||
inkscape:window-width="609"
|
||||
inkscape:window-height="501"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2862">
|
||||
<rdf:RDF>
|
||||
@@ -60,7 +58,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -74,7 +72,7 @@
|
||||
transform="translate(-351.35714,708.36218)"
|
||||
id="g16453">
|
||||
<rect
|
||||
style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="color:#000000;fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect16256-9-4"
|
||||
width="63.000004"
|
||||
height="19"
|
||||
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.7 KiB |
@@ -10,7 +10,9 @@ nobase_dist_js_DATA = \
|
||||
misc/history.js \
|
||||
misc/modemManager.js \
|
||||
misc/params.js \
|
||||
misc/semantic.js \
|
||||
misc/util.js \
|
||||
misc/zeitgeist.js \
|
||||
perf/core.js \
|
||||
ui/altTab.js \
|
||||
ui/appDisplay.js \
|
||||
@@ -22,7 +24,6 @@ nobase_dist_js_DATA = \
|
||||
ui/dash.js \
|
||||
ui/dateMenu.js \
|
||||
ui/dnd.js \
|
||||
ui/docDisplay.js \
|
||||
ui/endSessionDialog.js \
|
||||
ui/environment.js \
|
||||
ui/extensionSystem.js \
|
||||
@@ -64,4 +65,5 @@ nobase_dist_js_DATA = \
|
||||
ui/workspaceThumbnail.js \
|
||||
ui/workspacesView.js \
|
||||
ui/workspaceSwitcherPopup.js \
|
||||
ui/xdndHandler.js
|
||||
ui/xdndHandler.js \
|
||||
ui/zeitgeistSearch.js
|
||||
|
@@ -1,36 +1,32 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
const Search = imports.ui.search;
|
||||
|
||||
const THUMBNAIL_ICON_MARGIN = 2;
|
||||
|
||||
function DocInfo(recentInfo) {
|
||||
this._init(recentInfo);
|
||||
function ZeitgeistItemInfo(event) {
|
||||
this._init(event);
|
||||
}
|
||||
|
||||
DocInfo.prototype = {
|
||||
_init : function(recentInfo) {
|
||||
this.recentInfo = recentInfo;
|
||||
// We actually used get_modified() instead of get_visited()
|
||||
// here, as GtkRecentInfo doesn't updated get_visited()
|
||||
// correctly. See http://bugzilla.gnome.org/show_bug.cgi?id=567094
|
||||
this.timestamp = recentInfo.get_modified();
|
||||
this.name = recentInfo.get_display_name();
|
||||
ZeitgeistItemInfo.prototype = {
|
||||
_init : function(event) {
|
||||
this.event = event;
|
||||
this.subject = event.subjects[0];
|
||||
this.timestamp = event.timestamp;
|
||||
this.name = this.subject.text;
|
||||
this._lowerName = this.name.toLowerCase();
|
||||
this.uri = recentInfo.get_uri();
|
||||
this.mimeType = recentInfo.get_mime_type();
|
||||
this.uri = this.subject.uri;
|
||||
this.mimeType = this.subject.mimetype;
|
||||
this.interpretation = this.subject.interpretation;
|
||||
},
|
||||
|
||||
createIcon : function(size) {
|
||||
return St.TextureCache.get_default().load_recent_thumbnail(size, this.recentInfo);
|
||||
return St.TextureCache.get_default().load_thumbnail(size, this.uri, this.subject.mimetype);
|
||||
// FIXME: We should consider caching icons
|
||||
},
|
||||
|
||||
launch : function(workspaceIndex) {
|
||||
Shell.DocSystem.get_default().open(this.recentInfo, workspaceIndex);
|
||||
launch : function() {
|
||||
Gio.app_info_launch_default_for_uri(this.uri,
|
||||
global.create_app_launch_context());
|
||||
},
|
||||
|
||||
matchTerms: function(terms) {
|
||||
@@ -48,93 +44,5 @@ DocInfo.prototype = {
|
||||
}
|
||||
}
|
||||
return mtype;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var docManagerInstance = null;
|
||||
|
||||
function getDocManager() {
|
||||
if (docManagerInstance == null)
|
||||
docManagerInstance = new DocManager();
|
||||
return docManagerInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* DocManager wraps the DocSystem, primarily to expose DocInfo objects.
|
||||
*/
|
||||
function DocManager() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
DocManager.prototype = {
|
||||
_init: function() {
|
||||
this._docSystem = Shell.DocSystem.get_default();
|
||||
this._infosByTimestamp = [];
|
||||
this._infosByUri = {};
|
||||
this._docSystem.connect('changed', Lang.bind(this, this._reload));
|
||||
this._reload();
|
||||
},
|
||||
|
||||
_reload: function() {
|
||||
let docs = this._docSystem.get_all();
|
||||
this._infosByTimestamp = [];
|
||||
this._infosByUri = {};
|
||||
for (let i = 0; i < docs.length; i++) {
|
||||
let recentInfo = docs[i];
|
||||
|
||||
let docInfo = new DocInfo(recentInfo);
|
||||
this._infosByTimestamp.push(docInfo);
|
||||
this._infosByUri[docInfo.uri] = docInfo;
|
||||
}
|
||||
this.emit('changed');
|
||||
},
|
||||
|
||||
getTimestampOrderedInfos: function() {
|
||||
return this._infosByTimestamp;
|
||||
},
|
||||
|
||||
getInfosByUri: function() {
|
||||
return this._infosByUri;
|
||||
},
|
||||
|
||||
lookupByUri: function(uri) {
|
||||
return this._infosByUri[uri];
|
||||
},
|
||||
|
||||
queueExistenceCheck: function(count) {
|
||||
return this._docSystem.queue_existence_check(count);
|
||||
},
|
||||
|
||||
_searchDocs: function(items, terms) {
|
||||
let multiplePrefixMatches = [];
|
||||
let prefixMatches = [];
|
||||
let multipleSubtringMatches = [];
|
||||
let substringMatches = [];
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
let item = items[i];
|
||||
let mtype = item.matchTerms(terms);
|
||||
if (mtype == Search.MatchType.MULTIPLE_PREFIX)
|
||||
multiplePrefixMatches.push(item.uri);
|
||||
else if (mtype == Search.MatchType.PREFIX)
|
||||
prefixMatches.push(item.uri);
|
||||
else if (mtype == Search.MatchType.MULTIPLE_SUBSTRING)
|
||||
multipleSubtringMatches.push(item.uri);
|
||||
else if (mtype == Search.MatchType.SUBSTRING)
|
||||
substringMatches.push(item.uri);
|
||||
}
|
||||
return multiplePrefixMatches.concat(prefixMatches.concat(multipleSubtringMatches.concat(substringMatches)));
|
||||
},
|
||||
|
||||
initialSearch: function(terms) {
|
||||
return this._searchDocs(this._infosByTimestamp, terms);
|
||||
},
|
||||
|
||||
subsearch: function(previousResults, terms) {
|
||||
return this._searchDocs(previousResults.map(Lang.bind(this,
|
||||
function(url) {
|
||||
return this._infosByUri[url];
|
||||
})), terms);
|
||||
}
|
||||
};
|
||||
|
||||
Signals.addSignalMethods(DocManager.prototype);
|
||||
|
@@ -109,8 +109,7 @@ const SessionManagerIface = {
|
||||
name: 'org.gnome.SessionManager',
|
||||
methods: [
|
||||
{ name: 'Logout', inSignature: 'u', outSignature: '' },
|
||||
{ name: 'Shutdown', inSignature: '', outSignature: '' },
|
||||
{ name: 'CanShutdown', inSignature: '', outSignature: 'b' }
|
||||
{ name: 'Shutdown', inSignature: '', outSignature: '' }
|
||||
]
|
||||
};
|
||||
|
||||
|
@@ -77,9 +77,9 @@ HistoryManager.prototype = {
|
||||
this._history[this._history.length - 1] != input) {
|
||||
|
||||
this._history.push(input);
|
||||
this._historyIndex = this._history.length;
|
||||
this._save();
|
||||
}
|
||||
this._historyIndex = this._history.length;
|
||||
}
|
||||
},
|
||||
|
||||
_onEntryKeyPress: function(entry, event) {
|
||||
|
43
js/misc/semantic.js
Normal file
@@ -0,0 +1,43 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
*
|
||||
* Semantic-desktop interpretations for various data types
|
||||
*
|
||||
* Authors: Federico Mena Quintero <federico@gnome.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
const NFO_AUDIO = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Audio";
|
||||
const NFO_DOCUMENT = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Document";
|
||||
const NFO_HTML_DOCUMENT = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#HtmlDocument";
|
||||
const NFO_IMAGE = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Image";
|
||||
const NFO_MEDIA = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Media";
|
||||
const NFO_MIND_MAP = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#MindMap";
|
||||
const NFO_PAGINATED_TEXT_DOCUMENT = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#PaginatedTextDocument";
|
||||
const NFO_PLAIN_TEXT_DOCUMENT = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#PlainTextDocument";
|
||||
const NFO_PRESENTATION = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Presentation";
|
||||
const NFO_RASTER_IMAGE = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#RasterImage";
|
||||
const NFO_SOURCE_CODE = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#SourceCode";
|
||||
const NFO_SPREADSHEET = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Spreadsheet";
|
||||
const NFO_TEXT_DOCUMENT = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#TextDocument";
|
||||
const NFO_VECTOR_IMAGE = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#VectorImage";
|
||||
const NFO_VIDEO = "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Video";
|
||||
|
||||
const NMM_CURSOR = "http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#Cursor";
|
||||
const NMM_ICON = "http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#Icon";
|
||||
const NMM_MOVIE = "http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#Movie";
|
||||
const NMM_MUSIC_PIECE = "http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#MusicPiece";
|
||||
const NMM_TV_SHOW = "http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#TVShow";
|
@@ -7,6 +7,9 @@ const Shell = imports.gi.Shell;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
/* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */
|
||||
const _urlRegexp = new RegExp('\\b(([a-z][\\w-]+:(/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)([^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\\".,<>?«»“”‘’]))', 'gi');
|
||||
|
||||
@@ -45,7 +48,7 @@ function spawn(argv) {
|
||||
// occur when trying to parse or start the program.
|
||||
function spawnCommandLine(command_line) {
|
||||
try {
|
||||
let [success, argv] = GLib.shell_parse_argv(command_line);
|
||||
let [success, argc, argv] = GLib.shell_parse_argv(command_line);
|
||||
trySpawn(argv);
|
||||
} catch (err) {
|
||||
_handleSpawnError(command_line, err);
|
||||
@@ -85,10 +88,10 @@ function trySpawn(argv)
|
||||
// Runs @command_line in the background. If launching @command_line
|
||||
// fails, this will throw an error.
|
||||
function trySpawnCommandLine(command_line) {
|
||||
let success, argv;
|
||||
let success, argc, argv;
|
||||
|
||||
try {
|
||||
[success, argv] = GLib.shell_parse_argv(command_line);
|
||||
[success, argc, argv] = GLib.shell_parse_argv(command_line);
|
||||
} catch (err) {
|
||||
// Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
// something nicer
|
||||
@@ -147,7 +150,7 @@ const _IGNORED_WORDS = [
|
||||
'Incorporated',
|
||||
'Ltd.',
|
||||
'Limited.',
|
||||
'Intel',
|
||||
'Intel?',
|
||||
'chipset',
|
||||
'adapter',
|
||||
'[hex]',
|
||||
@@ -178,7 +181,7 @@ const _IGNORED_PHRASES = [
|
||||
];
|
||||
|
||||
function fixupPCIDescription(desc) {
|
||||
desc = desc.replace(/[_,]/, ' ');
|
||||
desc.replace(/[_,]/, ' ');
|
||||
|
||||
/* Attempt to shorten ID by ignoring certain phrases */
|
||||
for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
|
||||
@@ -194,7 +197,7 @@ function fixupPCIDescription(desc) {
|
||||
/* Attmept to shorten ID by ignoring certain individual words */
|
||||
let words = desc.split(' ');
|
||||
let out = [ ];
|
||||
for (let i = 0; i < words.length; i++) {
|
||||
for (let i = 0; i < words; i++) {
|
||||
let item = words[i];
|
||||
|
||||
// skip empty items (that come out from consecutive spaces)
|
||||
|
264
js/misc/zeitgeist.js
Normal file
@@ -0,0 +1,264 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
*
|
||||
* Copyright (C) 2010 Seif Lotfy <seif@lotfy.com>
|
||||
* Copyright (C) 2011 Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com>
|
||||
* Copyright (C) 2010-2011 Collabora Ltd.
|
||||
* Authored by: Seif Lotfy <seif@lotfy.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
const DBus = imports.dbus;
|
||||
|
||||
const SIG_EVENT = '(asaasay)';
|
||||
const MAX_TIMESTAMP = 9999999999999;
|
||||
|
||||
// Number of results given by fullTextSearch; 100 is probably enough.
|
||||
// Note: We can't currently increase this number to anything above 132, due to
|
||||
// https://bugs.launchpad.net/zeitgeist-extensions/+bug/716503
|
||||
const MAX_RESULTS = 100;
|
||||
|
||||
const ResultType = {
|
||||
// http://zeitgeist-project.com/docs/0.6/datamodel.html#resulttype
|
||||
// It's unfortunate to have to define these by hand; maybe if D-Bus had a way to introspect enums...
|
||||
MOST_RECENT_EVENTS : 0,
|
||||
LEAST_RECENT_EVENTS : 1,
|
||||
MOST_RECENT_SUBJECTS : 2,
|
||||
LEAST_RECENT_SUBJECTS : 3,
|
||||
MOST_POPULAR_SUBJECTS : 4,
|
||||
LEAST_POPULAR_SUBJECTS : 5,
|
||||
MOST_POPULAR_ACTOR : 6,
|
||||
LEAST_POPULAR_ACTOR : 7,
|
||||
MOST_RECENT_ACTOR : 8,
|
||||
LEAST_RECENT_ACTOR : 9,
|
||||
MOST_RECENT_ORIGIN : 10,
|
||||
LEAST_RECENT_ORIGIN : 11,
|
||||
MOST_POPULAR_ORIGIN : 12,
|
||||
LEAST_POPULAR_ORIGIN : 13,
|
||||
OLDEST_ACTOR : 14,
|
||||
MOST_RECENT_SUBJECT_INTERPRETATION : 15,
|
||||
LEAST_RECENT_SUBJECT_INTERPRETATION : 16,
|
||||
MOST_POPULAR_SUBJECT_INTERPRETATION : 17,
|
||||
LEAST_POPULAR_SUBJECT_INTERPRETATION : 18,
|
||||
MOST_RECENT_MIME_TYPE : 19,
|
||||
LEAST_RECENT_MIME_TYPE : 20,
|
||||
MOST_POPULAR_MIME_TYPE : 21,
|
||||
LEAST_POPULAR_MIME_TYPE : 22
|
||||
};
|
||||
|
||||
const StorageState = {
|
||||
// http://zeitgeist-project.com/docs/0.6/datamodel.html#storagestate
|
||||
// As with ResultType, it would be nice if we could introspect enums through D-Bus
|
||||
NOT_AVAILABLE : 0,
|
||||
AVAILABLE : 1,
|
||||
ANY : 2
|
||||
};
|
||||
|
||||
/* Zeitgeist Subjects (files, people, etc.) */
|
||||
|
||||
function Subject(uri, interpretation, manifestation, origin, mimetype, text, storage) {
|
||||
this._init(uri, interpretation, manifestation, origin, mimetype, text, storage);
|
||||
};
|
||||
|
||||
Subject.prototype = {
|
||||
_init: function(uri, interpretation, manifestation, origin, mimetype, text, storage) {
|
||||
this.uri = uri;
|
||||
this.interpretation = interpretation;
|
||||
this.manifestation = manifestation;
|
||||
this.origin = origin;
|
||||
this.mimetype = mimetype;
|
||||
this.text = text;
|
||||
this.storage = storage;
|
||||
},
|
||||
};
|
||||
|
||||
Subject.fromPlain = function(rawSubject) {
|
||||
return new Subject(rawSubject[0], // uri
|
||||
rawSubject[1], // interpretation
|
||||
rawSubject[2], // manifestation
|
||||
rawSubject[3], // origin
|
||||
rawSubject[4], // mimetype
|
||||
rawSubject[5], // text
|
||||
rawSubject[6]); // storage
|
||||
};
|
||||
|
||||
Subject.toPlain = function(subject) {
|
||||
let rawSubject = [];
|
||||
rawSubject[0] = subject.uri;
|
||||
rawSubject[1] = subject.interpretation;
|
||||
rawSubject[2] = subject.manifestation
|
||||
rawSubject[3] = subject.origin;
|
||||
rawSubject[4] = subject.mimetype;
|
||||
rawSubject[5] = subject.text;
|
||||
rawSubject[6] = subject.storage;
|
||||
return rawSubject;
|
||||
};
|
||||
|
||||
/* Zeitgeist Events */
|
||||
|
||||
function Event(interpretation, manifestation, actor, subjects, payload) {
|
||||
this._init(interpretation, manifestation, actor, subjects, payload);
|
||||
};
|
||||
|
||||
Event.prototype = {
|
||||
_init: function(interpretation, manifestation, actor, subjects, payload) {
|
||||
this.id = 0;
|
||||
this.timestamp = 0;
|
||||
this.actor = actor;
|
||||
this.interpretation = interpretation;
|
||||
this.manifestation = manifestation;
|
||||
this.actor = actor;
|
||||
this.payload = payload;
|
||||
this.subjects = subjects;
|
||||
},
|
||||
};
|
||||
|
||||
Event.fromPlain = function(rawEvent) {
|
||||
let subjects = rawEvent[1].map(Subject.fromPlain);
|
||||
let event = new Event(rawEvent[0][2], // interpretation
|
||||
rawEvent[0][3], // manifestation
|
||||
rawEvent[0][4], // actor
|
||||
subjects, // subjects
|
||||
rawEvent[2]);// payload
|
||||
event.id = rawEvent[0][0]; // id
|
||||
event.timestamp = parseInt(rawEvent[0][1], 10); // timestamp - it comes as a string over d-bus (yuck)
|
||||
return event;
|
||||
};
|
||||
|
||||
Event.toPlain = function(event) {
|
||||
let rawEvent = [];
|
||||
rawEvent[0] = [];
|
||||
rawEvent[0][0] = event.id.toString();
|
||||
rawEvent[0][1] = event.timestamp.toString();
|
||||
rawEvent[0][2] = event.interpretation;
|
||||
rawEvent[0][3] = event.manifestation;
|
||||
rawEvent[0][4] = event.actor;
|
||||
rawEvent[1] = event.subjects.map(Subject.toPlain);
|
||||
rawEvent[2] = event.payload;
|
||||
return rawEvent;
|
||||
};
|
||||
|
||||
// Zeitgeist D-Bus interface definitions. Note that most of these are
|
||||
// incomplete, and only cover the methods/properties/signals that
|
||||
// we're currently using.
|
||||
|
||||
/* Zeitgeist D-Bus Interface */
|
||||
|
||||
const LOG_NAME = 'org.gnome.zeitgeist.Engine';
|
||||
const LOG_PATH = '/org/gnome/zeitgeist/log/activity';
|
||||
const LogIface = {
|
||||
name: 'org.gnome.zeitgeist.Log',
|
||||
methods: [
|
||||
{ name: 'GetEvents',
|
||||
inSignature: 'au',
|
||||
outSignature: 'a'+SIG_EVENT },
|
||||
{ name: 'FindRelatedUris',
|
||||
inSignature: 'au',
|
||||
outSignature: '(xx)a(' + SIG_EVENT + ')a'+ SIG_EVENT + 'uuu' },
|
||||
{ name: 'FindEventIds',
|
||||
inSignature: '(xx)a' + SIG_EVENT + 'uuu',
|
||||
outSignature: 'au' },
|
||||
{ name: 'FindEvents',
|
||||
inSignature: '(xx)a' + SIG_EVENT + 'uuu',
|
||||
outSignature: 'a' + SIG_EVENT },
|
||||
{ name: 'InsertEvents',
|
||||
inSignature: 'a' + SIG_EVENT,
|
||||
outSignature: 'au' },
|
||||
{ name: 'DeleteEvents',
|
||||
inSignature: 'au',
|
||||
outSignature: '(xx)' },
|
||||
{ name: 'DeleteLog',
|
||||
inSignature: '',
|
||||
outSignature: '' },
|
||||
{ name: 'Quit',
|
||||
inSignature: '',
|
||||
outSignature: '' },
|
||||
// FIXME: Add missing DBus Methods
|
||||
// - InstallMonitor
|
||||
// - RemoveMonitor
|
||||
],
|
||||
properties: [
|
||||
{ name: 'Get',
|
||||
inSignature: 'ss',
|
||||
outSignature: 'v',
|
||||
access: 'read' },
|
||||
{ name: 'Set',
|
||||
inSignature: 'ssv',
|
||||
outSignature: '',
|
||||
access: 'read' },
|
||||
{ name: 'GetAll',
|
||||
inSignature: 's',
|
||||
outSignature: 'a{sv}',
|
||||
access: 'read' },
|
||||
]
|
||||
};
|
||||
|
||||
const Log = DBus.makeProxyClass(LogIface);
|
||||
const _log = new Log(DBus.session, LOG_NAME, LOG_PATH);
|
||||
|
||||
function findEvents(timeRange, eventTemplates, storageState, numEvents, resultType, callback) {
|
||||
function handler(results, error) {
|
||||
if (error != null)
|
||||
log("Error querying Zeitgeist for events: "+error);
|
||||
else
|
||||
callback(results.map(Event.fromPlain));
|
||||
}
|
||||
_log.FindEventsRemote(timeRange, eventTemplates.map(Event.toPlain),
|
||||
storageState, numEvents, resultType, handler);
|
||||
}
|
||||
|
||||
/* Zeitgeist Full-Text-Search Interface */
|
||||
|
||||
const INDEX_NAME = 'org.gnome.zeitgeist.Engine';
|
||||
const INDEX_PATH = '/org/gnome/zeitgeist/index/activity';
|
||||
const IndexIface = {
|
||||
name: 'org.gnome.zeitgeist.Index',
|
||||
methods: [
|
||||
{ name: 'Search',
|
||||
inSignature: 's(xx)a'+SIG_EVENT+'uuu',
|
||||
outSignature: 'a'+SIG_EVENT+'u' },
|
||||
],
|
||||
};
|
||||
|
||||
const Index = DBus.makeProxyClass(IndexIface);
|
||||
const _index = new Index(DBus.session, INDEX_NAME, INDEX_PATH);
|
||||
|
||||
/**
|
||||
* fullTextSearch:
|
||||
*
|
||||
* Asynchronously search Zeitgeist's index for events relating to the query.
|
||||
*
|
||||
* @param query The query string, using asterisks for wildcards. Wildcards must
|
||||
* be used at the start and/or end of a string to get relevant information.
|
||||
* @param eventTemplates Zeitgeist event templates, see
|
||||
* http://zeitgeist-project.com/docs/0.6/datamodel.html#event for more
|
||||
* information
|
||||
* @param callback The callback, takes a list containing Zeitgeist.Event
|
||||
* objects
|
||||
*/
|
||||
function fullTextSearch(query, eventTemplates, callback) {
|
||||
function handler(results, error) {
|
||||
if (error != null)
|
||||
log("Error searching with Zeitgeist FTS: "+error);
|
||||
else
|
||||
callback(results[0].map(Event.fromPlain));
|
||||
}
|
||||
_index.SearchRemote(query, [0, MAX_TIMESTAMP],
|
||||
eventTemplates.map(Event.toPlain),
|
||||
0, // offset into the search results
|
||||
MAX_RESULTS,
|
||||
ResultType.MOST_POPULAR_SUBJECTS, handler);
|
||||
}
|
@@ -87,7 +87,7 @@ AltTabPopup.prototype = {
|
||||
let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding);
|
||||
let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight);
|
||||
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
|
||||
childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth);
|
||||
childBox.x2 = Math.min(primary.x + primary.width - hPadding, childBox.x1 + childNaturalWidth);
|
||||
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._appSwitcher.actor.allocate(childBox, flags);
|
||||
@@ -97,6 +97,8 @@ AltTabPopup.prototype = {
|
||||
// those calculations
|
||||
if (this._thumbnails) {
|
||||
let icon = this._appIcons[this._currentApp].actor;
|
||||
// Force a stage relayout to make sure we get the correct position
|
||||
global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, 0, 0);
|
||||
let [posX, posY] = icon.get_transformed_position();
|
||||
let thumbnailCenter = posX + icon.width / 2;
|
||||
let [childMinWidth, childNaturalWidth] = this._thumbnails.actor.get_preferred_width(-1);
|
||||
@@ -143,12 +145,6 @@ AltTabPopup.prototype = {
|
||||
|
||||
this._appIcons = this._appSwitcher.icons;
|
||||
|
||||
// Need to force an allocation so we can figure out whether we
|
||||
// need to scroll when selecting
|
||||
this.actor.opacity = 0;
|
||||
this.actor.show();
|
||||
this.actor.get_allocation_box();
|
||||
|
||||
// Make the initial selection
|
||||
if (switch_group) {
|
||||
if (backward) {
|
||||
@@ -160,11 +156,29 @@ AltTabPopup.prototype = {
|
||||
this._select(0, 0);
|
||||
}
|
||||
} else if (this._appIcons.length == 1) {
|
||||
this._select(0);
|
||||
if (!backward && this._appIcons[0].cachedWindows.length > 1) {
|
||||
// For compatibility with the multi-app case below
|
||||
this._select(0, 1, true);
|
||||
} else
|
||||
this._select(0);
|
||||
} else if (backward) {
|
||||
this._select(this._appIcons.length - 1);
|
||||
} else {
|
||||
this._select(1);
|
||||
let firstWindows = this._appIcons[0].cachedWindows;
|
||||
if (firstWindows.length > 1) {
|
||||
let curAppNextWindow = firstWindows[1];
|
||||
let nextAppWindow = this._appIcons[1].cachedWindows[0];
|
||||
|
||||
// If the next window of the current app is more-recently-used
|
||||
// than the first window of the next app, then select it.
|
||||
if (curAppNextWindow.get_workspace() == global.screen.get_active_workspace() &&
|
||||
curAppNextWindow.get_user_time() > nextAppWindow.get_user_time())
|
||||
this._select(0, 1, true);
|
||||
else
|
||||
this._select(1);
|
||||
} else {
|
||||
this._select(1);
|
||||
}
|
||||
}
|
||||
|
||||
// There's a race condition; if the user released Alt before
|
||||
@@ -178,6 +192,8 @@ AltTabPopup.prototype = {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.actor.opacity = 0;
|
||||
this.actor.show();
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 255,
|
||||
time: POPUP_FADE_TIME,
|
||||
@@ -217,21 +233,33 @@ AltTabPopup.prototype = {
|
||||
|
||||
this._disableHover();
|
||||
|
||||
if (keysym == Clutter.Escape) {
|
||||
this.destroy();
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_GROUP)
|
||||
this._select(this._currentApp, backwards ? this._previousWindow() : this._nextWindow());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
|
||||
this._select(backwards ? this._previousApp() : this._nextApp());
|
||||
} else if (this._thumbnailsFocused) {
|
||||
if (keysym == Clutter.Left)
|
||||
else if (keysym == Clutter.Escape)
|
||||
this.destroy();
|
||||
else if (this._thumbnailsFocused) {
|
||||
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS)
|
||||
if (backwards) {
|
||||
if (this._currentWindow == 0 || this._currentWindow == -1)
|
||||
this._select(this._previousApp());
|
||||
else
|
||||
this._select(this._currentApp, this._previousWindow());
|
||||
} else {
|
||||
if (this._currentWindow == this._appIcons[this._currentApp].cachedWindows.length - 1)
|
||||
this._select(this._nextApp());
|
||||
else
|
||||
this._select(this._currentApp, this._nextWindow());
|
||||
}
|
||||
else if (keysym == Clutter.Left)
|
||||
this._select(this._currentApp, this._previousWindow());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._currentApp, this._nextWindow());
|
||||
else if (keysym == Clutter.Up)
|
||||
this._select(this._currentApp, null, true);
|
||||
} else {
|
||||
if (keysym == Clutter.Left)
|
||||
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS)
|
||||
this._select(backwards ? this._previousApp() : this._nextApp());
|
||||
else if (keysym == Clutter.Left)
|
||||
this._select(this._previousApp());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._nextApp());
|
||||
@@ -573,7 +601,7 @@ SwitcherList.prototype = {
|
||||
this._rightArrow.opacity = this._rightGradient.opacity;
|
||||
},
|
||||
|
||||
addItem : function(item, label) {
|
||||
addItem : function(item) {
|
||||
let bbox = new St.Button({ style_class: 'item-box',
|
||||
reactive: true });
|
||||
|
||||
@@ -584,8 +612,6 @@ SwitcherList.prototype = {
|
||||
bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); }));
|
||||
bbox.connect('enter-event', Lang.bind(this, function() { this._onItemEnter(n); }));
|
||||
|
||||
bbox.label_actor = label;
|
||||
|
||||
this._items.push(bbox);
|
||||
},
|
||||
|
||||
@@ -971,7 +997,7 @@ AppSwitcher.prototype = {
|
||||
|
||||
_addIcon : function(appIcon) {
|
||||
this.icons.push(appIcon);
|
||||
this.addItem(appIcon.actor, appIcon.label);
|
||||
this.addItem(appIcon.actor);
|
||||
|
||||
let n = this._arrows.length;
|
||||
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
||||
@@ -1041,12 +1067,9 @@ ThumbnailList.prototype = {
|
||||
this._labels.push(bin);
|
||||
bin.add_actor(name);
|
||||
box.add_actor(bin);
|
||||
|
||||
this.addItem(box, name);
|
||||
} else {
|
||||
this.addItem(box, null);
|
||||
}
|
||||
|
||||
this.addItem(box);
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -2,16 +2,19 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
const DND = imports.ui.dnd;
|
||||
const DocInfo = imports.misc.docInfo;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const Main = imports.ui.main;
|
||||
const Overview = imports.ui.overview;
|
||||
@@ -20,8 +23,8 @@ const Search = imports.ui.search;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Workspace = imports.ui.workspace;
|
||||
const Params = imports.misc.params;
|
||||
const Zeitgeist = imports.misc.zeitgeist;
|
||||
|
||||
const MAX_APPLICATION_WORK_MILLIS = 75;
|
||||
const MENU_POPUP_TIMEOUT = 600;
|
||||
const SCROLL_TIME = 0.1;
|
||||
|
||||
@@ -34,8 +37,6 @@ AlphabeticalView.prototype = {
|
||||
this._grid = new IconGrid.IconGrid({ xAlign: St.Align.START });
|
||||
this._appSystem = Shell.AppSystem.get_default();
|
||||
|
||||
this._pendingAppLaterId = 0;
|
||||
this._apps = [];
|
||||
this._filterApp = null;
|
||||
|
||||
let box = new St.BoxLayout({ vertical: true });
|
||||
@@ -44,7 +45,7 @@ AlphabeticalView.prototype = {
|
||||
this.actor = new St.ScrollView({ x_fill: true,
|
||||
y_fill: false,
|
||||
y_align: St.Align.START,
|
||||
style_class: 'vfade' });
|
||||
vfade: true });
|
||||
this.actor.add_actor(box);
|
||||
this.actor.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||
this.actor.connect('notify::mapped', Lang.bind(this,
|
||||
@@ -111,30 +112,6 @@ AlphabeticalView.prototype = {
|
||||
this._apps[i].actor.visible = filter(this._apps[i]._appInfo);
|
||||
},
|
||||
|
||||
// Create actors for the applications in an idle to avoid blocking
|
||||
// for too long; see bug 647778
|
||||
_addPendingApps: function() {
|
||||
let i;
|
||||
let startTimeMillis = new Date().getTime();
|
||||
for (i = 0; i < this._pendingAppIds.length; i++) {
|
||||
let id = this._pendingAppIds[i];
|
||||
this._addApp(this._pendingApps[id]);
|
||||
|
||||
let currentTimeMillis = new Date().getTime();
|
||||
if (currentTimeMillis - startTimeMillis > MAX_APPLICATION_WORK_MILLIS)
|
||||
break;
|
||||
}
|
||||
this._pendingAppIds.splice(0, i + 1);
|
||||
if (this._pendingAppIds.length > 0) {
|
||||
return true;
|
||||
} else {
|
||||
this._pendingAppLaterId = 0;
|
||||
this._pendingAppIds = null;
|
||||
this._pendingApps = null;
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
refresh: function(apps) {
|
||||
let ids = [];
|
||||
for (let i in apps)
|
||||
@@ -145,12 +122,9 @@ AlphabeticalView.prototype = {
|
||||
|
||||
this._removeAll();
|
||||
|
||||
this._pendingAppIds = ids;
|
||||
this._pendingApps = apps;
|
||||
if (this._pendingAppLaterId)
|
||||
Meta.later_remove(this._pendingAppLaterId);
|
||||
this._pendingAppLaterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
||||
Lang.bind(this, this._addPendingApps));
|
||||
for (let i = 0; i < ids.length; i++) {
|
||||
this._addApp(apps[ids[i]]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -253,6 +227,7 @@ ViewByCategories.prototype = {
|
||||
|
||||
let sections = this._appSystem.get_sections();
|
||||
this._apps = apps;
|
||||
this._view.refresh(apps);
|
||||
|
||||
/* Translators: Filter to display all applications */
|
||||
this._addFilter(_("All"), -1);
|
||||
@@ -264,7 +239,6 @@ ViewByCategories.prototype = {
|
||||
this._addFilter(sections[i], i);
|
||||
|
||||
this._selectCategory(-1);
|
||||
this._view.refresh(apps);
|
||||
|
||||
if (this._focusDummy) {
|
||||
let focused = this._focusDummy.has_key_focus();
|
||||
@@ -342,7 +316,7 @@ BaseAppSearchProvider.prototype = {
|
||||
timestamp: null });
|
||||
|
||||
let app = this._appSys.get_app(id);
|
||||
app.open_new_window(params.workspace ? params.workspace.index() : -1);
|
||||
app.open_new_window(params.workspace ? params.workspace.get_index() : -1);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -432,8 +406,6 @@ AppWellIcon.prototype = {
|
||||
this.icon = new AppIcon(app, iconParams);
|
||||
this.actor.set_child(this.icon.actor);
|
||||
|
||||
this.actor.label_actor = this.icon.label;
|
||||
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||
this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu));
|
||||
@@ -613,6 +585,7 @@ AppIconMenu.prototype = {
|
||||
this.blockSourceEvents = true;
|
||||
|
||||
this._source = source;
|
||||
this._eventTemplate = new Zeitgeist.Event('', '', "application://" + this._source.app.get_id(), [], []);
|
||||
|
||||
this.connect('activate', Lang.bind(this, this._onActivate));
|
||||
this.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
|
||||
@@ -659,6 +632,63 @@ AppIconMenu.prototype = {
|
||||
this._toggleFavoriteMenuItem = this._appendMenuItem(isFavorite ? _("Remove from Favorites")
|
||||
: _("Add to Favorites"));
|
||||
|
||||
Zeitgeist.findEvents([new Date().getTime() - 86400000*90, Zeitgeist.MAX_TIMESTAMP],
|
||||
[this._eventTemplate],
|
||||
Zeitgeist.StorageState.ANY,
|
||||
100,
|
||||
Zeitgeist.ResultType.MOST_RECENT_SUBJECTS,
|
||||
Lang.bind(this, this._appendJumplist));
|
||||
},
|
||||
|
||||
_appendJumplist: function (events) {
|
||||
let fetchedUris = [];
|
||||
let hasJumplist = false;
|
||||
|
||||
function appendEvents(events2, count, type) {
|
||||
if (count == null) {
|
||||
count = 3;
|
||||
}
|
||||
if (type == null) {
|
||||
type = "emblem-favorite";
|
||||
}
|
||||
let j = 0;
|
||||
if (events.length > 0) {
|
||||
for (let i in events) {
|
||||
let uri = events[i].subjects[0].uri.replace('file://', '');
|
||||
uri = uri.replace(/\%20/g, ' '); // FIXME: properly unescape, or get the display name otherwise
|
||||
if (fetchedUris.indexOf(uri) == -1 &&
|
||||
(GLib.file_test(uri, GLib.FileTest.EXISTS) || this._source.app.get_id() == "tomboy.desktop")) {
|
||||
if (!hasJumplist) {
|
||||
this._appendSeparator();
|
||||
hasJumplist = true;
|
||||
}
|
||||
this._appendJumplistItem(events[i], type);
|
||||
fetchedUris.push(uri);
|
||||
j++;
|
||||
if (j >= count)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
appendEvents.call(this, events, 4, "document-open-recent");
|
||||
Zeitgeist.findEvents([new Date().getTime() - 86400000*90, Zeitgeist.MAX_TIMESTAMP],
|
||||
[this._eventTemplate],
|
||||
Zeitgeist.StorageState.ANY,
|
||||
100,
|
||||
Zeitgeist.ResultType.MOST_POPULAR_SUBJECTS,
|
||||
Lang.bind(this, appendEvents));
|
||||
},
|
||||
|
||||
_appendJumplistItem: function (event, type) {
|
||||
let info = new DocInfo.ZeitgeistItemInfo(event);
|
||||
let item = new PopupMenu.PopupImageMenuItem(info.name, type);
|
||||
this.addMenuItem(item);
|
||||
item.connect('activate', Lang.bind(this, function () {
|
||||
let app = new Gio.DesktopAppInfo.new(this._source.app.get_id());
|
||||
app.launch_uris([info.uri], null);
|
||||
}));
|
||||
},
|
||||
|
||||
_appendSeparator: function () {
|
||||
|
@@ -3,6 +3,8 @@
|
||||
const Shell = imports.gi.Shell;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
|
||||
|
@@ -8,6 +8,9 @@ const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Pango = imports.gi.Pango;
|
||||
const Gettext_gtk30 = imports.gettext.domain('gtk30');
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
const C_ = Gettext.pgettext;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
|
@@ -14,6 +14,7 @@ const Params = imports.misc.params;
|
||||
// workspace content.
|
||||
|
||||
const defaultParams = {
|
||||
visibleInOverview: false,
|
||||
visibleInFullscreen: false,
|
||||
affectsStruts: true,
|
||||
affectsInputRegion: true
|
||||
@@ -72,8 +73,11 @@ Chrome.prototype = {
|
||||
// in its visibility will affect the input region, but NOT the
|
||||
// struts.
|
||||
//
|
||||
// If %visibleInFullscreen is %true, the actor will be visible
|
||||
// even when a fullscreen window should be covering it.
|
||||
// If %visibleInOverview is %true in @params, @actor will remain
|
||||
// visible when the overview is brought up. Otherwise it will
|
||||
// automatically be hidden. Likewise, if %visibleInFullscreen is
|
||||
// %true, the actor will be visible even when a fullscreen window
|
||||
// should be covering it.
|
||||
//
|
||||
// If %affectsStruts or %affectsInputRegion is %false, the actor
|
||||
// will not have the indicated effect.
|
||||
@@ -92,7 +96,7 @@ Chrome.prototype = {
|
||||
//
|
||||
// @params can have any of the same values as in addActor(), though
|
||||
// some possibilities don't make sense (eg, trying to have a
|
||||
// %visibleInFullscreen child of a non-%visibleInFullscreen parent).
|
||||
// %visibleInOverview child of a non-%visibleInOverview parent).
|
||||
// By default, @actor has the same params as its chrome ancestor.
|
||||
trackActor: function(actor, params) {
|
||||
let ancestor = actor.get_parent();
|
||||
@@ -185,8 +189,10 @@ Chrome.prototype = {
|
||||
_updateVisibility: function() {
|
||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
||||
let actorData = this._trackedActors[i];
|
||||
if (!this._inOverview && !actorData.visibleInFullscreen &&
|
||||
this._findMonitorForActor(actorData.actor).inFullscreen)
|
||||
if (this._inOverview && !actorData.visibleInOverview)
|
||||
this.actor.set_skip_paint(actorData.actor, true);
|
||||
else if (!this._inOverview && !actorData.visibleInFullscreen &&
|
||||
this._findMonitorForActor(actorData.actor).inFullscreen)
|
||||
this.actor.set_skip_paint(actorData.actor, true);
|
||||
else
|
||||
this.actor.set_skip_paint(actorData.actor, false);
|
||||
@@ -329,6 +335,11 @@ Chrome.prototype = {
|
||||
this._updateVisibility();
|
||||
this._queueUpdateRegions();
|
||||
}
|
||||
|
||||
// Figure out where the pointer is in case we lost track of
|
||||
// it during a grab. (In particular, if a trayicon popup menu
|
||||
// is dismissed, see if we need to close the message tray.)
|
||||
global.sync_pointer();
|
||||
},
|
||||
|
||||
_updateRegions: function() {
|
||||
|
@@ -323,6 +323,6 @@ CtrlAltTabSwitcher.prototype = {
|
||||
let text = new St.Label({ text: item.name });
|
||||
box.add(text, { x_fill: false });
|
||||
|
||||
this.addItem(box, text);
|
||||
this.addItem(box);
|
||||
}
|
||||
};
|
||||
|
@@ -6,6 +6,8 @@ const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const AppDisplay = imports.ui.appDisplay;
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
@@ -324,7 +326,7 @@ Dash.prototype = {
|
||||
this._favRemoveTarget = null;
|
||||
}));
|
||||
}
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
DND.removeMonitor(this._dragMonitor);
|
||||
},
|
||||
|
||||
_onDragMotion: function(dragEvent) {
|
||||
@@ -342,10 +344,7 @@ Dash.prototype = {
|
||||
|
||||
let srcIsFavorite = (id in favorites);
|
||||
|
||||
if (srcIsFavorite &&
|
||||
dragEvent.source.actor &&
|
||||
this.actor.contains (dragEvent.source.actor) &&
|
||||
this._favRemoveTarget == null) {
|
||||
if (srcIsFavorite && this._favRemoveTarget == null) {
|
||||
this._favRemoveTarget = new RemoveFavoriteIcon();
|
||||
this._favRemoveTarget.icon.setIconSize(this.iconSize);
|
||||
this._box.add(this._favRemoveTarget.actor);
|
||||
|
@@ -8,6 +8,8 @@ const Cairo = imports.cairo;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Util = imports.misc.util;
|
||||
const Main = imports.ui.main;
|
||||
@@ -198,7 +200,6 @@ DateMenuButton.prototype = {
|
||||
|
||||
_onPreferencesActivate: function() {
|
||||
this.menu.close();
|
||||
Main.overview.hide();
|
||||
let app = Shell.AppSystem.get_default().get_app('gnome-datetime-panel.desktop');
|
||||
app.activate(-1);
|
||||
},
|
||||
|
@@ -61,7 +61,7 @@ function addDragMonitor(monitor) {
|
||||
dragMonitors.push(monitor);
|
||||
}
|
||||
|
||||
function removeDragMonitor(monitor) {
|
||||
function removeMonitor(monitor) {
|
||||
for (let i = 0; i < dragMonitors.length; i++)
|
||||
if (dragMonitors[i] == monitor) {
|
||||
dragMonitors.splice(i, 1);
|
||||
@@ -284,13 +284,13 @@ _Draggable.prototype = {
|
||||
this._dragOffsetY = actorStageY - this._dragStartY;
|
||||
|
||||
// Set the actor's scale such that it will keep the same
|
||||
// transformed size when it's reparented to the uiGroup
|
||||
// transformed size when it's reparented to the stage
|
||||
let [scaledWidth, scaledHeight] = this.actor.get_transformed_size();
|
||||
this.actor.set_scale(scaledWidth / this.actor.width,
|
||||
scaledHeight / this.actor.height);
|
||||
}
|
||||
|
||||
this._dragActor.reparent(Main.uiGroup);
|
||||
this._dragActor.reparent(this.actor.get_stage());
|
||||
this._dragActor.raise_top();
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||
|
||||
@@ -442,7 +442,7 @@ _Draggable.prototype = {
|
||||
return true;
|
||||
// If it accepted the drop without taking the actor,
|
||||
// handle it ourselves.
|
||||
if (this._dragActor.get_parent() == Main.uiGroup) {
|
||||
if (this._dragActor.get_parent() == this._dragActor.get_stage()) {
|
||||
if (this._restoreOnSuccess) {
|
||||
this._restoreDragActor(event.get_time());
|
||||
return true;
|
||||
|
@@ -1,47 +0,0 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const DocInfo = imports.misc.docInfo;
|
||||
const Params = imports.misc.params;
|
||||
const Search = imports.ui.search;
|
||||
|
||||
|
||||
function DocSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
DocSearchProvider.prototype = {
|
||||
__proto__: Search.SearchProvider.prototype,
|
||||
|
||||
_init: function(name) {
|
||||
Search.SearchProvider.prototype._init.call(this, _("RECENT ITEMS"));
|
||||
this._docManager = DocInfo.getDocManager();
|
||||
},
|
||||
|
||||
getResultMeta: function(resultId) {
|
||||
let docInfo = this._docManager.lookupByUri(resultId);
|
||||
if (!docInfo)
|
||||
return null;
|
||||
return { 'id': resultId,
|
||||
'name': docInfo.name,
|
||||
'createIcon': function(size) {
|
||||
return docInfo.createIcon(size);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
activateResult: function(id, params) {
|
||||
params = Params.parse(params, { workspace: null,
|
||||
timestamp: null });
|
||||
|
||||
let docInfo = this._docManager.lookupByUri(id);
|
||||
docInfo.launch(params.workspace ? params.workspace.index() : -1);
|
||||
},
|
||||
|
||||
getInitialResultSet: function(terms) {
|
||||
return this._docManager.initialSearch(terms);
|
||||
},
|
||||
|
||||
getSubsearchResultSet: function(previousResults, terms) {
|
||||
return this._docManager.subsearch(previousResults, terms);
|
||||
}
|
||||
};
|
@@ -22,6 +22,9 @@ const DBus = imports.dbus;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gdm = imports.gi.Gdm;
|
||||
const GLib = imports.gi.GLib;
|
||||
@@ -363,10 +366,8 @@ EndSessionDialog.prototype = {
|
||||
|
||||
if (this._user.is_loaded && !dialogContent.iconName) {
|
||||
let iconFile = this._user.get_icon_file();
|
||||
if (GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
||||
this._setIconFromFile(iconFile, dialogContent.iconStyleClass);
|
||||
else
|
||||
this._setIconFromName('avatar-default', dialogContent.iconStyleClass);
|
||||
|
||||
this._setIconFromFile(iconFile, dialogContent.iconStyleClass);
|
||||
} else if (dialogContent.iconName) {
|
||||
this._setIconFromName(dialogContent.iconName,
|
||||
dialogContent.iconStyleClass);
|
||||
@@ -405,6 +406,10 @@ EndSessionDialog.prototype = {
|
||||
},
|
||||
|
||||
_updateButtons: function() {
|
||||
if (this.state != ModalDialog.State.OPENING &&
|
||||
this.state != ModalDialog.State.OPENED)
|
||||
return;
|
||||
|
||||
let dialogContent = DialogContent[this._type];
|
||||
let buttons = [{ action: Lang.bind(this, this.cancel),
|
||||
label: _("Cancel"),
|
||||
@@ -514,12 +519,11 @@ EndSessionDialog.prototype = {
|
||||
this._inhibitors.push(inhibitor);
|
||||
}
|
||||
|
||||
this._updateButtons();
|
||||
|
||||
if (!this.open(timestamp))
|
||||
throw new DBus.DBusError('org.gnome.Shell.ModalDialog.GrabError',
|
||||
"Cannot grab pointer and keyboard");
|
||||
|
||||
this._updateButtons();
|
||||
this._updateContent();
|
||||
|
||||
let signalId = this.connect('opened',
|
||||
|
@@ -1,22 +1,14 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
imports.gi.versions.Clutter = '1.0';
|
||||
imports.gi.versions.Gio = '2.0';
|
||||
imports.gi.versions.Gdk = '3.0';
|
||||
imports.gi.versions.GdkPixbuf = '2.0';
|
||||
imports.gi.versions.Gtk = '3.0';
|
||||
|
||||
const Clutter = imports.gi.Clutter;;
|
||||
const Gettext = imports.gettext;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Gettext_gtk30 = imports.gettext.domain('gtk30');
|
||||
|
||||
// We can't import shell JS modules yet, because they may have
|
||||
// variable initializations, etc, that depend on init() already having
|
||||
// been run.
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const Format = imports.misc.format;
|
||||
|
||||
// "monkey patch" in some varargs ClutterContainer methods; we need
|
||||
// to do this per-container class since there is no representation
|
||||
@@ -39,42 +31,49 @@ function _patchContainerClass(containerClass) {
|
||||
};
|
||||
}
|
||||
|
||||
// Replace @method with something that throws an error instead
|
||||
function _blockMethod(method, replacement, reason) {
|
||||
let match = method.match(/^(.+)\.([^.]+)$/);
|
||||
if (!match)
|
||||
throw new Error('Bad method name "' + method + '"');
|
||||
let proto = 'imports.gi.' + match[1] + '.prototype';
|
||||
let property = match[2];
|
||||
|
||||
if (!global.set_property_mutable(proto, property, true))
|
||||
throw new Error('Bad method name "' + method + '"');
|
||||
|
||||
// eval() is evil in general, but we know it's safe here since
|
||||
// set_property_mutable() would have failed if proto was
|
||||
// malformed.
|
||||
let node = eval(proto);
|
||||
|
||||
let msg = 'Do not use "' + method + '".';
|
||||
if (replacement)
|
||||
msg += ' Use "' + replacement + '" instead.';
|
||||
if (reason)
|
||||
msg += ' (' + reason + ')';
|
||||
|
||||
node[property] = function() {
|
||||
throw new Error(msg);
|
||||
};
|
||||
|
||||
global.set_property_mutable(proto, property, false);
|
||||
}
|
||||
|
||||
function init() {
|
||||
// Add some bindings to the global JS namespace; (gjs keeps the web
|
||||
// browser convention of having that namespace be called 'window'.)
|
||||
window.global = Shell.Global.get();
|
||||
|
||||
window._ = Gettext.gettext;
|
||||
window.C_ = Gettext.pgettext;
|
||||
window.ngettext = Gettext.ngettext;
|
||||
|
||||
// Set the default direction for St widgets (this needs to be done before any use of St)
|
||||
if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) {
|
||||
St.Widget.set_default_direction(St.TextDirection.RTL);
|
||||
}
|
||||
|
||||
// Miscellaneous monkeypatching
|
||||
_patchContainerClass(St.BoxLayout);
|
||||
_patchContainerClass(St.Table);
|
||||
|
||||
Clutter.Actor.prototype.toString = function() {
|
||||
return St.describe_actor(this);
|
||||
};
|
||||
|
||||
let origToString = Object.prototype.toString;
|
||||
Object.prototype.toString = function() {
|
||||
let base = origToString.call(this);
|
||||
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
||||
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
||||
else
|
||||
return base;
|
||||
};
|
||||
Tweener.init();
|
||||
String.prototype.format = Format.format;
|
||||
|
||||
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
|
||||
Date.prototype.toLocaleFormat = function(format) {
|
||||
return Shell.util_format_date(format, this.getTime());
|
||||
};
|
||||
|
||||
// Set the default direction for St widgets (this needs to be done before any use of St)
|
||||
if (Gettext_gtk30.gettext('default:LTR') == 'default:RTL') {
|
||||
St.Widget.set_default_direction(St.TextDirection.RTL);
|
||||
}
|
||||
|
||||
let slowdownEnv = GLib.getenv('GNOME_SHELL_SLOWDOWN_FACTOR');
|
||||
if (slowdownEnv) {
|
||||
let factor = parseFloat(slowdownEnv);
|
||||
@@ -82,10 +81,24 @@ function init() {
|
||||
St.set_slow_down_factor(factor);
|
||||
}
|
||||
|
||||
// OK, now things are initialized enough that we can import shell JS
|
||||
const Format = imports.misc.format;
|
||||
const Tweener = imports.ui.tweener;
|
||||
_patchContainerClass(St.BoxLayout);
|
||||
_patchContainerClass(St.Table);
|
||||
|
||||
Tweener.init();
|
||||
String.prototype.format = Format.format;
|
||||
Clutter.Actor.prototype.toString = function() {
|
||||
return St.describe_actor(this);
|
||||
};
|
||||
|
||||
if (window.global === undefined) // test environment
|
||||
return;
|
||||
|
||||
_blockMethod('Clutter.Event.get_state', 'Shell.get_event_state',
|
||||
'gjs\'s handling of Clutter.ModifierType is broken. See bug 597292.');
|
||||
_blockMethod('Gdk.Window.get_device_position', 'global.get_pointer',
|
||||
'gjs\'s handling of Gdk.ModifierType is broken. See bug 597292.');
|
||||
|
||||
// Now close the back door to prevent extensions from trying to
|
||||
// abuse it. We can't actually delete it since
|
||||
// Shell.Global.prototype itself is read-only.
|
||||
global.set_property_mutable('imports.gi.Shell.Global.prototype', 'set_property_mutable', true);
|
||||
Shell.Global.prototype.set_property_mutable = undefined;
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
|
||||
@@ -23,9 +22,8 @@ const ExtensionType = {
|
||||
const extensionMeta = {};
|
||||
// Maps uuid -> importer object (extension directory tree)
|
||||
const extensions = {};
|
||||
// Arrays of uuids
|
||||
// Array of uuids
|
||||
var disabledExtensions;
|
||||
var enabledExtensions;
|
||||
// GFile for user extensions
|
||||
var userExtensionsDir = null;
|
||||
|
||||
@@ -69,13 +67,7 @@ function loadExtension(dir, enabled, type) {
|
||||
return;
|
||||
}
|
||||
|
||||
let metadataContents;
|
||||
try {
|
||||
metadataContents = Shell.get_file_contents_utf8_sync(metadataFile.get_path());
|
||||
} catch (e) {
|
||||
global.logError(baseErrorString + 'Failed to load metadata.json: ' + e);
|
||||
return;
|
||||
}
|
||||
let [success, metadataContents, len, etag] = metadataFile.load_contents(null);
|
||||
let meta;
|
||||
try {
|
||||
meta = JSON.parse(metadataContents);
|
||||
@@ -179,7 +171,6 @@ function init() {
|
||||
}
|
||||
|
||||
disabledExtensions = global.settings.get_strv('disabled-extensions', -1);
|
||||
enabledExtensions = global.settings.get_strv('enabled-extensions', -1);
|
||||
}
|
||||
|
||||
function _loadExtensionsIn(dir, type) {
|
||||
@@ -197,10 +188,7 @@ function _loadExtensionsIn(dir, type) {
|
||||
if (fileType != Gio.FileType.DIRECTORY)
|
||||
continue;
|
||||
let name = info.get_name();
|
||||
// Enable all but disabled extensions if enabledExtensions is not set.
|
||||
// If it is set, enable one those, except they are disabled as well.
|
||||
let enabled = (enabledExtensions.length == 0 || enabledExtensions.indexOf(name) >= 0)
|
||||
&& disabledExtensions.indexOf(name) < 0;
|
||||
let enabled = disabledExtensions.indexOf(name) < 0;
|
||||
let child = dir.get_child(name);
|
||||
loadExtension(child, enabled, type);
|
||||
}
|
||||
|
@@ -42,10 +42,10 @@ BaseIcon.prototype = {
|
||||
box.add_actor(this._iconBin);
|
||||
|
||||
if (params.showLabel) {
|
||||
this.label = new St.Label({ text: label });
|
||||
box.add_actor(this.label);
|
||||
this._name = new St.Label({ text: label });
|
||||
box.add_actor(this._name);
|
||||
} else {
|
||||
this.label = null;
|
||||
this._name = null;
|
||||
}
|
||||
|
||||
if (params.createIcon)
|
||||
@@ -67,8 +67,8 @@ BaseIcon.prototype = {
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
if (this.label) {
|
||||
let [labelMinHeight, labelNatHeight] = this.label.get_preferred_height(-1);
|
||||
if (this._name) {
|
||||
let [labelMinHeight, labelNatHeight] = this._name.get_preferred_height(-1);
|
||||
preferredHeight += this._spacing + labelNatHeight;
|
||||
|
||||
let labelHeight = availHeight >= preferredHeight ? labelNatHeight
|
||||
@@ -79,7 +79,7 @@ BaseIcon.prototype = {
|
||||
childBox.x2 = availWidth;
|
||||
childBox.y1 = iconSize + this._spacing;
|
||||
childBox.y2 = childBox.y1 + labelHeight;
|
||||
this.label.allocate(childBox, flags);
|
||||
this._name.allocate(childBox, flags);
|
||||
}
|
||||
|
||||
childBox.x1 = Math.floor((availWidth - iconNatWidth) / 2);
|
||||
@@ -98,8 +98,8 @@ BaseIcon.prototype = {
|
||||
alloc.min_size = iconMinHeight;
|
||||
alloc.natural_size = iconNatHeight;
|
||||
|
||||
if (this.label) {
|
||||
let [labelMinHeight, labelNatHeight] = this.label.get_preferred_height(forWidth);
|
||||
if (this._name) {
|
||||
let [labelMinHeight, labelNatHeight] = this._name.get_preferred_height(forWidth);
|
||||
alloc.min_size += this._spacing + labelMinHeight;
|
||||
alloc.natural_size += this._spacing + labelNatHeight;
|
||||
}
|
||||
|
@@ -5,13 +5,14 @@ const Cogl = imports.gi.Cogl;
|
||||
const GConf = imports.gi.GConf;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Pango = imports.gi.Pango;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const History = imports.misc.history;
|
||||
const ExtensionSystem = imports.ui.extensionSystem;
|
||||
@@ -25,11 +26,13 @@ var commandHeader = 'const Clutter = imports.gi.Clutter; ' +
|
||||
'const Gtk = imports.gi.Gtk; ' +
|
||||
'const Mainloop = imports.mainloop; ' +
|
||||
'const Meta = imports.gi.Meta; ' +
|
||||
'const Semantic = imports.misc.semantic' +
|
||||
'const Shell = imports.gi.Shell; ' +
|
||||
'const Tp = imports.gi.TelepathyGLib; ' +
|
||||
'const Main = imports.ui.main; ' +
|
||||
'const Lang = imports.lang; ' +
|
||||
'const Tweener = imports.ui.tweener; ' +
|
||||
'const Zeitgeist = imports.misc.zeitgeist; ' +
|
||||
/* Utility functions...we should probably be able to use these
|
||||
* in the shell core code too. */
|
||||
'const stage = global.stage; ' +
|
||||
@@ -99,19 +102,12 @@ Notebook.prototype = {
|
||||
selectIndex: function(index) {
|
||||
if (index == this._selectedIndex)
|
||||
return;
|
||||
this._unselect();
|
||||
if (index < 0) {
|
||||
this._unselect();
|
||||
this.emit('selection', null);
|
||||
return;
|
||||
}
|
||||
|
||||
// Focus the new tab before unmapping the old one
|
||||
let tabData = this._tabs[index];
|
||||
if (!tabData.scrollView.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false))
|
||||
this.actor.grab_key_focus();
|
||||
|
||||
this._unselect();
|
||||
|
||||
tabData.labelBox.add_style_pseudo_class('selected');
|
||||
tabData.scrollView.show();
|
||||
this._selectedIndex = index;
|
||||
@@ -582,53 +578,6 @@ ErrorLog.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
function Memory() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
Memory.prototype = {
|
||||
_init: function() {
|
||||
this.actor = new St.BoxLayout({ vertical: true });
|
||||
this._glibc_uordblks = new St.Label();
|
||||
this.actor.add(this._glibc_uordblks);
|
||||
|
||||
this._js_bytes = new St.Label();
|
||||
this.actor.add(this._js_bytes);
|
||||
|
||||
this._gjs_boxed = new St.Label();
|
||||
this.actor.add(this._gjs_boxed);
|
||||
|
||||
this._gjs_gobject = new St.Label();
|
||||
this.actor.add(this._gjs_gobject);
|
||||
|
||||
this._gjs_function = new St.Label();
|
||||
this.actor.add(this._gjs_function);
|
||||
|
||||
this._gjs_closure = new St.Label();
|
||||
this.actor.add(this._gjs_closure);
|
||||
|
||||
this._gcbutton = new St.Button({ label: 'Full GC',
|
||||
style_class: 'lg-obj-inspector-button' });
|
||||
this._gcbutton.connect('clicked', Lang.bind(this, function () { global.gc(); this._renderText(); }));
|
||||
this.actor.add(this._gcbutton, { x_align: St.Align.START,
|
||||
x_fill: false });
|
||||
|
||||
this.actor.connect('notify::mapped', Lang.bind(this, this._renderText));
|
||||
},
|
||||
|
||||
_renderText: function() {
|
||||
if (!this.actor.mapped)
|
||||
return;
|
||||
let memInfo = global.get_memory_info();
|
||||
this._glibc_uordblks.text = 'glibc_uordblks: ' + memInfo.glibc_uordblks;
|
||||
this._js_bytes.text = 'js bytes: ' + memInfo.js_bytes;
|
||||
this._gjs_boxed.text = 'gjs_boxed: ' + memInfo.gjs_boxed;
|
||||
this._gjs_gobject.text = 'gjs_gobject: ' + memInfo.gjs_gobject;
|
||||
this._gjs_function.text = 'gjs_function: ' + memInfo.gjs_function;
|
||||
this._gjs_closure.text = 'gjs_closure: ' + memInfo.gjs_closure;
|
||||
}
|
||||
};
|
||||
|
||||
function Extensions() {
|
||||
this._init();
|
||||
}
|
||||
@@ -760,7 +709,6 @@ LookingGlass.prototype = {
|
||||
let toolbar = new St.BoxLayout({ name: 'Toolbar' });
|
||||
this.actor.add_actor(toolbar);
|
||||
let inspectIcon = new St.Icon({ icon_name: 'gtk-color-picker',
|
||||
icon_type: St.IconType.FULLCOLOR,
|
||||
icon_size: 24 });
|
||||
toolbar.add_actor(inspectIcon);
|
||||
inspectIcon.reactive = true;
|
||||
@@ -798,7 +746,12 @@ LookingGlass.prototype = {
|
||||
let label = new St.Label({ text: 'js>>> ' });
|
||||
entryArea.add(label);
|
||||
|
||||
this._entry = new St.Entry({ can_focus: true });
|
||||
this._entry = new St.Entry();
|
||||
/* unmapping the edit box will un-focus it, undo that */
|
||||
notebook.connect('selection', Lang.bind(this, function (nb, child) {
|
||||
if (child == this._evalBox)
|
||||
global.stage.set_key_focus(this._entry);
|
||||
}));
|
||||
entryArea.add(this._entry, { expand: true });
|
||||
|
||||
this._windowList = new WindowList();
|
||||
@@ -811,9 +764,6 @@ LookingGlass.prototype = {
|
||||
this._errorLog = new ErrorLog();
|
||||
notebook.appendPage('Errors', this._errorLog.actor);
|
||||
|
||||
this._memory = new Memory();
|
||||
notebook.appendPage('Memory', this._memory.actor);
|
||||
|
||||
this._extensions = new Extensions();
|
||||
notebook.appendPage('Extensions', this._extensions.actor);
|
||||
|
||||
@@ -960,7 +910,6 @@ LookingGlass.prototype = {
|
||||
if (!Main.pushModal(this._entry))
|
||||
return;
|
||||
|
||||
this._notebook.selectIndex(0);
|
||||
this.actor.show();
|
||||
this.actor.lower(Main.chrome.actor);
|
||||
this._open = true;
|
||||
|
@@ -1,5 +1,11 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
imports.gi.versions.Clutter = '1.0';
|
||||
imports.gi.versions.Gio = '2.0';
|
||||
imports.gi.versions.Gdk = '3.0';
|
||||
imports.gi.versions.GdkPixbuf = '2.0';
|
||||
imports.gi.versions.Gtk = '3.0';
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const DBus = imports.dbus;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
@@ -11,6 +17,8 @@ const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Chrome = imports.ui.chrome;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
@@ -67,7 +75,12 @@ let _cssStylesheet = null;
|
||||
let background = null;
|
||||
|
||||
function start() {
|
||||
// Monkey patch utility functions into the global proxy;
|
||||
// Add a binding for 'global' in the global JS namespace; (gjs
|
||||
// keeps the web browser convention of having that namespace be
|
||||
// called 'window'.)
|
||||
window.global = Shell.Global.get();
|
||||
|
||||
// Now monkey patch utility functions into the global proxy;
|
||||
// This is easier and faster than indirecting down into global
|
||||
// if we want to call back up into JS.
|
||||
global.logError = _logError;
|
||||
@@ -89,6 +102,8 @@ function start() {
|
||||
// not loading any events until the user presses the clock
|
||||
global.launch_calendar_server();
|
||||
|
||||
Environment.init();
|
||||
|
||||
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
||||
// also initialize ShellAppSystem first. ShellAppSystem
|
||||
// needs to load all the .desktop files, and ShellWindowTracker
|
||||
@@ -208,7 +223,6 @@ function start() {
|
||||
|
||||
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
|
||||
global.screen.connect('window-left-monitor', _windowLeftMonitor);
|
||||
global.screen.connect('restacked', _windowsRestacked);
|
||||
|
||||
_nWorkspacesChanged();
|
||||
}
|
||||
@@ -311,13 +325,6 @@ function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) {
|
||||
_queueCheckWorkspaces();
|
||||
}
|
||||
|
||||
function _windowsRestacked() {
|
||||
// Figure out where the pointer is in case we lost track of
|
||||
// it during a grab. (In particular, if a trayicon popup menu
|
||||
// is dismissed, see if we need to close the message tray.)
|
||||
global.sync_pointer();
|
||||
}
|
||||
|
||||
function _queueCheckWorkspaces() {
|
||||
if (_checkWorkspacesId == 0)
|
||||
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
|
||||
@@ -401,21 +408,12 @@ function setThemeStylesheet(cssStylesheet)
|
||||
*/
|
||||
function loadTheme() {
|
||||
let themeContext = St.ThemeContext.get_for_stage (global.stage);
|
||||
let previousTheme = themeContext.get_theme();
|
||||
|
||||
let cssStylesheet = _defaultCssStylesheet;
|
||||
if (_cssStylesheet != null)
|
||||
cssStylesheet = _cssStylesheet;
|
||||
|
||||
let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
|
||||
|
||||
if (previousTheme) {
|
||||
let customStylesheets = previousTheme.get_custom_stylesheets();
|
||||
|
||||
for (let i = 0; i < customStylesheets.length; i++)
|
||||
theme.load_stylesheet(customStylesheets[i]);
|
||||
}
|
||||
|
||||
themeContext.set_theme (theme);
|
||||
}
|
||||
|
||||
|
@@ -20,6 +20,9 @@ const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const ANIMATION_TIME = 0.2;
|
||||
const NOTIFICATION_TIMEOUT = 4;
|
||||
const SUMMARY_TIMEOUT = 1;
|
||||
@@ -408,7 +411,6 @@ Notification.prototype = {
|
||||
this._bannerBodyText = null;
|
||||
this._bannerBodyMarkup = false;
|
||||
this._titleFitsInBannerMode = true;
|
||||
this._titleDirection = St.TextDirection.NONE;
|
||||
this._spacing = 0;
|
||||
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
|
||||
|
||||
@@ -508,19 +510,6 @@ Notification.prototype = {
|
||||
title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : '';
|
||||
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
|
||||
|
||||
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
|
||||
this._titleDirection = St.TextDirection.RTL;
|
||||
else
|
||||
this._titleDirection = St.TextDirection.LTR;
|
||||
|
||||
// Let the title's text direction control the overall direction
|
||||
// of the notification - in case where different scripts are used
|
||||
// in the notification, this is the right thing for the icon, and
|
||||
// arguably for action buttons as well. Labels other than the title
|
||||
// will be allocated at the available width, so that their alignment
|
||||
// is done correctly automatically.
|
||||
this._table.set_direction(this._titleDirection);
|
||||
|
||||
// Unless the notification has custom content, we save this._bannerBodyText
|
||||
// to add it to the content of the notification if the notification is
|
||||
// expandable due to other elements in its content area or due to the banner
|
||||
@@ -557,7 +546,7 @@ Notification.prototype = {
|
||||
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
||||
vscrollbar_policy: this._scrollPolicy,
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
style_class: 'vfade' });
|
||||
vfade: true });
|
||||
this._table.add(this._scrollArea, { row: 1, col: 1 });
|
||||
this._contentArea = new St.BoxLayout({ name: 'notification-body',
|
||||
vertical: true });
|
||||
@@ -722,39 +711,23 @@ Notification.prototype = {
|
||||
let availWidth = box.x2 - box.x1;
|
||||
|
||||
let titleBox = new Clutter.ActorBox();
|
||||
let titleBoxW = Math.min(titleNatW, availWidth);
|
||||
if (this._titleDirection == St.TextDirection.RTL) {
|
||||
titleBox.x1 = availWidth - titleBoxW;
|
||||
titleBox.x2 = availWidth;
|
||||
} else {
|
||||
titleBox.x1 = 0;
|
||||
titleBox.x2 = titleBoxW;
|
||||
}
|
||||
titleBox.y1 = 0;
|
||||
titleBox.x1 = titleBox.y1 = 0;
|
||||
titleBox.x2 = Math.min(titleNatW, availWidth);
|
||||
titleBox.y2 = titleNatH;
|
||||
this._titleLabel.allocate(titleBox, flags);
|
||||
this._titleFitsInBannerMode = (titleNatW <= availWidth);
|
||||
|
||||
let bannerFits = true;
|
||||
if (titleBoxW + this._spacing > availWidth) {
|
||||
if (titleBox.x2 + this._spacing > availWidth) {
|
||||
this._bannerLabel.opacity = 0;
|
||||
bannerFits = false;
|
||||
} else {
|
||||
let bannerBox = new Clutter.ActorBox();
|
||||
|
||||
if (this._titleDirection == St.TextDirection.RTL) {
|
||||
bannerBox.x1 = 0;
|
||||
bannerBox.x2 = titleBox.x1 - this._spacing;
|
||||
|
||||
bannerFits = (bannerBox.x2 - bannerNatW >= 0);
|
||||
} else {
|
||||
bannerBox.x1 = titleBox.x2 + this._spacing;
|
||||
bannerBox.x2 = availWidth;
|
||||
|
||||
bannerFits = (bannerBox.x1 + bannerNatW <= availWidth);
|
||||
}
|
||||
bannerBox.x1 = titleBox.x2 + this._spacing;
|
||||
bannerBox.y1 = 0;
|
||||
bannerBox.x2 = Math.min(bannerBox.x1 + bannerNatW, availWidth);
|
||||
bannerBox.y2 = titleNatH;
|
||||
bannerFits = (bannerBox.x1 + bannerNatW <= availWidth);
|
||||
this._bannerLabel.allocate(bannerBox, flags);
|
||||
|
||||
// Make _bannerLabel visible if the entire notification
|
||||
@@ -829,7 +802,6 @@ Notification.prototype = {
|
||||
// Restore banner opacity in case the notification is shown in the
|
||||
// banner mode again on update.
|
||||
this._bannerLabel.opacity = 255;
|
||||
this.emit('collapsed');
|
||||
},
|
||||
|
||||
_onActionInvoked: function(actor, mouseButtonClicked, id) {
|
||||
@@ -894,11 +866,6 @@ Source.prototype = {
|
||||
this.isTransient = isTransient;
|
||||
},
|
||||
|
||||
setTitle: function(newTitle) {
|
||||
this.title = newTitle;
|
||||
this.emit('title-changed');
|
||||
},
|
||||
|
||||
// Called to create a new icon actor (of size this.ICON_SIZE).
|
||||
// Must be overridden by the subclass if you do not pass icons
|
||||
// explicitly to the Notification() constructor.
|
||||
@@ -1001,11 +968,6 @@ SummaryItem.prototype = {
|
||||
this._sourceTitleBin.child = this._sourceTitle;
|
||||
this._sourceTitleBin.width = 0;
|
||||
|
||||
this.source.connect('title-changed',
|
||||
Lang.bind(this, function() {
|
||||
this._sourceTitle.text = source.title;
|
||||
}));
|
||||
|
||||
this._sourceBox.add(this._sourceIcon, { y_fill: false });
|
||||
this._sourceBox.add(this._sourceTitleBin, { expand: true, y_fill: false });
|
||||
this.actor.child = this._sourceBox;
|
||||
@@ -1013,7 +975,7 @@ SummaryItem.prototype = {
|
||||
this.notificationStackView = new St.ScrollView({ name: source.isChat ? '' : 'summary-notification-stack-scrollview',
|
||||
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
style_class: 'vfade' });
|
||||
vfade: true });
|
||||
this.notificationStack = new St.BoxLayout({ name: 'summary-notification-stack',
|
||||
vertical: true });
|
||||
this.notificationStackView.add_actor(this.notificationStack);
|
||||
@@ -1253,7 +1215,7 @@ MessageTray.prototype = {
|
||||
this._reNotifyAfterHideNotification = null;
|
||||
|
||||
Main.chrome.addActor(this.actor, { affectsStruts: false,
|
||||
visibleInFullscreen: true });
|
||||
visibleInOverview: true });
|
||||
Main.chrome.trackActor(this._notificationBin);
|
||||
Main.chrome.trackActor(this._summaryBoxPointer.actor);
|
||||
|
||||
@@ -1616,8 +1578,6 @@ MessageTray.prototype = {
|
||||
this._clickedSummaryItemMouseButton != button) {
|
||||
this._clickedSummaryItem = summaryItem;
|
||||
this._clickedSummaryItemMouseButton = button;
|
||||
|
||||
summaryItem.source.emit('summary-item-clicked', button);
|
||||
} else {
|
||||
this._unsetClickedSummaryItem();
|
||||
}
|
||||
@@ -2024,15 +1984,9 @@ MessageTray.prototype = {
|
||||
this._notification.expand(!autoExpanding);
|
||||
},
|
||||
|
||||
_onNotificationExpanded: function() {
|
||||
_onNotificationExpanded: function() {
|
||||
let expandedY = this.actor.height - this._notificationBin.height;
|
||||
|
||||
// Don't animate the notification to its new position if it has shrunk:
|
||||
// there will be a very visible "gap" that breaks the illusion.
|
||||
|
||||
if (this._notificationBin.y < expandedY)
|
||||
this._notificationBin.y = expandedY;
|
||||
else if (this._notification.y != expandedY)
|
||||
if (this._notificationBin.y != expandedY)
|
||||
this._tween(this._notificationBin, '_notificationState', State.SHOWN,
|
||||
{ y: expandedY,
|
||||
time: ANIMATION_TIME,
|
||||
|
@@ -10,6 +10,8 @@ const Pango = imports.gi.Pango;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Params = imports.misc.params;
|
||||
|
||||
@@ -48,6 +50,10 @@ ModalDialog.prototype = {
|
||||
coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE });
|
||||
this._group.add_constraint(constraint);
|
||||
|
||||
global.focus_manager.add_group(this._group);
|
||||
this._initialKeyFocus = this._group;
|
||||
this._savedKeyFocus = null;
|
||||
|
||||
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
|
||||
|
||||
this._actionKeys = {};
|
||||
@@ -88,10 +94,6 @@ ModalDialog.prototype = {
|
||||
{ expand: true,
|
||||
x_align: St.Align.MIDDLE,
|
||||
y_align: St.Align.END });
|
||||
|
||||
global.focus_manager.add_group(this._dialogLayout);
|
||||
this._initialKeyFocus = this._dialogLayout;
|
||||
this._savedKeyFocus = null;
|
||||
},
|
||||
|
||||
setButtons: function(buttons) {
|
||||
@@ -193,7 +195,6 @@ ModalDialog.prototype = {
|
||||
|
||||
this.state = State.CLOSING;
|
||||
this.popModal(timestamp);
|
||||
this._savedKeyFocus = null;
|
||||
|
||||
Tweener.addTween(this._group,
|
||||
{ opacity: 0,
|
||||
|
@@ -7,6 +7,8 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Mainloop = imports.mainloop;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const Main = imports.ui.main;
|
||||
@@ -165,11 +167,8 @@ NotificationDaemon.prototype = {
|
||||
// with a transient one from the same sender, so we
|
||||
// always create a new source object for new transient notifications
|
||||
// and never add it to this._sources .
|
||||
if (!isForTransientNotification && this._sources[pid]) {
|
||||
let source = this._sources[pid];
|
||||
source.setTitle(title);
|
||||
return source;
|
||||
}
|
||||
if (!isForTransientNotification && this._sources[pid])
|
||||
return this._sources[pid];
|
||||
|
||||
let source = new Source(title, pid);
|
||||
source.setTransient(isForTransientNotification);
|
||||
@@ -190,11 +189,9 @@ NotificationDaemon.prototype = {
|
||||
actions, hints, timeout) {
|
||||
let id;
|
||||
|
||||
// Filter out chat and presence notifications from Empathy, since we
|
||||
// Filter out notifications from Empathy, since we
|
||||
// handle that information from telepathyClient.js
|
||||
if (appName == 'Empathy' && (hints['category'] == 'im.received' ||
|
||||
hints['category'] == 'presence.online' ||
|
||||
hints['category'] == 'presence.offline')) {
|
||||
if (appName == 'Empathy') {
|
||||
// Ignore replacesId since we already sent back a
|
||||
// NotificationClosed for that id.
|
||||
id = nextNotificationId++;
|
||||
|
@@ -8,12 +8,13 @@ const Signals = imports.signals;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
|
||||
const AppDisplay = imports.ui.appDisplay;
|
||||
const Dash = imports.ui.dash;
|
||||
const DND = imports.ui.dnd;
|
||||
const DocDisplay = imports.ui.docDisplay;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
@@ -23,6 +24,7 @@ const Tweener = imports.ui.tweener;
|
||||
const ViewSelector = imports.ui.viewSelector;
|
||||
const WorkspacesView = imports.ui.workspacesView;
|
||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
const ZeitgeistSearch = imports.ui.zeitgeistSearch;
|
||||
|
||||
// Time for initial animation going into Overview mode
|
||||
const ANIMATION_TIME = 0.25;
|
||||
@@ -190,7 +192,11 @@ Overview.prototype = {
|
||||
this.viewSelector.addSearchProvider(new AppDisplay.AppSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new AppDisplay.PrefsSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new PlaceDisplay.PlaceSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new DocDisplay.DocSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new ZeitgeistSearch.DocumentsAsyncSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new ZeitgeistSearch.VideosAsyncSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new ZeitgeistSearch.MusicAsyncSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new ZeitgeistSearch.PicturesAsyncSearchProvider());
|
||||
this.viewSelector.addSearchProvider(new ZeitgeistSearch.OtherAsyncSearchProvider());
|
||||
|
||||
// TODO - recalculate everything when desktop size changes
|
||||
this.dash = new Dash.Dash();
|
||||
@@ -220,7 +226,7 @@ Overview.prototype = {
|
||||
}
|
||||
this._resetWindowSwitchTimeout();
|
||||
this._lastHoveredWindow = null;
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
DND.removeMonitor(this._dragMonitor);
|
||||
this.endItemDrag();
|
||||
},
|
||||
|
||||
@@ -281,8 +287,7 @@ Overview.prototype = {
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
if (this._scrollDirection == SwipeScrollDirection.NONE
|
||||
|| event.get_button() != 1)
|
||||
if (this._scrollDirection == SwipeScrollDirection.NONE)
|
||||
return;
|
||||
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
|
@@ -9,6 +9,8 @@ const Pango = imports.gi.Pango;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
@@ -258,14 +260,10 @@ AppMenuButton.prototype = {
|
||||
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
||||
this._iconBox.connect('style-changed',
|
||||
Lang.bind(this, this._onIconBoxStyleChanged));
|
||||
this._iconBox.connect('notify::allocation',
|
||||
Lang.bind(this, this._updateIconBoxClip));
|
||||
this._container.add_actor(this._iconBox);
|
||||
this._label = new TextShadower();
|
||||
this._container.add_actor(this._label.actor);
|
||||
|
||||
this._iconBottomClip = 0;
|
||||
|
||||
this._quitMenu = new PopupMenu.PopupMenuItem('');
|
||||
this.menu.addMenuItem(this._quitMenu);
|
||||
this._quitMenu.connect('activate', Lang.bind(this, this._onQuit));
|
||||
@@ -302,7 +300,6 @@ AppMenuButton.prototype = {
|
||||
|
||||
this._visible = true;
|
||||
this.actor.show();
|
||||
this.actor.reactive = true;
|
||||
|
||||
if (!this._targetIsCurrent)
|
||||
return;
|
||||
@@ -319,7 +316,6 @@ AppMenuButton.prototype = {
|
||||
return;
|
||||
|
||||
this._visible = false;
|
||||
this.actor.reactive = false;
|
||||
if (!this._targetIsCurrent) {
|
||||
this.actor.hide();
|
||||
return;
|
||||
@@ -338,16 +334,11 @@ AppMenuButton.prototype = {
|
||||
|
||||
_onIconBoxStyleChanged: function() {
|
||||
let node = this._iconBox.get_theme_node();
|
||||
this._iconBottomClip = node.get_length('app-icon-bottom-clip');
|
||||
this._updateIconBoxClip();
|
||||
},
|
||||
|
||||
_updateIconBoxClip: function() {
|
||||
let allocation = this._iconBox.allocation;
|
||||
if (this._iconBottomClip > 0)
|
||||
let bottomClip = node.get_length('app-icon-bottom-clip');
|
||||
if (bottomClip > 0)
|
||||
this._iconBox.set_clip(0, 0,
|
||||
allocation.x2 - allocation.x1,
|
||||
allocation.y2 - allocation.y1 - this._iconBottomClip);
|
||||
this._iconBox.width,
|
||||
this._iconBox.height - bottomClip);
|
||||
else
|
||||
this._iconBox.remove_clip();
|
||||
},
|
||||
@@ -708,7 +699,7 @@ HotCorner.prototype = {
|
||||
}
|
||||
});
|
||||
|
||||
Main.chrome.addActor(this.actor, { affectsStruts: false });
|
||||
Main.chrome.addActor(this.actor, { visibleInOverview: true, affectsStruts: false });
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
@@ -776,7 +767,7 @@ HotCorner.prototype = {
|
||||
_onCornerClicked : function() {
|
||||
if (!Main.overview.animationInProgress)
|
||||
this.maybeToggleOverviewOnClick();
|
||||
return true;
|
||||
return false;
|
||||
},
|
||||
|
||||
_onCornerLeft : function(actor, event) {
|
||||
@@ -817,8 +808,6 @@ Panel.prototype = {
|
||||
reactive: true });
|
||||
this.actor._delegate = this;
|
||||
|
||||
this._statusArea = {};
|
||||
|
||||
Main.overview.connect('shown', Lang.bind(this, function () {
|
||||
this.actor.add_style_class_name('in-overview');
|
||||
}));
|
||||
@@ -915,7 +904,6 @@ Panel.prototype = {
|
||||
style_class: 'panel-button',
|
||||
reactive: true,
|
||||
can_focus: true });
|
||||
this._activities = this.button;
|
||||
this.button.set_child(label);
|
||||
this.button._delegate = this.button;
|
||||
this.button._xdndTimeOut = 0;
|
||||
@@ -944,10 +932,10 @@ Panel.prototype = {
|
||||
|
||||
this._hotCorner = null;
|
||||
|
||||
this._appMenu = new AppMenuButton();
|
||||
this._leftBox.add(this._appMenu.actor);
|
||||
let appMenuButton = new AppMenuButton();
|
||||
this._leftBox.add(appMenuButton.actor);
|
||||
|
||||
this._menus.addMenu(this._appMenu.menu);
|
||||
this._menus.addMenu(appMenuButton.menu);
|
||||
|
||||
/* center */
|
||||
this._dateMenu = new DateMenu.DateMenuButton();
|
||||
@@ -966,12 +954,12 @@ Panel.prototype = {
|
||||
this._rightBox.add(this._trayBox);
|
||||
this._rightBox.add(this._statusBox);
|
||||
|
||||
this._userMenu = new StatusMenu.StatusMenuButton();
|
||||
this._userMenu.actor.name = 'panelStatus';
|
||||
this._rightBox.add(this._userMenu.actor);
|
||||
this._statusmenu = new StatusMenu.StatusMenuButton();
|
||||
this._statusmenu.actor.name = 'panelStatus';
|
||||
this._rightBox.add(this._statusmenu.actor);
|
||||
|
||||
// Synchronize the buttons pseudo classes with its corner
|
||||
this._userMenu.actor.connect('style-changed', Lang.bind(this,
|
||||
this._statusmenu.actor.connect('style-changed', Lang.bind(this,
|
||||
function(actor) {
|
||||
let rtl = actor.get_direction() == St.TextDirection.RTL;
|
||||
let corner = rtl ? this._leftCorner : this._rightCorner;
|
||||
@@ -1004,11 +992,13 @@ Panel.prototype = {
|
||||
this.button.checked = false;
|
||||
}));
|
||||
|
||||
Main.chrome.addActor(this.actor);
|
||||
Main.chrome.addActor(this._leftCorner.actor, { affectsStruts: false,
|
||||
affectsInputRegion: false });
|
||||
Main.chrome.addActor(this._rightCorner.actor, { affectsStruts: false,
|
||||
affectsInputRegion: false });
|
||||
Main.chrome.addActor(this.actor, { visibleInOverview: true });
|
||||
Main.chrome.addActor(this._leftCorner.actor, { visibleInOverview: true,
|
||||
affectsStruts: false,
|
||||
affectsInputRegion: false });
|
||||
Main.chrome.addActor(this._rightCorner.actor, { visibleInOverview: true,
|
||||
affectsStruts: false,
|
||||
affectsInputRegion: false });
|
||||
|
||||
Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'start-here',
|
||||
{ sortGroup: CtrlAltTab.SortGroup.TOP });
|
||||
@@ -1052,13 +1042,11 @@ Panel.prototype = {
|
||||
let indicator = new constructor();
|
||||
this._statusBox.add(indicator.actor);
|
||||
this._menus.addMenu(indicator.menu);
|
||||
|
||||
this._statusArea[role] = indicator;
|
||||
}
|
||||
|
||||
// PopupMenuManager depends on menus being added in order for
|
||||
// keyboard navigation
|
||||
this._menus.addMenu(this._userMenu.menu);
|
||||
this._menus.addMenu(this._statusmenu.menu);
|
||||
},
|
||||
|
||||
startupAnimation: function() {
|
||||
|
@@ -26,20 +26,12 @@ Button.prototype = {
|
||||
this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0);
|
||||
this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
|
||||
this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress));
|
||||
Main.chrome.addActor(this.menu.actor, { affectsStruts: false });
|
||||
Main.chrome.addActor(this.menu.actor, { visibleInOverview: true,
|
||||
affectsStruts: false });
|
||||
this.menu.actor.hide();
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
if (!this.menu.isOpen) {
|
||||
// Setting the max-height won't do any good if the minimum height of the
|
||||
// menu is higher then the screen; it's useful if part of the menu is
|
||||
// scrollable so the minimum height is smaller than the natural height
|
||||
let monitor = global.get_primary_monitor();
|
||||
this.menu.actor.style = ('max-height: ' +
|
||||
Math.round(monitor.height - Main.panel.actor.height) +
|
||||
'px;');
|
||||
}
|
||||
this.menu.toggle();
|
||||
},
|
||||
|
||||
|
@@ -7,6 +7,8 @@ const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
const Main = imports.ui.main;
|
||||
@@ -268,7 +270,10 @@ PlacesManager.prototype = {
|
||||
if (!GLib.file_test(this._bookmarksPath, GLib.FileTest.EXISTS))
|
||||
return;
|
||||
|
||||
let bookmarksContent = Shell.get_file_contents_utf8_sync(this._bookmarksPath);
|
||||
let [success, bookmarksContent, len] = GLib.file_get_contents(this._bookmarksPath);
|
||||
|
||||
if (!success)
|
||||
return;
|
||||
|
||||
let bookmarks = bookmarksContent.split('\n');
|
||||
|
||||
|
@@ -22,6 +22,8 @@
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const St = imports.gi.St;
|
||||
|
@@ -13,6 +13,9 @@ const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */
|
||||
|
||||
function PopupBaseMenuItem(params) {
|
||||
@@ -495,7 +498,7 @@ PopupSliderMenuItem.prototype = {
|
||||
this._slider = new St.DrawingArea({ style_class: 'popup-slider-menu-item', reactive: true });
|
||||
this.addActor(this._slider, { span: -1, expand: true });
|
||||
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
|
||||
this._slider.connect('button-press-event', Lang.bind(this, this._startDragging));
|
||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
||||
|
||||
this._releaseId = this._motionId = 0;
|
||||
@@ -704,36 +707,11 @@ PopupSwitchMenuItem.prototype = {
|
||||
this._switch = new Switch(active);
|
||||
|
||||
this.addActor(this.label);
|
||||
this.addActor(this._switch.actor, { align: St.Align.END });
|
||||
|
||||
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
||||
this.addActor(this._statusBin, { align: St.Align.END });
|
||||
|
||||
this._statusLabel = new St.Label({ text: '',
|
||||
style_class: 'popup-inactive-menu-item'
|
||||
});
|
||||
this._switch = new Switch(false);
|
||||
this._statusBin.child = this._switch.actor;
|
||||
},
|
||||
|
||||
setStatus: function(text) {
|
||||
if (text != null) {
|
||||
this._statusLabel.text = text;
|
||||
this._statusBin.child = this._statusLabel;
|
||||
this.actor.reactive = false;
|
||||
this.actor.can_focus = false;
|
||||
} else {
|
||||
this._statusBin.child = this._switch.actor;
|
||||
this.actor.reactive = true;
|
||||
this.actor.can_focus = true;
|
||||
}
|
||||
},
|
||||
|
||||
activate: function(event) {
|
||||
if (this._switch.actor.mapped) {
|
||||
this.connect('activate', Lang.bind(this,function(from) {
|
||||
this.toggle();
|
||||
}
|
||||
|
||||
PopupBaseMenuItem.prototype.activate.call(this, event);
|
||||
}));
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
@@ -788,7 +766,6 @@ PopupMenuBase.prototype = {
|
||||
this.box = new St.BoxLayout({ vertical: true });
|
||||
}
|
||||
this.box.connect_after('queue-relayout', Lang.bind(this, this._menuQueueRelayout));
|
||||
this.length = 0;
|
||||
|
||||
this.isOpen = false;
|
||||
|
||||
@@ -796,10 +773,6 @@ PopupMenuBase.prototype = {
|
||||
// for the menu which causes its prelight state to freeze
|
||||
this.blockSourceEvents = false;
|
||||
|
||||
// Can be set while a menu is up to let all events through without special
|
||||
// menu handling useful for scrollbars in menus, and probably not otherwise.
|
||||
this.passEvents = false;
|
||||
|
||||
this._activeMenuItem = null;
|
||||
},
|
||||
|
||||
@@ -878,8 +851,6 @@ PopupMenuBase.prototype = {
|
||||
menuItem.connect('destroy', Lang.bind(this, function() {
|
||||
menuItem.disconnect(menuItem._subMenuActivateId);
|
||||
menuItem.disconnect(menuItem._subMenuActiveChangeId);
|
||||
|
||||
this.length--;
|
||||
}));
|
||||
} else if (menuItem instanceof PopupSubMenuMenuItem) {
|
||||
if (before_item == null)
|
||||
@@ -896,8 +867,6 @@ PopupMenuBase.prototype = {
|
||||
this._connectItemSignals(menuItem);
|
||||
else
|
||||
throw TypeError("Invalid argument to PopupMenuBase.addMenuItem()");
|
||||
|
||||
this.length++;
|
||||
},
|
||||
|
||||
getColumnWidths: function() {
|
||||
@@ -1069,109 +1038,45 @@ PopupSubMenu.prototype = {
|
||||
__proto__: PopupMenuBase.prototype,
|
||||
|
||||
_init: function(sourceActor, sourceArrow) {
|
||||
PopupMenuBase.prototype._init.call(this, sourceActor);
|
||||
PopupMenuBase.prototype._init.call(this, sourceActor, 'popup-sub-menu');
|
||||
|
||||
this._arrow = sourceArrow;
|
||||
this._arrow.rotation_center_z_gravity = Clutter.Gravity.CENTER;
|
||||
|
||||
// Since a function of a submenu might be to provide a "More.." expander
|
||||
// with long content, we make it scrollable - the scrollbar will only take
|
||||
// effect if a CSS max-height is set on the top menu.
|
||||
this.actor = new St.ScrollView({ style_class: 'popup-sub-menu',
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
vscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||
|
||||
// StScrollbar plays dirty tricks with events, calling
|
||||
// clutter_set_motion_events_enabled (FALSE) during the scroll; this
|
||||
// confuses our event tracking, so we just turn it off during the
|
||||
// scroll.
|
||||
let vscroll = this.actor.get_vscroll_bar();
|
||||
vscroll.connect('scroll-start',
|
||||
Lang.bind(this, function() {
|
||||
let topMenu = this._getTopMenu();
|
||||
if (topMenu)
|
||||
topMenu.passEvents = true;
|
||||
}));
|
||||
vscroll.connect('scroll-stop',
|
||||
Lang.bind(this, function() {
|
||||
let topMenu = this._getTopMenu();
|
||||
if (topMenu)
|
||||
topMenu.passEvents = false;
|
||||
}));
|
||||
|
||||
this.actor.add_actor(this.box);
|
||||
this.actor = this.box;
|
||||
this.actor._delegate = this;
|
||||
this.actor.clip_to_allocation = true;
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||
this.actor.hide();
|
||||
},
|
||||
|
||||
_getTopMenu: function() {
|
||||
let actor = this.actor.get_parent();
|
||||
while (actor) {
|
||||
if (actor._delegate && actor._delegate instanceof PopupMenu)
|
||||
return actor._delegate;
|
||||
|
||||
actor = actor.get_parent();
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
_needsScrollbar: function() {
|
||||
let topMenu = this._getTopMenu();
|
||||
let [topMinHeight, topNaturalHeight] = topMenu.actor.get_preferred_height(-1);
|
||||
let topThemeNode = topMenu.actor.get_theme_node();
|
||||
|
||||
let topMaxHeight = topThemeNode.get_max_height();
|
||||
return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight;
|
||||
},
|
||||
|
||||
open: function(animate) {
|
||||
if (this.isOpen)
|
||||
return;
|
||||
|
||||
this.isOpen = true;
|
||||
|
||||
// we don't implement the !animate case because that doesn't
|
||||
// currently get used...
|
||||
|
||||
let [naturalHeight, minHeight] = this.actor.get_preferred_height(-1);
|
||||
this.actor.height = 0;
|
||||
this.actor.show();
|
||||
|
||||
let needsScrollbar = this._needsScrollbar();
|
||||
|
||||
// St.ScrollView always requests space horizontally for a possible vertical
|
||||
// scrollbar if in AUTOMATIC mode. Doing better would require implementation
|
||||
// of width-for-height in St.BoxLayout and St.ScrollView. This looks bad
|
||||
// when we *don't* need it, so turn off the scrollbar when that's true.
|
||||
// Dynamic changes in whether we need it aren't handled properly.
|
||||
this.actor.vscrollbar_policy =
|
||||
needsScrollbar ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
||||
|
||||
// It looks funny if we animate with a scrollbar (at what point is
|
||||
// the scrollbar added?) so just skip that case
|
||||
if (animate && needsScrollbar)
|
||||
animate = false;
|
||||
|
||||
if (animate) {
|
||||
let [minHeight, naturalHeight] = this.actor.get_preferred_height(-1);
|
||||
this.actor.height = 0;
|
||||
this.actor._arrow_rotation = this._arrow.rotation_angle_z;
|
||||
Tweener.addTween(this.actor,
|
||||
{ _arrow_rotation: 90,
|
||||
height: naturalHeight,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate: function() {
|
||||
this._arrow.rotation_angle_z = this.actor._arrow_rotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
this.actor.set_height(-1);
|
||||
this.emit('open-state-changed', true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this._arrow.rotation_angle_z = 90;
|
||||
this.emit('open-state-changed', true);
|
||||
}
|
||||
this.actor._arrow_rotation = this._arrow.rotation_angle_z;
|
||||
Tweener.addTween(this.actor,
|
||||
{ _arrow_rotation: 90,
|
||||
height: naturalHeight,
|
||||
time: 0.25,
|
||||
onUpdateScope: this,
|
||||
onUpdate: function() {
|
||||
this._arrow.rotation_angle_z = this.actor._arrow_rotation;
|
||||
},
|
||||
onCompleteScope: this,
|
||||
onComplete: function() {
|
||||
this.actor.set_height(-1);
|
||||
this.emit('open-state-changed', true);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
@@ -1183,9 +1088,6 @@ PopupSubMenu.prototype = {
|
||||
if (this._activeMenuItem)
|
||||
this._activeMenuItem.setActive(false);
|
||||
|
||||
if (animate && this._needsScrollbar())
|
||||
animate = false;
|
||||
|
||||
if (animate) {
|
||||
this.actor._arrow_rotation = this._arrow.rotation_angle_z;
|
||||
Tweener.addTween(this.actor,
|
||||
@@ -1521,12 +1423,8 @@ PopupMenuManager.prototype = {
|
||||
this._owner.menuEventFilter(event))
|
||||
return true;
|
||||
|
||||
if (this._activeMenu != null && this._activeMenu.passEvents)
|
||||
return false;
|
||||
|
||||
let activeMenuContains = this._eventIsOnActiveMenu(event);
|
||||
let eventType = event.type();
|
||||
|
||||
if (eventType == Clutter.EventType.BUTTON_RELEASE) {
|
||||
if (activeMenuContains) {
|
||||
return false;
|
||||
|
@@ -8,6 +8,8 @@ const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const FileUtils = imports.misc.fileUtils;
|
||||
const Main = imports.ui.main;
|
||||
@@ -23,10 +25,6 @@ const HISTORY_KEY = 'command-history';
|
||||
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||
const DISABLE_COMMAND_LINE_KEY = 'disable-command-line';
|
||||
|
||||
const TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal';
|
||||
const EXEC_KEY = 'exec';
|
||||
const EXEC_ARG_KEY = 'exec-arg';
|
||||
|
||||
const DIALOG_GROW_TIME = 0.1;
|
||||
|
||||
function CommandCompleter() {
|
||||
@@ -173,7 +171,6 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
|
||||
|
||||
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
|
||||
this._terminalSettings = new Gio.Settings({ schema: TERMINAL_SCHEMA });
|
||||
global.settings.connect('changed::development-tools', Lang.bind(this, function () {
|
||||
this._enableInternalCommands = global.settings.get_boolean('development-tools');
|
||||
}));
|
||||
@@ -194,7 +191,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
||||
}),
|
||||
|
||||
'debugexit': Lang.bind(this, function() {
|
||||
Meta.quit(Meta.ExitCode.ERROR);
|
||||
Meta.exit(Meta.ExitCode.ERROR);
|
||||
}),
|
||||
|
||||
// rt is short for "reload theme"
|
||||
@@ -314,11 +311,8 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
||||
f();
|
||||
} else if (input) {
|
||||
try {
|
||||
if (inTerminal) {
|
||||
let exec = this._terminalSettings.get_string(EXEC_KEY);
|
||||
let exec_arg = this._terminalSettings.get_string(EXEC_ARG_KEY);
|
||||
command = exec + ' ' + exec_arg + ' ' + input;
|
||||
}
|
||||
if (inTerminal)
|
||||
command = 'gnome-terminal -x ' + input;
|
||||
Util.trySpawnCommandLine(command);
|
||||
} catch (e) {
|
||||
// Mmmh, that failed - see if @input matches an existing file
|
||||
|
123
js/ui/search.js
@@ -7,6 +7,9 @@ const Signals = imports.signals;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const FileUtils = imports.misc.fileUtils;
|
||||
const Main = imports.ui.main;
|
||||
|
||||
@@ -112,6 +115,43 @@ function SearchProvider(title) {
|
||||
SearchProvider.prototype = {
|
||||
_init: function(title) {
|
||||
this.title = title;
|
||||
this.searchSystem = null;
|
||||
this.searchAsync = false;
|
||||
},
|
||||
|
||||
_asyncCancelled: function() {
|
||||
},
|
||||
|
||||
startAsync: function() {
|
||||
this.searchAsync = true;
|
||||
},
|
||||
|
||||
tryCancelAsync: function() {
|
||||
if (!this.searchAsync)
|
||||
return;
|
||||
this._asyncCancelled();
|
||||
this.searchAsync = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* addItems:
|
||||
* @items: an array of result identifier strings representing
|
||||
* items which match the last given search terms.
|
||||
*
|
||||
* This should be used for something that requires a bit more
|
||||
* logic; it's designed to be an asyncronous way to add a result
|
||||
* to the current search.
|
||||
*/
|
||||
addItems: function( items) {
|
||||
if (!this.searchSystem)
|
||||
throw new Error('Search provider not registered');
|
||||
|
||||
if (!items.length)
|
||||
return;
|
||||
|
||||
this.tryCancelAsync();
|
||||
|
||||
this.searchSystem.addProviderItems(this, items);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -157,7 +197,7 @@ SearchProvider.prototype = {
|
||||
},
|
||||
|
||||
/**
|
||||
* getResultMeta:
|
||||
* getResultInfo:
|
||||
* @id: Result identifier string
|
||||
*
|
||||
* Return an object with 'id', 'name', (both strings) and 'createIcon'
|
||||
@@ -209,6 +249,7 @@ SearchProvider.prototype = {
|
||||
};
|
||||
Signals.addSignalMethods(SearchProvider.prototype);
|
||||
|
||||
|
||||
function OpenSearchSystem() {
|
||||
this._init();
|
||||
}
|
||||
@@ -271,18 +312,24 @@ OpenSearchSystem.prototype = {
|
||||
},
|
||||
|
||||
_addProvider: function(fileName) {
|
||||
let path = global.datadir + '/search_providers/' + fileName;
|
||||
let source = Shell.get_file_contents_utf8_sync(path);
|
||||
let [success, name, url, langs, icon_uri] = Shell.parse_search_provider(source);
|
||||
let provider ={ name: name,
|
||||
url: url,
|
||||
id: this._providers.length,
|
||||
icon_uri: icon_uri,
|
||||
langs: langs };
|
||||
if (this._checkSupportedProviderLanguage(provider)) {
|
||||
this._providers.push(provider);
|
||||
this.emit('changed');
|
||||
}
|
||||
let file = Gio.file_new_for_path(global.datadir + '/search_providers/' + fileName);
|
||||
let source = '';
|
||||
|
||||
file.load_contents_async(null, Lang.bind(this, function (obj, res) {
|
||||
let [success, source] = file.load_contents_finish(res);
|
||||
if (source) {
|
||||
let [success, name, url, langs, icon_uri] = global.parse_search_provider(source);
|
||||
let provider ={ name: name,
|
||||
url: url,
|
||||
id: this._providers.length,
|
||||
icon_uri: icon_uri,
|
||||
langs: langs };
|
||||
if (this._checkSupportedProviderLanguage(provider)) {
|
||||
this._providers.push(provider);
|
||||
this.emit('changed');
|
||||
}
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
_refresh: function() {
|
||||
@@ -315,6 +362,7 @@ SearchSystem.prototype = {
|
||||
},
|
||||
|
||||
registerProvider: function (provider) {
|
||||
provider.searchSystem = this;
|
||||
this._providers.push(provider);
|
||||
},
|
||||
|
||||
@@ -331,30 +379,50 @@ SearchSystem.prototype = {
|
||||
this._previousResults = [];
|
||||
},
|
||||
|
||||
addProviderItems: function(provider, items) {
|
||||
let index = this._providers.indexOf(provider);
|
||||
let [provider2, results] = this._previousResults[index];
|
||||
if (provider !== provider2)
|
||||
return;
|
||||
|
||||
results.push.apply(results, items);
|
||||
this.emit('results-updated', this._previousResults);
|
||||
},
|
||||
|
||||
updateSearch: function(searchString) {
|
||||
searchString = searchString.replace(/^\s+/g, '').replace(/\s+$/g, '');
|
||||
if (searchString == '')
|
||||
return [];
|
||||
return;
|
||||
|
||||
let terms = searchString.split(/\s+/);
|
||||
let isSubSearch = terms.length == this._previousTerms.length;
|
||||
if (isSubSearch) {
|
||||
for (let i = 0; i < terms.length; i++) {
|
||||
if (terms[i].indexOf(this._previousTerms[i]) != 0) {
|
||||
isSubSearch = false;
|
||||
break;
|
||||
this.updateSearchResults(terms);
|
||||
},
|
||||
|
||||
updateSearchResults: function(terms) {
|
||||
let isSubSearch = false;
|
||||
|
||||
if (terms) {
|
||||
isSubSearch = terms.length == this._previousTerms.length;
|
||||
if (isSubSearch) {
|
||||
for (let i = 0; i < terms.length; i++) {
|
||||
if (terms[i].indexOf(this._previousTerms[i]) != 0) {
|
||||
isSubSearch = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
terms = this._previousTerms;
|
||||
}
|
||||
|
||||
let results = [];
|
||||
if (isSubSearch) {
|
||||
for (let i = 0; i < this._previousResults.length; i++) {
|
||||
for (let i = 0; i < this._providers.length; i++) {
|
||||
let [provider, previousResults] = this._previousResults[i];
|
||||
provider.tryCancelAsync();
|
||||
try {
|
||||
let providerResults = provider.getSubsearchResultSet(previousResults, terms);
|
||||
if (providerResults.length > 0)
|
||||
results.push([provider, providerResults]);
|
||||
results.push([provider, providerResults]);
|
||||
} catch (error) {
|
||||
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
|
||||
}
|
||||
@@ -362,10 +430,10 @@ SearchSystem.prototype = {
|
||||
} else {
|
||||
for (let i = 0; i < this._providers.length; i++) {
|
||||
let provider = this._providers[i];
|
||||
provider.tryCancelAsync();
|
||||
try {
|
||||
let providerResults = provider.getInitialResultSet(terms);
|
||||
if (providerResults.length > 0)
|
||||
results.push([provider, providerResults]);
|
||||
results.push([provider, providerResults]);
|
||||
} catch (error) {
|
||||
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
|
||||
}
|
||||
@@ -374,8 +442,7 @@ SearchSystem.prototype = {
|
||||
|
||||
this._previousTerms = terms;
|
||||
this._previousResults = results;
|
||||
|
||||
return results;
|
||||
}
|
||||
this.emit('results-updated', results);
|
||||
},
|
||||
};
|
||||
Signals.addSignalMethods(SearchSystem.prototype);
|
||||
|
@@ -2,6 +2,8 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
@@ -28,7 +30,6 @@ SearchResult.prototype = {
|
||||
x_align: St.Align.START,
|
||||
y_fill: true });
|
||||
this.actor._delegate = this;
|
||||
this._dragActorSource = null;
|
||||
|
||||
let content = provider.createResultActor(metaInfo, terms);
|
||||
if (content == null) {
|
||||
@@ -38,11 +39,6 @@ SearchResult.prototype = {
|
||||
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
|
||||
{ createIcon: this.metaInfo['createIcon'] });
|
||||
content.set_child(icon.actor);
|
||||
this._dragActorSource = icon.icon;
|
||||
this.actor.label_actor = icon.label;
|
||||
} else {
|
||||
if (content._delegate && content._delegate.getDragActorSource)
|
||||
this._dragActorSource = content._delegate.getDragActorSource();
|
||||
}
|
||||
this._content = content;
|
||||
this.actor.set_child(content);
|
||||
@@ -81,14 +77,11 @@ SearchResult.prototype = {
|
||||
},
|
||||
|
||||
getDragActorSource: function() {
|
||||
if (this._dragActorSource)
|
||||
return this._dragActorSource;
|
||||
// not exactly right, but alignment problems are hard to notice
|
||||
return this._content;
|
||||
return this.metaInfo['icon'];
|
||||
},
|
||||
|
||||
getDragActor: function(stageX, stageY) {
|
||||
return this.metaInfo['createIcon'](Main.overview.dash.iconSize);
|
||||
return new Clutter.Clone({ source: this.metaInfo['icon'] });
|
||||
},
|
||||
|
||||
shellWorkspaceLaunch: function(params) {
|
||||
@@ -189,6 +182,7 @@ function SearchResults(searchSystem, openSearchSystem) {
|
||||
SearchResults.prototype = {
|
||||
_init: function(searchSystem, openSearchSystem) {
|
||||
this._searchSystem = searchSystem;
|
||||
this._searchSystem.connect('results-updated', Lang.bind(this, this._updateResults));
|
||||
this._openSearchSystem = openSearchSystem;
|
||||
|
||||
this.actor = new St.BoxLayout({ name: 'searchResults',
|
||||
@@ -199,7 +193,7 @@ SearchResults.prototype = {
|
||||
|
||||
let scrollView = new St.ScrollView({ x_fill: true,
|
||||
y_fill: false,
|
||||
style_class: 'vfade' });
|
||||
vfade: true });
|
||||
scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||||
scrollView.add_actor(this._content);
|
||||
|
||||
@@ -223,9 +217,11 @@ SearchResults.prototype = {
|
||||
this._selectedProvider = -1;
|
||||
this._providers = this._searchSystem.getProviders();
|
||||
this._providerMeta = [];
|
||||
for (let i = 0; i < this._providers.length; i++)
|
||||
this._providerMetaResults = {};
|
||||
for (let i = 0; i < this._providers.length; i++) {
|
||||
this.createProviderMeta(this._providers[i]);
|
||||
|
||||
this._providerMetaResults[this.providers[i].title] = [];
|
||||
}
|
||||
this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' });
|
||||
this.actor.add(this._searchProvidersBox);
|
||||
|
||||
@@ -265,7 +261,6 @@ SearchResults.prototype = {
|
||||
let title = new St.Label({ text: provider.name,
|
||||
style_class: 'dash-search-button-label' });
|
||||
|
||||
button.label_actor = title;
|
||||
bin.set_child(title);
|
||||
button.set_child(bin);
|
||||
provider.actor = button;
|
||||
@@ -304,6 +299,12 @@ SearchResults.prototype = {
|
||||
meta.actor.hide();
|
||||
}
|
||||
},
|
||||
|
||||
_clearDisplayForProvider: function(index) {
|
||||
let meta = this._providerMeta[index];
|
||||
meta.resultDisplay.clear();
|
||||
meta.actor.hide();
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
this._searchSystem.reset();
|
||||
@@ -319,15 +320,15 @@ SearchResults.prototype = {
|
||||
this._statusText.show();
|
||||
},
|
||||
|
||||
doSearch: function (searchString) {
|
||||
this._searchSystem.updateSearch(searchString);
|
||||
},
|
||||
|
||||
_metaForProvider: function(provider) {
|
||||
return this._providerMeta[this._providers.indexOf(provider)];
|
||||
},
|
||||
|
||||
updateSearch: function (searchString) {
|
||||
let results = this._searchSystem.updateSearch(searchString);
|
||||
|
||||
this._clearDisplay();
|
||||
|
||||
_updateResults: function(searchSystem, results) {
|
||||
if (results.length == 0) {
|
||||
this._statusText.set_text(_("No matching results."));
|
||||
this._statusText.show();
|
||||
@@ -337,28 +338,27 @@ SearchResults.prototype = {
|
||||
this._statusText.hide();
|
||||
}
|
||||
|
||||
let terms = this._searchSystem.getTerms();
|
||||
let terms = searchSystem.getTerms();
|
||||
this._openSearchSystem.setSearchTerms(terms);
|
||||
|
||||
// To avoid CSS transitions causing flickering
|
||||
// of the selection when the first search result
|
||||
// stays the same, we hide the content while
|
||||
// filling in the results and setting the initial
|
||||
// selection.
|
||||
this._content.hide();
|
||||
|
||||
for (let i = 0; i < results.length; i++) {
|
||||
let [provider, providerResults] = results[i];
|
||||
let meta = this._metaForProvider(provider);
|
||||
meta.actor.show();
|
||||
meta.resultDisplay.renderResults(providerResults, terms);
|
||||
if (providerResults.length == 0)
|
||||
this._clearDisplayForProvider(i)
|
||||
else {
|
||||
if (this._providerMetaResults[provider.title] != providerResults) {
|
||||
this._providerMetaResults[provider.title] = providerResults;
|
||||
this._clearDisplayForProvider(i);
|
||||
let meta = this._metaForProvider(provider);
|
||||
meta.actor.show();
|
||||
meta.resultDisplay.renderResults(providerResults, terms);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this._selectedOpenSearchButton == -1)
|
||||
this.selectDown(false);
|
||||
|
||||
this._content.show();
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
|
@@ -10,11 +10,13 @@ const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
||||
const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
|
||||
const KEY_BOUNCE_KEYS_ENABLED = 'bouncekeys-enable';
|
||||
@@ -89,7 +91,6 @@ ATIndicator.prototype = {
|
||||
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addAction(_("Universal Access Settings"), function() {
|
||||
Main.overview.hide();
|
||||
let app = Shell.AppSystem.get_default().get_app('gnome-universal-access-panel.desktop');
|
||||
app.activate(-1);
|
||||
});
|
||||
|
@@ -16,6 +16,9 @@ const MessageTray = imports.ui.messageTray;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const ConnectionState = {
|
||||
DISCONNECTED: 0,
|
||||
CONNECTED: 1,
|
||||
@@ -64,7 +67,7 @@ Indicator.prototype = {
|
||||
|
||||
this._fullMenuItems = [new PopupMenu.PopupSeparatorMenuItem(),
|
||||
new PopupMenu.PopupMenuItem(_("Send Files to Device...")),
|
||||
new PopupMenu.PopupMenuItem(_("Set up a New Device...")),
|
||||
new PopupMenu.PopupMenuItem(_("Setup a New Device...")),
|
||||
new PopupMenu.PopupSeparatorMenuItem()];
|
||||
this._hasDevices = false;
|
||||
this._deviceSep = this._fullMenuItems[0]; // hidden if no device exists
|
||||
@@ -90,7 +93,6 @@ Indicator.prototype = {
|
||||
this._updateFullMenu();
|
||||
|
||||
this.menu.addAction(_("Bluetooth Settings"), function() {
|
||||
Main.overview.hide()
|
||||
let app = Shell.AppSystem.get_default().get_app('bluetooth-properties.desktop');
|
||||
app.activate(-1);
|
||||
});
|
||||
@@ -109,11 +111,7 @@ Indicator.prototype = {
|
||||
current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED;
|
||||
|
||||
this._killswitch.setToggleState(on);
|
||||
if (can_toggle)
|
||||
this._killswitch.setStatus(null);
|
||||
else
|
||||
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
|
||||
this._killswitch.setStatus(_("hardware disabled"));
|
||||
this._killswitch.actor.reactive = can_toggle;
|
||||
|
||||
if (has_adapter)
|
||||
this.actor.show();
|
||||
@@ -129,6 +127,13 @@ Indicator.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_deviceCompare: function(d1, d2) {
|
||||
return d1.device_path == d2.device_path &&
|
||||
d1.bdaddr == d2.bdaddr &&
|
||||
d1.can_connect == d2.can_connect &&
|
||||
d1.capabilities == d2.capabilities;
|
||||
},
|
||||
|
||||
_updateDevices: function() {
|
||||
let devices = this._applet.get_devices();
|
||||
|
||||
@@ -137,8 +142,12 @@ Indicator.prototype = {
|
||||
let item = this._deviceItems[i];
|
||||
let destroy = true;
|
||||
for (let j = 0; j < devices.length; j++) {
|
||||
if (item._device.device_path == devices[j].device_path) {
|
||||
this._updateDeviceItem(item, devices[j]);
|
||||
// we need to deep compare because BluetoothSimpleDevice is a boxed type
|
||||
// (but we take advantage of that, because _skip will disappear the next
|
||||
// time get_devices() is called)
|
||||
if (this._deviceCompare(item._device, devices[j])) {
|
||||
item.label.text = devices[j].alias;
|
||||
devices[j]._skip = true;
|
||||
destroy = false;
|
||||
break;
|
||||
}
|
||||
@@ -153,7 +162,7 @@ Indicator.prototype = {
|
||||
this._hasDevices = newlist.length > 0;
|
||||
for (let i = 0; i < devices.length; i++) {
|
||||
let d = devices[i];
|
||||
if (d._item)
|
||||
if (d._skip)
|
||||
continue;
|
||||
let item = this._createDeviceItem(d);
|
||||
if (item) {
|
||||
@@ -168,62 +177,23 @@ Indicator.prototype = {
|
||||
this._deviceSep.actor.hide();
|
||||
},
|
||||
|
||||
_updateDeviceItem: function(item, device) {
|
||||
if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) {
|
||||
item.destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
let prevDevice = item._device;
|
||||
let prevCapabilities = prevDevice.capabilities;
|
||||
let prevCanConnect = prevDevice.can_connect;
|
||||
|
||||
// adopt the new device object
|
||||
item._device = device;
|
||||
device._item = item;
|
||||
|
||||
// update properties
|
||||
item.label.text = device.alias;
|
||||
|
||||
if (prevCapabilities != device.capabilities ||
|
||||
prevCanConnect != device.can_connect) {
|
||||
// need to rebuild the submenu
|
||||
item.menu.removeAll();
|
||||
this._buildDeviceSubMenu(item, device);
|
||||
}
|
||||
|
||||
// update connected property
|
||||
if (device.can_connect)
|
||||
item._connectedMenuitem.setToggleState(device.connected);
|
||||
},
|
||||
|
||||
_createDeviceItem: function(device) {
|
||||
if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE)
|
||||
return null;
|
||||
let item = new PopupMenu.PopupSubMenuMenuItem(device.alias);
|
||||
|
||||
// adopt the device object, and add a back link
|
||||
item._device = device;
|
||||
device._item = item;
|
||||
|
||||
this._buildDeviceSubMenu(item, device);
|
||||
|
||||
return item;
|
||||
},
|
||||
|
||||
_buildDeviceSubMenu: function(item, device) {
|
||||
if (device.can_connect) {
|
||||
item._connected = device.connected;
|
||||
item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
|
||||
item._connectedMenuitem.connect('toggled', Lang.bind(this, function() {
|
||||
let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected);
|
||||
|
||||
menuitem.connect('toggled', Lang.bind(this, function() {
|
||||
if (item._connected > ConnectionState.CONNECTED) {
|
||||
// operation already in progress, revert
|
||||
// (should not happen anyway)
|
||||
menuitem.setToggleState(menuitem.state);
|
||||
}
|
||||
if (item._connected) {
|
||||
item._connected = ConnectionState.DISCONNECTING;
|
||||
menuitem.setStatus(_("disconnecting..."));
|
||||
this._applet.disconnect_device(item._device.device_path, function(applet, success) {
|
||||
if (success) { // apply
|
||||
item._connected = ConnectionState.DISCONNECTED;
|
||||
@@ -232,11 +202,9 @@ Indicator.prototype = {
|
||||
item._connected = ConnectionState.CONNECTED;
|
||||
menuitem.setToggleState(true);
|
||||
}
|
||||
menuitem.setStatus(null);
|
||||
});
|
||||
} else {
|
||||
item._connected = ConnectionState.CONNECTING;
|
||||
menuitem.setStatus(_("connecting..."));
|
||||
this._applet.connect_device(item._device.device_path, function(applet, success) {
|
||||
if (success) { // apply
|
||||
item._connected = ConnectionState.CONNECTED;
|
||||
@@ -245,12 +213,11 @@ Indicator.prototype = {
|
||||
item._connected = ConnectionState.DISCONNECTED;
|
||||
menuitem.setToggleState(false);
|
||||
}
|
||||
menuitem.setStatus(null);
|
||||
});
|
||||
}
|
||||
}));
|
||||
|
||||
item.menu.addMenuItem(item._connectedMenuitem);
|
||||
item.menu.addMenuItem(menuitem);
|
||||
}
|
||||
|
||||
if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) {
|
||||
@@ -296,6 +263,8 @@ Indicator.prototype = {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return item;
|
||||
},
|
||||
|
||||
_updateFullMenu: function() {
|
||||
|
@@ -9,11 +9,13 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
function LayoutMenuItem() {
|
||||
this._init.apply(this, arguments);
|
||||
}
|
||||
@@ -69,11 +71,9 @@ XKBIndicator.prototype = {
|
||||
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addAction(_("Show Keyboard Layout..."), Lang.bind(this, function() {
|
||||
Main.overview.hide();
|
||||
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
|
||||
}));
|
||||
this.menu.addAction(_("Localization Settings"), function() {
|
||||
Main.overview.hide();
|
||||
let app = Shell.AppSystem.get_default().get_app('gnome-region-panel.desktop');
|
||||
app.activate(-1);
|
||||
});
|
||||
|
@@ -7,11 +7,13 @@ const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const BUS_NAME = 'org.gnome.PowerManager';
|
||||
const OBJECT_PATH = '/org/gnome/PowerManager';
|
||||
|
||||
@@ -81,7 +83,6 @@ Indicator.prototype = {
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
|
||||
this.menu.addAction(_("Power Settings"),function() {
|
||||
Main.overview.hide();
|
||||
let app = Shell.AppSystem.get_default().get_app('gnome-power-panel.desktop');
|
||||
app.activate(-1);
|
||||
});
|
||||
@@ -114,15 +115,15 @@ Indicator.prototype = {
|
||||
let timestring;
|
||||
if (time > 60) {
|
||||
if (minutes == 0) {
|
||||
timestring = ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
|
||||
timestring = Gettext.ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
|
||||
} else {
|
||||
/* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
|
||||
let template = _("%d %s %d %s remaining");
|
||||
|
||||
timestring = template.format (hours, ngettext("hour", "hours", hours), minutes, ngettext("minute", "minutes", minutes));
|
||||
timestring = template.format (hours, Gettext.ngettext("hour", "hours", hours), minutes, Gettext.ngettext("minute", "minutes", minutes));
|
||||
}
|
||||
} else
|
||||
timestring = ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes);
|
||||
timestring = Gettext.ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes);
|
||||
this._batteryItem.label.text = timestring;
|
||||
}
|
||||
this._primaryPercentage.text = Math.round(percentage) + '%';
|
||||
|
@@ -9,11 +9,13 @@ const Gvc = imports.gi.Gvc;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
|
||||
|
||||
const VOLUME_NOTIFY_ID = 1;
|
||||
@@ -62,7 +64,6 @@ Indicator.prototype = {
|
||||
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addAction(_("Sound Settings"), function() {
|
||||
Main.overview.hide();
|
||||
let app = Shell.AppSystem.get_default().get_app('gnome-sound-panel.desktop');
|
||||
app.activate(-1);
|
||||
});
|
||||
|
@@ -9,6 +9,8 @@ const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Tp = imports.gi.TelepathyGLib;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const GnomeSession = imports.misc.gnomeSession;
|
||||
const Main = imports.ui.main;
|
||||
@@ -26,8 +28,7 @@ const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
||||
|
||||
const ScreenSaverInterface = {
|
||||
name: BUS_NAME,
|
||||
methods: [ { name: 'Lock', inSignature: '' },
|
||||
{ name: 'SetActive', inSignature: 'b' }]
|
||||
methods: [ { name: 'Lock', inSignature: '' } ]
|
||||
};
|
||||
|
||||
let ScreenSaverProxy = DBus.makeProxyClass(ScreenSaverInterface);
|
||||
@@ -58,7 +59,6 @@ StatusMenuButton.prototype = {
|
||||
this._presence = new GnomeSession.Presence();
|
||||
this._presenceItems = {};
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
this._haveShutdown = true;
|
||||
|
||||
this._account_mgr = Tp.AccountManager.dup()
|
||||
|
||||
@@ -91,25 +91,12 @@ StatusMenuButton.prototype = {
|
||||
Lang.bind(this, this._updateSwitchUser));
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
Lang.bind(this, this._updateLogout));
|
||||
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
|
||||
Lang.bind(this, this._updateLockScreen));
|
||||
this._updateSwitchUser();
|
||||
this._updateLogout();
|
||||
this._updateLockScreen();
|
||||
|
||||
// Whether shutdown is available or not depends on both lockdown
|
||||
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
||||
// notify, so we update the menu item each time the menu opens or
|
||||
// the lockdown setting changes, which should be close enough.
|
||||
this.menu.connect('open-state-changed', Lang.bind(this,
|
||||
function(menu, open) {
|
||||
if (open)
|
||||
this._updateHaveShutdown();
|
||||
}));
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
Lang.bind(this, this._updateHaveShutdown));
|
||||
|
||||
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
||||
},
|
||||
|
||||
@@ -126,25 +113,13 @@ StatusMenuButton.prototype = {
|
||||
},
|
||||
|
||||
_updateSessionSeparator: function() {
|
||||
let sessionItemsVisible = this._loginScreenItem.actor.visible ||
|
||||
this._logoutItem.actor.visible ||
|
||||
this._lockScreenItem.actor.visible;
|
||||
|
||||
let showSessionSeparator = sessionItemsVisible &&
|
||||
this._suspendOrPowerOffItem.actor.visible;
|
||||
|
||||
let showSettingsSeparator = sessionItemsVisible ||
|
||||
this._suspendOrPowerOffItem.actor.visible;
|
||||
|
||||
if (showSessionSeparator)
|
||||
let showSeparator = this._loginScreenItem.actor.visible ||
|
||||
this._logoutItem.actor.visible ||
|
||||
this._lockScreenItem.actor.visible;
|
||||
if (showSeparator)
|
||||
this._sessionSeparator.actor.show();
|
||||
else
|
||||
this._sessionSeparator.actor.hide();
|
||||
|
||||
if (showSettingsSeparator)
|
||||
this._settingsSeparator.actor.show();
|
||||
else
|
||||
this._settingsSeparator.actor.hide();
|
||||
},
|
||||
|
||||
_updateSwitchUser: function() {
|
||||
@@ -174,34 +149,16 @@ StatusMenuButton.prototype = {
|
||||
this._updateSessionSeparator();
|
||||
},
|
||||
|
||||
_updateHaveShutdown: function() {
|
||||
this._session.CanShutdownRemote(Lang.bind(this,
|
||||
function(result, error) {
|
||||
if (!error) {
|
||||
this._haveShutdown = result;
|
||||
this._updateSuspendOrPowerOff();
|
||||
}
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSuspendOrPowerOff: function() {
|
||||
this._haveSuspend = this._upClient.get_can_suspend();
|
||||
|
||||
if (!this._suspendOrPowerOffItem)
|
||||
return;
|
||||
|
||||
if (!this._haveShutdown && !this._haveSuspend)
|
||||
this._suspendOrPowerOffItem.actor.hide();
|
||||
else
|
||||
this._suspendOrPowerOffItem.actor.show();
|
||||
this._updateSessionSeparator();
|
||||
|
||||
// If we can't suspend show Power Off... instead
|
||||
// and disable the alt key
|
||||
if (!this._haveSuspend) {
|
||||
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
|
||||
} else if (!this._haveShutdown) {
|
||||
this._suspendOrPowerOffItem.updateText(_("Suspend"), null);
|
||||
} else {
|
||||
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
|
||||
}
|
||||
@@ -247,7 +204,6 @@ StatusMenuButton.prototype = {
|
||||
|
||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||
this.menu.addMenuItem(item);
|
||||
this._settingsSeparator = item;
|
||||
|
||||
item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
|
||||
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
|
||||
@@ -315,7 +271,7 @@ StatusMenuButton.prototype = {
|
||||
|
||||
if (this._haveSuspend &&
|
||||
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||
this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() {
|
||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||
this._upClient.suspend_sync(null);
|
||||
}));
|
||||
} else {
|
||||
|
@@ -9,6 +9,9 @@ const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Tpl = imports.gi.TelepathyLogger;
|
||||
const Tp = imports.gi.TelepathyGLib;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
const C_ = Gettext.pgettext;
|
||||
|
||||
const History = imports.misc.history;
|
||||
const Main = imports.ui.main;
|
||||
@@ -77,20 +80,19 @@ Client.prototype = {
|
||||
// The second argument, recover, means _observeChannels will be run
|
||||
// for any existing channel as well.
|
||||
let dbus = Tp.DBusDaemon.dup();
|
||||
this._tpClient = new Shell.TpClient({ 'dbus_daemon': dbus,
|
||||
'name': 'GnomeShell',
|
||||
'uniquify-name': true })
|
||||
this._tpClient.set_observe_channels_func(
|
||||
Lang.bind(this, this._observeChannels));
|
||||
this._tpClient.set_approve_channels_func(
|
||||
Lang.bind(this, this._approveChannels));
|
||||
this._tpClient.set_handle_channels_func(
|
||||
Lang.bind(this, this._handleChannels));
|
||||
this._observer = Tp.SimpleObserver.new(dbus, true, 'GnomeShell', true,
|
||||
Lang.bind(this, this._observeChannels));
|
||||
|
||||
// We only care about single-user text-based chats
|
||||
let props = {};
|
||||
props[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT;
|
||||
props[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE] = Tp.HandleType.CONTACT;
|
||||
this._observer.add_observer_filter(props);
|
||||
|
||||
try {
|
||||
this._tpClient.register();
|
||||
this._observer.register();
|
||||
} catch (e) {
|
||||
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
|
||||
throw new Error('Couldn\'t register SimpleObserver. Error: \n' + e);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -103,7 +105,7 @@ Client.prototype = {
|
||||
this._finishObserveChannels(account, conn, channels, context);
|
||||
} else {
|
||||
Shell.get_self_contact_features(conn,
|
||||
contactFeatures,
|
||||
contactFeatures.length, contactFeatures,
|
||||
Lang.bind(this, function() {
|
||||
this._finishObserveChannels(account, conn, channels, context);
|
||||
}));
|
||||
@@ -123,8 +125,8 @@ Client.prototype = {
|
||||
continue;
|
||||
|
||||
/* Request a TpContact */
|
||||
Shell.get_tp_contacts(conn, [targetHandle],
|
||||
contactFeatures,
|
||||
Shell.get_tp_contacts(conn, 1, [targetHandle],
|
||||
contactFeatures.length, contactFeatures,
|
||||
Lang.bind(this, function (connection, contacts, failed) {
|
||||
if (contacts.length < 1)
|
||||
return;
|
||||
@@ -141,82 +143,30 @@ Client.prototype = {
|
||||
if (this._sources[channel.get_object_path()])
|
||||
return;
|
||||
|
||||
let source = new Source(account, conn, channel, contact, this._tpClient);
|
||||
let source = new Source(account, conn, channel, contact);
|
||||
|
||||
this._sources[channel.get_object_path()] = source;
|
||||
source.connect('destroy', Lang.bind(this,
|
||||
function() {
|
||||
if (this._tpClient.is_handling_channel(channel)) {
|
||||
// The chat box has been destroyed so it can't
|
||||
// handle the channel any more.
|
||||
channel.close_async(function(src, result) {
|
||||
channel.close_finish(result);
|
||||
});
|
||||
}
|
||||
|
||||
delete this._sources[channel.get_object_path()];
|
||||
}));
|
||||
},
|
||||
|
||||
_handlingChannels: function(account, conn, channels) {
|
||||
let len = channels.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
let channel = channels[i];
|
||||
|
||||
// We can only handle text channel, so close any other channel
|
||||
if (!(channel instanceof Tp.TextChannel)) {
|
||||
channel.close_async(null);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this._tpClient.is_handling_channel(channel)) {
|
||||
// We are already handling the channel, display the source
|
||||
let source = this._sources[channel.get_object_path()];
|
||||
if (source)
|
||||
source.notify();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_approveChannels: function(approver, account, conn, channels,
|
||||
dispatchOp, context) {
|
||||
// Approve the channels right away as we are going to handle it
|
||||
dispatchOp.claim_with_async(this._tpClient,
|
||||
Lang.bind (this, function(dispatchOp, result) {
|
||||
try {
|
||||
dispatchOp.claim_with_finish(result);
|
||||
this._handlingChannels(account, conn, channels);
|
||||
} catch (err) {
|
||||
global.logError('Failed to Claim channel: ' + err);
|
||||
}}));
|
||||
|
||||
context.accept();
|
||||
},
|
||||
|
||||
_handleChannels: function(handler, account, conn, channels,
|
||||
requests, user_action_time, context) {
|
||||
this._handlingChannels(account, conn, channels);
|
||||
context.accept();
|
||||
}
|
||||
};
|
||||
|
||||
function Source(account, conn, channel, contact, client) {
|
||||
this._init(account, conn, channel, contact, client);
|
||||
function Source(account, conn, channel, contact) {
|
||||
this._init(account, conn, channel, contact);
|
||||
}
|
||||
|
||||
Source.prototype = {
|
||||
__proto__: MessageTray.Source.prototype,
|
||||
|
||||
_init: function(account, conn, channel, contact, client) {
|
||||
_init: function(account, conn, channel, contact) {
|
||||
MessageTray.Source.prototype._init.call(this, contact.get_alias());
|
||||
|
||||
this.isChat = true;
|
||||
|
||||
this._account = account;
|
||||
this._contact = contact;
|
||||
this._client = client;
|
||||
|
||||
this._pendingMessages = [];
|
||||
|
||||
this._conn = conn;
|
||||
this._channel = channel;
|
||||
@@ -225,21 +175,10 @@ Source.prototype = {
|
||||
this._notification = new Notification(this);
|
||||
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
||||
|
||||
// We ack messages when the message box is collapsed if user has
|
||||
// interacted with it before and so read the messages:
|
||||
// - user clicked on it the tray
|
||||
// - user expanded the notification by hovering over the toaster notification
|
||||
this._shouldAck = false;
|
||||
|
||||
this.connect('summary-item-clicked', Lang.bind(this, this._summaryItemClicked));
|
||||
this._notification.connect('expanded', Lang.bind(this, this._notificationExpanded));
|
||||
this._notification.connect('collapsed', Lang.bind(this, this._notificationCollapsed));
|
||||
|
||||
this._presence = contact.get_presence_type();
|
||||
|
||||
this._sentId = this._channel.connect('message-sent', Lang.bind(this, this._messageSent));
|
||||
this._receivedId = this._channel.connect('message-received', Lang.bind(this, this._messageReceived));
|
||||
this._pendingId = this._channel.connect('pending-message-removed', Lang.bind(this, this._pendingRemoved));
|
||||
|
||||
this._setSummaryIcon(this.createNotificationIcon());
|
||||
|
||||
@@ -256,7 +195,7 @@ Source.prototype = {
|
||||
|
||||
_updateAlias: function() {
|
||||
let oldAlias = this.title;
|
||||
this.setTitle(this._contact.get_alias());
|
||||
this.title = this._contact.get_alias();
|
||||
this._notification.appendAliasChange(oldAlias, this.title);
|
||||
this.pushNotification(this._notification);
|
||||
},
|
||||
@@ -285,17 +224,13 @@ Source.prototype = {
|
||||
},
|
||||
|
||||
open: function(notification) {
|
||||
if (this._client.is_handling_channel(this._channel)) {
|
||||
// We are handling the channel, try to pass it to Empathy
|
||||
this._client.delegate_channels_async([this._channel], global.get_current_time(), "", null);
|
||||
}
|
||||
else {
|
||||
// We are not the handler, just ask to present the channel
|
||||
let dbus = Tp.DBusDaemon.dup();
|
||||
let cd = Tp.ChannelDispatcher.new(dbus);
|
||||
let props = {};
|
||||
props[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT;
|
||||
[props[Tp.PROP_CHANNEL_TARGET_HANDLE], props[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE]] = this._channel.get_handle();
|
||||
|
||||
cd.present_channel_async(this._channel, global.get_current_time(), null);
|
||||
}
|
||||
let req = Tp.AccountChannelRequest.new(this._account, props, global.get_current_time());
|
||||
|
||||
req.ensure_channel_async('', null, null);
|
||||
},
|
||||
|
||||
_getLogMessages: function() {
|
||||
@@ -313,18 +248,7 @@ Source.prototype = {
|
||||
let logMessages = events.map(makeMessageFromTplEvent);
|
||||
|
||||
let pendingTpMessages = this._channel.get_pending_messages();
|
||||
let pendingMessages = [];
|
||||
|
||||
for (let i = 0; i < pendingTpMessages.length; i++) {
|
||||
let message = pendingTpMessages[i];
|
||||
|
||||
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
|
||||
continue;
|
||||
|
||||
pendingMessages.push(makeMessageFromTpMessage(message, NotificationDirection.RECEIVED));
|
||||
|
||||
this._pendingMessages.push(message);
|
||||
}
|
||||
let pendingMessages = pendingTpMessages.map(function (tpMessage) { return makeMessageFromTpMessage(tpMessage, NotificationDirection.RECEIVED); });
|
||||
|
||||
let showTimestamp = false;
|
||||
|
||||
@@ -360,7 +284,6 @@ Source.prototype = {
|
||||
_channelClosed: function() {
|
||||
this._channel.disconnect(this._closedId);
|
||||
this._channel.disconnect(this._receivedId);
|
||||
this._channel.disconnect(this._pendingId);
|
||||
this._channel.disconnect(this._sentId);
|
||||
|
||||
this._contact.disconnect(this._notifyAliasId);
|
||||
@@ -371,11 +294,6 @@ Source.prototype = {
|
||||
},
|
||||
|
||||
_messageReceived: function(channel, message) {
|
||||
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
|
||||
return;
|
||||
|
||||
this._pendingMessages.push(message);
|
||||
|
||||
message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED);
|
||||
this._notification.appendMessage(message);
|
||||
this.notify();
|
||||
@@ -402,12 +320,10 @@ Source.prototype = {
|
||||
}
|
||||
|
||||
let msg = Tp.ClientMessage.new_text(type, text);
|
||||
this._channel.send_message_async(msg, 0, Lang.bind(this, function (src, result) {
|
||||
this._channel.send_message_finish(result);
|
||||
}));
|
||||
this._channel.send_message_async(msg, 0, null);
|
||||
},
|
||||
|
||||
_presenceChanged: function (contact, presence, status, message) {
|
||||
_presenceChanged: function (contact, presence, type, status, message) {
|
||||
let msg, shouldNotify, title;
|
||||
|
||||
if (this._presence == presence)
|
||||
@@ -440,43 +356,6 @@ Source.prototype = {
|
||||
this._notification.appendPresence(msg, shouldNotify);
|
||||
if (shouldNotify)
|
||||
this.notify();
|
||||
},
|
||||
|
||||
_pendingRemoved: function(channel, message) {
|
||||
let idx = this._pendingMessages.indexOf(message);
|
||||
|
||||
if (idx >= 0)
|
||||
this._pendingMessages.splice(idx, 1);
|
||||
else
|
||||
throw new Error('Message not in our pending list: ' + message);
|
||||
},
|
||||
|
||||
_ackMessages: function() {
|
||||
if (this._pendingMessages.length == 0)
|
||||
return;
|
||||
|
||||
// Don't clear our messages here, tp-glib will send a
|
||||
// 'pending-message-removed' for each one.
|
||||
this._channel.ack_messages_async(this._pendingMessages, Lang.bind(this, function(src, result) {
|
||||
this._channel.ack_messages_finish(result);}));
|
||||
},
|
||||
|
||||
_summaryItemClicked: function(source, button) {
|
||||
if (button != 1)
|
||||
return;
|
||||
|
||||
this._shouldAck = true;
|
||||
},
|
||||
|
||||
_notificationExpanded: function() {
|
||||
this._shouldAck = true;
|
||||
},
|
||||
|
||||
_notificationCollapsed: function() {
|
||||
if (this._shouldAck)
|
||||
this._ackMessages();
|
||||
|
||||
this._shouldAck = false;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -537,43 +416,17 @@ Notification.prototype = {
|
||||
styles.push('chat-action');
|
||||
}
|
||||
|
||||
if (message.direction == NotificationDirection.RECEIVED) {
|
||||
this.update(this.source.title, messageBody, { customContent: true,
|
||||
bannerMarkup: true });
|
||||
}
|
||||
|
||||
this.update(this.source.title, messageBody, { customContent: true, bannerMarkup: true });
|
||||
this._append(messageBody, styles, message.timestamp, noTimestamp);
|
||||
},
|
||||
|
||||
_filterMessages: function() {
|
||||
if (this._history.length < 1)
|
||||
return;
|
||||
|
||||
let lastMessageTime = this._history[0].time;
|
||||
let currentTime = (Date.now() / 1000);
|
||||
|
||||
// Keep the scrollback from growing too long. If the most
|
||||
// recent message (before the one we just added) is within
|
||||
// SCROLLBACK_RECENT_TIME, we will keep
|
||||
// SCROLLBACK_RECENT_LENGTH previous messages. Otherwise
|
||||
// we'll keep SCROLLBACK_IDLE_LENGTH messages.
|
||||
|
||||
let maxLength = (lastMessageTime < currentTime - SCROLLBACK_RECENT_TIME) ?
|
||||
SCROLLBACK_IDLE_LENGTH : SCROLLBACK_RECENT_LENGTH;
|
||||
|
||||
let filteredHistory = this._history.filter(function(item) { return item.realMessage });
|
||||
if (filteredHistory.length > maxLength) {
|
||||
let lastMessageToKeep = filteredHistory[maxLength];
|
||||
let expired = this._history.splice(this._history.indexOf(lastMessageToKeep));
|
||||
for (let i = 0; i < expired.length; i++)
|
||||
expired[i].actor.destroy();
|
||||
}
|
||||
},
|
||||
|
||||
_append: function(text, styles, timestamp, noTimestamp) {
|
||||
let currentTime = (Date.now() / 1000);
|
||||
if (!timestamp)
|
||||
timestamp = currentTime;
|
||||
let lastMessageTime = -1;
|
||||
if (this._history.length > 0)
|
||||
lastMessageTime = this._history[0].time;
|
||||
|
||||
// Reset the old message timeout
|
||||
if (this._timestampTimeoutId)
|
||||
@@ -596,7 +449,23 @@ Notification.prototype = {
|
||||
Lang.bind(this, this.appendTimestamp));
|
||||
}
|
||||
|
||||
this._filterMessages();
|
||||
if (this._history.length > 1) {
|
||||
// Keep the scrollback from growing too long. If the most
|
||||
// recent message (before the one we just added) is within
|
||||
// SCROLLBACK_RECENT_TIME, we will keep
|
||||
// SCROLLBACK_RECENT_LENGTH previous messages. Otherwise
|
||||
// we'll keep SCROLLBACK_IDLE_LENGTH messages.
|
||||
|
||||
let maxLength = (lastMessageTime < currentTime - SCROLLBACK_RECENT_TIME) ?
|
||||
SCROLLBACK_IDLE_LENGTH : SCROLLBACK_RECENT_LENGTH;
|
||||
let filteredHistory = this._history.filter(function(item) { return item.realMessage });
|
||||
if (filteredHistory.length > maxLength) {
|
||||
let lastMessageToKeep = filteredHistory[maxLength];
|
||||
let expired = this._history.splice(this._history.indexOf(lastMessageToKeep));
|
||||
for (let i = 0; i < expired.length; i++)
|
||||
expired[i].actor.destroy();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_formatTimestamp: function(date) {
|
||||
@@ -604,8 +473,6 @@ Notification.prototype = {
|
||||
|
||||
var daysAgo = (now.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
|
||||
|
||||
let format;
|
||||
|
||||
// Show a week day and time if date is in the last week
|
||||
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
|
||||
/* Translators: this is a time format string followed by a date.
|
||||
@@ -638,9 +505,6 @@ Notification.prototype = {
|
||||
this._history.unshift({ actor: timeLabel, time: lastMessageTime, realMessage: false });
|
||||
|
||||
this._timestampTimeoutId = 0;
|
||||
|
||||
this._filterMessages();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
@@ -652,23 +516,21 @@ Notification.prototype = {
|
||||
let label = this.addBody(text, true);
|
||||
label.add_style_class_name('chat-meta-message');
|
||||
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false});
|
||||
|
||||
this._filterMessages();
|
||||
},
|
||||
|
||||
appendAliasChange: function(oldAlias, newAlias) {
|
||||
oldAlias = GLib.markup_escape_text(oldAlias, -1);
|
||||
newAlias = GLib.markup_escape_text(newAlias, -1);
|
||||
// FIXME: uncomment this after 3.0 string freeze ends
|
||||
|
||||
/* Translators: this is the other person changing their old IM name to their new
|
||||
IM name. */
|
||||
let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
|
||||
let label = this.addBody(message, true);
|
||||
label.add_style_class_name('chat-meta-message');
|
||||
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
|
||||
this.update(newAlias, null, { customContent: true });
|
||||
// oldAlias = GLib.markup_escape_text(oldAlias, -1);
|
||||
// newAlias = GLib.markup_escape_text(newAlias, -1);
|
||||
|
||||
this._filterMessages();
|
||||
// /* Translators: this is the other person changing their old IM name to their new
|
||||
// IM name. */
|
||||
// let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
|
||||
// let label = this.addBody(message, true);
|
||||
// label.add_style_class_name('chat-meta-message');
|
||||
// this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
|
||||
// this.update(newAlias, null, { customContent: true });
|
||||
},
|
||||
|
||||
_onEntryActivated: function() {
|
||||
|
@@ -8,6 +8,8 @@ const Signals = imports.signals;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Search = imports.ui.search;
|
||||
@@ -150,6 +152,10 @@ SearchTab.prototype = {
|
||||
return true;
|
||||
}));
|
||||
|
||||
this._entry.connect('secondary-icon-clicked', Lang.bind(this,
|
||||
function() {
|
||||
this._reset();
|
||||
}));
|
||||
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
||||
|
||||
global.stage.connect('notify::key-focus', Lang.bind(this, this._updateCursorVisibility));
|
||||
@@ -160,14 +166,7 @@ SearchTab.prototype = {
|
||||
hide: function() {
|
||||
BaseTab.prototype.hide.call(this);
|
||||
|
||||
// Leave the entry focused when it doesn't have any text;
|
||||
// when replacing a selected search term, Clutter emits
|
||||
// two 'text-changed' signals, one for deleting the previous
|
||||
// text and one for the new one - the second one is handled
|
||||
// incorrectly when we remove focus
|
||||
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
|
||||
if (this._text.text != '')
|
||||
this._reset();
|
||||
this._reset();
|
||||
},
|
||||
|
||||
_reset: function () {
|
||||
@@ -227,7 +226,7 @@ SearchTab.prototype = {
|
||||
if (this._iconClickedId == 0) {
|
||||
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
||||
Lang.bind(this, function() {
|
||||
this._reset();
|
||||
this.reset();
|
||||
}));
|
||||
}
|
||||
this._activate();
|
||||
@@ -291,7 +290,7 @@ SearchTab.prototype = {
|
||||
_doSearch: function () {
|
||||
this._searchTimeoutId = 0;
|
||||
let text = this._text.get_text().replace(/^\s+/g, '').replace(/\s+$/g, '');
|
||||
this._searchResults.updateSearch(text);
|
||||
this._searchResults.doSearch(text);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -2,6 +2,8 @@
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
|
@@ -6,7 +6,6 @@ const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const AltTab = imports.ui.altTab;
|
||||
const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
|
||||
@@ -23,7 +22,8 @@ function getDimShader() {
|
||||
if (dimShader === null)
|
||||
return null;
|
||||
if (!dimShader) {
|
||||
let source = Shell.get_file_contents_utf8_sync(global.datadir + '/shaders/dim-window.glsl');
|
||||
let [success, source, length] = GLib.file_get_contents(global.datadir +
|
||||
'/shaders/dim-window.glsl');
|
||||
try {
|
||||
let shader = new Clutter.Shader();
|
||||
shader.set_fragment_source(source, -1);
|
||||
|
@@ -1,7 +1,6 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GConf = imports.gi.GConf;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
@@ -28,8 +27,6 @@ const CLOSE_BUTTON_FADE_TIME = 0.1;
|
||||
|
||||
const DRAGGING_WINDOW_OPACITY = 100;
|
||||
|
||||
const BUTTON_LAYOUT_KEY = '/desktop/gnome/shell/windows/button_layout';
|
||||
|
||||
// Define a layout scheme for small window counts. For larger
|
||||
// counts we fall back to an algorithm. We need more schemes here
|
||||
// unless we have a really good algorithm.
|
||||
@@ -240,7 +237,7 @@ WindowClone.prototype = {
|
||||
this.emit('zoom-start');
|
||||
|
||||
if (!this._zoomLightbox)
|
||||
this._zoomLightbox = new Lightbox.Lightbox(Main.uiGroup,
|
||||
this._zoomLightbox = new Lightbox.Lightbox(global.stage,
|
||||
{ fadeTime: LIGHTBOX_FADE_TIME });
|
||||
this._zoomLightbox.show();
|
||||
|
||||
@@ -251,7 +248,7 @@ WindowClone.prototype = {
|
||||
this._zoomGlobalOrig.setPosition.apply(this._zoomGlobalOrig, this.actor.get_transformed_position());
|
||||
this._zoomGlobalOrig.setScale(width / this.actor.width, height / this.actor.height);
|
||||
|
||||
this.actor.reparent(Main.uiGroup);
|
||||
this.actor.reparent(global.stage);
|
||||
this._zoomLightbox.highlight(this.actor);
|
||||
|
||||
[this.actor.x, this.actor.y] = this._zoomGlobalOrig.getPosition();
|
||||
@@ -299,30 +296,12 @@ WindowClone.prototype = {
|
||||
},
|
||||
|
||||
_onDragBegin : function (draggable, time) {
|
||||
if (this._zooming)
|
||||
this._zoomEnd();
|
||||
|
||||
[this.dragOrigX, this.dragOrigY] = this.actor.get_position();
|
||||
this.dragOrigScale = this.actor.scale_x;
|
||||
this.inDrag = true;
|
||||
this.emit('drag-begin');
|
||||
},
|
||||
|
||||
_getWorkspaceActor : function() {
|
||||
let index = this.metaWindow.get_workspace().index();
|
||||
return Main.overview.workspaces.getWorkspaceByIndex(index);
|
||||
},
|
||||
|
||||
handleDragOver : function(source, actor, x, y, time) {
|
||||
let workspace = this._getWorkspaceActor();
|
||||
return workspace.handleDragOver(source, actor, x, y, time);
|
||||
},
|
||||
|
||||
acceptDrop : function(source, actor, x, y, time) {
|
||||
let workspace = this._getWorkspaceActor();
|
||||
workspace.acceptDrop(source, actor, x, y, time);
|
||||
},
|
||||
|
||||
_onDragCancelled : function (draggable, time) {
|
||||
this.emit('drag-cancelled');
|
||||
},
|
||||
@@ -415,8 +394,6 @@ WindowOverlay.prototype = {
|
||||
|
||||
show: function() {
|
||||
this._hidden = false;
|
||||
if (this._windowClone.actor.has_pointer)
|
||||
this.closeButton.show();
|
||||
this.title.show();
|
||||
},
|
||||
|
||||
@@ -453,20 +430,9 @@ WindowOverlay.prototype = {
|
||||
let button = this.closeButton;
|
||||
let title = this.title;
|
||||
|
||||
let gconf = GConf.Client.get_default();
|
||||
let layout = gconf.get_string(BUTTON_LAYOUT_KEY);
|
||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
||||
|
||||
let split = layout.split(":");
|
||||
let side;
|
||||
if (split[0].indexOf("close") > -1)
|
||||
side = rtl ? St.Side.RIGHT : St.Side.LEFT;
|
||||
else
|
||||
side = rtl ? St.Side.LEFT : St.Side.RIGHT;
|
||||
|
||||
let buttonX;
|
||||
let buttonY = cloneY - (button.height - button._overlap);
|
||||
if (side == St.Side.LEFT)
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
buttonX = cloneX - (button.width - button._overlap);
|
||||
else
|
||||
buttonX = cloneX + (cloneWidth - button._overlap);
|
||||
@@ -648,7 +614,6 @@ Workspace.prototype = {
|
||||
function () {
|
||||
this._dropRect.set_position(x, y);
|
||||
this._dropRect.set_size(width, height);
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||
return false;
|
||||
}));
|
||||
|
||||
@@ -671,6 +636,16 @@ Workspace.prototype = {
|
||||
return this._windows.length == 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* setReactive:
|
||||
* @reactive: %true iff the workspace should be reactive
|
||||
*
|
||||
* Set the workspace (desktop) reactive
|
||||
**/
|
||||
setReactive: function(reactive) {
|
||||
this.actor.reactive = reactive;
|
||||
},
|
||||
|
||||
// Only use this for n <= 20 say
|
||||
_factorial: function(n) {
|
||||
let result = 1;
|
||||
@@ -1138,9 +1113,7 @@ Workspace.prototype = {
|
||||
// the compositor finds out about them...
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
if (this.actor &&
|
||||
metaWin.get_compositor_private() &&
|
||||
metaWin.get_workspace() == this.metaWorkspace)
|
||||
if (this.actor && metaWin.get_compositor_private())
|
||||
this._doAddWindow(metaWin);
|
||||
return false;
|
||||
}));
|
||||
|
@@ -178,11 +178,6 @@ WorkspaceThumbnail.prototype = {
|
||||
// Create clones for windows that should be visible in the Overview
|
||||
this._windows = [];
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
windows[i].meta_window._minimizedChangedId =
|
||||
windows[i].meta_window.connect('notify::minimized',
|
||||
Lang.bind(this,
|
||||
this._updateMinimized));
|
||||
|
||||
if (this._isOverviewWindow(windows[i])) {
|
||||
this._addWindowClone(windows[i]);
|
||||
}
|
||||
@@ -262,18 +257,11 @@ WorkspaceThumbnail.prototype = {
|
||||
return;
|
||||
|
||||
// Check if window still should be here
|
||||
if (win && this._isMyWindow(win) && this._isOverviewWindow(win))
|
||||
if (win && this._isMyWindow(win))
|
||||
return;
|
||||
|
||||
let clone = this._windows[index];
|
||||
this._windows.splice(index, 1);
|
||||
|
||||
if (win && this._isOverviewWindow(win)) {
|
||||
if (metaWin._minimizedChangedId) {
|
||||
metaWin.disconnect(metaWin._minimizedChangedId);
|
||||
delete metaWin._minimizedChangedId;
|
||||
}
|
||||
}
|
||||
clone.destroy();
|
||||
},
|
||||
|
||||
@@ -288,9 +276,7 @@ WorkspaceThumbnail.prototype = {
|
||||
// the compositor finds out about them...
|
||||
Mainloop.idle_add(Lang.bind(this,
|
||||
function () {
|
||||
if (this.actor &&
|
||||
metaWin.get_compositor_private() &&
|
||||
metaWin.get_workspace() == this.metaWorkspace)
|
||||
if (this.actor && metaWin.get_compositor_private())
|
||||
this._doAddWindow(metaWin);
|
||||
return false;
|
||||
}));
|
||||
@@ -302,11 +288,6 @@ WorkspaceThumbnail.prototype = {
|
||||
if (this._lookupIndex (metaWin) != -1)
|
||||
return;
|
||||
|
||||
if (!metaWin._minimizedChangedId)
|
||||
metaWin._minimizedChangedId = metaWin.connect('notify::minimized',
|
||||
Lang.bind(this,
|
||||
this._updateMinimized));
|
||||
|
||||
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||
return;
|
||||
|
||||
@@ -333,13 +314,6 @@ WorkspaceThumbnail.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_updateMinimized: function(metaWin) {
|
||||
if (metaWin.minimized)
|
||||
this._doRemoveWindow(metaWin);
|
||||
else
|
||||
this._doAddWindow(metaWin);
|
||||
},
|
||||
|
||||
destroy : function() {
|
||||
this.actor.destroy();
|
||||
},
|
||||
@@ -350,14 +324,6 @@ WorkspaceThumbnail.prototype = {
|
||||
global.screen.disconnect(this._windowEnteredMonitorId);
|
||||
global.screen.disconnect(this._windowLeftMonitorId);
|
||||
|
||||
for (let i = 0; i < this._windows.length; i++) {
|
||||
let metaWin = this._windows[i].metaWindow;
|
||||
if (metaWin._minimizedChangedId) {
|
||||
metaWin.disconnect(metaWin._minimizedChangedId);
|
||||
delete metaWin._minimizedChangedId;
|
||||
}
|
||||
}
|
||||
|
||||
this._windows = [];
|
||||
this.actor = null;
|
||||
},
|
||||
@@ -371,8 +337,7 @@ WorkspaceThumbnail.prototype = {
|
||||
// Tests if @win should be shown in the Overview
|
||||
_isOverviewWindow : function (win) {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
return tracker.is_window_interesting(win.get_meta_window()) &&
|
||||
win.get_meta_window().showing_on_its_workspace();
|
||||
return tracker.is_window_interesting(win.get_meta_window());
|
||||
},
|
||||
|
||||
// Create a clone of a (non-desktop) window and add it to the window list
|
||||
|
@@ -7,6 +7,8 @@ const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
const Main = imports.ui.main;
|
||||
@@ -49,12 +51,9 @@ WorkspacesView.prototype = {
|
||||
this._height = 0;
|
||||
this._x = 0;
|
||||
this._y = 0;
|
||||
this._clipX = 0;
|
||||
this._clipY = 0;
|
||||
this._clipWidth = 0;
|
||||
this._clipHeight = 0;
|
||||
this._workspaceRatioSpacing = 0;
|
||||
this._spacing = 0;
|
||||
this._lostWorkspaces = [];
|
||||
this._animating = false; // tweening
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
this._animatingScroll = false; // programatically updating the adjustment
|
||||
@@ -96,8 +95,7 @@ WorkspacesView.prototype = {
|
||||
this._overviewShownId =
|
||||
Main.overview.connect('shown',
|
||||
Lang.bind(this, function() {
|
||||
this.actor.set_clip(this._clipX, this._clipY,
|
||||
this._clipWidth, this._clipHeight);
|
||||
this.actor.set_clip(this._x, this._y, this._width, this._height);
|
||||
}));
|
||||
|
||||
this._scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
|
||||
@@ -141,13 +139,6 @@ WorkspacesView.prototype = {
|
||||
this._workspaces[i].setGeometry(x, y, width, height);
|
||||
},
|
||||
|
||||
setClipRect: function(x, y, width, height) {
|
||||
this._clipX = x;
|
||||
this._clipY = y;
|
||||
this._clipWidth = width;
|
||||
this._clipHeight = height;
|
||||
},
|
||||
|
||||
_lookupWorkspaceForMetaWindow: function (metaWindow) {
|
||||
for (let i = 0; i < this._workspaces.length; i++) {
|
||||
if (this._workspaces[i].containsMetaWindow(metaWindow))
|
||||
@@ -161,10 +152,6 @@ WorkspacesView.prototype = {
|
||||
return this._workspaces[active];
|
||||
},
|
||||
|
||||
getWorkspaceByIndex: function(index) {
|
||||
return this._workspaces[index];
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
let activeWorkspace = this._workspaces[activeWorkspaceIndex];
|
||||
@@ -214,10 +201,12 @@ WorkspacesView.prototype = {
|
||||
|
||||
Tweener.removeTweens(workspace.actor);
|
||||
|
||||
let opacity = (this._inDrag && w != active) ? 200 : 255;
|
||||
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
|
||||
|
||||
if (showAnimation) {
|
||||
let params = { y: y,
|
||||
opacity: opacity,
|
||||
time: WORKSPACE_SWITCH_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
};
|
||||
@@ -235,10 +224,32 @@ WorkspacesView.prototype = {
|
||||
Tweener.addTween(workspace.actor, params);
|
||||
} else {
|
||||
workspace.actor.set_position(0, y);
|
||||
workspace.actor.opacity = opacity;
|
||||
if (w == 0)
|
||||
this._updateVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
for (let l = 0; l < this._lostWorkspaces.length; l++) {
|
||||
let workspace = this._lostWorkspaces[l];
|
||||
|
||||
Tweener.removeTweens(workspace.actor);
|
||||
|
||||
workspace.actor.show();
|
||||
workspace.hideWindowsOverlays();
|
||||
|
||||
if (showAnimation) {
|
||||
Tweener.addTween(workspace.actor,
|
||||
{ y: workspace.x,
|
||||
time: WORKSPACE_SWITCH_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this,
|
||||
this._cleanWorkspaces)
|
||||
});
|
||||
} else {
|
||||
this._cleanWorkspaces();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
@@ -259,6 +270,17 @@ WorkspacesView.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_cleanWorkspaces: function() {
|
||||
if (this._lostWorkspaces.length == 0)
|
||||
return;
|
||||
|
||||
for (let l = 0; l < this._lostWorkspaces.length; l++)
|
||||
this._lostWorkspaces[l].destroy();
|
||||
this._lostWorkspaces = [];
|
||||
|
||||
this._updateWorkspaceActors(false);
|
||||
},
|
||||
|
||||
_updateScrollAdjustment: function(index, showAnimation) {
|
||||
if (this._scrolling)
|
||||
return;
|
||||
@@ -281,9 +303,12 @@ WorkspacesView.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces) {
|
||||
updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces, lostWorkspaces) {
|
||||
let active = global.screen.get_active_workspace_index();
|
||||
|
||||
for (let l = 0; l < lostWorkspaces.length; l++)
|
||||
lostWorkspaces[l].disconnectAll();
|
||||
|
||||
Tweener.addTween(this._scrollAdjustment,
|
||||
{ upper: newNumWorkspaces,
|
||||
time: WORKSPACE_SWITCH_TIME,
|
||||
@@ -291,13 +316,12 @@ WorkspacesView.prototype = {
|
||||
});
|
||||
|
||||
if (newNumWorkspaces > oldNumWorkspaces) {
|
||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
||||
this._workspaces[w].setGeometry(this._x, this._y,
|
||||
this._width, this._height);
|
||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++)
|
||||
this.actor.add_actor(this._workspaces[w].actor);
|
||||
}
|
||||
|
||||
this._updateWorkspaceActors(false);
|
||||
} else {
|
||||
this._lostWorkspaces = lostWorkspaces;
|
||||
}
|
||||
|
||||
this._scrollToActive(true);
|
||||
@@ -415,14 +439,20 @@ WorkspacesView.prototype = {
|
||||
if (topWorkspace) {
|
||||
if (topWorkspace.actor.contains(dragEvent.targetActor)) {
|
||||
hoverWorkspace = topWorkspace;
|
||||
topWorkspace.opacity = topWorkspace.actor.opacity = 255;
|
||||
result = topWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
|
||||
} else {
|
||||
topWorkspace.opacity = topWorkspace.actor.opacity = 200;
|
||||
}
|
||||
}
|
||||
|
||||
if (bottomWorkspace) {
|
||||
if (bottomWorkspace.actor.contains(dragEvent.targetActor)) {
|
||||
hoverWorkspace = bottomWorkspace;
|
||||
bottomWorkspace.opacity = bottomWorkspace.actor.opacity = 255;
|
||||
result = bottomWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
|
||||
} else {
|
||||
bottomWorkspace.opacity = bottomWorkspace.actor.opacity = 200;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,7 +479,7 @@ WorkspacesView.prototype = {
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
this._timeoutId = 0;
|
||||
}
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
DND.removeMonitor(this._dragMonitor);
|
||||
this._inDrag = false;
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
@@ -568,9 +598,6 @@ WorkspacesDisplay.prototype = {
|
||||
this._updateAlwaysZoom();
|
||||
|
||||
global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom));
|
||||
global.screen.connect('notify::n-workspaces',
|
||||
Lang.bind(this, this._workspacesChanged));
|
||||
|
||||
Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){
|
||||
this._alwaysZoomOut = true;
|
||||
}));
|
||||
@@ -580,6 +607,7 @@ WorkspacesDisplay.prototype = {
|
||||
this._updateAlwaysZoom();
|
||||
}));
|
||||
|
||||
this._nWorkspacesNotifyId = 0;
|
||||
this._switchWorkspaceNotifyId = 0;
|
||||
|
||||
this._itemDragBeginId = 0;
|
||||
@@ -609,6 +637,10 @@ WorkspacesDisplay.prototype = {
|
||||
this.workspacesView = new WorkspacesView(this._workspaces);
|
||||
this._updateWorkspacesGeometry();
|
||||
|
||||
this._nWorkspacesNotifyId =
|
||||
global.screen.connect('notify::n-workspaces',
|
||||
Lang.bind(this, this._workspacesChanged));
|
||||
|
||||
this._restackedNotifyId =
|
||||
global.screen.connect('restacked',
|
||||
Lang.bind(this, this._onRestacked));
|
||||
@@ -639,6 +671,10 @@ WorkspacesDisplay.prototype = {
|
||||
this._controls.hide();
|
||||
this._thumbnailsBox.hide();
|
||||
|
||||
if (this._nWorkspacesNotifyId > 0) {
|
||||
global.screen.disconnect(this._nWorkspacesNotifyId);
|
||||
this._nWorkspacesNotifyId = 0;
|
||||
}
|
||||
if (this._restackedNotifyId > 0){
|
||||
global.screen.disconnect(this._restackedNotifyId);
|
||||
this._restackedNotifyId = 0;
|
||||
@@ -687,12 +723,7 @@ WorkspacesDisplay.prototype = {
|
||||
},
|
||||
|
||||
_updateAlwaysZoom: function() {
|
||||
// Always show the pager if workspaces are actually used,
|
||||
// e.g. there are windows on more than one
|
||||
this._alwaysZoomOut = global.screen.n_workspaces > 2;
|
||||
|
||||
if (this._alwaysZoomOut)
|
||||
return;
|
||||
this._alwaysZoomOut = false;
|
||||
|
||||
let monitors = global.get_monitors();
|
||||
let primary = global.get_primary_monitor();
|
||||
@@ -763,13 +794,6 @@ WorkspacesDisplay.prototype = {
|
||||
|
||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||
|
||||
let clipWidth = width - controlsVisible;
|
||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
||||
let clipX = rtl ? x + controlsVisible : x;
|
||||
let clipY = y + (fullHeight - clipHeight) / 2;
|
||||
|
||||
this.workspacesView.setClipRect(clipX, clipY, clipWidth, clipHeight);
|
||||
|
||||
if (this._zoomOut) {
|
||||
width -= controlsNatural;
|
||||
if (rtl)
|
||||
@@ -808,12 +832,6 @@ WorkspacesDisplay.prototype = {
|
||||
if (oldNumWorkspaces == newNumWorkspaces)
|
||||
return;
|
||||
|
||||
this._updateAlwaysZoom();
|
||||
this._updateZoom();
|
||||
|
||||
if (this.workspacesView == null)
|
||||
return;
|
||||
|
||||
let lostWorkspaces = [];
|
||||
if (newNumWorkspaces > oldNumWorkspaces) {
|
||||
// Assume workspaces are only added at the end
|
||||
@@ -839,23 +857,24 @@ WorkspacesDisplay.prototype = {
|
||||
lostWorkspaces = this._workspaces.splice(removedIndex,
|
||||
removedNum);
|
||||
|
||||
for (let l = 0; l < lostWorkspaces.length; l++) {
|
||||
lostWorkspaces[l].disconnectAll();
|
||||
lostWorkspaces[l].destroy();
|
||||
}
|
||||
// Don't let the user try to select this workspace as it's
|
||||
// making its exit.
|
||||
for (let l = 0; l < lostWorkspaces.length; l++)
|
||||
lostWorkspaces[l].setReactive(false);
|
||||
|
||||
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
|
||||
}
|
||||
|
||||
this.workspacesView.updateWorkspaces(oldNumWorkspaces,
|
||||
newNumWorkspaces);
|
||||
newNumWorkspaces,
|
||||
lostWorkspaces);
|
||||
},
|
||||
|
||||
_updateZoom : function() {
|
||||
if (Main.overview.animationInProgress)
|
||||
return;
|
||||
|
||||
let shouldZoom = this._alwaysZoomOut || this._controls.hover;
|
||||
let shouldZoom = this._alwaysZoomOut || this._controls.hover || (this._inDrag && !this._cancelledDrag);
|
||||
if (shouldZoom != this._zoomOut) {
|
||||
this._zoomOut = shouldZoom;
|
||||
this._updateWorkspacesGeometry();
|
||||
@@ -879,22 +898,12 @@ WorkspacesDisplay.prototype = {
|
||||
_dragBegin: function() {
|
||||
this._inDrag = true;
|
||||
this._cancelledDrag = false;
|
||||
this._dragMonitor = {
|
||||
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||
};
|
||||
DND.addDragMonitor(this._dragMonitor);
|
||||
this._updateZoom();
|
||||
},
|
||||
|
||||
_dragCancelled: function() {
|
||||
this._cancelledDrag = true;
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
},
|
||||
|
||||
_onDragMotion: function(dragEvent) {
|
||||
let controlsHovered = this._controls.contains(dragEvent.targetActor);
|
||||
this._controls.set_hover(controlsHovered);
|
||||
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
this._updateZoom();
|
||||
},
|
||||
|
||||
_dragEnd: function() {
|
||||
|
202
js/ui/zeitgeistSearch.js
Normal file
@@ -0,0 +1,202 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
*
|
||||
* Copyright (C) 2010 Seif Lotfy <seif@lotfy.com>
|
||||
* Copyright (C) 2011 Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com>
|
||||
* Copyright (C) 2010-2011 Collabora Ltd.
|
||||
* Authored by: Seif Lotfy <seif@lotfy.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
const Lang = imports.lang;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio
|
||||
const Semantic = imports.misc.semantic;
|
||||
const Zeitgeist = imports.misc.zeitgeist;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const DocInfo = imports.misc.docInfo;
|
||||
const Search = imports.ui.search;
|
||||
|
||||
// FIXME: The subject cache is never being emptied.
|
||||
let ZeitgeistSubjectCache = {};
|
||||
|
||||
function ZeitgeistAsyncSearchProvider(title, interpretations) {
|
||||
this._init(title, interpretations);
|
||||
}
|
||||
|
||||
ZeitgeistAsyncSearchProvider.prototype = {
|
||||
__proto__: Search.SearchProvider.prototype,
|
||||
|
||||
_init: function(title, interpretations) {
|
||||
Search.SearchProvider.prototype._init.call(this, title);
|
||||
this._buildTemplates(interpretations);
|
||||
},
|
||||
|
||||
_buildTemplates: function(interpretations) {
|
||||
this.templates = [];
|
||||
for (let i = 0; i < interpretations.length; i++) {
|
||||
let subject = new Zeitgeist.Subject('', interpretations[i], '', '', '', '', '');
|
||||
let event = new Zeitgeist.Event('', '', '', [subject], []);
|
||||
this.templates.push(event);
|
||||
}
|
||||
},
|
||||
|
||||
_search: function(terms) {
|
||||
this._search_terms = terms;
|
||||
Zeitgeist.fullTextSearch(terms[0]+'*',
|
||||
this.templates,
|
||||
Lang.bind(this, function(events) {
|
||||
if (terms == this._search_terms)
|
||||
this._asyncCallback(events);
|
||||
}));
|
||||
},
|
||||
|
||||
_asyncCancelled: function() {
|
||||
this._search_terms = null;
|
||||
},
|
||||
|
||||
getInitialResultSet: function(terms) {
|
||||
this._search(terms);
|
||||
return [];
|
||||
},
|
||||
|
||||
getSubsearchResultSet: function(previousResults, terms) {
|
||||
this.tryCancelAsync();
|
||||
return this.getInitialResultSet(terms);
|
||||
},
|
||||
|
||||
getResultMeta: function(resultId) {
|
||||
return { 'id': ZeitgeistSubjectCache[resultId].uri,
|
||||
'name': ZeitgeistSubjectCache[resultId].name,
|
||||
'createIcon': function (size) {
|
||||
return ZeitgeistSubjectCache[resultId].createIcon(size);
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
activateResult: function(resultId) {
|
||||
Gio.app_info_launch_default_for_uri(resultId,
|
||||
global.create_app_launch_context());
|
||||
},
|
||||
|
||||
_asyncCallback: function(events) {
|
||||
let items = [];
|
||||
for (let i = 0; i < events.length; i++) {
|
||||
let event = events[i];
|
||||
let subject = event.subjects[0];
|
||||
let uri = subject.uri.replace('file://', '');
|
||||
uri = GLib.uri_unescape_string(uri, '');
|
||||
if (GLib.file_test(uri, GLib.FileTest.EXISTS)) {
|
||||
if (!ZeitgeistSubjectCache.hasOwnProperty(subject.uri)) {
|
||||
let info = new DocInfo.ZeitgeistItemInfo(event);
|
||||
ZeitgeistSubjectCache[info.uri] = info;
|
||||
}
|
||||
items.push(subject.uri);
|
||||
}
|
||||
}
|
||||
this.addItems(items);
|
||||
}
|
||||
};
|
||||
|
||||
function DocumentsAsyncSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
DocumentsAsyncSearchProvider.prototype = {
|
||||
__proto__: ZeitgeistAsyncSearchProvider.prototype,
|
||||
|
||||
_init: function() {
|
||||
let interpretations = [Semantic.NFO_DOCUMENT];
|
||||
ZeitgeistAsyncSearchProvider.prototype._init.call(this, _("DOCUMENTS"), interpretations);
|
||||
}
|
||||
};
|
||||
|
||||
function VideosAsyncSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
VideosAsyncSearchProvider.prototype = {
|
||||
__proto__: ZeitgeistAsyncSearchProvider.prototype,
|
||||
|
||||
_init: function() {
|
||||
let interpretations = [Semantic.NFO_VIDEO];
|
||||
ZeitgeistAsyncSearchProvider.prototype._init.call(this, _("VIDEOS"), interpretations);
|
||||
}
|
||||
};
|
||||
|
||||
function MusicAsyncSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
MusicAsyncSearchProvider.prototype = {
|
||||
__proto__: ZeitgeistAsyncSearchProvider.prototype,
|
||||
|
||||
_init: function() {
|
||||
let interpretations = [
|
||||
Semantic.NFO_AUDIO,
|
||||
Semantic.NMM_MUSIC_PIECE];
|
||||
ZeitgeistAsyncSearchProvider.prototype._init.call(this, _("MUSIC"), interpretations);
|
||||
}
|
||||
};
|
||||
|
||||
function PicturesAsyncSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
PicturesAsyncSearchProvider.prototype = {
|
||||
__proto__: ZeitgeistAsyncSearchProvider.prototype,
|
||||
|
||||
_init: function() {
|
||||
let interpretations = [Semantic.NFO_IMAGE];
|
||||
ZeitgeistAsyncSearchProvider.prototype._init.call(this, _("PICTURES"), interpretations);
|
||||
}
|
||||
};
|
||||
|
||||
function OtherAsyncSearchProvider() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
OtherAsyncSearchProvider.prototype = {
|
||||
__proto__: ZeitgeistAsyncSearchProvider.prototype,
|
||||
|
||||
_init: function() {
|
||||
let interpretations = [
|
||||
'!' + Semantic.NFO_IMAGE,
|
||||
'!' + Semantic.NFO_DOCUMENT,
|
||||
'!' + Semantic.NFO_VIDEO,
|
||||
'!' + Semantic.NFO_AUDIO,
|
||||
'!' + Semantic.NMM_MUSIC_PIECE];
|
||||
ZeitgeistAsyncSearchProvider.prototype._init.call(this, _("OTHER"), interpretations);
|
||||
},
|
||||
|
||||
_buildTemplates: function(interpretations) {
|
||||
// Here we want to get everything matching all of the templates, and
|
||||
// not just any of them. Therefore we need to AND the interpretations
|
||||
// instead of OR'ing them; this is done by having an Event with
|
||||
// different Subjects.
|
||||
this.templates = [];
|
||||
let subjects = [];
|
||||
for (let i = 0; i < interpretations.length; i++) {
|
||||
let subject = new Zeitgeist.Subject('', interpretations[i], '', '', '', '', '');
|
||||
subjects.push(subject);
|
||||
}
|
||||
let event = new Zeitgeist.Event('', '', '', subjects, []);
|
||||
this.templates.push(event);
|
||||
}
|
||||
};
|
@@ -36,48 +36,53 @@ visually attractive and easy to use experience.
|
||||
.SH OPTIONS
|
||||
|
||||
.TP
|
||||
.B \-\-replace
|
||||
Replace the running window manager
|
||||
.B \-r, \-\-replace
|
||||
Replace the running metacity/gnome-panel
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-disable
|
||||
Disable connection to the session manager
|
||||
.B \-v, \-\-verbose
|
||||
Shows details about the results of running `gnome-shell'.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-client-id=ID
|
||||
Specify session management ID
|
||||
.B \-g, \-\-debug
|
||||
Run under a debugger
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-save-file=FILE
|
||||
Initialize session from savefile
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-screen=SCREEN
|
||||
X screen to use
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-d, \-\-display=DISPLAY
|
||||
X display to use
|
||||
.B \-\-debug\-command
|
||||
Command to use for debugging (defaults to 'gdb \-\-args')
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sync
|
||||
Make X calls synchronous
|
||||
.br
|
||||
Make X calls synchronously, useful when debugging down X errors
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-version
|
||||
Print version and exit
|
||||
.B \-\-xephyr
|
||||
Run a debugging instance inside Xephyr
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-help
|
||||
Display help and exit
|
||||
.B \-\-geometry
|
||||
Specify Xephyr screen geometry
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-w, \-\-wide
|
||||
Use widescreen (1280x800) with Xephyr
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-create\-extension
|
||||
Create a new GNOME Shell extension
|
||||
|
||||
.TP
|
||||
.B \-\-eval\-file
|
||||
Evaluate the contents of the given JavaScript file
|
||||
.br
|
||||
|
||||
.SH BUGS
|
||||
|
@@ -1,21 +1,15 @@
|
||||
af
|
||||
an
|
||||
ar
|
||||
be
|
||||
bg
|
||||
bn
|
||||
bn_IN
|
||||
ca
|
||||
ca@valencia
|
||||
cs
|
||||
da
|
||||
de
|
||||
el
|
||||
en_GB
|
||||
eo
|
||||
es
|
||||
et
|
||||
eu
|
||||
fa
|
||||
fi
|
||||
fr
|
||||
@@ -42,13 +36,11 @@ pt
|
||||
pt_BR
|
||||
ro
|
||||
ru
|
||||
sk
|
||||
sl
|
||||
sr
|
||||
sr@latin
|
||||
sv
|
||||
ta
|
||||
te
|
||||
th
|
||||
tr
|
||||
ug
|
||||
|
1426
po/ca@valencia.po
133
po/da.po
@@ -14,8 +14,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-30 22:40+0200\n"
|
||||
"PO-Revision-Date: 2011-03-30 19:55+0000\n"
|
||||
"POT-Creation-Date: 2011-03-28 23:40+0200\n"
|
||||
"PO-Revision-Date: 2011-03-28 20:00+0000\n"
|
||||
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||
"Language: da\n"
|
||||
@@ -345,13 +345,13 @@ msgid "Nothing Scheduled"
|
||||
msgstr "Intet planlagt"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
|
||||
#: ../js/ui/calendar.js:723
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d. %B %Y"
|
||||
@@ -372,7 +372,7 @@ msgstr "Denne uge"
|
||||
msgid "Next week"
|
||||
msgstr "Næste uge"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
|
||||
msgid "Remove"
|
||||
msgstr "Fjern"
|
||||
|
||||
@@ -463,21 +463,24 @@ msgid "Logging out of the system."
|
||||
msgstr "Logger ud af systemet."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||
#, fuzzy
|
||||
msgid "Power Off"
|
||||
msgstr "Sluk"
|
||||
msgstr "Sluk..."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
#, fuzzy
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr "Tryk Sluk for at afslutte disse programmer og lukke systemet ned."
|
||||
msgstr "Tryk Log ud for at afslutte disse programmer og logge ud af systemet."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "The system will power off automatically in %d seconds."
|
||||
msgstr "Systemet vil lukke ned automatisk om %d sekunder."
|
||||
msgstr "Systemet vil genstarte automatisk om %d sekunder."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:78
|
||||
#, fuzzy
|
||||
msgid "Powering off the system."
|
||||
msgstr "Lukker systemet ned."
|
||||
msgstr "Logger ud af systemet."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
@@ -532,11 +535,11 @@ msgstr "Vis kilde"
|
||||
msgid "Web Page"
|
||||
msgstr "Webside"
|
||||
|
||||
#: ../js/ui/messageTray.js:1000
|
||||
#: ../js/ui/messageTray.js:993
|
||||
msgid "Open"
|
||||
msgstr "Åbn"
|
||||
|
||||
#: ../js/ui/messageTray.js:2164
|
||||
#: ../js/ui/messageTray.js:2151
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformation"
|
||||
|
||||
@@ -559,20 +562,20 @@ msgid "Dash"
|
||||
msgstr "Favoritområde"
|
||||
|
||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||
#: ../js/ui/panel.js:524
|
||||
#: ../js/ui/panel.js:515
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "Afslut %s"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:902
|
||||
#: ../js/ui/panel.js:893
|
||||
msgid "Activities"
|
||||
msgstr "Aktiviteter"
|
||||
|
||||
#: ../js/ui/panel.js:1003
|
||||
#: ../js/ui/panel.js:994
|
||||
msgid "Top Bar"
|
||||
msgstr "Toppanel"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/placeDisplay.js:122
|
||||
#, c-format
|
||||
@@ -593,15 +596,15 @@ msgstr "STEDER & ENHEDER"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||
msgid "Authentication Required"
|
||||
msgstr "Godkendelse er påkrævet"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||
msgid "Authenticate"
|
||||
msgstr "Godkend"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
@@ -609,11 +612,11 @@ msgstr "Godkend"
|
||||
#. * for instance.
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:264
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:276
|
||||
msgid "Password:"
|
||||
msgstr "Adgangskode:"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
@@ -837,140 +840,150 @@ msgid "Localization Settings"
|
||||
msgstr "Indstillinger for sprog"
|
||||
|
||||
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
|
||||
#, fuzzy
|
||||
msgid "<unknown>"
|
||||
msgstr "<ukendt>"
|
||||
msgstr "Ukendt"
|
||||
|
||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||
#: ../js/ui/status/network.js:311
|
||||
#, fuzzy
|
||||
msgid "disabled"
|
||||
msgstr "deaktiveret"
|
||||
msgstr "Deaktiveret"
|
||||
|
||||
#: ../js/ui/status/network.js:494
|
||||
#, fuzzy
|
||||
msgid "connecting..."
|
||||
msgstr "forbinder..."
|
||||
msgstr "Forbindelse"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:497
|
||||
msgid "authentication required"
|
||||
msgstr "godkendelse påkrævet"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:507
|
||||
msgid "firmware missing"
|
||||
msgstr "firmware mangler"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:514
|
||||
msgid "cable unplugged"
|
||||
msgstr "kabel er ikke sat i"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:519
|
||||
#, fuzzy
|
||||
msgid "unavailable"
|
||||
msgstr "utilgængelig"
|
||||
msgstr "Tilgængelig"
|
||||
|
||||
#: ../js/ui/status/network.js:521
|
||||
#, fuzzy
|
||||
msgid "connection failed"
|
||||
msgstr "forbindelse mislykkedes"
|
||||
msgstr "Forbindelse"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
|
||||
msgid "Connected (private)"
|
||||
msgstr "Forbundet (privat)"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:683
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "Auto ethernet"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:758
|
||||
msgid "Auto broadband"
|
||||
msgstr "Auto bredbånd"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:761
|
||||
msgid "Auto dial-up"
|
||||
msgstr "Auto opringning"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Auto %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:906
|
||||
#, fuzzy
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "Auto bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: ../js/ui/status/network.js:1416
|
||||
msgid "Auto wireless"
|
||||
msgstr "Auto trådløs"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1474
|
||||
msgid "More..."
|
||||
msgstr "Mere..."
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1497
|
||||
msgid "Enable networking"
|
||||
msgstr "Aktivér netværk"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1509
|
||||
msgid "Wired"
|
||||
msgstr "Trådet"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1520
|
||||
msgid "Wireless"
|
||||
msgstr "Trådløs"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1530
|
||||
msgid "Mobile broadband"
|
||||
msgstr "Mobilt bredbånd"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1540
|
||||
#, fuzzy
|
||||
msgid "VPN Connections"
|
||||
msgstr "VPN-forbindelser"
|
||||
msgstr "Forbindelse"
|
||||
|
||||
#: ../js/ui/status/network.js:1549
|
||||
#, fuzzy
|
||||
msgid "Network Settings"
|
||||
msgstr "Indstillinger for netværk"
|
||||
msgstr "Indstillinger for strømstyring"
|
||||
|
||||
#: ../js/ui/status/network.js:1844
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "Du er nu forbundet til den mobile bredbåndsforbindelse \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1848
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "Du er nu forbundet til det trådløse netværk \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1852
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "Du er nu forbundet til det trådede netværk \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1856
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "Du er nu forbundet til VPN-netværket \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1861
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "Du er nu forbundet til \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1869
|
||||
#, fuzzy
|
||||
msgid "Connection established"
|
||||
msgstr "Forbindelse oprettet"
|
||||
msgstr "Forbindelse"
|
||||
|
||||
#: ../js/ui/status/network.js:1991
|
||||
msgid "Networking is disabled"
|
||||
msgstr "Netværk er deaktiveret"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:2116
|
||||
#, fuzzy
|
||||
msgid "Network Manager"
|
||||
msgstr "Netværkshåndtering"
|
||||
msgstr "Håndtering"
|
||||
|
||||
#: ../js/ui/status/power.js:85
|
||||
msgid "Power Settings"
|
||||
@@ -1070,22 +1083,22 @@ msgstr "Lydstyrke"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#: ../js/ui/telepathyClient.js:331
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s er online."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#: ../js/ui/telepathyClient.js:336
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s er offline."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#: ../js/ui/telepathyClient.js:339
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s er ikke til stede."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#: ../js/ui/telepathyClient.js:342
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s er optaget."
|
||||
@@ -1093,7 +1106,7 @@ msgstr "%s er optaget."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:482
|
||||
#: ../js/ui/telepathyClient.js:473
|
||||
#, no-c-format
|
||||
msgid "Sent at %X on %A"
|
||||
msgstr "Sendt kl. %X i %As"
|
||||
@@ -1147,9 +1160,9 @@ msgid "Print version"
|
||||
msgstr "Udskriv version"
|
||||
|
||||
#: ../src/shell-app.c:454
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Kunne ikke køre \"%s\""
|
||||
msgstr "Kunne ikke afmontere \"%s\""
|
||||
|
||||
#: ../src/shell-global.c:1395
|
||||
msgid "Less than a minute ago"
|
||||
@@ -1185,11 +1198,11 @@ msgstr[1] "%d uger siden"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "Storbritannien"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/shell-mobile-providers.c:526
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/shell-polkit-authentication-agent.c:334
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
|
42
po/de.po
@@ -5,7 +5,7 @@
|
||||
# workspace - Arbeitsfläche
|
||||
#
|
||||
# Hendrik Brandt <heb@gnome-de.org>, 2009.
|
||||
# Hendrik Richter <hendrikr@gnome.org>, 2009, 2010, 2011.
|
||||
# Hendrik Richter <hendrikr@gnome.org>, 2009.
|
||||
# Mario Blättermann <mariobl@gnome.org>, 2009, 2010, 2011.
|
||||
# Mario Klug <mario@klug.me>, 2010.
|
||||
# Jakob Kramer <jakob.kramer@gmx.de>, 2010.
|
||||
@@ -17,9 +17,9 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2011-03-27 14:43+0000\n"
|
||||
"PO-Revision-Date: 2011-04-22 14:23+0200\n"
|
||||
"Last-Translator: Hendrik Richter <hendrikr@gnome.org>\n"
|
||||
"POT-Creation-Date: 2011-03-27 05:13+0000\n"
|
||||
"PO-Revision-Date: 2011-03-27 15:45+0200\n"
|
||||
"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -241,7 +241,7 @@ msgstr "%s wurde aus Ihren Favoriten entfernt"
|
||||
#: ../js/ui/calendar.js:66
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Ganztägig"
|
||||
msgstr "Ganztägig"
|
||||
|
||||
#. Translators: Shown in calendar event list, if 24h format
|
||||
#: ../js/ui/calendar.js:71
|
||||
@@ -249,15 +249,11 @@ msgctxt "event list time"
|
||||
msgid "%H:%M"
|
||||
msgstr "%H:%M"
|
||||
|
||||
#
|
||||
# Da wir keine AM/PM-Suffixe haben, die Zeit von Terminen aber eindeutig
|
||||
# angezeigt werden soll, wird im Kalender stets das 24h-Format verwendet.
|
||||
#
|
||||
#. Transators: Shown in calendar event list, if 12h format
|
||||
#: ../js/ui/calendar.js:78
|
||||
msgctxt "event list time"
|
||||
msgid "%l:%M %p"
|
||||
msgstr "%H:%M"
|
||||
msgstr "%l:%M"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Sunday.
|
||||
#. *
|
||||
@@ -383,7 +379,7 @@ msgstr "Diese Woche"
|
||||
|
||||
#: ../js/ui/calendar.js:754
|
||||
msgid "Next week"
|
||||
msgstr "Nächste Woche"
|
||||
msgstr "Nächste Woche"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
|
||||
msgid "Remove"
|
||||
@@ -395,7 +391,7 @@ msgstr "Einstellungen für Datum und Uhrzeit"
|
||||
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Kalender öffnen"
|
||||
msgstr "Kalender öffnen"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
@@ -421,21 +417,21 @@ msgstr "%a %R"
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:177
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a, %e. %b, %l:%M:%S"
|
||||
msgstr "%a, %e. %b, %H:%M:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:178
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a, %e. %b, %l:%M"
|
||||
msgstr "%a, %e. %b, %H:%M"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S"
|
||||
msgstr "%a %H:%M:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:183
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l:%M"
|
||||
msgstr "%a %H:%M"
|
||||
|
||||
#. 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").
|
||||
@@ -799,7 +795,7 @@ msgstr "Legitimierungsanfrage von %s"
|
||||
#: ../js/ui/status/bluetooth.js:374
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
|
||||
msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:376
|
||||
msgid "Always grant access"
|
||||
@@ -821,7 +817,7 @@ msgstr "Koppelungsbestätigung für %s"
|
||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
|
||||
msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:415
|
||||
#, c-format
|
||||
@@ -840,11 +836,11 @@ msgstr "Stimmt nicht überein"
|
||||
#: ../js/ui/status/bluetooth.js:441
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Koppelungsanfrage für %s"
|
||||
msgstr "Koppelungsanfrage für %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:449
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
|
||||
msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:465
|
||||
msgid "OK"
|
||||
@@ -1070,7 +1066,7 @@ msgstr "Mobiltelefon"
|
||||
|
||||
#: ../js/ui/status/power.js:244
|
||||
msgid "Media player"
|
||||
msgstr "Medienwiedergabegerät"
|
||||
msgstr "Medienwiedergabegerät"
|
||||
|
||||
#: ../js/ui/status/power.js:246
|
||||
msgid "Tablet"
|
||||
@@ -1086,7 +1082,7 @@ msgstr "Unbekannt"
|
||||
|
||||
#: ../js/ui/status/volume.js:45
|
||||
msgid "Volume"
|
||||
msgstr "Lautstärke"
|
||||
msgstr "Lautstärke"
|
||||
|
||||
#: ../js/ui/status/volume.js:58
|
||||
msgid "Microphone"
|
||||
@@ -1252,7 +1248,7 @@ msgstr "%1$s: %2$s"
|
||||
#~ msgstr "Ausschalten des Systems."
|
||||
|
||||
#~ msgid "Confirm"
|
||||
#~ msgstr "Bestätigen"
|
||||
#~ msgstr "Bestätigen"
|
||||
|
||||
#~| msgid "Cancel"
|
||||
#~ msgid "Panel"
|
||||
|
468
po/en_GB.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-30 14:52+0100\n"
|
||||
"PO-Revision-Date: 2011-03-30 14:55+0100\n"
|
||||
"POT-Creation-Date: 2011-03-08 19:51+0000\n"
|
||||
"PO-Revision-Date: 2011-03-08 19:50+0100\n"
|
||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Language-Team: British English <en@li.org>\n"
|
||||
"Language: en_GB\n"
|
||||
@@ -169,43 +169,47 @@ msgstr "Whether to collect statistics about application usage"
|
||||
msgid "disabled OpenSearch providers"
|
||||
msgstr "disabled OpenSearch providers"
|
||||
|
||||
#: ../js/misc/util.js:71
|
||||
#: ../js/misc/util.js:86
|
||||
msgid "Command not found"
|
||||
msgstr "Command not found"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:98
|
||||
#: ../js/misc/util.js:113
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Could not parse command:"
|
||||
|
||||
#: ../js/misc/util.js:106
|
||||
#: ../js/misc/util.js:135
|
||||
msgid "No such application"
|
||||
msgstr "No such application"
|
||||
|
||||
#: ../js/misc/util.js:148
|
||||
#, c-format
|
||||
msgid "Execution of '%s' failed:"
|
||||
msgstr "Execution of '%s' failed:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:230
|
||||
#: ../js/ui/appDisplay.js:226
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
#: ../js/ui/appDisplay.js:328
|
||||
#: ../js/ui/appDisplay.js:324
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "APPLICATIONS"
|
||||
|
||||
#: ../js/ui/appDisplay.js:354
|
||||
#: ../js/ui/appDisplay.js:350
|
||||
msgid "SETTINGS"
|
||||
msgstr "SETTINGS"
|
||||
|
||||
#: ../js/ui/appDisplay.js:625
|
||||
#: ../js/ui/appDisplay.js:612
|
||||
msgid "New Window"
|
||||
msgstr "New Window"
|
||||
|
||||
#: ../js/ui/appDisplay.js:628
|
||||
#: ../js/ui/appDisplay.js:615
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Remove from Favourites"
|
||||
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
#: ../js/ui/appDisplay.js:616
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Add to Favourites"
|
||||
|
||||
@@ -338,13 +342,13 @@ msgid "Nothing Scheduled"
|
||||
msgstr "Nothing Scheduled"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
|
||||
#: ../js/ui/calendar.js:723
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %d %B, %Y"
|
||||
@@ -365,7 +369,7 @@ msgstr "This week"
|
||||
msgid "Next week"
|
||||
msgstr "Next week"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
|
||||
@@ -420,7 +424,7 @@ msgstr "%a %l:%M %p"
|
||||
#. 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").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:209
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %e %B, %Y"
|
||||
|
||||
@@ -433,7 +437,7 @@ msgstr "RECENT ITEMS"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Log Out %s"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
||||
msgid "Log Out"
|
||||
msgstr "Log Out"
|
||||
|
||||
@@ -455,43 +459,45 @@ msgstr "You will be logged out automatically in %d seconds."
|
||||
msgid "Logging out of the system."
|
||||
msgstr "Logging out of the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||
msgid "Power Off"
|
||||
msgstr "Power Off"
|
||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
||||
msgid "Shut Down"
|
||||
msgstr "Shut Down"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75
|
||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
msgstr "Click Shut Down to quit these applications and shut down the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr "Click Power Off to quit these applications and power off the system."
|
||||
#, c-format
|
||||
msgid "The system will shut down automatically in %d seconds."
|
||||
msgstr "The system will shut down automatically in %d seconds."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
#, c-format
|
||||
msgid "The system will power off automatically in %d seconds."
|
||||
msgstr "The system will power off automatically in %d seconds."
|
||||
msgid "Shutting down the system."
|
||||
msgstr "Shutting down the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:78
|
||||
msgid "Powering off the system."
|
||||
msgstr "Powering off the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:89
|
||||
#: ../js/ui/endSessionDialog.js:85
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr "Click Restart to quit these applications and restart the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:90
|
||||
#: ../js/ui/endSessionDialog.js:86
|
||||
#, c-format
|
||||
msgid "The system will restart automatically in %d seconds."
|
||||
msgstr "The system will restart automatically in %d seconds."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:91
|
||||
#: ../js/ui/endSessionDialog.js:87
|
||||
msgid "Restarting the system."
|
||||
msgstr "Restarting the system."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||
#: ../js/ui/status/bluetooth.js:466
|
||||
#: ../js/ui/endSessionDialog.js:395
|
||||
msgid "Confirm"
|
||||
msgstr "Confirm"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
@@ -505,7 +511,7 @@ msgstr "Enabled"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
||||
msgid "Disabled"
|
||||
msgstr "Disabled"
|
||||
|
||||
@@ -525,47 +531,47 @@ msgstr "View Source"
|
||||
msgid "Web Page"
|
||||
msgstr "Web Page"
|
||||
|
||||
#: ../js/ui/messageTray.js:1000
|
||||
#: ../js/ui/messageTray.js:926
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: ../js/ui/messageTray.js:2164
|
||||
#: ../js/ui/messageTray.js:1963
|
||||
msgid "System Information"
|
||||
msgstr "System Information"
|
||||
|
||||
#: ../js/ui/overview.js:91
|
||||
#: ../js/ui/overview.js:88
|
||||
msgid "Undo"
|
||||
msgstr "Undo"
|
||||
|
||||
#: ../js/ui/overview.js:186
|
||||
#: ../js/ui/overview.js:183
|
||||
msgid "Windows"
|
||||
msgstr "Windows"
|
||||
|
||||
#: ../js/ui/overview.js:189
|
||||
#: ../js/ui/overview.js:186
|
||||
msgid "Applications"
|
||||
msgstr "Applications"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:205
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||
#: ../js/ui/panel.js:524
|
||||
#: ../js/ui/panel.js:532
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "Quit %s"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:902
|
||||
#: ../js/ui/panel.js:893
|
||||
msgid "Activities"
|
||||
msgstr "Activities"
|
||||
|
||||
#: ../js/ui/panel.js:1003
|
||||
msgid "Top Bar"
|
||||
msgstr "Top Bar"
|
||||
#: ../js/ui/panel.js:994
|
||||
msgid "Panel"
|
||||
msgstr "Panel"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:122
|
||||
#, c-format
|
||||
@@ -580,89 +586,64 @@ msgstr "Retry"
|
||||
msgid "Connect to..."
|
||||
msgstr "Connect to…"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:380
|
||||
#: ../js/ui/placeDisplay.js:409
|
||||
msgid "PLACES & DEVICES"
|
||||
msgstr "PLACES & DEVICES"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||
msgid "Authentication Required"
|
||||
msgstr "Authentication Required"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||
msgid "Authenticate"
|
||||
msgstr "Authenticate"
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:264
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Sorry, that didn't work. Please try again."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:276
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
#. 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:679
|
||||
#: ../js/ui/popupMenu.js:618
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
#: ../js/ui/runDialog.js:205
|
||||
#: ../js/ui/runDialog.js:201
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Please enter a command:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:310
|
||||
#: ../js/ui/searchDisplay.js:283
|
||||
msgid "Searching..."
|
||||
msgstr "Searching…"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:324
|
||||
#: ../js/ui/searchDisplay.js:297
|
||||
msgid "No matching results."
|
||||
msgstr "No matching results."
|
||||
|
||||
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||
#: ../js/ui/statusMenu.js:228
|
||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
||||
msgid "Power Off..."
|
||||
msgstr "Power Off…"
|
||||
|
||||
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
||||
msgid "Suspend"
|
||||
msgstr "Suspend"
|
||||
|
||||
#: ../js/ui/statusMenu.js:184
|
||||
#: ../js/ui/statusMenu.js:125
|
||||
msgid "Available"
|
||||
msgstr "Available"
|
||||
|
||||
#: ../js/ui/statusMenu.js:189
|
||||
#: ../js/ui/statusMenu.js:130
|
||||
msgid "Busy"
|
||||
msgstr "Busy"
|
||||
|
||||
#: ../js/ui/statusMenu.js:197
|
||||
#: ../js/ui/statusMenu.js:138
|
||||
msgid "My Account"
|
||||
msgstr "My Account"
|
||||
|
||||
#: ../js/ui/statusMenu.js:201
|
||||
#: ../js/ui/statusMenu.js:142
|
||||
msgid "System Settings"
|
||||
msgstr "System Settings"
|
||||
|
||||
#: ../js/ui/statusMenu.js:208
|
||||
#: ../js/ui/statusMenu.js:149
|
||||
msgid "Lock Screen"
|
||||
msgstr "Lock Screen"
|
||||
|
||||
#: ../js/ui/statusMenu.js:213
|
||||
#: ../js/ui/statusMenu.js:153
|
||||
msgid "Switch User"
|
||||
msgstr "Switch User"
|
||||
|
||||
#: ../js/ui/statusMenu.js:218
|
||||
#: ../js/ui/statusMenu.js:158
|
||||
msgid "Log Out..."
|
||||
msgstr "Log Out…"
|
||||
|
||||
@@ -670,12 +651,14 @@ msgstr "Log Out…"
|
||||
msgid "Zoom"
|
||||
msgstr "Zoom"
|
||||
|
||||
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||
#. 'screen-reader-enabled');
|
||||
#. this.menu.addMenuItem(screenReader);
|
||||
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||
#. 'screen-keyboard-enabled');
|
||||
#. this.menu.addMenuItem(screenKeyboard);
|
||||
#: ../js/ui/status/accessibility.js:69
|
||||
msgid "Screen Reader"
|
||||
msgstr "Screen Reader"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:73
|
||||
msgid "Screen Keyboard"
|
||||
msgstr "Screen Keyboard"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:77
|
||||
msgid "Visual Alerts"
|
||||
msgstr "Visual Alerts"
|
||||
@@ -700,17 +683,17 @@ msgstr "Mouse Keys"
|
||||
msgid "Universal Access Settings"
|
||||
msgstr "Universal Access Settings"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:146
|
||||
#: ../js/ui/status/accessibility.js:145
|
||||
msgid "High Contrast"
|
||||
msgstr "High Contrast"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:183
|
||||
#: ../js/ui/status/accessibility.js:182
|
||||
msgid "Large Text"
|
||||
msgstr "Large Text"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@@ -730,94 +713,94 @@ msgstr "Setup a New Device…"
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth Settings"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:188
|
||||
#: ../js/ui/status/bluetooth.js:192
|
||||
msgid "Connection"
|
||||
msgstr "Connection"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:224
|
||||
#: ../js/ui/status/bluetooth.js:228
|
||||
msgid "Send Files..."
|
||||
msgstr "Send Files…"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:229
|
||||
#: ../js/ui/status/bluetooth.js:233
|
||||
msgid "Browse Files..."
|
||||
msgstr "Browse Files…"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:238
|
||||
#: ../js/ui/status/bluetooth.js:242
|
||||
msgid "Error browsing device"
|
||||
msgstr "Error browsing device"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:239
|
||||
#: ../js/ui/status/bluetooth.js:243
|
||||
#, c-format
|
||||
msgid "The requested device cannot be browsed, error is '%s'"
|
||||
msgstr "The requested device cannot be browsed, error is '%s'"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:247
|
||||
#: ../js/ui/status/bluetooth.js:251
|
||||
msgid "Keyboard Settings"
|
||||
msgstr "Keyboard Settings"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:252
|
||||
#: ../js/ui/status/bluetooth.js:256
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Mouse Settings"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
||||
msgid "Sound Settings"
|
||||
msgstr "Sound Settings"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:368
|
||||
#: ../js/ui/status/bluetooth.js:372
|
||||
#, c-format
|
||||
msgid "Authorization request from %s"
|
||||
msgstr "Authorisation request from %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:374
|
||||
#: ../js/ui/status/bluetooth.js:378
|
||||
#, c-format
|
||||
msgid "Device %s wants access to the service '%s'"
|
||||
msgstr "Device %s wants access to the service '%s'"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:376
|
||||
#: ../js/ui/status/bluetooth.js:380
|
||||
msgid "Always grant access"
|
||||
msgstr "Always grant access"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:377
|
||||
#: ../js/ui/status/bluetooth.js:381
|
||||
msgid "Grant this time only"
|
||||
msgstr "Grant this time only"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:378
|
||||
#: ../js/ui/status/bluetooth.js:382
|
||||
msgid "Reject"
|
||||
msgstr "Reject"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:408
|
||||
#: ../js/ui/status/bluetooth.js:412
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Pairing confirmation for %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Device %s wants to pair with this computer"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:415
|
||||
#: ../js/ui/status/bluetooth.js:419
|
||||
#, c-format
|
||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||
msgstr "Please confirm whether the PIN '%s' matches the one on the device."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:417
|
||||
#: ../js/ui/status/bluetooth.js:421
|
||||
msgid "Matches"
|
||||
msgstr "Matches"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:418
|
||||
#: ../js/ui/status/bluetooth.js:422
|
||||
msgid "Does not match"
|
||||
msgstr "Does not match"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:441
|
||||
#: ../js/ui/status/bluetooth.js:445
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "Pairing request for %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:449
|
||||
#: ../js/ui/status/bluetooth.js:453
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
msgstr "Please enter the PIN mentioned on the device."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:465
|
||||
#: ../js/ui/status/bluetooth.js:469
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
@@ -829,153 +812,17 @@ msgstr "Show Keyboard Layout…"
|
||||
msgid "Localization Settings"
|
||||
msgstr "Localisation Settings"
|
||||
|
||||
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
|
||||
msgid "<unknown>"
|
||||
msgstr "<unknown>"
|
||||
|
||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||
#: ../js/ui/status/network.js:311
|
||||
msgid "disabled"
|
||||
msgstr "disabled"
|
||||
|
||||
#: ../js/ui/status/network.js:494
|
||||
msgid "connecting..."
|
||||
msgstr "connecting…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:497
|
||||
msgid "authentication required"
|
||||
msgstr "authentication required"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:507
|
||||
msgid "firmware missing"
|
||||
msgstr "firmware missing"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:514
|
||||
msgid "cable unplugged"
|
||||
msgstr "cable unplugged"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:519
|
||||
msgid "unavailable"
|
||||
msgstr "unavailable"
|
||||
|
||||
#: ../js/ui/status/network.js:521
|
||||
msgid "connection failed"
|
||||
msgstr "connection failed"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
|
||||
msgid "Connected (private)"
|
||||
msgstr "Connected (private)"
|
||||
|
||||
#: ../js/ui/status/network.js:683
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "Auto Ethernet"
|
||||
|
||||
#: ../js/ui/status/network.js:758
|
||||
msgid "Auto broadband"
|
||||
msgstr "Auto broadband"
|
||||
|
||||
#: ../js/ui/status/network.js:761
|
||||
msgid "Auto dial-up"
|
||||
msgstr "Auto dial-up"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Auto %s"
|
||||
|
||||
#: ../js/ui/status/network.js:906
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "Auto bluetooth"
|
||||
|
||||
#: ../js/ui/status/network.js:1416
|
||||
msgid "Auto wireless"
|
||||
msgstr "Auto wireless"
|
||||
|
||||
#: ../js/ui/status/network.js:1474
|
||||
msgid "More..."
|
||||
msgstr "More…"
|
||||
|
||||
#: ../js/ui/status/network.js:1497
|
||||
msgid "Enable networking"
|
||||
msgstr "Enable networking"
|
||||
|
||||
#: ../js/ui/status/network.js:1509
|
||||
msgid "Wired"
|
||||
msgstr "Wired"
|
||||
|
||||
#: ../js/ui/status/network.js:1520
|
||||
msgid "Wireless"
|
||||
msgstr "Wireless"
|
||||
|
||||
#: ../js/ui/status/network.js:1530
|
||||
msgid "Mobile broadband"
|
||||
msgstr "Mobile broadband"
|
||||
|
||||
#: ../js/ui/status/network.js:1540
|
||||
msgid "VPN Connections"
|
||||
msgstr "VPN Connections"
|
||||
|
||||
#: ../js/ui/status/network.js:1549
|
||||
msgid "Network Settings"
|
||||
msgstr "Network Settings"
|
||||
|
||||
#: ../js/ui/status/network.js:1844
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "You're now connected to mobile broadband connection '%s'"
|
||||
|
||||
#: ../js/ui/status/network.js:1848
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "You're now connected to wireless network '%s'"
|
||||
|
||||
#: ../js/ui/status/network.js:1852
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "You're now connected to wired network '%s'"
|
||||
|
||||
#: ../js/ui/status/network.js:1856
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "You're now connected to VPN network '%s'"
|
||||
|
||||
#: ../js/ui/status/network.js:1861
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "You're now connected to '%s'"
|
||||
|
||||
#: ../js/ui/status/network.js:1869
|
||||
msgid "Connection established"
|
||||
msgstr "Connection established"
|
||||
|
||||
#: ../js/ui/status/network.js:1991
|
||||
msgid "Networking is disabled"
|
||||
msgstr "Networking is disabled"
|
||||
|
||||
#: ../js/ui/status/network.js:2116
|
||||
msgid "Network Manager"
|
||||
msgstr "Network Manager"
|
||||
|
||||
#: ../js/ui/status/power.js:85
|
||||
msgid "Power Settings"
|
||||
msgstr "Power Settings"
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
#: ../js/ui/status/power.js:111
|
||||
#: ../js/ui/status/power.js:110
|
||||
msgid "Estimating..."
|
||||
msgstr "Estimating…"
|
||||
|
||||
#: ../js/ui/status/power.js:118
|
||||
#: ../js/ui/status/power.js:117
|
||||
#, c-format
|
||||
msgid "%d hour remaining"
|
||||
msgid_plural "%d hours remaining"
|
||||
@@ -983,102 +830,102 @@ msgstr[0] "%d hour remaining"
|
||||
msgstr[1] "%d hours remaining"
|
||||
|
||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||
#: ../js/ui/status/power.js:121
|
||||
#: ../js/ui/status/power.js:120
|
||||
#, c-format
|
||||
msgid "%d %s %d %s remaining"
|
||||
msgstr "%d %s %d %s remaining"
|
||||
|
||||
#: ../js/ui/status/power.js:123
|
||||
#: ../js/ui/status/power.js:122
|
||||
msgid "hour"
|
||||
msgid_plural "hours"
|
||||
msgstr[0] "hour"
|
||||
msgstr[1] "hours"
|
||||
|
||||
#: ../js/ui/status/power.js:123
|
||||
#: ../js/ui/status/power.js:122
|
||||
msgid "minute"
|
||||
msgid_plural "minutes"
|
||||
msgstr[0] "minute"
|
||||
msgstr[1] "minutes"
|
||||
|
||||
#: ../js/ui/status/power.js:126
|
||||
#: ../js/ui/status/power.js:125
|
||||
#, c-format
|
||||
msgid "%d minute remaining"
|
||||
msgid_plural "%d minutes remaining"
|
||||
msgstr[0] "%d minute remaining"
|
||||
msgstr[1] "%d minutes remaining"
|
||||
|
||||
#: ../js/ui/status/power.js:228
|
||||
#: ../js/ui/status/power.js:227
|
||||
msgid "AC adapter"
|
||||
msgstr "AC adapter"
|
||||
|
||||
#: ../js/ui/status/power.js:230
|
||||
#: ../js/ui/status/power.js:229
|
||||
msgid "Laptop battery"
|
||||
msgstr "Laptop battery"
|
||||
|
||||
#: ../js/ui/status/power.js:232
|
||||
#: ../js/ui/status/power.js:231
|
||||
msgid "UPS"
|
||||
msgstr "UPS"
|
||||
|
||||
#: ../js/ui/status/power.js:234
|
||||
#: ../js/ui/status/power.js:233
|
||||
msgid "Monitor"
|
||||
msgstr "Monitor"
|
||||
|
||||
#: ../js/ui/status/power.js:236
|
||||
#: ../js/ui/status/power.js:235
|
||||
msgid "Mouse"
|
||||
msgstr "Mouse"
|
||||
|
||||
#: ../js/ui/status/power.js:238
|
||||
#: ../js/ui/status/power.js:237
|
||||
msgid "Keyboard"
|
||||
msgstr "Keyboard"
|
||||
|
||||
#: ../js/ui/status/power.js:240
|
||||
#: ../js/ui/status/power.js:239
|
||||
msgid "PDA"
|
||||
msgstr "PDA"
|
||||
|
||||
#: ../js/ui/status/power.js:242
|
||||
#: ../js/ui/status/power.js:241
|
||||
msgid "Cell phone"
|
||||
msgstr "Mobile phone"
|
||||
|
||||
#: ../js/ui/status/power.js:244
|
||||
#: ../js/ui/status/power.js:243
|
||||
msgid "Media player"
|
||||
msgstr "Media player"
|
||||
|
||||
#: ../js/ui/status/power.js:246
|
||||
#: ../js/ui/status/power.js:245
|
||||
msgid "Tablet"
|
||||
msgstr "Tablet"
|
||||
|
||||
#: ../js/ui/status/power.js:248
|
||||
#: ../js/ui/status/power.js:247
|
||||
msgid "Computer"
|
||||
msgstr "Computer"
|
||||
|
||||
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
||||
msgid "Unknown"
|
||||
msgstr "Unknown"
|
||||
|
||||
#: ../js/ui/status/volume.js:45
|
||||
#: ../js/ui/status/volume.js:44
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#: ../js/ui/status/volume.js:58
|
||||
#: ../js/ui/status/volume.js:57
|
||||
msgid "Microphone"
|
||||
msgstr "Microphone"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#: ../js/ui/telepathyClient.js:239
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s is online."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#: ../js/ui/telepathyClient.js:244
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s is offline."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#: ../js/ui/telepathyClient.js:247
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s is away."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#: ../js/ui/telepathyClient.js:250
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s is busy."
|
||||
@@ -1086,7 +933,7 @@ msgstr "%s is busy."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:482
|
||||
#: ../js/ui/telepathyClient.js:348
|
||||
#, no-c-format
|
||||
msgid "Sent at %X on %A"
|
||||
msgstr "Sent at %X on %A"
|
||||
@@ -1095,11 +942,11 @@ msgstr "Sent at %X on %A"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters.
|
||||
#: ../js/ui/viewSelector.js:122
|
||||
#: ../js/ui/viewSelector.js:117
|
||||
msgid "Type to search..."
|
||||
msgstr "Type to search…"
|
||||
|
||||
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
|
||||
@@ -1115,7 +962,7 @@ msgstr "'%s' is ready"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
||||
#, c-format
|
||||
msgid "%u Output"
|
||||
msgid_plural "%u Outputs"
|
||||
@@ -1124,66 +971,53 @@ msgstr[1] "%u Outputs"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound inputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
||||
#, c-format
|
||||
msgid "%u Input"
|
||||
msgid_plural "%u Inputs"
|
||||
msgstr[0] "%u Input"
|
||||
msgstr[1] "%u Inputs"
|
||||
|
||||
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
||||
msgid "System Sounds"
|
||||
msgstr "System Sounds"
|
||||
|
||||
#: ../src/main.c:446
|
||||
#: ../src/main.c:395
|
||||
msgid "Print version"
|
||||
msgstr "Print version"
|
||||
|
||||
#: ../src/shell-app.c:454
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Failed to launch '%s'"
|
||||
|
||||
#: ../src/shell-global.c:1395
|
||||
#: ../src/shell-global.c:1308
|
||||
msgid "Less than a minute ago"
|
||||
msgstr "Less than a minute ago"
|
||||
|
||||
#: ../src/shell-global.c:1399
|
||||
#: ../src/shell-global.c:1312
|
||||
#, c-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
msgstr[0] "%d minute ago"
|
||||
msgstr[1] "%d minutes ago"
|
||||
|
||||
#: ../src/shell-global.c:1404
|
||||
#: ../src/shell-global.c:1317
|
||||
#, c-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
msgstr[0] "%d hour ago"
|
||||
msgstr[1] "%d hours ago"
|
||||
|
||||
#: ../src/shell-global.c:1409
|
||||
#: ../src/shell-global.c:1322
|
||||
#, c-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
msgstr[0] "%d day ago"
|
||||
msgstr[1] "%d days ago"
|
||||
|
||||
#: ../src/shell-global.c:1414
|
||||
#: ../src/shell-global.c:1327
|
||||
#, c-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
msgstr[0] "%d week ago"
|
||||
msgstr[1] "%d weeks ago"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "United Kingdom"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:526
|
||||
msgid "Default"
|
||||
msgstr "Default"
|
||||
|
||||
#: ../src/shell-polkit-authentication-agent.c:334
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Authentication dialogue was dismissed by the user"
|
||||
@@ -1208,34 +1042,6 @@ msgstr "File System"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "No such application"
|
||||
#~ msgstr "No such application"
|
||||
|
||||
#~ msgid "Shut Down"
|
||||
#~ msgstr "Shut Down"
|
||||
|
||||
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
#~ msgstr ""
|
||||
#~ "Click Shut Down to quit these applications and shut down the system."
|
||||
|
||||
#~ msgid "The system will shut down automatically in %d seconds."
|
||||
#~ msgstr "The system will shut down automatically in %d seconds."
|
||||
|
||||
#~ msgid "Shutting down the system."
|
||||
#~ msgstr "Shutting down the system."
|
||||
|
||||
#~ msgid "Confirm"
|
||||
#~ msgstr "Confirm"
|
||||
|
||||
#~ msgid "Panel"
|
||||
#~ msgstr "Panel"
|
||||
|
||||
#~ msgid "Screen Reader"
|
||||
#~ msgstr "Screen Reader"
|
||||
|
||||
#~ msgid "Screen Keyboard"
|
||||
#~ msgstr "Screen Keyboard"
|
||||
|
||||
#~ msgid "Clock"
|
||||
#~ msgstr "Clock"
|
||||
|
||||
|
67
po/et.po
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell MASTER\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2011-03-30 17:13+0000\n"
|
||||
"PO-Revision-Date: 2011-03-30 23:56+0300\n"
|
||||
"POT-Creation-Date: 2011-03-18 10:35+0000\n"
|
||||
"PO-Revision-Date: 2011-03-18 21:33+0300\n"
|
||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||
"Language-Team: Estonian <gnome-et@linux.ee>\n"
|
||||
"Language: et\n"
|
||||
@@ -385,19 +385,19 @@ msgstr "Sind logitakse %d sekundi pärast automaatselt välja."
|
||||
msgid "Logging out of the system."
|
||||
msgstr "Süsteemist väljalogimine"
|
||||
|
||||
msgid "Power Off"
|
||||
msgid "Shut Down"
|
||||
msgstr "Lülita välja"
|
||||
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
msgstr ""
|
||||
"Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
|
||||
"Lülita välja."
|
||||
"Logi välja."
|
||||
|
||||
#, c-format
|
||||
msgid "The system will power off automatically in %d seconds."
|
||||
msgid "The system will shut down automatically in %d seconds."
|
||||
msgstr "%d sekundi pärast lülitub süsteem automaatselt välja."
|
||||
|
||||
msgid "Powering off the system."
|
||||
msgid "Shutting down the system."
|
||||
msgstr "Süsteemi väljalülitamine."
|
||||
|
||||
msgid "Restart"
|
||||
@@ -415,6 +415,9 @@ msgstr "Süsteem taaskäivitatakse automaatselt %d sekundi pärast."
|
||||
msgid "Restarting the system."
|
||||
msgstr "Süsteemi taaskäivitamine."
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr "Kinnita"
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "Katkesta"
|
||||
|
||||
@@ -471,8 +474,8 @@ msgstr "Lõpeta %s"
|
||||
msgid "Activities"
|
||||
msgstr "Tegevused"
|
||||
|
||||
msgid "Top Bar"
|
||||
msgstr "Ülemine riba"
|
||||
msgid "Panel"
|
||||
msgstr "Paneel"
|
||||
|
||||
#, c-format
|
||||
msgid "Failed to unmount '%s'"
|
||||
@@ -487,25 +490,6 @@ msgstr "Ühendumine..."
|
||||
msgid "PLACES & DEVICES"
|
||||
msgstr "Asukohad ja seadmed"
|
||||
|
||||
msgid "Authentication Required"
|
||||
msgstr "Vajalik on autentimine"
|
||||
|
||||
msgid "Administrator"
|
||||
msgstr "Administraator"
|
||||
|
||||
msgid "Authenticate"
|
||||
msgstr "Autendi"
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
|
||||
|
||||
msgid "Password:"
|
||||
msgstr "Parool:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
@@ -688,11 +672,6 @@ msgstr "ühendumine..."
|
||||
msgid "authentication required"
|
||||
msgstr "vajalik on autentimine"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
msgid "firmware missing"
|
||||
msgstr "püsivara puudub"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
msgid "cable unplugged"
|
||||
msgstr "juhe eemaldatud"
|
||||
@@ -771,7 +750,7 @@ msgstr "Loodi ühendus VPN-võrguga '%s'"
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "Loodi võrguühendus '%s' kaudu"
|
||||
|
||||
msgid "Connection established"
|
||||
msgid "Connection estabilished"
|
||||
msgstr "Ühendus loodud"
|
||||
|
||||
msgid "Networking is disabled"
|
||||
@@ -977,26 +956,6 @@ msgstr "Failisüsteem"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "Shut Down"
|
||||
#~ msgstr "Lülita välja"
|
||||
|
||||
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
#~ msgstr ""
|
||||
#~ "Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
|
||||
#~ "Logi välja."
|
||||
|
||||
#~ msgid "The system will shut down automatically in %d seconds."
|
||||
#~ msgstr "%d sekundi pärast lülitub süsteem automaatselt välja."
|
||||
|
||||
#~ msgid "Shutting down the system."
|
||||
#~ msgstr "Süsteemi väljalülitamine."
|
||||
|
||||
#~ msgid "Confirm"
|
||||
#~ msgstr "Kinnita"
|
||||
|
||||
#~ msgid "Panel"
|
||||
#~ msgstr "Paneel"
|
||||
|
||||
#~ msgid "No such application"
|
||||
#~ msgstr "Sellist rakendust ei ole"
|
||||
|
||||
|
66
po/hi.po
@@ -1,4 +1,4 @@
|
||||
# translation of gnome-shell.master.hi.po to Hindi
|
||||
# translation of gnome-shell.po.master.hi.po to Hindi
|
||||
# Hindi translation for gnome-shell.
|
||||
# Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
@@ -6,10 +6,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master.hi\n"
|
||||
"Project-Id-Version: gnome-shell.po.master.hi\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2011-03-28 08:48+0000\n"
|
||||
"PO-Revision-Date: 2011-04-01 13:59+0530\n"
|
||||
"POT-Creation-Date: 2011-03-28 05:30+0000\n"
|
||||
"PO-Revision-Date: 2011-03-28 13:39+0530\n"
|
||||
"Last-Translator: Rajesh Ranjan\n"
|
||||
"Language-Team: Hindi <Indlinux>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME शेल"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||
msgid "Window management and application launching"
|
||||
@@ -316,7 +316,7 @@ msgstr ""
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723
|
||||
@@ -334,11 +334,11 @@ msgstr "कल"
|
||||
|
||||
#: ../js/ui/calendar.js:746
|
||||
msgid "This week"
|
||||
msgstr "इस सप्ताह"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/calendar.js:754
|
||||
msgid "Next week"
|
||||
msgstr "अगला सप्ताह"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1000
|
||||
msgid "Remove"
|
||||
@@ -346,47 +346,47 @@ msgstr "हटाएँ"
|
||||
|
||||
#: ../js/ui/dateMenu.js:91
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "तिथि व समय सेटिंग्स"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "पंचांग खोलें"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:164
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %b %e, %R:%S"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dateMenu.js:165
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %b %e, %R"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:169
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %R:%S"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dateMenu.js:170
|
||||
msgid "%a %R"
|
||||
msgstr "%a %R"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:177
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %b %e, %l:%M:%S %p"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dateMenu.js:178
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %b %e, %l:%M %p"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S %p"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/dateMenu.js:183
|
||||
msgid "%a %l:%M %p"
|
||||
@@ -397,16 +397,16 @@ msgstr "%a %l:%M %p"
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %B %e, %Y"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/docDisplay.js:19
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "हालिया मद"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:63
|
||||
#, c-format
|
||||
msgid "Log Out %s"
|
||||
msgstr "लॉगआउट %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||
msgid "Log Out"
|
||||
@@ -432,7 +432,7 @@ msgstr ""
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||
msgid "Power Off"
|
||||
msgstr "बिजली बंद"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
@@ -490,7 +490,7 @@ msgstr "त्रुटि"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:631
|
||||
msgid "Out of date"
|
||||
msgstr "समयातीत"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/lookingGlass.js:656
|
||||
msgid "View Source"
|
||||
@@ -530,7 +530,7 @@ msgstr "डैश"
|
||||
#: ../js/ui/panel.js:515
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "छोड़ें %s"
|
||||
msgstr ""
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
@@ -540,7 +540,7 @@ msgstr "क्रियाएँ"
|
||||
|
||||
#: ../js/ui/panel.js:979
|
||||
msgid "Top Bar"
|
||||
msgstr "शीर्ष पट्टी"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/placeDisplay.js:122
|
||||
#, c-format
|
||||
@@ -623,7 +623,7 @@ msgstr "व्यस्त"
|
||||
|
||||
#: ../js/ui/statusMenu.js:197
|
||||
msgid "My Account"
|
||||
msgstr "मेरा खाता"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/statusMenu.js:201
|
||||
msgid "System Settings"
|
||||
@@ -653,7 +653,7 @@ msgstr "ज़ूम"
|
||||
#. this.menu.addMenuItem(screenKeyboard);
|
||||
#: ../js/ui/status/accessibility.js:77
|
||||
msgid "Visual Alerts"
|
||||
msgstr "दृष्टि चेतावनी"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/accessibility.js:80
|
||||
msgid "Sticky Keys"
|
||||
@@ -732,7 +732,7 @@ msgstr "कुंजीपट विन्यास"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:252
|
||||
msgid "Mouse Settings"
|
||||
msgstr "माउस सेटिंग"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||
msgid "Sound Settings"
|
||||
@@ -851,7 +851,7 @@ msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:683
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "स्वतः इथरनेट"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:758
|
||||
msgid "Auto broadband"
|
||||
@@ -893,7 +893,7 @@ msgstr "बेतार"
|
||||
|
||||
#: ../js/ui/status/network.js:1530
|
||||
msgid "Mobile broadband"
|
||||
msgstr "मोबाइल ब्रॉडबैंड"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:1540
|
||||
msgid "VPN Connections"
|
||||
@@ -938,11 +938,11 @@ msgstr ""
|
||||
|
||||
#: ../js/ui/status/network.js:2116
|
||||
msgid "Network Manager"
|
||||
msgstr "संजाल प्रबंधक"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/status/power.js:85
|
||||
msgid "Power Settings"
|
||||
msgstr "बिजली सेटिंग्स"
|
||||
msgstr ""
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
@@ -1141,8 +1141,8 @@ msgstr[1] "%d घंटा पहले"
|
||||
#, c-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
msgstr[0] "%d दिन पहले"
|
||||
msgstr[1] "%d दिन पहले"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../src/shell-global.c:1414
|
||||
#, c-format
|
||||
|
231
po/hu.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-04-01 13:34+0200\n"
|
||||
"PO-Revision-Date: 2011-04-01 13:36+0200\n"
|
||||
"POT-Creation-Date: 2011-03-19 02:47+0100\n"
|
||||
"PO-Revision-Date: 2011-03-19 02:47+0100\n"
|
||||
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
|
||||
"Language-Team: Hungarian <gnome at fsf dot hu>\n"
|
||||
"Language: \n"
|
||||
@@ -189,27 +189,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "„%s” végrehajtása meghiúsult:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:230
|
||||
#: ../js/ui/appDisplay.js:226
|
||||
msgid "All"
|
||||
msgstr "Összes"
|
||||
|
||||
#: ../js/ui/appDisplay.js:328
|
||||
#: ../js/ui/appDisplay.js:324
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "ALKALMAZÁSOK"
|
||||
|
||||
#: ../js/ui/appDisplay.js:354
|
||||
#: ../js/ui/appDisplay.js:350
|
||||
msgid "SETTINGS"
|
||||
msgstr "BEÁLLÍTÁSOK"
|
||||
|
||||
#: ../js/ui/appDisplay.js:625
|
||||
#: ../js/ui/appDisplay.js:612
|
||||
msgid "New Window"
|
||||
msgstr "Új ablak"
|
||||
|
||||
#: ../js/ui/appDisplay.js:628
|
||||
#: ../js/ui/appDisplay.js:615
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Eltávolítás a Kedvencek közül"
|
||||
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
#: ../js/ui/appDisplay.js:616
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Hozzáadás a Kedvencekhez"
|
||||
|
||||
@@ -342,13 +342,13 @@ msgid "Nothing Scheduled"
|
||||
msgstr "Semmi sincs ütemezve"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
|
||||
#: ../js/ui/calendar.js:723
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %Y %B %d"
|
||||
@@ -369,7 +369,7 @@ msgstr "Ezen a héten"
|
||||
msgid "Next week"
|
||||
msgstr "Jövő héten"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||
msgid "Remove"
|
||||
msgstr "Eltávolítás"
|
||||
|
||||
@@ -437,7 +437,7 @@ msgstr "LEGUTÓBBI ELEMEK"
|
||||
msgid "Log Out %s"
|
||||
msgstr "%s kijelentkeztetése"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
||||
msgid "Log Out"
|
||||
msgstr "Kijelentkezés"
|
||||
|
||||
@@ -461,45 +461,49 @@ msgstr "Automatikusan ki fog jelentkezni %d másodperc múlva."
|
||||
msgid "Logging out of the system."
|
||||
msgstr "Kijelentkezés a rendszerből."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||
msgid "Power Off"
|
||||
msgstr "Kikapcsolás"
|
||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
||||
msgid "Shut Down"
|
||||
msgstr "Leállítás"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75
|
||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
msgstr ""
|
||||
"Nyomja meg a Kijelentkezés gombot az alkalmazások bezárásához és a rendszer "
|
||||
"leállításához."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr "Nyomja meg a Kikapcsolás gombot az alkalmazások bezárásához és a rendszer kikapcsolásához."
|
||||
#, c-format
|
||||
msgid "The system will shut down automatically in %d seconds."
|
||||
msgstr "A rendszer automatikusan leáll %d másodperc múlva."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
#, c-format
|
||||
msgid "The system will power off automatically in %d seconds."
|
||||
msgstr "A rendszer automatikusan kikapcsol %d másodperc múlva."
|
||||
msgid "Shutting down the system."
|
||||
msgstr "A rendszer leállítása"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:78
|
||||
msgid "Powering off the system."
|
||||
msgstr "A rendszer kikapcsolása."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
||||
msgid "Restart"
|
||||
msgstr "Újraindítás"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:89
|
||||
#: ../js/ui/endSessionDialog.js:85
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr ""
|
||||
"Nyomja meg az Újraindítás gombot az alkalmazások bezárásához és a rendszer "
|
||||
"újraindításához."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:90
|
||||
#: ../js/ui/endSessionDialog.js:86
|
||||
#, c-format
|
||||
msgid "The system will restart automatically in %d seconds."
|
||||
msgstr "A rendszer automatikusan újraindul %d másodperc múlva."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:91
|
||||
#: ../js/ui/endSessionDialog.js:87
|
||||
msgid "Restarting the system."
|
||||
msgstr "A rendszer újraindítása."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||
#: ../js/ui/status/bluetooth.js:466
|
||||
#: ../js/ui/endSessionDialog.js:395
|
||||
msgid "Confirm"
|
||||
msgstr "Megerősítés"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
|
||||
msgid "Cancel"
|
||||
msgstr "Mégse"
|
||||
|
||||
@@ -533,48 +537,48 @@ msgstr "Forrás megtekintése"
|
||||
msgid "Web Page"
|
||||
msgstr "Weblap"
|
||||
|
||||
#: ../js/ui/messageTray.js:1000
|
||||
#: ../js/ui/messageTray.js:926
|
||||
msgid "Open"
|
||||
msgstr "Megnyitás"
|
||||
|
||||
#: ../js/ui/messageTray.js:2164
|
||||
#: ../js/ui/messageTray.js:1986
|
||||
msgid "System Information"
|
||||
msgstr "Rendszerinformációk"
|
||||
|
||||
#: ../js/ui/overview.js:91
|
||||
#: ../js/ui/overview.js:88
|
||||
msgid "Undo"
|
||||
msgstr "Visszavonás"
|
||||
|
||||
#: ../js/ui/overview.js:186
|
||||
#: ../js/ui/overview.js:183
|
||||
msgid "Windows"
|
||||
msgstr "Ablakok"
|
||||
|
||||
#: ../js/ui/overview.js:189
|
||||
#: ../js/ui/overview.js:186
|
||||
msgid "Applications"
|
||||
msgstr "Alkalmazások"
|
||||
|
||||
# FIXME - valami jobbat
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:205
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||
#: ../js/ui/panel.js:524
|
||||
#: ../js/ui/panel.js:515
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "%s bezárása"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:902
|
||||
#: ../js/ui/panel.js:874
|
||||
msgid "Activities"
|
||||
msgstr "Tevékenységek"
|
||||
|
||||
#: ../js/ui/panel.js:1003
|
||||
msgid "Top Bar"
|
||||
msgstr "Felső sáv"
|
||||
#: ../js/ui/panel.js:975
|
||||
msgid "Panel"
|
||||
msgstr "Panel"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:122
|
||||
#, c-format
|
||||
@@ -593,85 +597,60 @@ msgstr "Kapcsolódás…"
|
||||
msgid "PLACES & DEVICES"
|
||||
msgstr "HELYEK ÉS ESZKÖZÖK"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||
msgid "Authentication Required"
|
||||
msgstr "Hitelesítés szükséges"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||
msgid "Administrator"
|
||||
msgstr "Rendszergazda"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||
msgid "Authenticate"
|
||||
msgstr "Hitelesítés"
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:264
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "A hitelesítés sikertelen. Próbálja újra."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:276
|
||||
msgid "Password:"
|
||||
msgstr "Jelszó:"
|
||||
|
||||
#. 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:679
|
||||
#: ../js/ui/popupMenu.js:636
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
#: ../js/ui/runDialog.js:205
|
||||
#: ../js/ui/runDialog.js:201
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Adjon meg egy parancsot:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:310
|
||||
#: ../js/ui/searchDisplay.js:283
|
||||
msgid "Searching..."
|
||||
msgstr "Keresés…"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:324
|
||||
#: ../js/ui/searchDisplay.js:297
|
||||
msgid "No matching results."
|
||||
msgstr "Nincs találat."
|
||||
|
||||
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||
#: ../js/ui/statusMenu.js:228
|
||||
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
|
||||
msgid "Power Off..."
|
||||
msgstr "Kikapcsolás…"
|
||||
|
||||
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
|
||||
msgid "Suspend"
|
||||
msgstr "Felfüggesztés"
|
||||
|
||||
#: ../js/ui/statusMenu.js:184
|
||||
#: ../js/ui/statusMenu.js:137
|
||||
msgid "Available"
|
||||
msgstr "Elérhető"
|
||||
|
||||
#: ../js/ui/statusMenu.js:189
|
||||
#: ../js/ui/statusMenu.js:142
|
||||
msgid "Busy"
|
||||
msgstr "Elfoglalt"
|
||||
|
||||
#: ../js/ui/statusMenu.js:197
|
||||
#: ../js/ui/statusMenu.js:150
|
||||
msgid "My Account"
|
||||
msgstr "Saját fiók"
|
||||
|
||||
#: ../js/ui/statusMenu.js:201
|
||||
#: ../js/ui/statusMenu.js:154
|
||||
msgid "System Settings"
|
||||
msgstr "Rendszerbeállítások"
|
||||
|
||||
#: ../js/ui/statusMenu.js:208
|
||||
#: ../js/ui/statusMenu.js:161
|
||||
msgid "Lock Screen"
|
||||
msgstr "Képernyő zárolása"
|
||||
|
||||
#: ../js/ui/statusMenu.js:213
|
||||
#: ../js/ui/statusMenu.js:165
|
||||
msgid "Switch User"
|
||||
msgstr "Felhasználóváltás"
|
||||
|
||||
#: ../js/ui/statusMenu.js:218
|
||||
#: ../js/ui/statusMenu.js:170
|
||||
msgid "Log Out..."
|
||||
msgstr "Kijelentkezés…"
|
||||
|
||||
@@ -838,139 +817,133 @@ msgstr "Billentyűzetkiosztás megjelenítése…"
|
||||
msgid "Localization Settings"
|
||||
msgstr "Lokalizációs beállítások"
|
||||
|
||||
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||
msgid "<unknown>"
|
||||
msgstr "<ismeretlen>"
|
||||
|
||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||
#: ../js/ui/status/network.js:311
|
||||
#: ../js/ui/status/network.js:295
|
||||
msgid "disabled"
|
||||
msgstr "tiltva"
|
||||
|
||||
#: ../js/ui/status/network.js:494
|
||||
#: ../js/ui/status/network.js:476
|
||||
msgid "connecting..."
|
||||
msgstr "kapcsolódás…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:497
|
||||
#: ../js/ui/status/network.js:479
|
||||
msgid "authentication required"
|
||||
msgstr "hitelesítés szükséges"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:507
|
||||
msgid "firmware missing"
|
||||
msgstr "hiányzó firmware"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:514
|
||||
#: ../js/ui/status/network.js:485
|
||||
msgid "cable unplugged"
|
||||
msgstr "vezeték kihúzva"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:519
|
||||
#: ../js/ui/status/network.js:489
|
||||
msgid "unavailable"
|
||||
msgstr "nem érhető el"
|
||||
|
||||
#: ../js/ui/status/network.js:521
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "connection failed"
|
||||
msgstr "a kapcsolódás meghiúsult"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
|
||||
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||
msgid "Connected (private)"
|
||||
msgstr "Kapcsolódva (privát)"
|
||||
|
||||
#: ../js/ui/status/network.js:683
|
||||
#: ../js/ui/status/network.js:636
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "Auto Ethernet"
|
||||
|
||||
#: ../js/ui/status/network.js:758
|
||||
#: ../js/ui/status/network.js:697
|
||||
msgid "Auto broadband"
|
||||
msgstr "Auto széles sáv"
|
||||
|
||||
#: ../js/ui/status/network.js:761
|
||||
#: ../js/ui/status/network.js:700
|
||||
msgid "Auto dial-up"
|
||||
msgstr "Auto betárcsázós"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
|
||||
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Auto %s"
|
||||
|
||||
#: ../js/ui/status/network.js:906
|
||||
#: ../js/ui/status/network.js:845
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "Auto Bluetooth"
|
||||
|
||||
#: ../js/ui/status/network.js:1416
|
||||
#: ../js/ui/status/network.js:1355
|
||||
msgid "Auto wireless"
|
||||
msgstr "Auto vezeték nélküli"
|
||||
|
||||
#: ../js/ui/status/network.js:1474
|
||||
#: ../js/ui/status/network.js:1413
|
||||
msgid "More..."
|
||||
msgstr "Több…"
|
||||
|
||||
#: ../js/ui/status/network.js:1497
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "Enable networking"
|
||||
msgstr "Hálózat engedélyezése"
|
||||
|
||||
#: ../js/ui/status/network.js:1509
|
||||
#: ../js/ui/status/network.js:1448
|
||||
msgid "Wired"
|
||||
msgstr "Vezetékes"
|
||||
|
||||
#: ../js/ui/status/network.js:1520
|
||||
#: ../js/ui/status/network.js:1459
|
||||
msgid "Wireless"
|
||||
msgstr "Vezeték nélküli"
|
||||
|
||||
#: ../js/ui/status/network.js:1530
|
||||
#: ../js/ui/status/network.js:1469
|
||||
msgid "Mobile broadband"
|
||||
msgstr "Mobil széles sáv"
|
||||
|
||||
#: ../js/ui/status/network.js:1540
|
||||
#: ../js/ui/status/network.js:1479
|
||||
msgid "VPN Connections"
|
||||
msgstr "VPN kapcsolatok"
|
||||
|
||||
#: ../js/ui/status/network.js:1549
|
||||
#: ../js/ui/status/network.js:1488
|
||||
msgid "Network Settings"
|
||||
msgstr "Hálózati beállítások"
|
||||
|
||||
#: ../js/ui/status/network.js:1844
|
||||
#: ../js/ui/status/network.js:1783
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "Csatlakozott a(z) „%s” mobil széles sávú kapcsolathoz"
|
||||
|
||||
#: ../js/ui/status/network.js:1848
|
||||
#: ../js/ui/status/network.js:1787
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "Csatlakozott a(z) „%s” vezeték nélküli hálózathoz"
|
||||
|
||||
#: ../js/ui/status/network.js:1852
|
||||
#: ../js/ui/status/network.js:1791
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "Csatlakozott a(z) „%s” vezetékes hálózathoz"
|
||||
|
||||
#: ../js/ui/status/network.js:1856
|
||||
#: ../js/ui/status/network.js:1795
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "Csatlakozott a(z) „%s” VPN hálózathoz"
|
||||
|
||||
#: ../js/ui/status/network.js:1861
|
||||
#: ../js/ui/status/network.js:1800
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "Csatlakozott ehhez: „%s”"
|
||||
|
||||
#: ../js/ui/status/network.js:1869
|
||||
#: ../js/ui/status/network.js:1808
|
||||
msgid "Connection established"
|
||||
msgstr "Kapcsolat létrejött"
|
||||
|
||||
#: ../js/ui/status/network.js:1991
|
||||
#: ../js/ui/status/network.js:1930
|
||||
msgid "Networking is disabled"
|
||||
msgstr "Hálózat letiltva"
|
||||
|
||||
#: ../js/ui/status/network.js:2116
|
||||
#: ../js/ui/status/network.js:2055
|
||||
msgid "Network Manager"
|
||||
msgstr "Hálózatkezelő"
|
||||
|
||||
@@ -1060,7 +1033,7 @@ msgstr "Táblagép"
|
||||
msgid "Computer"
|
||||
msgstr "Számítógép"
|
||||
|
||||
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
|
||||
msgid "Unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
@@ -1072,22 +1045,22 @@ msgstr "Hangerő"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#: ../js/ui/telepathyClient.js:332
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s elérhető."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#: ../js/ui/telepathyClient.js:337
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s kilépett."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s távol van."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s elfoglalt."
|
||||
@@ -1095,7 +1068,7 @@ msgstr "%s elfoglalt."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:482
|
||||
#: ../js/ui/telepathyClient.js:474
|
||||
#, no-c-format
|
||||
msgid "Sent at %X on %A"
|
||||
msgstr "Elküldve: %A, %X"
|
||||
@@ -1104,11 +1077,11 @@ msgstr "Elküldve: %A, %X"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters.
|
||||
#: ../js/ui/viewSelector.js:122
|
||||
#: ../js/ui/viewSelector.js:119
|
||||
msgid "Type to search..."
|
||||
msgstr "Gépeljen a kereséshez…"
|
||||
|
||||
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||
#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
|
||||
msgid "Search"
|
||||
msgstr "Oldalsáv"
|
||||
|
||||
@@ -1144,7 +1117,7 @@ msgstr[1] "%u bemenet"
|
||||
msgid "System Sounds"
|
||||
msgstr "Rendszerhangok"
|
||||
|
||||
#: ../src/main.c:446
|
||||
#: ../src/main.c:397
|
||||
msgid "Print version"
|
||||
msgstr "Verzió kiírása"
|
||||
|
||||
@@ -1153,32 +1126,32 @@ msgstr "Verzió kiírása"
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "„%s” indítása meghiúsult"
|
||||
|
||||
#: ../src/shell-global.c:1395
|
||||
#: ../src/shell-global.c:1340
|
||||
msgid "Less than a minute ago"
|
||||
msgstr "Kevesebb, mint egy perce"
|
||||
|
||||
#: ../src/shell-global.c:1399
|
||||
#: ../src/shell-global.c:1344
|
||||
#, c-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
msgstr[0] "%d perce"
|
||||
msgstr[1] "%d perce"
|
||||
|
||||
#: ../src/shell-global.c:1404
|
||||
#: ../src/shell-global.c:1349
|
||||
#, c-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
msgstr[0] "%d órája"
|
||||
msgstr[1] "%d órája"
|
||||
|
||||
#: ../src/shell-global.c:1409
|
||||
#: ../src/shell-global.c:1354
|
||||
#, c-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
msgstr[0] "%d napja"
|
||||
msgstr[1] "%d napja"
|
||||
|
||||
#: ../src/shell-global.c:1414
|
||||
#: ../src/shell-global.c:1359
|
||||
#, c-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
|
111
po/it.po
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-04-03 10:34+0200\n"
|
||||
"PO-Revision-Date: 2011-04-03 10:35+0200\n"
|
||||
"POT-Creation-Date: 2011-03-24 22:46+0100\n"
|
||||
"PO-Revision-Date: 2011-03-24 22:58+0100\n"
|
||||
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
@@ -345,13 +345,13 @@ msgid "Nothing Scheduled"
|
||||
msgstr "Nessun evento"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
|
||||
#: ../js/ui/calendar.js:723
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
@@ -372,7 +372,7 @@ msgstr "Questa settimana"
|
||||
msgid "Next week"
|
||||
msgstr "Prossima settimana"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||
msgid "Remove"
|
||||
msgstr "Rimuovi"
|
||||
|
||||
@@ -471,8 +471,7 @@ msgstr "Spegni"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr ""
|
||||
"Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema."
|
||||
msgstr "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
#, c-format
|
||||
@@ -540,11 +539,11 @@ msgstr "Visualizza sorgente"
|
||||
msgid "Web Page"
|
||||
msgstr "Pagina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1000
|
||||
#: ../js/ui/messageTray.js:987
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
|
||||
#: ../js/ui/messageTray.js:2164
|
||||
#: ../js/ui/messageTray.js:2145
|
||||
msgid "System Information"
|
||||
msgstr "Informazione di sistema"
|
||||
|
||||
@@ -568,18 +567,18 @@ msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||
#: ../js/ui/panel.js:524
|
||||
#: ../js/ui/panel.js:515
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "Chiudi %s"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:902
|
||||
#: ../js/ui/panel.js:878
|
||||
msgid "Activities"
|
||||
msgstr "Attività"
|
||||
|
||||
#: ../js/ui/panel.js:1003
|
||||
#: ../js/ui/panel.js:979
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superiore"
|
||||
|
||||
@@ -613,15 +612,11 @@ msgstr "Amministratore"
|
||||
msgid "Authenticate"
|
||||
msgstr "Autentica"
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:264
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Errore nell'autenticazione. Provare di nuovo."
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:276
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
@@ -638,11 +633,11 @@ msgstr "toggle-switch-us"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Inserire un comando:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:311
|
||||
#: ../js/ui/searchDisplay.js:310
|
||||
msgid "Searching..."
|
||||
msgstr "Ricerca..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:325
|
||||
#: ../js/ui/searchDisplay.js:324
|
||||
msgid "No matching results."
|
||||
msgstr "Nessun risultato corrispondente."
|
||||
|
||||
@@ -849,139 +844,133 @@ msgstr "Mostra disposizione tastiera..."
|
||||
msgid "Localization Settings"
|
||||
msgstr "Impostazioni localizzazione"
|
||||
|
||||
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1467
|
||||
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||
msgid "<unknown>"
|
||||
msgstr "<sconosciuto>"
|
||||
|
||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||
#: ../js/ui/status/network.js:318
|
||||
#: ../js/ui/status/network.js:295
|
||||
msgid "disabled"
|
||||
msgstr "disabilitata"
|
||||
|
||||
#: ../js/ui/status/network.js:501
|
||||
#: ../js/ui/status/network.js:476
|
||||
msgid "connecting..."
|
||||
msgstr "connessione..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:504
|
||||
#: ../js/ui/status/network.js:479
|
||||
msgid "authentication required"
|
||||
msgstr "richiesta autenticazione"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:514
|
||||
msgid "firmware missing"
|
||||
msgstr "firmware mancante"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:521
|
||||
#: ../js/ui/status/network.js:485
|
||||
msgid "cable unplugged"
|
||||
msgstr "cavo scollegato"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:526
|
||||
#: ../js/ui/status/network.js:489
|
||||
msgid "unavailable"
|
||||
msgstr "non disponibile"
|
||||
|
||||
#: ../js/ui/status/network.js:528
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "connection failed"
|
||||
msgstr "connessione non riuscita"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:609 ../js/ui/status/network.js:1415
|
||||
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||
msgid "Connected (private)"
|
||||
msgstr "Connessa (privata)"
|
||||
|
||||
#: ../js/ui/status/network.js:690
|
||||
#: ../js/ui/status/network.js:636
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "Ethernet automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:765
|
||||
#: ../js/ui/status/network.js:697
|
||||
msgid "Auto broadband"
|
||||
msgstr "Banda larga automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:768
|
||||
#: ../js/ui/status/network.js:700
|
||||
msgid "Auto dial-up"
|
||||
msgstr "Dial-up automatica"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:911 ../js/ui/status/network.js:1427
|
||||
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "%s automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:913
|
||||
#: ../js/ui/status/network.js:845
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "Bluetooth automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:1429
|
||||
#: ../js/ui/status/network.js:1355
|
||||
msgid "Auto wireless"
|
||||
msgstr "Wireless automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:1487
|
||||
#: ../js/ui/status/network.js:1413
|
||||
msgid "More..."
|
||||
msgstr "Altro..."
|
||||
|
||||
#: ../js/ui/status/network.js:1510
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "Enable networking"
|
||||
msgstr "Abilita rete"
|
||||
|
||||
#: ../js/ui/status/network.js:1522
|
||||
#: ../js/ui/status/network.js:1448
|
||||
msgid "Wired"
|
||||
msgstr "Via cavo"
|
||||
|
||||
#: ../js/ui/status/network.js:1533
|
||||
#: ../js/ui/status/network.js:1459
|
||||
msgid "Wireless"
|
||||
msgstr "Wireless"
|
||||
|
||||
#: ../js/ui/status/network.js:1543
|
||||
#: ../js/ui/status/network.js:1469
|
||||
msgid "Mobile broadband"
|
||||
msgstr "Banda larga mobile"
|
||||
|
||||
#: ../js/ui/status/network.js:1553
|
||||
#: ../js/ui/status/network.js:1479
|
||||
msgid "VPN Connections"
|
||||
msgstr "Connessioni VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1565
|
||||
#: ../js/ui/status/network.js:1488
|
||||
msgid "Network Settings"
|
||||
msgstr "Impostazioni rete"
|
||||
|
||||
#: ../js/ui/status/network.js:1860
|
||||
#: ../js/ui/status/network.js:1783
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "Connessi alla rete mobile «%s»"
|
||||
|
||||
#: ../js/ui/status/network.js:1864
|
||||
#: ../js/ui/status/network.js:1787
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "Connessi alla rete wireless «%s»"
|
||||
|
||||
#: ../js/ui/status/network.js:1868
|
||||
#: ../js/ui/status/network.js:1791
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "Connessi alla rete via cavo «%s»"
|
||||
|
||||
#: ../js/ui/status/network.js:1872
|
||||
#: ../js/ui/status/network.js:1795
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "Connessi alla rete VPN «%s»"
|
||||
|
||||
#: ../js/ui/status/network.js:1877
|
||||
#: ../js/ui/status/network.js:1800
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "Connessi a «%s»"
|
||||
|
||||
#: ../js/ui/status/network.js:1885
|
||||
#: ../js/ui/status/network.js:1808
|
||||
msgid "Connection established"
|
||||
msgstr "Connessione stabilita"
|
||||
|
||||
#: ../js/ui/status/network.js:2007
|
||||
#: ../js/ui/status/network.js:1930
|
||||
msgid "Networking is disabled"
|
||||
msgstr "Rete disabilitata"
|
||||
|
||||
#: ../js/ui/status/network.js:2132
|
||||
#: ../js/ui/status/network.js:2055
|
||||
msgid "Network Manager"
|
||||
msgstr "Gestore reti"
|
||||
|
||||
@@ -1084,22 +1073,22 @@ msgstr "Volume"
|
||||
msgid "Microphone"
|
||||
msgstr "Microfono"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#: ../js/ui/telepathyClient.js:332
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s è disponibile."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#: ../js/ui/telepathyClient.js:337
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s è fuori rete."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s è assente."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s non è disponibile."
|
||||
@@ -1107,7 +1096,7 @@ msgstr "%s non è disponibile."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:482
|
||||
#: ../js/ui/telepathyClient.js:474
|
||||
#, no-c-format
|
||||
msgid "Sent at %X on %A"
|
||||
msgstr "Inviato alle %-H.%M di %A"
|
||||
|
69
po/ko.po
@@ -7,8 +7,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2011-03-25 20:20+0000\n"
|
||||
"PO-Revision-Date: 2011-04-02 19:58+0900\n"
|
||||
"POT-Creation-Date: 2011-03-24 08:03+0000\n"
|
||||
"PO-Revision-Date: 2011-03-25 21:56+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -617,8 +617,7 @@ msgstr "검색하는 중..."
|
||||
msgid "No matching results."
|
||||
msgstr "일치하는 결과가 없습니다."
|
||||
|
||||
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||
#: ../js/ui/statusMenu.js:228
|
||||
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||
msgid "Power Off..."
|
||||
msgstr "컴퓨터 끄기..."
|
||||
|
||||
@@ -817,7 +816,7 @@ msgstr "키보드 배치 보기..."
|
||||
msgid "Localization Settings"
|
||||
msgstr "지역화 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1437
|
||||
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||
msgid "<unknown>"
|
||||
msgstr "<알 수 없음>"
|
||||
|
||||
@@ -826,130 +825,124 @@ msgstr "<알 수 없음>"
|
||||
msgid "disabled"
|
||||
msgstr "사용 않음"
|
||||
|
||||
#: ../js/ui/status/network.js:478
|
||||
#: ../js/ui/status/network.js:476
|
||||
msgid "connecting..."
|
||||
msgstr "연결하는 중..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:481
|
||||
#: ../js/ui/status/network.js:479
|
||||
msgid "authentication required"
|
||||
msgstr "인증이 필요합니다"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "firmware missing"
|
||||
msgstr "펌웨어 없음"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:498
|
||||
#: ../js/ui/status/network.js:485
|
||||
msgid "cable unplugged"
|
||||
msgstr "케이블이 분리되었습니다"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:503
|
||||
#: ../js/ui/status/network.js:489
|
||||
msgid "unavailable"
|
||||
msgstr "사용 불가"
|
||||
|
||||
#: ../js/ui/status/network.js:505
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "connection failed"
|
||||
msgstr "연결이 실패했습니다"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1385
|
||||
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||
msgid "Connected (private)"
|
||||
msgstr "연결됨 (개인)"
|
||||
|
||||
#: ../js/ui/status/network.js:666
|
||||
#: ../js/ui/status/network.js:636
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "자동 이더넷"
|
||||
|
||||
#: ../js/ui/status/network.js:741
|
||||
#: ../js/ui/status/network.js:697
|
||||
msgid "Auto broadband"
|
||||
msgstr "자동 고속 통신망"
|
||||
|
||||
#: ../js/ui/status/network.js:744
|
||||
#: ../js/ui/status/network.js:700
|
||||
msgid "Auto dial-up"
|
||||
msgstr "자동 전화접속"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:887 ../js/ui/status/network.js:1397
|
||||
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "자동 %s"
|
||||
|
||||
#: ../js/ui/status/network.js:889
|
||||
#: ../js/ui/status/network.js:845
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "자동 블루투스"
|
||||
|
||||
#: ../js/ui/status/network.js:1399
|
||||
#: ../js/ui/status/network.js:1355
|
||||
msgid "Auto wireless"
|
||||
msgstr "자동 무선"
|
||||
|
||||
#: ../js/ui/status/network.js:1457
|
||||
#: ../js/ui/status/network.js:1413
|
||||
msgid "More..."
|
||||
msgstr "더 보기..."
|
||||
|
||||
#: ../js/ui/status/network.js:1480
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "Enable networking"
|
||||
msgstr "네트워크 사용"
|
||||
|
||||
#: ../js/ui/status/network.js:1492
|
||||
#: ../js/ui/status/network.js:1448
|
||||
msgid "Wired"
|
||||
msgstr "유선"
|
||||
|
||||
#: ../js/ui/status/network.js:1503
|
||||
#: ../js/ui/status/network.js:1459
|
||||
msgid "Wireless"
|
||||
msgstr "무선"
|
||||
|
||||
#: ../js/ui/status/network.js:1513
|
||||
#: ../js/ui/status/network.js:1469
|
||||
msgid "Mobile broadband"
|
||||
msgstr "휴대전화 네트워크"
|
||||
|
||||
#: ../js/ui/status/network.js:1523
|
||||
#: ../js/ui/status/network.js:1479
|
||||
msgid "VPN Connections"
|
||||
msgstr "VPN 연결"
|
||||
|
||||
#: ../js/ui/status/network.js:1532
|
||||
#: ../js/ui/status/network.js:1488
|
||||
msgid "Network Settings"
|
||||
msgstr "네트워크 설정"
|
||||
|
||||
#: ../js/ui/status/network.js:1827
|
||||
#: ../js/ui/status/network.js:1783
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "'%s' 휴대전화 네트워크에 연결되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1831
|
||||
#: ../js/ui/status/network.js:1787
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "'%s' 무선 네트워크에 연결되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1835
|
||||
#: ../js/ui/status/network.js:1791
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "'%s' 유선 네트워크에 연결되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1839
|
||||
#: ../js/ui/status/network.js:1795
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "'%s' VPN 네트워크에 연결되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1844
|
||||
#: ../js/ui/status/network.js:1800
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "이제 '%s'에 연결되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1852
|
||||
#: ../js/ui/status/network.js:1808
|
||||
msgid "Connection established"
|
||||
msgstr "연결이 되었습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:1974
|
||||
#: ../js/ui/status/network.js:1930
|
||||
msgid "Networking is disabled"
|
||||
msgstr "네트워크를 사용하지 않습니다"
|
||||
|
||||
#: ../js/ui/status/network.js:2099
|
||||
#: ../js/ui/status/network.js:2055
|
||||
msgid "Network Manager"
|
||||
msgstr "네트워크 관리"
|
||||
|
||||
|
243
po/lt.po
@@ -6,9 +6,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-04-01 22:30+0200\n"
|
||||
"PO-Revision-Date: 2011-04-01 22:27+0100\n"
|
||||
"Last-Translator: Gintautas Miliauskas <gintautas@miliauskas.lt>\n"
|
||||
"POT-Creation-Date: 2011-03-21 14:25+0100\n"
|
||||
"PO-Revision-Date: 2011-03-19 14:56+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lithuanian <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -188,27 +188,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "Nepavyko paleisti „%s“:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:230
|
||||
#: ../js/ui/appDisplay.js:226
|
||||
msgid "All"
|
||||
msgstr "Visi"
|
||||
|
||||
#: ../js/ui/appDisplay.js:328
|
||||
#: ../js/ui/appDisplay.js:324
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "PROGRAMOS"
|
||||
|
||||
#: ../js/ui/appDisplay.js:354
|
||||
#: ../js/ui/appDisplay.js:350
|
||||
msgid "SETTINGS"
|
||||
msgstr "NUSTATYMAI"
|
||||
|
||||
#: ../js/ui/appDisplay.js:625
|
||||
#: ../js/ui/appDisplay.js:616
|
||||
msgid "New Window"
|
||||
msgstr "Naujas langas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:628
|
||||
#: ../js/ui/appDisplay.js:619
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Pašalinti iš mėgstamų"
|
||||
|
||||
#: ../js/ui/appDisplay.js:629
|
||||
#: ../js/ui/appDisplay.js:620
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Pridėti prie mėgstamų"
|
||||
|
||||
@@ -341,13 +341,13 @@ msgid "Nothing Scheduled"
|
||||
msgstr "Niekas nesuplanuota"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:720 ../js/ui/telepathyClient.js:490
|
||||
#: ../js/ui/calendar.js:720
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:723 ../js/ui/telepathyClient.js:493
|
||||
#: ../js/ui/calendar.js:723
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %Y %B %d"
|
||||
@@ -368,7 +368,7 @@ msgstr "Šią savaitę"
|
||||
msgid "Next week"
|
||||
msgstr "Kitą savaitę"
|
||||
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1007
|
||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||
msgid "Remove"
|
||||
msgstr "Pašalinti"
|
||||
|
||||
@@ -436,7 +436,7 @@ msgstr "PASKUTINIEJI ELEMENTAI"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Atjungti %s"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
||||
msgid "Log Out"
|
||||
msgstr "Atsijungti"
|
||||
|
||||
@@ -460,46 +460,48 @@ msgstr "Jūs būsite automatiškai atjungtas po %d sekundžių."
|
||||
msgid "Logging out of the system."
|
||||
msgstr "Atsijungiama nuo sistemos."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||
msgid "Power Off"
|
||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
||||
msgid "Shut Down"
|
||||
msgstr "Išjungti"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
#: ../js/ui/endSessionDialog.js:75
|
||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
msgstr ""
|
||||
"Spauskite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
||||
"Spauskite „išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
#: ../js/ui/endSessionDialog.js:76
|
||||
#, c-format
|
||||
msgid "The system will power off automatically in %d seconds."
|
||||
msgid "The system will shut down automatically in %d seconds."
|
||||
msgstr "Sistema automatiškai išsijungs po %d sekundžių."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:78
|
||||
msgid "Powering off the system."
|
||||
msgstr "Sistema išjungiama."
|
||||
#: ../js/ui/endSessionDialog.js:77
|
||||
msgid "Shutting down the system."
|
||||
msgstr "Sistemos išjungimas."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||
#: ../js/ui/endSessionDialog.js:93
|
||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
||||
msgid "Restart"
|
||||
msgstr "Įkelti iš naujo"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:89
|
||||
#: ../js/ui/endSessionDialog.js:85
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr ""
|
||||
"Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti "
|
||||
"sistemą iš naujo."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:90
|
||||
#: ../js/ui/endSessionDialog.js:86
|
||||
#, c-format
|
||||
msgid "The system will restart automatically in %d seconds."
|
||||
msgstr "Sistema bus įkelta iš naujo po %d sekundžių."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:91
|
||||
#: ../js/ui/endSessionDialog.js:87
|
||||
msgid "Restarting the system."
|
||||
msgstr "Sistemos įkėlimas iš naujo"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||
#: ../js/ui/status/bluetooth.js:466
|
||||
#: ../js/ui/endSessionDialog.js:395
|
||||
msgid "Confirm"
|
||||
msgstr "Patvirtinti"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
|
||||
msgid "Cancel"
|
||||
msgstr "Atšaukti"
|
||||
|
||||
@@ -533,47 +535,47 @@ msgstr "Žiūrėti šaltinį"
|
||||
msgid "Web Page"
|
||||
msgstr "Tinklalapis"
|
||||
|
||||
#: ../js/ui/messageTray.js:1000
|
||||
#: ../js/ui/messageTray.js:926
|
||||
msgid "Open"
|
||||
msgstr "Atverti"
|
||||
|
||||
#: ../js/ui/messageTray.js:2164
|
||||
#: ../js/ui/messageTray.js:1986
|
||||
msgid "System Information"
|
||||
msgstr "Sistemos informacija"
|
||||
|
||||
#: ../js/ui/overview.js:91
|
||||
#: ../js/ui/overview.js:88
|
||||
msgid "Undo"
|
||||
msgstr "Atšaukti"
|
||||
|
||||
#: ../js/ui/overview.js:186
|
||||
#: ../js/ui/overview.js:183
|
||||
msgid "Windows"
|
||||
msgstr "Langai"
|
||||
|
||||
#: ../js/ui/overview.js:189
|
||||
#: ../js/ui/overview.js:186
|
||||
msgid "Applications"
|
||||
msgstr "Programos"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:205
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Dash"
|
||||
msgstr "Paleidimo sritis"
|
||||
msgstr ""
|
||||
|
||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||
#: ../js/ui/panel.js:524
|
||||
#: ../js/ui/panel.js:515
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "Užverti %s"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:902
|
||||
#: ../js/ui/panel.js:874
|
||||
msgid "Activities"
|
||||
msgstr "Apžvalga"
|
||||
|
||||
#: ../js/ui/panel.js:1003
|
||||
msgid "Top Bar"
|
||||
msgstr "Viršutinė juosta"
|
||||
#: ../js/ui/panel.js:975
|
||||
msgid "Panel"
|
||||
msgstr "Skydelis"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:122
|
||||
#, c-format
|
||||
@@ -592,85 +594,60 @@ msgstr "Prisijungti prie..."
|
||||
msgid "PLACES & DEVICES"
|
||||
msgstr "VIETOS ir ĮRENGINIAI"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||
msgid "Authentication Required"
|
||||
msgstr "Reikia patvirtinti tapatybę"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||
msgid "Administrator"
|
||||
msgstr "Administratorius"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||
msgid "Authenticate"
|
||||
msgstr "Patvirtinti tapatybę"
|
||||
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:264
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Atsiprašome, tai nesuveikė. Pabandykite dar kartą."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:276
|
||||
msgid "Password:"
|
||||
msgstr "Slaptažodis:"
|
||||
|
||||
#. 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:679
|
||||
#: ../js/ui/popupMenu.js:636
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
#: ../js/ui/runDialog.js:205
|
||||
#: ../js/ui/runDialog.js:201
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Įveskite komandą:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:310
|
||||
#: ../js/ui/searchDisplay.js:287
|
||||
msgid "Searching..."
|
||||
msgstr "Ieškoma..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:324
|
||||
#: ../js/ui/searchDisplay.js:301
|
||||
msgid "No matching results."
|
||||
msgstr "Nerasta atitikmenų."
|
||||
|
||||
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||
#: ../js/ui/statusMenu.js:228
|
||||
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
|
||||
msgid "Power Off..."
|
||||
msgstr "Išjungti..."
|
||||
|
||||
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
|
||||
msgid "Suspend"
|
||||
msgstr "Užmigdyti"
|
||||
|
||||
#: ../js/ui/statusMenu.js:184
|
||||
#: ../js/ui/statusMenu.js:137
|
||||
msgid "Available"
|
||||
msgstr "Esu"
|
||||
|
||||
#: ../js/ui/statusMenu.js:189
|
||||
#: ../js/ui/statusMenu.js:142
|
||||
msgid "Busy"
|
||||
msgstr "Užsiėmęs (-usi)"
|
||||
|
||||
#: ../js/ui/statusMenu.js:197
|
||||
#: ../js/ui/statusMenu.js:150
|
||||
msgid "My Account"
|
||||
msgstr "Mano paskyra"
|
||||
|
||||
#: ../js/ui/statusMenu.js:201
|
||||
#: ../js/ui/statusMenu.js:154
|
||||
msgid "System Settings"
|
||||
msgstr "Sistemos nustatymai"
|
||||
|
||||
#: ../js/ui/statusMenu.js:208
|
||||
#: ../js/ui/statusMenu.js:161
|
||||
msgid "Lock Screen"
|
||||
msgstr "Užrakinti ekraną"
|
||||
|
||||
#: ../js/ui/statusMenu.js:213
|
||||
#: ../js/ui/statusMenu.js:165
|
||||
msgid "Switch User"
|
||||
msgstr "Keisti naudotoją"
|
||||
|
||||
#: ../js/ui/statusMenu.js:218
|
||||
#: ../js/ui/statusMenu.js:170
|
||||
msgid "Log Out..."
|
||||
msgstr "Atsijungti ..."
|
||||
|
||||
@@ -837,139 +814,133 @@ msgstr "Rodyti klaviatūros išdėstymą..."
|
||||
msgid "Localization Settings"
|
||||
msgstr "Lokalizacijos nustatymai"
|
||||
|
||||
#: ../js/ui/status/network.js:104 ../js/ui/status/network.js:1454
|
||||
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||
msgid "<unknown>"
|
||||
msgstr "<nežinoma>"
|
||||
|
||||
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||
#: ../js/ui/status/network.js:311
|
||||
#: ../js/ui/status/network.js:295
|
||||
msgid "disabled"
|
||||
msgstr "išjungta"
|
||||
|
||||
#: ../js/ui/status/network.js:494
|
||||
#: ../js/ui/status/network.js:476
|
||||
msgid "connecting..."
|
||||
msgstr "jungiamasi..."
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:497
|
||||
#: ../js/ui/status/network.js:479
|
||||
msgid "authentication required"
|
||||
msgstr "reikia patvirtinti tapatybę"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:507
|
||||
msgid "firmware missing"
|
||||
msgstr "Trūksta integruotos programinės įrangos (firmware)"
|
||||
|
||||
#. Translators: this is for wired network devices that are physically disconnected
|
||||
#: ../js/ui/status/network.js:514
|
||||
#: ../js/ui/status/network.js:485
|
||||
msgid "cable unplugged"
|
||||
msgstr "kabelis neįjungtas"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:519
|
||||
#: ../js/ui/status/network.js:489
|
||||
msgid "unavailable"
|
||||
msgstr "nepasiekiamas"
|
||||
|
||||
#: ../js/ui/status/network.js:521
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "connection failed"
|
||||
msgstr "nepavyko prisijungti"
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1402
|
||||
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||
msgid "Connected (private)"
|
||||
msgstr "Prisijungta (privatus)"
|
||||
|
||||
#: ../js/ui/status/network.js:683
|
||||
#: ../js/ui/status/network.js:636
|
||||
msgid "Auto Ethernet"
|
||||
msgstr "Automatinis vietinis"
|
||||
|
||||
#: ../js/ui/status/network.js:758
|
||||
#: ../js/ui/status/network.js:697
|
||||
msgid "Auto broadband"
|
||||
msgstr "Automatinis plačiajuostis"
|
||||
|
||||
#: ../js/ui/status/network.js:761
|
||||
#: ../js/ui/status/network.js:700
|
||||
msgid "Auto dial-up"
|
||||
msgstr "Automatinis telefoninis"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:904 ../js/ui/status/network.js:1414
|
||||
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Automatinis %s"
|
||||
|
||||
#: ../js/ui/status/network.js:906
|
||||
#: ../js/ui/status/network.js:845
|
||||
msgid "Auto bluetooth"
|
||||
msgstr "Automatinis bluetooth"
|
||||
|
||||
#: ../js/ui/status/network.js:1416
|
||||
#: ../js/ui/status/network.js:1355
|
||||
msgid "Auto wireless"
|
||||
msgstr "Automatinis belaidis"
|
||||
|
||||
#: ../js/ui/status/network.js:1474
|
||||
#: ../js/ui/status/network.js:1413
|
||||
msgid "More..."
|
||||
msgstr "Daugiau..."
|
||||
|
||||
#: ../js/ui/status/network.js:1497
|
||||
#: ../js/ui/status/network.js:1436
|
||||
msgid "Enable networking"
|
||||
msgstr "Įjungti tinklą"
|
||||
|
||||
#: ../js/ui/status/network.js:1509
|
||||
#: ../js/ui/status/network.js:1448
|
||||
msgid "Wired"
|
||||
msgstr "Laidinis"
|
||||
|
||||
#: ../js/ui/status/network.js:1520
|
||||
#: ../js/ui/status/network.js:1459
|
||||
msgid "Wireless"
|
||||
msgstr "Belaidis"
|
||||
|
||||
#: ../js/ui/status/network.js:1530
|
||||
#: ../js/ui/status/network.js:1469
|
||||
msgid "Mobile broadband"
|
||||
msgstr "Mobilus plačiajuostis"
|
||||
|
||||
#: ../js/ui/status/network.js:1540
|
||||
#: ../js/ui/status/network.js:1479
|
||||
msgid "VPN Connections"
|
||||
msgstr "VPN ryšiai"
|
||||
|
||||
#: ../js/ui/status/network.js:1549
|
||||
#: ../js/ui/status/network.js:1488
|
||||
msgid "Network Settings"
|
||||
msgstr "Tinklo nustatymai"
|
||||
|
||||
#: ../js/ui/status/network.js:1844
|
||||
#: ../js/ui/status/network.js:1783
|
||||
#, c-format
|
||||
msgid "You're now connected to mobile broadband connection '%s'"
|
||||
msgstr "Dabar esate prisijungęs prie mobilaus plačiajuosčio ryšio „%s“"
|
||||
|
||||
#: ../js/ui/status/network.js:1848
|
||||
#: ../js/ui/status/network.js:1787
|
||||
#, c-format
|
||||
msgid "You're now connected to wireless network '%s'"
|
||||
msgstr "Dabar esate prisijungęs prie belaidžio tinklo „%s“"
|
||||
|
||||
#: ../js/ui/status/network.js:1852
|
||||
#: ../js/ui/status/network.js:1791
|
||||
#, c-format
|
||||
msgid "You're now connected to wired network '%s'"
|
||||
msgstr "Dabar esate prisijungęs prie laidinio tinklo „%s“"
|
||||
|
||||
#: ../js/ui/status/network.js:1856
|
||||
#: ../js/ui/status/network.js:1795
|
||||
#, c-format
|
||||
msgid "You're now connected to VPN network '%s'"
|
||||
msgstr "Dabar esate prisijungęs prie VPN tinklo „%s“"
|
||||
|
||||
#: ../js/ui/status/network.js:1861
|
||||
#: ../js/ui/status/network.js:1800
|
||||
#, c-format
|
||||
msgid "You're now connected to '%s'"
|
||||
msgstr "Dabar esate prisijungęs prie „%s“"
|
||||
|
||||
#: ../js/ui/status/network.js:1869
|
||||
#: ../js/ui/status/network.js:1808
|
||||
msgid "Connection established"
|
||||
msgstr "Ryšys užmegstas"
|
||||
|
||||
#: ../js/ui/status/network.js:1991
|
||||
#: ../js/ui/status/network.js:1930
|
||||
msgid "Networking is disabled"
|
||||
msgstr "Tinklas išjungtas"
|
||||
|
||||
#: ../js/ui/status/network.js:2116
|
||||
#: ../js/ui/status/network.js:2055
|
||||
msgid "Network Manager"
|
||||
msgstr "Tinklo valdymas"
|
||||
|
||||
@@ -1075,22 +1046,22 @@ msgstr "Garsumas"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofonas"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#: ../js/ui/telepathyClient.js:332
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s yra prisijungęs"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#: ../js/ui/telepathyClient.js:337
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s yra atsijungęs"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s yra nepasiekiamas"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s yra užsiėmęs."
|
||||
@@ -1098,7 +1069,7 @@ msgstr "%s yra užsiėmęs."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:482
|
||||
#: ../js/ui/telepathyClient.js:474
|
||||
#, no-c-format
|
||||
msgid "Sent at %X on %A"
|
||||
msgstr "Išsiųsta %A %H:%M:%S"
|
||||
@@ -1149,7 +1120,7 @@ msgstr[2] "%u įvestys"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemos garsai"
|
||||
|
||||
#: ../src/main.c:446
|
||||
#: ../src/main.c:397
|
||||
msgid "Print version"
|
||||
msgstr "Atspausdinti versiją"
|
||||
|
||||
@@ -1158,11 +1129,11 @@ msgstr "Atspausdinti versiją"
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Nepavyko paleisti „%s“"
|
||||
|
||||
#: ../src/shell-global.c:1395
|
||||
#: ../src/shell-global.c:1340
|
||||
msgid "Less than a minute ago"
|
||||
msgstr "Mažiau nei prieš minutę"
|
||||
|
||||
#: ../src/shell-global.c:1399
|
||||
#: ../src/shell-global.c:1344
|
||||
#, c-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
@@ -1170,7 +1141,7 @@ msgstr[0] "prieš %d minutę"
|
||||
msgstr[1] "prieš %d minutes"
|
||||
msgstr[2] "prieš %d minučių"
|
||||
|
||||
#: ../src/shell-global.c:1404
|
||||
#: ../src/shell-global.c:1349
|
||||
#, c-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
@@ -1178,7 +1149,7 @@ msgstr[0] "prieš %d valandą"
|
||||
msgstr[1] "prieš %d valandas"
|
||||
msgstr[2] "prieš %d valandų"
|
||||
|
||||
#: ../src/shell-global.c:1409
|
||||
#: ../src/shell-global.c:1354
|
||||
#, c-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
@@ -1186,7 +1157,7 @@ msgstr[0] "prieš %d dieną"
|
||||
msgstr[1] "prieš %d dienas"
|
||||
msgstr[2] "prieš %d dienų"
|
||||
|
||||
#: ../src/shell-global.c:1414
|
||||
#: ../src/shell-global.c:1359
|
||||
#, c-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
@@ -1226,26 +1197,6 @@ msgstr "Failų sistema"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "Shut Down"
|
||||
#~ msgstr "Išjungti"
|
||||
|
||||
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||
#~ msgstr ""
|
||||
#~ "Spauskite „išjungti“, jei norite užverti šias programas ir išjungti "
|
||||
#~ "sistemą."
|
||||
|
||||
#~ msgid "The system will shut down automatically in %d seconds."
|
||||
#~ msgstr "Sistema automatiškai išsijungs po %d sekundžių."
|
||||
|
||||
#~ msgid "Shutting down the system."
|
||||
#~ msgstr "Sistemos išjungimas."
|
||||
|
||||
#~ msgid "Confirm"
|
||||
#~ msgstr "Patvirtinti"
|
||||
|
||||
#~ msgid "Panel"
|
||||
#~ msgstr "Skydelis"
|
||||
|
||||
#~ msgid "Clock"
|
||||
#~ msgstr "Laikrodis"
|
||||
|
||||
|