Compare commits
	
		
			132 Commits
		
	
	
		
			wip/quadbu
			...
			wip/notif-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 672a4a56bd | ||
|   | 50421ede37 | ||
|   | 826a7fa02a | ||
|   | d7844bc7f4 | ||
|   | 485444a451 | ||
|   | e5318d5235 | ||
|   | e6e15489aa | ||
|   | 0951d36e8f | ||
|   | c38939902f | ||
|   | 97974a3f2a | ||
|   | 8b6cab741d | ||
|   | 2aad0eac31 | ||
|   | 829e7623df | ||
|   | 89675c9061 | ||
|   | f9df83802d | ||
|   | e51eb723fc | ||
|   | 5b61f2d642 | ||
|   | 094669baee | ||
|   | f6b5385495 | ||
|   | 524e2df708 | ||
|   | 9f887d9a28 | ||
|   | 214a41793f | ||
|   | 2e40ffc558 | ||
|   | 3584887938 | ||
|   | 0d6c002b8e | ||
|   | ec714864f2 | ||
|   | 1b77149ec9 | ||
|   | 93c9e031e3 | ||
|   | 3ff4277f86 | ||
|   | 2a63267be0 | ||
|   | 2b365627ed | ||
|   | b8f0d0f0dc | ||
|   | df1bed941d | ||
|   | 604085fdb9 | ||
|   | 2d3c81390b | ||
|   | 516b8f6bf8 | ||
|   | 75fdca0b47 | ||
|   | 9f366118f0 | ||
|   | c228a9a89a | ||
|   | e747fcb16f | ||
|   | a72a24ebff | ||
|   | 8811ba2ec0 | ||
|   | 38d8e465b3 | ||
|   | 5b3fb024be | ||
|   | 521f5f2b6b | ||
|   | e1b30b2924 | ||
|   | dd85670f8b | ||
|   | 625f3a5113 | ||
|   | 58c4a6c847 | ||
|   | 752aca811c | ||
|   | a4cf0501ee | ||
|   | 4c7b992c36 | ||
|   | 264a51de3f | ||
|   | 625280bcd6 | ||
|   | 4f8265f82e | ||
|   | ff07d3a46a | ||
|   | 5d11941638 | ||
|   | f1f659571b | ||
|   | c60d13b33e | ||
|   | 33060d382b | ||
|   | 4b1e412ac3 | ||
|   | 659730ab09 | ||
|   | 7c3a99b7ed | ||
|   | e7af257814 | ||
|   | c9190294bc | ||
|   | e070e3c44a | ||
|   | fe87de7cec | ||
|   | 2519e4f08d | ||
|   | fe304d3c94 | ||
|   | 1f4e6872ab | ||
|   | 5ade2e7418 | ||
|   | 3e7d325e77 | ||
|   | ef04a9d1ed | ||
|   | 011fef4b2b | ||
|   | caf6389f79 | ||
|   | c7306449ae | ||
|   | 8c45e6fa43 | ||
|   | 9504d21297 | ||
|   | 0832ca544a | ||
|   | a000a1f76e | ||
|   | ea8b02ff7f | ||
|   | 3cc7112283 | ||
|   | 50f0fc4e23 | ||
|   | 0a4ad01d8a | ||
|   | 19afabe2a1 | ||
|   | 103027a446 | ||
|   | 28c1f81f4a | ||
|   | 82ec6c08b8 | ||
|   | 551e57406d | ||
|   | 1c8036b863 | ||
|   | f8bac5c197 | ||
|   | 6ece67b654 | ||
|   | 96411dfed5 | ||
|   | 24897169a9 | ||
|   | 05ddece9a0 | ||
|   | df08ae7996 | ||
|   | a244c1e987 | ||
|   | bc182f78b1 | ||
|   | 2d18b06b3f | ||
|   | 61852df9a1 | ||
|   | 3969be38bd | ||
|   | 92f9aff784 | ||
|   | 815cfe6c20 | ||
|   | 052b5176d2 | ||
|   | bccbcd8e4a | ||
|   | 90589fabee | ||
|   | 5947111f14 | ||
|   | c8c56a5443 | ||
|   | a83b9ed6d7 | ||
|   | f9c83bccb6 | ||
|   | 2f720e22fc | ||
|   | 329028d3b9 | ||
|   | 5c3f9f6999 | ||
|   | 4a6b89d44c | ||
|   | 7fa1834ab6 | ||
|   | c7bc9f8925 | ||
|   | 70d75ca311 | ||
|   | 9830b3b8f7 | ||
|   | 525c8780fd | ||
|   | 76c4ec8ee4 | ||
|   | b4a48a7644 | ||
|   | 5087f0930c | ||
|   | 398cc5af85 | ||
|   | f073945d31 | ||
|   | c36abcb905 | ||
|   | e2ccbe5528 | ||
|   | 68b2d5fcf0 | ||
|   | cd2bd7685a | ||
|   | 85f811f147 | ||
|   | e8fd8b58d0 | ||
|   | 2aa12e8f4b | ||
|   | ee0c76c2b9 | 
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -78,11 +78,8 @@ src/gnome-shell-calendar-server | ||||
| src/gnome-shell-extension-prefs | ||||
| src/gnome-shell-extension-tool | ||||
| src/gnome-shell-hotplug-sniffer | ||||
| src/gnome-shell-jhbuild | ||||
| src/gnome-shell-perf-helper | ||||
| src/gnome-shell-perf-tool | ||||
| src/gnome-shell-real | ||||
| src/gnome-shell-wayland | ||||
| src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service | ||||
| src/run-js-test | ||||
| src/test-recorder | ||||
|   | ||||
							
								
								
									
										50
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,4 +1,28 @@ | ||||
| 3.12.1 | ||||
| 3.13.2 | ||||
| ====== | ||||
| * Make airplane mode menu insensitive in lock screen [Giovanni; #729224] | ||||
| * Don't always extend struts to the screen edge [Florian; #683819] | ||||
| * Fix keynav for alternatives in AltSwitcher [Florian; #727259] | ||||
| * Implement window menus in the shell [Jasper; #726352] | ||||
| * Support resource:/// URLs in GNOME_SHELL_JS envvar [Owen; #730409] | ||||
| * Fix switcher popups with keybindings containing Escape [Rui; #730739] | ||||
| * Update extension-prefs UI to follow GNOME 3 patterns [Florian; #730829] | ||||
| * Add support for fallback app menu in window decorations [Florian; #730752] | ||||
| * Fix keynav escaping open app folders [Florian; #726760] | ||||
| * Misc. bug fixes [Kalev, Florian, Owen; #729429, #728449, #730408, #730753, | ||||
|   #730653] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Piotr Drąg, Kalev Lember, Rui Matos, Florian Müllner, | ||||
|   Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor | ||||
|  | ||||
| Translations: | ||||
|   Ihar Hrachyshka [be], Giovanni Campagna [it], Carles Ferrando [ca@valencia], | ||||
|   Daniel Mustieles [es], Aurimas Černius [lt], Enrico Nicoletto [pt_BR], | ||||
|   Yosef Or Boczko [he], Marek Černocký [cs], Muhammet Kara [tr], | ||||
|   Georges Neto [pt_BR], Andika Triwidada [id] | ||||
|  | ||||
| 3.13.1 | ||||
| ====== | ||||
| * Ensure the currently focused app icon is viewable [Rui; #726759] | ||||
| * Improve language in location menu [Zeeshan; #726498] | ||||
| @@ -7,12 +31,27 @@ | ||||
| * Fix bad antialiasing on panel menu buttons [Carlos; #727336] | ||||
| * Don't hide location menu [Zeeshan; #727398] | ||||
| * Fix IM candidate window obscuring current text [Rui; #727579] | ||||
| * Fix extension-prefs tool when linked with --as-needed [Florian; #727948] | ||||
| * Don't always extend struts to the screen edge [Florian; #663690] | ||||
| * Add shortcuts for switching to the last workspace [Elad; #659288] | ||||
| * Show OSD window on all monitors [Adel; #722684] | ||||
| * Improve consistency of labels in network menu [Paul; #727163] | ||||
| * Fix zombie search providers showing up [Jasper; #728597] | ||||
| * Remove ConsoleKit support [Florian; #686626] | ||||
| * Fix region screenshots with open shell menus [Florian; #709126] | ||||
| * Support <shift>insert in text entries [Florian; #648318] | ||||
| * Improve app picker scrolling on touch [Jasper; #729064] | ||||
| * Don't make date button clickable when on current date [Carlos; #726724] | ||||
| * Tweak heuristic for hiding workspace switcher [Florian; #662457] | ||||
| * Add option to show in Software to app context menu [Matthias; #643043] | ||||
| * Misc. bug fixes and cleanups [Bastien, Florian, Giovanni, Adel, Vadim, | ||||
|   Carlos; #727983, #727948, #728512, #728681, #728897, #727384, #728820, | ||||
|   #715042, #728449, #728343] | ||||
|  | ||||
| Contributors: | ||||
|   Zeeshan Ali (Khattak), Cosimo Cecchi, Piotr Drąg, Rui Matos, Simon McVittie, | ||||
|   Florian Müllner, Alejandro Piñeiro, Carlos Soriano | ||||
|   Elad Alfassa, Zeeshan Ali (Khattak), Giovanni Campagna, Cosimo Cecchi, | ||||
|   Matthias Clasen, Piotr Drąg, Adel Gadllah, Paul Lange, Rui Matos, | ||||
|   Simon McVittie, Florian Müllner, Bastien Nocera, Alejandro Piñeiro, | ||||
|   Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre | ||||
|  | ||||
| Translations: | ||||
|   Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he], | ||||
| @@ -24,7 +63,8 @@ Translations: | ||||
|   Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it], | ||||
|   Tiago S [pt], Victor Ibragimov [tg], Dirgita [id], Khoem Sokhem [km], | ||||
|   Rūdolfs Mazurs [lv], Balázs Úr [hu], Ask H. Larsen [da], Ikuya Awashiro [ja], | ||||
|   Мирослав Николић [sr, sr@latin] | ||||
|   Wouter Bolsterlee [nl], Daniel Korostil [uk], Daniel Șerbănescu [ro], | ||||
|   Enrico Nicoletto [pt_BR] | ||||
|  | ||||
| 3.12.0 | ||||
| ====== | ||||
|   | ||||
							
								
								
									
										19
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| AC_PREREQ(2.63) | ||||
| AC_INIT([gnome-shell],[3.12.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||
| AC_INIT([gnome-shell],[3.13.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||
|  | ||||
| AC_CONFIG_HEADERS([config.h]) | ||||
| AC_CONFIG_SRCDIR([src/shell-global.c]) | ||||
| @@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd) | ||||
| CLUTTER_MIN_VERSION=1.15.90 | ||||
| GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | ||||
| GJS_MIN_VERSION=1.39.0 | ||||
| MUTTER_MIN_VERSION=3.12.1 | ||||
| MUTTER_MIN_VERSION=3.13.2 | ||||
| GTK_MIN_VERSION=3.7.9 | ||||
| GIO_MIN_VERSION=2.37.0 | ||||
| LIBECAL_MIN_VERSION=3.5.3 | ||||
| @@ -112,13 +112,6 @@ fi | ||||
|  | ||||
| PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) | ||||
| PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION) | ||||
| PKG_CHECK_MODULES(MUTTER_WAYLAND, [libmutter-wayland >= $MUTTER_MIN_VERSION], | ||||
|                  [MUTTER_WAYLAND_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wayland` | ||||
|                   AC_SUBST(MUTTER_WAYLAND_TYPELIB_DIR) | ||||
|                   have_mutter_wayland=yes], | ||||
|                  [have_mutter_wayland=no]) | ||||
|  | ||||
| AM_CONDITIONAL(HAVE_MUTTER_WAYLAND, test $have_mutter_wayland != no) | ||||
|  | ||||
| PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION) | ||||
| PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) | ||||
| @@ -230,6 +223,14 @@ fi | ||||
| AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) | ||||
|  | ||||
| GNOME_COMPILE_WARNINGS([error]) | ||||
| case "$WARN_CFLAGS" in | ||||
|     *-Werror*) | ||||
|         WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations" | ||||
|         ;; | ||||
| esac | ||||
|  | ||||
| AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS" | ||||
| AC_SUBST(AM_CFLAGS) | ||||
|  | ||||
| BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}" | ||||
| AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to]) | ||||
|   | ||||
| @@ -1,9 +1,5 @@ | ||||
| desktopdir=$(datadir)/applications | ||||
| desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop | ||||
| if HAVE_MUTTER_WAYLAND | ||||
| desktop_DATA += gnome-shell-wayland.desktop | ||||
| endif HAVE_MUTTER_WAYLAND | ||||
|  | ||||
| desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop  gnome-shell-extension-prefs.desktop | ||||
|  | ||||
| # We substitute in bindir so it works as an autostart | ||||
| # file when built in a non-system prefix | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| Type=Application | ||||
| _Name=GNOME Shell (wayland compositor) | ||||
| _Comment=Window management and application launching | ||||
| Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland --display-server | ||||
| Exec=@bindir@/gnome-shell --wayland --display-server | ||||
| X-GNOME-Bugzilla-Bugzilla=GNOME | ||||
| X-GNOME-Bugzilla-Product=gnome-shell | ||||
| X-GNOME-Bugzilla-Component=general | ||||
|   | ||||
| @@ -31,7 +31,7 @@ | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="favorite-apps" type="as"> | ||||
|       <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> | ||||
|       <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Documents.desktop' ]</default> | ||||
|       <_summary>List of desktop file IDs for favorite applications</_summary> | ||||
|       <_description> | ||||
|         The applications corresponding to these identifiers | ||||
| @@ -221,15 +221,6 @@ | ||||
|       </_description> | ||||
|     </key> | ||||
|  | ||||
|     <key name="button-layout" type="s"> | ||||
|       <default>":close"</default> | ||||
|       <_summary>Arrangement of buttons on the titlebar</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.desktop.wm.preferences when | ||||
|         running GNOME Shell. | ||||
|       </_description> | ||||
|     </key> | ||||
|  | ||||
|     <key name="edge-tiling" type="b"> | ||||
|       <default>true</default> | ||||
|       <_summary>Enable edge tiling when dropping windows on screen edges</_summary> | ||||
|   | ||||
| @@ -153,6 +153,21 @@ StScrollBar StButton#vhandle:active { | ||||
|     -arrow-rise: 11px; | ||||
| } | ||||
|  | ||||
| .popup-menu-boxpointer.fallback-app-menu { | ||||
|     -arrow-border-radius: 4px; | ||||
|     -arrow-background-color: #ededed; | ||||
|     -arrow-border-width: 1px; | ||||
|     -arrow-border-color: #a6a6a6; | ||||
|     -arrow-base: 24px; | ||||
|     -arrow-rise: 11px; | ||||
| } | ||||
|  | ||||
| .popup-menu-boxpointer.fallback-app-menu.dark { | ||||
|     -arrow-background-color: #3f4747; | ||||
|     -arrow-border-color: #282b2b; | ||||
| } | ||||
|  | ||||
|  | ||||
| .popup-menu { | ||||
|     min-width: 200px; | ||||
| } | ||||
| @@ -166,6 +181,15 @@ StScrollBar StButton#vhandle:active { | ||||
|     background-color: #333333; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu .popup-submenu-menu-item:open { | ||||
|     background-color: #888888; | ||||
|     color: white; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-submenu-menu-item:open { | ||||
|     background-color: #333333; | ||||
| } | ||||
|  | ||||
| .popup-sub-menu { | ||||
|     background-gradient-start: rgba(80,80,80,0.3); | ||||
|     background-gradient-end: rgba(80,80,80,0.4); | ||||
| @@ -173,6 +197,20 @@ StScrollBar StButton#vhandle:active { | ||||
|     box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9); | ||||
| } | ||||
|  | ||||
| .fallback-app-menu .popup-sub-menu { | ||||
|     background-gradient-start: #dddddd; | ||||
|     background-gradient-end: #dfdfdf; | ||||
|     background-gradient-direction: vertical; | ||||
|     box-shadow: inset 0px 2px 4px rgba(0,0,0,0.4); | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-sub-menu { | ||||
|     background-gradient-start: #474747; | ||||
|     background-gradient-end: #4b4b4b; | ||||
|     background-gradient-direction: vertical; | ||||
|     box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9); | ||||
| } | ||||
|  | ||||
| .popup-sub-menu:scrolled .popup-menu-item:ltr { | ||||
|     padding-right: 0em; | ||||
| } | ||||
| @@ -221,7 +259,29 @@ StScrollBar StButton#vhandle:active { | ||||
|     color: #9f9f9f; | ||||
| } | ||||
|  | ||||
| .popup-image-menu-item { | ||||
| .fallback-app-menu .popup-menu-item { | ||||
|     color: #43484a; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu .popup-menu-item:active { | ||||
|     color: white; | ||||
|     background-color: #4689cd; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu .popup-menu-item:insensitive { | ||||
|     color: gray; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-menu-item { | ||||
|     color: white; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-menu-item:active { | ||||
|     background-color: #445f7d; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-menu-item:insensitive { | ||||
|     color: #9f9f9f; | ||||
| } | ||||
|  | ||||
| .popup-separator-menu-item { | ||||
| @@ -233,8 +293,15 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding: 8px 0px; | ||||
| } | ||||
|  | ||||
| .popup-alternating-menu-item:alternate { | ||||
|     font-weight: bold; | ||||
| .fallback-app-menu .popup-separator-menu-item { | ||||
|     -gradient-start: #a0a2a3; | ||||
|     -gradient-end: #a0a2a3; | ||||
|     -margin-horizontal: 0; | ||||
| } | ||||
|  | ||||
| .fallback-app-menu.dark .popup-separator-menu-item { | ||||
|     -gradient-start: #818584; | ||||
|     -gradient-end: #818584; | ||||
| } | ||||
|  | ||||
| .popup-status-menu-item { | ||||
| @@ -336,13 +403,18 @@ StScrollBar StButton#vhandle:active { | ||||
|     icon-size: 16px; | ||||
| } | ||||
|  | ||||
| .no-networks-label { | ||||
|     color: #999999; | ||||
| } | ||||
|  | ||||
| .no-networks-box { | ||||
|     spacing: 12px; | ||||
| } | ||||
|  | ||||
| /* Buttons */ | ||||
|  | ||||
| .candidate-page-button, | ||||
| .notification-button, | ||||
| .notification-icon-button, | ||||
| .hotplug-notification-item, | ||||
| .hotplug-resident-eject-button, | ||||
| .modal-dialog-button, | ||||
| .app-view-control { | ||||
|     border: 1px solid #8b8b8b; | ||||
| @@ -356,17 +428,12 @@ StScrollBar StButton#vhandle:active { | ||||
| } | ||||
|  | ||||
| .candidate-page-button:hover, | ||||
| .notification-button:hover, | ||||
| .notification-icon-button:hover, | ||||
| .hotplug-notification-item:hover, | ||||
| .hotplug-resident-eject-button:hover, | ||||
| .modal-dialog-button:hover { | ||||
|     background-gradient-start: rgba(255, 255, 255, 0.3); | ||||
|     background-gradient-end: rgba(255, 255, 255, 0.1); | ||||
| } | ||||
|  | ||||
| .notification-button:focus, | ||||
| .notification-icon-button:focus, | ||||
| .hotplug-notification-item:focus, | ||||
| .modal-dialog-button:focus, | ||||
| .app-view-control:focus { | ||||
| @@ -380,10 +447,7 @@ StScrollBar StButton#vhandle:active { | ||||
|  | ||||
| .candidate-page-button:active, | ||||
| .candidate-page-button:pressed, | ||||
| .notification-button:active, | ||||
| .notification-icon-button:active, | ||||
| .hotplug-notification-item:active, | ||||
| .hotplug-resident-eject-button:active, | ||||
| .modal-dialog-button:active, | ||||
| .modal-dialog-button:pressed, | ||||
| .app-view-control:checked { | ||||
| @@ -392,8 +456,6 @@ StScrollBar StButton#vhandle:active { | ||||
| } | ||||
|  | ||||
| .candidate-page-button:insensitive, | ||||
| .notification-button:insensitive, | ||||
| .notification-icon-button:insensitive, | ||||
| .modal-dialog-button:insensitive { | ||||
|     border-color: #666666; | ||||
|     color: #9f9f9f; | ||||
| @@ -405,7 +467,6 @@ StScrollBar StButton#vhandle:active { | ||||
|  | ||||
| #searchEntry, | ||||
| .modal-dialog-button, | ||||
| .notification-button, | ||||
| .hotplug-notification-item, | ||||
| .app-view-controls, | ||||
| #screenShieldNotifications { | ||||
| @@ -582,11 +643,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     app-icon-bottom-clip: 2px; | ||||
| } | ||||
|  | ||||
| .app-menu-icon { | ||||
|     width: 24px; | ||||
|     height: 24px; | ||||
| } | ||||
|  | ||||
| .panel-button { | ||||
|     -natural-hpadding: 12px; | ||||
|     -minimum-hpadding: 6px; | ||||
| @@ -1157,11 +1213,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     text-shadow: black 0px 2px 2px; | ||||
| } | ||||
|  | ||||
| #LookingGlassDialog .lg-inspector-title { | ||||
|     font-weight: bold; | ||||
|     padding-bottom: 8px; | ||||
| } | ||||
|  | ||||
| .lg-dialog StEntry { | ||||
|     selection-background-color: #bbbbbb; | ||||
|     selected-color: #333333; | ||||
| @@ -1241,14 +1292,8 @@ StScrollBar StButton#vhandle:active { | ||||
|     width: 0.3em; | ||||
| } | ||||
|  | ||||
| #calendarPopup .calendar { | ||||
|     padding: 10px; | ||||
| } | ||||
|  | ||||
| .calendar { | ||||
|     padding: .4em 1.75em .8em 1.75em; | ||||
|     spacing-rows: 0px; | ||||
|     spacing-columns: 0px; | ||||
| } | ||||
|  | ||||
| .calendar-month-label { | ||||
| @@ -1444,11 +1489,8 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding-right: 8pt; | ||||
| } | ||||
|  | ||||
| .url-highlighter { | ||||
|     link-color: #ccccff; | ||||
| } | ||||
|  | ||||
| /* Message Tray */ | ||||
|  | ||||
| #message-tray { | ||||
|     background: #2e3436 url(message-tray-background.png); | ||||
|     background-repeat: repeat; | ||||
| @@ -1471,45 +1513,77 @@ StScrollBar StButton#vhandle:active { | ||||
|     color: #eeeeee; | ||||
| } | ||||
|  | ||||
| .no-messages-label, | ||||
| .no-networks-label { | ||||
| .url-highlighter { | ||||
|     link-color: #ccccff; | ||||
| } | ||||
|  | ||||
| .no-messages-label { | ||||
|     color: #999999; | ||||
| } | ||||
|  | ||||
| .no-networks-box { | ||||
|     spacing: 12px; | ||||
| } | ||||
|  | ||||
| .notification { | ||||
|     border-radius: 10px 10px 0px 0px; | ||||
|     background: rgba(0,0,0,0.9); | ||||
|     padding: 8px 8px 4px 8px; | ||||
|     spacing-rows: 4px; | ||||
|     spacing-columns: 10px; | ||||
| } | ||||
|  | ||||
| .notification, #notification-container { | ||||
|     font-size: 11pt; | ||||
|     width: 34em; | ||||
| } | ||||
|  | ||||
| .notification.multi-line-notification { | ||||
|     padding-bottom: 8px; | ||||
| .notification-main-button, | ||||
| .notification-button { | ||||
|     background: rgba(0,0,0,0.9); | ||||
| } | ||||
|  | ||||
| .notification-unexpanded { | ||||
|     /* We want to force the actor at a specific size, irrespective | ||||
|        of its minimum and preferred size, so we override both */ | ||||
|     min-height: 36px; | ||||
|     height: 36px; | ||||
| .notification-main-button { | ||||
|     border-radius: 10px 10px 0px 0px; | ||||
| } | ||||
|  | ||||
| /* We use row-span = 2 for the image cell, which prevents its height preferences to be | ||||
|    taken into account during allocation, so its height ends up being limited by the height | ||||
|    of the content in the other rows. To avoid showing a stretched image, we set the minimum | ||||
|    height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */ | ||||
| .notification-with-image { | ||||
|     min-height: 159px; | ||||
| .notification-main-content { | ||||
|     padding: 8px; | ||||
|     spacing: 8px; | ||||
| } | ||||
|  | ||||
| .notification-close-button { | ||||
|     padding: 8px; | ||||
|     border-radius: 4px; | ||||
| } | ||||
|  | ||||
| .notification-action-area { | ||||
|     padding: 8px; | ||||
| } | ||||
|  | ||||
| .notification-action-area, | ||||
| .notification-button { | ||||
|     border-top: 1px solid #666; | ||||
| } | ||||
|  | ||||
| .notification-button { | ||||
|     padding: 8px 0px; | ||||
|     border-right: 1px solid #666; | ||||
| } | ||||
|  | ||||
| .notification-main-button:hover, | ||||
| .notification-button:hover, | ||||
| .notification-close-button:hover { | ||||
|     background: rgba(100,100,100,0.9); | ||||
| } | ||||
|  | ||||
| .notification-main-button:active, | ||||
| .notification-button:active { | ||||
|     background: rgba(255,255,255,0.1); | ||||
| } | ||||
|  | ||||
| .notification-button:last-child { | ||||
|     border-right-width: 0px; | ||||
| } | ||||
|  | ||||
| .notification-title-box { | ||||
|     spacing: 8px; | ||||
| } | ||||
|  | ||||
| .notification-scrollview:ltr > StScrollBar { | ||||
|     padding-left: 6px; | ||||
| } | ||||
|  | ||||
| .notification-scrollview:rtl > StScrollBar { | ||||
|     padding-right: 6px; | ||||
| } | ||||
|  | ||||
| .summary-boxpointer { | ||||
| @@ -1551,47 +1625,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     -st-vfade-offset: 24px; | ||||
| } | ||||
|  | ||||
| .notification-scrollview:ltr > StScrollBar { | ||||
|     padding-left: 6px; | ||||
| } | ||||
|  | ||||
| .notification-scrollview:rtl > StScrollBar { | ||||
|     padding-right: 6px; | ||||
| } | ||||
|  | ||||
| .notification-body { | ||||
|     spacing: 5px; | ||||
| } | ||||
|  | ||||
| .notification-actions { | ||||
|     padding-top: 18px; | ||||
|     spacing: 10px; | ||||
| } | ||||
|  | ||||
| .notification-button { | ||||
|     -st-natural-width: 140px; | ||||
|     padding: 4px 4px 5px; | ||||
| } | ||||
|  | ||||
| .notification-button:focus { | ||||
|     -st-natural-width: 138px; | ||||
|     padding: 3px 4px 4px; | ||||
| } | ||||
|  | ||||
| .notification-icon-button { | ||||
|     border-radius: 5px; | ||||
|     padding: 5px; | ||||
| } | ||||
|  | ||||
| .notification-icon-button:focus { | ||||
|     padding: 4px; | ||||
| } | ||||
|  | ||||
| .notification-icon-button > StIcon { | ||||
|     icon-size: 16px; | ||||
|     padding: 8px; | ||||
| } | ||||
|  | ||||
| .secondary-icon { | ||||
|     icon-size: 1.09em; | ||||
| } | ||||
| @@ -1614,45 +1647,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding: 2px 5px; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-box { | ||||
|     spacing: 8px; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-mount { | ||||
|     spacing: 8px; | ||||
|     border-radius: 4px; | ||||
|  | ||||
|     color: #ccc; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-mount:hover { | ||||
|     background-gradient-direction: horizontal; | ||||
|     background-gradient-start: rgba(255, 255, 255, 0.1); | ||||
|     background-gradient-end: rgba(255, 255, 255, 0); | ||||
|  | ||||
|     color: #fff; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-mount-label { | ||||
|     color: inherit; | ||||
|     padding-left: 6px; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-mount-icon { | ||||
|     icon-size: 24px; | ||||
|     padding-left: 6px; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-eject-icon { | ||||
|     icon-size: 16px; | ||||
| } | ||||
|  | ||||
| .hotplug-resident-eject-button { | ||||
|     padding: 7px; | ||||
|     border-radius: 5px; | ||||
|     color: #ccc; | ||||
| } | ||||
|  | ||||
| .chat-log-message { | ||||
|     color: #888888; | ||||
| } | ||||
| @@ -1692,7 +1686,11 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding-right: 4px; | ||||
| } | ||||
|  | ||||
| .chat-notification-scrollview{ | ||||
| .chat-notification-body-box { | ||||
|     spacing: 5px; | ||||
| } | ||||
|  | ||||
| .chat-notification-scrollview { | ||||
|     max-height: 22em; | ||||
| } | ||||
|  | ||||
| @@ -1773,26 +1771,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     spacing: 8px; | ||||
| } | ||||
|  | ||||
| .thumbnail-scroll-gradient-left { | ||||
|     background-gradient-direction: horizontal; | ||||
|     background-gradient-start: rgba(51, 51, 51, 1.0); | ||||
|     background-gradient-end: rgba(51, 51, 51, 0); | ||||
|     border-radius: 24px; | ||||
|     border-radius-topright: 0px; | ||||
|     border-radius-bottomright: 0px; | ||||
|     width: 60px; | ||||
| } | ||||
|  | ||||
| .thumbnail-scroll-gradient-right { | ||||
|     background-gradient-direction: horizontal; | ||||
|     background-gradient-start: rgba(51, 51, 51, 0); | ||||
|     background-gradient-end: rgba(51, 51, 51, 1.0); | ||||
|     border-radius: 24px; | ||||
|     border-radius-topleft: 0px; | ||||
|     border-radius-bottomleft: 0px; | ||||
|     width: 60px; | ||||
| } | ||||
|  | ||||
| .switcher-list .item-box { | ||||
|     padding: 8px; | ||||
|     border-radius: 8px; | ||||
| @@ -2057,20 +2035,11 @@ StScrollBar StButton#vhandle:active { | ||||
|     font-size: 10pt; | ||||
| } | ||||
|  | ||||
| /* Restart message */ | ||||
| .restart-message { | ||||
|     font-size: 14pt; | ||||
| } | ||||
|  | ||||
| /* ShellMountOperation Dialogs */ | ||||
| .shell-mount-operation-icon { | ||||
|     icon-size: 48px; | ||||
| } | ||||
|  | ||||
| .mount-password-reask { | ||||
|     color: red; | ||||
| } | ||||
|  | ||||
| .show-processes-dialog, | ||||
| .mount-question-dialog { | ||||
|     spacing: 24px; | ||||
| @@ -2366,13 +2335,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding-bottom: 1em; | ||||
| } | ||||
|  | ||||
| .login-dialog-title { | ||||
|     font-size: 14pt; | ||||
|     font-weight: bold; | ||||
|     color: #666666; | ||||
|     padding-bottom: 2em; | ||||
| } | ||||
|  | ||||
| .login-dialog { | ||||
|     /* Reset border and background */ | ||||
|     border: none; | ||||
| @@ -2421,10 +2383,6 @@ StScrollBar StButton#vhandle:active { | ||||
|     background-size: contain; | ||||
| } | ||||
|  | ||||
| .login-dialog-user-list-item-text-box { | ||||
|     padding: 0 0.5em; | ||||
| } | ||||
|  | ||||
| .login-dialog-user-list-item .login-dialog-timed-login-indicator { | ||||
|     background-color: rgba(0,0,0,0.0); | ||||
|     height: 2px; | ||||
| @@ -2651,8 +2609,7 @@ StScrollBar StButton#vhandle:active { | ||||
|     padding-bottom: 0px; | ||||
| } | ||||
|  | ||||
| #screenShieldNotifications .notification-button, | ||||
| #screenShieldNotifications .notification-icon-button { | ||||
| #screenShieldNotifications .notification-button { | ||||
|     border: 1px rgba(255,255,255,0.5); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -66,6 +66,7 @@ IGNORE_HFILES=					\ | ||||
| 	gactionmuxer.h				\ | ||||
| 	gactionobservable.h			\ | ||||
| 	gactionobserver.h			\ | ||||
| 	shell-network-agent.h			\ | ||||
| 	shell-recorder-src.h | ||||
|  | ||||
| if !BUILD_RECORDER | ||||
|   | ||||
| @@ -50,7 +50,6 @@ | ||||
|     <xi:include href="xml/shell-wm.xml"/> | ||||
|     <xi:include href="xml/shell-util.xml"/> | ||||
|     <xi:include href="xml/shell-mount-operation.xml"/> | ||||
|     <xi:include href="xml/shell-network-agent.xml"/> | ||||
|     <xi:include href="xml/shell-polkit-authentication-agent.xml"/> | ||||
|     <xi:include href="xml/shell-tp-client.xml"/> | ||||
|   </chapter> | ||||
|   | ||||
| @@ -23,6 +23,11 @@ const GnomeShellIface = '<node> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const customCss = '.prefs-button { \ | ||||
|                        padding: 8px; \ | ||||
|                        border-radius: 20px; \ | ||||
|                    }'; | ||||
|  | ||||
| const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); | ||||
|  | ||||
| function stripPrefix(string, prefix) { | ||||
| @@ -46,13 +51,9 @@ const Application = new Lang.Class({ | ||||
|  | ||||
|         this._extensionPrefsModules = {}; | ||||
|  | ||||
|         this._extensionIters = {}; | ||||
|         this._startupUuid = null; | ||||
|     }, | ||||
|  | ||||
|     _buildModel: function() { | ||||
|         this._model = new Gtk.ListStore(); | ||||
|         this._model.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]); | ||||
|         this._loaded = false; | ||||
|         this._skipMainWindow = false; | ||||
|     }, | ||||
|  | ||||
|     _extensionAvailable: function(uuid) { | ||||
| @@ -70,11 +71,6 @@ const Application = new Lang.Class({ | ||||
|         return true; | ||||
|     }, | ||||
|  | ||||
|     _setExtensionInsensitive: function(layout, cell, model, iter, data) { | ||||
|         let uuid = model.get_value(iter, 0); | ||||
|         cell.set_sensitive(this._extensionAvailable(uuid)); | ||||
|     }, | ||||
|  | ||||
|     _getExtensionPrefsModule: function(extension) { | ||||
|         let uuid = extension.metadata.uuid; | ||||
|  | ||||
| @@ -104,21 +100,23 @@ const Application = new Lang.Class({ | ||||
|             widget = this._buildErrorUI(extension, e); | ||||
|         } | ||||
|  | ||||
|         // Destroy the current prefs widget, if it exists | ||||
|         if (this._extensionPrefsBin.get_child()) | ||||
|             this._extensionPrefsBin.get_child().destroy(); | ||||
|         let dialog = new Gtk.Dialog({ use_header_bar: true, | ||||
|                                       modal: true, | ||||
|                                       title: extension.metadata.name }); | ||||
|  | ||||
|         this._extensionPrefsBin.add(widget); | ||||
|         this._extensionSelector.set_active_iter(this._extensionIters[uuid]); | ||||
|     }, | ||||
|         if (this._skipMainWindow) { | ||||
|             this.application.add_window(dialog); | ||||
|             if (this._window) | ||||
|                 this._window.destroy(); | ||||
|             this._window = dialog; | ||||
|             this._window.window_position = Gtk.WindowPosition.CENTER; | ||||
|         } else { | ||||
|             dialog.transient_for = this._window; | ||||
|         } | ||||
|  | ||||
|     _extensionSelected: function() { | ||||
|         let [success, iter] = this._extensionSelector.get_active_iter(); | ||||
|         if (!success) | ||||
|             return; | ||||
|  | ||||
|         let uuid = this._model.get_value(iter, 0); | ||||
|         this._selectExtension(uuid); | ||||
|         dialog.set_default_size(600, 400); | ||||
|         dialog.get_content_area().add(widget); | ||||
|         dialog.show(); | ||||
|     }, | ||||
|  | ||||
|     _buildErrorUI: function(extension, exc) { | ||||
| @@ -151,48 +149,26 @@ const Application = new Lang.Class({ | ||||
|  | ||||
|     _buildUI: function(app) { | ||||
|         this._window = new Gtk.ApplicationWindow({ application: app, | ||||
|                                                    window_position: Gtk.WindowPosition.CENTER, | ||||
|                                                    title: _("GNOME Shell Extension Preferences") }); | ||||
|                                                    window_position: Gtk.WindowPosition.CENTER }); | ||||
|  | ||||
|         this._window.set_size_request(600, 400); | ||||
|         this._window.set_size_request(800, 500); | ||||
|  | ||||
|         let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL }); | ||||
|         this._window.add(vbox); | ||||
|         this._titlebar = new Gtk.HeaderBar({ show_close_button: true, | ||||
|                                              title: _("GNOME Shell Extensions") }); | ||||
|         this._window.set_titlebar(this._titlebar); | ||||
|  | ||||
|         let toolbar = new Gtk.Toolbar(); | ||||
|         toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR); | ||||
|         vbox.add(toolbar); | ||||
|         let toolitem; | ||||
|         let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER, | ||||
|                                               shadow_type: Gtk.ShadowType.IN, | ||||
|                                               halign: Gtk.Align.CENTER, | ||||
|                                               margin: 18 }); | ||||
|         this._window.add(scroll); | ||||
|  | ||||
|         let label = new Gtk.Label({ label: '<b>' + _("Extension") + '</b>', | ||||
|                                     use_markup: true }); | ||||
|         toolitem = new Gtk.ToolItem({ child: label }); | ||||
|         toolbar.add(toolitem); | ||||
|         this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE }); | ||||
|         this._extensionSelector.set_sort_func(Lang.bind(this, this._sortList)); | ||||
|         this._extensionSelector.set_header_func(Lang.bind(this, this._updateHeader)); | ||||
|  | ||||
|         this._extensionSelector = new Gtk.ComboBox({ model: this._model, | ||||
|                                                      margin_left: 8, | ||||
|                                                      hexpand: true }); | ||||
|         this._extensionSelector.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED); | ||||
|         scroll.add(this._extensionSelector); | ||||
|  | ||||
|         let renderer = new Gtk.CellRendererText(); | ||||
|         this._extensionSelector.pack_start(renderer, true); | ||||
|         this._extensionSelector.add_attribute(renderer, 'text', 1); | ||||
|         this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive)); | ||||
|         this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected)); | ||||
|  | ||||
|         toolitem = new Gtk.ToolItem({ child: this._extensionSelector }); | ||||
|         toolitem.set_expand(true); | ||||
|         toolbar.add(toolitem); | ||||
|  | ||||
|         this._extensionPrefsBin = new Gtk.Frame(); | ||||
|         vbox.add(this._extensionPrefsBin); | ||||
|  | ||||
|         let label = new Gtk.Label({ | ||||
|             label: _("Select an extension to configure using the combobox above."), | ||||
|             vexpand: true | ||||
|         }); | ||||
|  | ||||
|         this._extensionPrefsBin.add(label); | ||||
|  | ||||
|         this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell'); | ||||
|         this._shellProxy.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) { | ||||
| @@ -203,6 +179,35 @@ const Application = new Lang.Class({ | ||||
|         this._window.show_all(); | ||||
|     }, | ||||
|  | ||||
|     _addCustomStyle: function() { | ||||
|         let provider = new Gtk.CssProvider(); | ||||
|  | ||||
|         try { | ||||
|             provider.load_from_data(customCss, -1); | ||||
|         } catch(e) { | ||||
|             log('Failed to add application style'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let screen = this._window.window.get_screen(); | ||||
|         let priority = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION; | ||||
|         Gtk.StyleContext.add_provider_for_screen(screen, provider, priority); | ||||
|     }, | ||||
|  | ||||
|     _sortList: function(row1, row2) { | ||||
|         let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name; | ||||
|         let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name; | ||||
|         return name1.localeCompare(name2); | ||||
|     }, | ||||
|  | ||||
|     _updateHeader: function(row, before) { | ||||
|         if (!before || row.get_header()) | ||||
|             return; | ||||
|  | ||||
|         let sep = new Gtk.Separator({ orientation: Gtk.Orientation.HORIZONTAL }); | ||||
|         row.set_header(sep); | ||||
|     }, | ||||
|  | ||||
|     _scanExtensions: function() { | ||||
|         let finder = new ExtensionUtils.ExtensionFinder(); | ||||
|         finder.connect('extension-found', Lang.bind(this, this._extensionFound)); | ||||
| @@ -211,15 +216,24 @@ const Application = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _extensionFound: function(finder, extension) { | ||||
|         let iter = this._model.append(); | ||||
|         this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]); | ||||
|         this._extensionIters[extension.uuid] = iter; | ||||
|         let row = new ExtensionRow(extension.uuid); | ||||
|  | ||||
|         row.prefsButton.visible = this._extensionAvailable(row.uuid); | ||||
|         row.prefsButton.connect('clicked', Lang.bind(this, | ||||
|             function() { | ||||
|                 this._selectExtension(row.uuid); | ||||
|             })); | ||||
|  | ||||
|         row.show_all(); | ||||
|         this._extensionSelector.add(row); | ||||
|     }, | ||||
|  | ||||
|     _extensionsLoaded: function() { | ||||
|         if (this._startupUuid && this._extensionAvailable(this._startupUuid)) | ||||
|             this._selectExtension(this._startupUuid); | ||||
|         this._startupUuid = null; | ||||
|         this._skipMainWindow = false; | ||||
|         this._loaded = true; | ||||
|     }, | ||||
|  | ||||
|     _onActivate: function() { | ||||
| @@ -227,29 +241,125 @@ const Application = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onStartup: function(app) { | ||||
|         this._buildModel(); | ||||
|         this._buildUI(app); | ||||
|         this._addCustomStyle(); | ||||
|         this._scanExtensions(); | ||||
|     }, | ||||
|  | ||||
|     _onCommandLine: function(app, commandLine) { | ||||
|         app.activate(); | ||||
|         let args = commandLine.get_arguments(); | ||||
|  | ||||
|         if (args.length) { | ||||
|             let uuid = args[0]; | ||||
|  | ||||
|             this._skipMainWindow = true; | ||||
|  | ||||
|             // Strip off "extension:///" prefix which fakes a URI, if it exists | ||||
|             uuid = stripPrefix(uuid, "extension:///"); | ||||
|  | ||||
|             if (this._extensionAvailable(uuid)) | ||||
|                 this._selectExtension(uuid); | ||||
|             else | ||||
|             else if (!this._loaded) | ||||
|                 this._startupUuid = uuid; | ||||
|             else | ||||
|                 this._skipMainWindow = false; | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const ExtensionRow = new Lang.Class({ | ||||
|     Name: 'ExtensionRow', | ||||
|     Extends: Gtk.ListBoxRow, | ||||
|  | ||||
|     _init: function(uuid) { | ||||
|         this.parent(); | ||||
|  | ||||
|         this.uuid = uuid; | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema: 'org.gnome.shell' }); | ||||
|         this._settings.connect('changed::enabled-extensions', Lang.bind(this, | ||||
|             function() { | ||||
|                 this._switch.state = this._isEnabled(); | ||||
|             })); | ||||
|  | ||||
|         this._buildUI(); | ||||
|     }, | ||||
|  | ||||
|     _buildUI: function() { | ||||
|         let extension = ExtensionUtils.extensions[this.uuid]; | ||||
|  | ||||
|         let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, | ||||
|                                  hexpand: true, margin: 12, spacing: 6 }); | ||||
|         this.add(hbox); | ||||
|  | ||||
|         let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, | ||||
|                                  spacing: 6, hexpand: true }); | ||||
|         hbox.add(vbox); | ||||
|  | ||||
|         let name = GLib.markup_escape_text(extension.metadata.name, -1); | ||||
|         let label = new Gtk.Label({ label: '<b>' + name + '</b>', | ||||
|                                     use_markup: true, | ||||
|                                     halign: Gtk.Align.START }); | ||||
|         vbox.add(label); | ||||
|  | ||||
|         let desc = extension.metadata.description.split('\n')[0]; | ||||
|         label = new Gtk.Label({ label: desc, | ||||
|                                 ellipsize: Pango.EllipsizeMode.END, | ||||
|                                 halign: Gtk.Align.START }); | ||||
|         vbox.add(label); | ||||
|  | ||||
|         let button = new Gtk.Button({ valign: Gtk.Align.CENTER, | ||||
|                                       no_show_all: true }); | ||||
|         button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic', | ||||
|                                    icon_size: Gtk.IconSize.BUTTON, | ||||
|                                    visible: true })); | ||||
|         button.get_style_context().add_class('prefs-button'); | ||||
|         hbox.add(button); | ||||
|  | ||||
|         this.prefsButton = button; | ||||
|  | ||||
|         this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER, | ||||
|                                         state: this._isEnabled() }); | ||||
|         this._switch.connect('notify::active', Lang.bind(this, | ||||
|             function() { | ||||
|                 if (this._switch.active) | ||||
|                     this._enable(); | ||||
|                 else | ||||
|                     this._disable(); | ||||
|             })); | ||||
|         this._switch.connect('state-set', function() { return true; }); | ||||
|         hbox.add(this._switch); | ||||
|     }, | ||||
|  | ||||
|     _isEnabled: function() { | ||||
|         let extensions = this._settings.get_strv('enabled-extensions'); | ||||
|         return extensions.indexOf(this.uuid) != -1; | ||||
|     }, | ||||
|  | ||||
|     _enable: function() { | ||||
|         let extensions = this._settings.get_strv('enabled-extensions'); | ||||
|         if (extensions.indexOf(this.uuid) != -1) | ||||
|             return; | ||||
|  | ||||
|         extensions.push(this.uuid); | ||||
|         this._settings.set_strv('enabled-extensions', extensions); | ||||
|     }, | ||||
|  | ||||
|     _disable: function() { | ||||
|         let extensions = this._settings.get_strv('enabled-extensions'); | ||||
|         let pos = extensions.indexOf(this.uuid); | ||||
|         if (pos == -1) | ||||
|             return; | ||||
|         do { | ||||
|             extensions.splice(pos, 1); | ||||
|             pos = extensions.indexOf(this.uuid); | ||||
|         } while (pos != -1); | ||||
|         this._settings.set_strv('enabled-extensions', extensions); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| function initEnvironment() { | ||||
|     // Monkey-patch in a "global" object that fakes some Shell utilities | ||||
|     // that ExtensionUtils depends on. | ||||
|   | ||||
| @@ -48,8 +48,6 @@ const _SCROLL_ANIMATION_TIME = 0.5; | ||||
| const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; | ||||
| const _LOGO_ICON_HEIGHT = 48; | ||||
|  | ||||
| let _loginDialog = null; | ||||
|  | ||||
| const UserListItem = new Lang.Class({ | ||||
|     Name: 'UserListItem', | ||||
|  | ||||
| @@ -483,7 +481,7 @@ const LoginDialog = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _ensureUserListLoaded: function() { | ||||
|         if (!this._userManager.is_loaded) | ||||
|         if (!this._userManager.is_loaded) { | ||||
|             this._userManagerLoadedId = this._userManager.connect('notify::is-loaded', | ||||
|                                                                   Lang.bind(this, function() { | ||||
|                                                                       if (this._userManager.is_loaded) { | ||||
| @@ -492,8 +490,10 @@ const LoginDialog = new Lang.Class({ | ||||
|                                                                           this._userManagerLoadedId = 0; | ||||
|                                                                       } | ||||
|                                                                   })); | ||||
|         else | ||||
|             GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList)); | ||||
|         } else { | ||||
|             let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList)); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _updateDisableUserList: function() { | ||||
| @@ -686,10 +686,11 @@ const LoginDialog = new Lang.Class({ | ||||
|                            }, | ||||
|                            onUpdateScope: this, | ||||
|                            onComplete: function() { | ||||
|                                Mainloop.idle_add(Lang.bind(this, function() { | ||||
|                                let id = Mainloop.idle_add(Lang.bind(this, function() { | ||||
|                                    this._greeter.call_start_session_when_ready_sync(serviceName, true, null); | ||||
|                                    return GLib.SOURCE_REMOVE; | ||||
|                                })); | ||||
|                                GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync'); | ||||
|                            }, | ||||
|                            onCompleteScope: this }); | ||||
|     }, | ||||
| @@ -745,6 +746,7 @@ const LoginDialog = new Lang.Class({ | ||||
|                                                                          hold.release(); | ||||
|                                                                          return GLib.SOURCE_REMOVE; | ||||
|                                                                      }); | ||||
|         GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginAnimationTime'); | ||||
|         return hold; | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -252,6 +252,7 @@ const ShellUserVerifier = new Lang.Class({ | ||||
|                                                            this._queueMessageTimeout(); | ||||
|                                                            return GLib.SOURCE_REMOVE; | ||||
|                                                        })); | ||||
|         GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout'); | ||||
|     }, | ||||
|  | ||||
|     _queueMessage: function(message, messageType) { | ||||
|   | ||||
| @@ -84,6 +84,7 @@ | ||||
|     <file>ui/userWidget.js</file> | ||||
|     <file>ui/viewSelector.js</file> | ||||
|     <file>ui/windowAttentionHandler.js</file> | ||||
|     <file>ui/windowMenu.js</file> | ||||
|     <file>ui/windowManager.js</file> | ||||
|     <file>ui/workspace.js</file> | ||||
|     <file>ui/workspaceSwitcherPopup.js</file> | ||||
|   | ||||
| @@ -46,32 +46,6 @@ const SystemdLoginSessionIface = '<node> \ | ||||
| const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); | ||||
| const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); | ||||
|  | ||||
| const ConsoleKitManagerIface = '<node> \ | ||||
| <interface name="org.freedesktop.ConsoleKit.Manager"> \ | ||||
| <method name="CanRestart"> \ | ||||
|     <arg type="b" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="CanStop"> \ | ||||
|     <arg type="b" direction="out"/> \ | ||||
| </method> \ | ||||
| <method name="Restart" /> \ | ||||
| <method name="Stop" /> \ | ||||
| <method name="GetCurrentSession"> \ | ||||
|     <arg type="o" direction="out" /> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const ConsoleKitSessionIface = '<node> \ | ||||
| <interface name="org.freedesktop.ConsoleKit.Session"> \ | ||||
| <signal name="Lock" /> \ | ||||
| <signal name="Unlock" /> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface); | ||||
| const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface); | ||||
|  | ||||
| function haveSystemd() { | ||||
|     return GLib.access("/run/systemd/seats", 0) >= 0; | ||||
| } | ||||
| @@ -101,7 +75,7 @@ function canLock() { | ||||
|                                                -1, null); | ||||
|  | ||||
|         let version = result.deep_unpack()[0].deep_unpack(); | ||||
|         return versionCompare('3.5.91', version); | ||||
|         return haveSystemd() && versionCompare('3.5.91', version); | ||||
|     } catch(e) { | ||||
|         return false; | ||||
|     } | ||||
| @@ -119,7 +93,7 @@ function getLoginManager() { | ||||
|         if (haveSystemd()) | ||||
|             _loginManager = new LoginManagerSystemd(); | ||||
|         else | ||||
|             _loginManager = new LoginManagerConsoleKit(); | ||||
|             _loginManager = new LoginManagerDummy(); | ||||
|     } | ||||
|  | ||||
|     return _loginManager; | ||||
| @@ -136,9 +110,6 @@ const LoginManagerSystemd = new Lang.Class({ | ||||
|                                   Lang.bind(this, this._prepareForSleep)); | ||||
|     }, | ||||
|  | ||||
|     // Having this function is a bit of a hack since the Systemd and ConsoleKit | ||||
|     // session objects have different interfaces - but in both cases there are | ||||
|     // Lock/Unlock signals, and that's all we count upon at the moment. | ||||
|     getCurrentSessionProxy: function(callback) { | ||||
|         if (this._currentSession) { | ||||
|             callback (this._currentSession); | ||||
| @@ -191,7 +162,7 @@ const LoginManagerSystemd = new Lang.Class({ | ||||
|                 let fd = -1; | ||||
|                 try { | ||||
|                     let [outVariant, fdList] = proxy.call_with_unix_fd_list_finish(result); | ||||
|                     fd = fdList.steal_fds(outVariant.deep_unpack())[0]; | ||||
|                     fd = fdList.steal_fds()[0]; | ||||
|                     callback(new Gio.UnixInputStream({ fd: fd })); | ||||
|                 } catch(e) { | ||||
|                     logError(e, "Error getting systemd inhibitor"); | ||||
| @@ -206,35 +177,13 @@ const LoginManagerSystemd = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(LoginManagerSystemd.prototype); | ||||
|  | ||||
| const LoginManagerConsoleKit = new Lang.Class({ | ||||
|     Name: 'LoginManagerConsoleKit', | ||||
| const LoginManagerDummy = new Lang.Class({ | ||||
|     Name: 'LoginManagerDummy', | ||||
|  | ||||
|     _init: function() { | ||||
|         this._proxy = new ConsoleKitManager(Gio.DBus.system, | ||||
|                                             'org.freedesktop.ConsoleKit', | ||||
|                                             '/org/freedesktop/ConsoleKit/Manager'); | ||||
|     }, | ||||
|  | ||||
|     // Having this function is a bit of a hack since the Systemd and ConsoleKit | ||||
|     // session objects have different interfaces - but in both cases there are | ||||
|     // Lock/Unlock signals, and that's all we count upon at the moment. | ||||
|     getCurrentSessionProxy: function(callback) { | ||||
|         if (this._currentSession) { | ||||
|             callback (this._currentSession); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._proxy.GetCurrentSessionRemote(Lang.bind(this, | ||||
|             function(result, error) { | ||||
|                 if (error) { | ||||
|                     logError(error, 'Could not get a proxy for the current session'); | ||||
|                 } else { | ||||
|                     this._currentSession = new ConsoleKitSession(Gio.DBus.system, | ||||
|                                                                  'org.freedesktop.ConsoleKit', | ||||
|                                                                  result[0]); | ||||
|                     callback(this._currentSession); | ||||
|                 } | ||||
|             })); | ||||
|         // we could return a DummySession object that fakes whatever callers | ||||
|         // expect (at the time of writing: connect() and connectSignal() | ||||
|         // methods), but just never calling the callback should be safer | ||||
|     }, | ||||
|  | ||||
|     canSuspend: function(asyncCallback) { | ||||
| @@ -254,4 +203,4 @@ const LoginManagerConsoleKit = new Lang.Class({ | ||||
|         callback(null); | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(LoginManagerConsoleKit.prototype); | ||||
| Signals.addSignalMethods(LoginManagerDummy.prototype); | ||||
|   | ||||
| @@ -129,7 +129,7 @@ function trySpawn(argv) | ||||
|     // Dummy child watch; we don't want to double-fork internally | ||||
|     // because then we lose the parent-child relationship, which | ||||
|     // can break polkit.  See https://bugzilla.redhat.com//show_bug.cgi?id=819275 | ||||
|     GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null); | ||||
|     GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}); | ||||
| } | ||||
|  | ||||
| // trySpawnCommandLine: | ||||
|   | ||||
| @@ -167,6 +167,8 @@ const AppSwitcherPopup = new Lang.Class({ | ||||
|                 this._select(this._selectedIndex, this._nextWindow()); | ||||
|             else if (keysym == Clutter.Up) | ||||
|                 this._select(this._selectedIndex, null, true); | ||||
|             else | ||||
|                 return Clutter.EVENT_PROPAGATE; | ||||
|         } else { | ||||
|             if (keysym == Clutter.Left) | ||||
|                 this._select(this._previous()); | ||||
| @@ -174,7 +176,11 @@ const AppSwitcherPopup = new Lang.Class({ | ||||
|                 this._select(this._next()); | ||||
|             else if (keysym == Clutter.Down) | ||||
|                 this._select(this._selectedIndex, 0); | ||||
|             else | ||||
|                 return Clutter.EVENT_PROPAGATE; | ||||
|         } | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
|  | ||||
|     _scrollHandler: function(direction) { | ||||
| @@ -305,6 +311,7 @@ const AppSwitcherPopup = new Lang.Class({ | ||||
|             this._thumbnailTimeoutId = Mainloop.timeout_add ( | ||||
|                 THUMBNAIL_POPUP_TIME, | ||||
|                 Lang.bind(this, this._timeoutPopupThumbnails)); | ||||
|             GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -365,7 +372,7 @@ const WindowSwitcherPopup = new Lang.Class({ | ||||
|  | ||||
|     _getWindowList: function() { | ||||
|         let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null; | ||||
|         return global.display.get_tab_list(Meta.TabList.NORMAL, global.screen, workspace); | ||||
|         return global.display.get_tab_list(Meta.TabList.NORMAL, workspace); | ||||
|     }, | ||||
|  | ||||
|     _createSwitcher: function() { | ||||
| @@ -403,7 +410,11 @@ const WindowSwitcherPopup = new Lang.Class({ | ||||
|                 this._select(this._previous()); | ||||
|             else if (keysym == Clutter.Right) | ||||
|                 this._select(this._next()); | ||||
|             else | ||||
|                 return Clutter.EVENT_PROPAGATE; | ||||
|         } | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
|  | ||||
|     _finish: function() { | ||||
| @@ -448,8 +459,7 @@ const AppSwitcher = new Lang.Class({ | ||||
|         let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' }); | ||||
|         let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() | ||||
|                                                                        : null; | ||||
|         let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, | ||||
|                                                      global.screen, workspace); | ||||
|         let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace); | ||||
|  | ||||
|         // Construct the AppIcons, add to the popup | ||||
|         for (let i = 0; i < apps.length; i++) { | ||||
| @@ -556,6 +566,7 @@ const AppSwitcher = new Lang.Class({ | ||||
|                                                                             this._mouseTimeOutId = 0; | ||||
|                                                                             return GLib.SOURCE_REMOVE; | ||||
|                                                         })); | ||||
|             GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem'); | ||||
|         } else | ||||
|            this._itemEntered(index); | ||||
|     }, | ||||
|   | ||||
| @@ -34,6 +34,7 @@ const Animation = new Lang.Class({ | ||||
|                 this._showFrame(0); | ||||
|  | ||||
|             this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update)); | ||||
|             GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update'); | ||||
|         } | ||||
|  | ||||
|         this._isPlaying = true; | ||||
|   | ||||
| @@ -41,9 +41,7 @@ const MIN_FREQUENT_APPS_COUNT = 3; | ||||
| const INDICATORS_BASE_TIME = 0.25; | ||||
| const INDICATORS_ANIMATION_DELAY = 0.125; | ||||
| const INDICATORS_ANIMATION_MAX_TIME = 0.75; | ||||
| // Fraction of page height the finger or mouse must reach | ||||
| // to change page | ||||
| const PAGE_SWITCH_TRESHOLD = 0.2; | ||||
|  | ||||
| const PAGE_SWITCH_TIME = 0.3; | ||||
|  | ||||
| const VIEWS_SWITCH_TIME = 0.4; | ||||
| @@ -81,6 +79,10 @@ function _getFolderName(folder) { | ||||
|     return name; | ||||
| } | ||||
|  | ||||
| function clamp(value, min, max) { | ||||
|     return Math.max(min, Math.min(max, value)); | ||||
| } | ||||
|  | ||||
| const BaseAppView = new Lang.Class({ | ||||
|     Name: 'BaseAppView', | ||||
|     Abstract: true, | ||||
| @@ -439,8 +441,8 @@ const AllView = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     goToPage: function(pageNumber) { | ||||
|         if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1) | ||||
|             return; | ||||
|         pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1); | ||||
|  | ||||
|         if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup) | ||||
|             return; | ||||
|         if (this._displayingPopup && this._currentPopup) | ||||
| @@ -472,14 +474,12 @@ const AllView = new Lang.Class({ | ||||
|         // longer than PAGE_SWITCH_TIME | ||||
|         time = Math.min(time, PAGE_SWITCH_TIME); | ||||
|  | ||||
|         if (pageNumber < this._grid.nPages() && pageNumber >= 0) { | ||||
|             this._currentPage = pageNumber; | ||||
|             Tweener.addTween(this._adjustment, | ||||
|                              { value: this._grid.getPageY(this._currentPage), | ||||
|                                time: time, | ||||
|                                transition: 'easeOutQuad' }); | ||||
|             this._pageIndicators.setCurrentPage(pageNumber); | ||||
|         } | ||||
|         this._currentPage = pageNumber; | ||||
|         Tweener.addTween(this._adjustment, | ||||
|                          { value: this._grid.getPageY(this._currentPage), | ||||
|                            time: time, | ||||
|                            transition: 'easeOutQuad' }); | ||||
|         this._pageIndicators.setCurrentPage(pageNumber); | ||||
|     }, | ||||
|  | ||||
|     _diffToPage: function (pageNumber) { | ||||
| @@ -526,15 +526,19 @@ const AllView = new Lang.Class({ | ||||
|     _onPanEnd: function(action) { | ||||
|          if (this._displayingPopup) | ||||
|             return; | ||||
|         let diffCurrentPage = this._diffToPage(this._currentPage); | ||||
|         if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) { | ||||
|             if (action.get_velocity(0)[2] > 0) | ||||
|                 this.goToPage(this._currentPage - 1); | ||||
|             else | ||||
|                 this.goToPage(this._currentPage + 1); | ||||
|         } else { | ||||
|             this.goToPage(this._currentPage); | ||||
|         } | ||||
|  | ||||
|         let pageHeight = this._grid.getPageHeight(); | ||||
|  | ||||
|         // Calculate the scroll value we'd be at, which is our current | ||||
|         // scroll plus any velocity the user had when they released | ||||
|         // their finger. | ||||
|  | ||||
|         let velocity = -action.get_velocity(0)[2]; | ||||
|         let endPanValue = this._adjustment.value + velocity; | ||||
|  | ||||
|         let closestPage = Math.round(endPanValue / pageHeight); | ||||
|         this.goToPage(closestPage); | ||||
|  | ||||
|         this._panning = false; | ||||
|     }, | ||||
|  | ||||
| @@ -764,7 +768,7 @@ const AppDisplay = new Lang.Class({ | ||||
|         this._viewStack = new St.Widget({ x_expand: true, y_expand: true, | ||||
|                                           layout_manager: this._viewStackLayout }); | ||||
|         this._viewStackLayout.connect('allocated-size-changed', Lang.bind(this, this._onAllocatedSizeChanged)); | ||||
|         this.actor.add_actor(this._viewStack, { expand: true }); | ||||
|         this.actor.add_actor(this._viewStack); | ||||
|         let layout = new ControlsBoxLayout({ homogeneous: true }); | ||||
|         this._controls = new St.Widget({ style_class: 'app-view-controls', | ||||
|                                          layout_manager: layout }); | ||||
| @@ -1402,6 +1406,7 @@ const AppIcon = new Lang.Class({ | ||||
|                     this.popupMenu(); | ||||
|                     return GLib.SOURCE_REMOVE; | ||||
|                 })); | ||||
|             GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu'); | ||||
|         } else if (button == 3) { | ||||
|             this.popupMenu(); | ||||
|             return Clutter.EVENT_STOP; | ||||
| @@ -1597,6 +1602,26 @@ const AppIconMenu = new Lang.Class({ | ||||
|                     favs.addFavorite(this._source.app.get_id()); | ||||
|                 })); | ||||
|             } | ||||
|  | ||||
|             if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) { | ||||
|                 this._appendSeparator(); | ||||
|                 let item = this._appendMenuItem(_("Show Details")); | ||||
|                 item.connect('activate', Lang.bind(this, function() { | ||||
|                     let id = this._source.app.get_id(); | ||||
|                     let args = GLib.Variant.new('(ss)', [id, '']); | ||||
|                     Gio.DBus.get(Gio.BusType.SESSION, null, | ||||
|                         function(o, res) { | ||||
|                             let bus = Gio.DBus.get_finish(res); | ||||
|                             bus.call('org.gnome.Software', | ||||
|                                      '/org/gnome/Software', | ||||
|                                      'org.gtk.Actions', 'Activate', | ||||
|                                      GLib.Variant.new('(sava{sv})', | ||||
|                                                       ['details', [args], null]), | ||||
|                                      null, 0, -1, null, null); | ||||
|                             Main.overview.hide(); | ||||
|                         }); | ||||
|                 })); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -271,10 +271,11 @@ const BackgroundCache = new Lang.Class({ | ||||
|  | ||||
|         if (this._animationFilename == params.filename) { | ||||
|             if (params.onLoaded) { | ||||
|                 GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|                 let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|                     params.onLoaded(this._animation); | ||||
|                     return GLib.SOURCE_REMOVE; | ||||
|                 })); | ||||
|                 GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -286,10 +287,11 @@ const BackgroundCache = new Lang.Class({ | ||||
|                            this._animation = animation; | ||||
|  | ||||
|                            if (params.onLoaded) { | ||||
|                                GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|                                let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|                                    params.onLoaded(this._animation); | ||||
|                                    return GLib.SOURCE_REMOVE; | ||||
|                                })); | ||||
|                                GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); | ||||
|                            } | ||||
|                        })); | ||||
|     } | ||||
| @@ -386,10 +388,11 @@ const Background = new Lang.Class({ | ||||
|  | ||||
|         this.isLoaded = true; | ||||
|  | ||||
|         GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|         let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { | ||||
|             this.emit('loaded'); | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         })); | ||||
|         GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit'); | ||||
|     }, | ||||
|  | ||||
|     _loadPattern: function() { | ||||
| @@ -532,6 +535,7 @@ const Background = new Lang.Class({ | ||||
|                                                                     this._updateAnimation(); | ||||
|                                                                     return GLib.SOURCE_REMOVE; | ||||
|                                                                 })); | ||||
|         GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation'); | ||||
|     }, | ||||
|  | ||||
|     _loadAnimation: function(filename) { | ||||
|   | ||||
| @@ -14,6 +14,9 @@ const Shell = imports.gi.Shell; | ||||
| const MSECS_IN_DAY = 24 * 60 * 60 * 1000; | ||||
| const SHOW_WEEKDATE_KEY = 'show-weekdate'; | ||||
|  | ||||
| // alias to prevent xgettext from picking up strings translated in GTK+ | ||||
| const gtk30_ = Gettext_gtk30.gettext; | ||||
|  | ||||
| // in org.gnome.desktop.interface | ||||
| const CLOCK_FORMAT_KEY        = 'clock-format'; | ||||
|  | ||||
| @@ -387,7 +390,7 @@ const Calendar = new Lang.Class({ | ||||
|  | ||||
|         // Find the ordering for month/year in the calendar heading | ||||
|         this._headerFormatWithoutYear = '%B'; | ||||
|         switch (Gettext_gtk30.gettext('calendar:MY')) { | ||||
|         switch (gtk30_('calendar:MY')) { | ||||
|         case 'calendar:MY': | ||||
|             this._headerFormat = '%B %Y'; | ||||
|             break; | ||||
| @@ -405,9 +408,9 @@ const Calendar = new Lang.Class({ | ||||
|  | ||||
|         this._shouldDateGrabFocus = false; | ||||
|  | ||||
|         this.actor = new St.Table({ homogeneous: false, | ||||
|                                     style_class: 'calendar', | ||||
|                                     reactive: true }); | ||||
|         this.actor = new St.Widget({ style_class: 'calendar', | ||||
|                                      layout_manager: new Clutter.TableLayout(), | ||||
|                                      reactive: true }); | ||||
|  | ||||
|         this.actor.connect('scroll-event', | ||||
|                            Lang.bind(this, this._onScroll)); | ||||
| @@ -438,13 +441,14 @@ const Calendar = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _buildHeader: function() { | ||||
|         let layout = this.actor.layout_manager; | ||||
|         let offsetCols = this._useWeekdate ? 1 : 0; | ||||
|         this.actor.destroy_all_children(); | ||||
|  | ||||
|         // Top line of the calendar '<| September 2009 |>' | ||||
|         this._topBox = new St.BoxLayout(); | ||||
|         this.actor.add(this._topBox, | ||||
|                        { row: 0, col: 0, col_span: offsetCols + 7 }); | ||||
|         layout.pack(this._topBox, 0, 0); | ||||
|         layout.set_span(this._topBox, offsetCols + 7, 1); | ||||
|  | ||||
|         this._backButton = new St.Button({ style_class: 'calendar-change-month-back', | ||||
|                                            accessible_name: _("Previous month"), | ||||
| @@ -476,10 +480,8 @@ const Calendar = new Lang.Class({ | ||||
|             let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay()); | ||||
|             let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading', | ||||
|                                        text: customDayAbbrev }); | ||||
|             this.actor.add(label, | ||||
|                            { row: 1, | ||||
|                              col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7, | ||||
|                              x_fill: false, x_align: St.Align.MIDDLE }); | ||||
|             let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7; | ||||
|             layout.pack(label, col, 1); | ||||
|             iter.setTime(iter.getTime() + MSECS_IN_DAY); | ||||
|         } | ||||
|  | ||||
| @@ -598,6 +600,7 @@ const Calendar = new Lang.Class({ | ||||
|  | ||||
|         beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY); | ||||
|  | ||||
|         let layout = this.actor.layout_manager; | ||||
|         let iter = new Date(beginDate); | ||||
|         let row = 2; | ||||
|         // nRows here means 6 weeks + one header + one navbar | ||||
| @@ -645,16 +648,15 @@ const Calendar = new Lang.Class({ | ||||
|             button.style_class = styleClass; | ||||
|  | ||||
|             let offsetCols = this._useWeekdate ? 1 : 0; | ||||
|             this.actor.add(button, | ||||
|                            { row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 }); | ||||
|             let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7; | ||||
|             layout.pack(button, col, row); | ||||
|  | ||||
|             this._buttons.push(button); | ||||
|  | ||||
|             if (this._useWeekdate && iter.getDay() == 4) { | ||||
|                 let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(), | ||||
|                                            style_class: 'calendar-day-base calendar-week-number'}); | ||||
|                 this.actor.add(label, | ||||
|                                { row: row, col: 0, y_align: St.Align.MIDDLE }); | ||||
|                 layout.pack(label, 0, row); | ||||
|             } | ||||
|  | ||||
|             iter.setTime(iter.getTime() + MSECS_IN_DAY); | ||||
| @@ -697,7 +699,10 @@ const EventsList = new Lang.Class({ | ||||
|     Name: 'EventsList', | ||||
|  | ||||
|     _init: function() { | ||||
|         this.actor = new St.Table({ style_class: 'events-table' }); | ||||
|         let layout = new Clutter.TableLayout(); | ||||
|         this.actor = new St.Widget({ style_class: 'events-table', | ||||
|                                      layout_manager: layout }); | ||||
|         layout.hookup_style(this.actor); | ||||
|         this._date = new Date(); | ||||
|         this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' }); | ||||
|         this._desktopSettings.connect('changed', Lang.bind(this, this._update)); | ||||
| @@ -721,9 +726,11 @@ const EventsList = new Lang.Class({ | ||||
|         dayLabel.clutter_text.line_wrap = false; | ||||
|         dayLabel.clutter_text.ellipsize = false; | ||||
|  | ||||
|         this.actor.add(dayLabel, { row: index, col: 0, | ||||
|                                    x_expand: false, x_align: St.Align.END, | ||||
|                                    y_fill: false, y_align: St.Align.START }); | ||||
|         let layout = this.actor.layout_manager; | ||||
|         layout.pack(dayLabel, 0, index); | ||||
|         layout.child_set(dayLabel, { x_expand: false, | ||||
|                                      x_align: Clutter.TableAlignment.END, | ||||
|                                      y_align: Clutter.TableAlignment.START }); | ||||
|  | ||||
|         let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY); | ||||
|         let timeString = _formatEventTime(event, clockFormat); | ||||
| @@ -732,18 +739,17 @@ const EventsList = new Lang.Class({ | ||||
|         timeLabel.clutter_text.line_wrap = false; | ||||
|         timeLabel.clutter_text.ellipsize = false; | ||||
|  | ||||
|         this.actor.add(timeLabel, { row: index, col: 1, | ||||
|                                     x_expand: false, x_align: St.Align.MIDDLE, | ||||
|                                     y_fill: false, y_align: St.Align.START }); | ||||
|         layout.pack(timeLabel, 1, index); | ||||
|         layout.child_set(timeLabel, { x_expand: false, | ||||
|                                       y_align: Clutter.TableAlignment.START }); | ||||
|  | ||||
|         let titleLabel = new St.Label({ style_class: 'events-day-task', | ||||
|                                         text: event.summary }); | ||||
|         titleLabel.clutter_text.line_wrap = true; | ||||
|         titleLabel.clutter_text.ellipsize = false; | ||||
|  | ||||
|         this.actor.add(titleLabel, { row: index, col: 2, | ||||
|                                      x_expand: true, x_align: St.Align.START, | ||||
|                                      y_fill: false, y_align: St.Align.START }); | ||||
|         layout.pack(titleLabel, 2, index); | ||||
|         layout.child_set(titleLabel, { x_expand: true }); | ||||
|     }, | ||||
|  | ||||
|     _addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) { | ||||
| @@ -752,13 +758,10 @@ const EventsList = new Lang.Class({ | ||||
|         if (events.length == 0 && !showNothingScheduled) | ||||
|             return index; | ||||
|  | ||||
|         this.actor.add(new St.Label({ style_class: 'events-day-header', text: header }), | ||||
|                        { row: index, col: 0, col_span: 3, | ||||
|                          // In theory, x_expand should be true here, but x_expand | ||||
|                          // is a property of the column for StTable, ie all day cells | ||||
|                          // get it too | ||||
|                          x_expand: false, x_align: St.Align.START, | ||||
|                          y_fill: false, y_align: St.Align.START }); | ||||
|         let label = new St.Label({ style_class: 'events-day-header', text: header }); | ||||
|         let layout = this.actor.layout_manager; | ||||
|         layout.pack(label, 0, index); | ||||
|         layout.child_set(label, { column_span: 3, x_expand: false }); | ||||
|         index++; | ||||
|  | ||||
|         for (let n = 0; n < events.length; n++) { | ||||
|   | ||||
| @@ -43,6 +43,7 @@ const AutomountManager = new Lang.Class({ | ||||
|         this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', Lang.bind(this, this._onDriveEjectButton)); | ||||
|  | ||||
|         this._mountAllId = Mainloop.idle_add(Lang.bind(this, this._startupMountAll)); | ||||
|         GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll'); | ||||
|     }, | ||||
|  | ||||
|     disable: function() { | ||||
| @@ -234,10 +235,11 @@ const AutomountManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _allowAutorunExpire: function(volume) { | ||||
|         Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() { | ||||
|         let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() { | ||||
|             volume.allowAutorun = false; | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         }); | ||||
|         GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun'); | ||||
|     } | ||||
| }); | ||||
| const Component = AutomountManager; | ||||
|   | ||||
| @@ -170,17 +170,6 @@ const AutorunManager = new Lang.Class({ | ||||
|         this._transDispatcher = new AutorunTransientDispatcher(this); | ||||
|     }, | ||||
|  | ||||
|     _ensureResidentSource: function() { | ||||
|         if (this._residentSource) | ||||
|             return; | ||||
|  | ||||
|         this._residentSource = new AutorunResidentSource(this); | ||||
|         let destroyId = this._residentSource.connect('destroy', Lang.bind(this, function() { | ||||
|             this._residentSource.disconnect(destroyId); | ||||
|             this._residentSource = null; | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|     enable: function() { | ||||
|         this._scanMounts(); | ||||
|  | ||||
| @@ -189,17 +178,12 @@ const AutorunManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     disable: function() { | ||||
|         if (this._residentSource) | ||||
|             this._residentSource.destroy(); | ||||
|         this._volumeMonitor.disconnect(this._mountAddedId); | ||||
|         this._volumeMonitor.disconnect(this._mountRemovedId); | ||||
|     }, | ||||
|  | ||||
|     _processMount: function(mount, hotplug) { | ||||
|         let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) { | ||||
|             this._ensureResidentSource(); | ||||
|             this._residentSource.addMount(mount, apps); | ||||
|  | ||||
|             if (hotplug) | ||||
|                 this._transDispatcher.addMount(mount, apps, contentTypes); | ||||
|         })); | ||||
| @@ -224,8 +208,6 @@ const AutorunManager = new Lang.Class({ | ||||
|  | ||||
|     _onMountRemoved: function(monitor, mount) { | ||||
|         this._transDispatcher.removeMount(mount); | ||||
|         if (this._residentSource) | ||||
|             this._residentSource.removeMount(mount); | ||||
|     }, | ||||
|  | ||||
|     ejectMount: function(mount) { | ||||
| @@ -288,153 +270,6 @@ const AutorunManager = new Lang.Class({ | ||||
|     }, | ||||
| }); | ||||
|  | ||||
| const AutorunResidentSource = new Lang.Class({ | ||||
|     Name: 'AutorunResidentSource', | ||||
|     Extends: MessageTray.Source, | ||||
|  | ||||
|     _init: function(manager) { | ||||
|         this.parent(_("Removable Devices"), 'media-removable'); | ||||
|         this.resident = true; | ||||
|  | ||||
|         this._mounts = []; | ||||
|  | ||||
|         this._manager = manager; | ||||
|         this._notification = new AutorunResidentNotification(this._manager, this); | ||||
|     }, | ||||
|  | ||||
|     _createPolicy: function() { | ||||
|         return new MessageTray.NotificationPolicy({ showInLockScreen: false }); | ||||
|     }, | ||||
|  | ||||
|     buildRightClickMenu: function() { | ||||
|         return null; | ||||
|     }, | ||||
|  | ||||
|     addMount: function(mount, apps) { | ||||
|         if (!shouldAutorunMount(mount, false)) | ||||
|             return; | ||||
|  | ||||
|         let filtered = this._mounts.filter(function (element) { | ||||
|             return (element.mount == mount); | ||||
|         }); | ||||
|  | ||||
|         if (filtered.length != 0) | ||||
|             return; | ||||
|  | ||||
|         let element = { mount: mount, apps: apps }; | ||||
|         this._mounts.push(element); | ||||
|         this._redisplay(); | ||||
|     }, | ||||
|  | ||||
|     removeMount: function(mount) { | ||||
|         this._mounts = | ||||
|             this._mounts.filter(function (element) { | ||||
|                 return (element.mount != mount); | ||||
|             }); | ||||
|  | ||||
|         this._redisplay(); | ||||
|     }, | ||||
|  | ||||
|     _redisplay: function() { | ||||
|         if (this._mounts.length == 0) { | ||||
|             this._notification.destroy(); | ||||
|             this.destroy(); | ||||
|  | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._notification.updateForMounts(this._mounts); | ||||
|  | ||||
|         // add ourselves as a source, and push the notification | ||||
|         if (!Main.messageTray.contains(this)) { | ||||
|             Main.messageTray.add(this); | ||||
|             this.pushNotification(this._notification); | ||||
|         } | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const AutorunResidentNotification = new Lang.Class({ | ||||
|     Name: 'AutorunResidentNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(manager, source) { | ||||
|         this.parent(source, source.title, null, { customContent: true }); | ||||
|  | ||||
|         // set the notification as resident | ||||
|         this.setResident(true); | ||||
|  | ||||
|         this._layout = new St.BoxLayout ({ style_class: 'hotplug-resident-box', | ||||
|                                            vertical: true }); | ||||
|         this._manager = manager; | ||||
|  | ||||
|         this.addActor(this._layout, | ||||
|                       { x_expand: true, | ||||
|                         x_fill: true }); | ||||
|     }, | ||||
|  | ||||
|     updateForMounts: function(mounts) { | ||||
|         // remove all the layout content | ||||
|         this._layout.destroy_all_children(); | ||||
|  | ||||
|         for (let idx = 0; idx < mounts.length; idx++) { | ||||
|             let element = mounts[idx]; | ||||
|  | ||||
|             let actor = this._itemForMount(element.mount, element.apps); | ||||
|             this._layout.add(actor, { x_fill: true, | ||||
|                                       expand: true }); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _itemForMount: function(mount, apps) { | ||||
|         let item = new St.BoxLayout(); | ||||
|  | ||||
|         // prepare the mount button content | ||||
|         let mountLayout = new St.BoxLayout(); | ||||
|  | ||||
|         let mountIcon = new St.Icon({ gicon: mount.get_icon(), | ||||
|                                       style_class: 'hotplug-resident-mount-icon' }); | ||||
|         mountLayout.add_actor(mountIcon); | ||||
|  | ||||
|         let labelBin = new St.Bin({ y_align: St.Align.MIDDLE }); | ||||
|         let mountLabel = | ||||
|             new St.Label({ text: mount.get_name(), | ||||
|                            style_class: 'hotplug-resident-mount-label', | ||||
|                            track_hover: true, | ||||
|                            reactive: true }); | ||||
|         labelBin.add_actor(mountLabel); | ||||
|         mountLayout.add_actor(labelBin); | ||||
|  | ||||
|         let mountButton = new St.Button({ child: mountLayout, | ||||
|                                           x_align: St.Align.START, | ||||
|                                           x_fill: true, | ||||
|                                           style_class: 'hotplug-resident-mount', | ||||
|                                           button_mask: St.ButtonMask.ONE }); | ||||
|         item.add(mountButton, { x_align: St.Align.START, | ||||
|                                 expand: true }); | ||||
|  | ||||
|         let ejectIcon =  | ||||
|             new St.Icon({ icon_name: 'media-eject-symbolic', | ||||
|                           style_class: 'hotplug-resident-eject-icon' }); | ||||
|  | ||||
|         let ejectButton = | ||||
|             new St.Button({ style_class: 'hotplug-resident-eject-button', | ||||
|                             button_mask: St.ButtonMask.ONE, | ||||
|                             child: ejectIcon }); | ||||
|         item.add(ejectButton, { x_align: St.Align.END }); | ||||
|  | ||||
|         // now connect signals | ||||
|         mountButton.connect('clicked', Lang.bind(this, function(actor, event) { | ||||
|             startAppForMount(apps[0], mount); | ||||
|         })); | ||||
|  | ||||
|         ejectButton.connect('clicked', Lang.bind(this, function() { | ||||
|             this._manager.ejectMount(mount); | ||||
|         })); | ||||
|  | ||||
|         return item; | ||||
|     }, | ||||
| }); | ||||
|  | ||||
| const AutorunTransientDispatcher = new Lang.Class({ | ||||
|     Name: 'AutorunTransientDispatcher', | ||||
|  | ||||
| @@ -559,12 +394,12 @@ const AutorunTransientNotification = new Lang.Class({ | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(manager, source) { | ||||
|         this.parent(source, source.title, null, { customContent: true }); | ||||
|         this.parent(source, source.title); | ||||
|  | ||||
|         this._manager = manager; | ||||
|         this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box', | ||||
|                                        vertical: true }); | ||||
|         this.addActor(this._box); | ||||
|         this._bodyBin.child = this._box; | ||||
|  | ||||
|         this._mount = source.mount; | ||||
|  | ||||
|   | ||||
| @@ -102,15 +102,6 @@ const TelepathyClient = new Lang.Class({ | ||||
|         this._tpClient.set_handle_channels_func( | ||||
|             Lang.bind(this, this._handleChannels)); | ||||
|  | ||||
|         // Watch subscription requests and connection errors | ||||
|         this._subscriptionSource = null; | ||||
|         this._accountSource = null; | ||||
|  | ||||
|         // Workaround for gjs not supporting GPtrArray in signals. | ||||
|         // See BGO bug #653941 for context. | ||||
|         this._tpClient.set_contact_list_changed_func( | ||||
|             Lang.bind(this, this._contactListChanged)); | ||||
|  | ||||
|         // Allow other clients (such as Empathy) to pre-empt our channels if | ||||
|         // needed | ||||
|         this._tpClient.set_delegated_channels_callback( | ||||
| @@ -124,17 +115,12 @@ const TelepathyClient = new Lang.Class({ | ||||
|             throw new Error('Couldn\'t register Telepathy client. Error: \n' + e); | ||||
|         } | ||||
|  | ||||
|         this._accountManagerValidityChangedId = this._accountManager.connect('account-validity-changed', | ||||
|                                                                              Lang.bind(this, this._accountValidityChanged)); | ||||
|  | ||||
|         if (!this._accountManager.is_prepared(Tp.AccountManager.get_feature_quark_core())) | ||||
|             this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared)); | ||||
|     }, | ||||
|  | ||||
|     disable: function() { | ||||
|         this._tpClient.unregister(); | ||||
|         this._accountManager.disconnect(this._accountManagerValidityChangedId); | ||||
|         this._accountManagerValidityChangedId = 0; | ||||
|     }, | ||||
|  | ||||
|     _observeChannels: function(observer, account, conn, channels, | ||||
| @@ -219,33 +205,6 @@ const TelepathyClient = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _displayRoomInvitation: function(conn, channel, dispatchOp, context) { | ||||
|         // We can only approve the rooms if we have been invited to it | ||||
|         let selfContact = channel.group_get_self_contact(); | ||||
|         if (selfContact == null) { | ||||
|             context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT, | ||||
|                                         message: 'Not invited to the room' })); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let [invited, inviter, reason, msg] = channel.group_get_local_pending_contact_info(selfContact); | ||||
|         if (!invited) { | ||||
|             context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT, | ||||
|                                         message: 'Not invited to the room' })); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // FIXME: We don't have a 'chat room' icon (bgo #653737) use | ||||
|         // system-users for now as Empathy does. | ||||
|         let source = new ApproverSource(dispatchOp, _("Invitation"), | ||||
|                                         Gio.icon_new_for_string('system-users')); | ||||
|         Main.messageTray.add(source); | ||||
|  | ||||
|         let notif = new RoomInviteNotification(source, dispatchOp, channel, inviter); | ||||
|         source.notify(notif); | ||||
|         context.accept(); | ||||
|     }, | ||||
|  | ||||
|     _approveChannels: function(approver, account, conn, channels, | ||||
|                                dispatchOp, context) { | ||||
|         let channel = channels[0]; | ||||
| @@ -259,10 +218,6 @@ const TelepathyClient = new Lang.Class({ | ||||
|  | ||||
|         if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT) | ||||
|             this._approveTextChannel(account, conn, channel, dispatchOp, context); | ||||
|         else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL) | ||||
|             this._approveCall(account, conn, channel, dispatchOp, context); | ||||
|         else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER) | ||||
|             this._approveFileTransfer(account, conn, channel, dispatchOp, context); | ||||
|         else | ||||
|             context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT, | ||||
|                                         message: 'Unsupported channel type' })); | ||||
| @@ -283,45 +238,9 @@ const TelepathyClient = new Lang.Class({ | ||||
|                 }})); | ||||
|  | ||||
|             context.accept(); | ||||
|         } else { | ||||
|             this._displayRoomInvitation(conn, channel, dispatchOp, context); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _approveCall: function(account, conn, channel, dispatchOp, context) { | ||||
|         let isVideo = false; | ||||
|  | ||||
|         let props = channel.borrow_immutable_properties(); | ||||
|  | ||||
|         if (props[Tp.PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO]) | ||||
|           isVideo = true; | ||||
|  | ||||
|         // We got the TpContact | ||||
|         let source = new ApproverSource(dispatchOp, _("Call"), isVideo ? | ||||
|                                         Gio.icon_new_for_string('camera-web') : | ||||
|                                         Gio.icon_new_for_string('audio-input-microphone')); | ||||
|         Main.messageTray.add(source); | ||||
|  | ||||
|         let notif = new AudioVideoNotification(source, dispatchOp, channel, | ||||
|             channel.get_target_contact(), isVideo); | ||||
|         source.notify(notif); | ||||
|         context.accept(); | ||||
|     }, | ||||
|  | ||||
|     _approveFileTransfer: function(account, conn, channel, dispatchOp, context) { | ||||
|         // Use the icon of the file being transferred | ||||
|         let gicon = Gio.content_type_get_icon(channel.get_mime_type()); | ||||
|  | ||||
|         // We got the TpContact | ||||
|         let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon); | ||||
|         Main.messageTray.add(source); | ||||
|  | ||||
|         let notif = new FileTransferNotification(source, dispatchOp, channel, | ||||
|             channel.get_target_contact()); | ||||
|         source.notify(notif); | ||||
|         context.accept(); | ||||
|     }, | ||||
|  | ||||
|     _delegatedChannelsCb: function(client, channels) { | ||||
|         // Nothing to do as we don't make a distinction between observed and | ||||
|         // handled channels. | ||||
| @@ -329,105 +248,7 @@ const TelepathyClient = new Lang.Class({ | ||||
|  | ||||
|     _accountManagerPrepared: function(am, result) { | ||||
|         am.prepare_finish(result); | ||||
|  | ||||
|         let accounts = am.get_valid_accounts(); | ||||
|         for (let i = 0; i < accounts.length; i++) { | ||||
|             this._accountValidityChanged(am, accounts[i], true); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _accountValidityChanged: function(am, account, valid) { | ||||
|         if (!valid) | ||||
|             return; | ||||
|  | ||||
|         // It would be better to connect to "status-changed" but we cannot. | ||||
|         // See discussion in https://bugzilla.gnome.org/show_bug.cgi?id=654159 | ||||
|         account.connect("notify::connection-status", | ||||
|                         Lang.bind(this, this._accountConnectionStatusNotifyCb)); | ||||
|  | ||||
|         account.connect('notify::connection', | ||||
|                         Lang.bind(this, this._connectionChanged)); | ||||
|         this._connectionChanged(account); | ||||
|     }, | ||||
|  | ||||
|     _connectionChanged: function(account) { | ||||
|         let conn = account.get_connection(); | ||||
|         if (conn == null) | ||||
|             return; | ||||
|  | ||||
|         this._tpClient.grab_contact_list_changed(conn); | ||||
|         if (conn.get_contact_list_state() == Tp.ContactListState.SUCCESS) { | ||||
|             this._contactListChanged(conn, conn.dup_contact_list(), []); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _contactListChanged: function(conn, added, removed) { | ||||
|         for (let i = 0; i < added.length; i++) { | ||||
|             let contact = added[i]; | ||||
|  | ||||
|             contact.connect('subscription-states-changed', | ||||
|                             Lang.bind(this, this._subscriptionStateChanged)); | ||||
|             this._subscriptionStateChanged(contact); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _subscriptionStateChanged: function(contact) { | ||||
|         if (contact.get_publish_state() != Tp.SubscriptionState.ASK) | ||||
|             return; | ||||
|  | ||||
|         /* Implicitly accept publish requests if contact is already subscribed */ | ||||
|         if (contact.get_subscribe_state() == Tp.SubscriptionState.YES || | ||||
|             contact.get_subscribe_state() == Tp.SubscriptionState.ASK) { | ||||
|  | ||||
|             contact.authorize_publication_async(function(src, result) { | ||||
|                 src.authorize_publication_finish(result)}); | ||||
|  | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         /* Display notification to ask user to accept/reject request */ | ||||
|         let source = this._ensureAppSource(); | ||||
|  | ||||
|         let notif = new SubscriptionRequestNotification(source, contact); | ||||
|         source.notify(notif); | ||||
|     }, | ||||
|  | ||||
|     _accountConnectionStatusNotifyCb: function(account) { | ||||
|         let connectionError = account.connection_error; | ||||
|  | ||||
|         if (account.connection_status != Tp.ConnectionStatus.DISCONNECTED || | ||||
|             connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED)) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let notif = this._accountNotifications[account.get_object_path()]; | ||||
|         if (notif) | ||||
|             return; | ||||
|  | ||||
|         /* Display notification that account failed to connect */ | ||||
|         let source = this._ensureAppSource(); | ||||
|  | ||||
|         notif = new AccountNotification(source, account, connectionError); | ||||
|         this._accountNotifications[account.get_object_path()] = notif; | ||||
|         notif.connect('destroy', Lang.bind(this, function() { | ||||
|             delete this._accountNotifications[account.get_object_path()]; | ||||
|         })); | ||||
|         source.notify(notif); | ||||
|     }, | ||||
|  | ||||
|     _ensureAppSource: function() { | ||||
|         if (this._appSource == null) { | ||||
|             this._appSource = new MessageTray.Source(_("Chat"), 'empathy'); | ||||
|             this._appSource.policy = new MessageTray.NotificationApplicationPolicy('empathy'); | ||||
|  | ||||
|             Main.messageTray.add(this._appSource); | ||||
|             this._appSource.connect('destroy', Lang.bind(this, function () { | ||||
|                 this._appSource = null; | ||||
|             })); | ||||
|         } | ||||
|  | ||||
|         return this._appSource; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const ChatSource = new Lang.Class({ | ||||
| @@ -545,7 +366,7 @@ const ChatSource = new Lang.Class({ | ||||
|  | ||||
|     _updateAvatarIcon: function() { | ||||
|         this.iconUpdated(); | ||||
|         this._notification.update(this._notification.title, null, { customContent: true }); | ||||
|         this._notification.update(this._notification.title); | ||||
|     }, | ||||
|  | ||||
|     open: function() { | ||||
| @@ -681,6 +502,7 @@ const ChatSource = new Lang.Class({ | ||||
|             Mainloop.source_remove(this._notifyTimeoutId); | ||||
|         this._notifyTimeoutId = Mainloop.timeout_add(500, | ||||
|             Lang.bind(this, this._notifyTimeout)); | ||||
|         GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout'); | ||||
|     }, | ||||
|  | ||||
|     _notifyTimeout: function() { | ||||
| @@ -736,7 +558,7 @@ const ChatSource = new Lang.Class({ | ||||
|  | ||||
|         title = GLib.markup_escape_text(this.title, -1); | ||||
|  | ||||
|         this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() }); | ||||
|         this._notification.update(this._notification.title, null, { secondaryGIcon: this.getSecondaryIcon() }); | ||||
|  | ||||
|         if (message) | ||||
|             msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>'; | ||||
| @@ -763,8 +585,7 @@ const ChatNotification = new Lang.Class({ | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source) { | ||||
|         this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() }); | ||||
|         this.setResident(true); | ||||
|         this.parent(source, source.title, null, { secondaryGIcon: source.getSecondaryIcon() }); | ||||
|  | ||||
|         this._responseEntry = new St.Entry({ style_class: 'chat-response', | ||||
|                                              can_focus: true }); | ||||
| @@ -780,16 +601,17 @@ const ChatNotification = new Lang.Class({ | ||||
|             this.emit('unfocused'); | ||||
|         })); | ||||
|  | ||||
|         this._createScrollArea(); | ||||
|         this._lastGroup = null; | ||||
|         this._lastGroupActor = null; | ||||
|  | ||||
|         this._bodyBox = new St.BoxLayout({ style_class: 'chat-notification-body-box' }); | ||||
|         this._bodyBin.child = this._bodyBox; | ||||
|  | ||||
|         // Keep track of the bottom position for the current adjustment and | ||||
|         // force a scroll to the bottom if things change while we were at the | ||||
|         // bottom | ||||
|         this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value; | ||||
|         this._scrollArea.add_style_class_name('chat-notification-scrollview'); | ||||
|         this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) { | ||||
|         this._oldMaxScrollValue = this._bodyScrollArea.vscroll.adjustment.value; | ||||
|         this._bodyScrollArea.add_style_class_name('chat-notification-scrollview'); | ||||
|         this._bodyScrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) { | ||||
|             if (adjustment.value == this._oldMaxScrollValue) | ||||
|                 this.scrollTo(St.Side.BOTTOM); | ||||
|             this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size); | ||||
| @@ -826,8 +648,7 @@ const ChatNotification = new Lang.Class({ | ||||
|         } | ||||
|  | ||||
|         if (message.direction == NotificationDirection.RECEIVED) { | ||||
|             this.update(this.source.title, messageBody, { customContent: true, | ||||
|                                                           bannerMarkup: true }); | ||||
|             this.update(this.source.title, messageBody, { bannerMarkup: true }); | ||||
|         } | ||||
|  | ||||
|         let group = (message.direction == NotificationDirection.RECEIVED ? | ||||
| @@ -864,7 +685,7 @@ const ChatNotification = new Lang.Class({ | ||||
|                 expired[i].actor.destroy(); | ||||
|         } | ||||
|  | ||||
|         let groups = this._contentArea.get_children(); | ||||
|         let groups = this._bodyBox.get_children(); | ||||
|         for (let i = 0; i < groups.length; i++) { | ||||
|             let group = groups[i]; | ||||
|             if (group.get_n_children() == 0) | ||||
| @@ -896,9 +717,9 @@ const ChatNotification = new Lang.Class({ | ||||
|         if (this._timestampTimeoutId) | ||||
|             Mainloop.source_remove(this._timestampTimeoutId); | ||||
|  | ||||
|         let highlighter = new MessageTray.URLHighlighter(props.body, | ||||
|                                                          true,  // line wrap? | ||||
|                                                          true); // allow markup? | ||||
|         let highlighter = new MessageTray.URLHighlighter(); | ||||
|         highlighter.actor.clutter_text.line_wrap = true; | ||||
|         highlighter.setMarkup(props.body, true); | ||||
|  | ||||
|         let body = highlighter.actor; | ||||
|  | ||||
| @@ -910,28 +731,28 @@ const ChatNotification = new Lang.Class({ | ||||
|         if (group != this._lastGroup) { | ||||
|             this._lastGroup = group; | ||||
|             let emptyLine = new St.Label({ style_class: 'chat-empty-line' }); | ||||
|             this.addActor(emptyLine); | ||||
|             this._bodyBox.add_child(emptyLine); | ||||
|         } | ||||
|  | ||||
|         this._lastMessageBox = new St.BoxLayout({ vertical: false }); | ||||
|         this._lastMessageBox.add(body, props.childProps); | ||||
|         this.addActor(this._lastMessageBox); | ||||
|  | ||||
|         this.updated(); | ||||
|         this._bodyBox.add_child(this._lastMessageBox); | ||||
|  | ||||
|         let timestamp = props.timestamp; | ||||
|         this._history.unshift({ actor: body, time: timestamp, | ||||
|                                 realMessage: group != 'meta' }); | ||||
|  | ||||
|         if (!props.noTimestamp) { | ||||
|             if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) | ||||
|             if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) { | ||||
|                 this.appendTimestamp(); | ||||
|             else | ||||
|             } else { | ||||
|                 // Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME | ||||
|                 // from the timestamp of the message. | ||||
|                 this._timestampTimeoutId = Mainloop.timeout_add_seconds( | ||||
|                     SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp), | ||||
|                     Lang.bind(this, this.appendTimestamp)); | ||||
|                 GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp'); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         this._filterMessages(); | ||||
| @@ -946,78 +767,74 @@ const ChatNotification = new Lang.Class({ | ||||
|  | ||||
|         let desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' }); | ||||
|         let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY); | ||||
|         let hasAmPm = date.toLocaleFormat('%p') != ''; | ||||
|  | ||||
|         switch (clockFormat) { | ||||
|             case '24h': | ||||
|                 // Show only the time if date is on today | ||||
|                 if(daysAgo < 1){ | ||||
|                     /* Translators: Time in 24h format */ | ||||
|                     format = _("%H\u2236%M"); | ||||
|                 } | ||||
|                 // Show the word "Yesterday" and time if date is on yesterday | ||||
|                 else if(daysAgo <2){ | ||||
|                     /* Translators: this is the word "Yesterday" followed by a | ||||
|                      time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("Yesterday, %H\u2236%M"); | ||||
|                 } | ||||
|                 // Show a week day and time if date is in the last week | ||||
|                 else if (daysAgo < 7) { | ||||
|                     /* Translators: this is the week day name followed by a time | ||||
|                      string in 24h format. i.e. "Monday, 14:30" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%A, %H\u2236%M"); | ||||
|         if (clockFormat == '24h' || !hasAmPm) { | ||||
|             // Show only the time if date is on today | ||||
|             if(daysAgo < 1){ | ||||
|                 /* Translators: Time in 24h format */ | ||||
|                 format = _("%H\u2236%M"); | ||||
|             } | ||||
|             // Show the word "Yesterday" and time if date is on yesterday | ||||
|             else if(daysAgo <2){ | ||||
|                 /* Translators: this is the word "Yesterday" followed by a | ||||
|                  time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("Yesterday, %H\u2236%M"); | ||||
|             } | ||||
|             // Show a week day and time if date is in the last week | ||||
|             else if (daysAgo < 7) { | ||||
|                 /* Translators: this is the week day name followed by a time | ||||
|                  string in 24h format. i.e. "Monday, 14:30" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%A, %H\u2236%M"); | ||||
|  | ||||
|                 } else if (date.getYear() == now.getYear()) { | ||||
|                     /* Translators: this is the month name and day number | ||||
|                      followed by a time string in 24h format. | ||||
|                      i.e. "May 25, 14:30" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%B %d, %H\u2236%M"); | ||||
|                 } else { | ||||
|                     /* Translators: this is the month name, day number, year | ||||
|                      number followed by a time string in 24h format. | ||||
|                      i.e. "May 25 2012, 14:30" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%B %d %Y, %H\u2236%M"); | ||||
|                 } | ||||
|                 break; | ||||
|         default: | ||||
|             /* explicit fall-through */ | ||||
|             case '12h': | ||||
|                 // Show only the time if date is on today | ||||
|                 if(daysAgo < 1){ | ||||
|                     /* Translators: Time in 24h format */ | ||||
|                     format = _("%l\u2236%M %p"); | ||||
|                 } | ||||
|                 // Show the word "Yesterday" and time if date is on yesterday | ||||
|                 else if(daysAgo <2){ | ||||
|                     /* Translators: this is the word "Yesterday" followed by a | ||||
|                      time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("Yesterday, %l\u2236%M %p"); | ||||
|                 } | ||||
|                 // Show a week day and time if date is in the last week | ||||
|                 else if (daysAgo < 7) { | ||||
|                     /* Translators: this is the week day name followed by a time | ||||
|                      string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%A, %l\u2236%M %p"); | ||||
|             } else if (date.getYear() == now.getYear()) { | ||||
|                 /* Translators: this is the month name and day number | ||||
|                  followed by a time string in 24h format. | ||||
|                  i.e. "May 25, 14:30" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%B %d, %H\u2236%M"); | ||||
|             } else { | ||||
|                 /* Translators: this is the month name, day number, year | ||||
|                  number followed by a time string in 24h format. | ||||
|                  i.e. "May 25 2012, 14:30" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%B %d %Y, %H\u2236%M"); | ||||
|             } | ||||
|         } else { | ||||
|             // Show only the time if date is on today | ||||
|             if(daysAgo < 1){ | ||||
|                 /* Translators: Time in 24h format */ | ||||
|                 format = _("%l\u2236%M %p"); | ||||
|             } | ||||
|             // Show the word "Yesterday" and time if date is on yesterday | ||||
|             else if(daysAgo <2){ | ||||
|                 /* Translators: this is the word "Yesterday" followed by a | ||||
|                  time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("Yesterday, %l\u2236%M %p"); | ||||
|             } | ||||
|             // Show a week day and time if date is in the last week | ||||
|             else if (daysAgo < 7) { | ||||
|                 /* Translators: this is the week day name followed by a time | ||||
|                  string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%A, %l\u2236%M %p"); | ||||
|  | ||||
|                 } else if (date.getYear() == now.getYear()) { | ||||
|                     /* Translators: this is the month name and day number | ||||
|                      followed by a time string in 12h format. | ||||
|                      i.e. "May 25, 2:30 pm" */ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%B %d, %l\u2236%M %p"); | ||||
|                 } else { | ||||
|                     /* Translators: this is the month name, day number, year | ||||
|                      number followed by a time string in 12h format. | ||||
|                      i.e. "May 25 2012, 2:30 pm"*/ | ||||
|                     // xgettext:no-c-format | ||||
|                     format = _("%B %d %Y, %l\u2236%M %p"); | ||||
|                 } | ||||
|                 break; | ||||
|             } else if (date.getYear() == now.getYear()) { | ||||
|                 /* Translators: this is the month name and day number | ||||
|                  followed by a time string in 12h format. | ||||
|                  i.e. "May 25, 2:30 pm" */ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%B %d, %l\u2236%M %p"); | ||||
|             } else { | ||||
|                 /* Translators: this is the month name, day number, year | ||||
|                  number followed by a time string in 12h format. | ||||
|                  i.e. "May 25 2012, 2:30 pm"*/ | ||||
|                 // xgettext:no-c-format | ||||
|                 format = _("%B %d %Y, %l\u2236%M %p"); | ||||
|             } | ||||
|         } | ||||
|         return date.toLocaleFormat(format); | ||||
|     }, | ||||
| @@ -1054,7 +871,7 @@ const ChatNotification = new Lang.Class({ | ||||
|                                    group: 'meta', | ||||
|                                    styles: ['chat-meta-message'] }); | ||||
|  | ||||
|         this.update(newAlias, null, { customContent: true }); | ||||
|         this.update(newAlias); | ||||
|  | ||||
|         this._filterMessages(); | ||||
|     }, | ||||
| @@ -1100,365 +917,11 @@ const ChatNotification = new Lang.Class({ | ||||
|             this._composingTimeoutId = Mainloop.timeout_add_seconds( | ||||
|                 COMPOSING_STOP_TIMEOUT, | ||||
|                 Lang.bind(this, this._composingStopTimeout)); | ||||
|             GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout'); | ||||
|         } else { | ||||
|             this.source.setChatState(Tp.ChannelChatState.ACTIVE); | ||||
|         } | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const ApproverSource = new Lang.Class({ | ||||
|     Name: 'ApproverSource', | ||||
|     Extends: MessageTray.Source, | ||||
|  | ||||
|     _init: function(dispatchOp, text, gicon) { | ||||
|         this._gicon = gicon; | ||||
|  | ||||
|         this.parent(text); | ||||
|  | ||||
|         this._dispatchOp = dispatchOp; | ||||
|  | ||||
|         // Destroy the source if the channel dispatch operation is invalidated | ||||
|         // as we can't approve any more. | ||||
|         this._invalidId = dispatchOp.connect('invalidated', | ||||
|                                              Lang.bind(this, function(domain, code, msg) { | ||||
|             this.destroy(); | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|     _createPolicy: function() { | ||||
|         return new MessageTray.NotificationApplicationPolicy('empathy'); | ||||
|     }, | ||||
|  | ||||
|     destroy: function() { | ||||
|         if (this._invalidId != 0) { | ||||
|             this._dispatchOp.disconnect(this._invalidId); | ||||
|             this._invalidId = 0; | ||||
|         } | ||||
|  | ||||
|         this.parent(); | ||||
|     }, | ||||
|  | ||||
|     getIcon: function() { | ||||
|         return this._gicon; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const RoomInviteNotification = new Lang.Class({ | ||||
|     Name: 'RoomInviteNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source, dispatchOp, channel, inviter) { | ||||
|         this.parent(source, | ||||
|                     /* translators: argument is a room name like | ||||
|                      * room@jabber.org for example. */ | ||||
|                     _("Invitation to %s").format(channel.get_identifier()), | ||||
|                     null, | ||||
|                     { customContent: true }); | ||||
|         this.setResident(true); | ||||
|  | ||||
|         /* translators: first argument is the name of a contact and the second | ||||
|          * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
|          * for example. */ | ||||
|         this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier())); | ||||
|  | ||||
|         this.addAction(_("Decline"), Lang.bind(this, function() { | ||||
|             dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) { | ||||
|                 src.leave_channels_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|         this.addAction(_("Accept"), Lang.bind(this, function() { | ||||
|             dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) { | ||||
|                 src.handle_with_time_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| // Audio Video | ||||
| const AudioVideoNotification = new Lang.Class({ | ||||
|     Name: 'AudioVideoNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source, dispatchOp, channel, contact, isVideo) { | ||||
|         let title = ''; | ||||
|  | ||||
|         if (isVideo) | ||||
|              /* translators: argument is a contact name like Alice for example. */ | ||||
|             title = _("Video call from %s").format(contact.get_alias()); | ||||
|         else | ||||
|              /* translators: argument is a contact name like Alice for example. */ | ||||
|             title = _("Call from %s").format(contact.get_alias()); | ||||
|  | ||||
|         this.parent(source, title, null, { customContent: true }); | ||||
|         this.setResident(true); | ||||
|  | ||||
|         this.setUrgency(MessageTray.Urgency.CRITICAL); | ||||
|  | ||||
|         this.addAction(_("Decline"), Lang.bind(this, function() { | ||||
|             dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) { | ||||
|                 src.leave_channels_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|         /* translators: this is a button label (verb), not a noun */ | ||||
|         this.addAction(_("Answer"), Lang.bind(this, function() { | ||||
|             dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) { | ||||
|                 src.handle_with_time_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| // File Transfer | ||||
| const FileTransferNotification = new Lang.Class({ | ||||
|     Name: 'FileTransferNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source, dispatchOp, channel, contact) { | ||||
|         this.parent(source, | ||||
|                     /* To translators: The first parameter is | ||||
|                      * the contact's alias and the second one is the | ||||
|                      * file name. The string will be something | ||||
|                      * like: "Alice is sending you test.ogg" | ||||
|                      */ | ||||
|                     _("%s is sending you %s").format(contact.get_alias(), | ||||
|                                                      channel.get_filename()), | ||||
|                     null, | ||||
|                     { customContent: true }); | ||||
|         this.setResident(true); | ||||
|  | ||||
|         this.addAction(_("Decline"), Lang.bind(this, function() { | ||||
|             dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) { | ||||
|                 src.leave_channels_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|         this.addAction(_("Accept"), Lang.bind(this, function() { | ||||
|             dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) { | ||||
|                 src.handle_with_time_finish(result); | ||||
|             }); | ||||
|             this.destroy(); | ||||
|         })); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| // Subscription request | ||||
| const SubscriptionRequestNotification = new Lang.Class({ | ||||
|     Name: 'SubscriptionRequestNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source, contact) { | ||||
|         this.parent(source, | ||||
|                     /* To translators: The parameter is the contact's alias */ | ||||
|                     _("%s would like permission to see when you are online").format(contact.get_alias()), | ||||
|                     null, { customContent: true }); | ||||
|  | ||||
|         this._contact = contact; | ||||
|         this._connection = contact.get_connection(); | ||||
|  | ||||
|         let layout = new St.BoxLayout({ vertical: false }); | ||||
|  | ||||
|         // Display avatar | ||||
|         let iconBox = new St.Bin({ style_class: 'avatar-box' }); | ||||
|         iconBox._size = 48; | ||||
|  | ||||
|         let textureCache = St.TextureCache.get_default(); | ||||
|         let file = contact.get_avatar_file(); | ||||
|  | ||||
|         if (file) { | ||||
|             let uri = file.get_uri(); | ||||
|             let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; | ||||
|             iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor); | ||||
|         } | ||||
|         else { | ||||
|             iconBox.child = new St.Icon({ icon_name: 'avatar-default', | ||||
|                                           icon_size: iconBox._size }); | ||||
|         } | ||||
|  | ||||
|         layout.add(iconBox); | ||||
|  | ||||
|         // subscription request message | ||||
|         let label = new St.Label({ style_class: 'subscription-message', | ||||
|                                    text: contact.get_publish_request() }); | ||||
|  | ||||
|         layout.add(label); | ||||
|  | ||||
|         this.addActor(layout); | ||||
|  | ||||
|         this.addAction(_("Decline"), Lang.bind(this, function() { | ||||
|             contact.remove_async(function(src, result) { | ||||
|                 src.remove_finish(result); | ||||
|             }); | ||||
|         })); | ||||
|         this.addAction(_("Accept"), Lang.bind(this, function() { | ||||
|             // Authorize the contact and request to see his status as well | ||||
|             contact.authorize_publication_async(function(src, result) { | ||||
|                 src.authorize_publication_finish(result); | ||||
|             }); | ||||
|  | ||||
|             contact.request_subscription_async('', function(src, result) { | ||||
|                 src.request_subscription_finish(result); | ||||
|             }); | ||||
|         })); | ||||
|  | ||||
|         this._changedId = contact.connect('subscription-states-changed', | ||||
|             Lang.bind(this, this._subscriptionStatesChangedCb)); | ||||
|         this._invalidatedId = this._connection.connect('invalidated', | ||||
|             Lang.bind(this, this.destroy)); | ||||
|     }, | ||||
|  | ||||
|     destroy: function() { | ||||
|         if (this._changedId != 0) { | ||||
|             this._contact.disconnect(this._changedId); | ||||
|             this._changedId = 0; | ||||
|         } | ||||
|  | ||||
|         if (this._invalidatedId != 0) { | ||||
|             this._connection.disconnect(this._invalidatedId); | ||||
|             this._invalidatedId = 0; | ||||
|         } | ||||
|  | ||||
|         this.parent(); | ||||
|     }, | ||||
|  | ||||
|     _subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) { | ||||
|         // Destroy the notification if the subscription request has been | ||||
|         // answered | ||||
|         if (publish != Tp.SubscriptionState.ASK) | ||||
|             this.destroy(); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| // Messages from empathy/libempathy/empathy-utils.c | ||||
| // create_errors_to_message_hash() | ||||
|  | ||||
| /* Translator note: these should be the same messages that are | ||||
|  * used in Empathy, so just copy and paste from there. */ | ||||
| let _connectionErrorMessages = {}; | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.NETWORK_ERROR)] | ||||
|   = _("Network error"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.AUTHENTICATION_FAILED)] | ||||
|   = _("Authentication failed"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_ERROR)] | ||||
|   = _("Encryption error"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_PROVIDED)] | ||||
|   = _("Certificate not provided"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_UNTRUSTED)] | ||||
|   = _("Certificate untrusted"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_EXPIRED)] | ||||
|   = _("Certificate expired"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_ACTIVATED)] | ||||
|   = _("Certificate not activated"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_HOSTNAME_MISMATCH)] | ||||
|   = _("Certificate hostname mismatch"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_FINGERPRINT_MISMATCH)] | ||||
|   = _("Certificate fingerprint mismatch"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_SELF_SIGNED)] | ||||
|   = _("Certificate self-signed"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CANCELLED)] | ||||
|   = _("Status is set to offline"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_NOT_AVAILABLE)] | ||||
|   = _("Encryption is not available"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INVALID)] | ||||
|   = _("Certificate is invalid"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REFUSED)] | ||||
|   = _("Connection has been refused"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_FAILED)] | ||||
|   = _("Connection can't be established"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_LOST)] | ||||
|   = _("Connection has been lost"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ALREADY_CONNECTED)] | ||||
|   = _("This account is already connected to the server"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REPLACED)] | ||||
|   = _("Connection has been replaced by a new connection using the same resource"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.REGISTRATION_EXISTS)] | ||||
|   = _("The account already exists on the server"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.SERVICE_BUSY)] | ||||
|   = _("Server is currently too busy to handle the connection"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_REVOKED)] | ||||
|   = _("Certificate has been revoked"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INSECURE)] | ||||
|   = _("Certificate uses an insecure cipher algorithm or is cryptographically weak"); | ||||
| _connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)] | ||||
|   = _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"); | ||||
| _connectionErrorMessages['org.freedesktop.DBus.Error.NoReply'] | ||||
|   = _("Internal error"); | ||||
|  | ||||
| const AccountNotification = new Lang.Class({ | ||||
|     Name: 'AccountNotification', | ||||
|     Extends: MessageTray.Notification, | ||||
|  | ||||
|     _init: function(source, account, connectionError) { | ||||
|         this.parent(source, | ||||
|                     /* translators: argument is the account name, like | ||||
|                      * name@jabber.org for example. */ | ||||
|                     _("Unable to connect to %s").format(account.get_display_name()), | ||||
|                     this._getMessage(connectionError)); | ||||
|  | ||||
|         this._account = account; | ||||
|  | ||||
|         this.addAction(_("View account"), Lang.bind(this, function() { | ||||
|             let cmd = 'empathy-accounts --select-account=' + | ||||
|                 account.get_path_suffix(); | ||||
|             let app_info = Gio.app_info_create_from_commandline(cmd, null, 0); | ||||
|             app_info.launch([], global.create_app_launch_context(0, -1)); | ||||
|         })); | ||||
|  | ||||
|         this._enabledId = account.connect('notify::enabled', | ||||
|                                           Lang.bind(this, function() { | ||||
|                                               if (!account.is_enabled()) | ||||
|                                                   this.destroy(); | ||||
|                                           })); | ||||
|  | ||||
|         this._invalidatedId = account.connect('invalidated', | ||||
|                                               Lang.bind(this, this.destroy)); | ||||
|  | ||||
|         this._connectionStatusId = account.connect('notify::connection-status', | ||||
|             Lang.bind(this, function() { | ||||
|                 let status = account.connection_status; | ||||
|                 if (status == Tp.ConnectionStatus.CONNECTED) { | ||||
|                     this.destroy(); | ||||
|                 } else if (status == Tp.ConnectionStatus.DISCONNECTED) { | ||||
|                     let connectionError = account.connection_error; | ||||
|  | ||||
|                     if (connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED)) | ||||
|                         this.destroy(); | ||||
|                     else | ||||
|                         this.update(this.title, this._getMessage(connectionError)); | ||||
|                 } | ||||
|             })); | ||||
|     }, | ||||
|  | ||||
|     _getMessage: function(connectionError) { | ||||
|         let message; | ||||
|         if (connectionError in _connectionErrorMessages) { | ||||
|             message = _connectionErrorMessages[connectionError]; | ||||
|         } else { | ||||
|             message = _("Unknown reason"); | ||||
|         } | ||||
|         return message; | ||||
|     }, | ||||
|  | ||||
|     destroy: function() { | ||||
|         if (this._enabledId != 0) { | ||||
|             this._account.disconnect(this._enabledId); | ||||
|             this._enabledId = 0; | ||||
|         } | ||||
|  | ||||
|         if (this._invalidatedId != 0) { | ||||
|             this._account.disconnect(this._invalidatedId); | ||||
|             this._invalidatedId = 0; | ||||
|         } | ||||
|  | ||||
|         if (this._connectionStatusId != 0) { | ||||
|             this._account.disconnect(this._connectionStatusId); | ||||
|             this._connectionStatusId = 0; | ||||
|         } | ||||
|  | ||||
|         this.parent(); | ||||
|     } | ||||
| }); | ||||
| const Component = TelepathyClient; | ||||
|   | ||||
| @@ -87,7 +87,7 @@ const CtrlAltTabManager = new Lang.Class({ | ||||
|         if (Main.sessionMode.hasWindows && !Main.overview.visible) { | ||||
|             let screen = global.screen; | ||||
|             let display = screen.get_display(); | ||||
|             let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ()); | ||||
|             let windows = display.get_tab_list(Meta.TabList.DOCKS, screen.get_active_workspace ()); | ||||
|             let windowTracker = Shell.WindowTracker.get_default(); | ||||
|             let textureCache = St.TextureCache.get_default(); | ||||
|             for (let i = 0; i < windows.length; i++) { | ||||
| @@ -165,6 +165,10 @@ const CtrlAltTabPopup = new Lang.Class({ | ||||
|             this._select(this._previous()); | ||||
|         else if (keysym == Clutter.Right) | ||||
|             this._select(this._next()); | ||||
|         else | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
|  | ||||
|     _finish : function(time) { | ||||
|   | ||||
| @@ -582,6 +582,7 @@ const Dash = new Lang.Class({ | ||||
|                         this._showLabelTimeoutId = 0; | ||||
|                         return GLib.SOURCE_REMOVE; | ||||
|                     })); | ||||
|                 GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel'); | ||||
|                 if (this._resetHoverTimeoutId > 0) { | ||||
|                     Mainloop.source_remove(this._resetHoverTimeoutId); | ||||
|                     this._resetHoverTimeoutId = 0; | ||||
| @@ -599,6 +600,7 @@ const Dash = new Lang.Class({ | ||||
|                         this._resetHoverTimeoutId = 0; | ||||
|                         return GLib.SOURCE_REMOVE; | ||||
|                     })); | ||||
|                 GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing'); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|   | ||||
| @@ -63,8 +63,11 @@ const DateMenuButton = new Lang.Class({ | ||||
|         hbox.add(vbox); | ||||
|  | ||||
|         // Date | ||||
|         // Having the ability to go to the current date if the user is already | ||||
|         // on the current date can be confusing. So don't make the button reactive | ||||
|         // until the selected date changes. | ||||
|         this._date = new St.Button({ style_class: 'datemenu-date-label', | ||||
|                                      can_focus: true, | ||||
|                                      reactive: false | ||||
|                                    }); | ||||
|         this._date.connect('clicked', | ||||
|                            Lang.bind(this, function() { | ||||
| @@ -82,6 +85,9 @@ const DateMenuButton = new Lang.Class({ | ||||
|                                   // and the calender makes those dates unclickable when instantiated with | ||||
|                                   // a null event source | ||||
|                                    this._eventList.setDate(date); | ||||
|  | ||||
|                                    // Make the button reactive only if the selected date is not the current date. | ||||
|                                    this._date.can_focus = this._date.reactive = !this._isToday(date) | ||||
|                                })); | ||||
|         vbox.add(this._calendar.actor); | ||||
|  | ||||
| @@ -132,6 +138,13 @@ const DateMenuButton = new Lang.Class({ | ||||
|         this._sessionUpdated(); | ||||
|     }, | ||||
|  | ||||
|     _isToday: function(date) { | ||||
|         let now = new Date(); | ||||
|         return now.getYear() == date.getYear() && | ||||
|                now.getMonth() == date.getMonth() && | ||||
|                now.getDay() == date.getDay(); | ||||
|     }, | ||||
|  | ||||
|     _appInstalledChanged: function() { | ||||
|         this._calendarApp = undefined; | ||||
|         this._updateEventsVisibility(); | ||||
|   | ||||
| @@ -395,6 +395,7 @@ const _Draggable = new Lang.Class({ | ||||
|  | ||||
|         this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT, | ||||
|                                             Lang.bind(this, this._updateDragHover)); | ||||
|         GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover'); | ||||
|     }, | ||||
|  | ||||
|     _updateDragPosition : function (event) { | ||||
|   | ||||
| @@ -551,6 +551,7 @@ const EndSessionDialog = new Lang.Class({ | ||||
|  | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|             })); | ||||
|         GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm'); | ||||
|     }, | ||||
|  | ||||
|     _stopTimer: function() { | ||||
|   | ||||
| @@ -47,8 +47,11 @@ function _patchLayoutClass(layoutClass, styleProps) { | ||||
|         layoutClass.prototype.hookup_style = function(container) { | ||||
|             container.connect('style-changed', Lang.bind(this, function() { | ||||
|                 let node = container.get_theme_node(); | ||||
|                 for (let prop in styleProps) | ||||
|                     this[prop] = node.get_length(styleProps[prop]); | ||||
|                 for (let prop in styleProps) { | ||||
|                     let [found, length] = node.lookup_length(styleProps[prop], false); | ||||
|                     if (found) | ||||
|                         this[prop] = length; | ||||
|                 } | ||||
|             })); | ||||
|         }; | ||||
|     layoutClass.prototype.child_set = function(actor, props) { | ||||
|   | ||||
| @@ -645,6 +645,10 @@ const PaginatedIconGrid = new Lang.Class({ | ||||
|         return this._nPages; | ||||
|     }, | ||||
|  | ||||
|     getPageHeight: function() { | ||||
|         return this._availableHeightPerPageForItems(); | ||||
|     }, | ||||
|  | ||||
|     getPageY: function(pageNumber) { | ||||
|         if (!this._nPages) | ||||
|             return 0; | ||||
|   | ||||
| @@ -266,12 +266,14 @@ const Keyboard = new Lang.Class({ | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (!this._showIdleId) | ||||
|             this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, | ||||
|                                              Lang.bind(this, function() { | ||||
|                                                  this.Show(time); | ||||
|                                                  return GLib.SOURCE_REMOVE; | ||||
|                                              })); | ||||
|         if (!this._showIdleId) { | ||||
|           this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, | ||||
|                                            Lang.bind(this, function() { | ||||
|                                                this.Show(time); | ||||
|                                                return GLib.SOURCE_REMOVE; | ||||
|                                            })); | ||||
|           GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.Show'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _createLayersForGroup: function (gname) { | ||||
| @@ -500,6 +502,7 @@ const Keyboard = new Lang.Class({ | ||||
|                                                        this._show(monitor); | ||||
|                                                        return GLib.SOURCE_REMOVE; | ||||
|                                                    })); | ||||
|         GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer'); | ||||
|     }, | ||||
|  | ||||
|     _show: function(monitor) { | ||||
| @@ -526,6 +529,7 @@ const Keyboard = new Lang.Class({ | ||||
|                                                        this._hide(); | ||||
|                                                        return GLib.SOURCE_REMOVE; | ||||
|                                                    })); | ||||
|         GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer'); | ||||
|     }, | ||||
|  | ||||
|     _hide: function() { | ||||
|   | ||||
| @@ -597,15 +597,13 @@ const LayoutManager = new Lang.Class({ | ||||
|                                               reactive: true }); | ||||
|         this.addChrome(this._coverPane); | ||||
|  | ||||
|         if (Meta.is_restart()) { | ||||
|             // On restart, we don't do an animation | ||||
|         } else if (Main.sessionMode.isGreeter) { | ||||
|         if (Main.sessionMode.isGreeter) { | ||||
|             this.panelBox.translation_y = -this.panelBox.height; | ||||
|         } else { | ||||
|             this._updateBackgrounds(); | ||||
|  | ||||
|             // We need to force an update of the regions now before we scale | ||||
|             // the UI group to get the coorect allocation for the struts. | ||||
|             // the UI group to get the correct allocation for the struts. | ||||
|             this._updateRegions(); | ||||
|  | ||||
|             this.trayBox.hide(); | ||||
| @@ -630,16 +628,15 @@ const LayoutManager = new Lang.Class({ | ||||
|         // until the event loop is uncontended and idle. | ||||
|         // This helps to prevent us from running the animation | ||||
|         // when the system is bogged down | ||||
|         GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() { | ||||
|         let id = GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() { | ||||
|             this._startupAnimation(); | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         })); | ||||
|         GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation'); | ||||
|     }, | ||||
|  | ||||
|     _startupAnimation: function() { | ||||
|         if (Meta.is_restart()) | ||||
|             this._startupAnimationComplete(); | ||||
|         else if (Main.sessionMode.isGreeter) | ||||
|         if (Main.sessionMode.isGreeter) | ||||
|             this._startupAnimationGreeter(); | ||||
|         else | ||||
|             this._startupAnimationSession(); | ||||
|   | ||||
| @@ -843,9 +843,10 @@ const LookingGlass = new Lang.Class({ | ||||
|            System.gc(); | ||||
|            this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () { | ||||
|                 gcIcon.icon_name = 'gnome-fs-trash-full'; | ||||
|                 Mainloop.source_remove(this._timeoutId); | ||||
|                 this._timeoutId = 0; | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|            })); | ||||
|            GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] gcIcon.icon_name = \'gnome-fs-trash-full\''); | ||||
|            return Clutter.EVENT_PROPAGATE; | ||||
|         })); | ||||
|  | ||||
|   | ||||
| @@ -18,7 +18,6 @@ const ExtensionSystem = imports.ui.extensionSystem; | ||||
| const ExtensionDownloader = imports.ui.extensionDownloader; | ||||
| const Keyboard = imports.ui.keyboard; | ||||
| const MessageTray = imports.ui.messageTray; | ||||
| const ModalDialog = imports.ui.modalDialog; | ||||
| const OsdWindow = imports.ui.osdWindow; | ||||
| const Overview = imports.ui.overview; | ||||
| const Panel = imports.ui.panel; | ||||
| @@ -44,6 +43,7 @@ const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); | ||||
|  | ||||
| const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; | ||||
| const STICKY_KEYS_ENABLE = 'stickykeys-enable'; | ||||
| const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a'; | ||||
|  | ||||
| let componentManager = null; | ||||
| let panel = null; | ||||
| @@ -56,7 +56,7 @@ let screenShield = null; | ||||
| let notificationDaemon = null; | ||||
| let windowAttentionHandler = null; | ||||
| let ctrlAltTabManager = null; | ||||
| let osdWindow = null; | ||||
| let osdWindowManager = null; | ||||
| let sessionMode = null; | ||||
| let shellDBusService = null; | ||||
| let shellMountOpDBusService = null; | ||||
| @@ -104,9 +104,6 @@ function start() { | ||||
|     global.logError = window.log; | ||||
|     global.log = window.log; | ||||
|  | ||||
|     if (!Meta.is_wayland_compositor) | ||||
|         Meta.is_wayland_compositor = function () { return false; }; | ||||
|  | ||||
|     // Chain up async errors reported from C | ||||
|     global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); }); | ||||
|  | ||||
| @@ -159,7 +156,7 @@ function _initializeUI() { | ||||
|     screencastService = new Screencast.ScreencastService(); | ||||
|     xdndHandler = new XdndHandler.XdndHandler(); | ||||
|     ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); | ||||
|     osdWindow = new OsdWindow.OsdWindow(); | ||||
|     osdWindowManager = new OsdWindow.OsdWindowManager(); | ||||
|     overview = new Overview.Overview(); | ||||
|     wm = new WindowManager.WindowManager(); | ||||
|     magnifier = new Magnifier.Magnifier(); | ||||
| @@ -183,16 +180,6 @@ function _initializeUI() { | ||||
|             overview.toggle(); | ||||
|     })); | ||||
|  | ||||
|     global.display.connect('show-restart-message', function(display, message) { | ||||
|         showRestartMessage(message); | ||||
|         return true; | ||||
|     }); | ||||
|  | ||||
|     global.display.connect('restart', function() { | ||||
|         global.reexec_self(); | ||||
|         return true; | ||||
|     }); | ||||
|  | ||||
|     // Provide the bus object for gnome-session to | ||||
|     // initiate logouts. | ||||
|     EndSessionDialog.init(); | ||||
| @@ -202,8 +189,6 @@ function _initializeUI() { | ||||
|  | ||||
|     _startDate = new Date(); | ||||
|  | ||||
|     log('GNOME Shell started at ' + _startDate); | ||||
|  | ||||
|     let perfModuleName = GLib.getenv("SHELL_PERF_MODULE"); | ||||
|     if (perfModuleName) { | ||||
|         let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT"); | ||||
| @@ -227,6 +212,17 @@ function _initializeUI() { | ||||
|                               if (screenShield) { | ||||
|                                   screenShield.lockIfWasLocked(); | ||||
|                               } | ||||
|                               if (LoginManager.haveSystemd() && | ||||
|                                   sessionMode.currentMode != 'gdm' && | ||||
|                                   sessionMode.currentMode != 'initial-setup') { | ||||
|                                   // Do not import globally to not depend | ||||
|                                   // on systemd on non-systemd systems. | ||||
|                                   let GSystem = imports.gi.GSystem; | ||||
|                                   GSystem.log_structured_print('GNOME Shell started at ' + _startDate, | ||||
|                                                                ['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]); | ||||
|                               } else { | ||||
|                                   log('GNOME Shell started at ' + _startDate); | ||||
|                               } | ||||
|                           }); | ||||
| } | ||||
|  | ||||
| @@ -622,30 +618,6 @@ function queueDeferredWork(workId) { | ||||
|             _deferredTimeoutId = 0; | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         }); | ||||
|         GLib.Source.set_name_by_id(_deferredTimeoutId, '[gnome-shell] _runAllDeferredWork'); | ||||
|     } | ||||
| } | ||||
|  | ||||
| const RestartMessage = new Lang.Class({ | ||||
|     Name: 'RestartMessage', | ||||
|     Extends: ModalDialog.ModalDialog, | ||||
|  | ||||
|     _init : function(message) { | ||||
|         this.parent({ shellReactive: true, | ||||
|                       styleClass: 'restart-message', | ||||
|                       shouldFadeIn: false, | ||||
|                       destroyOnClose: true }); | ||||
|  | ||||
|         let label = new St.Label({ text: message }); | ||||
|  | ||||
|         this.contentLayout.add(label, { x_fill: false, | ||||
|                                         y_fill: false, | ||||
|                                         x_align: St.Align.MIDDLE, | ||||
|                                         y_align: St.Align.MIDDLE }); | ||||
|         this.buttonLayout.hide(); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| function showRestartMessage(message) { | ||||
|     let restartMessage = new RestartMessage(message); | ||||
|     restartMessage.open(); | ||||
| } | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -43,7 +43,6 @@ const ModalDialog = new Lang.Class({ | ||||
|                                         styleClass: null, | ||||
|                                         keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL, | ||||
|                                         shouldFadeIn: true, | ||||
|                                         shouldFadeOut: true, | ||||
|                                         destroyOnClose: true }); | ||||
|  | ||||
|         this.state = State.CLOSED; | ||||
| @@ -51,7 +50,6 @@ const ModalDialog = new Lang.Class({ | ||||
|         this._keybindingMode = params.keybindingMode; | ||||
|         this._shellReactive = params.shellReactive; | ||||
|         this._shouldFadeIn = params.shouldFadeIn; | ||||
|         this._shouldFadeOut = params.shouldFadeOut; | ||||
|         this._destroyOnClose = params.destroyOnClose; | ||||
|  | ||||
|         this._group = new St.Widget({ visible: false, | ||||
| @@ -309,15 +307,6 @@ const ModalDialog = new Lang.Class({ | ||||
|         return true; | ||||
|     }, | ||||
|  | ||||
|     _closeComplete: function() { | ||||
|         this.state = State.CLOSED; | ||||
|         this._group.hide(); | ||||
|         this.emit('closed'); | ||||
|  | ||||
|         if (this._destroyOnClose) | ||||
|             this.destroy(); | ||||
|     }, | ||||
|  | ||||
|     close: function(timestamp) { | ||||
|         if (this.state == State.CLOSED || this.state == State.CLOSING) | ||||
|             return; | ||||
| @@ -326,16 +315,20 @@ const ModalDialog = new Lang.Class({ | ||||
|         this.popModal(timestamp); | ||||
|         this._savedKeyFocus = null; | ||||
|  | ||||
|         if (this._shouldFadeOut) | ||||
|             Tweener.addTween(this._group, | ||||
|                              { opacity: 0, | ||||
|                                time: OPEN_AND_CLOSE_TIME, | ||||
|                                transition: 'easeOutQuad', | ||||
|                                onComplete: Lang.bind(this, | ||||
|                                                      this._closeComplete) | ||||
|                              }) | ||||
|         else | ||||
|             this._closeComplete(); | ||||
|         Tweener.addTween(this._group, | ||||
|                          { opacity: 0, | ||||
|                            time: OPEN_AND_CLOSE_TIME, | ||||
|                            transition: 'easeOutQuad', | ||||
|                            onComplete: Lang.bind(this, | ||||
|                                function() { | ||||
|                                    this.state = State.CLOSED; | ||||
|                                    this._group.hide(); | ||||
|                                    this.emit('closed'); | ||||
|  | ||||
|                                    if (this._destroyOnClose) | ||||
|                                        this.destroy(); | ||||
|                                }) | ||||
|                          }); | ||||
|     }, | ||||
|  | ||||
|     // Drop modal status without closing the dialog; this makes the | ||||
|   | ||||
| @@ -91,21 +91,6 @@ const rewriteRules = { | ||||
|     ] | ||||
| }; | ||||
|  | ||||
| const STANDARD_TRAY_ICON_IMPLEMENTATIONS = { | ||||
|     'bluetooth-applet': 'bluetooth', | ||||
|     'gnome-volume-control-applet': 'volume', // renamed to gnome-sound-applet | ||||
|                                              // when moved to control center | ||||
|     'gnome-sound-applet': 'volume', | ||||
|     'nm-applet': 'network', | ||||
|     'gnome-power-manager': 'battery', | ||||
|     'keyboard': 'keyboard', | ||||
|     'a11y-keyboard': 'a11y', | ||||
|     'kbd-scrolllock': 'keyboard', | ||||
|     'kbd-numlock': 'keyboard', | ||||
|     'kbd-capslock': 'keyboard', | ||||
|     'ibus-ui-gtk': 'keyboard' | ||||
| }; | ||||
|  | ||||
| const FdoNotificationDaemon = new Lang.Class({ | ||||
|     Name: 'FdoNotificationDaemon', | ||||
|  | ||||
| @@ -244,11 +229,12 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|             // Ignore replacesId since we already sent back a | ||||
|             // NotificationClosed for that id. | ||||
|             id = this._nextNotificationId++; | ||||
|             Mainloop.idle_add(Lang.bind(this, | ||||
|                                         function () { | ||||
|                                             this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED); | ||||
|                                             return GLib.SOURCE_REMOVE; | ||||
|                                         })); | ||||
|             let idle_id = Mainloop.idle_add(Lang.bind(this, | ||||
|                                             function () { | ||||
|                                                 this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED); | ||||
|                                                 return GLib.SOURCE_REMOVE; | ||||
|                                             })); | ||||
|             GLib.Source.set_name_by_id(idle_id, '[gnome-shell] this._emitNotificationClosed'); | ||||
|             return invocation.return_value(GLib.Variant.new('(u)', [id])); | ||||
|         } | ||||
|  | ||||
| @@ -333,13 +319,14 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _makeButton: function(id, label, useActionIcons) { | ||||
|         let button = new St.Button({ can_focus: true }); | ||||
|         let button = new St.Button({ can_focus: true, | ||||
|                                      x_expand: true, | ||||
|                                      style_class: 'notification-button' }); | ||||
|         let iconName = id.endsWith('-symbolic') ? id : id + '-symbolic'; | ||||
|  | ||||
|         if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) { | ||||
|             button.add_style_class_name('notification-icon-button'); | ||||
|             button.child = new St.Icon({ icon_name: iconName }); | ||||
|             button.child = new St.Icon({ icon_name: iconName, icon_size: 16 }); | ||||
|         } else { | ||||
|             button.add_style_class_name('notification-button'); | ||||
|             button.label = label; | ||||
|         } | ||||
|         return button; | ||||
| @@ -378,8 +365,6 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|         let gicon = this._iconForNotificationData(icon, hints); | ||||
|         let gimage = this._imageForNotificationData(hints); | ||||
|  | ||||
|         let image = null; | ||||
|  | ||||
|         // If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon | ||||
|         // and don't show a large image. There are currently many applications that use | ||||
|         // notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets | ||||
| @@ -388,10 +373,7 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|         // So the logic here does the right thing for this case. If both an icon and either | ||||
|         // one of 'image-data' or 'image-path' are specified, we show both an icon and | ||||
|         // a large image. | ||||
|         if (gicon && gimage) | ||||
|             image = new St.Icon({ gicon: gimage, | ||||
|                                   icon_size: notification.IMAGE_SIZE }); | ||||
|         else if (!gicon && gimage) | ||||
|         if (!gicon && gimage) | ||||
|             gicon = gimage; | ||||
|         else if (!gicon) | ||||
|             gicon = this._fallbackIconForNotificationData(hints); | ||||
| @@ -401,7 +383,6 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|                                              clear: true, | ||||
|                                              soundFile: hints['sound-file'], | ||||
|                                              soundName: hints['sound-name'] }); | ||||
|         notification.setImage(image); | ||||
|  | ||||
|         let hasDefaultAction = false; | ||||
|  | ||||
| @@ -441,7 +422,6 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|                 notification.setUrgency(MessageTray.Urgency.CRITICAL); | ||||
|                 break; | ||||
|         } | ||||
|         notification.setResident(hints.resident == true); | ||||
|         // 'transient' is a reserved keyword in JS, so we have to retrieve the value | ||||
|         // of the 'transient' hint with hints['transient'] rather than hints.transient | ||||
|         notification.setTransient(hints['transient'] == true); | ||||
| @@ -469,7 +449,6 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|             'body-markup', | ||||
|             // 'icon-multi', | ||||
|             'icon-static', | ||||
|             'persistence', | ||||
|             'sound', | ||||
|         ]; | ||||
|     }, | ||||
| @@ -491,7 +470,7 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|         for (let i = 0; i < this._sources.length; i++) { | ||||
|             let source = this._sources[i]; | ||||
|             if (source.app == tracker.focus_app) { | ||||
|                 source.destroyNonResidentNotifications(); | ||||
|                 source.destroyNotifications(); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
| @@ -508,10 +487,6 @@ const FdoNotificationDaemon = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onTrayIconAdded: function(o, icon) { | ||||
|         let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : ''; | ||||
|         if (STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass] !== undefined) | ||||
|             return; | ||||
|  | ||||
|         let source = this._getSource(icon.title || icon.wm_class || C_("program", "Unknown"), icon.pid, null, null, icon); | ||||
|     }, | ||||
|  | ||||
| @@ -583,7 +558,7 @@ const FdoNotificationDaemonSource = new Lang.Class({ | ||||
|             this.iconUpdated(); | ||||
|  | ||||
|         let tracker = Shell.WindowTracker.get_default(); | ||||
|         if (notification.resident && this.app && tracker.focus_app == this.app) | ||||
|         if (this.app && tracker.focus_app == this.app) | ||||
|             this.pushNotification(notification); | ||||
|         else | ||||
|             this.notify(notification); | ||||
| @@ -650,7 +625,7 @@ const FdoNotificationDaemonSource = new Lang.Class({ | ||||
|  | ||||
|     open: function() { | ||||
|         this.openApp(); | ||||
|         this.destroyNonResidentNotifications(); | ||||
|         this.destroyNotifications(); | ||||
|     }, | ||||
|  | ||||
|     _lastNotificationRemoved: function() { | ||||
|   | ||||
| @@ -73,14 +73,17 @@ const LevelBar = new Lang.Class({ | ||||
| const OsdWindow = new Lang.Class({ | ||||
|     Name: 'OsdWindow', | ||||
|  | ||||
|     _init: function() { | ||||
|     _init: function(monitorIndex) { | ||||
|         this._popupSize = 0; | ||||
|         this.actor = new St.Widget({ x_expand: true, | ||||
|                                      y_expand: true, | ||||
|                                      x_align: Clutter.ActorAlign.CENTER, | ||||
|                                      y_align: Clutter.ActorAlign.CENTER }); | ||||
|         this._currentMonitor = undefined; | ||||
|         this.setMonitor (-1); | ||||
|  | ||||
|         this._monitorIndex = monitorIndex; | ||||
|         let constraint = new Layout.MonitorConstraint({ index: monitorIndex }); | ||||
|         this.actor.add_constraint(constraint); | ||||
|  | ||||
|         this._box = new St.BoxLayout({ style_class: 'osd-window', | ||||
|                                        vertical: true }); | ||||
|         this.actor.add_actor(this._box); | ||||
| @@ -109,7 +112,6 @@ const OsdWindow = new Lang.Class({ | ||||
|         Main.layoutManager.connect('monitors-changed', | ||||
|                                    Lang.bind(this, this._monitorsChanged)); | ||||
|         this._monitorsChanged(); | ||||
|  | ||||
|         Main.uiGroup.add_child(this.actor); | ||||
|     }, | ||||
|  | ||||
| @@ -156,6 +158,7 @@ const OsdWindow = new Lang.Class({ | ||||
|             Mainloop.source_remove(this._hideTimeoutId); | ||||
|         this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT, | ||||
|                                                    Lang.bind(this, this._hide)); | ||||
|         GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide'); | ||||
|     }, | ||||
|  | ||||
|     cancel: function() { | ||||
| @@ -188,12 +191,9 @@ const OsdWindow = new Lang.Class({ | ||||
|  | ||||
|     _monitorsChanged: function() { | ||||
|         /* assume 110x110 on a 640x480 display and scale from there */ | ||||
|         let monitor; | ||||
|  | ||||
|         if (this._currentMonitor >= 0) | ||||
|             monitor = Main.layoutManager.monitors[this._currentMonitor]; | ||||
|         else | ||||
|             monitor = Main.layoutManager.primaryMonitor; | ||||
|         let monitor = Main.layoutManager.monitors[this._monitorIndex]; | ||||
|         if (!monitor) | ||||
|             return; // we are about to be removed | ||||
|  | ||||
|         let scalew = monitor.width / 640.0; | ||||
|         let scaleh = monitor.height / 480.0; | ||||
| @@ -222,23 +222,56 @@ const OsdWindow = new Lang.Class({ | ||||
|         // but the theme takes measures in unscaled dimensions | ||||
|         let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; | ||||
|         this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor); | ||||
|     }, | ||||
|  | ||||
|     setMonitor: function(index) { | ||||
|         let constraint; | ||||
|  | ||||
|         if (index < 0) | ||||
|             index = -1; | ||||
|         if (this._currentMonitor == index) | ||||
|             return; | ||||
|  | ||||
|         if (index < 0) | ||||
|             constraint = new Layout.MonitorConstraint({ primary: true }); | ||||
|         else | ||||
|             constraint = new Layout.MonitorConstraint({ index: index }); | ||||
|  | ||||
|         this.actor.clear_constraints(); | ||||
|         this.actor.add_constraint(constraint); | ||||
|         this._currentMonitor = index; | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const OsdWindowManager = new Lang.Class({ | ||||
|     Name: 'OsdWindowManager', | ||||
|  | ||||
|     _init: function() { | ||||
|         this._osdWindows = []; | ||||
|         Main.layoutManager.connect('monitors-changed', | ||||
|                                     Lang.bind(this, this._monitorsChanged)); | ||||
|         this._monitorsChanged(); | ||||
|     }, | ||||
|  | ||||
|     _monitorsChanged: function() { | ||||
|         for (let i = 0; i < Main.layoutManager.monitors.length; i++) { | ||||
|             if (this._osdWindows[i] == undefined) | ||||
|                 this._osdWindows[i] = new OsdWindow(i); | ||||
|         } | ||||
|  | ||||
|         for (let i = Main.layoutManager.monitors.length; i < this._osdWindows.length; i++) { | ||||
|             this._osdWindows[i].actor.destroy(); | ||||
|             this._osdWindows[i] = null; | ||||
|         } | ||||
|  | ||||
|         this._osdWindows.length = Main.layoutManager.monitors.length; | ||||
|     }, | ||||
|  | ||||
|     _showOsdWindow: function(monitorIndex, icon, label, level) { | ||||
|         this._osdWindows[monitorIndex].setIcon(icon); | ||||
|         this._osdWindows[monitorIndex].setLabel(label); | ||||
|         this._osdWindows[monitorIndex].setLevel(level); | ||||
|         this._osdWindows[monitorIndex].show(); | ||||
|     }, | ||||
|  | ||||
|     show: function(monitorIndex, icon, label, level) { | ||||
|         if (monitorIndex != -1) { | ||||
|             for (let i = 0; i < this._osdWindows.length; i++) { | ||||
|                 if (i == monitorIndex) | ||||
|                     this._showOsdWindow(i, icon, label, level); | ||||
|                 else | ||||
|                     this._osdWindows[i].cancel(); | ||||
|             } | ||||
|         } else { | ||||
|             for (let i = 0; i < this._osdWindows.length; i++) | ||||
|                 this._showOsdWindow(i, icon, label, level); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     hideAll: function() { | ||||
|         for (let i = 0; i < this._osdWindows.length; i++) | ||||
|             this._osdWindows[i].cancel(); | ||||
|     } | ||||
| }); | ||||
|   | ||||
| @@ -365,6 +365,7 @@ const Overview = new Lang.Class({ | ||||
|                                                 this._lastHoveredWindow = null; | ||||
|                                                 return GLib.SOURCE_REMOVE; | ||||
|                                             })); | ||||
|             GLib.Source.set_name_by_id(this._windowSwitchTimeoutId, '[gnome-shell] Main.activateWindow'); | ||||
|         } | ||||
|  | ||||
|         return DND.DragMotionResult.CONTINUE; | ||||
|   | ||||
| @@ -259,13 +259,18 @@ const ThumbnailsSlider = new Lang.Class({ | ||||
|  | ||||
|         Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide)); | ||||
|         this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide)); | ||||
|         global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSlide)); | ||||
|         this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); | ||||
|     }, | ||||
|  | ||||
|     _getAlwaysZoomOut: function() { | ||||
|         // Always show the pager when hover, during a drag, or if workspaces are | ||||
|         // actually used, e.g. there are windows on more than one | ||||
|         let alwaysZoomOut = this.actor.hover || this._inDrag || !Meta.prefs_get_dynamic_workspaces() || global.screen.n_workspaces > 2; | ||||
|         // actually used, e.g. there are windows on any non-active workspace | ||||
|         let alwaysZoomOut = this.actor.hover || | ||||
|                             this._inDrag || | ||||
|                             !Meta.prefs_get_dynamic_workspaces() || | ||||
|                             global.screen.n_workspaces > 2 || | ||||
|                             global.screen.get_active_workspace_index() != 0; | ||||
|  | ||||
|         if (!alwaysZoomOut) { | ||||
|             let monitors = Main.layoutManager.monitors; | ||||
|   | ||||
| @@ -595,6 +595,7 @@ const ActivitiesButton = new Lang.Class({ | ||||
|             Mainloop.source_remove(this._xdndTimeOut); | ||||
|         this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, | ||||
|                                                  Lang.bind(this, this._xdndToggleOverview, actor)); | ||||
|         GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview'); | ||||
|  | ||||
|         return DND.DragMotionResult.CONTINUE; | ||||
|     }, | ||||
|   | ||||
| @@ -107,6 +107,7 @@ const PointerWatcher = new Lang.Class({ | ||||
|  | ||||
|         this._timeoutId = Mainloop.timeout_add(minInterval, | ||||
|                                                Lang.bind(this, this._onTimeout)); | ||||
|         GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); | ||||
|     }, | ||||
|  | ||||
|     _onTimeout: function() { | ||||
|   | ||||
| @@ -251,8 +251,16 @@ const PopupSeparatorMenuItem = new Lang.Class({ | ||||
|         this.actor.add(this.label); | ||||
|         this.actor.label_actor = this.label; | ||||
|  | ||||
|         this.label.connect('notify::text', | ||||
|                            Lang.bind(this, this._syncVisibility)); | ||||
|         this._syncVisibility(); | ||||
|  | ||||
|         this._separator = new Separator.HorizontalSeparator({ style_class: 'popup-separator-menu-item' }); | ||||
|         this.actor.add(this._separator.actor, { expand: true }); | ||||
|     }, | ||||
|  | ||||
|     _syncVisibility: function() { | ||||
|         this.label.visible = this.label.text != ''; | ||||
|     } | ||||
| }); | ||||
|  | ||||
|   | ||||
| @@ -50,10 +50,14 @@ const RunDialog = new Lang.Class({ | ||||
|                                        Main.createLookingGlass().open(); | ||||
|                                    }), | ||||
|  | ||||
|                                    'r': Lang.bind(this, this._restart), | ||||
|                                    'r': Lang.bind(this, function() { | ||||
|                                        global.reexec_self(); | ||||
|                                    }), | ||||
|  | ||||
|                                    // Developer brain backwards compatibility | ||||
|                                    'restart': Lang.bind(this, this._restart), | ||||
|                                    'restart': Lang.bind(this, function() { | ||||
|                                        global.reexec_self(); | ||||
|                                    }), | ||||
|  | ||||
|                                    'debugexit': Lang.bind(this, function() { | ||||
|                                        Meta.quit(Meta.ExitCode.ERROR); | ||||
| @@ -267,12 +271,6 @@ const RunDialog = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _restart: function() { | ||||
|         this._shouldFadeOut = false; | ||||
|         this.close(); | ||||
|         Meta.restart('Restarting...'); | ||||
|     }, | ||||
|  | ||||
|     open: function() { | ||||
|         this._history.lastItem(); | ||||
|         this._errorBox.hide(); | ||||
|   | ||||
| @@ -850,6 +850,7 @@ const ScreenShield = new Lang.Class({ | ||||
|                                                            this.lock(false); | ||||
|                                                            return GLib.SOURCE_REMOVE; | ||||
|                                                        })); | ||||
|             GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock'); | ||||
|         } | ||||
|  | ||||
|         this._activateFade(this._longLightbox, STANDARD_FADE_TIME); | ||||
| @@ -1041,6 +1042,7 @@ const ScreenShield = new Lang.Class({ | ||||
|  | ||||
|         if (!this._arrowAnimationId) { | ||||
|             this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows)); | ||||
|             GLib.Source.set_name_by_id(this._arrowAnimationId, '[gnome-shell] this._animateArrows'); | ||||
|             this._animateArrows(); | ||||
|         } | ||||
|  | ||||
| @@ -1108,10 +1110,11 @@ const ScreenShield = new Lang.Class({ | ||||
|         if (params.fadeToBlack && params.animateFade) { | ||||
|             // Take a beat | ||||
|  | ||||
|             Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() { | ||||
|             let id = Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() { | ||||
|                 this._activateFade(this._shortLightbox, MANUAL_FADE_TIME); | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|             })); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] this._activateFade'); | ||||
|         } else { | ||||
|             if (params.fadeToBlack) | ||||
|                 this._activateFade(this._shortLightbox, 0); | ||||
|   | ||||
| @@ -11,6 +11,7 @@ const Shell = imports.gi.Shell; | ||||
| const Signals = imports.signals; | ||||
| const St = imports.gi.St; | ||||
|  | ||||
| const GrabHelper = imports.ui.grabHelper; | ||||
| const Lightbox = imports.ui.lightbox; | ||||
| const Main = imports.ui.main; | ||||
| const Tweener = imports.ui.tweener; | ||||
| @@ -139,6 +140,7 @@ const SelectArea = new Lang.Class({ | ||||
|         this._startY = -1; | ||||
|         this._lastX = 0; | ||||
|         this._lastY = 0; | ||||
|         this._result = null; | ||||
|  | ||||
|         this._initRubberbandColors(); | ||||
|  | ||||
| @@ -148,12 +150,12 @@ const SelectArea = new Lang.Class({ | ||||
|                                       y: 0 }); | ||||
|         Main.uiGroup.add_actor(this._group); | ||||
|  | ||||
|         this._grabHelper = new GrabHelper.GrabHelper(this._group); | ||||
|  | ||||
|         this._group.connect('button-press-event', | ||||
|                             Lang.bind(this, this._onButtonPress)); | ||||
|         this._group.connect('button-release-event', | ||||
|                             Lang.bind(this, this._onButtonRelease)); | ||||
|         this._group.connect('key-press-event', | ||||
|                             Lang.bind(this, this._onKeyPress)); | ||||
|         this._group.connect('motion-event', | ||||
|                             Lang.bind(this, this._onMotionEvent)); | ||||
|  | ||||
| @@ -169,10 +171,12 @@ const SelectArea = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     show: function() { | ||||
|         if (!Main.pushModal(this._group) || this._group.visible) | ||||
|         if (!this._grabHelper.grab({ actor: this._group, | ||||
|                                      onUngrab: Lang.bind(this, this._onUngrab) })) | ||||
|             return; | ||||
|  | ||||
|         global.screen.set_cursor(Meta.Cursor.CROSSHAIR); | ||||
|         Main.uiGroup.set_child_above_sibling(this._group, null); | ||||
|         this._group.visible = true; | ||||
|     }, | ||||
|  | ||||
| @@ -202,13 +206,6 @@ const SelectArea = new Lang.Class({ | ||||
|                  height: Math.abs(this._startY - this._lastY) }; | ||||
|     }, | ||||
|  | ||||
|     _onKeyPress: function(actor, event) { | ||||
|         if (event.get_key_symbol() == Clutter.Escape) | ||||
|             this._destroy(null, false); | ||||
|  | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|  | ||||
|     _onMotionEvent: function(actor, event) { | ||||
|         if (this._startX == -1 || this._startY == -1) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
| @@ -230,24 +227,28 @@ const SelectArea = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onButtonRelease: function(actor, event) { | ||||
|         this._destroy(this._getGeometry(), true); | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|  | ||||
|     _destroy: function(geometry, fade) { | ||||
|         this._result = this._getGeometry(); | ||||
|         Tweener.addTween(this._group, | ||||
|                          { opacity: 0, | ||||
|                            time: fade ? 0.2 : 0, | ||||
|                            time: 0.2, | ||||
|                            transition: 'easeOutQuad', | ||||
|                            onComplete: Lang.bind(this, | ||||
|                                function() { | ||||
|                                    Main.popModal(this._group); | ||||
|                                    this._group.destroy(); | ||||
|                                    global.screen.set_cursor(Meta.Cursor.DEFAULT); | ||||
|  | ||||
|                                    this.emit('finished', geometry); | ||||
|                                    this._grabHelper.ungrab(); | ||||
|                                }) | ||||
|                          }); | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|  | ||||
|     _onUngrab: function() { | ||||
|         global.screen.set_cursor(Meta.Cursor.DEFAULT); | ||||
|         this.emit('finished', this._result); | ||||
|  | ||||
|         GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, | ||||
|             function() { | ||||
|                 this._group.destroy(); | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|             })); | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(SelectArea.prototype); | ||||
|   | ||||
| @@ -39,11 +39,12 @@ const Main = imports.ui.main; | ||||
| function sleep(milliseconds) { | ||||
|     let cb; | ||||
|  | ||||
|     Mainloop.timeout_add(milliseconds, function() { | ||||
|     let id = Mainloop.timeout_add(milliseconds, function() { | ||||
|                              if (cb) | ||||
|                                  cb(); | ||||
|                              return GLib.SOURCE_REMOVE; | ||||
|                          }); | ||||
|     GLib.Source.set_name_by_id(id, '[gnome-shell] sleep'); | ||||
|  | ||||
|     return function(callback) { | ||||
|         cb = callback; | ||||
|   | ||||
| @@ -68,6 +68,9 @@ const SearchSystem = new Lang.Class({ | ||||
|     _unregisterProvider: function (provider) { | ||||
|         let index = this._providers.indexOf(provider); | ||||
|         this._providers.splice(index, 1); | ||||
|  | ||||
|         if (provider.display) | ||||
|             provider.display.destroy(); | ||||
|     }, | ||||
|  | ||||
|     getProviders: function() { | ||||
|   | ||||
| @@ -140,13 +140,14 @@ function _loadModes() { | ||||
|  | ||||
| function listModes() { | ||||
|     _loadModes(); | ||||
|     Mainloop.idle_add(function() { | ||||
|     let id = Mainloop.idle_add(function() { | ||||
|         let names = Object.getOwnPropertyNames(_modes); | ||||
|         for (let i = 0; i < names.length; i++) | ||||
|             if (_modes[names[i]].isPrimary) | ||||
|                 print(names[i]); | ||||
|         Mainloop.quit('listModes'); | ||||
|     }); | ||||
|     GLib.Source.set_name_by_id(id, '[gnome-shell] listModes'); | ||||
|     Mainloop.run('listModes'); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -141,12 +141,7 @@ const GnomeShell = new Lang.Class({ | ||||
|         if (params['icon']) | ||||
|             icon = Gio.Icon.new_for_string(params['icon']); | ||||
|  | ||||
|         Main.osdWindow.setIcon(icon); | ||||
|         Main.osdWindow.setMonitor (monitorIndex); | ||||
|         Main.osdWindow.setLabel(params['label']); | ||||
|         Main.osdWindow.setLevel(params['level']); | ||||
|  | ||||
|         Main.osdWindow.show(); | ||||
|         Main.osdWindowManager.show(monitorIndex, icon, params['label'], params['level']); | ||||
|     }, | ||||
|  | ||||
|     FocusApp: function(id) { | ||||
|   | ||||
| @@ -103,6 +103,7 @@ const ATIndicator = new Lang.Class({ | ||||
|             return; | ||||
|  | ||||
|         this._syncMenuVisbilityIdle = Mainloop.idle_add(Lang.bind(this, this._syncMenuVisibility)); | ||||
|         GLib.Source.set_name_by_id(this._syncMenuVisbilityIdle, '[gnome-shell] this._syncMenuVisibility'); | ||||
|     }, | ||||
|  | ||||
|     _buildItemExtended: function(string, initial_value, writable, on_set) { | ||||
|   | ||||
| @@ -292,6 +292,10 @@ const InputSourcePopup = new Lang.Class({ | ||||
|             this._select(this._previous()); | ||||
|         else if (keysym == Clutter.Right) | ||||
|             this._select(this._next()); | ||||
|         else | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
|  | ||||
|     _finish : function() { | ||||
|   | ||||
| @@ -423,18 +423,18 @@ const NMConnectionDevice = new Lang.Class({ | ||||
|         case NetworkManager.DeviceState.UNMANAGED: | ||||
|             /* Translators: this is for network devices that are physically present but are not | ||||
|                under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
|             return _("unmanaged"); | ||||
|             return _("Unmanaged"); | ||||
|         case NetworkManager.DeviceState.DEACTIVATING: | ||||
|             return _("disconnecting..."); | ||||
|             return _("Disconnecting"); | ||||
|         case NetworkManager.DeviceState.PREPARE: | ||||
|         case NetworkManager.DeviceState.CONFIG: | ||||
|         case NetworkManager.DeviceState.IP_CONFIG: | ||||
|         case NetworkManager.DeviceState.IP_CHECK: | ||||
|         case NetworkManager.DeviceState.SECONDARIES: | ||||
|             return _("connecting..."); | ||||
|             return _("Connecting"); | ||||
|         case NetworkManager.DeviceState.NEED_AUTH: | ||||
|             /* Translators: this is for network connections that require some kind of key or password */ | ||||
|             return _("authentication required"); | ||||
|             return _("Authentication required"); | ||||
|         case NetworkManager.DeviceState.UNAVAILABLE: | ||||
|             // This state is actually a compound of various states (generically unavailable, | ||||
|             // firmware missing), that are exposed by different properties (whose state may | ||||
| @@ -442,13 +442,13 @@ const NMConnectionDevice = new Lang.Class({ | ||||
|             if (this._device.firmware_missing) { | ||||
|                 /* Translators: this is for devices that require some kind of firmware or kernel | ||||
|                    module, which is missing */ | ||||
|                 return _("firmware missing"); | ||||
|                 return _("Firmware missing"); | ||||
|             } | ||||
|             /* Translators: this is for a network device that cannot be activated (for example it | ||||
|                is disabled by rfkill, or it has no coverage */ | ||||
|             return _("unavailable"); | ||||
|             return _("Unavailable"); | ||||
|         case NetworkManager.DeviceState.FAILED: | ||||
|             return _("connection failed"); | ||||
|             return _("Connection failed"); | ||||
|         default: | ||||
|             log('Device state invalid, is %d'.format(this._device.state)); | ||||
|             return 'invalid'; | ||||
|   | ||||
| @@ -161,11 +161,12 @@ const SwitcherPopup = new Lang.Class({ | ||||
|         // disturbed by the popup briefly flashing. | ||||
|         this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT, | ||||
|                                                            Lang.bind(this, function () { | ||||
|                                                                Main.osdWindow.cancel(); | ||||
|                                                                Main.osdWindowManager.hideAll(); | ||||
|                                                                this.actor.opacity = 255; | ||||
|                                                                this._initialDelayTimeoutId = 0; | ||||
|                                                                return GLib.SOURCE_REMOVE; | ||||
|                                                            })); | ||||
|         GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel'); | ||||
|         return true; | ||||
|     }, | ||||
|  | ||||
| @@ -189,10 +190,11 @@ const SwitcherPopup = new Lang.Class({ | ||||
|  | ||||
|         this._disableHover(); | ||||
|  | ||||
|         if (this._keyPressHandler(keysym, backwards, action) != Clutter.EVENT_PROPAGATE) | ||||
|             return Clutter.EVENT_STOP; | ||||
|  | ||||
|         if (keysym == Clutter.Escape) | ||||
|             this.destroy(); | ||||
|         else | ||||
|             this._keyPressHandler(keysym, backwards, action); | ||||
|  | ||||
|         return Clutter.EVENT_STOP; | ||||
|     }, | ||||
| @@ -250,6 +252,7 @@ const SwitcherPopup = new Lang.Class({ | ||||
|             Mainloop.source_remove(this._motionTimeoutId); | ||||
|  | ||||
|         this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut)); | ||||
|         GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut'); | ||||
|     }, | ||||
|  | ||||
|     _mouseTimedOut: function() { | ||||
|   | ||||
| @@ -282,7 +282,7 @@ const ViewSelector = new Lang.Class({ | ||||
|             return Clutter.EVENT_STOP; | ||||
|         } else if (this._shouldTriggerSearch(symbol)) { | ||||
|             this.startSearch(event); | ||||
|         } else if (!this._searchActive) { | ||||
|         } else if (!this._searchActive && !global.stage.key_focus) { | ||||
|             if (symbol == Clutter.Tab || symbol == Clutter.Down) { | ||||
|                 this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); | ||||
|                 return true; | ||||
| @@ -383,9 +383,11 @@ const ViewSelector = new Lang.Class({ | ||||
|                 this._iconClickedId = this._entry.connect('secondary-icon-clicked', | ||||
|                     Lang.bind(this, this.reset)); | ||||
|  | ||||
|             if (this._searchTimeoutId == 0) | ||||
|             if (this._searchTimeoutId == 0) { | ||||
|                 this._searchTimeoutId = Mainloop.timeout_add(150, | ||||
|                     Lang.bind(this, this._doSearch)); | ||||
|                 GLib.Source.set_name_by_id(this._searchTimeoutId, '[gnome-shell] this._doSearch'); | ||||
|             } | ||||
|         } else { | ||||
|             if (this._iconClickedId > 0) { | ||||
|                 this._entry.disconnect(this._iconClickedId); | ||||
|   | ||||
| @@ -15,6 +15,7 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup; | ||||
| const Main = imports.ui.main; | ||||
| const ModalDialog = imports.ui.modalDialog; | ||||
| const Tweener = imports.ui.tweener; | ||||
| const WindowMenu = imports.ui.windowMenu; | ||||
|  | ||||
| const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; | ||||
| const WINDOW_ANIMATION_TIME = 0.25; | ||||
| @@ -82,6 +83,7 @@ const DisplayChangeDialog = new Lang.Class({ | ||||
|                                         { expand: false, x_fill: false, x_align: St.Align.END }); | ||||
|  | ||||
|         this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick)); | ||||
|         GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick'); | ||||
|     }, | ||||
|  | ||||
|     close: function(timestamp) { | ||||
| @@ -271,18 +273,20 @@ const WorkspaceTracker = new Lang.Class({ | ||||
|             this._queueCheckWorkspaces(); | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         })); | ||||
|         GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces'); | ||||
|     }, | ||||
|  | ||||
|     _windowRemoved: function(workspace, window) { | ||||
|         workspace._lastRemovedWindow = window; | ||||
|         this._queueCheckWorkspaces(); | ||||
|         Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() { | ||||
|         let id = Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() { | ||||
|             if (workspace._lastRemovedWindow == window) { | ||||
|                 workspace._lastRemovedWindow = null; | ||||
|                 this._queueCheckWorkspaces(); | ||||
|             } | ||||
|             return GLib.SOURCE_REMOVE; | ||||
|         })); | ||||
|         GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces'); | ||||
|     }, | ||||
|  | ||||
|     _windowLeftMonitor: function(metaScreen, monitorIndex, metaWin) { | ||||
| @@ -460,8 +464,6 @@ const WindowManager = new Lang.Class({ | ||||
|  | ||||
|         this._dimmedWindows = []; | ||||
|  | ||||
|         this._animationBlockCount = 0; | ||||
|  | ||||
|         this._allowedKeybindings = {}; | ||||
|  | ||||
|         this._switchData = null; | ||||
| @@ -477,6 +479,7 @@ const WindowManager = new Lang.Class({ | ||||
|         this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace)); | ||||
|         this._shellwm.connect('show-tile-preview', Lang.bind(this, this._showTilePreview)); | ||||
|         this._shellwm.connect('hide-tile-preview', Lang.bind(this, this._hideTilePreview)); | ||||
|         this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu)); | ||||
|         this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow)); | ||||
|         this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow)); | ||||
|         this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow)); | ||||
| @@ -504,6 +507,10 @@ const WindowManager = new Lang.Class({ | ||||
|                                         Shell.KeyBindingMode.NORMAL | | ||||
|                                         Shell.KeyBindingMode.OVERVIEW, | ||||
|                                         Lang.bind(this, this._showWorkspaceSwitcher)); | ||||
|         this.setCustomKeybindingHandler('switch-to-workspace-last', | ||||
|                                         Shell.KeyBindingMode.NORMAL | | ||||
|                                         Shell.KeyBindingMode.OVERVIEW, | ||||
|                                         Lang.bind(this, this._showWorkspaceSwitcher)); | ||||
|         this.setCustomKeybindingHandler('move-to-workspace-left', | ||||
|                                         Shell.KeyBindingMode.NORMAL | | ||||
|                                         Shell.KeyBindingMode.OVERVIEW, | ||||
| @@ -604,6 +611,9 @@ const WindowManager = new Lang.Class({ | ||||
|         this.setCustomKeybindingHandler('move-to-workspace-12', | ||||
|                                         Shell.KeyBindingMode.NORMAL, | ||||
|                                         Lang.bind(this, this._showWorkspaceSwitcher)); | ||||
|         this.setCustomKeybindingHandler('move-to-workspace-last', | ||||
|                                         Shell.KeyBindingMode.NORMAL, | ||||
|                                         Lang.bind(this, this._showWorkspaceSwitcher)); | ||||
|         this.setCustomKeybindingHandler('switch-applications', | ||||
|                                         Shell.KeyBindingMode.NORMAL, | ||||
|                                         Lang.bind(this, this._startAppSwitcher)); | ||||
| @@ -659,6 +669,8 @@ const WindowManager = new Lang.Class({ | ||||
|                 this._dimWindow(this._dimmedWindows[i]); | ||||
|         })); | ||||
|  | ||||
|         this._windowMenuManager = new WindowMenu.WindowMenuManager(); | ||||
|  | ||||
|         if (Main.sessionMode.hasWorkspaces) | ||||
|             this._workspaceTracker = new WorkspaceTracker(this); | ||||
|  | ||||
| @@ -694,16 +706,8 @@ const WindowManager = new Lang.Class({ | ||||
|         this._allowedKeybindings[name] = modes; | ||||
|     }, | ||||
|  | ||||
|     blockAnimations: function() { | ||||
|         this._animationBlockCount++; | ||||
|     }, | ||||
|  | ||||
|     unblockAnimations: function() { | ||||
|         this._animationBlockCount = Math.max(0, this._animationBlockCount - 1); | ||||
|     }, | ||||
|  | ||||
|     _shouldAnimate: function() { | ||||
|         return !(Main.overview.visible || this._animationBlockCount > 0); | ||||
|         return !Main.overview.visible; | ||||
|     }, | ||||
|  | ||||
|     _shouldAnimateActor: function(actor) { | ||||
| @@ -1149,6 +1153,10 @@ const WindowManager = new Lang.Class({ | ||||
|         this._tilePreview.hide(); | ||||
|     }, | ||||
|  | ||||
|     _showWindowMenu: function(shellwm, window, menu, rect) { | ||||
|         this._windowMenuManager.showWindowMenuForWindow(window, menu, rect); | ||||
|     }, | ||||
|  | ||||
|     _startAppSwitcher : function(display, screen, window, binding) { | ||||
|         /* prevent a corner case where both popups show up at once */ | ||||
|         if (this._workspaceSwitcherPopup != null) | ||||
| @@ -1205,7 +1213,10 @@ const WindowManager = new Lang.Class({ | ||||
|         let newWs; | ||||
|         let direction; | ||||
|  | ||||
|         if (isNaN(target)) { | ||||
|         if (target == 'last') { | ||||
|             direction = Meta.MotionDirection.DOWN; | ||||
|             newWs = screen.get_workspace_by_index(screen.n_workspaces - 1); | ||||
|         } else if (isNaN(target)) { | ||||
|             direction = Meta.MotionDirection[target.toUpperCase()]; | ||||
|             newWs = screen.get_active_workspace().get_neighbor(direction); | ||||
|         } else if (target > 0) { | ||||
|   | ||||
							
								
								
									
										185
									
								
								js/ui/windowMenu.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								js/ui/windowMenu.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -* | ||||
|  | ||||
| const Gtk = imports.gi.Gtk; | ||||
| const Lang = imports.lang; | ||||
| const Meta = imports.gi.Meta; | ||||
| const St = imports.gi.St; | ||||
| const Shell = imports.gi.Shell; | ||||
|  | ||||
| const BoxPointer = imports.ui.boxpointer; | ||||
| const Main = imports.ui.main; | ||||
| const PopupMenu = imports.ui.popupMenu; | ||||
| const RemoteMenu = imports.ui.remoteMenu; | ||||
|  | ||||
| const WindowMenu = new Lang.Class({ | ||||
|     Name: 'WindowMenu', | ||||
|     Extends: PopupMenu.PopupMenu, | ||||
|  | ||||
|     _init: function(window, sourceActor) { | ||||
|         this.parent(sourceActor, 0, St.Side.TOP); | ||||
|  | ||||
|         this.actor.add_style_class_name('window-menu'); | ||||
|  | ||||
|         Main.layoutManager.uiGroup.add_actor(this.actor); | ||||
|         this.actor.hide(); | ||||
|  | ||||
|         this._buildMenu(window); | ||||
|     }, | ||||
|  | ||||
|     _buildMenu: function(window) { | ||||
|         let type = window.get_window_type(); | ||||
|  | ||||
|         let item; | ||||
|  | ||||
|         item = this.addAction(_("Minimize"), Lang.bind(this, function(event) { | ||||
|             window.minimize(); | ||||
|         })); | ||||
|         if (!window.can_minimize()) | ||||
|             item.setSensitive(false); | ||||
|  | ||||
|         if (window.get_maximized()) { | ||||
|             item = this.addAction(_("Unmaximize"), Lang.bind(this, function() { | ||||
|                 window.unmaximize(Meta.MaximizeFlags.BOTH); | ||||
|             })); | ||||
|         } else { | ||||
|             item = this.addAction(_("Maximize"), Lang.bind(this, function() { | ||||
|                 window.maximize(Meta.MaximizeFlags.BOTH); | ||||
|             })); | ||||
|         } | ||||
|         if (!window.can_maximize()) | ||||
|             item.setSensitive(false); | ||||
|  | ||||
|         item = this.addAction(_("Move"), Lang.bind(this, function(event) { | ||||
|             window.begin_grab_op(Meta.GrabOp.KEYBOARD_MOVING, true, event.get_time()); | ||||
|         })); | ||||
|         if (!window.allows_move()) | ||||
|             item.setSensitive(false); | ||||
|  | ||||
|         item = this.addAction(_("Resize"), Lang.bind(this, function(event) { | ||||
|             window.begin_grab_op(Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, true, event.get_time()); | ||||
|         })); | ||||
|         if (!window.allows_resize()) | ||||
|             item.setSensitive(false); | ||||
|  | ||||
|         if (!window.titlebar_is_onscreen() && type != Meta.WindowType.DOCK && type != Meta.WindowType.DESKTOP) { | ||||
|             this.addAction(_("Move Titlebar Onscreen"), Lang.bind(this, function(event) { | ||||
|                 window.shove_titlebar_onscreen(); | ||||
|             })); | ||||
|         } | ||||
|  | ||||
|         item = this.addAction(_("Always on Top"), Lang.bind(this, function() { | ||||
|             if (window.is_above()) | ||||
|                 window.unmake_above(); | ||||
|             else | ||||
|                 window.make_above(); | ||||
|         })); | ||||
|         if (window.is_above()) | ||||
|             item.setOrnament(PopupMenu.Ornament.DOT); | ||||
|         if (window.get_maximized() || | ||||
|             type == Meta.WindowType.DOCK || | ||||
|             type == Meta.WindowType.DESKTOP || | ||||
|             type == Meta.WindowType.SPLASHSCREEN) | ||||
|             item.setSensitive(false); | ||||
|  | ||||
|         if (Main.sessionMode.hasWorkspaces && | ||||
|             (!Meta.prefs_get_workspaces_only_on_primary() || | ||||
|              window.is_on_primary_monitor())) { | ||||
|             let isSticky = window.is_on_all_workspaces(); | ||||
|  | ||||
|             item = this.addAction(_("Always on Visible Workspace"), Lang.bind(this, function() { | ||||
|                 if (isSticky) | ||||
|                     window.unstick(); | ||||
|                 else | ||||
|                     window.stick(); | ||||
|             })); | ||||
|             if (isSticky) | ||||
|                 item.setOrnament(PopupMenu.Ornament.DOT); | ||||
|             if (window.is_always_on_all_workspaces()) | ||||
|                 item.setSensitive(false); | ||||
|  | ||||
|             let nWorkspaces = global.screen.n_workspaces; | ||||
|  | ||||
|             if (!isSticky) { | ||||
|                 let workspace = window.get_workspace(); | ||||
|                 let idx = workspace.index(); | ||||
|                 if (idx > 0) { | ||||
|                     this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) { | ||||
|                         window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP)); | ||||
|                     })); | ||||
|                 } | ||||
|                 if (idx < nWorkspaces) { | ||||
|                      this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) { | ||||
|                         window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN)); | ||||
|                     })); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||||
|  | ||||
|         item = this.addAction(_("Close"), Lang.bind(this, function(event) { | ||||
|             window.delete(event.get_time()); | ||||
|         })); | ||||
|         if (!window.can_close()) | ||||
|             item.setSensitive(false); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const AppMenu = new Lang.Class({ | ||||
|     Name: 'AppMenu', | ||||
|     Extends: RemoteMenu.RemoteMenu, | ||||
|  | ||||
|     _init: function(window, sourceActor) { | ||||
|         let app = Shell.WindowTracker.get_default().get_window_app(window); | ||||
|  | ||||
|         this.parent(sourceActor, app.menu, app.action_group); | ||||
|  | ||||
|         this.actor.add_style_class_name('fallback-app-menu'); | ||||
|         let variant = window.get_gtk_theme_variant(); | ||||
|         if (variant) | ||||
|             this.actor.add_style_class_name(variant); | ||||
|  | ||||
|         Main.layoutManager.uiGroup.add_actor(this.actor); | ||||
|         this.actor.hide(); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| const WindowMenuManager = new Lang.Class({ | ||||
|     Name: 'WindowMenuManager', | ||||
|  | ||||
|     _init: function() { | ||||
|         this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor }); | ||||
|  | ||||
|         this._sourceActor = new St.Widget({ reactive: true, visible: false }); | ||||
|         this._sourceActor.connect('button-press-event', Lang.bind(this, | ||||
|             function() { | ||||
|                 this._manager.activeMenu.toggle(); | ||||
|             })); | ||||
|         Main.uiGroup.add_actor(this._sourceActor); | ||||
|     }, | ||||
|  | ||||
|     showWindowMenuForWindow: function(window, type, rect) { | ||||
|         let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu; | ||||
|         let menu = new menuType(window, this._sourceActor); | ||||
|  | ||||
|         this._manager.addMenu(menu); | ||||
|  | ||||
|         menu.connect('activate', function() { | ||||
|             window.check_alive(global.get_current_time()); | ||||
|         }); | ||||
|  | ||||
|         this._sourceActor.set_size(rect.width, rect.height); | ||||
|         this._sourceActor.set_position(rect.x, rect.y); | ||||
|         this._sourceActor.show(); | ||||
|  | ||||
|         menu.open(BoxPointer.PopupAnimation.NONE); | ||||
|         menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); | ||||
|         menu.connect('open-state-changed', Lang.bind(this, function(menu_, isOpen) { | ||||
|             if (isOpen) | ||||
|                 return; | ||||
|  | ||||
|             this._sourceActor.hide(); | ||||
|             menu.destroy(); | ||||
|         })); | ||||
|     } | ||||
| }); | ||||
| @@ -200,6 +200,10 @@ const WindowClone = new Lang.Class({ | ||||
|         this.emit('size-changed'); | ||||
|     }, | ||||
|  | ||||
|     hasAttachedDialogs: function() { | ||||
|         return this.actor.get_n_children() > 1; | ||||
|     }, | ||||
|  | ||||
|     _doAddAttachedDialog: function(metaWin, realWin) { | ||||
|         let clone = new Clutter.Clone({ source: realWin }); | ||||
|         clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() { | ||||
| @@ -582,7 +586,8 @@ const WindowOverlay = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _windowCanClose: function() { | ||||
|         return this._windowClone.metaWindow.can_close(); | ||||
|         return this._windowClone.metaWindow.can_close() && | ||||
|                !this._windowClone.hasAttachedDialogs(); | ||||
|     }, | ||||
|  | ||||
|     _onWindowAdded: function(workspace, win) { | ||||
| @@ -594,11 +599,12 @@ const WindowOverlay = new Lang.Class({ | ||||
|  | ||||
|             // use an idle handler to avoid mapping problems - | ||||
|             // see comment in Workspace._windowAdded | ||||
|             Mainloop.idle_add(Lang.bind(this, | ||||
|                                         function() { | ||||
|                                             this._windowClone.emit('selected'); | ||||
|                                             return GLib.SOURCE_REMOVE; | ||||
|                                         })); | ||||
|             let id = Mainloop.idle_add(Lang.bind(this, | ||||
|                                             function() { | ||||
|                                                 this._windowClone.emit('selected'); | ||||
|                                                 return GLib.SOURCE_REMOVE; | ||||
|                                             })); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -669,8 +675,10 @@ const WindowOverlay = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onLeave: function() { | ||||
|         if (this._idleToggleCloseId == 0) | ||||
|         if (this._idleToggleCloseId == 0) { | ||||
|             this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this, this._idleToggleCloseButton)); | ||||
|             GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton'); | ||||
|         } | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|  | ||||
| @@ -1418,6 +1426,7 @@ const Workspace = new Lang.Class({ | ||||
|         this._currentLayout = null; | ||||
|         this._repositionWindowsId = Mainloop.timeout_add(750, | ||||
|             Lang.bind(this, this._delayedWindowRepositioning)); | ||||
|         GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning'); | ||||
|     }, | ||||
|  | ||||
|     _doAddWindow : function(metaWin) { | ||||
| @@ -1429,14 +1438,15 @@ const Workspace = new Lang.Class({ | ||||
|         if (!win) { | ||||
|             // Newly-created windows are added to a workspace before | ||||
|             // 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) | ||||
|                                                 this._doAddWindow(metaWin); | ||||
|                                             return GLib.SOURCE_REMOVE; | ||||
|                                         })); | ||||
|             let id = Mainloop.idle_add(Lang.bind(this, | ||||
|                                             function () { | ||||
|                                                 if (this.actor && | ||||
|                                                     metaWin.get_compositor_private() && | ||||
|                                                     metaWin.get_workspace() == this.metaWorkspace) | ||||
|                                                     this._doAddWindow(metaWin); | ||||
|                                                 return GLib.SOURCE_REMOVE; | ||||
|                                             })); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -52,6 +52,7 @@ const WorkspaceSwitcherPopup = new Lang.Class({ | ||||
|         this._globalSignals.push(global.screen.connect('workspace-removed', Lang.bind(this, this._redisplay))); | ||||
|  | ||||
|         this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout)); | ||||
|         GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); | ||||
|     }, | ||||
|  | ||||
|     _getPreferredHeight : function (actor, forWidth, alloc) { | ||||
| @@ -145,6 +146,7 @@ const WorkspaceSwitcherPopup = new Lang.Class({ | ||||
|         if (this._timeoutId != 0) | ||||
|             Mainloop.source_remove(this._timeoutId); | ||||
|         this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout)); | ||||
|         GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); | ||||
|         this._show(); | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -386,14 +386,15 @@ const WorkspaceThumbnail = new Lang.Class({ | ||||
|         if (!win) { | ||||
|             // Newly-created windows are added to a workspace before | ||||
|             // the compositor finds out about them... | ||||
|             Mainloop.idle_add(Lang.bind(this, | ||||
|                                         function () { | ||||
|             let id = Mainloop.idle_add(Lang.bind(this, | ||||
|                                        function () { | ||||
|                                             if (!this._removed && | ||||
|                                                 metaWin.get_compositor_private() && | ||||
|                                                 metaWin.get_workspace() == this.metaWorkspace) | ||||
|                                                 this._doAddWindow(metaWin); | ||||
|                                             return GLib.SOURCE_REMOVE; | ||||
|                                         })); | ||||
|             GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
| @@ -825,10 +826,14 @@ const ThumbnailsBox = new Lang.Class({ | ||||
|                 window.change_workspace_by_index(window.get_workspace().index() + 1, true); | ||||
|             }); | ||||
|  | ||||
|             if (isWindow) | ||||
|             if (isWindow) { | ||||
|                 // ... and bam, a workspace, good as new. | ||||
|                 // Move the window to our monitor first if necessary. | ||||
|                 let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex; | ||||
|                 if (source.metaWindow.get_monitor() != thumbMonitor) | ||||
|                     source.metaWindow.move_to_monitor(thumbMonitor); | ||||
|                 source.metaWindow.change_workspace_by_index(newWorkspaceIndex, true); | ||||
|             else if (source.shellWorkspaceLaunch) { | ||||
|             } else if (source.shellWorkspaceLaunch) { | ||||
|                 source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex, | ||||
|                                               timestamp: time }); | ||||
|                 // This new workspace will be automatically removed if the application fails | ||||
|   | ||||
| @@ -55,6 +55,7 @@ js/ui/unlockDialog.js | ||||
| js/ui/viewSelector.js | ||||
| js/ui/windowAttentionHandler.js | ||||
| js/ui/windowManager.js | ||||
| js/ui/windowMenu.js | ||||
| src/calendar-server/evolution-calendar.desktop.in.in | ||||
| # Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it. | ||||
| src/gvc/gvc-mixer-control.c | ||||
|   | ||||
							
								
								
									
										361
									
								
								po/cs.po
									
									
									
									
									
								
							
							
						
						
									
										361
									
								
								po/cs.po
									
									
									
									
									
								
							| @@ -12,8 +12,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: 2014-03-27 20:52+0000\n" | ||||
| "PO-Revision-Date: 2014-03-27 22:15+0100\n" | ||||
| "POT-Creation-Date: 2014-05-18 07:27+0000\n" | ||||
| "PO-Revision-Date: 2014-05-18 15:23+0200\n" | ||||
| "Last-Translator: Marek Černocký <marek@manet.cz>\n" | ||||
| "Language-Team: Czech <gnome-cs-list@gnome.org>\n" | ||||
| "Language: cs\n" | ||||
| @@ -336,25 +336,25 @@ msgstr "Vybrat sezení" | ||||
| msgid "Not listed?" | ||||
| msgstr "Nejste na seznamu?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:611 | ||||
| #: ../js/gdm/loginDialog.js:616 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(např. uživatel nebo %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Uživatelské jméno: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:917 | ||||
| #: ../js/gdm/loginDialog.js:924 | ||||
| msgid "Login Window" | ||||
| msgstr "Přihlašovací okno" | ||||
|  | ||||
| #: ../js/gdm/util.js:322 | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "Chyba ověření" | ||||
|  | ||||
| #: ../js/gdm/util.js:452 | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(nebo otiskněte prst)" | ||||
|  | ||||
| @@ -371,30 +371,34 @@ msgstr "Nelze analyzovat příkaz:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Vykonání „%s“ selhalo:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:640 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Zde se objeví často používané aplikace" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:751 | ||||
| msgid "Frequent" | ||||
| msgstr "Časté" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:758 | ||||
| msgid "All" | ||||
| msgstr "Všechny" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1571 | ||||
| msgid "New Window" | ||||
| msgstr "Nové okno" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Odstranit z oblíbených" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1599 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Přidat mezi oblíbené" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1608 | ||||
| msgid "Show Details" | ||||
| msgstr "Zobrazit podrobnosti" | ||||
|  | ||||
| #: ../js/ui/appFavorites.js:87 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| @@ -405,8 +409,8 @@ msgstr "%s byl přidán mezi oblíbené." | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s byl odstraněn z oblíbených." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:337 | ||||
| msgid "Settings" | ||||
| msgstr "Nastavení" | ||||
|  | ||||
| @@ -417,14 +421,14 @@ msgstr "Změnit pozadí…" | ||||
| #. Translators: Shown in calendar event list for all day events | ||||
| #. * Keep it short, best if you can use less then 10 characters | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:64 | ||||
| #: ../js/ui/calendar.js:67 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Celý den" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 24h format, | ||||
| #. \u2236 is a ratio character, similar to : */ | ||||
| #: ../js/ui/calendar.js:70 | ||||
| #: ../js/ui/calendar.js:73 | ||||
| msgctxt "event list time" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%k∶%M" | ||||
| @@ -432,7 +436,7 @@ msgstr "%k∶%M" | ||||
| #. Translators: Shown in calendar event list, if 12h format, | ||||
| #. \u2236 is a ratio character, similar to : and \u2009 is | ||||
| #. a thin space */ | ||||
| #: ../js/ui/calendar.js:79 | ||||
| #: ../js/ui/calendar.js:82 | ||||
| msgctxt "event list time" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
| @@ -442,43 +446,43 @@ msgstr "%l∶%M %p" | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:110 | ||||
| #: ../js/ui/calendar.js:113 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "Ne" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:112 | ||||
| #: ../js/ui/calendar.js:115 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "Po" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:114 | ||||
| #: ../js/ui/calendar.js:117 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "Út" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:116 | ||||
| #: ../js/ui/calendar.js:119 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "St" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:118 | ||||
| #: ../js/ui/calendar.js:121 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "Čt" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:120 | ||||
| #: ../js/ui/calendar.js:123 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "Pá" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:122 | ||||
| #: ../js/ui/calendar.js:125 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| msgstr "So" | ||||
| @@ -489,97 +493,93 @@ msgstr "So" | ||||
| #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||||
| #. * both be 'T'). | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:135 | ||||
| #: ../js/ui/calendar.js:138 | ||||
| msgctxt "list sunday" | ||||
| msgid "Su" | ||||
| msgstr "Ne" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:137 | ||||
| #: ../js/ui/calendar.js:140 | ||||
| msgctxt "list monday" | ||||
| msgid "M" | ||||
| msgstr "Po" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:139 | ||||
| #: ../js/ui/calendar.js:142 | ||||
| msgctxt "list tuesday" | ||||
| msgid "T" | ||||
| msgstr "Út" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:141 | ||||
| #: ../js/ui/calendar.js:144 | ||||
| msgctxt "list wednesday" | ||||
| msgid "W" | ||||
| msgstr "St" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:143 | ||||
| #: ../js/ui/calendar.js:146 | ||||
| msgctxt "list thursday" | ||||
| msgid "Th" | ||||
| msgstr "Čt" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:145 | ||||
| #: ../js/ui/calendar.js:148 | ||||
| msgctxt "list friday" | ||||
| msgid "F" | ||||
| msgstr "Pá" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:147 | ||||
| #: ../js/ui/calendar.js:150 | ||||
| msgctxt "list saturday" | ||||
| msgid "S" | ||||
| msgstr "So" | ||||
|  | ||||
| #: ../js/ui/calendar.js:390 | ||||
| msgid "calendar:MY" | ||||
| msgstr "calendar:MY" | ||||
|  | ||||
| #: ../js/ui/calendar.js:450 | ||||
| #: ../js/ui/calendar.js:453 | ||||
| msgid "Previous month" | ||||
| msgstr "Předchozí měsíc" | ||||
|  | ||||
| #: ../js/ui/calendar.js:460 | ||||
| #: ../js/ui/calendar.js:463 | ||||
| msgid "Next month" | ||||
| msgstr "Následující měsíc" | ||||
|  | ||||
| #. Translators: Text to show if there are no events */ | ||||
| #: ../js/ui/calendar.js:772 | ||||
| #: ../js/ui/calendar.js:775 | ||||
| msgid "Nothing Scheduled" | ||||
| msgstr "Nic nenaplánováno" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on current year */ | ||||
| #: ../js/ui/calendar.js:790 | ||||
| #: ../js/ui/calendar.js:793 | ||||
| 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:793 | ||||
| #: ../js/ui/calendar.js:796 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %e. %B %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:804 | ||||
| #: ../js/ui/calendar.js:807 | ||||
| msgid "Today" | ||||
| msgstr "Dnes" | ||||
|  | ||||
| #: ../js/ui/calendar.js:808 | ||||
| #: ../js/ui/calendar.js:811 | ||||
| msgid "Tomorrow" | ||||
| msgstr "Zítra" | ||||
|  | ||||
| #: ../js/ui/calendar.js:819 | ||||
| #: ../js/ui/calendar.js:822 | ||||
| msgid "This week" | ||||
| msgstr "Tento týden" | ||||
|  | ||||
| #: ../js/ui/calendar.js:827 | ||||
| #: ../js/ui/calendar.js:830 | ||||
| msgid "Next week" | ||||
| msgstr "Následující týden" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "Externí svazek připojen" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Externí svazek odpojen" | ||||
|  | ||||
| @@ -724,77 +724,77 @@ msgid "Mute" | ||||
| msgstr "Ztlumit" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #: ../js/ui/components/telepathyClient.js:958 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%k∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #: ../js/ui/components/telepathyClient.js:965 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "včera, %k∶%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #: ../js/ui/components/telepathyClient.js:972 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %k∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #: ../js/ui/components/telepathyClient.js:979 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%e. %B %k∶%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #: ../js/ui/components/telepathyClient.js:985 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%e. %B %Y, %k∶%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #: ../js/ui/components/telepathyClient.js:994 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #: ../js/ui/components/telepathyClient.js:1001 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "včera, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #: ../js/ui/components/telepathyClient.js:1008 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #: ../js/ui/components/telepathyClient.js:1015 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%e. %B, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #: ../js/ui/components/telepathyClient.js:1021 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%e. %B %Y, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #: ../js/ui/components/telepathyClient.js:1054 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "%s je teď znám jako %s" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #: ../js/ui/components/telepathyClient.js:1158 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| msgstr "Pozvánka na připojení k %s" | ||||
| @@ -802,38 +802,38 @@ msgstr "Pozvánka na připojení k %s" | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #: ../js/ui/components/telepathyClient.js:1166 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "%s vás zve do %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1290 | ||||
| #: ../js/ui/components/telepathyClient.js:1168 | ||||
| #: ../js/ui/components/telepathyClient.js:1203 | ||||
| #: ../js/ui/components/telepathyClient.js:1237 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Decline" | ||||
| msgstr "Odmítnout" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| #: ../js/ui/components/telepathyClient.js:1174 | ||||
| #: ../js/ui/components/telepathyClient.js:1243 | ||||
| #: ../js/ui/components/telepathyClient.js:1300 | ||||
| msgid "Accept" | ||||
| msgstr "Přijmout" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #: ../js/ui/components/telepathyClient.js:1193 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "Videohovor od %s" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #: ../js/ui/components/telepathyClient.js:1196 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "Hovor od %s" | ||||
|  | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #: ../js/ui/components/telepathyClient.js:1210 | ||||
| msgid "Answer" | ||||
| msgstr "Zvednout" | ||||
|  | ||||
| @@ -842,110 +842,110 @@ msgstr "Zvednout" | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #: ../js/ui/components/telepathyClient.js:1231 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s vám posílá %s" | ||||
|  | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #: ../js/ui/components/telepathyClient.js:1260 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s vás žádá o oprávnění vidět, že jste dostupní" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1341 | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| msgid "Network error" | ||||
| msgstr "Chyba sítě" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1343 | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Ověření selhalo" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1345 | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| msgid "Encryption error" | ||||
| msgstr "Chyba šifrování" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1347 | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Certifikát neposkytnut" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1349 | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Nedůvěryhodný certifikát" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1351 | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Platnost certifikátu vypršela" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1353 | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Certifikát není aktivován" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1355 | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "Název počítače certifikátu nesouhlasí" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1357 | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "Otisk prstu certifikátu nesouhlasí" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1359 | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Certifikát je podepsán sám sebou" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1361 | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "Stav nastaven na „Odhlášen“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1363 | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "Šifrování není dostupné" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1365 | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "Certifikát je neplatný" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1367 | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Spojení bylo odmítnuto" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1369 | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Spojení nemohlo bát navázáno" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1371 | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Spojení bylo ztraceno" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1373 | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Tento účet je již připojen k serveru" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1375 | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "Spojení bylo nahrazeno novým spojením, které používá stejný zdroj" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1377 | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Takový účet již na serveru existuje" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1379 | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "Server je právě příliš zaneprázdněn na to, aby obsloužil spojení" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1381 | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Certifikát byl odvolán" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1383 | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z " | ||||
| "kryptografického hlediska slabý" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1385 | ||||
| #: ../js/ui/components/telepathyClient.js:1390 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -953,22 +953,22 @@ msgstr "" | ||||
| "Délka certifikátu serveru nebo délka zřetězených certifikátů serveru " | ||||
| "přesáhla omezení dané kryptografickou knihovnou" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1387 | ||||
| #: ../js/ui/components/telepathyClient.js:1392 | ||||
| msgid "Internal error" | ||||
| msgstr "Vnitřní chyba" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1397 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Nelze se připojit k „%s“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #: ../js/ui/components/telepathyClient.js:1407 | ||||
| msgid "View account" | ||||
| msgstr "Zobrazit účet" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1439 | ||||
| #: ../js/ui/components/telepathyClient.js:1444 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Neznámý důvod" | ||||
|  | ||||
| @@ -984,15 +984,15 @@ msgstr "Zobrazit aplikace" | ||||
| msgid "Dash" | ||||
| msgstr "Oblíbené" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:91 | ||||
| #: ../js/ui/dateMenu.js:97 | ||||
| msgid "Open Calendar" | ||||
| msgstr "Otevřít kalendář" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:95 | ||||
| #: ../js/ui/dateMenu.js:101 | ||||
| msgid "Open Clocks" | ||||
| msgstr "Otevřít Hodiny" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:102 | ||||
| #: ../js/ui/dateMenu.js:108 | ||||
| msgid "Date & Time Settings" | ||||
| msgstr "Nastavení data a času" | ||||
|  | ||||
| @@ -1000,7 +1000,7 @@ msgstr "Nastavení data a času" | ||||
| #. 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:192 | ||||
| #: ../js/ui/dateMenu.js:205 | ||||
| msgid "%A %B %e, %Y" | ||||
| msgstr "%A, %e. %B, %Y" | ||||
|  | ||||
| @@ -1131,13 +1131,13 @@ msgid "Other users are logged in." | ||||
| msgstr "Jsou přihlášeni jiní uživatelé." | ||||
|  | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (vzdálený)" | ||||
|  | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| msgstr "%s (konzola)" | ||||
| @@ -1151,7 +1151,7 @@ msgstr "Instalovat" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 | ||||
| msgid "Keyboard" | ||||
| msgstr "Klávesnice" | ||||
|  | ||||
| @@ -1239,16 +1239,16 @@ msgstr "Žádné zprávy" | ||||
| msgid "Message Tray" | ||||
| msgstr "Lišta zpráv" | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "Informace o systému" | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Neznámé" | ||||
|  | ||||
| #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151 | ||||
| #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 | ||||
| #, javascript-format | ||||
| msgid "%d new message" | ||||
| msgid_plural "%d new messages" | ||||
| @@ -1282,7 +1282,7 @@ msgstr "Ukončit" | ||||
| msgid "Activities" | ||||
| msgstr "Činnosti" | ||||
|  | ||||
| #: ../js/ui/panel.js:914 | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "Horní lišta" | ||||
|  | ||||
| @@ -1294,7 +1294,7 @@ msgstr "toggle-switch-intl" | ||||
| msgid "Enter a Command" | ||||
| msgstr "Zadejte příkaz:" | ||||
|  | ||||
| #: ../js/ui/runDialog.js:114 | ||||
| #: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117 | ||||
| msgid "Close" | ||||
| msgstr "Zavřít" | ||||
|  | ||||
| @@ -1312,7 +1312,7 @@ msgstr[0] "%d nové upozornění" | ||||
| msgstr[1] "%d nová upozornění" | ||||
| msgstr[2] "%d nových upozornění" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 | ||||
| msgid "Lock" | ||||
| msgstr "Uzamknout" | ||||
|  | ||||
| @@ -1320,19 +1320,19 @@ msgstr "Uzamknout" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME potřebuje uzamknout obrazovku" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Nelze uzamknout obrazovku" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "Zamknutí bylo zablokováno některou z aplikací" | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Hledá se…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Žádné výsledky." | ||||
|  | ||||
| @@ -1396,11 +1396,11 @@ msgstr "Vícenásobné stisky kláves" | ||||
| msgid "Mouse Keys" | ||||
| msgstr "Myš klávesnicí" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "Vysoký kontrast" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "Styl velkého textu" | ||||
|  | ||||
| @@ -1410,8 +1410,8 @@ msgstr "Bluetooth" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 | ||||
| #: ../js/ui/status/rfkill.js:114 | ||||
| msgid "Turn Off" | ||||
| msgstr "Vypnout" | ||||
|  | ||||
| @@ -1471,37 +1471,37 @@ msgstr "Připojeno" | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "unmanaged" | ||||
| msgstr "nespravováno" | ||||
| msgid "Unmanaged" | ||||
| msgstr "Nespravováno" | ||||
|  | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "disconnecting..." | ||||
| msgstr "odpojování…" | ||||
| msgid "Disconnecting" | ||||
| msgstr "Odpojuje se…" | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "připojování…" | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Připojuje se…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "je vyžadováno ověření" | ||||
| #: ../js/ui/status/network.js:437 | ||||
| msgid "Authentication required" | ||||
| msgstr "Je vyžadováno ověření" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing */ | ||||
| #: ../js/ui/status/network.js:445 | ||||
| msgid "firmware missing" | ||||
| msgstr "nedostupný firmware" | ||||
| msgid "Firmware missing" | ||||
| msgstr "Schází firmware" | ||||
|  | ||||
| #. 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:449 | ||||
| msgid "unavailable" | ||||
| msgstr "nedostupné" | ||||
| msgid "Unavailable" | ||||
| msgstr "Nedostupné" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "připojení selhalo" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Připojení selhalo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| msgid "Wired Settings" | ||||
| @@ -1555,7 +1555,7 @@ msgstr "Vyberte síť" | ||||
| msgid "No Networks" | ||||
| msgstr "Žádné sítě" | ||||
|  | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "K vypnutí použijte fyzický vypínač" | ||||
|  | ||||
| @@ -1575,11 +1575,20 @@ msgstr "Zapnout" | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Hotspot aktivní" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Připojuje se…" | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "připojování…" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "je vyžadováno ověření" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "připojení selhalo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 | ||||
| msgid "Network Settings" | ||||
| msgstr "Nastavení sítě" | ||||
|  | ||||
| @@ -1595,10 +1604,6 @@ msgstr "VPN" | ||||
| msgid "Network Manager" | ||||
| msgstr "Network Manager" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Připojení selhalo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Aktivace síťového připojení selhala" | ||||
| @@ -1633,31 +1638,31 @@ msgstr "Záložní zdroj" | ||||
| msgid "Battery" | ||||
| msgstr "Baterie" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:82 | ||||
| #: ../js/ui/status/rfkill.js:83 | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Režim „letadlo“" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| #: ../js/ui/status/rfkill.js:85 | ||||
| msgid "On" | ||||
| msgstr "Zapnuto" | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| #: ../js/ui/status/system.js:317 | ||||
| msgid "Switch User" | ||||
| msgstr "Přepnout uživatele" | ||||
|  | ||||
| #: ../js/ui/status/system.js:319 | ||||
| #: ../js/ui/status/system.js:322 | ||||
| msgid "Log Out" | ||||
| msgstr "Odhlásit se" | ||||
|  | ||||
| #: ../js/ui/status/system.js:338 | ||||
| #: ../js/ui/status/system.js:341 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Zámek otočení" | ||||
|  | ||||
| #: ../js/ui/status/system.js:346 | ||||
| #: ../js/ui/status/system.js:349 | ||||
| msgid "Suspend" | ||||
| msgstr "Uspat do paměti" | ||||
|  | ||||
| #: ../js/ui/status/system.js:349 | ||||
| #: ../js/ui/status/system.js:352 | ||||
| msgid "Power Off" | ||||
| msgstr "Vypnout" | ||||
|  | ||||
| @@ -1694,22 +1699,22 @@ msgstr "Hledat" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "Připraveno „%s“" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:56 | ||||
| #: ../js/ui/windowManager.js:57 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Chcete zachovat nastavení displeje?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. */ | ||||
| #: ../js/ui/windowManager.js:75 | ||||
| #: ../js/ui/windowManager.js:76 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Obnovit původní" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:79 | ||||
| #: ../js/ui/windowManager.js:80 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Zachovat" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:97 | ||||
| #: ../js/ui/windowManager.js:99 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -1717,6 +1722,46 @@ msgstr[0] "Nastavení se obnoví na původní za %d sekundu" | ||||
| msgstr[1] "Nastavení se obnoví na původní za %d sekundy" | ||||
| msgstr[2] "Nastavení se obnoví na původní za %d sekund" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:33 | ||||
| msgid "Minimize" | ||||
| msgstr "Minimalizovat" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:40 | ||||
| msgid "Unmaximize" | ||||
| msgstr "Zrušit maximalizaci" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:44 | ||||
| msgid "Maximize" | ||||
| msgstr "Maximalizovat" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:51 | ||||
| msgid "Move" | ||||
| msgstr "Přesunout" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:57 | ||||
| msgid "Resize" | ||||
| msgstr "Změnit velikost" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:64 | ||||
| msgid "Move Titlebar Onscreen" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:69 | ||||
| msgid "Always on Top" | ||||
| msgstr "Vždy nahoře" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:86 | ||||
| msgid "Always on Visible Workspace" | ||||
| msgstr "Vždy na viditelné ploše" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:103 | ||||
| msgid "Move to Workspace Up" | ||||
| msgstr "Přesunout o plochu výš" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:108 | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Přesunout o plochu níž" | ||||
|  | ||||
| #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 | ||||
| msgid "Evolution Calendar" | ||||
| msgstr "Kalendář Evolution" | ||||
| @@ -1774,6 +1819,6 @@ msgstr "Hesla si neodpovídají." | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "Heslo nemůže být prázdné." | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "Dialogové okno ověření bylo uživatelem zrušeno" | ||||
|   | ||||
							
								
								
									
										1428
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										1428
									
								
								po/en_GB.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										290
									
								
								po/gl.po
									
									
									
									
									
								
							
							
						
						
									
										290
									
								
								po/gl.po
									
									
									
									
									
								
							| @@ -11,8 +11,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2014-03-31 23:35+0200\n" | ||||
| "PO-Revision-Date: 2014-03-31 23:35+0200\n" | ||||
| "POT-Creation-Date: 2014-04-30 15:34+0200\n" | ||||
| "PO-Revision-Date: 2014-04-30 15:34+0200\n" | ||||
| "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" | ||||
| "Language-Team: gnome-l10n-gl@gnome.org\n" | ||||
| "Language: gl\n" | ||||
| @@ -340,25 +340,25 @@ msgstr "Escolla unha sesión" | ||||
| msgid "Not listed?" | ||||
| msgstr "Non está na lista?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #: ../js/gdm/loginDialog.js:616 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(p.ex., usuario ou %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Nome de usuario: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:920 | ||||
| #: ../js/gdm/loginDialog.js:924 | ||||
| msgid "Login Window" | ||||
| msgstr "Xanela de inicio de sesión" | ||||
|  | ||||
| #: ../js/gdm/util.js:322 | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "Erro de autenticación" | ||||
|  | ||||
| #: ../js/gdm/util.js:452 | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(ou pase o dedo)" | ||||
|  | ||||
| @@ -375,27 +375,27 @@ msgstr "Non foi posíbel analizar a orde:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Produciuse un fallo na execución de «%s»:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:640 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Os aplicativos usados recentemente aparecerán aquí" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:751 | ||||
| msgid "Frequent" | ||||
| msgstr "Frecuentes" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:758 | ||||
| msgid "All" | ||||
| msgstr "Todos" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1571 | ||||
| msgid "New Window" | ||||
| msgstr "Xanela nova" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Retirar dos marcadores" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1599 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Engadir aos favoritos" | ||||
|  | ||||
| @@ -409,7 +409,7 @@ msgstr "%s foi engadido aos seus favoritos." | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s retirouse dos seus marcadores." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| msgid "Settings" | ||||
| msgstr "Preferencias" | ||||
| @@ -421,14 +421,14 @@ msgstr "Cambiar fondo de escritorio…" | ||||
| #. Translators: Shown in calendar event list for all day events | ||||
| #. * Keep it short, best if you can use less then 10 characters | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:64 | ||||
| #: ../js/ui/calendar.js:67 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Todo o día" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 24h format, | ||||
| #. \u2236 is a ratio character, similar to : */ | ||||
| #: ../js/ui/calendar.js:70 | ||||
| #: ../js/ui/calendar.js:73 | ||||
| msgctxt "event list time" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
| @@ -436,7 +436,7 @@ msgstr "%H∶%M" | ||||
| #. Translators: Shown in calendar event list, if 12h format, | ||||
| #. \u2236 is a ratio character, similar to : and \u2009 is | ||||
| #. a thin space */ | ||||
| #: ../js/ui/calendar.js:79 | ||||
| #: ../js/ui/calendar.js:82 | ||||
| msgctxt "event list time" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
| @@ -446,43 +446,43 @@ msgstr "%l∶%M %p" | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:110 | ||||
| #: ../js/ui/calendar.js:113 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "D" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:112 | ||||
| #: ../js/ui/calendar.js:115 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "L" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:114 | ||||
| #: ../js/ui/calendar.js:117 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "M" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:116 | ||||
| #: ../js/ui/calendar.js:119 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "W" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:118 | ||||
| #: ../js/ui/calendar.js:121 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "X" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:120 | ||||
| #: ../js/ui/calendar.js:123 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "V" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:122 | ||||
| #: ../js/ui/calendar.js:125 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| msgstr "S" | ||||
| @@ -493,97 +493,93 @@ msgstr "S" | ||||
| #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||||
| #. * both be 'T'). | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:135 | ||||
| #: ../js/ui/calendar.js:138 | ||||
| msgctxt "list sunday" | ||||
| msgid "Su" | ||||
| msgstr "Do" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:137 | ||||
| #: ../js/ui/calendar.js:140 | ||||
| msgctxt "list monday" | ||||
| msgid "M" | ||||
| msgstr "L" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:139 | ||||
| #: ../js/ui/calendar.js:142 | ||||
| msgctxt "list tuesday" | ||||
| msgid "T" | ||||
| msgstr "M" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:141 | ||||
| #: ../js/ui/calendar.js:144 | ||||
| msgctxt "list wednesday" | ||||
| msgid "W" | ||||
| msgstr "W" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:143 | ||||
| #: ../js/ui/calendar.js:146 | ||||
| msgctxt "list thursday" | ||||
| msgid "Th" | ||||
| msgstr "X" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:145 | ||||
| #: ../js/ui/calendar.js:148 | ||||
| msgctxt "list friday" | ||||
| msgid "F" | ||||
| msgstr "V" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:147 | ||||
| #: ../js/ui/calendar.js:150 | ||||
| msgctxt "list saturday" | ||||
| msgid "S" | ||||
| msgstr "S" | ||||
|  | ||||
| #: ../js/ui/calendar.js:390 | ||||
| msgid "calendar:MY" | ||||
| msgstr "calendar:MY" | ||||
|  | ||||
| #: ../js/ui/calendar.js:450 | ||||
| #: ../js/ui/calendar.js:453 | ||||
| msgid "Previous month" | ||||
| msgstr "Anterior mes" | ||||
|  | ||||
| #: ../js/ui/calendar.js:460 | ||||
| #: ../js/ui/calendar.js:463 | ||||
| msgid "Next month" | ||||
| msgstr "Seguinte mes" | ||||
|  | ||||
| #. Translators: Text to show if there are no events */ | ||||
| #: ../js/ui/calendar.js:772 | ||||
| #: ../js/ui/calendar.js:775 | ||||
| msgid "Nothing Scheduled" | ||||
| msgstr "Nada programado" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on current year */ | ||||
| #: ../js/ui/calendar.js:790 | ||||
| #: ../js/ui/calendar.js:793 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d de %B" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on different year */ | ||||
| #: ../js/ui/calendar.js:793 | ||||
| #: ../js/ui/calendar.js:796 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d de %B de %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:804 | ||||
| #: ../js/ui/calendar.js:807 | ||||
| msgid "Today" | ||||
| msgstr "Hoxe" | ||||
|  | ||||
| #: ../js/ui/calendar.js:808 | ||||
| #: ../js/ui/calendar.js:811 | ||||
| msgid "Tomorrow" | ||||
| msgstr "Mañá" | ||||
|  | ||||
| #: ../js/ui/calendar.js:819 | ||||
| #: ../js/ui/calendar.js:822 | ||||
| msgid "This week" | ||||
| msgstr "Esta semana" | ||||
|  | ||||
| #: ../js/ui/calendar.js:827 | ||||
| #: ../js/ui/calendar.js:830 | ||||
| msgid "Next week" | ||||
| msgstr "A vindeira semana" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "Unidade externa conectada" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Unidade externa desconectada" | ||||
|  | ||||
| @@ -728,77 +724,77 @@ msgid "Mute" | ||||
| msgstr "Silenciar" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #: ../js/ui/components/telepathyClient.js:958 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #: ../js/ui/components/telepathyClient.js:965 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Onte, %H:%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #: ../js/ui/components/telepathyClient.js:972 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A ás %H:%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #: ../js/ui/components/telepathyClient.js:979 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d de %B ás %H:%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #: ../js/ui/components/telepathyClient.js:985 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%d de %B de %Y ás %H:%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #: ../js/ui/components/telepathyClient.js:994 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l:%M %p" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #: ../js/ui/components/telepathyClient.js:1001 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "Onte, %H:%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #: ../js/ui/components/telepathyClient.js:1008 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #: ../js/ui/components/telepathyClient.js:1015 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d de %B, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #: ../js/ui/components/telepathyClient.js:1021 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%d de %B de %Y, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #: ../js/ui/components/telepathyClient.js:1054 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "Agora %s chámase %s" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #: ../js/ui/components/telepathyClient.js:1158 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| msgstr "Convite a %s" | ||||
| @@ -806,38 +802,38 @@ msgstr "Convite a %s" | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #: ../js/ui/components/telepathyClient.js:1166 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "%s estalle convidando a unirse a %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1291 | ||||
| #: ../js/ui/components/telepathyClient.js:1168 | ||||
| #: ../js/ui/components/telepathyClient.js:1203 | ||||
| #: ../js/ui/components/telepathyClient.js:1237 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Decline" | ||||
| msgstr "Rexeitar" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1296 | ||||
| #: ../js/ui/components/telepathyClient.js:1174 | ||||
| #: ../js/ui/components/telepathyClient.js:1243 | ||||
| #: ../js/ui/components/telepathyClient.js:1300 | ||||
| msgid "Accept" | ||||
| msgstr "Aceptar" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #: ../js/ui/components/telepathyClient.js:1193 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "Videochamada de %s" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #: ../js/ui/components/telepathyClient.js:1196 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "Chamada de %s" | ||||
|  | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #: ../js/ui/components/telepathyClient.js:1210 | ||||
| msgid "Answer" | ||||
| msgstr "Responder" | ||||
|  | ||||
| @@ -846,112 +842,112 @@ msgstr "Responder" | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #: ../js/ui/components/telepathyClient.js:1231 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s esta enviándolle %s" | ||||
|  | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #: ../js/ui/components/telepathyClient.js:1260 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s solicítalle permiso para ver cando está en liña" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1342 | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| msgid "Network error" | ||||
| msgstr "Erro da rede" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1344 | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Fallou a autenticación" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| msgid "Encryption error" | ||||
| msgstr "Erro de cifrado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Certificado non fornecido" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Non se confía no certificado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Certificado caducado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Certificado non activado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "O nome do servidor do certificado non coincide" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "A pegada do certificado non coincide" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Certificado autoasinado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "O estado está definido a «desconectado»" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "O cifrado non está dispoñíbel" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "O certificado non é válido" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Rexeitouse a conexión" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Non é posíbel estabelecer a conexión" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Perdeuse a conexión" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Esta cuenta xa está conectada ao servidor" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "" | ||||
| "Substituíuse a conexión por unha nova conexión empregando o mesmo recurso" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Esta conta xa existe no servidor" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "" | ||||
| "Nestes intres o servidor está moi ocupado tentando xestionar a conexión" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Revogouse o certificado" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente " | ||||
| "débil" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| #: ../js/ui/components/telepathyClient.js:1390 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -960,22 +956,22 @@ msgstr "" | ||||
| "certificado do servidor excede os límites impostos pola biblioteca de " | ||||
| "criptografía." | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| #: ../js/ui/components/telepathyClient.js:1392 | ||||
| msgid "Internal error" | ||||
| msgstr "Erro interno" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1398 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Non foi posíbel conectarse a %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1403 | ||||
| #: ../js/ui/components/telepathyClient.js:1407 | ||||
| msgid "View account" | ||||
| msgstr "Ver conta" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1440 | ||||
| #: ../js/ui/components/telepathyClient.js:1444 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Razón descoñecida" | ||||
|  | ||||
| @@ -991,22 +987,22 @@ msgstr "Mostrar aplicativos" | ||||
| msgid "Dash" | ||||
| msgstr "Taboleiro" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:91 | ||||
| #: ../js/ui/dateMenu.js:97 | ||||
| msgid "Open Calendar" | ||||
| msgstr "Abrir Calendario" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:95 | ||||
| #: ../js/ui/dateMenu.js:101 | ||||
| msgid "Open Clocks" | ||||
| msgstr "Abrir Reloxos" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:102 | ||||
| #: ../js/ui/dateMenu.js:108 | ||||
| msgid "Date & Time Settings" | ||||
| msgstr "Preferencias de data e hora" | ||||
|  | ||||
| #. 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:192 | ||||
| #: ../js/ui/dateMenu.js:205 | ||||
| msgid "%A %B %e, %Y" | ||||
| msgstr "%a, %e de %B, %Y" | ||||
|  | ||||
| @@ -1129,13 +1125,13 @@ msgid "Other users are logged in." | ||||
| msgstr "Hai outros usuarios conectados." | ||||
|  | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (remoto)" | ||||
|  | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| msgstr "%s (consola)" | ||||
| @@ -1149,7 +1145,7 @@ msgstr "Instalar" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 | ||||
| msgid "Keyboard" | ||||
| msgstr "Teclado" | ||||
|  | ||||
| @@ -1237,11 +1233,11 @@ msgstr "Non hai mensaxes" | ||||
| msgid "Message Tray" | ||||
| msgstr "Bandexa de mensaxes" | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "Información do sistema" | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Descoñecido" | ||||
| @@ -1279,7 +1275,7 @@ msgstr "Saír" | ||||
| msgid "Activities" | ||||
| msgstr "Actividades" | ||||
|  | ||||
| #: ../js/ui/panel.js:914 | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "Barra superior" | ||||
|  | ||||
| @@ -1316,19 +1312,19 @@ msgstr "Bloquear" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME precisa bloquear a pantalla" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Non foi posíbel bloquear" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "Un aplicativo impediu o bloqueo" | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Buscando…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Sen resultados." | ||||
|  | ||||
| @@ -1392,11 +1388,11 @@ msgstr "Rexeite de teclas" | ||||
| msgid "Mouse Keys" | ||||
| msgstr "Teclas do rato" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "Contraste alto" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "Texto grande" | ||||
|  | ||||
| @@ -1466,37 +1462,37 @@ msgstr "Conectado" | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "unmanaged" | ||||
| msgstr "non xestionada" | ||||
| msgid "Unmanaged" | ||||
| msgstr "Sen xestionar" | ||||
|  | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "disconnecting..." | ||||
| msgstr "desconectando…" | ||||
| msgid "Disconnecting" | ||||
| msgstr "Desconectando…" | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "conectando…" | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Conectando" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "requírese autenticación" | ||||
| #: ../js/ui/status/network.js:437 | ||||
| msgid "Authentication required" | ||||
| msgstr "Requírese autenticación" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing */ | ||||
| #: ../js/ui/status/network.js:445 | ||||
| msgid "firmware missing" | ||||
| msgstr "falta o «firmware»" | ||||
| msgid "Firmware missing" | ||||
| msgstr "Falta o «firmware»" | ||||
|  | ||||
| #. 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:449 | ||||
| msgid "unavailable" | ||||
| msgstr "non dispoñíbel" | ||||
| msgid "Unavailable" | ||||
| msgstr "Non dispoñíbel" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "conexión fallada" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Produciuse un fallo na conexión" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| msgid "Wired Settings" | ||||
| @@ -1570,9 +1566,18 @@ msgstr "Activar" | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Punto wifi activo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Conectando" | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "conectando…" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "requírese autenticación" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "conexión fallada" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| msgid "Network Settings" | ||||
| @@ -1590,10 +1595,6 @@ msgstr "VPN" | ||||
| msgid "Network Manager" | ||||
| msgstr "Xestor da rede" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Produciuse un fallo na conexión" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Produciuse un fallo na activación da conexión de rede" | ||||
| @@ -1704,7 +1705,7 @@ msgstr "Reverter preferencias" | ||||
| msgid "Keep Changes" | ||||
| msgstr "Manter cambios" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:97 | ||||
| #: ../js/ui/windowManager.js:98 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -1768,10 +1769,16 @@ msgstr "Os contrasinais non coinciden." | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "O contrasinal non pode estar baleiro" | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "O usuario rexeitou o diálogo de autenticación" | ||||
|  | ||||
| #~ msgid "calendar:MY" | ||||
| #~ msgstr "calendar:MY" | ||||
|  | ||||
| #~ msgid "unavailable" | ||||
| #~ msgstr "non dispoñíbel" | ||||
|  | ||||
| #~ msgctxt "event list time" | ||||
| #~ msgid "%H\\u2236%M" | ||||
| #~ msgstr "%H\\u2236%M" | ||||
| @@ -2219,9 +2226,6 @@ msgstr "O usuario rexeitou o diálogo de autenticación" | ||||
| #~ msgid "VPN Connections" | ||||
| #~ msgstr "Conexións VPN" | ||||
|  | ||||
| #~ msgid "Unavailable" | ||||
| #~ msgstr "Non dispoñíbel" | ||||
|  | ||||
| #~ msgid "System Settings" | ||||
| #~ msgstr "Preferencias do sistema" | ||||
|  | ||||
|   | ||||
							
								
								
									
										393
									
								
								po/he.po
									
									
									
									
									
								
							
							
						
						
									
										393
									
								
								po/he.po
									
									
									
									
									
								
							| @@ -1,16 +1,17 @@ | ||||
| # Hebrew translation for gnome-shell. | ||||
| # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the gnome-shell package. | ||||
| # liel <lielft@gmail.com>, 2009. | ||||
| # Yaron Shahrabani <sh.yaron@gmail.com>, 2010. | ||||
| # Yosef Or Boczko <yoseforb@gnome.org>, 2013, 2014. | ||||
| # Hebrew translation for gnome-shell. | ||||
| # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the gnome-shell package. | ||||
| # liel <lielft@gmail.com>, 2009. | ||||
| # Yaron Shahrabani <sh.yaron@gmail.com>, 2010. | ||||
| #  | ||||
| # Yosef Or Boczko <yoseforb@gnome.org>, 2013, 2014. | ||||
| , 2014. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master\n" | ||||
| "POT-Creation-Date: 2014-03-27 20:22+0200\n" | ||||
| "PO-Revision-Date: 2014-03-27 20:24+0200\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2014-05-22 23:44+0300\n" | ||||
| "PO-Revision-Date: 2014-05-22 23:45+0300\n" | ||||
| "Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n" | ||||
| "Language-Team: עברית <>\n" | ||||
| @@ -331,25 +332,25 @@ msgstr "בחירת הפעלה" | ||||
| #: ../js/gdm/loginDialog.js:431 | ||||
| msgid "Not listed?" | ||||
| msgstr "לא רשום?" | ||||
| #: ../js/gdm/loginDialog.js:611 | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:616 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(משתמש או %s לדוגמה)" | ||||
| #: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262 | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "שם משתמש:" | ||||
| #: ../js/gdm/loginDialog.js:917 | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:924 | ||||
| msgid "Login Window" | ||||
| msgstr "חלון כניסה" | ||||
| #: ../js/gdm/util.js:322 | ||||
|  | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "שגיאת אימות" | ||||
| #: ../js/gdm/util.js:452 | ||||
|  | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(או להעביר אצבע)" | ||||
| @@ -366,30 +367,34 @@ msgstr "לא ניתן לפענח את הפקודה:" | ||||
| #, javascript-format | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "ההרצה של „%s” נכשלה:" | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:640 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "יישומים בשימוש תדיר יופיעו כאן" | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:751 | ||||
| msgid "Frequent" | ||||
| msgstr "תדיר" | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:758 | ||||
| msgid "All" | ||||
| msgstr "הכול" | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1571 | ||||
| msgid "New Window" | ||||
| msgstr "חלון חדש" | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "הסרה מהמועדפים" | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1599 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "הוספה למועדפים" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1608 | ||||
| msgid "Show Details" | ||||
| msgstr "הצגת פרטים" | ||||
|  | ||||
| #: ../js/ui/appFavorites.js:87 | ||||
| #, javascript-format | ||||
| @@ -400,8 +405,8 @@ msgstr "%s נוסף למועדפים שלך." | ||||
| #, javascript-format | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s הוסר מהמועדפים שלך." | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/status/system.js:334 | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:337 | ||||
| msgid "Settings" | ||||
| msgstr "הגדרות" | ||||
| @@ -412,22 +417,22 @@ msgstr "החלפת הרקע…" | ||||
|  | ||||
| #. Translators: Shown in calendar event list for all day events | ||||
| #. * Keep it short, best if you can use less then 10 characters | ||||
| #: ../js/ui/calendar.js:64 | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:67 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "יום שלם" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 24h format, | ||||
| #: ../js/ui/calendar.js:70 | ||||
| #. \u2236 is a ratio character, similar to : */ | ||||
| #: ../js/ui/calendar.js:73 | ||||
| msgctxt "event list time" | ||||
| msgstr "%H\\u2236%M" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H:%M" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 12h format, | ||||
| #. \u2236 is a ratio character, similar to : and \u2009 is | ||||
| #: ../js/ui/calendar.js:79 | ||||
| #. a thin space */ | ||||
| #: ../js/ui/calendar.js:82 | ||||
| msgctxt "event list time" | ||||
| msgid "%l∶%M %p" | ||||
| @@ -437,43 +442,43 @@ msgstr "%l\\u2236%M %p" | ||||
| #. * | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #: ../js/ui/calendar.js:110 | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:113 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "א" | ||||
|  | ||||
| #: ../js/ui/calendar.js:112 | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:115 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "ב" | ||||
|  | ||||
| #: ../js/ui/calendar.js:114 | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:117 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "ג" | ||||
|  | ||||
| #: ../js/ui/calendar.js:116 | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:119 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "ד" | ||||
|  | ||||
| #: ../js/ui/calendar.js:118 | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:121 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "ה" | ||||
|  | ||||
| #: ../js/ui/calendar.js:120 | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:123 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "ו" | ||||
|  | ||||
| #: ../js/ui/calendar.js:122 | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:125 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| @@ -484,97 +489,93 @@ msgstr "ש" | ||||
| #. * NOTE: These list abbreviations are normally not shown together | ||||
| #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||||
| #. * both be 'T'). | ||||
| #: ../js/ui/calendar.js:135 | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:138 | ||||
| msgctxt "list sunday" | ||||
| msgid "Su" | ||||
| msgstr "א׳" | ||||
|  | ||||
| #: ../js/ui/calendar.js:137 | ||||
| #. Translators: Event list abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:140 | ||||
| msgctxt "list monday" | ||||
| msgid "M" | ||||
| msgstr "ב׳" | ||||
|  | ||||
| #: ../js/ui/calendar.js:139 | ||||
| #. Translators: Event list abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:142 | ||||
| msgctxt "list tuesday" | ||||
| msgid "T" | ||||
| msgstr "ג׳" | ||||
|  | ||||
| #: ../js/ui/calendar.js:141 | ||||
| #. Translators: Event list abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:144 | ||||
| msgctxt "list wednesday" | ||||
| msgid "W" | ||||
| msgstr "ד׳" | ||||
|  | ||||
| #: ../js/ui/calendar.js:143 | ||||
| #. Translators: Event list abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:146 | ||||
| msgctxt "list thursday" | ||||
| msgid "Th" | ||||
| msgstr "ה" | ||||
|  | ||||
| #: ../js/ui/calendar.js:145 | ||||
| #. Translators: Event list abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:148 | ||||
| msgctxt "list friday" | ||||
| msgid "F" | ||||
| msgstr "ו׳" | ||||
|  | ||||
| #: ../js/ui/calendar.js:147 | ||||
| #. Translators: Event list abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:150 | ||||
| msgctxt "list saturday" | ||||
| msgid "S" | ||||
| msgstr "ש׳" | ||||
| #: ../js/ui/calendar.js:390 | ||||
| msgid "calendar:MY" | ||||
| msgstr "calendar:YM" | ||||
|  | ||||
| #: ../js/ui/calendar.js:450 | ||||
|  | ||||
| #: ../js/ui/calendar.js:453 | ||||
| msgid "Previous month" | ||||
| msgstr "חודש קודם" | ||||
| #: ../js/ui/calendar.js:460 | ||||
|  | ||||
| #: ../js/ui/calendar.js:463 | ||||
| msgid "Next month" | ||||
| msgstr "חודש הבא" | ||||
|  | ||||
| #: ../js/ui/calendar.js:772 | ||||
| #. Translators: Text to show if there are no events */ | ||||
| #: ../js/ui/calendar.js:775 | ||||
| msgid "Nothing Scheduled" | ||||
| msgstr "היומן ריק" | ||||
|  | ||||
| #: ../js/ui/calendar.js:790 | ||||
| #. Translators: Shown on calendar heading when selected day occurs on current year */ | ||||
| #: ../js/ui/calendar.js:793 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, ה־%e ב%B" | ||||
|  | ||||
| #: ../js/ui/calendar.js:793 | ||||
| #. Translators: Shown on calendar heading when selected day occurs on different year */ | ||||
| #: ../js/ui/calendar.js:796 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, ה־%e ב%B, %Y" | ||||
| #: ../js/ui/calendar.js:804 | ||||
|  | ||||
| #: ../js/ui/calendar.js:807 | ||||
| msgid "Today" | ||||
| msgstr "היום" | ||||
| #: ../js/ui/calendar.js:808 | ||||
|  | ||||
| #: ../js/ui/calendar.js:811 | ||||
| msgid "Tomorrow" | ||||
| msgstr "מחר" | ||||
| #: ../js/ui/calendar.js:819 | ||||
|  | ||||
| #: ../js/ui/calendar.js:822 | ||||
| msgid "This week" | ||||
| msgstr "השבוע" | ||||
| #: ../js/ui/calendar.js:827 | ||||
|  | ||||
| #: ../js/ui/calendar.js:830 | ||||
| msgid "Next week" | ||||
| msgstr "בשבוע הבא" | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "חובר כונן חיצוני" | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "נותק כונן חיצוני" | ||||
| @@ -717,77 +718,77 @@ msgid "Mute" | ||||
| msgid "Mute" | ||||
| msgstr "השתקה" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:958 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H:%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:965 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "אתמול, %H\\u2236%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:972 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H:%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:979 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d ב%B, %H:%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:985 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%d ב%B, %H:%M" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:994 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l:%M %p" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1001 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "אתמול, %l\\u2236%M %p" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1008 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%l:%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1015 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d ב%B, %H:%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1021 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%d ב%B %Y, %l\\u2236%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1054 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "השם של %s הוחלף ל־%s" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1158 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| @@ -795,38 +796,38 @@ msgstr "הזמנה ל־%s" | ||||
|  | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1166 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "הוזמנת על ידי %s להצטרף אל %s" | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1290 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1168 | ||||
| #: ../js/ui/components/telepathyClient.js:1203 | ||||
| #: ../js/ui/components/telepathyClient.js:1237 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Decline" | ||||
| msgstr "דחייה" | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1174 | ||||
| #: ../js/ui/components/telepathyClient.js:1243 | ||||
| #: ../js/ui/components/telepathyClient.js:1300 | ||||
| msgid "Accept" | ||||
| msgstr "אישור" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1193 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "שיחת וידאו מאת %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1196 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "שיחה מאת %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1210 | ||||
| msgid "Answer" | ||||
| msgstr "מענה" | ||||
| @@ -835,108 +836,108 @@ msgstr "מענה" | ||||
| #. * the contact's alias and the second one is the | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1231 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s שולח/ת אליך %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1260 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון" | ||||
| #: ../js/ui/components/telepathyClient.js:1341 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| msgid "Network error" | ||||
| msgstr "שגיאת רשת" | ||||
| #: ../js/ui/components/telepathyClient.js:1343 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| msgid "Authentication failed" | ||||
| msgstr "האימות נכשל" | ||||
| #: ../js/ui/components/telepathyClient.js:1345 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| msgid "Encryption error" | ||||
| msgstr "שגיאת הצפנה" | ||||
| #: ../js/ui/components/telepathyClient.js:1347 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "לא סופק אישור" | ||||
| #: ../js/ui/components/telepathyClient.js:1349 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "האישור אינו מהימן" | ||||
| #: ../js/ui/components/telepathyClient.js:1351 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| msgid "Certificate expired" | ||||
| msgstr "האישור פג" | ||||
| #: ../js/ui/components/telepathyClient.js:1353 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "האישור לא מופעל" | ||||
| #: ../js/ui/components/telepathyClient.js:1355 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "שם המארח באישור אינו תואם" | ||||
| #: ../js/ui/components/telepathyClient.js:1357 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "חוסר התאמה בטביעת האצבע של האישור" | ||||
| #: ../js/ui/components/telepathyClient.js:1359 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "אישור בחתימה עצמית" | ||||
| #: ../js/ui/components/telepathyClient.js:1361 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "המצב הוגדר ל'מנותק'" | ||||
| #: ../js/ui/components/telepathyClient.js:1363 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "ההצפנה אינה זמינה" | ||||
| #: ../js/ui/components/telepathyClient.js:1365 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "האישור אינו תקף" | ||||
| #: ../js/ui/components/telepathyClient.js:1367 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "ההתחברות נשללה" | ||||
| #: ../js/ui/components/telepathyClient.js:1369 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "לא ניתן להפעיל את החיבור" | ||||
| #: ../js/ui/components/telepathyClient.js:1371 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "החיבור אבד" | ||||
| #: ../js/ui/components/telepathyClient.js:1373 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "חשבון זה כבר מחובר לשרת" | ||||
| #: ../js/ui/components/telepathyClient.js:1375 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב" | ||||
| #: ../js/ui/components/telepathyClient.js:1377 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "החשבון כבר קיים בשרת" | ||||
| #: ../js/ui/components/telepathyClient.js:1379 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור" | ||||
| #: ../js/ui/components/telepathyClient.js:1381 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "האישור נשלל" | ||||
| #: ../js/ui/components/telepathyClient.js:1383 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה" | ||||
| #: ../js/ui/components/telepathyClient.js:1385 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1390 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| @@ -944,22 +945,22 @@ msgstr "" | ||||
| msgstr "" | ||||
| "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי " | ||||
| "ספריית ההצפנה" | ||||
| #: ../js/ui/components/telepathyClient.js:1387 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1392 | ||||
| msgid "Internal error" | ||||
| msgstr "שגיאה פנימית" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #: ../js/ui/components/telepathyClient.js:1397 | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "לא ניתן להתחבר אל %s" | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1407 | ||||
| msgid "View account" | ||||
| msgstr "צפייה בחשבון" | ||||
| #: ../js/ui/components/telepathyClient.js:1439 | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1444 | ||||
| msgid "Unknown reason" | ||||
| msgstr "סיבה לא ידועה" | ||||
| @@ -975,22 +976,22 @@ msgstr "הצגת יישומים" | ||||
| #: ../js/ui/dash.js:445 | ||||
| msgid "Dash" | ||||
| msgstr "חלונית" | ||||
| #: ../js/ui/dateMenu.js:91 | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:97 | ||||
| msgid "Open Calendar" | ||||
| msgstr "פתיחת היומן" | ||||
| #: ../js/ui/dateMenu.js:95 | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:101 | ||||
| msgid "Open Clocks" | ||||
| msgstr "פתיחת השעונים" | ||||
| #: ../js/ui/dateMenu.js:102 | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:108 | ||||
| msgid "Date & Time Settings" | ||||
| msgstr "הגדרות תאריך ושעה" | ||||
|  | ||||
| #. 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:192 | ||||
| #. */ | ||||
| #: ../js/ui/dateMenu.js:205 | ||||
| msgid "%A %B %e, %Y" | ||||
| msgstr "%A ה־%e ב%B, %Y" | ||||
| @@ -1109,13 +1110,13 @@ msgid "Other users are logged in." | ||||
| msgid "Other users are logged in." | ||||
| msgstr "משתמשים נוספים מחוברים." | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (מרוחק)" | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| @@ -1129,7 +1130,7 @@ msgstr "התקנה" | ||||
| #, javascript-format | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "הורדה והתקנה של „%s” מ־extensions.gnome.org?" | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
|  | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 | ||||
| msgid "Keyboard" | ||||
| msgstr "מקלדת" | ||||
| @@ -1217,17 +1218,17 @@ msgstr "אין הודעות" | ||||
| #: ../js/ui/messageTray.js:1964 | ||||
| msgid "Message Tray" | ||||
| msgstr "אזור דיווח ההודעות" | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "פרטי המערכת" | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "לא ידוע" | ||||
| # javascript-format | ||||
| #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151 | ||||
|  | ||||
| # javascript-format | ||||
| #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 | ||||
| #, c-format | ||||
| msgid "%d new message" | ||||
| @@ -1260,7 +1261,7 @@ msgstr "יציאה" | ||||
| #: ../js/ui/panel.js:568 | ||||
| msgid "Activities" | ||||
| msgstr "פעילויות" | ||||
| #: ../js/ui/panel.js:914 | ||||
|  | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "הסרגל העליון" | ||||
| @@ -1272,7 +1273,7 @@ msgstr "toggle-switch-intl" | ||||
| #: ../js/ui/runDialog.js:74 | ||||
| msgid "Enter a Command" | ||||
| msgstr "נא להזין פקודה" | ||||
| #: ../js/ui/runDialog.js:114 | ||||
|  | ||||
| #: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117 | ||||
| msgid "Close" | ||||
| msgstr "סגירה" | ||||
| @@ -1282,7 +1283,7 @@ msgstr "סגירה" | ||||
| #: ../js/ui/screenShield.js:88 | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, ה־%d ב%B" | ||||
| # javascript-format | ||||
|  | ||||
| # javascript-format | ||||
| #: ../js/ui/screenShield.js:153 | ||||
| #, c-format | ||||
| @@ -1290,7 +1291,7 @@ msgid_plural "%d new notifications" | ||||
| msgid_plural "%d new notifications" | ||||
| msgstr[0] "התרעה חדשה אחת" | ||||
| msgstr[1] "%d התרעות חדשות" | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 | ||||
|  | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 | ||||
| msgid "Lock" | ||||
| msgstr "נעילה" | ||||
| @@ -1298,19 +1299,19 @@ msgstr "נעילה" | ||||
| #: ../js/ui/screenShield.js:708 | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "על GNOME לנעול את המסך" | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "לא ניתן לנעול" | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "הנעילה נחסמה ע״י היישום" | ||||
| #: ../js/ui/search.js:603 | ||||
|  | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "בחיפוש…" | ||||
| #: ../js/ui/search.js:649 | ||||
|  | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "אין תוצאות." | ||||
| @@ -1374,11 +1375,11 @@ msgstr "מקשים קופצים" | ||||
| #: ../js/ui/status/accessibility.js:84 | ||||
| msgid "Mouse Keys" | ||||
| msgstr "מקשי עכבר" | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "ניגודיות גבוהה" | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "טקסט גדול" | ||||
| @@ -1388,8 +1389,8 @@ msgstr "Bluetooth" | ||||
| msgstr "Bluetooth" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 | ||||
| #: ../js/ui/status/rfkill.js:114 | ||||
| msgid "Turn Off" | ||||
| msgstr "כיבוי" | ||||
| @@ -1397,7 +1398,7 @@ msgstr "כיבוי" | ||||
| #: ../js/ui/status/bluetooth.js:54 | ||||
| msgid "Bluetooth Settings" | ||||
| msgstr "הגדרות Bluetooth" | ||||
| # javascript-format | ||||
|  | ||||
| # javascript-format | ||||
| #: ../js/ui/status/bluetooth.js:104 | ||||
| #, c-format | ||||
| @@ -1449,37 +1450,37 @@ msgstr "מחובר" | ||||
|  | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| msgid "unmanaged" | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "Unmanaged" | ||||
| msgstr "לא מנוהל" | ||||
|  | ||||
| msgid "disconnecting..." | ||||
| msgstr "בהליכי ניתוק..." | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "Disconnecting" | ||||
| msgstr "בהליכי ניתוק" | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "בהתחברות..." | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "בהתחברות" | ||||
|  | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 | ||||
| msgid "Authentication required" | ||||
| msgstr "נדרש אימות" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing */ | ||||
| msgid "firmware missing" | ||||
| #: ../js/ui/status/network.js:445 | ||||
| msgid "Firmware missing" | ||||
| msgstr "הקושחה חסרה" | ||||
|  | ||||
| #. Translators: this is for a network device that cannot be activated (for example it | ||||
| #. is disabled by rfkill, or it has no coverage */ | ||||
| msgid "unavailable" | ||||
| #: ../js/ui/status/network.js:449 | ||||
| msgid "Unavailable" | ||||
| msgstr "לא זמין" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "החיבור נכשל" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "ההתחברות נכשלה" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| @@ -1533,7 +1534,7 @@ msgstr "בחירת רשת" | ||||
| #: ../js/ui/status/network.js:845 | ||||
| msgid "No Networks" | ||||
| msgstr "אין רשתות" | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 | ||||
|  | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "שימוש במתג של החומרה לכיבוי" | ||||
| @@ -1553,11 +1554,20 @@ msgstr "הפעלה" | ||||
| #: ../js/ui/status/network.js:1251 | ||||
| msgid "Hotspot Active" | ||||
| msgstr "נקודה חמה פעילה" | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "מתחבר" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "בהתחברות..." | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "נדרש אימות" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "ההתחברות נכשלה" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 | ||||
| msgid "Network Settings" | ||||
| msgstr "הגדרות הרשת" | ||||
| @@ -1573,10 +1583,6 @@ msgstr "VPN" | ||||
| #: ../js/ui/status/network.js:1607 | ||||
| msgid "Network Manager" | ||||
| msgstr "מנהל הרשתות" | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "ההתחברות נכשל" | ||||
|  | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| @@ -1594,14 +1600,14 @@ msgid "Estimating…" | ||||
| msgid "Estimating…" | ||||
| msgstr "מתבצע שערוך…" | ||||
|  | ||||
| #, c-format | ||||
| #: ../js/ui/status/power.js:86 | ||||
| #, javascript-format | ||||
| msgstr "%d\\u2236%02d נותרו (%d%%)" | ||||
| msgid "%d∶%02d Remaining (%d%%)" | ||||
| msgstr "%d∶%02d נותרו (%d%%)" | ||||
|  | ||||
| #, c-format | ||||
| #: ../js/ui/status/power.js:91 | ||||
| #, javascript-format | ||||
| msgstr "%d\\u2236%02d עד לטעינה מלאה (%d%%)" | ||||
| msgid "%d∶%02d Until Full (%d%%)" | ||||
| msgstr "%d:%02d עד לטעינה מלאה (%d%%)" | ||||
|  | ||||
| #: ../js/ui/status/power.js:119 | ||||
| @@ -1611,31 +1617,31 @@ msgstr "אל־פסק" | ||||
| #: ../js/ui/status/power.js:121 | ||||
| msgid "Battery" | ||||
| msgstr "סוללה" | ||||
| #: ../js/ui/status/rfkill.js:82 | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:83 | ||||
| msgid "Airplane Mode" | ||||
| msgstr "מצב טיסה" | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:85 | ||||
| msgid "On" | ||||
| msgstr "פועל" | ||||
| #: ../js/ui/status/system.js:314 | ||||
|  | ||||
| #: ../js/ui/status/system.js:317 | ||||
| msgid "Switch User" | ||||
| msgstr "החלפת משתמש" | ||||
| #: ../js/ui/status/system.js:319 | ||||
|  | ||||
| #: ../js/ui/status/system.js:322 | ||||
| msgid "Log Out" | ||||
| msgstr "יציאה" | ||||
| #: ../js/ui/status/system.js:338 | ||||
|  | ||||
| #: ../js/ui/status/system.js:341 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "נעילת כיוון" | ||||
| #: ../js/ui/status/system.js:346 | ||||
|  | ||||
| #: ../js/ui/status/system.js:349 | ||||
| msgid "Suspend" | ||||
| msgstr "השהיה" | ||||
| #: ../js/ui/status/system.js:349 | ||||
|  | ||||
| #: ../js/ui/status/system.js:352 | ||||
| msgid "Power Off" | ||||
| msgstr "כיבוי" | ||||
| @@ -1672,29 +1678,69 @@ msgstr "חיפוש" | ||||
| #, javascript-format | ||||
| msgid "“%s” is ready" | ||||
| msgstr "„%s” מוכן" | ||||
| #: ../js/ui/windowManager.js:56 | ||||
|  | ||||
| #: ../js/ui/windowManager.js:57 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "האם ברצונך לשמור הגדרות תצוגה אלה?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #: ../js/ui/windowManager.js:75 | ||||
| #. */ | ||||
| #: ../js/ui/windowManager.js:76 | ||||
| msgid "Revert Settings" | ||||
| msgstr "שחזור הגדרות" | ||||
| #: ../js/ui/windowManager.js:79 | ||||
|  | ||||
| #: ../js/ui/windowManager.js:80 | ||||
| msgid "Keep Changes" | ||||
| msgstr "שמירת שינויים" | ||||
| # javascript-format | ||||
| #: ../js/ui/windowManager.js:97 | ||||
|  | ||||
| # javascript-format | ||||
| #: ../js/ui/windowManager.js:99 | ||||
| #, c-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| msgstr[0] "שינויי הגדרות ישוחזרו בעוד שנייה" | ||||
| msgstr[1] "שינויי הגדרות ישוחזרו בעוד %d שניות" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:33 | ||||
| msgid "Minimize" | ||||
| msgstr "מזעור" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:40 | ||||
| msgid "Unmaximize" | ||||
| msgstr "ביטול הגדלה" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:44 | ||||
| msgid "Maximize" | ||||
| msgstr "הגדלה" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:51 | ||||
| msgid "Move" | ||||
| msgstr "הזזה" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:57 | ||||
| msgid "Resize" | ||||
| msgstr "שינוי גודל" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:64 | ||||
| msgid "Move Titlebar Onscreen" | ||||
| msgstr "הזזת שורת הכותרת על המסך" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:69 | ||||
| msgid "Always on Top" | ||||
| msgstr "תמיד עליון" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:86 | ||||
| msgid "Always on Visible Workspace" | ||||
| msgstr "הצגה בכל מרחבי העבודה" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:103 | ||||
| msgid "Move to Workspace Up" | ||||
| msgstr "הזזה למרחב העבודה שמלמעלה" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:108 | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "הזזה למרחב העבודה שמלמטה" | ||||
|  | ||||
| #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 | ||||
| msgid "Evolution Calendar" | ||||
| @@ -1750,10 +1796,16 @@ msgstr "הססמאות אינן תואמות." | ||||
| #: ../src/shell-keyring-prompt.c:722 | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "הססמה לא יכולה להישאר ריקה" | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות" | ||||
|  | ||||
| #~ msgid "calendar:MY" | ||||
| #~ msgstr "calendar:YM" | ||||
|  | ||||
| #~ msgid "unavailable" | ||||
| #~ msgstr "לא זמין" | ||||
|  | ||||
| #~ msgctxt "event list time" | ||||
| #~ msgid "%H\\u2236%M" | ||||
| @@ -2207,9 +2259,6 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות" | ||||
|  | ||||
| #~ msgid "VPN Connections" | ||||
| #~ msgstr "חיבורי VPN" | ||||
| #~ msgid "Unavailable" | ||||
| #~ msgstr "לא זמין" | ||||
|  | ||||
|  | ||||
| #~ msgid "System Settings" | ||||
| #~ msgstr "הגדרות המערכת" | ||||
|   | ||||
							
								
								
									
										367
									
								
								po/id.po
									
									
									
									
									
								
							
							
						
						
									
										367
									
								
								po/id.po
									
									
									
									
									
								
							| @@ -10,9 +10,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: 2014-04-05 19:59+0000\n" | ||||
| "PO-Revision-Date: 2014-04-09 05:35+0700\n" | ||||
| "Last-Translator: Dirgita <dirgitadevina@yahoo.co.id>\n" | ||||
| "POT-Creation-Date: 2014-05-22 07:28+0000\n" | ||||
| "PO-Revision-Date: 2014-05-22 16:21+0700\n" | ||||
| "Last-Translator: Andika Triwidada <andika@gmail.com>\n" | ||||
| "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" | ||||
| "Language: id\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| @@ -20,7 +20,7 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=1; plural=0;\n" | ||||
| "X-Poedit-SourceCharset: UTF-8\n" | ||||
| "X-Generator: Lokalize 1.5\n" | ||||
| "X-Generator: Poedit 1.5.7\n" | ||||
|  | ||||
| #: ../data/50-gnome-shell-system.xml.in.h:1 | ||||
| msgid "System" | ||||
| @@ -341,25 +341,25 @@ msgstr "Pilih Sesi" | ||||
| msgid "Not listed?" | ||||
| msgstr "Tak masuk daftar?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #: ../js/gdm/loginDialog.js:616 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(cth., pengguna dari %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Nama pengguna: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:920 | ||||
| #: ../js/gdm/loginDialog.js:924 | ||||
| msgid "Login Window" | ||||
| msgstr "Jendela Log Masuk" | ||||
|  | ||||
| #: ../js/gdm/util.js:322 | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "Galat otentikasi" | ||||
|  | ||||
| #: ../js/gdm/util.js:452 | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(atau gesekkan jari)" | ||||
|  | ||||
| @@ -376,30 +376,34 @@ msgstr "Tak dapat mengurai perintah:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Eksekusi \"%s\" gagal:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:640 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Aplikasi yang sering dipakai akan muncul di sini" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:751 | ||||
| msgid "Frequent" | ||||
| msgstr "Sering" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:758 | ||||
| msgid "All" | ||||
| msgstr "Semua" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1571 | ||||
| msgid "New Window" | ||||
| msgstr "Jendela Baru" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Hapus dari Favorit" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1599 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Tambah ke Favorit" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1608 | ||||
| msgid "Show Details" | ||||
| msgstr "Tampilkan Rincian" | ||||
|  | ||||
| #: ../js/ui/appFavorites.js:87 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| @@ -410,8 +414,8 @@ msgstr "%s telah ditambahkan ke favorit Anda." | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s telah dihapus dari favorit Anda." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:337 | ||||
| msgid "Settings" | ||||
| msgstr "Pengaturan" | ||||
|  | ||||
| @@ -422,14 +426,14 @@ msgstr "Ubah Latar…" | ||||
| #. Translators: Shown in calendar event list for all day events | ||||
| #. * Keep it short, best if you can use less then 10 characters | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:64 | ||||
| #: ../js/ui/calendar.js:67 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Sepanjang Hari" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 24h format, | ||||
| #. \u2236 is a ratio character, similar to : */ | ||||
| #: ../js/ui/calendar.js:70 | ||||
| #: ../js/ui/calendar.js:73 | ||||
| msgctxt "event list time" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
| @@ -437,7 +441,7 @@ msgstr "%H∶%M" | ||||
| #. Translators: Shown in calendar event list, if 12h format, | ||||
| #. \u2236 is a ratio character, similar to : and \u2009 is | ||||
| #. a thin space */ | ||||
| #: ../js/ui/calendar.js:79 | ||||
| #: ../js/ui/calendar.js:82 | ||||
| msgctxt "event list time" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
| @@ -447,43 +451,43 @@ msgstr "%l∶%M %p" | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:110 | ||||
| #: ../js/ui/calendar.js:113 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "M" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:112 | ||||
| #: ../js/ui/calendar.js:115 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:114 | ||||
| #: ../js/ui/calendar.js:117 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:116 | ||||
| #: ../js/ui/calendar.js:119 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "R" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:118 | ||||
| #: ../js/ui/calendar.js:121 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "K" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:120 | ||||
| #: ../js/ui/calendar.js:123 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "J" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:122 | ||||
| #: ../js/ui/calendar.js:125 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| msgstr "S" | ||||
| @@ -494,97 +498,93 @@ msgstr "S" | ||||
| #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||||
| #. * both be 'T'). | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:135 | ||||
| #: ../js/ui/calendar.js:138 | ||||
| msgctxt "list sunday" | ||||
| msgid "Su" | ||||
| msgstr "Min" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:137 | ||||
| #: ../js/ui/calendar.js:140 | ||||
| msgctxt "list monday" | ||||
| msgid "M" | ||||
| msgstr "Sen" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:139 | ||||
| #: ../js/ui/calendar.js:142 | ||||
| msgctxt "list tuesday" | ||||
| msgid "T" | ||||
| msgstr "Sel" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:141 | ||||
| #: ../js/ui/calendar.js:144 | ||||
| msgctxt "list wednesday" | ||||
| msgid "W" | ||||
| msgstr "Rab" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:143 | ||||
| #: ../js/ui/calendar.js:146 | ||||
| msgctxt "list thursday" | ||||
| msgid "Th" | ||||
| msgstr "Kam" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:145 | ||||
| #: ../js/ui/calendar.js:148 | ||||
| msgctxt "list friday" | ||||
| msgid "F" | ||||
| msgstr "Jum" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:147 | ||||
| #: ../js/ui/calendar.js:150 | ||||
| msgctxt "list saturday" | ||||
| msgid "S" | ||||
| msgstr "Sab" | ||||
|  | ||||
| #: ../js/ui/calendar.js:390 | ||||
| msgid "calendar:MY" | ||||
| msgstr "calendar:MY" | ||||
|  | ||||
| #: ../js/ui/calendar.js:450 | ||||
| #: ../js/ui/calendar.js:453 | ||||
| msgid "Previous month" | ||||
| msgstr "Bulan sebelumnya" | ||||
|  | ||||
| #: ../js/ui/calendar.js:460 | ||||
| #: ../js/ui/calendar.js:463 | ||||
| msgid "Next month" | ||||
| msgstr "Bulan selanjutnya" | ||||
|  | ||||
| #. Translators: Text to show if there are no events */ | ||||
| #: ../js/ui/calendar.js:772 | ||||
| #: ../js/ui/calendar.js:775 | ||||
| msgid "Nothing Scheduled" | ||||
| msgstr "Tak Ada Jadwal" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on current year */ | ||||
| #: ../js/ui/calendar.js:790 | ||||
| #: ../js/ui/calendar.js:793 | ||||
| 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:793 | ||||
| #: ../js/ui/calendar.js:796 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d %B %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:804 | ||||
| #: ../js/ui/calendar.js:807 | ||||
| msgid "Today" | ||||
| msgstr "Hari ini" | ||||
|  | ||||
| #: ../js/ui/calendar.js:808 | ||||
| #: ../js/ui/calendar.js:811 | ||||
| msgid "Tomorrow" | ||||
| msgstr "Besok" | ||||
|  | ||||
| #: ../js/ui/calendar.js:819 | ||||
| #: ../js/ui/calendar.js:822 | ||||
| msgid "This week" | ||||
| msgstr "Minggu ini" | ||||
|  | ||||
| #: ../js/ui/calendar.js:827 | ||||
| #: ../js/ui/calendar.js:830 | ||||
| msgid "Next week" | ||||
| msgstr "Minggu depan" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "Drive eksternal tersambung" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Drive eksternal terputus" | ||||
|  | ||||
| @@ -729,77 +729,77 @@ msgid "Mute" | ||||
| msgstr "Bisu" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #: ../js/ui/components/telepathyClient.js:958 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #: ../js/ui/components/telepathyClient.js:965 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Kemarin, %H:%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #: ../js/ui/components/telepathyClient.js:972 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #: ../js/ui/components/telepathyClient.js:979 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d %B, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #: ../js/ui/components/telepathyClient.js:985 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%d %B %Y, %H∶%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #: ../js/ui/components/telepathyClient.js:994 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #: ../js/ui/components/telepathyClient.js:1001 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "Kemarin, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #: ../js/ui/components/telepathyClient.js:1008 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #: ../js/ui/components/telepathyClient.js:1015 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d %B, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #: ../js/ui/components/telepathyClient.js:1021 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%d %B %Y, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #: ../js/ui/components/telepathyClient.js:1054 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "%s sekarang dikenal sebagai %s" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #: ../js/ui/components/telepathyClient.js:1158 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| msgstr "Undangan ke %s" | ||||
| @@ -807,38 +807,38 @@ msgstr "Undangan ke %s" | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #: ../js/ui/components/telepathyClient.js:1166 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "%s mengundang Anda untuk bergabung dengan %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1291 | ||||
| #: ../js/ui/components/telepathyClient.js:1168 | ||||
| #: ../js/ui/components/telepathyClient.js:1203 | ||||
| #: ../js/ui/components/telepathyClient.js:1237 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Decline" | ||||
| msgstr "Tolak" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1296 | ||||
| #: ../js/ui/components/telepathyClient.js:1174 | ||||
| #: ../js/ui/components/telepathyClient.js:1243 | ||||
| #: ../js/ui/components/telepathyClient.js:1300 | ||||
| msgid "Accept" | ||||
| msgstr "Terima" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #: ../js/ui/components/telepathyClient.js:1193 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "Panggilan video dari %s" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #: ../js/ui/components/telepathyClient.js:1196 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "Panggilan dari %s" | ||||
|  | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #: ../js/ui/components/telepathyClient.js:1210 | ||||
| msgid "Answer" | ||||
| msgstr "Jawab" | ||||
|  | ||||
| @@ -847,111 +847,111 @@ msgstr "Jawab" | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #: ../js/ui/components/telepathyClient.js:1231 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s sedang mengirimi Anda %s" | ||||
|  | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #: ../js/ui/components/telepathyClient.js:1260 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s ingin minta izin melihat Anda ketika Anda daring" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1342 | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| msgid "Network error" | ||||
| msgstr "Galat jaringan" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1344 | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Otentikasi gagal" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| msgid "Encryption error" | ||||
| msgstr "Galat enkripsi" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Sertifikat tidak disediakan" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Sertifikat tidak dipercaya" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Sertifikat kadaluarsa" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Sertifikat tidak diaktifkan" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "Nama host sertifikat tidak cocok" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "Sidik jari sertifikat tidak cocok" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Sertifikat ditandatangani sendiri" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "Status diatur ke luring" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "Enkripsi tidak tersedia" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "Sertifikat tidak valid" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Koneksi telah ditolak" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Koneksi tak dapat dijalin" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Koneksi telah terputus" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Akun ini telah tersambung pada server" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "" | ||||
| "Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Akun ini sudah ada di server" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "Server kini terlalu sibuk untuk menangani koneksi" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Sertifikat telah dicabut" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "Sertifikat memakai algorima cipher yang tak aman atau lemah secara " | ||||
| "kriptografi" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| #: ../js/ui/components/telepathyClient.js:1390 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -959,22 +959,22 @@ msgstr "" | ||||
| "Panjang sertifikat server, atau kedalaman rantai sertifikat server, " | ||||
| "melampaui batas yang diberlakukan oleh pustaka kriptografi" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| #: ../js/ui/components/telepathyClient.js:1392 | ||||
| msgid "Internal error" | ||||
| msgstr "Galat internal" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1398 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Tak bisa menyambung ke %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1403 | ||||
| #: ../js/ui/components/telepathyClient.js:1407 | ||||
| msgid "View account" | ||||
| msgstr "Tilik akun" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1440 | ||||
| #: ../js/ui/components/telepathyClient.js:1444 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Alasan yang tidak diketahui" | ||||
|  | ||||
| @@ -990,22 +990,22 @@ msgstr "Tampilkan Aplikasi" | ||||
| msgid "Dash" | ||||
| msgstr "Dash" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:91 | ||||
| #: ../js/ui/dateMenu.js:97 | ||||
| msgid "Open Calendar" | ||||
| msgstr "Buka Kalender" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:95 | ||||
| #: ../js/ui/dateMenu.js:101 | ||||
| msgid "Open Clocks" | ||||
| msgstr "Buka Jam" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:102 | ||||
| #: ../js/ui/dateMenu.js:108 | ||||
| msgid "Date & Time Settings" | ||||
| msgstr "Pengaturan Waktu & Tanggal" | ||||
|  | ||||
| #. 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:192 | ||||
| #: ../js/ui/dateMenu.js:205 | ||||
| msgid "%A %B %e, %Y" | ||||
| msgstr "%A, %e %B %Y" | ||||
|  | ||||
| @@ -1122,13 +1122,13 @@ msgid "Other users are logged in." | ||||
| msgstr "Pengguna lain sedang log masuk." | ||||
|  | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (jarak jauh)" | ||||
|  | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| msgstr "%s (konsol)" | ||||
| @@ -1142,7 +1142,7 @@ msgstr "Pasang" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 | ||||
| msgid "Keyboard" | ||||
| msgstr "Papan Ketik" | ||||
|  | ||||
| @@ -1230,16 +1230,16 @@ msgstr "Tiada Pesan" | ||||
| msgid "Message Tray" | ||||
| msgstr "Baki Pesan" | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "Informasi Sistem" | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Tak dikenal" | ||||
|  | ||||
| #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151 | ||||
| #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 | ||||
| #, javascript-format | ||||
| msgid "%d new message" | ||||
| msgid_plural "%d new messages" | ||||
| @@ -1271,7 +1271,7 @@ msgstr "Keluar" | ||||
| msgid "Activities" | ||||
| msgstr "Aktivitas" | ||||
|  | ||||
| #: ../js/ui/panel.js:914 | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "Bar Atas" | ||||
|  | ||||
| @@ -1284,7 +1284,7 @@ msgstr "toggle-switch-intl" | ||||
| msgid "Enter a Command" | ||||
| msgstr "Ketikkan Perintah" | ||||
|  | ||||
| #: ../js/ui/runDialog.js:114 | ||||
| #: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117 | ||||
| msgid "Close" | ||||
| msgstr "Tutup" | ||||
|  | ||||
| @@ -1300,7 +1300,7 @@ msgid "%d new notification" | ||||
| msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d pemberitahuan baru" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 | ||||
| msgid "Lock" | ||||
| msgstr "Kunci" | ||||
|  | ||||
| @@ -1308,19 +1308,19 @@ msgstr "Kunci" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME perlu mengunci layar" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Tak bisa mengunci" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "Kunci diblokir oleh suatu aplikasi" | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Mencari…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Tak ada yang cocok." | ||||
|  | ||||
| @@ -1384,11 +1384,11 @@ msgstr "Tombol Pantul" | ||||
| msgid "Mouse Keys" | ||||
| msgstr "Tombol Tetikus" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "Kontras Tinggi" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "Teks Besar" | ||||
|  | ||||
| @@ -1398,8 +1398,8 @@ msgstr "Bluetooth" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 | ||||
| #: ../js/ui/status/rfkill.js:114 | ||||
| msgid "Turn Off" | ||||
| msgstr "Matikan" | ||||
|  | ||||
| @@ -1457,37 +1457,37 @@ msgstr "Tersambung" | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "unmanaged" | ||||
| msgstr "tak dikelola" | ||||
| msgid "Unmanaged" | ||||
| msgstr "Tak Dikelola" | ||||
|  | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "disconnecting..." | ||||
| msgstr "memutus..." | ||||
| msgid "Disconnecting" | ||||
| msgstr "Memutus" | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "menghubungi..." | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Menyambung" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "diperlukan otentikasi" | ||||
| #: ../js/ui/status/network.js:437 | ||||
| msgid "Authentication required" | ||||
| msgstr "Diperlukan otentikasi" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing */ | ||||
| #: ../js/ui/status/network.js:445 | ||||
| msgid "firmware missing" | ||||
| msgstr "firmware hilang" | ||||
| msgid "Firmware missing" | ||||
| msgstr "Firmware hilang" | ||||
|  | ||||
| #. 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:449 | ||||
| msgid "unavailable" | ||||
| msgstr "tidak tersedia" | ||||
| msgid "Unavailable" | ||||
| msgstr "Tak tersedia" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "koneksi gagal" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Koneksi gagal" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| msgid "Wired Settings" | ||||
| @@ -1541,7 +1541,7 @@ msgstr "Pilih jaringan" | ||||
| msgid "No Networks" | ||||
| msgstr "Tiada Jaringan" | ||||
|  | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Pakai saklar perangkat keras untuk mematikan" | ||||
|  | ||||
| @@ -1561,11 +1561,20 @@ msgstr "Nyalakan" | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Hotspot Aktif" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Menyambung" | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "menghubungi..." | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "diperlukan otentikasi" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "koneksi gagal" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 | ||||
| msgid "Network Settings" | ||||
| msgstr "Pengaturan Jaringan" | ||||
|  | ||||
| @@ -1581,10 +1590,6 @@ msgstr "VPN" | ||||
| msgid "Network Manager" | ||||
| msgstr "Manajer Jaringan" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Koneksi gagal" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Aktivasi koneksi jaringan gagal" | ||||
| @@ -1619,31 +1624,31 @@ msgstr "UPS" | ||||
| msgid "Battery" | ||||
| msgstr "Baterai" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:82 | ||||
| #: ../js/ui/status/rfkill.js:83 | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Mode Pesawat Terbang" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| #: ../js/ui/status/rfkill.js:85 | ||||
| msgid "On" | ||||
| msgstr "Nyala" | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| #: ../js/ui/status/system.js:317 | ||||
| msgid "Switch User" | ||||
| msgstr "Ganti Pengguna" | ||||
|  | ||||
| #: ../js/ui/status/system.js:319 | ||||
| #: ../js/ui/status/system.js:322 | ||||
| msgid "Log Out" | ||||
| msgstr "Keluar" | ||||
|  | ||||
| #: ../js/ui/status/system.js:338 | ||||
| #: ../js/ui/status/system.js:341 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Kunci Orientasi" | ||||
|  | ||||
| #: ../js/ui/status/system.js:346 | ||||
| #: ../js/ui/status/system.js:349 | ||||
| msgid "Suspend" | ||||
| msgstr "Suspensi" | ||||
|  | ||||
| #: ../js/ui/status/system.js:349 | ||||
| #: ../js/ui/status/system.js:352 | ||||
| msgid "Power Off" | ||||
| msgstr "Matikan" | ||||
|  | ||||
| @@ -1680,27 +1685,67 @@ msgstr "Cari" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "'%s' siap" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:56 | ||||
| #: ../js/ui/windowManager.js:57 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. */ | ||||
| #: ../js/ui/windowManager.js:75 | ||||
| #: ../js/ui/windowManager.js:76 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Balikkan Tatanan" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:79 | ||||
| #: ../js/ui/windowManager.js:80 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Simpan Perubahan" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:97 | ||||
| #: ../js/ui/windowManager.js:99 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:33 | ||||
| msgid "Minimize" | ||||
| msgstr "Minimalkan" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:40 | ||||
| msgid "Unmaximize" | ||||
| msgstr "Tak Maksimalkan" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:44 | ||||
| msgid "Maximize" | ||||
| msgstr "Maksimalkan" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:51 | ||||
| msgid "Move" | ||||
| msgstr "Pindah" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:57 | ||||
| msgid "Resize" | ||||
| msgstr "Ubah Ukuran" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:64 | ||||
| msgid "Move Titlebar Onscreen" | ||||
| msgstr "Pindahkan Bilah Judul Pada Layar" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:69 | ||||
| msgid "Always on Top" | ||||
| msgstr "Selalu di Puncak" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:86 | ||||
| msgid "Always on Visible Workspace" | ||||
| msgstr "Selalu pada Ruang Kerja yang Tampak" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:103 | ||||
| msgid "Move to Workspace Up" | ||||
| msgstr "Pindah ke Ruang Kerja Atas" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:108 | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Pindah ke Ruang Kerja Bawah" | ||||
|  | ||||
| #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 | ||||
| msgid "Evolution Calendar" | ||||
| msgstr "Evolution Kalender" | ||||
| @@ -1754,8 +1799,6 @@ msgstr "Sandi tidak cocok." | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "Sandi tidak boleh kosong" | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "Dialog otentikasi ditolak oleh pengguna" | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										44
									
								
								po/it.po
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								po/it.po
									
									
									
									
									
								
							| @@ -11,8 +11,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: 2014-04-06 07:54+0000\n" | ||||
| "PO-Revision-Date: 2014-04-06 14:15+0100\n" | ||||
| "POT-Creation-Date: 2014-05-27 19:20+0000\n" | ||||
| "PO-Revision-Date: 2014-05-31 14:54+0100\n" | ||||
| "Last-Translator: Milo Casagrande <milo@milo.name>\n" | ||||
| "Language-Team: Italiano <tp@lists.linux.it>\n" | ||||
| "Language: it\n" | ||||
| @@ -421,7 +421,7 @@ msgid "%s has been removed from your favorites." | ||||
| msgstr "%s è stato rimosso dai preferiti." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| #: ../js/ui/status/system.js:337 | ||||
| msgid "Settings" | ||||
| msgstr "Impostazioni" | ||||
|  | ||||
| @@ -1076,7 +1076,7 @@ msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi." | ||||
| #: ../js/ui/endSessionDialog.js:93 | ||||
| msgctxt "checkbox" | ||||
| msgid "Install pending software updates" | ||||
| msgstr "Installa gli aggiornamenti software in sospeso" | ||||
| msgstr "Installare gli aggiornamenti software in sospeso" | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113 | ||||
| msgctxt "button" | ||||
| @@ -1130,7 +1130,7 @@ msgstr "Installa e spegni" | ||||
| #: ../js/ui/endSessionDialog.js:131 | ||||
| msgctxt "checkbox" | ||||
| msgid "Power off after updates are installed" | ||||
| msgstr "Spegne dopo aver installato gli aggiornamenti" | ||||
| msgstr "Spegnere dopo aver installato gli aggiornamenti" | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:315 | ||||
| msgid "Running on battery power: please plug in before installing updates." | ||||
| @@ -1167,7 +1167,7 @@ msgstr "Installa" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Scaricare e installare «%s» da extensions.gnome.org?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:339 | ||||
| msgid "Keyboard" | ||||
| msgstr "Tastiera" | ||||
|  | ||||
| @@ -1328,7 +1328,7 @@ msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d nuova notifica" | ||||
| msgstr[1] "%d nuove notifiche" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 | ||||
| msgid "Lock" | ||||
| msgstr "Blocca" | ||||
|  | ||||
| @@ -1344,11 +1344,11 @@ msgstr "Impossibile bloccare" | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "Il blocco è stato impedito da un'applicazione." | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Ricerca…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Nessun risultato." | ||||
|  | ||||
| @@ -1427,8 +1427,8 @@ msgstr "Bluetooth" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 | ||||
| #: ../js/ui/status/rfkill.js:114 | ||||
| msgid "Turn Off" | ||||
| msgstr "Spegni" | ||||
|  | ||||
| @@ -1451,7 +1451,7 @@ msgstr "Non collegato" | ||||
| msgid "Brightness" | ||||
| msgstr "Luminosità" | ||||
|  | ||||
| #: ../js/ui/status/keyboard.js:403 | ||||
| #: ../js/ui/status/keyboard.js:407 | ||||
| msgid "Show Keyboard Layout" | ||||
| msgstr "Mostra disposizione tastiera" | ||||
|  | ||||
| @@ -1461,13 +1461,11 @@ msgstr "Posizione" | ||||
|  | ||||
| # (ndt) o disabilitata? | ||||
| #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 | ||||
| #| msgid "Disabled" | ||||
| msgid "Disable" | ||||
| msgstr "Disabilitato" | ||||
|  | ||||
| # (ndt) o abilitata? | ||||
| #: ../js/ui/status/location.js:165 | ||||
| #| msgid "Enabled" | ||||
| msgid "Enable" | ||||
| msgstr "Abilita" | ||||
|  | ||||
| @@ -1577,7 +1575,7 @@ msgstr "Seleziona una rete" | ||||
| msgid "No Networks" | ||||
| msgstr "Nessuna rete" | ||||
|  | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Usare l'interruttore hardware per disattivare" | ||||
|  | ||||
| @@ -1601,7 +1599,7 @@ msgstr "Hotspot attivo" | ||||
| msgid "Connecting" | ||||
| msgstr "Connessione" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 | ||||
| msgid "Network Settings" | ||||
| msgstr "Impostazioni rete" | ||||
|  | ||||
| @@ -1656,31 +1654,31 @@ msgstr "UPS" | ||||
| msgid "Battery" | ||||
| msgstr "Batteria" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:82 | ||||
| #: ../js/ui/status/rfkill.js:83 | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Modalità aereo" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| #: ../js/ui/status/rfkill.js:85 | ||||
| msgid "On" | ||||
| msgstr "On" | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| #: ../js/ui/status/system.js:317 | ||||
| msgid "Switch User" | ||||
| msgstr "Cambia utente" | ||||
|  | ||||
| #: ../js/ui/status/system.js:319 | ||||
| #: ../js/ui/status/system.js:322 | ||||
| msgid "Log Out" | ||||
| msgstr "Termina sessione" | ||||
|  | ||||
| #: ../js/ui/status/system.js:338 | ||||
| #: ../js/ui/status/system.js:341 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Blocco orientazione" | ||||
|  | ||||
| #: ../js/ui/status/system.js:346 | ||||
| #: ../js/ui/status/system.js:349 | ||||
| msgid "Suspend" | ||||
| msgstr "Sospendi" | ||||
|  | ||||
| #: ../js/ui/status/system.js:349 | ||||
| #: ../js/ui/status/system.js:352 | ||||
| msgid "Power Off" | ||||
| msgstr "Spegni" | ||||
|  | ||||
|   | ||||
							
								
								
									
										376
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										376
									
								
								po/pt_BR.po
									
									
									
									
									
								
							| @@ -10,26 +10,27 @@ | ||||
| # Gabriel F. Vilar <cogumm@gmail.com>, 2011. | ||||
| # Adorilson Bezerra <adorilson@gmail.com>, 2011, 2014. | ||||
| # Djavan Fagundes <djavan@comum.org>, 2012. | ||||
| # Enrico Nicoletto <liverig@gmail.com>, 2013, 2014. | ||||
| # Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013. | ||||
| # Fábio Nogueira <fnogueira@gnome.org>, 2014. | ||||
| # Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014. | ||||
| # Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2014. | ||||
| # Enrico Nicoletto <liverig@gmail.com>, 2013, 2014. | ||||
| # | ||||
| msgid "" | ||||
| 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: 2014-03-27 18:23+0000\n" | ||||
| "PO-Revision-Date: 2014-03-27 15:29-0300\n" | ||||
| "Last-Translator: Antonio Fernandes C. Neto <fernandesn@gnome.org>\n" | ||||
| "POT-Creation-Date: 2014-06-03 07:28+0000\n" | ||||
| "PO-Revision-Date: 2014-06-03 10:26-0300\n" | ||||
| "Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n" | ||||
| "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" | ||||
| "Language: pt_BR\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||||
| "X-Generator: Poedit 1.6.4\n" | ||||
| "X-Generator: Poedit 1.6.5\n" | ||||
| "X-Project-Style: gnome\n" | ||||
|  | ||||
| #: ../data/50-gnome-shell-system.xml.in.h:1 | ||||
| @@ -66,13 +67,12 @@ msgid "Window management and application launching" | ||||
| msgstr "Gerenciamento de janelas e lançador de aplicativos" | ||||
|  | ||||
| #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 | ||||
| #: ../js/extensionPrefs/main.js:155 | ||||
| msgid "GNOME Shell Extension Preferences" | ||||
| msgstr "Preferências de extensões do GNOME Shell" | ||||
| msgstr "Preferências de extensões do Shell do GNOME" | ||||
|  | ||||
| #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2 | ||||
| msgid "Configure GNOME Shell Extensions" | ||||
| msgstr "Configurar extensões do GNOME Shell" | ||||
| msgstr "Configurar extensões do Shell do GNOME" | ||||
|  | ||||
| # Traduções do Xfce e da Microsoft usam compositor --Enrico | ||||
| #: ../data/gnome-shell-wayland.desktop.in.in.h:1 | ||||
| @@ -285,47 +285,31 @@ msgstr "" | ||||
| "GNOME." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 | ||||
| msgid "Arrangement of buttons on the titlebar" | ||||
| msgstr "Organização dos botões na barra de título" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 | ||||
| msgid "" | ||||
| "This key overrides the key in org.gnome.desktop.wm.preferences when running " | ||||
| "GNOME Shell." | ||||
| msgstr "" | ||||
| "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao " | ||||
| "executar o Shell do GNOME." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Espaços de trabalho são gerenciados dinamicamente" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 | ||||
| msgid "Workspaces only on primary monitor" | ||||
| msgstr "Espaços de trabalho apenas no monitor primário" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:40 | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 | ||||
| msgid "Delay focus changes in mouse mode until the pointer stops moving" | ||||
| msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover" | ||||
|  | ||||
| #: ../js/extensionPrefs/main.js:127 | ||||
| #: ../js/extensionPrefs/main.js:125 | ||||
| #, javascript-format | ||||
| msgid "There was an error loading the preferences dialog for %s:" | ||||
| msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:" | ||||
|  | ||||
| #: ../js/extensionPrefs/main.js:167 | ||||
| msgid "Extension" | ||||
| msgstr "Extensão" | ||||
|  | ||||
| #: ../js/extensionPrefs/main.js:191 | ||||
| msgid "Select an extension to configure using the combobox above." | ||||
| msgstr "" | ||||
| "Selecione uma extensão para configurar usando a caixa de seleção abaixo." | ||||
| #: ../js/extensionPrefs/main.js:157 | ||||
| #| msgid "Configure GNOME Shell Extensions" | ||||
| msgid "GNOME Shell Extensions" | ||||
| msgstr "Extensões do Shell do GNOME" | ||||
|  | ||||
| #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136 | ||||
| #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429 | ||||
| @@ -348,33 +332,33 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Entrar" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:271 | ||||
| #: ../js/gdm/loginDialog.js:269 | ||||
| msgid "Choose Session" | ||||
| msgstr "Escolher sessão" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:431 | ||||
| #: ../js/gdm/loginDialog.js:429 | ||||
| msgid "Not listed?" | ||||
| msgstr "Não está listado?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:611 | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(ex.: usuário ou %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Nome de usuário: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:917 | ||||
| #: ../js/gdm/loginDialog.js:922 | ||||
| msgid "Login Window" | ||||
| msgstr "Janela de sessão" | ||||
|  | ||||
| #: ../js/gdm/util.js:322 | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "Erro de autenticação" | ||||
|  | ||||
| #: ../js/gdm/util.js:452 | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(ou deslize o dedo)" | ||||
|  | ||||
| @@ -391,30 +375,34 @@ msgstr "Não foi possível analisar comando:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "A execução de \"%s\" falhou:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:640 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Aplicativos usados frequentemente vão aparecer aqui" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:751 | ||||
| msgid "Frequent" | ||||
| msgstr "Frequente" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:758 | ||||
| msgid "All" | ||||
| msgstr "Todos" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1571 | ||||
| msgid "New Window" | ||||
| msgstr "Nova janela" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Remover dos favoritos" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1599 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Adicionar aos favoritos" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1608 | ||||
| msgid "Show Details" | ||||
| msgstr "Mostrar detalhes" | ||||
|  | ||||
| #: ../js/ui/appFavorites.js:87 | ||||
| #, javascript-format | ||||
| msgid "%s has been added to your favorites." | ||||
| @@ -425,8 +413,8 @@ msgstr "%s foi adicionado aos seus favoritos." | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s foi removido dos seus favoritos." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:337 | ||||
| msgid "Settings" | ||||
| msgstr "Configurações" | ||||
|  | ||||
| @@ -437,14 +425,14 @@ msgstr "Alterar plano de fundo…" | ||||
| #. Translators: Shown in calendar event list for all day events | ||||
| #. * Keep it short, best if you can use less then 10 characters | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:64 | ||||
| #: ../js/ui/calendar.js:67 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Dia todo" | ||||
|  | ||||
| #. Translators: Shown in calendar event list, if 24h format, | ||||
| #. \u2236 is a ratio character, similar to : */ | ||||
| #: ../js/ui/calendar.js:70 | ||||
| #: ../js/ui/calendar.js:73 | ||||
| msgctxt "event list time" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
| @@ -452,7 +440,7 @@ msgstr "%H∶%M" | ||||
| #. Translators: Shown in calendar event list, if 12h format, | ||||
| #. \u2236 is a ratio character, similar to : and \u2009 is | ||||
| #. a thin space */ | ||||
| #: ../js/ui/calendar.js:79 | ||||
| #: ../js/ui/calendar.js:82 | ||||
| msgctxt "event list time" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
| @@ -462,43 +450,43 @@ msgstr "%l∶%M %p" | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:110 | ||||
| #: ../js/ui/calendar.js:113 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "D" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:112 | ||||
| #: ../js/ui/calendar.js:115 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:114 | ||||
| #: ../js/ui/calendar.js:117 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "T" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:116 | ||||
| #: ../js/ui/calendar.js:119 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "Q" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:118 | ||||
| #: ../js/ui/calendar.js:121 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "Q" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:120 | ||||
| #: ../js/ui/calendar.js:123 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:122 | ||||
| #: ../js/ui/calendar.js:125 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| msgstr "S" | ||||
| @@ -509,97 +497,93 @@ msgstr "S" | ||||
| #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||||
| #. * both be 'T'). | ||||
| #. */ | ||||
| #: ../js/ui/calendar.js:135 | ||||
| #: ../js/ui/calendar.js:138 | ||||
| msgctxt "list sunday" | ||||
| msgid "Su" | ||||
| msgstr "Dom" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Monday */ | ||||
| #: ../js/ui/calendar.js:137 | ||||
| #: ../js/ui/calendar.js:140 | ||||
| msgctxt "list monday" | ||||
| msgid "M" | ||||
| msgstr "Seg" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Tuesday */ | ||||
| #: ../js/ui/calendar.js:139 | ||||
| #: ../js/ui/calendar.js:142 | ||||
| msgctxt "list tuesday" | ||||
| msgid "T" | ||||
| msgstr "Ter" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Wednesday */ | ||||
| #: ../js/ui/calendar.js:141 | ||||
| #: ../js/ui/calendar.js:144 | ||||
| msgctxt "list wednesday" | ||||
| msgid "W" | ||||
| msgstr "Qua" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Thursday */ | ||||
| #: ../js/ui/calendar.js:143 | ||||
| #: ../js/ui/calendar.js:146 | ||||
| msgctxt "list thursday" | ||||
| msgid "Th" | ||||
| msgstr "Qui" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Friday */ | ||||
| #: ../js/ui/calendar.js:145 | ||||
| #: ../js/ui/calendar.js:148 | ||||
| msgctxt "list friday" | ||||
| msgid "F" | ||||
| msgstr "Sex" | ||||
|  | ||||
| #. Translators: Event list abbreviation for Saturday */ | ||||
| #: ../js/ui/calendar.js:147 | ||||
| #: ../js/ui/calendar.js:150 | ||||
| msgctxt "list saturday" | ||||
| msgid "S" | ||||
| msgstr "Sab" | ||||
|  | ||||
| #: ../js/ui/calendar.js:390 | ||||
| msgid "calendar:MY" | ||||
| msgstr "calendar:MY" | ||||
|  | ||||
| #: ../js/ui/calendar.js:450 | ||||
| #: ../js/ui/calendar.js:454 | ||||
| msgid "Previous month" | ||||
| msgstr "Mês anterior" | ||||
|  | ||||
| #: ../js/ui/calendar.js:460 | ||||
| #: ../js/ui/calendar.js:464 | ||||
| msgid "Next month" | ||||
| msgstr "Próximo mês" | ||||
|  | ||||
| #. Translators: Text to show if there are no events */ | ||||
| #: ../js/ui/calendar.js:772 | ||||
| #: ../js/ui/calendar.js:775 | ||||
| msgid "Nothing Scheduled" | ||||
| msgstr "Nada agendado" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on current year */ | ||||
| #: ../js/ui/calendar.js:790 | ||||
| #: ../js/ui/calendar.js:793 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d de %B" | ||||
|  | ||||
| #. Translators: Shown on calendar heading when selected day occurs on different year */ | ||||
| #: ../js/ui/calendar.js:793 | ||||
| #: ../js/ui/calendar.js:796 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d de %B de %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:804 | ||||
| #: ../js/ui/calendar.js:807 | ||||
| msgid "Today" | ||||
| msgstr "Hoje" | ||||
|  | ||||
| #: ../js/ui/calendar.js:808 | ||||
| #: ../js/ui/calendar.js:811 | ||||
| msgid "Tomorrow" | ||||
| msgstr "Amanhã" | ||||
|  | ||||
| #: ../js/ui/calendar.js:819 | ||||
| #: ../js/ui/calendar.js:822 | ||||
| msgid "This week" | ||||
| msgstr "Esta semana" | ||||
|  | ||||
| #: ../js/ui/calendar.js:827 | ||||
| #: ../js/ui/calendar.js:830 | ||||
| msgid "Next week" | ||||
| msgstr "Próxima semana" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "Unidade externa conectada" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Unidade externa desconectada" | ||||
|  | ||||
| @@ -744,77 +728,77 @@ msgid "Mute" | ||||
| msgstr "Sem áudio" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #: ../js/ui/components/telepathyClient.js:957 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #: ../js/ui/components/telepathyClient.js:964 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Ontem, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #: ../js/ui/components/telepathyClient.js:971 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #: ../js/ui/components/telepathyClient.js:978 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d de %B, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #: ../js/ui/components/telepathyClient.js:984 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%d de %B de %Y, %H∶%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #: ../js/ui/components/telepathyClient.js:990 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #: ../js/ui/components/telepathyClient.js:997 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "Ontem, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #: ../js/ui/components/telepathyClient.js:1004 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #: ../js/ui/components/telepathyClient.js:1011 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d de %B, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #: ../js/ui/components/telepathyClient.js:1017 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%d de %B de %Y, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #: ../js/ui/components/telepathyClient.js:1049 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "%s agora é conhecido como %s" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #: ../js/ui/components/telepathyClient.js:1153 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| msgstr "Convite para %s" | ||||
| @@ -822,38 +806,38 @@ msgstr "Convite para %s" | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #: ../js/ui/components/telepathyClient.js:1161 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "%s está convidando você para participar de %s" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1163 | ||||
| #: ../js/ui/components/telepathyClient.js:1198 | ||||
| #: ../js/ui/components/telepathyClient.js:1232 | ||||
| #: ../js/ui/components/telepathyClient.js:1290 | ||||
| msgid "Decline" | ||||
| msgstr "Recusar" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1169 | ||||
| #: ../js/ui/components/telepathyClient.js:1238 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Accept" | ||||
| msgstr "Aceitar" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #: ../js/ui/components/telepathyClient.js:1188 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "Chamada de vídeo para %s" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #: ../js/ui/components/telepathyClient.js:1191 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "Chamada de %s" | ||||
|  | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #: ../js/ui/components/telepathyClient.js:1205 | ||||
| msgid "Answer" | ||||
| msgstr "Atender" | ||||
|  | ||||
| @@ -862,13 +846,13 @@ msgstr "Atender" | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #: ../js/ui/components/telepathyClient.js:1226 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s está enviando %s" | ||||
|  | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #: ../js/ui/components/telepathyClient.js:1255 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s quer permissão para vê-lo quando conectado" | ||||
| @@ -1004,23 +988,23 @@ msgstr "Mostrar aplicativos" | ||||
| msgid "Dash" | ||||
| msgstr "Dash" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:91 | ||||
| #: ../js/ui/dateMenu.js:97 | ||||
| msgid "Open Calendar" | ||||
| msgstr "Abrir agenda" | ||||
|  | ||||
| #: ../js/ui/dateMenu.js:95 | ||||
| #: ../js/ui/dateMenu.js:101 | ||||
| msgid "Open Clocks" | ||||
| msgstr "Abrir relógios" | ||||
|  | ||||
| # O "&" foi inserido como "e" para versão 3.8.0 no gnome-control-center | ||||
| #: ../js/ui/dateMenu.js:102 | ||||
| #: ../js/ui/dateMenu.js:108 | ||||
| msgid "Date & Time Settings" | ||||
| msgstr "Configurações de data & hora" | ||||
|  | ||||
| #. 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:192 | ||||
| #: ../js/ui/dateMenu.js:205 | ||||
| msgid "%A %B %e, %Y" | ||||
| msgstr "%A, %e de %B de %Y" | ||||
|  | ||||
| @@ -1145,13 +1129,13 @@ msgid "Other users are logged in." | ||||
| msgstr "Outros usuários estão com sessão aberta." | ||||
|  | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (remoto)" | ||||
|  | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| msgstr "%s (console)" | ||||
| @@ -1165,7 +1149,7 @@ msgstr "Instalar" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339 | ||||
| msgid "Keyboard" | ||||
| msgstr "Teclado" | ||||
|  | ||||
| @@ -1253,16 +1237,16 @@ msgstr "Sem mensagens" | ||||
| msgid "Message Tray" | ||||
| msgstr "Área de notificação" | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "Informações do sistema" | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Desconhecido" | ||||
|  | ||||
| #: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151 | ||||
| #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151 | ||||
| #, javascript-format | ||||
| msgid "%d new message" | ||||
| msgid_plural "%d new messages" | ||||
| @@ -1295,11 +1279,11 @@ msgstr "Sair" | ||||
| msgid "Activities" | ||||
| msgstr "Atividades" | ||||
|  | ||||
| #: ../js/ui/panel.js:914 | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "Barra superior" | ||||
|  | ||||
| #: ../js/ui/popupMenu.js:271 | ||||
| #: ../js/ui/popupMenu.js:279 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
|  | ||||
| @@ -1307,7 +1291,7 @@ msgstr "toggle-switch-intl" | ||||
| msgid "Enter a Command" | ||||
| msgstr "Digite um comando" | ||||
|  | ||||
| #: ../js/ui/runDialog.js:114 | ||||
| #: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120 | ||||
| msgid "Close" | ||||
| msgstr "Fechar" | ||||
|  | ||||
| @@ -1324,7 +1308,7 @@ msgid_plural "%d new notifications" | ||||
| msgstr[0] "%d nova notificação" | ||||
| msgstr[1] "%d novas notificações" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342 | ||||
| #: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345 | ||||
| msgid "Lock" | ||||
| msgstr "Bloquear" | ||||
|  | ||||
| @@ -1332,19 +1316,19 @@ msgstr "Bloquear" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME precisa bloquear a tela" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Não foi possível bloquear" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "O bloqueio foi impedido por um aplicativo" | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Pesquisando…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Nenhum resultado." | ||||
|  | ||||
| @@ -1408,11 +1392,11 @@ msgstr "Teclas de repercussão" | ||||
| msgid "Mouse Keys" | ||||
| msgstr "Teclas do mouse" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "Alto contraste" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "Texto grande" | ||||
|  | ||||
| @@ -1422,8 +1406,8 @@ msgstr "Bluetooth" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86 | ||||
| #: ../js/ui/status/rfkill.js:114 | ||||
| msgid "Turn Off" | ||||
| msgstr "Desligar" | ||||
|  | ||||
| @@ -1446,7 +1430,7 @@ msgstr "Não conectado" | ||||
| msgid "Brightness" | ||||
| msgstr "Brilho" | ||||
|  | ||||
| #: ../js/ui/status/keyboard.js:403 | ||||
| #: ../js/ui/status/keyboard.js:407 | ||||
| msgid "Show Keyboard Layout" | ||||
| msgstr "Exibir disposição de teclado" | ||||
|  | ||||
| @@ -1479,40 +1463,41 @@ msgstr "Off" | ||||
| msgid "Connected" | ||||
| msgstr "Conectado" | ||||
|  | ||||
| # Não gerenciável para transmitir a idéia que o Networkmanager não consegue gerenciar o dispositivo --Enrico | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "unmanaged" | ||||
| msgstr "não gerenciado" | ||||
| msgid "Unmanaged" | ||||
| msgstr "Não gerenciável" | ||||
|  | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "disconnecting..." | ||||
| msgstr "desconectando..." | ||||
| msgid "Disconnecting" | ||||
| msgstr "Desconectando" | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "conectando..." | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Conectando" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "autenticação necessária" | ||||
| #: ../js/ui/status/network.js:437 | ||||
| msgid "Authentication required" | ||||
| msgstr "Autenticação necessária" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing */ | ||||
| #: ../js/ui/status/network.js:445 | ||||
| msgid "firmware missing" | ||||
| msgstr "firmware faltando" | ||||
| msgid "Firmware missing" | ||||
| msgstr "Firmware em falta" | ||||
|  | ||||
| #. 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:449 | ||||
| msgid "unavailable" | ||||
| msgstr "indisponível" | ||||
| msgid "Unavailable" | ||||
| msgstr "Indisponível" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "conexão falhou" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Falha de conexão" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| msgid "Wired Settings" | ||||
| @@ -1566,7 +1551,7 @@ msgstr "Selecione uma rede" | ||||
| msgid "No Networks" | ||||
| msgstr "Nenhuma rede" | ||||
|  | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103 | ||||
| #: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112 | ||||
| msgid "Use hardware switch to turn off" | ||||
| msgstr "Usar alternador de hardware para desligar" | ||||
|  | ||||
| @@ -1586,11 +1571,20 @@ msgstr "Ligar" | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Ponto de acesso ativo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Conectando" | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "conectando..." | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "autenticação necessária" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "conexão falhou" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89 | ||||
| msgid "Network Settings" | ||||
| msgstr "Configurações de rede" | ||||
|  | ||||
| @@ -1606,10 +1600,6 @@ msgstr "VPN" | ||||
| msgid "Network Manager" | ||||
| msgstr "Gerenciador de rede" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Falha de conexão" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Falha ao ativar a conexão da rede" | ||||
| @@ -1646,31 +1636,31 @@ msgstr "No-break" | ||||
| msgid "Battery" | ||||
| msgstr "Bateria" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:82 | ||||
| #: ../js/ui/status/rfkill.js:83 | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Modo avião" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| #: ../js/ui/status/rfkill.js:85 | ||||
| msgid "On" | ||||
| msgstr "On" | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| #: ../js/ui/status/system.js:317 | ||||
| msgid "Switch User" | ||||
| msgstr "Alternar usuário" | ||||
|  | ||||
| #: ../js/ui/status/system.js:319 | ||||
| #: ../js/ui/status/system.js:322 | ||||
| msgid "Log Out" | ||||
| msgstr "Encerrar sessão" | ||||
|  | ||||
| #: ../js/ui/status/system.js:338 | ||||
| #: ../js/ui/status/system.js:341 | ||||
| msgid "Orientation Lock" | ||||
| msgstr "Bloqueio da orientação" | ||||
|  | ||||
| #: ../js/ui/status/system.js:346 | ||||
| #: ../js/ui/status/system.js:349 | ||||
| msgid "Suspend" | ||||
| msgstr "Suspender" | ||||
|  | ||||
| #: ../js/ui/status/system.js:349 | ||||
| #: ../js/ui/status/system.js:352 | ||||
| msgid "Power Off" | ||||
| msgstr "Desligar" | ||||
|  | ||||
| @@ -1707,28 +1697,68 @@ msgstr "Pesquisar" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "\"%s\" está pronto" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:56 | ||||
| #: ../js/ui/windowManager.js:57 | ||||
| msgid "Do you want to keep these display settings?" | ||||
| msgstr "Você deseja manter essas configurações de exibição?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. */ | ||||
| #: ../js/ui/windowManager.js:75 | ||||
| #: ../js/ui/windowManager.js:76 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Reverter configurações" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:79 | ||||
| #: ../js/ui/windowManager.js:80 | ||||
| msgid "Keep Changes" | ||||
| msgstr "Manter alterações" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:97 | ||||
| #: ../js/ui/windowManager.js:99 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| msgstr[0] "Alterações nas configurações serão revertidas em %d segundo" | ||||
| msgstr[1] "Alterações nas configurações serão revertidas em %d segundos" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:34 | ||||
| msgid "Minimize" | ||||
| msgstr "Minimizar" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:41 | ||||
| msgid "Unmaximize" | ||||
| msgstr "Restaurar" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:45 | ||||
| msgid "Maximize" | ||||
| msgstr "Maximizar" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:52 | ||||
| msgid "Move" | ||||
| msgstr "Mover" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:58 | ||||
| msgid "Resize" | ||||
| msgstr "Redimensionar" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:65 | ||||
| msgid "Move Titlebar Onscreen" | ||||
| msgstr "Mover barra de título na tela" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:70 | ||||
| msgid "Always on Top" | ||||
| msgstr "Sempre no topo" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:89 | ||||
| msgid "Always on Visible Workspace" | ||||
| msgstr "Sempre na área de trabalho visível" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:106 | ||||
| msgid "Move to Workspace Up" | ||||
| msgstr "Mover para a área de trabalho acima" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:111 | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Mover para a área de trabalho abaixo" | ||||
|  | ||||
| #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 | ||||
| msgid "Evolution Calendar" | ||||
| msgstr "Agenda do Evolution" | ||||
| @@ -1784,10 +1814,30 @@ msgstr "As senhas não coincidem." | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "A senha não pode estar em branco" | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "O diálogo de autenticação foi descartado pelo usuário" | ||||
|  | ||||
| #~ msgid "Arrangement of buttons on the titlebar" | ||||
| #~ msgstr "Organização dos botões na barra de título" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "This key overrides the key in org.gnome.desktop.wm.preferences when " | ||||
| #~ "running GNOME Shell." | ||||
| #~ msgstr "" | ||||
| #~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao " | ||||
| #~ "executar o Shell do GNOME." | ||||
|  | ||||
| #~ msgid "Extension" | ||||
| #~ msgstr "Extensão" | ||||
|  | ||||
| #~ msgid "Select an extension to configure using the combobox above." | ||||
| #~ msgstr "" | ||||
| #~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo." | ||||
|  | ||||
| #~ msgid "calendar:MY" | ||||
| #~ msgstr "calendar:MY" | ||||
|  | ||||
| #~ msgid "<b>%A</b>, <b>%H:%M</b>" | ||||
| #~ msgstr "<b>%A</b>, <b>%H:%M</b>" | ||||
|  | ||||
|   | ||||
							
								
								
									
										192
									
								
								po/sr.po
									
									
									
									
									
								
							
							
						
						
									
										192
									
								
								po/sr.po
									
									
									
									
									
								
							| @@ -9,8 +9,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: 2014-04-14 15:36+0000\n" | ||||
| "PO-Revision-Date: 2014-04-14 19:31+0200\n" | ||||
| "POT-Creation-Date: 2014-03-22 20:38+0000\n" | ||||
| "PO-Revision-Date: 2014-03-23 11:08+0200\n" | ||||
| "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" | ||||
| "Language-Team: Serbian <gnom@prevod.org>\n" | ||||
| "Language: sr\n" | ||||
| @@ -80,10 +80,16 @@ msgstr "" | ||||
| "коришћењем „Alt-F2“ прозорчета." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 | ||||
| #| msgid "Uuids of extensions to enable" | ||||
| msgid "UUIDs of extensions to enable" | ||||
| msgstr "ЈУИБ-ови проширења за укључивање" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 | ||||
| #| msgid "" | ||||
| #| "GNOME Shell extensions have a uuid property; this key lists extensions " | ||||
| #| "which should be loaded. Any extension that wants to be loaded needs to be " | ||||
| #| "in this list. You can also manipulate this list with the EnableExtension " | ||||
| #| "and DisableExtension DBus methods on org.gnome.Shell." | ||||
| msgid "" | ||||
| "GNOME Shell extensions have a UUID property; this key lists extensions which " | ||||
| "should be loaded. Any extension that wants to be loaded needs to be in this " | ||||
| @@ -92,8 +98,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења " | ||||
| "која треба учитавати. Свако проширење које жели бити учитано мора бити на " | ||||
| "списку. Такође можете да управљате овим списком користећи начине Д-" | ||||
| "магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“." | ||||
| "списку. Такође можете да управљате овим списком користећи начине " | ||||
| "Д-магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 | ||||
| msgid "Disables the validation of extension version compatibility" | ||||
| @@ -130,10 +136,14 @@ msgid "History for the looking glass dialog" | ||||
| msgstr "Историјат прозорчета огледала" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 | ||||
| #| msgid "Always show the 'Log out' menuitem in the user menu." | ||||
| msgid "Always show the 'Log out' menu item in the user menu." | ||||
| msgstr "Увек приказује ставку изборника „Одјави ме“ у изборнику корисника." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 | ||||
| #| msgid "" | ||||
| #| "This key overrides the automatic hiding of the 'Log out' menuitem in " | ||||
| #| "single-user, single-session situations." | ||||
| msgid "" | ||||
| "This key overrides the automatic hiding of the 'Log out' menu item in single-" | ||||
| "user, single-session situations." | ||||
| @@ -231,12 +241,12 @@ msgid "" | ||||
| "using network resources (albeit with street-level accuracy at best)." | ||||
| msgstr "" | ||||
| "Подешава највећи ниво тачности места коју програми могу да користе. Исправне " | ||||
| "могућности су „off“ (искључује праћење места), „country“ (држава), " | ||||
| "„city“ (град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно " | ||||
| "— обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће " | ||||
| "„Гео индиција“ дозволити програмима само да виде и да могу пронаћи " | ||||
| "корисниково место на своју руку користећи изворишта мреже (мада са тачношћу " | ||||
| "на нивоу улице у најбољем случају)." | ||||
| "могућности су „off“ (искључује праћење места), „country“ (држава), „city“ " | ||||
| "(град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно — " | ||||
| "обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће „Гео " | ||||
| "индиција“ дозволити програмима само да виде и да могу пронаћи корисниково " | ||||
| "место на своју руку користећи изворишта мреже (мада са тачношћу на нивоу " | ||||
| "улице у најбољем случају)." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 | ||||
| msgid "The application icon mode." | ||||
| @@ -325,25 +335,25 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Пријави ме" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:271 | ||||
| #: ../js/gdm/loginDialog.js:270 | ||||
| msgid "Choose Session" | ||||
| msgstr "Изабери сесију" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:431 | ||||
| #: ../js/gdm/loginDialog.js:430 | ||||
| msgid "Not listed?" | ||||
| msgstr "Није на списку?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #: ../js/gdm/loginDialog.js:608 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(нпр., корисник или %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Корисничко име: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:920 | ||||
| #: ../js/gdm/loginDialog.js:884 | ||||
| msgid "Login Window" | ||||
| msgstr "Прозор за пријављивање" | ||||
|  | ||||
| @@ -365,30 +375,31 @@ msgstr "Не могу да обрадим наредбу:" | ||||
|  | ||||
| #: ../js/misc/util.js:156 | ||||
| #, javascript-format | ||||
| #| msgid "Execution of '%s' failed:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Није успело извршавање „%s“:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:629 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Често коришћени програми ће се појавити овде" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:740 | ||||
| msgid "Frequent" | ||||
| msgstr "Често" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| msgid "All" | ||||
| msgstr "Све" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1555 | ||||
| msgid "New Window" | ||||
| msgstr "Нови прозор" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Уклони из омиљених" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1583 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Додај у омиљене" | ||||
|  | ||||
| @@ -636,6 +647,9 @@ msgstr "Бежична мрежа захтева потврђивање иден | ||||
|  | ||||
| #: ../js/ui/components/networkAgent.js:312 | ||||
| #, javascript-format | ||||
| #| msgid "" | ||||
| #| "Passwords or encryption keys are required to access the wireless network " | ||||
| #| "'%s'." | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| "“%s”." | ||||
| @@ -672,6 +686,7 @@ msgstr "Лозинка мобилне широкопојасне мреже" | ||||
|  | ||||
| #: ../js/ui/components/networkAgent.js:339 | ||||
| #, javascript-format | ||||
| #| msgid "A password is required to connect to '%s'." | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Потребна је лозинка за повезивање на „%s“." | ||||
|  | ||||
| @@ -721,18 +736,23 @@ msgstr "Утишај" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #| msgid "<b>Yesterday</b>, <b>%H:%M</b>" | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Јуче, %H:%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| @@ -740,6 +760,8 @@ msgstr "%A, %H∶%M" | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d. %B, %H∶%M" | ||||
|  | ||||
| @@ -752,6 +774,8 @@ msgstr "%d. %B %Y., %H:%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
|  | ||||
| @@ -764,6 +788,8 @@ msgstr "Јуче, %l:%M %p" | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| @@ -771,6 +797,8 @@ msgstr "%A, %l∶%M %p" | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d. %B, %l∶%M %p" | ||||
|  | ||||
| @@ -806,13 +834,13 @@ msgstr "%s вас позива да се придружите „%s“" | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1291 | ||||
| #: ../js/ui/components/telepathyClient.js:1290 | ||||
| msgid "Decline" | ||||
| msgstr "Одбиј" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1296 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Accept" | ||||
| msgstr "Прихвати" | ||||
|  | ||||
| @@ -849,98 +877,98 @@ msgstr "%s вам шаље „%s“" | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s тражи одобрење да види када сте на вези" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1342 | ||||
| #: ../js/ui/components/telepathyClient.js:1341 | ||||
| msgid "Network error" | ||||
| msgstr "Грешка мреже" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1344 | ||||
| #: ../js/ui/components/telepathyClient.js:1343 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Потврђивање идентитета није успело" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| #: ../js/ui/components/telepathyClient.js:1345 | ||||
| msgid "Encryption error" | ||||
| msgstr "Грешка шифровања" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| #: ../js/ui/components/telepathyClient.js:1347 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Уверење није прослеђено" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| #: ../js/ui/components/telepathyClient.js:1349 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Уверење није поверљиво" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| #: ../js/ui/components/telepathyClient.js:1351 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Уверење је истекло" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| #: ../js/ui/components/telepathyClient.js:1353 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Уверење није активирано" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| #: ../js/ui/components/telepathyClient.js:1355 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "Назив домаћина уверења се не поклапа" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| #: ../js/ui/components/telepathyClient.js:1357 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "Отисак уверења се не поклапа" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| #: ../js/ui/components/telepathyClient.js:1359 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Уверење је самопотписано" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| #: ../js/ui/components/telepathyClient.js:1361 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "Стање је постављено на „неповезан“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| #: ../js/ui/components/telepathyClient.js:1363 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "Шифровање није доступно" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| #: ../js/ui/components/telepathyClient.js:1365 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "Уверење није исправно" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| #: ../js/ui/components/telepathyClient.js:1367 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Веза је одбијена" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| #: ../js/ui/components/telepathyClient.js:1369 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Веза не може бити успостављена" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| #: ../js/ui/components/telepathyClient.js:1371 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Веза је изгубљена" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| #: ../js/ui/components/telepathyClient.js:1373 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Овај налог је већ повезан са сервером" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| #: ../js/ui/components/telepathyClient.js:1375 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "Веза је замењена новом везом користећи исти ресурс" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| #: ../js/ui/components/telepathyClient.js:1377 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Овај налог већ постоји на серверу" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| #: ../js/ui/components/telepathyClient.js:1379 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "Сервер је тренутно превише заузет да би руковао везом" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| #: ../js/ui/components/telepathyClient.js:1381 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Уверење је опозвано" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| #: ../js/ui/components/telepathyClient.js:1383 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "Уверење користи несигуран алгоритам шифровања или је криптографски слабо" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| #: ../js/ui/components/telepathyClient.js:1385 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -948,22 +976,22 @@ msgstr "" | ||||
| "Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе " | ||||
| "које је задала библиотека шифровања" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| #: ../js/ui/components/telepathyClient.js:1387 | ||||
| msgid "Internal error" | ||||
| msgstr "Унутрашња грешка" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1398 | ||||
| #: ../js/ui/components/telepathyClient.js:1397 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Не могу да се повежем са „%s“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1403 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| msgid "View account" | ||||
| msgstr "Види налог" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1440 | ||||
| #: ../js/ui/components/telepathyClient.js:1439 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Непознат разлог" | ||||
|  | ||||
| @@ -1100,6 +1128,8 @@ msgstr[3] "" | ||||
| "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:129 | ||||
| #| msgctxt "button" | ||||
| #| msgid "Restart & Install" | ||||
| msgctxt "button" | ||||
| msgid "Restart & Install" | ||||
| msgstr "Поново покрени и инсталирај" | ||||
| @@ -1117,7 +1147,8 @@ msgstr "Искључи након инсталирања освежења" | ||||
| #: ../js/ui/endSessionDialog.js:315 | ||||
| msgid "Running on battery power: please plug in before installing updates." | ||||
| msgstr "" | ||||
| "Напајате се са батерије: прикључите мрежно напајање пре инсталирања освежења." | ||||
| "Напајате се са батерије: прикључите мрежно напајање пре инсталирања " | ||||
| "освежења." | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:332 | ||||
| msgid "Some applications are busy or have unsaved work." | ||||
| @@ -1145,6 +1176,7 @@ msgstr "Инсталирај" | ||||
|  | ||||
| #: ../js/ui/extensionDownloader.js:204 | ||||
| #, javascript-format | ||||
| #| msgid "Download and install '%s' from extensions.gnome.org?" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?" | ||||
|  | ||||
| @@ -1170,8 +1202,7 @@ msgstr "Сакриј грешке" | ||||
| msgid "Show Errors" | ||||
| msgstr "Прикажите грешке" | ||||
|  | ||||
| #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59 | ||||
| #: ../js/ui/status/location.js:167 | ||||
| #: ../js/ui/lookingGlass.js:716 | ||||
| msgid "Enabled" | ||||
| msgstr "Укључено" | ||||
|  | ||||
| @@ -1179,8 +1210,8 @@ msgstr "Укључено" | ||||
| #. because it's disabled by rfkill (airplane mode) */ | ||||
| #. translators: | ||||
| #. * The device has been disabled | ||||
| #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164 | ||||
| #: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830 | ||||
| #: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1830 | ||||
| msgid "Disabled" | ||||
| msgstr "Искључено" | ||||
|  | ||||
| @@ -1331,7 +1362,7 @@ msgstr "Неки програм је блокирао закључавање" | ||||
| msgid "Searching…" | ||||
| msgstr "Тражим…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:646 | ||||
| msgid "No results." | ||||
| msgstr "Нема одговарајућих резултата." | ||||
|  | ||||
| @@ -1407,7 +1438,8 @@ msgstr "Велики текст" | ||||
| msgid "Bluetooth" | ||||
| msgstr "Блутут" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60 | ||||
| #: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| @@ -1440,33 +1472,30 @@ msgid "Show Keyboard Layout" | ||||
| msgstr "Покажи распоред тастатуре" | ||||
|  | ||||
| #: ../js/ui/status/location.js:53 | ||||
| #| msgid "Notifications" | ||||
| msgid "Location" | ||||
| msgstr "Место" | ||||
|  | ||||
| #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 | ||||
| #| msgid "Disabled" | ||||
| msgid "Disable" | ||||
| msgstr "Искључи" | ||||
| #: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166 | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| msgid "On" | ||||
| msgstr "Укљ." | ||||
|  | ||||
| #: ../js/ui/status/location.js:165 | ||||
| #| msgid "Enabled" | ||||
| msgid "Enable" | ||||
| #: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420 | ||||
| #: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464 | ||||
| msgid "Off" | ||||
| msgstr "Искљ." | ||||
|  | ||||
| #: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234 | ||||
| msgid "Turn On" | ||||
| msgstr "Укључи" | ||||
|  | ||||
| #: ../js/ui/status/location.js:167 | ||||
| msgid "In Use" | ||||
| msgstr "У употреби" | ||||
|  | ||||
| #: ../js/ui/status/network.js:74 | ||||
| msgid "<unknown>" | ||||
| msgstr "<непознато>" | ||||
|  | ||||
| #: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260 | ||||
| #: ../js/ui/status/network.js:1464 | ||||
| msgid "Off" | ||||
| msgstr "Искљ." | ||||
|  | ||||
| #: ../js/ui/status/network.js:422 | ||||
| #| msgid "Connect" | ||||
| msgid "Connected" | ||||
| msgstr "Повезан" | ||||
|  | ||||
| @@ -1506,6 +1535,7 @@ msgid "connection failed" | ||||
| msgstr "повезивање није успело" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| #| msgid "Wi-Fi Settings" | ||||
| msgid "Wired Settings" | ||||
| msgstr "Подешавања жичане везе" | ||||
|  | ||||
| @@ -1522,6 +1552,7 @@ msgid "Use as Internet connection" | ||||
| msgstr "Користи као Интернет везу" | ||||
|  | ||||
| #: ../js/ui/status/network.js:776 | ||||
| #| msgid "Airplane Mode" | ||||
| msgid "Airplane Mode is On" | ||||
| msgstr "Режим у авиону је укључен" | ||||
|  | ||||
| @@ -1530,10 +1561,12 @@ msgid "Wi-Fi is disabled when airplane mode is on." | ||||
| msgstr "Бежична веза је искључена када је укључен режим у авиону." | ||||
|  | ||||
| #: ../js/ui/status/network.js:778 | ||||
| #| msgid "Airplane Mode" | ||||
| msgid "Turn Off Airplane Mode" | ||||
| msgstr "Искључи режим у авиону" | ||||
|  | ||||
| #: ../js/ui/status/network.js:787 | ||||
| #| msgid "Wi-Fi Settings" | ||||
| msgid "Wi-Fi is Off" | ||||
| msgstr "Бежична веза је искључена" | ||||
|  | ||||
| @@ -1542,6 +1575,7 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network." | ||||
| msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу." | ||||
|  | ||||
| #: ../js/ui/status/network.js:789 | ||||
| #| msgid "Turn On" | ||||
| msgid "Turn On Wi-Fi" | ||||
| msgstr "Укључи бежичну везу" | ||||
|  | ||||
| @@ -1569,15 +1603,12 @@ msgstr "Изабери мрежу" | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Подешавања бежичне везе" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1234 | ||||
| msgid "Turn On" | ||||
| msgstr "Укључи" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1251 | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Врућа тачка је радна" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| #| msgid "Connect" | ||||
| msgid "Connecting" | ||||
| msgstr "Повезујем се" | ||||
|  | ||||
| @@ -1586,6 +1617,7 @@ msgid "Network Settings" | ||||
| msgstr "Подешавања мреже" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1435 | ||||
| #| msgid "Settings" | ||||
| msgid "VPN Settings" | ||||
| msgstr "ВПН подешавања" | ||||
|  | ||||
| @@ -1639,10 +1671,6 @@ msgstr "Батерија" | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Режим у авиону" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| msgid "On" | ||||
| msgstr "Укљ." | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| msgid "Switch User" | ||||
| msgstr "Промени корисника" | ||||
| @@ -1693,6 +1721,7 @@ msgstr "Тражи" | ||||
|  | ||||
| #: ../js/ui/windowAttentionHandler.js:19 | ||||
| #, javascript-format | ||||
| #| msgid "'%s' is ready" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "„%s“ је спреман" | ||||
|  | ||||
| @@ -1768,6 +1797,7 @@ msgstr "Исписује могуће режиме" | ||||
|  | ||||
| #: ../src/shell-app.c:666 | ||||
| #, c-format | ||||
| #| msgid "Failed to launch '%s'" | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Нисам успео да покренем „%s“" | ||||
|  | ||||
|   | ||||
							
								
								
									
										192
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
							
						
						
									
										192
									
								
								po/sr@latin.po
									
									
									
									
									
								
							| @@ -9,8 +9,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: 2014-04-14 15:36+0000\n" | ||||
| "PO-Revision-Date: 2014-04-14 19:31+0200\n" | ||||
| "POT-Creation-Date: 2014-03-22 20:38+0000\n" | ||||
| "PO-Revision-Date: 2014-03-23 11:08+0200\n" | ||||
| "Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n" | ||||
| "Language-Team: Serbian <gnom@prevod.org>\n" | ||||
| "Language: sr\n" | ||||
| @@ -80,10 +80,16 @@ msgstr "" | ||||
| "korišćenjem „Alt-F2“ prozorčeta." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 | ||||
| #| msgid "Uuids of extensions to enable" | ||||
| msgid "UUIDs of extensions to enable" | ||||
| msgstr "JUIB-ovi proširenja za uključivanje" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 | ||||
| #| msgid "" | ||||
| #| "GNOME Shell extensions have a uuid property; this key lists extensions " | ||||
| #| "which should be loaded. Any extension that wants to be loaded needs to be " | ||||
| #| "in this list. You can also manipulate this list with the EnableExtension " | ||||
| #| "and DisableExtension DBus methods on org.gnome.Shell." | ||||
| msgid "" | ||||
| "GNOME Shell extensions have a UUID property; this key lists extensions which " | ||||
| "should be loaded. Any extension that wants to be loaded needs to be in this " | ||||
| @@ -92,8 +98,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja " | ||||
| "koja treba učitavati. Svako proširenje koje želi biti učitano mora biti na " | ||||
| "spisku. Takođe možete da upravljate ovim spiskom koristeći načine D-" | ||||
| "magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“." | ||||
| "spisku. Takođe možete da upravljate ovim spiskom koristeći načine " | ||||
| "D-magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 | ||||
| msgid "Disables the validation of extension version compatibility" | ||||
| @@ -130,10 +136,14 @@ msgid "History for the looking glass dialog" | ||||
| msgstr "Istorijat prozorčeta ogledala" | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:11 | ||||
| #| msgid "Always show the 'Log out' menuitem in the user menu." | ||||
| msgid "Always show the 'Log out' menu item in the user menu." | ||||
| msgstr "Uvek prikazuje stavku izbornika „Odjavi me“ u izborniku korisnika." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:12 | ||||
| #| msgid "" | ||||
| #| "This key overrides the automatic hiding of the 'Log out' menuitem in " | ||||
| #| "single-user, single-session situations." | ||||
| msgid "" | ||||
| "This key overrides the automatic hiding of the 'Log out' menu item in single-" | ||||
| "user, single-session situations." | ||||
| @@ -231,12 +241,12 @@ msgid "" | ||||
| "using network resources (albeit with street-level accuracy at best)." | ||||
| msgstr "" | ||||
| "Podešava najveći nivo tačnosti mesta koju programi mogu da koriste. Ispravne " | ||||
| "mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), " | ||||
| "„city“ (grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno " | ||||
| "— obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će " | ||||
| "„Geo indicija“ dozvoliti programima samo da vide i da mogu pronaći " | ||||
| "korisnikovo mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću " | ||||
| "na nivou ulice u najboljem slučaju)." | ||||
| "mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), „city“ " | ||||
| "(grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno — " | ||||
| "obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će „Geo " | ||||
| "indicija“ dozvoliti programima samo da vide i da mogu pronaći korisnikovo " | ||||
| "mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću na nivou " | ||||
| "ulice u najboljem slučaju)." | ||||
|  | ||||
| #: ../data/org.gnome.shell.gschema.xml.in.in.h:31 | ||||
| msgid "The application icon mode." | ||||
| @@ -325,25 +335,25 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Prijavi me" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:271 | ||||
| #: ../js/gdm/loginDialog.js:270 | ||||
| msgid "Choose Session" | ||||
| msgstr "Izaberi sesiju" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:431 | ||||
| #: ../js/gdm/loginDialog.js:430 | ||||
| msgid "Not listed?" | ||||
| msgstr "Nije na spisku?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #: ../js/gdm/loginDialog.js:608 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(npr., korisnik ili %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Korisničko ime: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:920 | ||||
| #: ../js/gdm/loginDialog.js:884 | ||||
| msgid "Login Window" | ||||
| msgstr "Prozor za prijavljivanje" | ||||
|  | ||||
| @@ -365,30 +375,31 @@ msgstr "Ne mogu da obradim naredbu:" | ||||
|  | ||||
| #: ../js/misc/util.js:156 | ||||
| #, javascript-format | ||||
| #| msgid "Execution of '%s' failed:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Nije uspelo izvršavanje „%s“:" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:636 | ||||
| #: ../js/ui/appDisplay.js:629 | ||||
| msgid "Frequently used applications will appear here" | ||||
| msgstr "Često korišćeni programi će se pojaviti ovde" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| #: ../js/ui/appDisplay.js:740 | ||||
| msgid "Frequent" | ||||
| msgstr "Često" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:754 | ||||
| #: ../js/ui/appDisplay.js:747 | ||||
| msgid "All" | ||||
| msgstr "Sve" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1555 | ||||
| msgid "New Window" | ||||
| msgstr "Novi prozor" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Ukloni iz omiljenih" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1583 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Dodaj u omiljene" | ||||
|  | ||||
| @@ -636,6 +647,9 @@ msgstr "Bežična mreža zahteva potvrđivanje identiteta" | ||||
|  | ||||
| #: ../js/ui/components/networkAgent.js:312 | ||||
| #, javascript-format | ||||
| #| msgid "" | ||||
| #| "Passwords or encryption keys are required to access the wireless network " | ||||
| #| "'%s'." | ||||
| msgid "" | ||||
| "Passwords or encryption keys are required to access the wireless network " | ||||
| "“%s”." | ||||
| @@ -672,6 +686,7 @@ msgstr "Lozinka mobilne širokopojasne mreže" | ||||
|  | ||||
| #: ../js/ui/components/networkAgent.js:339 | ||||
| #, javascript-format | ||||
| #| msgid "A password is required to connect to '%s'." | ||||
| msgid "A password is required to connect to “%s”." | ||||
| msgstr "Potrebna je lozinka za povezivanje na „%s“." | ||||
|  | ||||
| @@ -721,18 +736,23 @@ msgstr "Utišaj" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #| msgid "<b>Yesterday</b>, <b>%H:%M</b>" | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Juče, %H:%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| @@ -740,6 +760,8 @@ msgstr "%A, %H∶%M" | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%H∶%M" | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d. %B, %H∶%M" | ||||
|  | ||||
| @@ -752,6 +774,8 @@ msgstr "%d. %B %Y., %H:%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
|  | ||||
| @@ -764,6 +788,8 @@ msgstr "Juče, %l:%M %p" | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| @@ -771,6 +797,8 @@ msgstr "%A, %l∶%M %p" | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #| msgctxt "event list time" | ||||
| #| msgid "%l∶%M %p" | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d. %B, %l∶%M %p" | ||||
|  | ||||
| @@ -806,13 +834,13 @@ msgstr "%s vas poziva da se pridružite „%s“" | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1291 | ||||
| #: ../js/ui/components/telepathyClient.js:1290 | ||||
| msgid "Decline" | ||||
| msgstr "Odbij" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1296 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Accept" | ||||
| msgstr "Prihvati" | ||||
|  | ||||
| @@ -849,98 +877,98 @@ msgstr "%s vam šalje „%s“" | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s traži odobrenje da vidi kada ste na vezi" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1342 | ||||
| #: ../js/ui/components/telepathyClient.js:1341 | ||||
| msgid "Network error" | ||||
| msgstr "Greška mreže" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1344 | ||||
| #: ../js/ui/components/telepathyClient.js:1343 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Potvrđivanje identiteta nije uspelo" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| #: ../js/ui/components/telepathyClient.js:1345 | ||||
| msgid "Encryption error" | ||||
| msgstr "Greška šifrovanja" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| #: ../js/ui/components/telepathyClient.js:1347 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Uverenje nije prosleđeno" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| #: ../js/ui/components/telepathyClient.js:1349 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Uverenje nije poverljivo" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| #: ../js/ui/components/telepathyClient.js:1351 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Uverenje je isteklo" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| #: ../js/ui/components/telepathyClient.js:1353 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Uverenje nije aktivirano" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| #: ../js/ui/components/telepathyClient.js:1355 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "Naziv domaćina uverenja se ne poklapa" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| #: ../js/ui/components/telepathyClient.js:1357 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "Otisak uverenja se ne poklapa" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| #: ../js/ui/components/telepathyClient.js:1359 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Uverenje je samopotpisano" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| #: ../js/ui/components/telepathyClient.js:1361 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "Stanje je postavljeno na „nepovezan“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| #: ../js/ui/components/telepathyClient.js:1363 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "Šifrovanje nije dostupno" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| #: ../js/ui/components/telepathyClient.js:1365 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "Uverenje nije ispravno" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| #: ../js/ui/components/telepathyClient.js:1367 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Veza je odbijena" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| #: ../js/ui/components/telepathyClient.js:1369 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Veza ne može biti uspostavljena" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| #: ../js/ui/components/telepathyClient.js:1371 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Veza je izgubljena" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| #: ../js/ui/components/telepathyClient.js:1373 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Ovaj nalog je već povezan sa serverom" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| #: ../js/ui/components/telepathyClient.js:1375 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "Veza je zamenjena novom vezom koristeći isti resurs" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| #: ../js/ui/components/telepathyClient.js:1377 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Ovaj nalog već postoji na serveru" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| #: ../js/ui/components/telepathyClient.js:1379 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "Server je trenutno previše zauzet da bi rukovao vezom" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| #: ../js/ui/components/telepathyClient.js:1381 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Uverenje je opozvano" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| #: ../js/ui/components/telepathyClient.js:1383 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| #: ../js/ui/components/telepathyClient.js:1385 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -948,22 +976,22 @@ msgstr "" | ||||
| "Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice " | ||||
| "koje je zadala biblioteka šifrovanja" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| #: ../js/ui/components/telepathyClient.js:1387 | ||||
| msgid "Internal error" | ||||
| msgstr "Unutrašnja greška" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1398 | ||||
| #: ../js/ui/components/telepathyClient.js:1397 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Ne mogu da se povežem sa „%s“" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1403 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| msgid "View account" | ||||
| msgstr "Vidi nalog" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1440 | ||||
| #: ../js/ui/components/telepathyClient.js:1439 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Nepoznat razlog" | ||||
|  | ||||
| @@ -1100,6 +1128,8 @@ msgstr[3] "" | ||||
| "Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu." | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:129 | ||||
| #| msgctxt "button" | ||||
| #| msgid "Restart & Install" | ||||
| msgctxt "button" | ||||
| msgid "Restart & Install" | ||||
| msgstr "Ponovo pokreni i instaliraj" | ||||
| @@ -1117,7 +1147,8 @@ msgstr "Isključi nakon instaliranja osveženja" | ||||
| #: ../js/ui/endSessionDialog.js:315 | ||||
| msgid "Running on battery power: please plug in before installing updates." | ||||
| msgstr "" | ||||
| "Napajate se sa baterije: priključite mrežno napajanje pre instaliranja osveženja." | ||||
| "Napajate se sa baterije: priključite mrežno napajanje pre instaliranja " | ||||
| "osveženja." | ||||
|  | ||||
| #: ../js/ui/endSessionDialog.js:332 | ||||
| msgid "Some applications are busy or have unsaved work." | ||||
| @@ -1145,6 +1176,7 @@ msgstr "Instaliraj" | ||||
|  | ||||
| #: ../js/ui/extensionDownloader.js:204 | ||||
| #, javascript-format | ||||
| #| msgid "Download and install '%s' from extensions.gnome.org?" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "Da preuzmem i da instaliram „%s“ sa „extensions.gnome.org“-a?" | ||||
|  | ||||
| @@ -1170,8 +1202,7 @@ msgstr "Sakrij greške" | ||||
| msgid "Show Errors" | ||||
| msgstr "Prikažite greške" | ||||
|  | ||||
| #: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59 | ||||
| #: ../js/ui/status/location.js:167 | ||||
| #: ../js/ui/lookingGlass.js:716 | ||||
| msgid "Enabled" | ||||
| msgstr "Uključeno" | ||||
|  | ||||
| @@ -1179,8 +1210,8 @@ msgstr "Uključeno" | ||||
| #. because it's disabled by rfkill (airplane mode) */ | ||||
| #. translators: | ||||
| #. * The device has been disabled | ||||
| #: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164 | ||||
| #: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830 | ||||
| #: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1830 | ||||
| msgid "Disabled" | ||||
| msgstr "Isključeno" | ||||
|  | ||||
| @@ -1331,7 +1362,7 @@ msgstr "Neki program je blokirao zaključavanje" | ||||
| msgid "Searching…" | ||||
| msgstr "Tražim…" | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:646 | ||||
| msgid "No results." | ||||
| msgstr "Nema odgovarajućih rezultata." | ||||
|  | ||||
| @@ -1407,7 +1438,8 @@ msgstr "Veliki tekst" | ||||
| msgid "Bluetooth" | ||||
| msgstr "Blutut" | ||||
|  | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60 | ||||
| #: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151 | ||||
| #: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234 | ||||
| #: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85 | ||||
| #: ../js/ui/status/rfkill.js:105 | ||||
| @@ -1440,33 +1472,30 @@ msgid "Show Keyboard Layout" | ||||
| msgstr "Pokaži raspored tastature" | ||||
|  | ||||
| #: ../js/ui/status/location.js:53 | ||||
| #| msgid "Notifications" | ||||
| msgid "Location" | ||||
| msgstr "Mesto" | ||||
|  | ||||
| #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 | ||||
| #| msgid "Disabled" | ||||
| msgid "Disable" | ||||
| msgstr "Isključi" | ||||
| #: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166 | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| msgid "On" | ||||
| msgstr "Uklj." | ||||
|  | ||||
| #: ../js/ui/status/location.js:165 | ||||
| #| msgid "Enabled" | ||||
| msgid "Enable" | ||||
| #: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420 | ||||
| #: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464 | ||||
| msgid "Off" | ||||
| msgstr "Isklj." | ||||
|  | ||||
| #: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234 | ||||
| msgid "Turn On" | ||||
| msgstr "Uključi" | ||||
|  | ||||
| #: ../js/ui/status/location.js:167 | ||||
| msgid "In Use" | ||||
| msgstr "U upotrebi" | ||||
|  | ||||
| #: ../js/ui/status/network.js:74 | ||||
| msgid "<unknown>" | ||||
| msgstr "<nepoznato>" | ||||
|  | ||||
| #: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260 | ||||
| #: ../js/ui/status/network.js:1464 | ||||
| msgid "Off" | ||||
| msgstr "Isklj." | ||||
|  | ||||
| #: ../js/ui/status/network.js:422 | ||||
| #| msgid "Connect" | ||||
| msgid "Connected" | ||||
| msgstr "Povezan" | ||||
|  | ||||
| @@ -1506,6 +1535,7 @@ msgid "connection failed" | ||||
| msgstr "povezivanje nije uspelo" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| #| msgid "Wi-Fi Settings" | ||||
| msgid "Wired Settings" | ||||
| msgstr "Podešavanja žičane veze" | ||||
|  | ||||
| @@ -1522,6 +1552,7 @@ msgid "Use as Internet connection" | ||||
| msgstr "Koristi kao Internet vezu" | ||||
|  | ||||
| #: ../js/ui/status/network.js:776 | ||||
| #| msgid "Airplane Mode" | ||||
| msgid "Airplane Mode is On" | ||||
| msgstr "Režim u avionu je uključen" | ||||
|  | ||||
| @@ -1530,10 +1561,12 @@ msgid "Wi-Fi is disabled when airplane mode is on." | ||||
| msgstr "Bežična veza je isključena kada je uključen režim u avionu." | ||||
|  | ||||
| #: ../js/ui/status/network.js:778 | ||||
| #| msgid "Airplane Mode" | ||||
| msgid "Turn Off Airplane Mode" | ||||
| msgstr "Isključi režim u avionu" | ||||
|  | ||||
| #: ../js/ui/status/network.js:787 | ||||
| #| msgid "Wi-Fi Settings" | ||||
| msgid "Wi-Fi is Off" | ||||
| msgstr "Bežična veza je isključena" | ||||
|  | ||||
| @@ -1542,6 +1575,7 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network." | ||||
| msgstr "Bežična veza treba biti uključena da biste se povezali na mrežu." | ||||
|  | ||||
| #: ../js/ui/status/network.js:789 | ||||
| #| msgid "Turn On" | ||||
| msgid "Turn On Wi-Fi" | ||||
| msgstr "Uključi bežičnu vezu" | ||||
|  | ||||
| @@ -1569,15 +1603,12 @@ msgstr "Izaberi mrežu" | ||||
| msgid "Wi-Fi Settings" | ||||
| msgstr "Podešavanja bežične veze" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1234 | ||||
| msgid "Turn On" | ||||
| msgstr "Uključi" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1251 | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Vruća tačka je radna" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| #| msgid "Connect" | ||||
| msgid "Connecting" | ||||
| msgstr "Povezujem se" | ||||
|  | ||||
| @@ -1586,6 +1617,7 @@ msgid "Network Settings" | ||||
| msgstr "Podešavanja mreže" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1435 | ||||
| #| msgid "Settings" | ||||
| msgid "VPN Settings" | ||||
| msgstr "VPN podešavanja" | ||||
|  | ||||
| @@ -1639,10 +1671,6 @@ msgstr "Baterija" | ||||
| msgid "Airplane Mode" | ||||
| msgstr "Režim u avionu" | ||||
|  | ||||
| #: ../js/ui/status/rfkill.js:84 | ||||
| msgid "On" | ||||
| msgstr "Uklj." | ||||
|  | ||||
| #: ../js/ui/status/system.js:314 | ||||
| msgid "Switch User" | ||||
| msgstr "Promeni korisnika" | ||||
| @@ -1693,6 +1721,7 @@ msgstr "Traži" | ||||
|  | ||||
| #: ../js/ui/windowAttentionHandler.js:19 | ||||
| #, javascript-format | ||||
| #| msgid "'%s' is ready" | ||||
| msgid "“%s” is ready" | ||||
| msgstr "„%s“ je spreman" | ||||
|  | ||||
| @@ -1768,6 +1797,7 @@ msgstr "Ispisuje moguće režime" | ||||
|  | ||||
| #: ../src/shell-app.c:666 | ||||
| #, c-format | ||||
| #| msgid "Failed to launch '%s'" | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Nisam uspeo da pokrenem „%s“" | ||||
|  | ||||
|   | ||||
							
								
								
									
										218
									
								
								po/tg.po
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								po/tg.po
									
									
									
									
									
								
							| @@ -8,8 +8,8 @@ msgstr "" | ||||
| "Project-Id-Version: Tajik Gnome\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" | ||||
| "shell&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2014-04-08 20:00+0000\n" | ||||
| "PO-Revision-Date: 2014-04-09 11:36+0500\n" | ||||
| "POT-Creation-Date: 2014-04-25 07:23+0000\n" | ||||
| "PO-Revision-Date: 2014-04-25 16:51+0500\n" | ||||
| "Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n" | ||||
| "Language-Team: \n" | ||||
| "Language: tg\n" | ||||
| @@ -344,25 +344,25 @@ msgstr "Интихоби ҷаласа" | ||||
| msgid "Not listed?" | ||||
| msgstr "Вуҷуд надора?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:614 | ||||
| #: ../js/gdm/loginDialog.js:616 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(масалан, корбар ё %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262 | ||||
| #: ../js/ui/components/networkAgent.js:280 | ||||
| msgid "Username: " | ||||
| msgstr "Номи корбар:" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:920 | ||||
| #: ../js/gdm/loginDialog.js:924 | ||||
| msgid "Login Window" | ||||
| msgstr "Равзанаи воридшавӣ" | ||||
|  | ||||
| #: ../js/gdm/util.js:322 | ||||
| #: ../js/gdm/util.js:323 | ||||
| msgid "Authentication error" | ||||
| msgstr "Хатои санҷиши ҳаққоният" | ||||
|  | ||||
| #: ../js/gdm/util.js:452 | ||||
| #: ../js/gdm/util.js:453 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(ё бо ангут ламс кунед)" | ||||
|  | ||||
| @@ -391,15 +391,15 @@ msgstr "Роиҷ" | ||||
| msgid "All" | ||||
| msgstr "Ҳама" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1566 | ||||
| #: ../js/ui/appDisplay.js:1567 | ||||
| msgid "New Window" | ||||
| msgstr "Равзанаи нав" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285 | ||||
| #: ../js/ui/appDisplay.js:1589 ../js/ui/dash.js:285 | ||||
| msgid "Remove from Favorites" | ||||
| msgstr "Тоза кардан аз Баргузидаҳо" | ||||
|  | ||||
| #: ../js/ui/appDisplay.js:1594 | ||||
| #: ../js/ui/appDisplay.js:1595 | ||||
| msgid "Add to Favorites" | ||||
| msgstr "Илова кардан ба Баргузидаҳо" | ||||
|  | ||||
| @@ -413,7 +413,7 @@ msgstr "%s ба баргузидаҳои шумо илова шудааст." | ||||
| msgid "%s has been removed from your favorites." | ||||
| msgstr "%s аз баргузидаҳои шумо тоза шудааст." | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809 | ||||
| #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810 | ||||
| #: ../js/ui/status/system.js:334 | ||||
| msgid "Settings" | ||||
| msgstr "Танзимот" | ||||
| @@ -583,11 +583,11 @@ msgstr "Ҳафтаи ҷорӣ" | ||||
| msgid "Next week" | ||||
| msgstr "Ҳафтаи навбатӣ" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:90 | ||||
| #: ../js/ui/components/automountManager.js:91 | ||||
| msgid "External drive connected" | ||||
| msgstr "Диски берунӣ васл шудааст" | ||||
|  | ||||
| #: ../js/ui/components/automountManager.js:101 | ||||
| #: ../js/ui/components/automountManager.js:102 | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Диски берунӣ ҷудо шудааст" | ||||
|  | ||||
| @@ -732,77 +732,77 @@ msgid "Mute" | ||||
| msgstr "Бесадо кардан" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:955 | ||||
| #: ../js/ui/components/telepathyClient.js:958 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:962 | ||||
| #: ../js/ui/components/telepathyClient.js:965 | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Дирӯз, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 24h format. i.e. "Monday, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:969 | ||||
| #: ../js/ui/components/telepathyClient.js:972 | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:976 | ||||
| #: ../js/ui/components/telepathyClient.js:979 | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%B %d, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #: ../js/ui/components/telepathyClient.js:982 | ||||
| #: ../js/ui/components/telepathyClient.js:985 | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%B %d %Y, %H∶%M" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #: ../js/ui/components/telepathyClient.js:991 | ||||
| #: ../js/ui/components/telepathyClient.js:994 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:998 | ||||
| #: ../js/ui/components/telepathyClient.js:1001 | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "Дирӯз, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the week day name followed by a time | ||||
| #. string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1005 | ||||
| #: ../js/ui/components/telepathyClient.js:1008 | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #: ../js/ui/components/telepathyClient.js:1012 | ||||
| #: ../js/ui/components/telepathyClient.js:1015 | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%B %d, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #: ../js/ui/components/telepathyClient.js:1018 | ||||
| #: ../js/ui/components/telepathyClient.js:1021 | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%B %d %Y, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1051 | ||||
| #: ../js/ui/components/telepathyClient.js:1054 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "%s аллакой бо номи %s номида мешавад" | ||||
|  | ||||
| #. translators: argument is a room name like | ||||
| #. * room@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1154 | ||||
| #: ../js/ui/components/telepathyClient.js:1158 | ||||
| #, javascript-format | ||||
| msgid "Invitation to %s" | ||||
| msgstr "Даъватнома барои to %s" | ||||
| @@ -810,38 +810,38 @@ msgstr "Даъватнома барои to %s" | ||||
| #. translators: first argument is the name of a contact and the second | ||||
| #. * one the name of a room. "Alice is inviting you to join room@jabber.org | ||||
| #. * for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1162 | ||||
| #: ../js/ui/components/telepathyClient.js:1166 | ||||
| #, javascript-format | ||||
| msgid "%s is inviting you to join %s" | ||||
| msgstr "%s шуморо барои ҳамроҳ шудан ба %s даъват мекунад" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1164 | ||||
| #: ../js/ui/components/telepathyClient.js:1199 | ||||
| #: ../js/ui/components/telepathyClient.js:1233 | ||||
| #: ../js/ui/components/telepathyClient.js:1291 | ||||
| #: ../js/ui/components/telepathyClient.js:1168 | ||||
| #: ../js/ui/components/telepathyClient.js:1203 | ||||
| #: ../js/ui/components/telepathyClient.js:1237 | ||||
| #: ../js/ui/components/telepathyClient.js:1295 | ||||
| msgid "Decline" | ||||
| msgstr "Рад кардан" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1170 | ||||
| #: ../js/ui/components/telepathyClient.js:1239 | ||||
| #: ../js/ui/components/telepathyClient.js:1296 | ||||
| #: ../js/ui/components/telepathyClient.js:1174 | ||||
| #: ../js/ui/components/telepathyClient.js:1243 | ||||
| #: ../js/ui/components/telepathyClient.js:1300 | ||||
| msgid "Accept" | ||||
| msgstr "Қабул кардан" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1189 | ||||
| #: ../js/ui/components/telepathyClient.js:1193 | ||||
| #, javascript-format | ||||
| msgid "Video call from %s" | ||||
| msgstr "Занги видеоӣ аз %s" | ||||
|  | ||||
| #. translators: argument is a contact name like Alice for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1192 | ||||
| #: ../js/ui/components/telepathyClient.js:1196 | ||||
| #, javascript-format | ||||
| msgid "Call from %s" | ||||
| msgstr "Занг аз %s" | ||||
|  | ||||
| #. translators: this is a button label (verb), not a noun */ | ||||
| #: ../js/ui/components/telepathyClient.js:1206 | ||||
| #: ../js/ui/components/telepathyClient.js:1210 | ||||
| msgid "Answer" | ||||
| msgstr "Ҷавоб" | ||||
|  | ||||
| @@ -850,110 +850,110 @@ msgstr "Ҷавоб" | ||||
| #. * file name. The string will be something | ||||
| #. * like: "Alice is sending you test.ogg" | ||||
| #. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1227 | ||||
| #: ../js/ui/components/telepathyClient.js:1231 | ||||
| #, javascript-format | ||||
| msgid "%s is sending you %s" | ||||
| msgstr "%s ба шумо %s-ро мефиристад" | ||||
|  | ||||
| #. To translators: The parameter is the contact's alias */ | ||||
| #: ../js/ui/components/telepathyClient.js:1256 | ||||
| #: ../js/ui/components/telepathyClient.js:1260 | ||||
| #, javascript-format | ||||
| msgid "%s would like permission to see when you are online" | ||||
| msgstr "%s аз шумо иҷозат мепурсад, ки тавонад шуморо дар онлайн бинад" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1342 | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| msgid "Network error" | ||||
| msgstr "Хатои шабака" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1344 | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| msgid "Authentication failed" | ||||
| msgstr "Санҷиши ҳаққоният қатъ шудааст." | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1346 | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| msgid "Encryption error" | ||||
| msgstr "Хатои рамзгузорӣ" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1348 | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| msgid "Certificate not provided" | ||||
| msgstr "Гувоҳинома таъмин нашудааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1350 | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| msgid "Certificate untrusted" | ||||
| msgstr "Гувоҳиномаи беэътибор" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1352 | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| msgid "Certificate expired" | ||||
| msgstr "Гувоҳинома аз мӯҳлаташ гузашт" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1354 | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| msgid "Certificate not activated" | ||||
| msgstr "Гувоҳинома фаъол нашудааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1356 | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| msgid "Certificate hostname mismatch" | ||||
| msgstr "Номувофиқати гувоҳиномаи номи мизоҷон" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1358 | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| msgid "Certificate fingerprint mismatch" | ||||
| msgstr "Номувофиқати гувоҳиномаи нақши ангуштон" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1360 | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| msgid "Certificate self-signed" | ||||
| msgstr "Гувоҳиномаи худимзошуда" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1362 | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| msgid "Status is set to offline" | ||||
| msgstr "Вазъият ба \"офлайн\" гузаштааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1364 | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| msgid "Encryption is not available" | ||||
| msgstr "Рамзгузорӣ дастрас нест" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1366 | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| msgid "Certificate is invalid" | ||||
| msgstr "Гувоҳинома нодуруст аст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1368 | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| msgid "Connection has been refused" | ||||
| msgstr "Пайваст рад карда шудааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1370 | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| msgid "Connection can't be established" | ||||
| msgstr "Пайвастшавӣ имконнопазир аст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1372 | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| msgid "Connection has been lost" | ||||
| msgstr "Пайваст гум шудааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1374 | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| msgid "This account is already connected to the server" | ||||
| msgstr "Ин ҳисоб аллакай ба сервер пайваст шудааст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1376 | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| msgid "" | ||||
| "Connection has been replaced by a new connection using the same resource" | ||||
| msgstr "Пайваст тавассути сарчашмаи якхела бо пайвасти нав ҷойиваз карда шуд" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1378 | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| msgid "The account already exists on the server" | ||||
| msgstr "Ҳисоб дар сервер аллакай мавҷуд аст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1380 | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| msgid "Server is currently too busy to handle the connection" | ||||
| msgstr "Барои коркарди ин пайваст сервер дар айни ҳол хеле машғул мебошад" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1382 | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| msgid "Certificate has been revoked" | ||||
| msgstr "Гувоҳинома лағв карда шуд" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1384 | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| msgid "" | ||||
| "Certificate uses an insecure cipher algorithm or is cryptographically weak" | ||||
| msgstr "" | ||||
| "Гувоҳинома алгоритми хатарноки рамзро истифода мебарад, ё ки рамзгузории " | ||||
| "суст дорад" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1386 | ||||
| #: ../js/ui/components/telepathyClient.js:1390 | ||||
| msgid "" | ||||
| "The length of the server certificate, or the depth of the server certificate " | ||||
| "chain, exceed the limits imposed by the cryptography library" | ||||
| @@ -961,22 +961,22 @@ msgstr "" | ||||
| "Дарозии гувоҳиномаи сервер, ё ки чуқурии занҷири гувоҳиномаи сервер, аз " | ||||
| "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1388 | ||||
| #: ../js/ui/components/telepathyClient.js:1392 | ||||
| msgid "Internal error" | ||||
| msgstr "Хатогии дохилӣ" | ||||
|  | ||||
| #. translators: argument is the account name, like | ||||
| #. * name@jabber.org for example. */ | ||||
| #: ../js/ui/components/telepathyClient.js:1398 | ||||
| #: ../js/ui/components/telepathyClient.js:1402 | ||||
| #, javascript-format | ||||
| msgid "Unable to connect to %s" | ||||
| msgstr "Пайвастшавӣ ба %s имконнопазир аст" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1403 | ||||
| #: ../js/ui/components/telepathyClient.js:1407 | ||||
| msgid "View account" | ||||
| msgstr "Намоиш додани ҳисоб" | ||||
|  | ||||
| #: ../js/ui/components/telepathyClient.js:1440 | ||||
| #: ../js/ui/components/telepathyClient.js:1444 | ||||
| msgid "Unknown reason" | ||||
| msgstr "Сабаби номаълум" | ||||
|  | ||||
| @@ -1132,13 +1132,13 @@ msgid "Other users are logged in." | ||||
| msgstr "Корбарони дигар ворид шудаанд." | ||||
|  | ||||
| #. Translators: Remote here refers to a remote session, like a ssh login */ | ||||
| #: ../js/ui/endSessionDialog.js:618 | ||||
| #: ../js/ui/endSessionDialog.js:619 | ||||
| #, javascript-format | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (дурдаст)" | ||||
|  | ||||
| #. Translators: Console here refers to a tty like a VT console */ | ||||
| #: ../js/ui/endSessionDialog.js:621 | ||||
| #: ../js/ui/endSessionDialog.js:622 | ||||
| #, javascript-format | ||||
| msgid "%s (console)" | ||||
| msgstr "%s (консол)" | ||||
| @@ -1152,7 +1152,7 @@ msgstr "Насб кардан" | ||||
| msgid "Download and install “%s” from extensions.gnome.org?" | ||||
| msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?" | ||||
|  | ||||
| #: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335 | ||||
| #: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335 | ||||
| msgid "Keyboard" | ||||
| msgstr "Клавиатура" | ||||
|  | ||||
| @@ -1240,11 +1240,11 @@ msgstr "Ягон паём нест" | ||||
| msgid "Message Tray" | ||||
| msgstr "Қуттии паёмҳо" | ||||
|  | ||||
| #: ../js/ui/messageTray.js:2962 | ||||
| #: ../js/ui/messageTray.js:2967 | ||||
| msgid "System Information" | ||||
| msgstr "Маълумоти система" | ||||
|  | ||||
| #: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425 | ||||
| #: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Номаълум" | ||||
| @@ -1282,7 +1282,7 @@ msgstr "Баромад" | ||||
| msgid "Activities" | ||||
| msgstr "Фаъолиятҳо" | ||||
|  | ||||
| #: ../js/ui/panel.js:914 | ||||
| #: ../js/ui/panel.js:915 | ||||
| msgid "Top Bar" | ||||
| msgstr "Панели боло" | ||||
|  | ||||
| @@ -1319,19 +1319,19 @@ msgstr "Қулф кардан" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME бояд экранро қулф кунад" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309 | ||||
| #: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Қулф карда намешавад" | ||||
|  | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310 | ||||
| #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313 | ||||
| msgid "Lock was blocked by an application" | ||||
| msgstr "Қулф аз тарави барнома баста шудааст" | ||||
|  | ||||
| #: ../js/ui/search.js:603 | ||||
| #: ../js/ui/search.js:606 | ||||
| msgid "Searching…" | ||||
| msgstr "Ҷустуҷӯ рафта истодааст..." | ||||
|  | ||||
| #: ../js/ui/search.js:649 | ||||
| #: ../js/ui/search.js:652 | ||||
| msgid "No results." | ||||
| msgstr "Ягон натиҷа нест." | ||||
|  | ||||
| @@ -1395,11 +1395,11 @@ msgstr "Тугмаҳои ҷастухез" | ||||
| msgid "Mouse Keys" | ||||
| msgstr "Тугмаҳои муш" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:143 | ||||
| #: ../js/ui/status/accessibility.js:144 | ||||
| msgid "High Contrast" | ||||
| msgstr "Контрасти баланд" | ||||
|  | ||||
| #: ../js/ui/status/accessibility.js:192 | ||||
| #: ../js/ui/status/accessibility.js:193 | ||||
| msgid "Large Text" | ||||
| msgstr "Матни бузург" | ||||
|  | ||||
| @@ -1442,12 +1442,10 @@ msgid "Location" | ||||
| msgstr "Ҷойгиршавӣ" | ||||
|  | ||||
| #: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168 | ||||
| #| msgid "Disabled" | ||||
| msgid "Disable" | ||||
| msgstr "Ғайрифаъол кардан" | ||||
|  | ||||
| #: ../js/ui/status/location.js:165 | ||||
| #| msgid "Enabled" | ||||
| msgid "Enable" | ||||
| msgstr "Фаъол кардан" | ||||
|  | ||||
| @@ -1471,37 +1469,42 @@ msgstr "Пайваст шудааст" | ||||
| #. Translators: this is for network devices that are physically present but are not | ||||
| #. under NetworkManager's control (and thus cannot be used in the menu) */ | ||||
| #: ../js/ui/status/network.js:426 | ||||
| msgid "unmanaged" | ||||
| msgstr "идоранашуда" | ||||
| #| msgid "unmanaged" | ||||
| msgid "Unmanaged" | ||||
| msgstr "Идоранашуда" | ||||
|  | ||||
| #: ../js/ui/status/network.js:428 | ||||
| msgid "disconnecting..." | ||||
| msgstr "қатъ кардани пайваст..." | ||||
| #| msgid "disconnecting..." | ||||
| msgid "Disconnecting" | ||||
| msgstr "Пайваст қатъ шуда истодааст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "пайвастшавӣ..." | ||||
| #: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Пайвастшавӣ" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "санҷиши ҳаққоният лозим аст" | ||||
| #: ../js/ui/status/network.js:437 | ||||
| #| msgid "authentication required" | ||||
| 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:445 | ||||
| msgid "firmware missing" | ||||
| msgstr "нармафзори дарунсохт вуҷуд надорад" | ||||
| #| msgid "firmware missing" | ||||
| msgid "Firmware missing" | ||||
| 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:449 | ||||
| msgid "unavailable" | ||||
| msgstr "дастнорас" | ||||
| #| msgid "unavailable" | ||||
| msgid "Unavailable" | ||||
| msgstr "Дастнорас" | ||||
|  | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "пайваст қатъ шудааст" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Пайваст қатъ шудааст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:467 | ||||
| msgid "Wired Settings" | ||||
| @@ -1575,9 +1578,18 @@ msgstr "Фаъол кардан" | ||||
| msgid "Hotspot Active" | ||||
| msgstr "Hotspot фаъол аст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1254 | ||||
| msgid "Connecting" | ||||
| msgstr "Пайвастшавӣ" | ||||
| #: ../js/ui/status/network.js:1362 | ||||
| msgid "connecting..." | ||||
| msgstr "пайвастшавӣ..." | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password */ | ||||
| #: ../js/ui/status/network.js:1365 | ||||
| msgid "authentication required" | ||||
| msgstr "санҷиши ҳаққоният лозим аст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1367 | ||||
| msgid "connection failed" | ||||
| msgstr "пайваст қатъ шудааст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88 | ||||
| msgid "Network Settings" | ||||
| @@ -1595,10 +1607,6 @@ msgstr "VPN" | ||||
| msgid "Network Manager" | ||||
| msgstr "Мудири шабака" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1646 | ||||
| msgid "Connection failed" | ||||
| msgstr "Пайваст қатъ шудааст" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1647 | ||||
| msgid "Activation of network connection failed" | ||||
| msgstr "Фаъолсозии пайвасти шабака қатъ шудааст." | ||||
| @@ -1709,7 +1717,7 @@ msgstr "Барқарор кардани тағйирот" | ||||
| msgid "Keep Changes" | ||||
| msgstr "Нигоҳ доштани тағйирот" | ||||
|  | ||||
| #: ../js/ui/windowManager.js:97 | ||||
| #: ../js/ui/windowManager.js:98 | ||||
| #, javascript-format | ||||
| msgid "Settings changes will revert in %d second" | ||||
| msgid_plural "Settings changes will revert in %d seconds" | ||||
| @@ -1772,7 +1780,7 @@ msgstr "Паролҳо мувофиқат намекунанд." | ||||
| msgid "Password cannot be blank" | ||||
| msgstr "Парол бояд холӣ набошад" | ||||
|  | ||||
| #: ../src/shell-polkit-authentication-agent.c:343 | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо корбар бекор карда шуд" | ||||
|  | ||||
|   | ||||
| @@ -33,10 +33,6 @@ bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-perf-tool | ||||
| EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-perf-tool.in | ||||
| bin_PROGRAMS = gnome-shell gnome-shell-extension-prefs | ||||
|  | ||||
| if HAVE_MUTTER_WAYLAND | ||||
| bin_PROGRAMS += gnome-shell-wayland | ||||
| endif HAVE_MUTTER_WAYLAND | ||||
|  | ||||
| generated_script_substitutions = \ | ||||
| 	    -e "s|@bindir[@]|$(bindir)|g" \ | ||||
| 	    -e "s|@datadir[@]|$(datadir)|g" \ | ||||
| @@ -76,10 +72,6 @@ privlibdir = $(pkglibdir) | ||||
| privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la | ||||
| noinst_LTLIBRARIES += libgnome-shell-base.la | ||||
|  | ||||
| if HAVE_MUTTER_WAYLAND | ||||
| privlib_LTLIBRARIES += libgnome-shell-wayland.la | ||||
| endif HAVE_MUTTER_WAYLAND | ||||
|  | ||||
| shell_built_sources = \ | ||||
| 	shell-enum-types.h \ | ||||
| 	shell-enum-types.c | ||||
| @@ -197,21 +189,6 @@ gnome_shell_CPPFLAGS = \ | ||||
| gnome_shell_LDADD = libgnome-shell.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) | ||||
| gnome_shell_DEPENDENCIES = libgnome-shell.la | ||||
|  | ||||
| if HAVE_MUTTER_WAYLAND | ||||
| libgnome_shell_wayland_la_SOURCES = $(libgnome_shell_sources) | ||||
| nodist_libgnome_shell_wayland_la_SOURCES = $(libgnome_shell_built_sources) | ||||
|  | ||||
| gnome_shell_wayland_SOURCES = main.c | ||||
| gnome_shell_wayland_CPPFLAGS = \ | ||||
| 	-DHAVE_WAYLAND \ | ||||
| 	-DMUTTER_TYPELIB_DIR=\"$(MUTTER_WAYLAND_TYPELIB_DIR)\" \ | ||||
| 	$(MUTTER_WAYLAND_CFLAGS) \ | ||||
| 	$(gnome_shell_cflags) | ||||
|  | ||||
| gnome_shell_wayland_LDADD = libgnome-shell-wayland.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_WAYLAND_LIBS) | ||||
| gnome_shell_wayland_DEPENDENCIES = libgnome-shell-wayland.la | ||||
| endif HAVE_MUTTER_WAYLAND | ||||
|  | ||||
| gnome_shell_extension_prefs_SOURCES = \ | ||||
| 	gnome-shell-extension-prefs.c \ | ||||
| 	$(NULL) | ||||
| @@ -323,12 +300,6 @@ libgnome_shell_la_LDFLAGS = $(libgnome_shell_ldflags) | ||||
| libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) libgnome-shell-base.la | ||||
| libgnome_shell_la_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags) | ||||
|  | ||||
| if HAVE_MUTTER_WAYLAND | ||||
| libgnome_shell_wayland_la_LDFLAGS = $(libgnome_shell_ldflags) | ||||
| libgnome_shell_wayland_la_LIBADD = $(MUTTER_WAYLAND_LIBS) libgnome-shell-base.la | ||||
| libgnome_shell_wayland_la_CPPFLAGS = $(MUTTER_WAYLAND_CFLAGS) -DHAVE_WAYLAND $(gnome_shell_cflags) | ||||
| endif HAVE_MUTTER_WAYLAND | ||||
|  | ||||
| ShellMenu-0.1.gir: libgnome-shell-menu.la | ||||
| ShellMenu_0_1_gir_INCLUDES = Gio-2.0 | ||||
| ShellMenu_0_1_gir_CFLAGS = $(libgnome_shell_menu_la_CPPFLAGS) -I $(srcdir) | ||||
| @@ -349,16 +320,12 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir | ||||
| CLEANFILES += ShellMenu-0.1.gir | ||||
|  | ||||
| Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir | ||||
| Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0 | ||||
| Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 | ||||
| if HAVE_NETWORKMANAGER | ||||
| Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0 | ||||
| endif | ||||
| Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir) | ||||
| # Hack! we use PROGRAM instead of LIBS so that the soname is not included | ||||
| # in the typelib. This way the symbols will be resolved with the libgnome-shell | ||||
| # linked against the executable (which will be libgnome-shell-wayland for | ||||
| # gnome-shell-wayland) | ||||
| Shell_0_1_gir_PROGRAM = $(builddir)/gnome-shell | ||||
| Shell_0_1_gir_LIBS = libgnome-shell.la | ||||
| Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources) | ||||
| Shell_0_1_gir_SCANNERFLAGS =	\ | ||||
| 	--include-uninstalled=$(builddir)/St-1.0.gir \ | ||||
|   | ||||
| @@ -369,6 +369,7 @@ backend_died_cb (EClient *client, CalendarSourceData *source_data) | ||||
|  | ||||
|   source_data->timeout_id = g_timeout_add_seconds (2, backend_restart, | ||||
| 		  				   source_data); | ||||
|   g_source_set_name_by_id (source_data->timeout_id, "[gnome-shell] backend_restart"); | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
| @@ -537,6 +537,7 @@ app_schedule_changed (App *app) | ||||
|       app->changed_timeout_id = g_timeout_add (2000, | ||||
|                                                on_app_schedule_changed_cb, | ||||
|                                                app); | ||||
|       g_source_set_name_by_id (app->changed_timeout_id, "[gnome-shell] on_app_schedule_changed_cb"); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -6,6 +6,8 @@ | ||||
| #include <gjs/gjs.h> | ||||
| #include <glib/gi18n.h> | ||||
|  | ||||
| #include "shell-js.h" | ||||
|  | ||||
| int | ||||
| main (int argc, char *argv[]) | ||||
| { | ||||
| @@ -34,7 +36,6 @@ main (int argc, char *argv[]) | ||||
|       return 1; | ||||
|     } | ||||
|  | ||||
|  | ||||
|   if (!gjs_context_eval (context, | ||||
|                          "const Main = imports.extensionPrefs.main; Main.main(ARGV);", | ||||
|                          -1, | ||||
|   | ||||
| @@ -73,7 +73,15 @@ static void gnome_shell_plugin_show_tile_preview (MetaPlugin      *plugin, | ||||
|                                                   MetaRectangle   *tile_rect, | ||||
|                                                   int              tile_monitor); | ||||
| static void gnome_shell_plugin_hide_tile_preview (MetaPlugin *plugin); | ||||
|  | ||||
| static void gnome_shell_plugin_show_window_menu  (MetaPlugin         *plugin, | ||||
|                                                   MetaWindow         *window, | ||||
|                                                   MetaWindowMenuType  menu, | ||||
|                                                   int                 x, | ||||
|                                                   int                 y); | ||||
| static void gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin         *plugin, | ||||
|                                                           MetaWindow         *window, | ||||
|                                                           MetaWindowMenuType  menu, | ||||
|                                                           MetaRectangle      *rect); | ||||
|  | ||||
| static gboolean              gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, | ||||
|                                                                XEvent     *event); | ||||
| @@ -140,6 +148,8 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass) | ||||
|  | ||||
|   plugin_class->show_tile_preview = gnome_shell_plugin_show_tile_preview; | ||||
|   plugin_class->hide_tile_preview = gnome_shell_plugin_hide_tile_preview; | ||||
|   plugin_class->show_window_menu = gnome_shell_plugin_show_window_menu; | ||||
|   plugin_class->show_window_menu_for_rect = gnome_shell_plugin_show_window_menu_for_rect; | ||||
|  | ||||
|   plugin_class->xevent_filter     = gnome_shell_plugin_xevent_filter; | ||||
|   plugin_class->keybinding_filter = gnome_shell_plugin_keybinding_filter; | ||||
| @@ -303,6 +313,25 @@ gnome_shell_plugin_hide_tile_preview (MetaPlugin *plugin) | ||||
|   _shell_wm_hide_tile_preview (get_shell_wm ()); | ||||
| } | ||||
|  | ||||
| static void | ||||
| gnome_shell_plugin_show_window_menu (MetaPlugin         *plugin, | ||||
|                                      MetaWindow         *window, | ||||
|                                      MetaWindowMenuType  menu, | ||||
|                                      int                 x, | ||||
|                                      int                 y) | ||||
| { | ||||
|   _shell_wm_show_window_menu (get_shell_wm (), window, menu, x, y); | ||||
| } | ||||
|  | ||||
| static void | ||||
| gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin         *plugin, | ||||
|                                               MetaWindow         *window, | ||||
|                                               MetaWindowMenuType  menu, | ||||
|                                               MetaRectangle      *rect) | ||||
| { | ||||
|   _shell_wm_show_window_menu_for_rect (get_shell_wm (), window, menu, rect); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, | ||||
|                                   XEvent     *xev) | ||||
| @@ -326,10 +355,8 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, | ||||
|     } | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_WAYLAND | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     return FALSE; | ||||
| #endif | ||||
|  | ||||
|   /* | ||||
|    * Pass the event to shell-global for XDND | ||||
|   | ||||
| @@ -778,7 +778,7 @@ emit_changed_accels (GtkActionMuxer  *muxer, | ||||
| /** | ||||
|  * gtk_action_muxer_set_parent: | ||||
|  * @muxer: a #GtkActionMuxer | ||||
|  * @parent: (allow-none): the new parent #GtkActionMuxer | ||||
|  * @parent: (nullable): the new parent #GtkActionMuxer | ||||
|  * | ||||
|  * Sets the parent of @muxer to @parent. | ||||
|  */ | ||||
|   | ||||
| @@ -76,6 +76,7 @@ ensure_autoquit_on (void) | ||||
|   autoquit_id =  | ||||
|     g_timeout_add_seconds (AUTOQUIT_TIMEOUT, | ||||
|                            autoquit_timeout_cb, NULL); | ||||
|   g_source_set_name_by_id (autoquit_id, "[gnome-shell] autoquit_timeout_cb"); | ||||
| } | ||||
|  | ||||
| typedef struct { | ||||
|   | ||||
| @@ -590,6 +590,7 @@ shell_mime_sniffer_sniff_async (ShellMimeSniffer *self, | ||||
|   self->priv->watchdog_id = | ||||
|     g_timeout_add (WATCHDOG_TIMEOUT, | ||||
|                    watchdog_timeout_reached_cb, self); | ||||
|   g_source_set_name_by_id (self->priv->watchdog_id, "[gnome-shell] watchdog_timeout_reached_cb"); | ||||
|  | ||||
|   start_loading_file (self); | ||||
| } | ||||
|   | ||||
| @@ -252,7 +252,7 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, | ||||
| /** | ||||
|  * shell_app_system_lookup_desktop_wmclass: | ||||
|  * @system: a #ShellAppSystem | ||||
|  * @wmclass: (allow-none): A WM_CLASS value | ||||
|  * @wmclass: (nullable): A WM_CLASS value | ||||
|  * | ||||
|  * Find a valid application whose .desktop file, without the extension | ||||
|  * and properly canonicalized, matches @wmclass. | ||||
| @@ -303,7 +303,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system, | ||||
| /** | ||||
|  * shell_app_system_lookup_startup_wmclass: | ||||
|  * @system: a #ShellAppSystem | ||||
|  * @wmclass: (allow-none): A WM_CLASS value | ||||
|  * @wmclass: (nullable): A WM_CLASS value | ||||
|  * | ||||
|  * Find a valid application whose .desktop file contains a | ||||
|  * StartupWMClass entry matching @wmclass. | ||||
|   | ||||
| @@ -567,6 +567,7 @@ ensure_queued_save (ShellAppUsage *self) | ||||
|   if (self->save_id != 0) | ||||
|     return; | ||||
|   self->save_id = g_timeout_add_seconds (SAVE_APPS_TIMEOUT_SECONDS, idle_save_application_usage, self); | ||||
|   g_source_set_name_by_id (self->save_id, "[gnome-shell] idle_save_application_usage"); | ||||
| } | ||||
|  | ||||
| /* Clean up apps we see rarely. | ||||
|   | ||||
| @@ -516,7 +516,7 @@ find_most_recent_transient_on_same_workspace (MetaDisplay *display, | ||||
| /** | ||||
|  * shell_app_activate_window: | ||||
|  * @app: a #ShellApp | ||||
|  * @window: (allow-none): Window to be focused | ||||
|  * @window: (nullable): Window to be focused | ||||
|  * @timestamp: Event timestamp | ||||
|  * | ||||
|  * Bring all windows for the given app to the foreground, | ||||
|   | ||||
| @@ -34,7 +34,6 @@ | ||||
| #endif | ||||
|  | ||||
| #ifdef __OpenBSD__ | ||||
| #include <sys/param.h> | ||||
| #include <sys/sysctl.h> | ||||
| #endif | ||||
|  | ||||
| @@ -286,7 +285,33 @@ shell_global_init (ShellGlobal *global) | ||||
|  | ||||
|   if (shell_js) | ||||
|     { | ||||
|       int i, j; | ||||
|       search_path = g_strsplit (shell_js, ":", -1); | ||||
|  | ||||
|       /* The naive g_strsplit above will split 'resource:///foo/bar' into 'resource', | ||||
|        * '///foo/bar'. Combine these back together by looking for a literal 'resource' | ||||
|        * in the array. */ | ||||
|       for (i = 0, j = 0; search_path[i];) | ||||
|         { | ||||
|           char *out; | ||||
|  | ||||
|           if (strcmp (search_path[i], "resource") == 0 && search_path[i + 1] != NULL) | ||||
|             { | ||||
|               out = g_strconcat (search_path[i], ":", search_path[i + 1], NULL); | ||||
|               g_free (search_path[i]); | ||||
|               g_free (search_path[i + 1]); | ||||
|               i += 2; | ||||
|             } | ||||
|           else | ||||
|             { | ||||
|               out = search_path[i]; | ||||
|               i += 1; | ||||
|             } | ||||
|  | ||||
|           search_path[j++] = out; | ||||
|         } | ||||
|  | ||||
|       search_path[j] = NULL; /* NULL-terminate the now possibly shorter array */ | ||||
|     } | ||||
|   else | ||||
|     { | ||||
| @@ -885,7 +910,6 @@ _shell_global_set_plugin (ShellGlobal *global, | ||||
|  | ||||
|   global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen)); | ||||
|  | ||||
| #ifdef HAVE_WAYLAND | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       /* When Mutter is acting as its own display server then the | ||||
| @@ -907,7 +931,6 @@ _shell_global_set_plugin (ShellGlobal *global, | ||||
|       global->stage_xwindow = None; | ||||
|     } | ||||
|   else | ||||
| #endif | ||||
|     { | ||||
|       global->stage_xwindow = clutter_x11_get_stage_window (global->stage); | ||||
|       global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display, | ||||
| @@ -1132,28 +1155,19 @@ shell_global_reexec_self (ShellGlobal *global) | ||||
| { | ||||
|   GPtrArray *arr; | ||||
|   gsize len; | ||||
|  | ||||
| #if defined __linux__ | ||||
|   char *buf; | ||||
|   char *buf_p; | ||||
|   char *buf_end; | ||||
|   GError *error = NULL; | ||||
|  | ||||
| #if defined __linux__ | ||||
|   if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error)) | ||||
|     { | ||||
|       g_warning ("failed to get /proc/self/cmdline: %s", error->message); | ||||
|       return; | ||||
|     } | ||||
| #elif defined __OpenBSD__ | ||||
|   int pid = getpid(); | ||||
|   int mib[] = { CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV }; | ||||
|   if (sysctl(mib, G_N_ELEMENTS (mib), &buf, &len, NULL, 0) == -1) { | ||||
|     g_warning ("failed to get command line args: %d", errno); | ||||
|     return; | ||||
|   } | ||||
| #else | ||||
|   return; | ||||
| #endif | ||||
|    | ||||
|  | ||||
|   buf_end = buf+len; | ||||
|   arr = g_ptr_array_new (); | ||||
|   /* The cmdline file is NUL-separated */ | ||||
| @@ -1161,6 +1175,30 @@ shell_global_reexec_self (ShellGlobal *global) | ||||
|     g_ptr_array_add (arr, buf_p); | ||||
|  | ||||
|   g_ptr_array_add (arr, NULL); | ||||
| #elif defined __OpenBSD__ | ||||
|   gchar **args, **args_p; | ||||
|   gint mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV }; | ||||
|  | ||||
|   if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1) | ||||
|     return; | ||||
|  | ||||
|   args = g_malloc0 (len); | ||||
|  | ||||
|   if (sysctl (mib, G_N_ELEMENTS (mib), args, &len, NULL, 0) == -1) { | ||||
|     g_warning ("failed to get command line args: %d", errno); | ||||
|     g_free (args); | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   arr = g_ptr_array_new (); | ||||
|   for (args_p = args; *args_p != NULL; args_p++) { | ||||
|     g_ptr_array_add (arr, *args_p); | ||||
|   } | ||||
|  | ||||
|   g_ptr_array_add (arr, NULL); | ||||
| #else | ||||
|   return; | ||||
| #endif | ||||
|  | ||||
|   /* Close all file descriptors other than stdin/stdout/stderr, otherwise | ||||
|    * they will leak and stay open after the exec. In particular, this is | ||||
| @@ -1176,6 +1214,11 @@ shell_global_reexec_self (ShellGlobal *global) | ||||
|   execvp (arr->pdata[0], (char**)arr->pdata); | ||||
|   g_warning ("failed to reexec: %s", g_strerror (errno)); | ||||
|   g_ptr_array_free (arr, TRUE); | ||||
| #if defined __linux__ | ||||
|   g_free (buf); | ||||
| #elif defined __OpenBSD__ | ||||
|   g_free (args); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1436,9 +1479,12 @@ schedule_leisure_functions (ShellGlobal *global) | ||||
|    * in another thread. | ||||
|    */ | ||||
|   if (!global->leisure_function_id) | ||||
|     global->leisure_function_id = g_idle_add_full (G_PRIORITY_LOW, | ||||
|                                                    run_leisure_functions, | ||||
|                                                    global, NULL); | ||||
|     { | ||||
|       global->leisure_function_id = g_idle_add_full (G_PRIORITY_LOW, | ||||
|                                                      run_leisure_functions, | ||||
|                                                      global, NULL); | ||||
|       g_source_set_name_by_id (global->leisure_function_id, "[gnome-shell] run_leisure_functions"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1556,7 +1602,7 @@ build_ca_proplist_for_event (ca_proplist  *props, | ||||
|  * @global: the #ShellGlobal | ||||
|  * @id: an id, used to cancel later (0 if not needed) | ||||
|  * @name: the sound name | ||||
|  * @for_event: (allow-none): a #ClutterEvent in response to which the sound is played | ||||
|  * @for_event: (nullable): a #ClutterEvent in response to which the sound is played | ||||
|  * | ||||
|  * Plays a simple sound picked according to Freedesktop sound theme. | ||||
|  * Really just a workaround for libcanberra not being introspected. | ||||
| @@ -1584,7 +1630,7 @@ shell_global_play_theme_sound (ShellGlobal  *global, | ||||
|  * @id: an id, used to cancel later (0 if not needed) | ||||
|  * @name: the sound name | ||||
|  * @description: the localized description of the event that triggered this alert | ||||
|  * @for_event: (allow-none): a #ClutterEvent in response to which the sound is played | ||||
|  * @for_event: (nullable): a #ClutterEvent in response to which the sound is played | ||||
|  * @application_id: application on behalf of which the sound is played | ||||
|  * @application_name: | ||||
|  * | ||||
| @@ -1618,7 +1664,7 @@ shell_global_play_theme_sound_full (ShellGlobal  *global, | ||||
|  * @id: an id, used to cancel later (0 if not needed) | ||||
|  * @file_name: the file name to play | ||||
|  * @description: the localized description of the event that triggered this alert | ||||
|  * @for_event: (allow-none): a #ClutterEvent in response to which the sound is played | ||||
|  * @for_event: (nullable): a #ClutterEvent in response to which the sound is played | ||||
|  * @application_id: application on behalf of which the sound is played | ||||
|  * @application_name: | ||||
|  * | ||||
| @@ -1652,7 +1698,7 @@ shell_global_play_sound_file_full  (ShellGlobal  *global, | ||||
|  * @id: an id, used to cancel later (0 if not needed) | ||||
|  * @file_name: the file name to play | ||||
|  * @description: the localized description of the event that triggered this alert | ||||
|  * @for_event: (allow-none): a #ClutterEvent in response to which the sound is played | ||||
|  * @for_event: (nullable): a #ClutterEvent in response to which the sound is played | ||||
|  * | ||||
|  * Like shell_global_play_theme_sound(), but with an explicit path | ||||
|  * instead of a themed sound. | ||||
| @@ -1813,7 +1859,7 @@ load_variant (GFile      *dir, | ||||
|  * shell_global_set_runtime_state: | ||||
|  * @global: a #ShellGlobal | ||||
|  * @property_name: Name of the property | ||||
|  * @variant: (allow-none): A #GVariant, or %NULL to unset | ||||
|  * @variant: (nullable): A #GVariant, or %NULL to unset | ||||
|  * | ||||
|  * Change the value of serialized runtime state. | ||||
|  */ | ||||
| @@ -1848,7 +1894,7 @@ shell_global_get_runtime_state (ShellGlobal  *global, | ||||
|  * shell_global_set_persistent_state: | ||||
|  * @global: a #ShellGlobal | ||||
|  * @property_name: Name of the property | ||||
|  * @variant: (allow-none): A #GVariant, or %NULL to unset | ||||
|  * @variant: (nullable): A #GVariant, or %NULL to unset | ||||
|  * | ||||
|  * Change the value of serialized persistent state. | ||||
|  */ | ||||
|   | ||||
| @@ -516,7 +516,7 @@ shell_keyring_prompt_new (void) | ||||
|  * | ||||
|  * Get the prompt password text actor | ||||
|  * | ||||
|  * Returns: (transfer none) (allow-none): the password actor | ||||
|  * Returns: (transfer none) (nullable): the password actor | ||||
|  */ | ||||
| ClutterText * | ||||
| shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self) | ||||
| @@ -531,7 +531,7 @@ shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self) | ||||
|  * | ||||
|  * Get the prompt password text actor | ||||
|  * | ||||
|  * Returns: (transfer none) (allow-none): the password actor | ||||
|  * Returns: (transfer none) (nullable): the password actor | ||||
|  */ | ||||
| ClutterText * | ||||
| shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self) | ||||
| @@ -616,7 +616,7 @@ on_password_changed (ClutterText *text, | ||||
| /** | ||||
|  * shell_keyring_prompt_set_password_actor: | ||||
|  * @self: the internal prompt | ||||
|  * @password_actor: (allow-none): the password actor | ||||
|  * @password_actor: (nullable): the password actor | ||||
|  * | ||||
|  * Set the prompt password text actor | ||||
|  */ | ||||
| @@ -651,7 +651,7 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self, | ||||
| /** | ||||
|  * shell_keyring_prompt_set_confirm_actor: | ||||
|  * @self: the internal prompt | ||||
|  * @confirm_actor: (allow-none): the confirm password actor | ||||
|  * @confirm_actor: (nullable): the confirm password actor | ||||
|  * | ||||
|  * Set the prompt password confirmation text actor | ||||
|  */ | ||||
|   | ||||
| @@ -64,7 +64,7 @@ shell_menu_tracker_remove_func (gint position, | ||||
|  * shell_menu_tracker_new: | ||||
|  * @observable: | ||||
|  * @model: | ||||
|  * @action_namespace: (allow-none): | ||||
|  * @action_namespace: (nullable): | ||||
|  * @insert_func: | ||||
|  * @insert_user_data: | ||||
|  * @insert_notify: | ||||
|   | ||||
| @@ -75,12 +75,13 @@ on_timeout (gpointer data) | ||||
| } | ||||
|  | ||||
| static void | ||||
| establish_timeout () | ||||
| establish_timeout (void) | ||||
| { | ||||
|   if (timeout_id != 0) | ||||
|     g_source_remove (timeout_id); | ||||
|  | ||||
|   timeout_id = g_timeout_add (opt_idle_timeout * 1000, on_timeout, NULL); | ||||
|   g_source_set_name_by_id (timeout_id, "[gnome-shell] on_timeout"); | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
| @@ -223,6 +223,7 @@ shell_perf_log_set_enabled (ShellPerfLog *perf_log, | ||||
|           perf_log->statistics_timeout_id = g_timeout_add (STATISTIC_COLLECTION_INTERVAL_MS, | ||||
|                                                            statistics_timeout, | ||||
|                                                            perf_log); | ||||
|           g_source_set_name_by_id (perf_log->statistics_timeout_id, "[gnome-shell] statistics_timeout"); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|   | ||||
| @@ -300,11 +300,14 @@ on_request_cancelled (GCancellable *cancellable, | ||||
|                       gpointer      user_data) | ||||
| { | ||||
|   AuthRequest *request = user_data; | ||||
|   guint id; | ||||
|  | ||||
|   /* post-pone to idle to handle GCancellable deadlock in | ||||
|    * | ||||
|    *  https://bugzilla.gnome.org/show_bug.cgi?id=642968 | ||||
|    */ | ||||
|   g_idle_add (handle_cancelled_in_idle, request); | ||||
|   id = g_idle_add (handle_cancelled_in_idle, request); | ||||
|   g_source_set_name_by_id (id, "[gnome-shell] handle_cancelled_in_idle"); | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
| @@ -78,7 +78,10 @@ shell_recorder_src_update_memory_used (ShellRecorderSrc *src, | ||||
|   g_mutex_lock (src->mutex); | ||||
|   src->memory_used += delta; | ||||
|   if (src->memory_used_update_idle == 0) | ||||
|     src->memory_used_update_idle = g_idle_add (shell_recorder_src_memory_used_update_idle, src); | ||||
|     { | ||||
|       src->memory_used_update_idle = g_idle_add (shell_recorder_src_memory_used_update_idle, src); | ||||
|       g_source_set_name_by_id (src->memory_used_update_idle, "[gnome-shell] shell_recorder_src_memory_used_update_idle"); | ||||
|     } | ||||
|   g_mutex_unlock (src->mutex); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -311,6 +311,7 @@ recorder_add_redraw_timeout (ShellRecorder *recorder) | ||||
|       recorder->redraw_timeout = g_timeout_add (MAXIMUM_PAUSE_TIME, | ||||
|                                                 recorder_redraw_timeout, | ||||
|                                                 recorder); | ||||
|       g_source_set_name_by_id (recorder->redraw_timeout, "[gnome-shell] recorder_redraw_timeout"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -533,8 +534,11 @@ recorder_queue_redraw (ShellRecorder *recorder) | ||||
|    * we need to queue a "low priority redraw" after timeline updates | ||||
|    */ | ||||
|   if (recorder->state == RECORDER_STATE_RECORDING && recorder->redraw_idle == 0) | ||||
|     recorder->redraw_idle = g_idle_add_full (CLUTTER_PRIORITY_REDRAW + 1, | ||||
|                                              recorder_idle_redraw, recorder, NULL); | ||||
|     { | ||||
|       recorder->redraw_idle = g_idle_add_full (CLUTTER_PRIORITY_REDRAW + 1, | ||||
|                                                recorder_idle_redraw, recorder, NULL); | ||||
|       g_source_set_name_by_id (recorder->redraw_idle, "[gnome-shell] recorder_idle_redraw"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -720,9 +724,12 @@ static void | ||||
| recorder_add_update_pointer_timeout (ShellRecorder *recorder) | ||||
| { | ||||
|   if (!recorder->update_pointer_timeout) | ||||
|     recorder->update_pointer_timeout = g_timeout_add (UPDATE_POINTER_TIME, | ||||
|                                                       recorder_update_pointer_timeout, | ||||
|                                                       recorder); | ||||
|     { | ||||
|       recorder->update_pointer_timeout = g_timeout_add (UPDATE_POINTER_TIME, | ||||
|                                                         recorder_update_pointer_timeout, | ||||
|                                                         recorder); | ||||
|       g_source_set_name_by_id (recorder->update_pointer_timeout, "[gnome-shell] recorder_update_pointer_timeout"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -1336,9 +1343,12 @@ recorder_pipeline_on_memory_used_changed (ShellRecorderSrc *src, | ||||
|     return; | ||||
|  | ||||
|   if (recorder->update_memory_used_timeout == 0) | ||||
|     recorder->update_memory_used_timeout = g_timeout_add (UPDATE_MEMORY_USED_DELAY, | ||||
|                                                           recorder_update_memory_used_timeout, | ||||
|                                                           recorder); | ||||
|     { | ||||
|       recorder->update_memory_used_timeout = g_timeout_add (UPDATE_MEMORY_USED_DELAY, | ||||
|                                                             recorder_update_memory_used_timeout, | ||||
|                                                             recorder); | ||||
|       g_source_set_name_by_id (recorder->update_memory_used_timeout, "[gnome-shell] recorder_update_memory_used_timeout"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -1619,7 +1629,7 @@ shell_recorder_set_draw_cursor (ShellRecorder *recorder, | ||||
| /** | ||||
|  * shell_recorder_set_pipeline: | ||||
|  * @recorder: the #ShellRecorder | ||||
|  * @pipeline: (allow-none): the GStreamer pipeline used to encode recordings | ||||
|  * @pipeline: (nullable): the GStreamer pipeline used to encode recordings | ||||
|  *            or %NULL for the default value. | ||||
|  * | ||||
|  * Sets the GStreamer pipeline used to encode recordings. | ||||
| @@ -1671,7 +1681,7 @@ shell_recorder_set_area (ShellRecorder *recorder, | ||||
| /** | ||||
|  * shell_recorder_record: | ||||
|  * @recorder: the #ShellRecorder | ||||
|  * @filename_used: (out) (allow-none): actual filename used for recording | ||||
|  * @filename_used: (out) (optional): actual filename used for recording | ||||
|  * | ||||
|  * Starts recording, Starting the recording may fail if the output file | ||||
|  * cannot be opened, or if the output stream cannot be created | ||||
|   | ||||
| @@ -530,26 +530,15 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot, | ||||
|   window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window)); | ||||
|   clutter_actor_get_position (window_actor, &actor_x, &actor_y); | ||||
|  | ||||
|   if (include_frame || !meta_window_get_frame (window)) | ||||
|     { | ||||
|       meta_window_get_outer_rect (window, &rect); | ||||
|   meta_window_get_frame_rect (window, &rect); | ||||
|  | ||||
|       screenshot_data->screenshot_area.x = rect.x; | ||||
|       screenshot_data->screenshot_area.y = rect.y; | ||||
|   if (!include_frame) | ||||
|     meta_window_frame_rect_to_client_rect (window, &rect, &rect); | ||||
|  | ||||
|       clip.x = rect.x - (gint) actor_x; | ||||
|       clip.y = rect.y - (gint) actor_y; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       rect = *meta_window_get_rect (window); | ||||
|  | ||||
|       screenshot_data->screenshot_area.x = (gint) actor_x + rect.x; | ||||
|       screenshot_data->screenshot_area.y = (gint) actor_y + rect.y; | ||||
|  | ||||
|       clip.x = rect.x; | ||||
|       clip.y = rect.y; | ||||
|     } | ||||
|   screenshot_data->screenshot_area.x = rect.x; | ||||
|   screenshot_data->screenshot_area.y = rect.y; | ||||
|   clip.x = rect.x - (gint) actor_x; | ||||
|   clip.y = rect.y - (gint) actor_y; | ||||
|  | ||||
|   clip.width = screenshot_data->screenshot_area.width = rect.width; | ||||
|   clip.height = screenshot_data->screenshot_area.height = rect.height; | ||||
|   | ||||
| @@ -21,10 +21,6 @@ struct _ShellTpClientPrivate | ||||
|   ShellTpClientHandleChannelsImpl handle_channels_impl; | ||||
|   gpointer user_data_handle_channels; | ||||
|   GDestroyNotify destroy_handle_channels; | ||||
|  | ||||
|   ShellTpClientContactListChangedImpl contact_list_changed_impl; | ||||
|   gpointer user_data_contact_list_changed; | ||||
|   GDestroyNotify destroy_contact_list_changed; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -35,7 +31,7 @@ struct _ShellTpClientPrivate | ||||
|  * if possible | ||||
|  * @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel, | ||||
|  *  all having %TP_CHANNEL_FEATURE_CORE prepared if possible | ||||
|  * @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL; | ||||
|  * @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL; | ||||
|  *  the dispatch_operation is not guaranteed to be prepared | ||||
|  * @requests: (element-type TelepathyGLib.ChannelRequest): a #GList of | ||||
|  *  #TpChannelRequest, all having their object-path defined but are not | ||||
| @@ -54,7 +50,7 @@ struct _ShellTpClientPrivate | ||||
|  * if possible | ||||
|  * @channels: (element-type TelepathyGLib.Channel): a #GList of #TpChannel, | ||||
|  *  all having %TP_CHANNEL_FEATURE_CORE prepared if possible | ||||
|  * @dispatch_operation: (allow-none): a #TpChannelDispatchOperation or %NULL; | ||||
|  * @dispatch_operation: (nullable): a #TpChannelDispatchOperation or %NULL; | ||||
|  *  the dispatch_operation is not guaranteed to be prepared | ||||
|  * @context: a #TpAddDispatchOperationContext representing the context of this | ||||
|  *  D-Bus call | ||||
| @@ -83,16 +79,6 @@ struct _ShellTpClientPrivate | ||||
|  * Signature of the implementation of the HandleChannels method. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * ShellTpClientContactListChangedImpl: | ||||
|  * @connection: a #TpConnection having %TP_CONNECTION_FEATURE_CORE prepared | ||||
|  * if possible | ||||
|  * @added: (element-type TelepathyGLib.Contact): a #GPtrArray of added #TpContact | ||||
|  * @removed: (element-type TelepathyGLib.Contact): a #GPtrArray of removed #TpContact | ||||
|  * | ||||
|  * Signature of the implementation of the ContactListChanged method. | ||||
|  */ | ||||
|  | ||||
| static void | ||||
| shell_tp_client_init (ShellTpClient *self) | ||||
| { | ||||
| @@ -226,13 +212,6 @@ shell_tp_client_dispose (GObject *object) | ||||
|       self->priv->user_data_handle_channels = NULL; | ||||
|     } | ||||
|  | ||||
|   if (self->priv->destroy_contact_list_changed != NULL) | ||||
|     { | ||||
|       self->priv->destroy_contact_list_changed (self->priv->user_data_contact_list_changed); | ||||
|       self->priv->destroy_contact_list_changed = NULL; | ||||
|       self->priv->user_data_contact_list_changed = NULL; | ||||
|     } | ||||
|  | ||||
|   if (dispose != NULL) | ||||
|     dispose (object); | ||||
| } | ||||
| @@ -290,40 +269,3 @@ shell_tp_client_set_handle_channels_func (ShellTpClient *self, | ||||
|   self->priv->user_data_handle_channels = user_data; | ||||
|   self->priv->destroy_handle_channels = destroy; | ||||
| } | ||||
|  | ||||
| void | ||||
| shell_tp_client_set_contact_list_changed_func (ShellTpClient *self, | ||||
|     ShellTpClientContactListChangedImpl contact_list_changed_impl, | ||||
|     gpointer user_data, | ||||
|     GDestroyNotify destroy) | ||||
| { | ||||
|   g_assert (self->priv->contact_list_changed_impl == NULL); | ||||
|  | ||||
|   self->priv->contact_list_changed_impl = contact_list_changed_impl; | ||||
|   self->priv->user_data_handle_channels = user_data; | ||||
|   self->priv->destroy_handle_channels = destroy; | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_contact_list_changed (TpConnection *conn, | ||||
|                          GPtrArray *added, | ||||
|                          GPtrArray *removed, | ||||
|                          gpointer user_data) | ||||
| { | ||||
|   ShellTpClient *self = (ShellTpClient *) user_data; | ||||
|  | ||||
|   g_assert (self->priv->contact_list_changed_impl != NULL); | ||||
|  | ||||
|   self->priv->contact_list_changed_impl (conn, | ||||
|       added, removed, | ||||
|       self->priv->user_data_contact_list_changed); | ||||
| } | ||||
|  | ||||
| void | ||||
| shell_tp_client_grab_contact_list_changed (ShellTpClient *self, | ||||
|                                            TpConnection *conn) | ||||
| { | ||||
|   g_signal_connect (conn, "contact-list-changed", | ||||
|                     G_CALLBACK (on_contact_list_changed), | ||||
|                     self); | ||||
| } | ||||
|   | ||||
| @@ -86,19 +86,5 @@ void shell_tp_client_set_handle_channels_func (ShellTpClient *self, | ||||
|     gpointer user_data, | ||||
|     GDestroyNotify destroy); | ||||
|  | ||||
| typedef void (*ShellTpClientContactListChangedImpl) ( | ||||
|     TpConnection *connection, | ||||
|     GPtrArray *added, | ||||
|     GPtrArray *removed, | ||||
|     gpointer user_data); | ||||
|  | ||||
| void shell_tp_client_set_contact_list_changed_func (ShellTpClient *self, | ||||
|     ShellTpClientContactListChangedImpl contact_list_changed_impl, | ||||
|     gpointer user_data, | ||||
|     GDestroyNotify destroy); | ||||
|  | ||||
| void shell_tp_client_grab_contact_list_changed (ShellTpClient *self, | ||||
|     TpConnection *conn); | ||||
|  | ||||
| G_END_DECLS | ||||
| #endif /* __SHELL_TP_CLIENT_H__ */ | ||||
|   | ||||
| @@ -40,6 +40,15 @@ void _shell_wm_show_tile_preview     (ShellWM             *wm, | ||||
|                                       MetaRectangle       *tile_rect, | ||||
|                                       int                  tile_monitor); | ||||
| void _shell_wm_hide_tile_preview     (ShellWM             *wm); | ||||
| void _shell_wm_show_window_menu      (ShellWM             *wm, | ||||
|                                       MetaWindow          *window, | ||||
|                                       MetaWindowMenuType   menu, | ||||
|                                       int                  x, | ||||
|                                       int                  y); | ||||
| void _shell_wm_show_window_menu_for_rect (ShellWM             *wm, | ||||
|                                           MetaWindow          *window, | ||||
|                                           MetaWindowMenuType   menu, | ||||
|                                           MetaRectangle       *rect); | ||||
|  | ||||
| gboolean _shell_wm_filter_keybinding (ShellWM             *wm, | ||||
|                                       MetaKeyBinding      *binding); | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user