Compare commits
147 Commits
wip/jimmac
...
wip/nielsd
Author | SHA1 | Date | |
---|---|---|---|
![]() |
952672ca62 | ||
![]() |
4e84b46c9b | ||
![]() |
b4797956c7 | ||
![]() |
c1c45f95af | ||
![]() |
ac09e0110a | ||
![]() |
0e37cd2ec9 | ||
![]() |
76dc77f617 | ||
![]() |
cb4c0d32c0 | ||
![]() |
3d4ba028c4 | ||
![]() |
5481c1899f | ||
![]() |
2fd120162f | ||
![]() |
523ba5a719 | ||
![]() |
07d25cd69d | ||
![]() |
520cea9394 | ||
![]() |
58c4212cfa | ||
![]() |
7059e31f6a | ||
![]() |
a9234f7631 | ||
![]() |
1e5a8b0cd7 | ||
![]() |
5ef343f245 | ||
![]() |
22e33b4c47 | ||
![]() |
5ace4682bf | ||
![]() |
14d9839ed3 | ||
![]() |
3b6fae582b | ||
![]() |
3cbdf4f9a5 | ||
![]() |
d8825e0d12 | ||
![]() |
3c5fea59df | ||
![]() |
443c8347ea | ||
![]() |
ee3f52c097 | ||
![]() |
4b01bb6f99 | ||
![]() |
27ef8154dc | ||
![]() |
0a7e717e0e | ||
![]() |
2d2824b947 | ||
![]() |
40c2a403ac | ||
![]() |
238b87d386 | ||
![]() |
8c01d341c7 | ||
![]() |
866629b3d3 | ||
![]() |
2b3ab3ecec | ||
![]() |
759120b95f | ||
![]() |
de0e21612c | ||
![]() |
83e83444db | ||
![]() |
5060aee7b2 | ||
![]() |
12bace2721 | ||
![]() |
2c45b5416e | ||
![]() |
96c2473317 | ||
![]() |
6359d6ef30 | ||
![]() |
2f6323afc2 | ||
![]() |
d25bcbc3a7 | ||
![]() |
dd5d7d3b70 | ||
![]() |
771b1a0788 | ||
![]() |
5a9d094f3e | ||
![]() |
9ca8433170 | ||
![]() |
0ada312748 | ||
![]() |
88697add1b | ||
![]() |
4730b7a094 | ||
![]() |
aa3e64aec3 | ||
![]() |
af26e2b212 | ||
![]() |
8167f20972 | ||
![]() |
bd4aac8f49 | ||
![]() |
785dd5c5f7 | ||
![]() |
71e469a59c | ||
![]() |
6d4b9d29b8 | ||
![]() |
33f5bb39cd | ||
![]() |
a1c3900630 | ||
![]() |
cdaf164c01 | ||
![]() |
2bd80579ed | ||
![]() |
54039c3552 | ||
![]() |
b197a1affb | ||
![]() |
51655be6a3 | ||
![]() |
9697c209c0 | ||
![]() |
6ecb0a4546 | ||
![]() |
30861d4800 | ||
![]() |
a23391ea28 | ||
![]() |
58e0b80cac | ||
![]() |
41dd744b74 | ||
![]() |
bdf66d7b62 | ||
![]() |
4258ae3ec2 | ||
![]() |
9b379c49ba | ||
![]() |
7e70dd8453 | ||
![]() |
2e209a82f9 | ||
![]() |
ab0ecc469f | ||
![]() |
7d75ddf635 | ||
![]() |
271e43a1ed | ||
![]() |
2702a82896 | ||
![]() |
8ad33d8752 | ||
![]() |
d84bbb8770 | ||
![]() |
c0c2edf2e1 | ||
![]() |
de0c3251dd | ||
![]() |
0afd600ea4 | ||
![]() |
598407b14a | ||
![]() |
d9bfa16f05 | ||
![]() |
03117d65b2 | ||
![]() |
5520bb3890 | ||
![]() |
4e6b2eb72a | ||
![]() |
2e5295b3a9 | ||
![]() |
3121c9aa29 | ||
![]() |
1ebbd7c768 | ||
![]() |
8572bb97c7 | ||
![]() |
d5ebd8c816 | ||
![]() |
ed999ce926 | ||
![]() |
50b7739076 | ||
![]() |
94995e9c1e | ||
![]() |
fb04dafb0b | ||
![]() |
d57234bec9 | ||
![]() |
38da54fb02 | ||
![]() |
bbd3275dad | ||
![]() |
3a3f9aa008 | ||
![]() |
3c54e863e6 | ||
![]() |
a63ba61194 | ||
![]() |
ab9710ee7b | ||
![]() |
43cef45229 | ||
![]() |
8db4f3c67f | ||
![]() |
594a070029 | ||
![]() |
c2e04e3cfa | ||
![]() |
293f50e8e5 | ||
![]() |
df7fea3407 | ||
![]() |
563412698a | ||
![]() |
2b30146c6c | ||
![]() |
0f531d8c44 | ||
![]() |
218c87994b | ||
![]() |
f74c07b9ac | ||
![]() |
59edea4bb4 | ||
![]() |
4d4d5a0b16 | ||
![]() |
03c4930883 | ||
![]() |
9593e20425 | ||
![]() |
2b1d6e607f | ||
![]() |
1dff32e48a | ||
![]() |
1e3a174de9 | ||
![]() |
7bb84dae80 | ||
![]() |
44fcb9e9af | ||
![]() |
2d30e310bc | ||
![]() |
be2d630348 | ||
![]() |
bea6045aae | ||
![]() |
ad491e7922 | ||
![]() |
fedb8e706a | ||
![]() |
1be933bc49 | ||
![]() |
526bb72f3d | ||
![]() |
49c95cff6c | ||
![]() |
56a361650c | ||
![]() |
d4763b157d | ||
![]() |
d2dc072ba9 | ||
![]() |
ffaca00594 | ||
![]() |
9090b7dc3d | ||
![]() |
a540fe4130 | ||
![]() |
5be61bbb68 | ||
![]() |
8e51fee5c1 | ||
![]() |
9d6fcfdc85 | ||
![]() |
5f5a3b78a5 |
@@ -15,8 +15,10 @@ variables:
|
|||||||
- merge_requests
|
- merge_requests
|
||||||
|
|
||||||
check_commit_log:
|
check_commit_log:
|
||||||
image: registry.gitlab.gnome.org/gnome/mutter/master:v1
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
|
||||||
stage: review
|
stage: review
|
||||||
|
variables:
|
||||||
|
GIT_DEPTH: "100"
|
||||||
script:
|
script:
|
||||||
- ./.gitlab-ci/check-commit-log.sh
|
- ./.gitlab-ci/check-commit-log.sh
|
||||||
only:
|
only:
|
||||||
@@ -38,7 +40,7 @@ js_check:
|
|||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
build:
|
build:
|
||||||
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
|
||||||
stage: build
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- .gitlab-ci/checkout-mutter.sh
|
- .gitlab-ci/checkout-mutter.sh
|
||||||
@@ -56,7 +58,7 @@ build:
|
|||||||
- build
|
- build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
|
||||||
stage: test
|
stage: test
|
||||||
before_script:
|
before_script:
|
||||||
- ninja -C mutter/build install
|
- ninja -C mutter/build install
|
||||||
@@ -70,7 +72,7 @@ test:
|
|||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
test-pot:
|
test-pot:
|
||||||
image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v2
|
||||||
stage: test
|
stage: test
|
||||||
before_script:
|
before_script:
|
||||||
- ninja -C mutter/build install
|
- ninja -C mutter/build install
|
||||||
|
@@ -1,19 +0,0 @@
|
|||||||
FROM registry.gitlab.gnome.org/gnome/mutter/master:v1
|
|
||||||
|
|
||||||
RUN dnf -y update && dnf -y upgrade && \
|
|
||||||
dnf install -y 'dnf-command(copr)' && \
|
|
||||||
dnf copr enable -y fmuellner/gnome-shell-ci && \
|
|
||||||
dnf builddep -y gnome-shell --setopt=install_weak_deps=False && \
|
|
||||||
|
|
||||||
# bt only exports HAVE_BLUETOOTH to js, rest are outdated build-requires
|
|
||||||
dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel \
|
|
||||||
upower-devel python3-devel && \
|
|
||||||
|
|
||||||
# We'll build mutter ourselves
|
|
||||||
dnf remove -y --noautoremove mutter mutter-devel && \
|
|
||||||
|
|
||||||
# Needed for tests
|
|
||||||
dnf install -y '*/xvfb-run' gdm-lib accountsservice-libs && \
|
|
||||||
|
|
||||||
dnf clean all && \
|
|
||||||
rm -rf /var/cache/dnf
|
|
@@ -17,15 +17,19 @@ if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
|||||||
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||||
|
|
||||||
echo Looking for $merge_request_branch on remote ...
|
echo Looking for $merge_request_branch on remote ...
|
||||||
if git fetch $merge_request_remote $merge_request_branch >/dev/null 2>&1; then
|
if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
|
||||||
mutter_target=FETCH_HEAD
|
mutter_target=FETCH_HEAD
|
||||||
|
else
|
||||||
|
mutter_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||||
|
echo Using $mutter_target instead
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$mutter_target" ]; then
|
if [ -z "$mutter_target" ]; then
|
||||||
mutter_target=$(git branch -r -l $shell_branch)
|
mutter_target=$(git branch -r -l origin/$shell_branch)
|
||||||
|
mutter_target=${mutter_target:-$(git branch -r -l ${shell_branch#remotes/})}
|
||||||
mutter_target=${mutter_target:-origin/master}
|
mutter_target=${mutter_target:-origin/master}
|
||||||
echo Using $mutter_target instead
|
echo Using $mutter_target instead
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git checkout $mutter_target
|
git checkout -q $mutter_target
|
||||||
|
77
NEWS
@@ -1,3 +1,80 @@
|
|||||||
|
3.33.2
|
||||||
|
======
|
||||||
|
* Fix keeping actors visible in scrollviews [Marco; #1061]
|
||||||
|
* Move some chrome above popup windows [Jonas D.; !358]
|
||||||
|
* Include 'sandboxed-app-id' in winodw introspection info [Florian; #1289]
|
||||||
|
* Port to libecal-2.0 [Milan; !501]
|
||||||
|
* Support TCRYPT in mount password dialog [segfault; !126]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499,
|
||||||
|
!510, !515, !546, !549]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Cosimo Cecchi, Milan Crha, Jonas Dreßler, Florian Müllner, segfault,
|
||||||
|
Veerasamy Sevagen, Marco Trevisan (Treviño)
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Daniel Mustieles [es]
|
||||||
|
|
||||||
|
3.33.1
|
||||||
|
======
|
||||||
|
* Refine the app menu [Florian; #968]
|
||||||
|
* Refine window preview style [Feichtmeier; !461]
|
||||||
|
* Only emit ::style-changed on actual changes [Carlos; #1153]
|
||||||
|
* Disable emoji on-screen keyboard support on X11 [Florian; #1172]
|
||||||
|
* Fix tablet button mapping overlay [Carlos; #1220]
|
||||||
|
* Don't crash for world clock locations with no timezone [Florian; #1062]
|
||||||
|
* Don't leak old on-screen keyboard layout groups [Carlos; mutter#556]
|
||||||
|
* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
|
||||||
|
* Fix glitch of fullscreen window in workspace switch animation [Jonas D.; !322]
|
||||||
|
* Fix distortion of some image contents [Florian; !525]
|
||||||
|
* Allow dragging unfocused tiled/maximized windows from top bar [Dylan; #679290]
|
||||||
|
* Handle network interface name changes [Fabrice; !534]
|
||||||
|
* Avoid unnecessary style changes when computing :first/:last-child
|
||||||
|
[Florian; !529]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Marco, Robert, Georges, Carlos, Simon,
|
||||||
|
Jonas D.; !487, !441, !502, !503, !504, !506, #822, !551, !512, !509, !511,
|
||||||
|
#1054, !524, #1065, !331, !540]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Fabrice Bellet, Jonas Dreßler, Feichtmeier, Carlos Garnacho, Robert Mader,
|
||||||
|
Dylan McCall, Simon McVittie, Florian Müllner, Georges Basile Stavracas Neto,
|
||||||
|
Marco Trevisan (Treviño)
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Daniel Mustieles [es], Kukuh Syafaat [id], Fabio Tomat [fur],
|
||||||
|
Carmen Bianca BAKKER [eo], Dingzhong Chen [zh_CN], Tim Sabsch [de]
|
||||||
|
|
||||||
|
3.32.1
|
||||||
|
======
|
||||||
|
* Fix avatar scaling on login screen [Florian; #1024]
|
||||||
|
* Fix distortion of desktop zoom [Florian; #646]
|
||||||
|
* Fix mouse cursor visibility when using desktop zoom [Florian, Marco; #1020]
|
||||||
|
* Fix screen dimming after wake-up on lock screen [Xiaoguang; #900]
|
||||||
|
* Fix Alt+Esc switcher [Florian; #1064]
|
||||||
|
* Respect struts for popover placement [Andrea; #1102]
|
||||||
|
* Fix app icons updates after theme changes [Florian; #1117]
|
||||||
|
* Fix desktop zoom after resolution changes [Marco; #1120]
|
||||||
|
* Implement stick-to-finger workspace switch overview gestures [Florian; #516]
|
||||||
|
* Make World Clocks offsets relative to local time [Florian; #1157]
|
||||||
|
* Fix top app icon disappearing from dash [Florian; #1053]
|
||||||
|
* Update switch style to match new Adwaita [Jakub; !496]
|
||||||
|
* Ensure CSS units are pixel-aligned when scaling is used [Carlos; #91]
|
||||||
|
* Misc. bug fixes and cleanups [Florian, Jakub, Robert, Alex, Carlos, Phil,
|
||||||
|
Marco, Benjamin, AsciiWolf, Ray, verdre; !444, #1016, #1018, !449, #1036,
|
||||||
|
!455, #1094, !440, #1023, #624, #1017, !476, !473, !480, #1130, !485, !481,
|
||||||
|
!490, !489, #1151, !435, #1160, !482, #1150, #1166, !384]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
AsciiWolf, Andrea Azzarone, Benjamin Berg, Carlos Garnacho, Victor Ibragimov,
|
||||||
|
Robert Mader, Alex Monday, Florian Müllner, Jakub Steiner, Ray Strode,
|
||||||
|
Marco Trevisan (Treviño), verdre, Xiaoguang Wang, Phil Wyett
|
||||||
|
|
||||||
|
Translators:
|
||||||
|
Victor Ibragimov [tg, af, et, ja], Bruce Cowan [en_GB], Piotr Drąg [tg],
|
||||||
|
Charles Monzat [fr], Khaled Hosny [ar], Goran Vidović [hr],
|
||||||
|
Cheng-Chia Tseng [zh_TW], Carmen Bianca BAKKER [eo], Daniel Mustieles [es],
|
||||||
|
Dušan Kazik [sk]
|
||||||
|
|
||||||
3.32.0
|
3.32.0
|
||||||
======
|
======
|
||||||
* Fix sizing issues in on-screen-keyboard emoji panel [Carlos; !439]
|
* Fix sizing issues in on-screen-keyboard emoji panel [Carlos; !439]
|
||||||
|
@@ -20,11 +20,13 @@
|
|||||||
<file>no-notifications.svg</file>
|
<file>no-notifications.svg</file>
|
||||||
<file>noise-texture.png</file>
|
<file>noise-texture.png</file>
|
||||||
<file>pad-osd.css</file>
|
<file>pad-osd.css</file>
|
||||||
|
<file alias="icons/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
|
||||||
|
<file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
|
||||||
|
<file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
|
||||||
|
<file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
|
||||||
<file>process-working.svg</file>
|
<file>process-working.svg</file>
|
||||||
<file>toggle-off-us.svg</file>
|
|
||||||
<file>toggle-off-intl.svg</file>
|
<file>toggle-off-intl.svg</file>
|
||||||
<file>toggle-off-hc.svg</file>
|
<file>toggle-off-hc.svg</file>
|
||||||
<file>toggle-on-us.svg</file>
|
|
||||||
<file>toggle-on-intl.svg</file>
|
<file>toggle-on-intl.svg</file>
|
||||||
<file>toggle-on-hc.svg</file>
|
<file>toggle-on-hc.svg</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
@@ -157,18 +157,13 @@ StScrollBar {
|
|||||||
|
|
||||||
/* Switches */
|
/* Switches */
|
||||||
.toggle-switch {
|
.toggle-switch {
|
||||||
width: 65px;
|
width: 46px;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/toggle-off-intl.svg");
|
||||||
|
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-intl.svg"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $v in us, intl {
|
|
||||||
.toggle-switch-#{$v} {
|
|
||||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-#{$v}.svg");
|
|
||||||
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-#{$v}.svg"); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* links */
|
/* links */
|
||||||
.shell-link {
|
.shell-link {
|
||||||
color: $link_color;
|
color: $link_color;
|
||||||
@@ -387,7 +382,6 @@ StScrollBar {
|
|||||||
|
|
||||||
.prompt-dialog-password-box {
|
.prompt-dialog-password-box {
|
||||||
spacing: 1em;
|
spacing: 1em;
|
||||||
padding-bottom: 1em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.prompt-dialog-error-label {
|
.prompt-dialog-error-label {
|
||||||
@@ -410,6 +404,23 @@ StScrollBar {
|
|||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-pim-box {
|
||||||
|
spacing: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-grid {
|
||||||
|
spacing-rows: 15px;
|
||||||
|
spacing-columns: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-keyfiles-box {
|
||||||
|
spacing: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prompt-dialog-button.button {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Polkit Dialog */
|
/* Polkit Dialog */
|
||||||
|
|
||||||
@@ -1148,6 +1159,15 @@ StScrollBar {
|
|||||||
border: 1px solid $selected_bg_color;
|
border: 1px solid $selected_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pointer location
|
||||||
|
.ripple-pointer-location {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 25px 25px 25px 25px; // radius the size of the box give us the curve
|
||||||
|
background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
|
||||||
|
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
// not really top bar only
|
// not really top bar only
|
||||||
.popup-menu-arrow { icon-size: 1.09em; }
|
.popup-menu-arrow { icon-size: 1.09em; }
|
||||||
.popup-menu-icon { icon-size: 1.09em; }
|
.popup-menu-icon { icon-size: 1.09em; }
|
||||||
@@ -1155,28 +1175,35 @@ StScrollBar {
|
|||||||
//close buttons
|
//close buttons
|
||||||
|
|
||||||
.window-close {
|
.window-close {
|
||||||
background-color: white;
|
background-color: $selected_bg_color;
|
||||||
|
color: white;
|
||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
border: 4px solid $selected_bg_color;
|
border: 2px solid $selected_bg_color;
|
||||||
box-shadow: inset 0 -4px 0 0 transparentize($selected_bg_color, 0.5);
|
|
||||||
color: $selected_bg_color;
|
|
||||||
height: 24px;
|
height: 24px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
-shell-close-overlap: 14px;
|
-shell-close-overlap: 11px;
|
||||||
|
box-shadow: -1px 1px 5px 0px transparentize(black, 0.5);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: $selected_bg_color;
|
background-color: lighten($selected_bg_color, 5%);
|
||||||
border-color: white;
|
border-color: lighten($selected_bg_color, 5%);
|
||||||
color: white;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
background-color: mix(white, $selected_bg_color, 75%);
|
background-color: darken($selected_bg_color, 5%);
|
||||||
border-color: $selected_bg_color;
|
border-color: darken($selected_bg_color, 5%);
|
||||||
color: $selected_bg_color;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pointer accessibility notifications
|
||||||
|
.pie-timer {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
-pie-border-width: 3px;
|
||||||
|
-pie-border-color: $selected_bg_color;
|
||||||
|
-pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
|
||||||
|
}
|
||||||
|
|
||||||
/* NETWORK DIALOGS */
|
/* NETWORK DIALOGS */
|
||||||
|
|
||||||
.nm-dialog {
|
.nm-dialog {
|
||||||
@@ -1238,13 +1265,14 @@ StScrollBar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.window-clone-border {
|
.window-clone-border {
|
||||||
border: 4px solid $selected_bg_color;
|
$_bg: transparentize(white, 0.65);
|
||||||
border-radius: 4px;
|
border: 5px solid $_bg;
|
||||||
|
border-radius: 6px;
|
||||||
// For window decorations with round corners we can't match
|
// For window decorations with round corners we can't match
|
||||||
// the exact shape when the window is scaled. So apply a shadow
|
// the exact shape when the window is scaled. So apply a shadow
|
||||||
// to fix that case
|
// to fix that case
|
||||||
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
|
box-shadow: inset 0 0 0 1px $_bg;
|
||||||
}
|
}
|
||||||
.window-caption {
|
.window-caption {
|
||||||
spacing: 25px;
|
spacing: 25px;
|
||||||
color: $selected_fg_color;
|
color: $selected_fg_color;
|
||||||
|
28
data/theme/pointer-double-click-symbolic.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="20"
|
||||||
|
height="20"
|
||||||
|
id="svg2">
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="id1"
|
||||||
|
transform="translate(-19,-0.75)">
|
||||||
|
<path
|
||||||
|
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||||
|
d="m 19.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.38151 2.829427,-2.763021 4.24414,-4.144531 0.5882,1.18866 1.158389,2.386561 1.758464,3.569127 1.108631,1.640259 4.157538,0.465128 3.89799,-1.495859 0.01057,-0.470226 -0.405577,-0.908445 -0.434651,-1.313638 0.259401,-0.25321 0.518802,-0.50642 0.778203,-0.75963 0.5882,1.18866 1.158389,2.386561 1.758464,3.569127 1.108631,1.640259 4.157538,0.465128 3.89799,-1.495859 -0.192325,-0.904303 -0.717854,-1.698026 -1.068629,-2.548967 -0.238908,-0.512658 -0.477817,-1.025315 -0.716725,-1.537973 1.755859,0 3.511719,0 5.267578,0 C 34.777352,9.738932 30.31641,5.0970051 25.855469,0.45507812 c 0,2.08138018 0,4.16276048 0,6.24414068 -2,-2.0813802 -4,-4.1627605 -6,-6.24414068 z m 1.5,3.72656248 c 2,2.0813801 4,4.1627603 6,6.2441404 0,-2.0813801 0,-4.1627603 0,-6.2441404 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.366537,0 -2.733073,0 -4.09961,0 0.883468,1.903435 1.781983,3.800273 2.656081,5.707817 0.0065,0.622781 -1.227555,0.980575 -1.325116,0.207118 -0.80433,-1.640251 -1.608661,-3.280501 -2.412991,-4.920752 -1.020182,0.995443 -2.040365,1.990885 -3.060547,2.986328 0.263642,0.608048 0.596803,1.192457 0.814693,1.816134 -0.182662,0.601037 -1.26833,0.8373 -1.365856,0.06795 -0.796094,-1.623456 -1.592189,-3.246912 -2.388284,-4.870368 -1.059245,1.033854 -2.118489,2.067708 -3.177734,3.101562 -4e-6,-4.265002 -7e-6,-8.5300036 -1.1e-5,-12.7950054 z"
|
||||||
|
id="path5565" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="id2"
|
||||||
|
transform="translate(-25,-0.75)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
20
data/theme/pointer-drag-symbolic.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="20"
|
||||||
|
height="20"
|
||||||
|
id="svg2">
|
||||||
|
<g
|
||||||
|
id="g835">
|
||||||
|
<path
|
||||||
|
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||||
|
d="M 10.705078 1.671875 C 9.8685536 1.7465699 8.886927 1.5353073 8.2578125 2.2480469 C 8.0785627 2.7511513 7.8667422 2.9777446 7.3125 2.8652344 C 6.5186841 2.8141575 5.6105879 2.9190179 5.125 3.6386719 C 4.5700923 4.4696324 4.8113194 5.4949043 4.7578125 6.4316406 L 4.7578125 7.9335938 C 4.2480917 7.6156216 3.6258927 7.8015358 3.0585938 7.7519531 C 2.6157606 7.7312277 2.1774807 7.7771069 1.7402344 7.84375 C 1.7971654 10.529678 1.813967 13.217089 1.8613281 15.902344 C 1.9550191 17.204635 3.0933719 18.307155 4.40625 18.326172 C 5.0391993 18.341272 5.8885801 18.332951 6.6308594 18.337891 C 9.8526764 18.325821 13.076973 18.38774 16.296875 18.28125 C 17.459088 18.161027 18.510143 17.092798 18.367188 15.884766 L 18.367188 6.4042969 C 17.660379 5.4636119 16.551912 4.623434 15.308594 4.8339844 C 15.009045 4.3804158 14.822476 3.3608651 14.082031 3.0351562 C 13.727176 2.744118 13.242443 2.9253873 12.822266 2.8730469 C 12.524824 2.8003648 11.966366 3.0655864 11.953125 2.6210938 C 11.795774 2.0995736 11.23789 1.7125276 10.705078 1.671875 z M 10.599609 3.1757812 C 10.764131 3.4472414 10.782382 3.9294982 10.818359 4.3007812 C 10.824915 4.3076775 10.838155 4.3066925 10.845703 4.3125 C 10.836598 4.3123268 10.827465 4.3126732 10.818359 4.3125 L 11.3125 10.212891 L 11.976562 4.3710938 L 13.322266 4.375 C 13.858345 4.7645492 13.735252 5.5154752 13.876953 6.0976562 C 13.865826 6.1651282 13.88335 6.1937019 13.892578 6.234375 C 13.891928 6.2343667 13.891276 6.2343833 13.890625 6.234375 L 13.902344 6.3203125 L 14.384766 10.185547 L 15.048828 6.265625 C 15.622863 6.228498 16.206517 6.3041365 16.607422 6.7675781 C 17.017062 6.9844433 16.823063 7.4565491 16.867188 7.8261719 L 16.867188 16.167969 C 16.530129 17.131654 15.267211 16.71624 14.492188 16.828125 C 11.121671 16.841205 7.7500508 16.861953 4.3808594 16.814453 C 3.4051926 16.786173 3.2389196 15.744474 3.3398438 14.972656 C 3.3282027 13.065594 3.2950998 11.158732 3.2617188 9.2519531 C 3.5880829 9.2584131 3.9376766 9.2391948 4.25 9.2617188 C 4.7438842 10.17694 4.7346154 11.262903 4.7578125 12.277344 C 5.2504494 12.270544 5.8011939 12.317174 6.2578125 12.277344 C 6.2669593 9.7577406 6.2393741 7.2373172 6.2714844 4.71875 C 6.3763823 4.198849 7.0022289 4.409587 7.3828125 4.3652344 L 8.0585938 4.3652344 L 8.546875 10.212891 L 9.2167969 4.3359375 L 9.2128906 4.3359375 C 9.2438386 3.9531035 9.0622615 3.4401006 9.4609375 3.2167969 L 10.599609 3.1757812 z "
|
||||||
|
id="path5630" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
26
data/theme/pointer-primary-click-symbolic.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="20"
|
||||||
|
height="20"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1">
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="id1"
|
||||||
|
transform="translate(-22.25,-0.75)">
|
||||||
|
<path
|
||||||
|
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||||
|
d="m 25.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.380859 2.829427,-2.761719 4.24414,-4.142578 0.612408,1.215372 1.173049,2.460221 1.819709,3.656095 1.141947,1.476279 3.975266,0.389006 3.846009,-1.473608 -0.09413,-0.822519 -0.594755,-1.521423 -0.899969,-2.277599 -0.298869,-0.640171 -0.597739,-1.280342 -0.896608,-1.920513 1.75651,0 3.513021,0 5.269531,0 C 34.777344,9.738932 30.316406,5.0970051 25.855469,0.45507812 Z m 1.5,3.72656248 c 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.367188,0 -2.734375,0 -4.101563,0 0.885072,1.903196 1.781799,3.80152 2.659622,5.707744 0.0349,0.566084 -1.149057,0.988823 -1.282093,0.297971 -0.818567,-1.671162 -1.637133,-3.342323 -2.455699,-5.013485 -1.059896,1.034505 -2.119791,2.06901 -3.179687,3.103515 1.5e-5,-4.264988 3e-5,-8.5299756 4.5e-5,-12.7949634 z"
|
||||||
|
id="path5565" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
26
data/theme/pointer-secondary-click-symbolic.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="20"
|
||||||
|
height="20"
|
||||||
|
id="svg2">
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
style="display:inline;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1">
|
||||||
|
<g
|
||||||
|
transform="matrix(-1,0,0,1,42,-0.75)"
|
||||||
|
id="g5847"
|
||||||
|
style="stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1">
|
||||||
|
<path
|
||||||
|
style="color:#000000;shape-padding:0;clip-rule:nonzero;display:block;overflow:visible;visibility:visible;opacity:1;solid-color:#000000;solid-opacity:1;fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
|
||||||
|
d="m 25.855469,0.45507812 c 0,6.69466128 0,13.38932288 0,20.08398388 1.414713,-1.380859 2.829427,-2.761719 4.24414,-4.142578 0.612408,1.215372 1.173049,2.460221 1.819709,3.656095 1.141947,1.476279 3.975266,0.389006 3.846009,-1.473608 -0.09413,-0.822519 -0.594755,-1.521423 -0.899969,-2.277599 -0.298869,-0.640171 -0.597739,-1.280342 -0.896608,-1.920513 1.75651,0 3.513021,0 5.269531,0 C 34.777344,9.738932 30.316406,5.0970051 25.855469,0.45507812 Z m 1.5,3.72656248 c 2.786458,2.8997395 5.572917,5.7994789 8.359375,8.6992184 -1.367188,0 -2.734375,0 -4.101563,0 0.885072,1.903196 1.781799,3.80152 2.659622,5.707744 0.0349,0.566084 -1.149057,0.988823 -1.282093,0.297971 -0.818567,-1.671162 -1.637133,-3.342323 -2.455699,-5.013485 -1.059896,1.034505 -2.119791,2.06901 -3.179687,3.103515 1.5e-5,-4.264988 3e-5,-8.5299756 4.5e-5,-12.7949634 z"
|
||||||
|
id="path5851" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
@@ -10,124 +10,62 @@
|
|||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="65"
|
width="46"
|
||||||
height="22"
|
height="22"
|
||||||
id="svg2857"
|
viewBox="0 0 46 22"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.48.5 r10040"
|
id="svg2751"
|
||||||
sodipodi:docname="toggle-off-us.svg">
|
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||||
|
sodipodi:docname="toggle-off-intl.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs2859">
|
id="defs2745">
|
||||||
<inkscape:perspective
|
|
||||||
sodipodi:type="inkscape:persp3d"
|
|
||||||
inkscape:vp_x="0 : 526.18109 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
|
||||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
|
||||||
id="perspective2865" />
|
|
||||||
<inkscape:perspective
|
|
||||||
id="perspective2843"
|
|
||||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
|
||||||
inkscape:vp_z="1 : 0.5 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
|
||||||
sodipodi:type="inkscape:persp3d" />
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient76469-7-7-4"
|
id="linearGradient3329">
|
||||||
id="linearGradient38024"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
|
||||||
x1="6"
|
|
||||||
y1="102.95528"
|
|
||||||
x2="6"
|
|
||||||
y2="84.505203" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient76469-7-7-4">
|
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#2e3232;stop-opacity:1"
|
style="stop-color:#39393a;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop76471-7-1-5" />
|
id="stop3325" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#3e4545;stop-opacity:1"
|
style="stop-color:#302f30;stop-opacity:1"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop76473-9-0-0" />
|
id="stop3327" />
|
||||||
</linearGradient>
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4"
|
|
||||||
is_visible="true" />
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4-0"
|
|
||||||
is_visible="true" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient37802-8"
|
|
||||||
id="linearGradient12311-3-1-0-5-4"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
|
||||||
x1="610.13782"
|
|
||||||
y1="501.43866"
|
|
||||||
x2="610.13782"
|
|
||||||
y2="492.52756" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient37802-8"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop37804-1"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
|
||||||
<stop
|
|
||||||
id="stop37806-8"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#16191a;stop-opacity:1" />
|
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
y2="492.52756"
|
inkscape:collect="always"
|
||||||
x2="610.13782"
|
xlink:href="#linearGradient3329"
|
||||||
y1="501.43866"
|
id="linearGradient3331"
|
||||||
x1="610.13782"
|
x1="53"
|
||||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)"
|
y1="294.42917"
|
||||||
|
x2="53"
|
||||||
|
y2="309.80417"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
id="linearGradient13602"
|
gradientTransform="translate(-42.760724)" />
|
||||||
xlink:href="#linearGradient37802-8"
|
|
||||||
inkscape:collect="always" />
|
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
pagecolor="#000000"
|
pagecolor="#535353"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1"
|
inkscape:zoom="1"
|
||||||
inkscape:cx="-5.0602834"
|
inkscape:cx="-19.436775"
|
||||||
inkscape:cy="16.473273"
|
inkscape:cy="-13.499723"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="g37994"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="2560"
|
units="px"
|
||||||
inkscape:window-height="1375"
|
inkscape:pagecheckerboard="true"
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
borderlayer="true"
|
borderlayer="true"
|
||||||
inkscape:showpageshadow="false"
|
inkscape:showpageshadow="false"
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
showborder="false">
|
showborder="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid12954"
|
id="grid3298" />
|
||||||
empspacing="5"
|
|
||||||
visible="true"
|
|
||||||
enabled="true"
|
|
||||||
snapvisiblegridlinesonly="true" />
|
|
||||||
</sodipodi:namedview>
|
</sodipodi:namedview>
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata2862">
|
id="metadata2748">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
<cc:Work
|
<cc:Work
|
||||||
rdf:about="">
|
rdf:about="">
|
||||||
@@ -142,68 +80,24 @@
|
|||||||
inkscape:label="Layer 1"
|
inkscape:label="Layer 1"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(-444.64286,-781.36218)">
|
transform="translate(0,-291.17916)">
|
||||||
<g
|
<rect
|
||||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
style="opacity:1;vector-effect:none;fill:#323233;fill-opacity:1;stroke:#272728;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||||
id="g37994">
|
id="rect3296"
|
||||||
<g
|
width="44.446434"
|
||||||
id="g37996"
|
height="20.910645"
|
||||||
transform="translate(-115,1277)">
|
x="0.625"
|
||||||
<rect
|
y="291.71494"
|
||||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
rx="10.455324"
|
||||||
id="rect13475"
|
ry="10.073335" />
|
||||||
width="98"
|
<rect
|
||||||
height="25"
|
ry="10.455322"
|
||||||
x="644.5"
|
rx="10.455322"
|
||||||
y="484.61118"
|
y="291.71494"
|
||||||
rx="4.7429576"
|
x="0.5428465"
|
||||||
ry="3.8424656" />
|
height="20.910645"
|
||||||
<rect
|
width="21.142862"
|
||||||
ry="3.8424656"
|
id="rect3300"
|
||||||
rx="4.7429576"
|
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#151515;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
|
||||||
y="483.5"
|
|
||||||
x="644.5"
|
|
||||||
height="25"
|
|
||||||
width="98"
|
|
||||||
id="rect38000"
|
|
||||||
style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
transform="translate(-49.946213,-1.890275)"
|
|
||||||
id="g38002">
|
|
||||||
<g
|
|
||||||
transform="translate(-115,1247)"
|
|
||||||
style="display:inline"
|
|
||||||
id="g38004">
|
|
||||||
<rect
|
|
||||||
ry="3.7972314"
|
|
||||||
rx="4.6871223"
|
|
||||||
y="515.5"
|
|
||||||
x="694.53046"
|
|
||||||
height="25"
|
|
||||||
width="45.969578"
|
|
||||||
id="rect38006"
|
|
||||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cc"
|
|
||||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
|
||||||
d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
id="path38016"
|
|
||||||
inkscape:path-effect="#path-effect77541-4"
|
|
||||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
sodipodi:type="arc"
|
|
||||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2.15627193;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
|
||||||
id="path13479"
|
|
||||||
sodipodi:cx="16.4375"
|
|
||||||
sodipodi:cy="10.8125"
|
|
||||||
sodipodi:rx="4.3125"
|
|
||||||
sodipodi:ry="4.3125"
|
|
||||||
d="m 20.75,10.8125 a 4.3125,4.3125 0 1 1 -8.625,0 4.3125,4.3125 0 1 1 8.625,0 z"
|
|
||||||
transform="matrix(1.4212691,0,0,1.1514287,577.38488,1761.1138)" />
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 3.3 KiB |
@@ -1,255 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="65"
|
|
||||||
height="22"
|
|
||||||
id="svg2857"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.48.5 r10040"
|
|
||||||
sodipodi:docname="toggle-on-intl.svg">
|
|
||||||
<defs
|
|
||||||
id="defs2859">
|
|
||||||
<inkscape:perspective
|
|
||||||
sodipodi:type="inkscape:persp3d"
|
|
||||||
inkscape:vp_x="0 : 526.18109 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
|
||||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
|
||||||
id="perspective2865" />
|
|
||||||
<inkscape:perspective
|
|
||||||
id="perspective2843"
|
|
||||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
|
||||||
inkscape:vp_z="1 : 0.5 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
|
||||||
sodipodi:type="inkscape:persp3d" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient76469-7-7-4"
|
|
||||||
id="linearGradient38024"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
|
||||||
x1="6"
|
|
||||||
y1="102.95528"
|
|
||||||
x2="6"
|
|
||||||
y2="84.505203" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient76469-7-7-4">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#2e3232;stop-opacity:1"
|
|
||||||
offset="0"
|
|
||||||
id="stop76471-7-1-5" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3e4545;stop-opacity:1"
|
|
||||||
offset="1"
|
|
||||||
id="stop76473-9-0-0" />
|
|
||||||
</linearGradient>
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4"
|
|
||||||
is_visible="true" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient37802"
|
|
||||||
id="linearGradient12311-3-1-0-5"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
|
||||||
x1="610.13782"
|
|
||||||
y1="501.43866"
|
|
||||||
x2="610.13782"
|
|
||||||
y2="492.52756" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient37802"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop37804"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
|
||||||
<stop
|
|
||||||
id="stop37806"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#16191a;stop-opacity:1" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient76469-7-7-4-3"
|
|
||||||
id="linearGradient77680"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1,0,0,1.0322581,717.71949,428.68472)"
|
|
||||||
x1="6"
|
|
||||||
y1="102.95528"
|
|
||||||
x2="6"
|
|
||||||
y2="84.505203" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient76469-7-7-4-3">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#2e3232;stop-opacity:1"
|
|
||||||
offset="0"
|
|
||||||
id="stop76471-7-1-5-7" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3e4545;stop-opacity:1"
|
|
||||||
offset="1"
|
|
||||||
id="stop76473-9-0-0-9" />
|
|
||||||
</linearGradient>
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4-0"
|
|
||||||
is_visible="true" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient37802-8"
|
|
||||||
id="linearGradient12311-3-1-0-5-4"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)"
|
|
||||||
x1="610.13782"
|
|
||||||
y1="501.43866"
|
|
||||||
x2="610.13782"
|
|
||||||
y2="492.52756" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient37802-8"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop37804-1"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#2c2c2c;stop-opacity:1" />
|
|
||||||
<stop
|
|
||||||
id="stop37806-8"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#16191a;stop-opacity:1" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
y2="492.52756"
|
|
||||||
x2="610.13782"
|
|
||||||
y1="501.43866"
|
|
||||||
x1="610.13782"
|
|
||||||
gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
id="linearGradient13602"
|
|
||||||
xlink:href="#linearGradient37802-8"
|
|
||||||
inkscape:collect="always" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#000000"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="1"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="1"
|
|
||||||
inkscape:cx="16.760995"
|
|
||||||
inkscape:cy="21.955673"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g37994"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="2560"
|
|
||||||
inkscape:window-height="1375"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
borderlayer="true"
|
|
||||||
inkscape:showpageshadow="false"
|
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
showborder="false">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid12954"
|
|
||||||
empspacing="5"
|
|
||||||
visible="true"
|
|
||||||
enabled="true"
|
|
||||||
snapvisiblegridlinesonly="true" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata2862">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-444.64286,-781.36218)">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
|
||||||
id="g37994">
|
|
||||||
<g
|
|
||||||
id="g37996"
|
|
||||||
transform="translate(-115,1277)">
|
|
||||||
<rect
|
|
||||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
|
||||||
id="rect13475"
|
|
||||||
width="98"
|
|
||||||
height="25"
|
|
||||||
x="644.5"
|
|
||||||
y="484.61118"
|
|
||||||
rx="4.7429576"
|
|
||||||
ry="3.8424656" />
|
|
||||||
<rect
|
|
||||||
ry="3.8424656"
|
|
||||||
rx="4.7429576"
|
|
||||||
y="483.5"
|
|
||||||
x="644.5"
|
|
||||||
height="25"
|
|
||||||
width="98"
|
|
||||||
id="rect38000"
|
|
||||||
style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
transform="translate(-49.946213,-1.890275)"
|
|
||||||
id="g38002">
|
|
||||||
<g
|
|
||||||
transform="translate(-115,1247)"
|
|
||||||
style="display:inline"
|
|
||||||
id="g38004">
|
|
||||||
<rect
|
|
||||||
ry="3.7972314"
|
|
||||||
rx="4.6871223"
|
|
||||||
y="515.5"
|
|
||||||
x="694.53046"
|
|
||||||
height="25"
|
|
||||||
width="45.969578"
|
|
||||||
id="rect38006"
|
|
||||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cc"
|
|
||||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
|
||||||
d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
id="path38016"
|
|
||||||
inkscape:path-effect="#path-effect77541-4"
|
|
||||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:13.79166794px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
|
||||||
x="520.29974"
|
|
||||||
y="1997.0011"
|
|
||||||
id="text75614"
|
|
||||||
sodipodi:linespacing="125%"
|
|
||||||
transform="scale(1.1236771,0.88993537)"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan75616"
|
|
||||||
x="520.29974"
|
|
||||||
y="1997.0011">OFF</tspan></text>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 8.8 KiB |
@@ -10,117 +10,69 @@
|
|||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="65"
|
width="46"
|
||||||
height="22"
|
height="22"
|
||||||
id="svg2857"
|
viewBox="0 0 46 22"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.91 r13725"
|
id="svg2751"
|
||||||
|
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||||
sodipodi:docname="toggle-on-intl.svg">
|
sodipodi:docname="toggle-on-intl.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs2859">
|
id="defs2745">
|
||||||
<inkscape:perspective
|
|
||||||
sodipodi:type="inkscape:persp3d"
|
|
||||||
inkscape:vp_x="0 : 526.18109 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
|
||||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
|
||||||
id="perspective2865" />
|
|
||||||
<inkscape:perspective
|
|
||||||
id="perspective2843"
|
|
||||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
|
||||||
inkscape:vp_z="1 : 0.5 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
|
||||||
sodipodi:type="inkscape:persp3d" />
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient77461"
|
id="linearGradient3329">
|
||||||
id="linearGradient77551"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
|
||||||
x1="1164.7644"
|
|
||||||
y1="962.93695"
|
|
||||||
x2="1164.7644"
|
|
||||||
y2="970.51404" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient77461"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
<stop
|
||||||
id="stop77463"
|
style="stop-color:#39393a;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
style="stop-color:#182f4c;stop-opacity:1" />
|
id="stop3325" />
|
||||||
<stop
|
<stop
|
||||||
id="stop77465"
|
style="stop-color:#302f30;stop-opacity:1"
|
||||||
offset="1"
|
offset="1"
|
||||||
style="stop-color:#205b9a;stop-opacity:1" />
|
id="stop3327" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient76469-7-7-4"
|
xlink:href="#linearGradient3329"
|
||||||
id="linearGradient38024"
|
id="linearGradient3331"
|
||||||
|
x1="53"
|
||||||
|
y1="294.42917"
|
||||||
|
x2="53"
|
||||||
|
y2="309.80417"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
gradientTransform="translate(-19)" />
|
||||||
x1="6"
|
|
||||||
y1="102.95528"
|
|
||||||
x2="6"
|
|
||||||
y2="84.505203" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient76469-7-7-4">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#2e3232;stop-opacity:1"
|
|
||||||
offset="0"
|
|
||||||
id="stop76471-7-1-5" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3e4545;stop-opacity:1"
|
|
||||||
offset="1"
|
|
||||||
id="stop76473-9-0-0" />
|
|
||||||
</linearGradient>
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4"
|
|
||||||
is_visible="true" />
|
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
pagecolor="#000000"
|
pagecolor="#535353"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1"
|
inkscape:zoom="1"
|
||||||
inkscape:cx="37.410841"
|
inkscape:cx="13.588971"
|
||||||
inkscape:cy="16.009314"
|
inkscape:cy="14.124546"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="g37994"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="2560"
|
units="px"
|
||||||
inkscape:window-height="1376"
|
inkscape:pagecheckerboard="true"
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
borderlayer="true"
|
borderlayer="true"
|
||||||
inkscape:showpageshadow="false"
|
inkscape:showpageshadow="false"
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
showborder="false">
|
showborder="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid12954"
|
id="grid3298" />
|
||||||
empspacing="5"
|
|
||||||
visible="true"
|
|
||||||
enabled="true"
|
|
||||||
snapvisiblegridlinesonly="true" />
|
|
||||||
</sodipodi:namedview>
|
</sodipodi:namedview>
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata2862">
|
id="metadata2748">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
<cc:Work
|
<cc:Work
|
||||||
rdf:about="">
|
rdf:about="">
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title />
|
<dc:title></dc:title>
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
@@ -128,65 +80,24 @@
|
|||||||
inkscape:label="Layer 1"
|
inkscape:label="Layer 1"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(-444.64286,-781.36218)">
|
transform="translate(0,-291.17916)">
|
||||||
<g
|
<rect
|
||||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
style="opacity:1;vector-effect:none;fill:#15539e;fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||||
id="g37994">
|
id="rect3296"
|
||||||
<g
|
width="44.446434"
|
||||||
id="g37996"
|
height="20.910645"
|
||||||
transform="translate(-115,1277)">
|
x="0.625"
|
||||||
<rect
|
y="291.71494"
|
||||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
rx="10.455324"
|
||||||
id="rect13475"
|
ry="10.073335" />
|
||||||
width="98"
|
<rect
|
||||||
height="25"
|
ry="10.455322"
|
||||||
x="644.5"
|
rx="10.455322"
|
||||||
y="484.61118"
|
y="291.71494"
|
||||||
rx="4.7429576"
|
x="24.30357"
|
||||||
ry="3.8424656" />
|
height="20.910645"
|
||||||
<rect
|
width="21.142862"
|
||||||
ry="3.8424656"
|
id="rect3300"
|
||||||
rx="4.7429576"
|
style="opacity:1;vector-effect:none;fill:url(#linearGradient3331);fill-opacity:1;stroke:#030e1b;stroke-width:1.08532763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
|
||||||
y="483.5"
|
|
||||||
x="644.5"
|
|
||||||
height="25"
|
|
||||||
width="98"
|
|
||||||
id="rect38000"
|
|
||||||
style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
transform="translate(2.0625,-2)"
|
|
||||||
id="g38002">
|
|
||||||
<g
|
|
||||||
transform="translate(-115,1247)"
|
|
||||||
style="display:inline"
|
|
||||||
id="g38004">
|
|
||||||
<rect
|
|
||||||
ry="3.7972314"
|
|
||||||
rx="4.6871223"
|
|
||||||
y="515.5"
|
|
||||||
x="694.53046"
|
|
||||||
height="25"
|
|
||||||
width="45.969578"
|
|
||||||
id="rect38006"
|
|
||||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cc"
|
|
||||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
|
||||||
d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
id="path38016"
|
|
||||||
inkscape:path-effect="#path-effect77541-4"
|
|
||||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<rect
|
|
||||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
|
||||||
id="rect13678"
|
|
||||||
width="3.0646207"
|
|
||||||
height="12.414008"
|
|
||||||
x="554.77728"
|
|
||||||
y="1767.3566" />
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 3.3 KiB |
@@ -1,207 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="65"
|
|
||||||
height="22"
|
|
||||||
id="svg2857"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.91 r13725"
|
|
||||||
sodipodi:docname="toggle-on-us.svg">
|
|
||||||
<defs
|
|
||||||
id="defs2859">
|
|
||||||
<inkscape:perspective
|
|
||||||
sodipodi:type="inkscape:persp3d"
|
|
||||||
inkscape:vp_x="0 : 526.18109 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
|
||||||
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
|
||||||
id="perspective2865" />
|
|
||||||
<inkscape:perspective
|
|
||||||
id="perspective2843"
|
|
||||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
|
||||||
inkscape:vp_z="1 : 0.5 : 1"
|
|
||||||
inkscape:vp_y="0 : 1000 : 0"
|
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
|
||||||
sodipodi:type="inkscape:persp3d" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient76469-7-7-4"
|
|
||||||
id="linearGradient38024"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)"
|
|
||||||
x1="6"
|
|
||||||
y1="102.95528"
|
|
||||||
x2="6"
|
|
||||||
y2="84.505203" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient76469-7-7-4">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#2e3232;stop-opacity:1"
|
|
||||||
offset="0"
|
|
||||||
id="stop76471-7-1-5" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#3e4545;stop-opacity:1"
|
|
||||||
offset="1"
|
|
||||||
id="stop76473-9-0-0" />
|
|
||||||
</linearGradient>
|
|
||||||
<inkscape:path-effect
|
|
||||||
effect="spiro"
|
|
||||||
id="path-effect77541-4"
|
|
||||||
is_visible="true" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient77461-1"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop77463-1"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#182f4c;stop-opacity:1" />
|
|
||||||
<stop
|
|
||||||
id="stop77465-4"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#205b9a;stop-opacity:1" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient77461-1"
|
|
||||||
id="linearGradient77551-6-5"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)"
|
|
||||||
x1="1164.7644"
|
|
||||||
y1="962.93695"
|
|
||||||
x2="1164.7644"
|
|
||||||
y2="970.51404" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient77461-1"
|
|
||||||
id="linearGradient11198"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)"
|
|
||||||
x1="1322.5831"
|
|
||||||
y1="-312.51855"
|
|
||||||
x2="1322.5831"
|
|
||||||
y2="-306.53461" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#000000"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="1"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="1"
|
|
||||||
inkscape:cx="-26.798898"
|
|
||||||
inkscape:cy="5.3753009"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="g37994"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="2560"
|
|
||||||
inkscape:window-height="1376"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
borderlayer="true"
|
|
||||||
inkscape:showpageshadow="false"
|
|
||||||
inkscape:snap-nodes="false"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
showborder="false">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid12954"
|
|
||||||
empspacing="5"
|
|
||||||
visible="true"
|
|
||||||
enabled="true"
|
|
||||||
snapvisiblegridlinesonly="true" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata2862">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-444.64286,-781.36218)">
|
|
||||||
<g
|
|
||||||
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
|
||||||
id="g37994">
|
|
||||||
<g
|
|
||||||
id="g37996"
|
|
||||||
transform="translate(-115,1277)">
|
|
||||||
<rect
|
|
||||||
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837"
|
|
||||||
id="rect13475"
|
|
||||||
width="98"
|
|
||||||
height="25"
|
|
||||||
x="644.5"
|
|
||||||
y="484.61118"
|
|
||||||
rx="4.7429576"
|
|
||||||
ry="3.8424656" />
|
|
||||||
<rect
|
|
||||||
ry="3.8424656"
|
|
||||||
rx="4.7429576"
|
|
||||||
y="483.5"
|
|
||||||
x="644.5"
|
|
||||||
height="25"
|
|
||||||
width="98"
|
|
||||||
id="rect38000"
|
|
||||||
style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
transform="translate(2.0625,-2)"
|
|
||||||
id="g38002">
|
|
||||||
<g
|
|
||||||
transform="translate(-115,1247)"
|
|
||||||
style="display:inline"
|
|
||||||
id="g38004">
|
|
||||||
<rect
|
|
||||||
ry="3.7972314"
|
|
||||||
rx="4.6871223"
|
|
||||||
y="515.5"
|
|
||||||
x="694.53046"
|
|
||||||
height="25"
|
|
||||||
width="45.969578"
|
|
||||||
id="rect38006"
|
|
||||||
style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cc"
|
|
||||||
style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
|
||||||
d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
id="path38016"
|
|
||||||
inkscape:path-effect="#path-effect77541-4"
|
|
||||||
inkscape:original-d="m 699.09675,516.7365 36.86904,0"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<text
|
|
||||||
transform="scale(1.1000946,0.90901274)"
|
|
||||||
sodipodi:linespacing="125%"
|
|
||||||
id="text38018"
|
|
||||||
y="1955.5205"
|
|
||||||
x="495.94223"
|
|
||||||
style="font-size:13.29953671px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold"
|
|
||||||
xml:space="preserve"><tspan
|
|
||||||
y="1955.5205"
|
|
||||||
x="495.94223"
|
|
||||||
id="tspan38020"
|
|
||||||
sodipodi:role="line">ON</tspan></text>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.7 KiB |
@@ -124,7 +124,7 @@ var Batch = class extends Task {
|
|||||||
}
|
}
|
||||||
|
|
||||||
process() {
|
process() {
|
||||||
throw new Error('Not implemented');
|
throw new GObject.NotImplementedError(`process in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
runTask() {
|
runTask() {
|
||||||
|
@@ -325,7 +325,7 @@ var SessionMenuButton = class {
|
|||||||
this._button.remove_style_pseudo_class('active');
|
this._button.remove_style_pseudo_class('active');
|
||||||
});
|
});
|
||||||
|
|
||||||
this._manager = new PopupMenu.PopupMenuManager({ actor: this._button },
|
this._manager = new PopupMenu.PopupMenuManager(this._button,
|
||||||
{ actionMode: Shell.ActionMode.NONE });
|
{ actionMode: Shell.ActionMode.NONE });
|
||||||
this._manager.addMenu(this._menu);
|
this._manager.addMenu(this._menu);
|
||||||
|
|
||||||
@@ -652,7 +652,7 @@ var LoginDialog = GObject.registerClass({
|
|||||||
bannerAllocation.x2 = Math.floor(centerX - centerGap / 2);
|
bannerAllocation.x2 = Math.floor(centerX - centerGap / 2);
|
||||||
bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth);
|
bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth);
|
||||||
|
|
||||||
// figure out how tall it would like to be and try to accomodate
|
// figure out how tall it would like to be and try to accommodate
|
||||||
// but don't let it get too close to the logo
|
// but don't let it get too close to the logo
|
||||||
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);
|
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);
|
||||||
|
|
||||||
|
@@ -64,6 +64,7 @@
|
|||||||
<file>ui/keyboard.js</file>
|
<file>ui/keyboard.js</file>
|
||||||
<file>ui/layout.js</file>
|
<file>ui/layout.js</file>
|
||||||
<file>ui/lightbox.js</file>
|
<file>ui/lightbox.js</file>
|
||||||
|
<file>ui/locatePointer.js</file>
|
||||||
<file>ui/lookingGlass.js</file>
|
<file>ui/lookingGlass.js</file>
|
||||||
<file>ui/magnifier.js</file>
|
<file>ui/magnifier.js</file>
|
||||||
<file>ui/magnifierDBus.js</file>
|
<file>ui/magnifierDBus.js</file>
|
||||||
@@ -81,9 +82,11 @@
|
|||||||
<file>ui/pageIndicators.js</file>
|
<file>ui/pageIndicators.js</file>
|
||||||
<file>ui/panel.js</file>
|
<file>ui/panel.js</file>
|
||||||
<file>ui/panelMenu.js</file>
|
<file>ui/panelMenu.js</file>
|
||||||
|
<file>ui/pointerA11yTimeout.js</file>
|
||||||
<file>ui/pointerWatcher.js</file>
|
<file>ui/pointerWatcher.js</file>
|
||||||
<file>ui/popupMenu.js</file>
|
<file>ui/popupMenu.js</file>
|
||||||
<file>ui/remoteSearch.js</file>
|
<file>ui/remoteSearch.js</file>
|
||||||
|
<file>ui/ripples.js</file>
|
||||||
<file>ui/runDialog.js</file>
|
<file>ui/runDialog.js</file>
|
||||||
<file>ui/screenShield.js</file>
|
<file>ui/screenShield.js</file>
|
||||||
<file>ui/screencast.js</file>
|
<file>ui/screencast.js</file>
|
||||||
@@ -120,6 +123,7 @@
|
|||||||
|
|
||||||
<file>ui/status/accessibility.js</file>
|
<file>ui/status/accessibility.js</file>
|
||||||
<file>ui/status/brightness.js</file>
|
<file>ui/status/brightness.js</file>
|
||||||
|
<file>ui/status/dwellClick.js</file>
|
||||||
<file>ui/status/location.js</file>
|
<file>ui/status/location.js</file>
|
||||||
<file>ui/status/keyboard.js</file>
|
<file>ui/status/keyboard.js</file>
|
||||||
<file>ui/status/nightLight.js</file>
|
<file>ui/status/nightLight.js</file>
|
||||||
|
@@ -42,8 +42,6 @@ var IntrospectService = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_isStandaloneApp(app) {
|
_isStandaloneApp(app) {
|
||||||
let windows = app.get_windows();
|
|
||||||
|
|
||||||
return app.get_windows().some(w => w.transient_for == null);
|
return app.get_windows().some(w => w.transient_for == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,6 +53,11 @@ var IntrospectService = class {
|
|||||||
return APP_WHITELIST.includes(sender);
|
return APP_WHITELIST.includes(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getSandboxedAppId(app) {
|
||||||
|
let ids = app.get_windows().map(w => w.get_sandboxed_app_id());
|
||||||
|
return ids.find(id => id != null);
|
||||||
|
}
|
||||||
|
|
||||||
_syncRunningApplications() {
|
_syncRunningApplications() {
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
let apps = this._appSystem.get_running();
|
let apps = this._appSystem.get_running();
|
||||||
@@ -76,6 +79,10 @@ var IntrospectService = class {
|
|||||||
newActiveApplication = app.get_id();
|
newActiveApplication = app.get_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let sandboxedAppId = this._getSandboxedAppId(app);
|
||||||
|
if (sandboxedAppId)
|
||||||
|
appInfo['sandboxed-app-id'] = new GLib.Variant('s', sandboxedAppId);
|
||||||
|
|
||||||
newRunningApplications[app.get_id()] = appInfo;
|
newRunningApplications[app.get_id()] = appInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +144,7 @@ var IntrospectService = class {
|
|||||||
let frameRect = window.get_frame_rect();
|
let frameRect = window.get_frame_rect();
|
||||||
let title = window.get_title();
|
let title = window.get_title();
|
||||||
let wmClass = window.get_wm_class();
|
let wmClass = window.get_wm_class();
|
||||||
|
let sandboxedAppId = window.get_sandboxed_app_id();
|
||||||
|
|
||||||
windowsList[windowId] = {
|
windowsList[windowId] = {
|
||||||
'app-id': GLib.Variant.new('s', app.get_id()),
|
'app-id': GLib.Variant.new('s', app.get_id()),
|
||||||
@@ -153,6 +161,10 @@ var IntrospectService = class {
|
|||||||
|
|
||||||
if (wmClass != null)
|
if (wmClass != null)
|
||||||
windowsList[windowId]['wm-class'] = GLib.Variant.new('s', wmClass);
|
windowsList[windowId]['wm-class'] = GLib.Variant.new('s', wmClass);
|
||||||
|
|
||||||
|
if (sandboxedAppId != null)
|
||||||
|
windowsList[windowId]['sandboxed-app-id'] =
|
||||||
|
GLib.Variant.new('s', sandboxedAppId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList]));
|
invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList]));
|
||||||
|
@@ -48,6 +48,28 @@ function canLock() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function registerSessionWithGDM() {
|
||||||
|
log("Registering session with GDM");
|
||||||
|
Gio.DBus.system.call('org.gnome.DisplayManager',
|
||||||
|
'/org/gnome/DisplayManager/Manager',
|
||||||
|
'org.gnome.DisplayManager.Manager',
|
||||||
|
'RegisterSession',
|
||||||
|
GLib.Variant.new('(a{sv})', [{}]), null,
|
||||||
|
Gio.DBusCallFlags.NONE, -1, null,
|
||||||
|
(source, result) => {
|
||||||
|
try {
|
||||||
|
source.call_finish(result);
|
||||||
|
} catch (e) {
|
||||||
|
if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
|
||||||
|
log(`Error registering session with GDM: ${e.message}`);
|
||||||
|
else
|
||||||
|
log("Not calling RegisterSession(): method not exported, GDM too old?");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let _loginManager = null;
|
let _loginManager = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -71,7 +71,7 @@ function _findProviderForMccMnc(operator_name, operator_code) {
|
|||||||
// Tries to find the operator name corresponding to the given SID
|
// Tries to find the operator name corresponding to the given SID
|
||||||
//
|
//
|
||||||
function _findProviderForSid(sid) {
|
function _findProviderForSid(sid) {
|
||||||
if (sid == 0)
|
if (!sid)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
let mpd = _getMobileProvidersDatabase();
|
let mpd = _getMobileProvidersDatabase();
|
||||||
|
@@ -88,42 +88,42 @@ const SystemActions = GObject.registerClass({
|
|||||||
name: C_("search-result", "Power Off"),
|
name: C_("search-result", "Power Off"),
|
||||||
iconName: 'system-shutdown-symbolic',
|
iconName: 'system-shutdown-symbolic',
|
||||||
// Translators: A list of keywords that match the power-off action, separated by semicolons
|
// Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||||
keywords: _("power off;shutdown;reboot;restart").split(';'),
|
keywords: _("power off;shutdown;reboot;restart").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
this._actions.set(LOCK_SCREEN_ACTION_ID,
|
this._actions.set(LOCK_SCREEN_ACTION_ID,
|
||||||
{ // Translators: The name of the lock screen action in search
|
{ // Translators: The name of the lock screen action in search
|
||||||
name: C_("search-result", "Lock Screen"),
|
name: C_("search-result", "Lock Screen"),
|
||||||
iconName: 'system-lock-screen-symbolic',
|
iconName: 'system-lock-screen-symbolic',
|
||||||
// Translators: A list of keywords that match the lock screen action, separated by semicolons
|
// Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||||
keywords: _("lock screen").split(';'),
|
keywords: _("lock screen").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
this._actions.set(LOGOUT_ACTION_ID,
|
this._actions.set(LOGOUT_ACTION_ID,
|
||||||
{ // Translators: The name of the logout action in search
|
{ // Translators: The name of the logout action in search
|
||||||
name: C_("search-result", "Log Out"),
|
name: C_("search-result", "Log Out"),
|
||||||
iconName: 'application-exit-symbolic',
|
iconName: 'application-exit-symbolic',
|
||||||
// Translators: A list of keywords that match the logout action, separated by semicolons
|
// Translators: A list of keywords that match the logout action, separated by semicolons
|
||||||
keywords: _("logout;sign off").split(';'),
|
keywords: _("logout;log out;sign off").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
this._actions.set(SUSPEND_ACTION_ID,
|
this._actions.set(SUSPEND_ACTION_ID,
|
||||||
{ // Translators: The name of the suspend action in search
|
{ // Translators: The name of the suspend action in search
|
||||||
name: C_("search-result", "Suspend"),
|
name: C_("search-result", "Suspend"),
|
||||||
iconName: 'media-playback-pause-symbolic',
|
iconName: 'media-playback-pause-symbolic',
|
||||||
// Translators: A list of keywords that match the suspend action, separated by semicolons
|
// Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||||
keywords: _("suspend;sleep").split(';'),
|
keywords: _("suspend;sleep").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
this._actions.set(SWITCH_USER_ACTION_ID,
|
this._actions.set(SWITCH_USER_ACTION_ID,
|
||||||
{ // Translators: The name of the switch user action in search
|
{ // Translators: The name of the switch user action in search
|
||||||
name: C_("search-result", "Switch User"),
|
name: C_("search-result", "Switch User"),
|
||||||
iconName: 'system-switch-user-symbolic',
|
iconName: 'system-switch-user-symbolic',
|
||||||
// Translators: A list of keywords that match the switch user action, separated by semicolons
|
// Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||||
keywords: _("switch user").split(';'),
|
keywords: _("switch user").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
this._actions.set(LOCK_ORIENTATION_ACTION_ID,
|
this._actions.set(LOCK_ORIENTATION_ACTION_ID,
|
||||||
{ // Translators: The name of the lock orientation action in search
|
{ // Translators: The name of the lock orientation action in search
|
||||||
name: C_("search-result", "Lock Orientation"),
|
name: C_("search-result", "Lock Orientation"),
|
||||||
iconName: '',
|
iconName: '',
|
||||||
// Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
// Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||||
keywords: _("lock orientation;screen;rotation").split(';'),
|
keywords: _("lock orientation;screen;rotation").split(/[; ]/),
|
||||||
available: false });
|
available: false });
|
||||||
|
|
||||||
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
||||||
@@ -262,7 +262,7 @@ const SystemActions = GObject.registerClass({
|
|||||||
let results = [];
|
let results = [];
|
||||||
|
|
||||||
for (let [key, {available, keywords}] of this._actions)
|
for (let [key, {available, keywords}] of this._actions)
|
||||||
if (available && terms.every(t => keywords.some(k => (k.indexOf(t) >= 0))))
|
if (available && terms.every(t => keywords.some(k => k.startsWith(t))))
|
||||||
results.push(key);
|
results.push(key);
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
|
@@ -366,7 +366,7 @@ class CloseButton extends St.Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_computeBoxPointerOffset() {
|
_computeBoxPointerOffset() {
|
||||||
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
|
if (!this._boxPointer || !this._boxPointer.get_stage())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
let side = this._boxPointer.arrowSide;
|
let side = this._boxPointer.arrowSide;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
const { Clutter, Gio, GLib, Shell } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
|
||||||
|
|
||||||
const CheckBox = imports.ui.checkBox;
|
const CheckBox = imports.ui.checkBox;
|
||||||
const Dialog = imports.ui.dialog;
|
const Dialog = imports.ui.dialog;
|
||||||
@@ -15,9 +15,10 @@ var DialogResponse = {
|
|||||||
CLOSED: 2
|
CLOSED: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
var AccessDialog = class extends ModalDialog.ModalDialog {
|
var AccessDialog = GObject.registerClass(
|
||||||
constructor(invocation, handle, title, subtitle, body, options) {
|
class AccessDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'access-dialog' });
|
_init(invocation, handle, title, subtitle, body, options) {
|
||||||
|
super._init({ styleClass: 'access-dialog' });
|
||||||
|
|
||||||
this._invocation = invocation;
|
this._invocation = invocation;
|
||||||
this._handle = handle;
|
this._handle = handle;
|
||||||
@@ -109,7 +110,7 @@ var AccessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
});
|
});
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var AccessDialogDBus = class {
|
var AccessDialogDBus = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -474,12 +474,10 @@ var CyclerList = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var CyclerPopup = GObject.registerClass(
|
var CyclerPopup = GObject.registerClass({
|
||||||
class CyclerPopup extends SwitcherPopup.SwitcherPopup {
|
GTypeFlags: GObject.TypeFlags.ABSTRACT
|
||||||
|
}, class CyclerPopup extends SwitcherPopup.SwitcherPopup {
|
||||||
_init() {
|
_init() {
|
||||||
if (new.target === CyclerPopup)
|
|
||||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
|
||||||
|
|
||||||
super._init();
|
super._init();
|
||||||
|
|
||||||
this._items = this._getWindows();
|
this._items = this._getWindows();
|
||||||
|
@@ -98,8 +98,8 @@ function clamp(value, min, max) {
|
|||||||
|
|
||||||
class BaseAppView {
|
class BaseAppView {
|
||||||
constructor(params, gridParams) {
|
constructor(params, gridParams) {
|
||||||
if (new.target === BaseAppView)
|
if (this.constructor === BaseAppView)
|
||||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||||
|
|
||||||
gridParams = Params.parse(gridParams, { xAlign: St.Align.MIDDLE,
|
gridParams = Params.parse(gridParams, { xAlign: St.Align.MIDDLE,
|
||||||
columnLimit: MAX_COLUMNS,
|
columnLimit: MAX_COLUMNS,
|
||||||
@@ -414,7 +414,7 @@ var AllView = class AllView extends BaseAppView {
|
|||||||
this._refilterApps();
|
this._refilterApps();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overriden from BaseAppView
|
// Overridden from BaseAppView
|
||||||
animate(animationDirection, onComplete) {
|
animate(animationDirection, onComplete) {
|
||||||
this._scrollView.reactive = false;
|
this._scrollView.reactive = false;
|
||||||
let completionFunc = () => {
|
let completionFunc = () => {
|
||||||
@@ -632,9 +632,9 @@ var AllView = class AllView extends BaseAppView {
|
|||||||
this._scrollView.get_effect('fade').fade_edges = true;
|
this._scrollView.get_effect('fade').fade_edges = true;
|
||||||
|
|
||||||
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
||||||
this._adjustment.value = 0;
|
|
||||||
this._grid.currentPage = 0;
|
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||||
|
this._adjustment.value = 0;
|
||||||
|
this._grid.currentPage = 0;
|
||||||
this._pageIndicators.setNPages(this._grid.nPages());
|
this._pageIndicators.setNPages(this._grid.nPages());
|
||||||
this._pageIndicators.setCurrentPage(0);
|
this._pageIndicators.setCurrentPage(0);
|
||||||
});
|
});
|
||||||
@@ -1017,7 +1017,7 @@ var FolderView = class FolderView extends BaseAppView {
|
|||||||
Util.ensureActorVisibleInScrollView(this.actor, actor);
|
Util.ensureActorVisibleInScrollView(this.actor, actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overriden from BaseAppView
|
// Overridden from BaseAppView
|
||||||
animate(animationDirection) {
|
animate(animationDirection) {
|
||||||
this._grid.animatePulse(animationDirection);
|
this._grid.animatePulse(animationDirection);
|
||||||
}
|
}
|
||||||
@@ -1081,7 +1081,7 @@ var FolderView = class FolderView extends BaseAppView {
|
|||||||
|
|
||||||
let contentBox = this.actor.get_theme_node().get_content_box(pageBox);
|
let contentBox = this.actor.get_theme_node().get_content_box(pageBox);
|
||||||
// We only can show icons inside the collection view boxPointer
|
// We only can show icons inside the collection view boxPointer
|
||||||
// so we have to substract the required padding etc of the boxpointer
|
// so we have to subtract the required padding etc of the boxpointer
|
||||||
return [(contentBox.x2 - contentBox.x1) - 2 * this._offsetForEachSide, (contentBox.y2 - contentBox.y1) - 2 * this._offsetForEachSide];
|
return [(contentBox.x2 - contentBox.x1) - 2 * this._offsetForEachSide, (contentBox.y2 - contentBox.y1) - 2 * this._offsetForEachSide];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1301,16 +1301,16 @@ var AppFolderPopup = class AppFolderPopup {
|
|||||||
x_expand: true,
|
x_expand: true,
|
||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
|
|
||||||
this._boxPointer.actor.style_class = 'app-folder-popup';
|
this._boxPointer.style_class = 'app-folder-popup';
|
||||||
this.actor.add_actor(this._boxPointer.actor);
|
this.actor.add_actor(this._boxPointer);
|
||||||
this._boxPointer.bin.set_child(this._view.actor);
|
this._boxPointer.bin.set_child(this._view.actor);
|
||||||
|
|
||||||
this.closeButton = Util.makeCloseButton(this._boxPointer);
|
this.closeButton = Util.makeCloseButton(this._boxPointer);
|
||||||
this.closeButton.connect('clicked', this.popdown.bind(this));
|
this.closeButton.connect('clicked', this.popdown.bind(this));
|
||||||
this.actor.add_actor(this.closeButton);
|
this.actor.add_actor(this.closeButton);
|
||||||
|
|
||||||
this._boxPointer.actor.bind_property('opacity', this.closeButton, 'opacity',
|
this._boxPointer.bind_property('opacity', this.closeButton, 'opacity',
|
||||||
GObject.BindingFlags.SYNC_CREATE);
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
global.focus_manager.add_group(this.actor);
|
global.focus_manager.add_group(this.actor);
|
||||||
|
|
||||||
@@ -1479,7 +1479,7 @@ var AppIcon = class AppIcon {
|
|||||||
this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this));
|
this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this));
|
||||||
|
|
||||||
this._menu = null;
|
this._menu = null;
|
||||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
this._menuManager = new PopupMenu.PopupMenuManager(this.actor);
|
||||||
|
|
||||||
if (isDraggable) {
|
if (isDraggable) {
|
||||||
this._draggable = DND.makeDraggable(this.actor);
|
this._draggable = DND.makeDraggable(this.actor);
|
||||||
@@ -1707,25 +1707,20 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
|
|||||||
w => !w.skip_taskbar
|
w => !w.skip_taskbar
|
||||||
);
|
);
|
||||||
|
|
||||||
// Display the app windows menu items and the separator between windows
|
if (windows.length > 0)
|
||||||
// of the current desktop and other windows.
|
this.addMenuItem(
|
||||||
let workspaceManager = global.workspace_manager;
|
/* Translators: This is the heading of a list of open windows */
|
||||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
new PopupMenu.PopupSeparatorMenuItem(_("Open Windows"))
|
||||||
let separatorShown = windows.length > 0 && windows[0].get_workspace() != activeWorkspace;
|
);
|
||||||
|
|
||||||
for (let i = 0; i < windows.length; i++) {
|
windows.forEach(window => {
|
||||||
let window = windows[i];
|
|
||||||
if (!separatorShown && window.get_workspace() != activeWorkspace) {
|
|
||||||
this._appendSeparator();
|
|
||||||
separatorShown = true;
|
|
||||||
}
|
|
||||||
let title = window.title ? window.title
|
let title = window.title ? window.title
|
||||||
: this._source.app.get_name();
|
: this._source.app.get_name();
|
||||||
let item = this._appendMenuItem(title);
|
let item = this._appendMenuItem(title);
|
||||||
item.connect('activate', () => {
|
item.connect('activate', () => {
|
||||||
this.emit('activate-window', window);
|
this.emit('activate-window', window);
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
|
|
||||||
if (!this._source.app.is_window_backed()) {
|
if (!this._source.app.is_window_backed()) {
|
||||||
this._appendSeparator();
|
this._appendSeparator();
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
@@ -13,10 +13,11 @@ var AudioDevice = {
|
|||||||
|
|
||||||
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
|
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
|
||||||
|
|
||||||
var AudioDeviceSelectionDialog =
|
var AudioDeviceSelectionDialog = GObject.registerClass({
|
||||||
class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
|
Signals: { 'device-selected': { param_types: [GObject.TYPE_UINT] } }
|
||||||
constructor(devices) {
|
}, class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'audio-device-selection-dialog' });
|
_init(devices) {
|
||||||
|
super._init({ styleClass: 'audio-device-selection-dialog' });
|
||||||
|
|
||||||
this._deviceItems = {};
|
this._deviceItems = {};
|
||||||
|
|
||||||
@@ -33,10 +34,6 @@ class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
|
|||||||
throw new Error('Too few devices for a selection');
|
throw new Error('Too few devices for a selection');
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
|
||||||
super.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
_buildLayout(devices) {
|
_buildLayout(devices) {
|
||||||
let title = new St.Label({ style_class: 'audio-selection-title',
|
let title = new St.Label({ style_class: 'audio-selection-title',
|
||||||
text: _("Select Audio Device"),
|
text: _("Select Audio Device"),
|
||||||
@@ -125,7 +122,7 @@ class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
|
|||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
app.activate();
|
app.activate();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
|
var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -257,14 +257,15 @@ var Background = class Background {
|
|||||||
this._refreshAnimation();
|
this._refreshAnimation();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._settingsChangedSignalId = this._settings.connect('changed', () => {
|
this._settingsChangedSignalId =
|
||||||
this.emit('changed');
|
this._settings.connect('changed', this._emitChangedSignal.bind(this));
|
||||||
});
|
|
||||||
|
|
||||||
this._load();
|
this._load();
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
|
this.background = null;
|
||||||
|
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._removeAnimationTimeout();
|
this._removeAnimationTimeout();
|
||||||
|
|
||||||
@@ -288,6 +289,22 @@ var Background = class Background {
|
|||||||
if (this._settingsChangedSignalId != 0)
|
if (this._settingsChangedSignalId != 0)
|
||||||
this._settings.disconnect(this._settingsChangedSignalId);
|
this._settings.disconnect(this._settingsChangedSignalId);
|
||||||
this._settingsChangedSignalId = 0;
|
this._settingsChangedSignalId = 0;
|
||||||
|
|
||||||
|
if (this._changedIdleId) {
|
||||||
|
GLib.source_remove(this._changedIdleId);
|
||||||
|
this._changedIdleId = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_emitChangedSignal() {
|
||||||
|
if (this._changedIdleId)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._changedIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
|
||||||
|
this._changedIdleId = 0;
|
||||||
|
this.emit('changed');
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateResolution() {
|
updateResolution() {
|
||||||
@@ -343,7 +360,7 @@ var Background = class Background {
|
|||||||
if (changedFile.equal(file)) {
|
if (changedFile.equal(file)) {
|
||||||
let imageCache = Meta.BackgroundImageCache.get_default();
|
let imageCache = Meta.BackgroundImageCache.get_default();
|
||||||
imageCache.purge(changedFile);
|
imageCache.purge(changedFile);
|
||||||
this.emit('changed');
|
this._emitChangedSignal();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this._fileWatches[key] = signalId;
|
this._fileWatches[key] = signalId;
|
||||||
@@ -699,7 +716,6 @@ var BackgroundManager = class BackgroundManager {
|
|||||||
time: FADE_ANIMATION_TIME,
|
time: FADE_ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete() {
|
onComplete() {
|
||||||
oldBackgroundActor.background.run_dispose();
|
|
||||||
oldBackgroundActor.destroy();
|
oldBackgroundActor.destroy();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@@ -25,7 +25,7 @@ var BackgroundMenu = class BackgroundMenu extends PopupMenu.PopupMenu {
|
|||||||
function addBackgroundMenu(actor, layoutManager) {
|
function addBackgroundMenu(actor, layoutManager) {
|
||||||
actor.reactive = true;
|
actor.reactive = true;
|
||||||
actor._backgroundMenu = new BackgroundMenu(layoutManager);
|
actor._backgroundMenu = new BackgroundMenu(layoutManager);
|
||||||
actor._backgroundManager = new PopupMenu.PopupMenuManager({ actor: actor });
|
actor._backgroundManager = new PopupMenu.PopupMenuManager(actor);
|
||||||
actor._backgroundManager.addMenu(actor._backgroundMenu);
|
actor._backgroundManager.addMenu(actor._backgroundMenu);
|
||||||
|
|
||||||
function openMenu(x, y) {
|
function openMenu(x, y) {
|
||||||
|
@@ -121,7 +121,8 @@ var BarLevel = class {
|
|||||||
cr.lineTo(x, (height - barLevelHeight) / 2);
|
cr.lineTo(x, (height - barLevelHeight) / 2);
|
||||||
cr.lineTo(x, (height + barLevelHeight) / 2);
|
cr.lineTo(x, (height + barLevelHeight) / 2);
|
||||||
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
|
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
|
||||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
if (this._value > 0)
|
||||||
|
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||||
cr.fillPreserve();
|
cr.fillPreserve();
|
||||||
Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor);
|
Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor);
|
||||||
cr.setLineWidth(barLevelBorderWidth);
|
cr.setLineWidth(barLevelBorderWidth);
|
||||||
@@ -143,17 +144,19 @@ var BarLevel = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* end progress bar arc */
|
/* end progress bar arc */
|
||||||
if (this._value <= this._overdriveStart)
|
if (this._value > 0) {
|
||||||
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
if (this._value <= this._overdriveStart)
|
||||||
else
|
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
|
||||||
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
|
else
|
||||||
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
|
||||||
cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
|
||||||
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
|
||||||
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
|
||||||
cr.fillPreserve();
|
cr.lineTo(endX, (height - barLevelHeight) / 2);
|
||||||
cr.setLineWidth(barLevelBorderWidth);
|
cr.fillPreserve();
|
||||||
cr.stroke();
|
cr.setLineWidth(barLevelBorderWidth);
|
||||||
|
cr.stroke();
|
||||||
|
}
|
||||||
|
|
||||||
/* draw overdrive separator */
|
/* draw overdrive separator */
|
||||||
if (overdriveActive) {
|
if (overdriveActive) {
|
||||||
|
@@ -33,8 +33,6 @@ var BoxPointer = GObject.registerClass({
|
|||||||
_init(arrowSide, binProperties) {
|
_init(arrowSide, binProperties) {
|
||||||
super._init();
|
super._init();
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
|
|
||||||
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||||
|
|
||||||
this._arrowSide = arrowSide;
|
this._arrowSide = arrowSide;
|
||||||
@@ -50,6 +48,15 @@ var BoxPointer = GObject.registerClass({
|
|||||||
this._sourceAlignment = 0.5;
|
this._sourceAlignment = 0.5;
|
||||||
this._capturedEventId = 0;
|
this._capturedEventId = 0;
|
||||||
this._muteInput();
|
this._muteInput();
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
if (this._sourceActorDestroyId) {
|
||||||
|
this._sourceActor.disconnect(this._sourceActorDestroyId);
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get arrowSide() {
|
get arrowSide() {
|
||||||
@@ -69,36 +76,6 @@ var BoxPointer = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BoxPointer.show() and BoxPointer.hide() are here for only compatibility
|
|
||||||
// purposes, and will be removed in 3.32.
|
|
||||||
show(animate, onComplete) {
|
|
||||||
if (animate !== undefined) {
|
|
||||||
try {
|
|
||||||
throw new Error('BoxPointer.show() has been moved to BoxPointer.open(), this code will break in the future.');
|
|
||||||
} catch(e) {
|
|
||||||
logError(e);
|
|
||||||
this.open(animate, onComplete);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.visible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
hide(animate, onComplete) {
|
|
||||||
if (animate !== undefined) {
|
|
||||||
try {
|
|
||||||
throw new Error('BoxPointer.hide() has been moved to BoxPointer.close(), this code will break in the future.');
|
|
||||||
} catch(e) {
|
|
||||||
logError(e);
|
|
||||||
this.close(animate, onComplete);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.visible = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
open(animate, onComplete) {
|
open(animate, onComplete) {
|
||||||
let themeNode = this.get_theme_node();
|
let themeNode = this.get_theme_node();
|
||||||
let rise = themeNode.get_length('-arrow-rise');
|
let rise = themeNode.get_length('-arrow-rise');
|
||||||
@@ -227,13 +204,10 @@ var BoxPointer = GObject.registerClass({
|
|||||||
this.set_allocation(box, flags);
|
this.set_allocation(box, flags);
|
||||||
|
|
||||||
let themeNode = this.get_theme_node();
|
let themeNode = this.get_theme_node();
|
||||||
box = themeNode.get_content_box(box);
|
|
||||||
|
|
||||||
let borderWidth = themeNode.get_length('-arrow-border-width');
|
let borderWidth = themeNode.get_length('-arrow-border-width');
|
||||||
let rise = themeNode.get_length('-arrow-rise');
|
let rise = themeNode.get_length('-arrow-rise');
|
||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
let availWidth = box.x2 - box.x1;
|
let [availWidth, availHeight] = themeNode.get_content_box(box).get_size();
|
||||||
let availHeight = box.y2 - box.y1;
|
|
||||||
|
|
||||||
childBox.x1 = 0;
|
childBox.x1 = 0;
|
||||||
childBox.y1 = 0;
|
childBox.y1 = 0;
|
||||||
@@ -262,8 +236,9 @@ var BoxPointer = GObject.registerClass({
|
|||||||
this.bin.allocate(childBox, flags);
|
this.bin.allocate(childBox, flags);
|
||||||
|
|
||||||
if (this._sourceActor && this._sourceActor.mapped) {
|
if (this._sourceActor && this._sourceActor.mapped) {
|
||||||
this._reposition();
|
this._reposition(box);
|
||||||
this._updateFlip();
|
this._updateFlip(box);
|
||||||
|
this.set_allocation(box, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,15 +425,25 @@ var BoxPointer = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setPosition(sourceActor, alignment) {
|
setPosition(sourceActor, alignment) {
|
||||||
// We need to show it now to force an allocation,
|
if (!this._sourceActor || sourceActor != this._sourceActor) {
|
||||||
// so that we can query the correct size.
|
if (this._sourceActorDestroyId) {
|
||||||
this.show();
|
this._sourceActor.disconnect(this._sourceActorDestroyId);
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._sourceActor = sourceActor;
|
||||||
|
|
||||||
|
if (this._sourceActor) {
|
||||||
|
this._sourceActorDestroyId = this._sourceActor.connect('destroy', () => {
|
||||||
|
this._sourceActor = null;
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this._sourceActor = sourceActor;
|
|
||||||
this._arrowAlignment = alignment;
|
this._arrowAlignment = alignment;
|
||||||
|
|
||||||
this._reposition();
|
this.queue_relayout();
|
||||||
this._updateFlip();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setSourceAlignment(alignment) {
|
setSourceAlignment(alignment) {
|
||||||
@@ -470,7 +455,7 @@ var BoxPointer = GObject.registerClass({
|
|||||||
this.setPosition(this._sourceActor, this._arrowAlignment);
|
this.setPosition(this._sourceActor, this._arrowAlignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
_reposition() {
|
_reposition(allocationBox) {
|
||||||
let sourceActor = this._sourceActor;
|
let sourceActor = this._sourceActor;
|
||||||
let alignment = this._arrowAlignment;
|
let alignment = this._arrowAlignment;
|
||||||
let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor);
|
let monitorIndex = Main.layoutManager.findIndexForActor(sourceActor);
|
||||||
@@ -584,8 +569,7 @@ var BoxPointer = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Actually set the position
|
// Actually set the position
|
||||||
this.x = Math.floor(x);
|
allocationBox.set_origin(Math.floor(x), Math.floor(y));
|
||||||
this.y = Math.floor(y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// @origin: Coordinate specifying middle of the arrow, along
|
// @origin: Coordinate specifying middle of the arrow, along
|
||||||
@@ -639,15 +623,11 @@ var BoxPointer = GObject.registerClass({
|
|||||||
return arrowSide;
|
return arrowSide;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateFlip() {
|
_updateFlip(allocationBox) {
|
||||||
let arrowSide = this._calculateArrowSide(this._userArrowSide);
|
let arrowSide = this._calculateArrowSide(this._userArrowSide);
|
||||||
if (this._arrowSide != arrowSide) {
|
if (this._arrowSide != arrowSide) {
|
||||||
this._arrowSide = arrowSide;
|
this._arrowSide = arrowSide;
|
||||||
this._reposition();
|
this._reposition(allocationBox);
|
||||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
|
||||||
this.queue_relayout();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.emit('arrow-side-changed');
|
this.emit('arrow-side-changed');
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,7 @@ const Mainloop = imports.mainloop;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
const GnomeSession = imports.misc.gnomeSession;
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
|
const Main = imports.ui.main;
|
||||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||||
|
|
||||||
var GNOME_SESSION_AUTOMOUNT_INHIBIT = 16;
|
var GNOME_SESSION_AUTOMOUNT_INHIBIT = 16;
|
||||||
@@ -199,12 +200,20 @@ var AutomountManager = class {
|
|||||||
// error strings are not unique for the cases in the comments below.
|
// error strings are not unique for the cases in the comments below.
|
||||||
if (e.message.includes('No key available with this passphrase') || // cryptsetup
|
if (e.message.includes('No key available with this passphrase') || // cryptsetup
|
||||||
e.message.includes('No key available to unlock device') || // udisks (no password)
|
e.message.includes('No key available to unlock device') || // udisks (no password)
|
||||||
e.message.includes('Error unlocking')) { // udisks (wrong password)
|
// libblockdev wrong password opening LUKS device
|
||||||
|
e.message.includes('Failed to activate device: Incorrect passphrase') ||
|
||||||
|
// cryptsetup returns EINVAL in many cases, including wrong TCRYPT password/parameters
|
||||||
|
e.message.includes('Failed to load device\'s parameters: Invalid argument')) {
|
||||||
|
|
||||||
this._reaskPassword(volume);
|
this._reaskPassword(volume);
|
||||||
} else {
|
} else {
|
||||||
|
if (e.message.includes('Compiled against a version of libcryptsetup that does not support the VeraCrypt PIM setting')) {
|
||||||
|
Main.notifyError(_("Unable to unlock volume"),
|
||||||
|
_("The installed udisks version does not support the PIM setting"));
|
||||||
|
}
|
||||||
|
|
||||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
||||||
log('Unable to mount volume ' + volume.get_name() + ': ' + e.toString());
|
log('Unable to mount volume ' + volume.get_name() + ': ' + e.toString());
|
||||||
|
|
||||||
this._closeOperation(volume);
|
this._closeOperation(volume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,9 +10,10 @@ const CheckBox = imports.ui.checkBox;
|
|||||||
|
|
||||||
var WORK_SPINNER_ICON_SIZE = 16;
|
var WORK_SPINNER_ICON_SIZE = 16;
|
||||||
|
|
||||||
var KeyringDialog = class extends ModalDialog.ModalDialog {
|
var KeyringDialog = GObject.registerClass(
|
||||||
constructor() {
|
class KeyringDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'prompt-dialog' });
|
_init() {
|
||||||
|
super._init({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
this.prompt = new Shell.KeyringPrompt();
|
this.prompt = new Shell.KeyringPrompt();
|
||||||
this.prompt.connect('show-password', this._onShowPassword.bind(this));
|
this.prompt.connect('show-password', this._onShowPassword.bind(this));
|
||||||
@@ -23,20 +24,8 @@ var KeyringDialog = class extends ModalDialog.ModalDialog {
|
|||||||
this._content = new Dialog.MessageDialogContent({ icon });
|
this._content = new Dialog.MessageDialogContent({ icon });
|
||||||
this.contentLayout.add(this._content);
|
this.contentLayout.add(this._content);
|
||||||
|
|
||||||
// FIXME: Why does this break now?
|
|
||||||
/*
|
|
||||||
this.prompt.bind_property('message', this._content, 'title', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('message', this._content, 'title', GObject.BindingFlags.SYNC_CREATE);
|
||||||
this.prompt.bind_property('description', this._content, 'body', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('description', this._content, 'body', GObject.BindingFlags.SYNC_CREATE);
|
||||||
*/
|
|
||||||
this.prompt.connect('notify::message', () => {
|
|
||||||
this._content.title = this.prompt.message;
|
|
||||||
});
|
|
||||||
this._content.title = this.prompt.message;
|
|
||||||
|
|
||||||
this.prompt.connect('notify::description', () => {
|
|
||||||
this._content.body = this.prompt.description;
|
|
||||||
});
|
|
||||||
this._content.body = this.prompt.description;
|
|
||||||
|
|
||||||
this._workSpinner = null;
|
this._workSpinner = null;
|
||||||
this._controlTable = null;
|
this._controlTable = null;
|
||||||
@@ -224,7 +213,7 @@ var KeyringDialog = class extends ModalDialog.ModalDialog {
|
|||||||
_onCancelButton() {
|
_onCancelButton() {
|
||||||
this.prompt.cancel();
|
this.prompt.cancel();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var KeyringDummyDialog = class {
|
var KeyringDummyDialog = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, NM, Pango, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
@@ -12,9 +12,10 @@ const ShellEntry = imports.ui.shellEntry;
|
|||||||
|
|
||||||
const VPN_UI_GROUP = 'VPN Plugin UI';
|
const VPN_UI_GROUP = 'VPN Plugin UI';
|
||||||
|
|
||||||
var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
|
var NetworkSecretDialog = GObject.registerClass(
|
||||||
constructor(agent, requestId, connection, settingName, hints, flags, contentOverride) {
|
class NetworkSecretDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'prompt-dialog' });
|
_init(agent, requestId, connection, settingName, hints, flags, contentOverride) {
|
||||||
|
super._init({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
this._agent = agent;
|
this._agent = agent;
|
||||||
this._requestId = requestId;
|
this._requestId = requestId;
|
||||||
@@ -347,7 +348,7 @@ var NetworkSecretDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var VPNRequestHandler = class {
|
var VPNRequestHandler = class {
|
||||||
constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {
|
constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { AccountsService, Clutter, Gio, GLib,
|
const { AccountsService, Clutter, Gio, GLib,
|
||||||
Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
|
GObject, Pango, PolkitAgent, Polkit, Shell, St } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const Animation = imports.ui.animation;
|
const Animation = imports.ui.animation;
|
||||||
@@ -15,9 +15,11 @@ var DIALOG_ICON_SIZE = 48;
|
|||||||
|
|
||||||
var WORK_SPINNER_ICON_SIZE = 16;
|
var WORK_SPINNER_ICON_SIZE = 16;
|
||||||
|
|
||||||
var AuthenticationDialog = class extends ModalDialog.ModalDialog {
|
var AuthenticationDialog = GObject.registerClass({
|
||||||
constructor(actionId, body, cookie, userNames) {
|
Signals: { 'done': { param_types: [GObject.TYPE_BOOLEAN] } }
|
||||||
super({ styleClass: 'prompt-dialog' });
|
}, class AuthenticationDialog extends ModalDialog.ModalDialog {
|
||||||
|
_init(actionId, body, cookie, userNames) {
|
||||||
|
super._init({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
this.actionId = actionId;
|
this.actionId = actionId;
|
||||||
this.message = body;
|
this.message = body;
|
||||||
@@ -25,7 +27,7 @@ var AuthenticationDialog = class extends ModalDialog.ModalDialog {
|
|||||||
this._wasDismissed = false;
|
this._wasDismissed = false;
|
||||||
|
|
||||||
this._sessionUpdatedId = Main.sessionMode.connect('updated', () => {
|
this._sessionUpdatedId = Main.sessionMode.connect('updated', () => {
|
||||||
this._group.visible = !Main.sessionMode.isLocked;
|
this.visible = !Main.sessionMode.isLocked;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.connect('closed', this._onDialogClosed.bind(this));
|
this.connect('closed', this._onDialogClosed.bind(this));
|
||||||
@@ -326,8 +328,7 @@ var AuthenticationDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
this._destroySession();
|
this._destroySession();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(AuthenticationDialog.prototype);
|
|
||||||
|
|
||||||
var AuthenticationAgent = class {
|
var AuthenticationAgent = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -401,7 +401,7 @@ var ChatSource = class extends MessageTray.Source {
|
|||||||
if (this._client.is_handling_channel(this._channel)) {
|
if (this._client.is_handling_channel(this._channel)) {
|
||||||
// We are handling the channel, try to pass it to Empathy or Polari
|
// We are handling the channel, try to pass it to Empathy or Polari
|
||||||
// (depending on the channel type)
|
// (depending on the channel type)
|
||||||
// We don't check if either app is availble - mission control will
|
// We don't check if either app is available - mission control will
|
||||||
// fallback to something else if activation fails
|
// fallback to something else if activation fails
|
||||||
|
|
||||||
let target;
|
let target;
|
||||||
|
@@ -899,7 +899,7 @@ var Dash = class Dash {
|
|||||||
favPos++;
|
favPos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No drag placeholder means we don't wan't to favorite the app
|
// No drag placeholder means we don't want to favorite the app
|
||||||
// and we are dragging it to its original position
|
// and we are dragging it to its original position
|
||||||
if (!this._dragPlaceholder)
|
if (!this._dragPlaceholder)
|
||||||
return true;
|
return true;
|
||||||
|
@@ -118,7 +118,7 @@ var WorldClocksSection = class WorldClocksSection {
|
|||||||
if (!clocks[i].location)
|
if (!clocks[i].location)
|
||||||
continue;
|
continue;
|
||||||
let l = world.deserialize(clocks[i].location);
|
let l = world.deserialize(clocks[i].location);
|
||||||
if (l)
|
if (l && l.get_timezone() != null)
|
||||||
this._locations.push({ location: l });
|
this._locations.push({ location: l });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,10 +476,9 @@ class DateMenuButton extends PanelMenu.Button {
|
|||||||
box.add_actor(this._clockDisplay);
|
box.add_actor(this._clockDisplay);
|
||||||
box.add_actor(this._indicator.actor);
|
box.add_actor(this._indicator.actor);
|
||||||
|
|
||||||
this.actor.label_actor = this._clockDisplay;
|
this.label_actor = this._clockDisplay;
|
||||||
this.actor.add_actor(box);
|
this.add_actor(box);
|
||||||
this.actor.add_style_class_name ('clock-display');
|
this.add_style_class_name ('clock-display');
|
||||||
|
|
||||||
|
|
||||||
let layout = new FreezableBinLayout();
|
let layout = new FreezableBinLayout();
|
||||||
let bin = new St.Widget({ layout_manager: layout });
|
let bin = new St.Widget({ layout_manager: layout });
|
||||||
|
@@ -175,10 +175,10 @@ var MessageDialogContent = GObject.registerClass({
|
|||||||
this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
|
this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE,
|
let textProps = { ellipsize: Pango.EllipsizeMode.NONE,
|
||||||
line_wrap: true };
|
line_wrap: true };
|
||||||
Object.assign(this._subtitle.clutter_text, textProps);
|
this._subtitle.clutter_text.set(textProps);
|
||||||
Object.assign(this._body.clutter_text, textProps);
|
this._body.clutter_text.set(textProps);
|
||||||
|
|
||||||
if (!params.hasOwnProperty('style_class'))
|
if (!params.hasOwnProperty('style_class'))
|
||||||
params.style_class = 'message-dialog-main-layout';
|
params.style_class = 'message-dialog-main-layout';
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
const { AccountsService, Clutter, Gio,
|
const { AccountsService, Clutter, Gio,
|
||||||
GLib, Pango, Polkit, Shell, St } = imports.gi;
|
GLib, GObject, Pango, Polkit, Shell, St } = imports.gi;
|
||||||
|
|
||||||
const CheckBox = imports.ui.checkBox;
|
const CheckBox = imports.ui.checkBox;
|
||||||
const GnomeSession = imports.misc.gnomeSession;
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
@@ -226,10 +226,11 @@ function init() {
|
|||||||
_endSessionDialog = new EndSessionDialog();
|
_endSessionDialog = new EndSessionDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
|
var EndSessionDialog = GObject.registerClass(
|
||||||
constructor() {
|
class EndSessionDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'end-session-dialog',
|
_init() {
|
||||||
destroyOnClose: false });
|
super._init({ styleClass: 'end-session-dialog',
|
||||||
|
destroyOnClose: false });
|
||||||
|
|
||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
this._userManager = AccountsService.UserManager.get_default();
|
this._userManager = AccountsService.UserManager.get_default();
|
||||||
@@ -747,4 +748,4 @@ var EndSessionDialog = class EndSessionDialog extends ModalDialog.ModalDialog {
|
|||||||
Close(parameters, invocation) {
|
Close(parameters, invocation) {
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
@@ -96,6 +96,15 @@ function init() {
|
|||||||
Clutter.Actor.prototype.toString = function() {
|
Clutter.Actor.prototype.toString = function() {
|
||||||
return St.describe_actor(this);
|
return St.describe_actor(this);
|
||||||
};
|
};
|
||||||
|
// Deprecation warning for former JS classes turned into an actor subclass
|
||||||
|
Object.defineProperty(Clutter.Actor.prototype, 'actor', {
|
||||||
|
get() {
|
||||||
|
let klass = this.constructor.name;
|
||||||
|
let { stack } = new Error();
|
||||||
|
log(`Usage of object.actor is deprecated for ${klass}\n${stack}`);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let origToString = Object.prototype.toString;
|
let origToString = Object.prototype.toString;
|
||||||
Object.prototype.toString = function() {
|
Object.prototype.toString = function() {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, Soup, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Soup, St } = imports.gi;
|
||||||
|
|
||||||
const Config = imports.misc.config;
|
const Config = imports.misc.config;
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
@@ -176,10 +176,10 @@ function checkForUpdates() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var InstallExtensionDialog =
|
var InstallExtensionDialog = GObject.registerClass(
|
||||||
class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
||||||
constructor(uuid, info, invocation) {
|
_init(uuid, info, invocation) {
|
||||||
super({ styleClass: 'extension-dialog' });
|
super._init({ styleClass: 'extension-dialog' });
|
||||||
|
|
||||||
this._uuid = uuid;
|
this._uuid = uuid;
|
||||||
this._info = info;
|
this._info = info;
|
||||||
@@ -255,7 +255,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
|
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
|
||||||
|
@@ -43,6 +43,9 @@ function _popGrabHelper(grabHelper) {
|
|||||||
// call grab().
|
// call grab().
|
||||||
var GrabHelper = class GrabHelper {
|
var GrabHelper = class GrabHelper {
|
||||||
constructor(owner, params) {
|
constructor(owner, params) {
|
||||||
|
if (!(owner instanceof Clutter.Actor))
|
||||||
|
throw new Error('GrabHelper owner must be a Clutter.Actor');
|
||||||
|
|
||||||
this._owner = owner;
|
this._owner = owner;
|
||||||
this._modalParams = params;
|
this._modalParams = params;
|
||||||
|
|
||||||
|
@@ -272,7 +272,7 @@ var CandidatePopup = class CandidatePopup {
|
|||||||
|
|
||||||
_setDummyCursorGeometry(x, y, w, h) {
|
_setDummyCursorGeometry(x, y, w, h) {
|
||||||
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
|
||||||
if (this._boxPointer.actor.visible)
|
if (this._boxPointer.visible)
|
||||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ var CandidatePopup = class CandidatePopup {
|
|||||||
if (isVisible) {
|
if (isVisible) {
|
||||||
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
|
||||||
this._boxPointer.open(BoxPointer.PopupAnimation.NONE);
|
this._boxPointer.open(BoxPointer.PopupAnimation.NONE);
|
||||||
this._boxPointer.actor.raise_top();
|
this._boxPointer.raise_top();
|
||||||
} else {
|
} else {
|
||||||
this._boxPointer.close(BoxPointer.PopupAnimation.NONE);
|
this._boxPointer.close(BoxPointer.PopupAnimation.NONE);
|
||||||
}
|
}
|
||||||
|
@@ -43,8 +43,6 @@ class BaseIcon extends St.Bin {
|
|||||||
x_fill: true,
|
x_fill: true,
|
||||||
y_fill: true });
|
y_fill: true });
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
this._box = new St.BoxLayout({ vertical: true });
|
this._box = new St.BoxLayout({ vertical: true });
|
||||||
@@ -81,7 +79,7 @@ class BaseIcon extends St.Bin {
|
|||||||
// This can be overridden by a subclass, or by the createIcon
|
// This can be overridden by a subclass, or by the createIcon
|
||||||
// parameter to _init()
|
// parameter to _init()
|
||||||
createIcon(size) {
|
createIcon(size) {
|
||||||
throw new Error('no implementation of createIcon in ' + this);
|
throw new GObject.NotImplementedError(`createIcon in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
setIconSize(size) {
|
setIconSize(size) {
|
||||||
@@ -188,8 +186,6 @@ var IconGrid = GObject.registerClass({
|
|||||||
super._init({ style_class: 'icon-grid',
|
super._init({ style_class: 'icon-grid',
|
||||||
y_align: Clutter.ActorAlign.START });
|
y_align: Clutter.ActorAlign.START });
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
|
|
||||||
params = Params.parse(params, { rowLimit: null,
|
params = Params.parse(params, { rowLimit: null,
|
||||||
columnLimit: null,
|
columnLimit: null,
|
||||||
minRows: 1,
|
minRows: 1,
|
||||||
@@ -326,6 +322,7 @@ var IconGrid = GObject.registerClass({
|
|||||||
leftEmptySpace = availWidth - usedWidth;
|
leftEmptySpace = availWidth - usedWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let animating = this._clonesAnimating.length > 0;
|
||||||
let x = box.x1 + leftEmptySpace + this.leftPadding;
|
let x = box.x1 + leftEmptySpace + this.leftPadding;
|
||||||
let y = box.y1 + this.topPadding;
|
let y = box.y1 + this.topPadding;
|
||||||
let columnIndex = 0;
|
let columnIndex = 0;
|
||||||
@@ -335,10 +332,11 @@ var IconGrid = GObject.registerClass({
|
|||||||
|
|
||||||
if (this._rowLimit && rowIndex >= this._rowLimit ||
|
if (this._rowLimit && rowIndex >= this._rowLimit ||
|
||||||
this._fillParent && childBox.y2 > availHeight - this.bottomPadding) {
|
this._fillParent && childBox.y2 > availHeight - this.bottomPadding) {
|
||||||
children[i].hide();
|
children[i].opacity = 0;
|
||||||
} else {
|
} else {
|
||||||
|
if (!animating)
|
||||||
|
children[i].opacity = 255;
|
||||||
children[i].allocate(childBox, flags);
|
children[i].allocate(childBox, flags);
|
||||||
children[i].show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
columnIndex++;
|
columnIndex++;
|
||||||
@@ -382,7 +380,7 @@ var IconGrid = GObject.registerClass({
|
|||||||
child != null;
|
child != null;
|
||||||
child = child.get_next_sibling()) {
|
child = child.get_next_sibling()) {
|
||||||
|
|
||||||
if (!child.visible)
|
if (!child.visible || !child.opacity)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let childVolume = child.get_transformed_paint_volume(this);
|
let childVolume = child.get_transformed_paint_volume(this);
|
||||||
@@ -420,7 +418,8 @@ var IconGrid = GObject.registerClass({
|
|||||||
|
|
||||||
animatePulse(animationDirection) {
|
animatePulse(animationDirection) {
|
||||||
if (animationDirection != AnimationDirection.IN)
|
if (animationDirection != AnimationDirection.IN)
|
||||||
throw new Error("Pulse animation only implements 'in' animation direction");
|
throw new GObject.NotImplementedError("Pulse animation only implements " +
|
||||||
|
"'in' animation direction");
|
||||||
|
|
||||||
this._cancelAnimation();
|
this._cancelAnimation();
|
||||||
|
|
||||||
@@ -844,7 +843,7 @@ var PaginatedIconGrid = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overriden from IconGrid
|
// Overridden from IconGrid
|
||||||
_getChildrenToAnimate() {
|
_getChildrenToAnimate() {
|
||||||
let children = this._getVisibleChildren();
|
let children = this._getVisibleChildren();
|
||||||
let firstIndex = this._childrenPerPage * this.currentPage;
|
let firstIndex = this._childrenPerPage * this.currentPage;
|
||||||
|
@@ -282,11 +282,11 @@ var Key = class Key {
|
|||||||
y_fill: true,
|
y_fill: true,
|
||||||
x_align: St.Align.START });
|
x_align: St.Align.START });
|
||||||
this._boxPointer.hide();
|
this._boxPointer.hide();
|
||||||
Main.layoutManager.addChrome(this._boxPointer.actor);
|
Main.layoutManager.addTopChrome(this._boxPointer);
|
||||||
this._boxPointer.setPosition(this.keyButton, 0.5);
|
this._boxPointer.setPosition(this.keyButton, 0.5);
|
||||||
|
|
||||||
// Adds style to existing keyboard style to avoid repetition
|
// Adds style to existing keyboard style to avoid repetition
|
||||||
this._boxPointer.actor.add_style_class_name('keyboard-subkeys');
|
this._boxPointer.add_style_class_name('keyboard-subkeys');
|
||||||
this._getExtendedKeys();
|
this._getExtendedKeys();
|
||||||
this.keyButton._extended_keys = this._extended_keyboard;
|
this.keyButton._extended_keys = this._extended_keyboard;
|
||||||
}
|
}
|
||||||
@@ -1049,7 +1049,7 @@ var Keyboard = class Keyboard {
|
|||||||
this._a11yApplicationsSettings.connect('changed', this._syncEnabled.bind(this));
|
this._a11yApplicationsSettings.connect('changed', this._syncEnabled.bind(this));
|
||||||
this._lastDeviceId = null;
|
this._lastDeviceId = null;
|
||||||
this._suggestions = null;
|
this._suggestions = null;
|
||||||
this._emojiKeyVisible = true;
|
this._emojiKeyVisible = Meta.is_wayland_compositor();
|
||||||
|
|
||||||
this._focusTracker = new FocusTracker();
|
this._focusTracker = new FocusTracker();
|
||||||
this._focusTracker.connect('position-changed', this._onFocusPositionChanged.bind(this));
|
this._focusTracker.connect('position-changed', this._onFocusPositionChanged.bind(this));
|
||||||
@@ -1144,6 +1144,7 @@ var Keyboard = class Keyboard {
|
|||||||
this._keyboardController.disconnect(this._keypadVisibleId);
|
this._keyboardController.disconnect(this._keypadVisibleId);
|
||||||
if (this._focusNotifyId)
|
if (this._focusNotifyId)
|
||||||
global.stage.disconnect(this._focusNotifyId);
|
global.stage.disconnect(this._focusNotifyId);
|
||||||
|
this._clearShowIdle();
|
||||||
this._keyboard = null;
|
this._keyboard = null;
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
@@ -1162,7 +1163,7 @@ var Keyboard = class Keyboard {
|
|||||||
this._keyboardController = new KeyboardController();
|
this._keyboardController = new KeyboardController();
|
||||||
|
|
||||||
this._groups = {};
|
this._groups = {};
|
||||||
this._current_page = null;
|
this._currentPage = null;
|
||||||
|
|
||||||
this._suggestions = new Suggestions();
|
this._suggestions = new Suggestions();
|
||||||
this.actor.add(this._suggestions.actor,
|
this.actor.add(this._suggestions.actor,
|
||||||
@@ -1202,10 +1203,12 @@ var Keyboard = class Keyboard {
|
|||||||
this._keyboardNotifyId = this._keyboardController.connect('active-group', this._onGroupChanged.bind(this));
|
this._keyboardNotifyId = this._keyboardController.connect('active-group', this._onGroupChanged.bind(this));
|
||||||
this._keyboardGroupsChangedId = this._keyboardController.connect('groups-changed', this._onKeyboardGroupsChanged.bind(this));
|
this._keyboardGroupsChangedId = this._keyboardController.connect('groups-changed', this._onKeyboardGroupsChanged.bind(this));
|
||||||
this._keyboardStateId = this._keyboardController.connect('panel-state', this._onKeyboardStateChanged.bind(this));
|
this._keyboardStateId = this._keyboardController.connect('panel-state', this._onKeyboardStateChanged.bind(this));
|
||||||
this._emojiKeyVisibleId = this._keyboardController.connect('emoji-visible', this._onEmojiKeyVisible.bind(this));
|
|
||||||
this._keypadVisibleId = this._keyboardController.connect('keypad-visible', this._onKeypadVisible.bind(this));
|
this._keypadVisibleId = this._keyboardController.connect('keypad-visible', this._onKeypadVisible.bind(this));
|
||||||
this._focusNotifyId = global.stage.connect('notify::key-focus', this._onKeyFocusChanged.bind(this));
|
this._focusNotifyId = global.stage.connect('notify::key-focus', this._onKeyFocusChanged.bind(this));
|
||||||
|
|
||||||
|
if (Meta.is_wayland_compositor())
|
||||||
|
this._emojiKeyVisibleId = this._keyboardController.connect('emoji-visible', this._onEmojiKeyVisible.bind(this));
|
||||||
|
|
||||||
this._relayout();
|
this._relayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1227,6 +1230,7 @@ var Keyboard = class Keyboard {
|
|||||||
if (!this._showIdleId) {
|
if (!this._showIdleId) {
|
||||||
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
|
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
|
||||||
this.show(Main.layoutManager.focusIndex);
|
this.show(Main.layoutManager.focusIndex);
|
||||||
|
this._showIdleId = 0;
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
});
|
});
|
||||||
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.show');
|
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.show');
|
||||||
@@ -1302,7 +1306,7 @@ var Keyboard = class Keyboard {
|
|||||||
this._languagePopup.destroy();
|
this._languagePopup.destroy();
|
||||||
|
|
||||||
this._languagePopup = new LanguageSelectionPopup(keyActor);
|
this._languagePopup = new LanguageSelectionPopup(keyActor);
|
||||||
Main.layoutManager.addChrome(this._languagePopup.actor);
|
Main.layoutManager.addTopChrome(this._languagePopup.actor);
|
||||||
this._languagePopup.open(true);
|
this._languagePopup.open(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1353,7 +1357,7 @@ var Keyboard = class Keyboard {
|
|||||||
} else if (switchToLevel == 1) {
|
} else if (switchToLevel == 1) {
|
||||||
extraButton.connect('long-press', () => {
|
extraButton.connect('long-press', () => {
|
||||||
this._latched = true;
|
this._latched = true;
|
||||||
this._setCurrentLevelLatched(this._current_page, this._latched);
|
this._setCurrentLevelLatched(this._currentPage, this._latched);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1380,8 +1384,8 @@ var Keyboard = class Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateCurrentPageVisible() {
|
_updateCurrentPageVisible() {
|
||||||
if (this._current_page)
|
if (this._currentPage)
|
||||||
this._current_page.visible = !this._emojiActive && !this._keypadVisible;
|
this._currentPage.visible = !this._emojiActive && !this._keypadVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
_setEmojiActive(active) {
|
_setEmojiActive(active) {
|
||||||
@@ -1440,7 +1444,7 @@ var Keyboard = class Keyboard {
|
|||||||
|
|
||||||
_getGridSlots() {
|
_getGridSlots() {
|
||||||
let numOfHorizSlots = 0, numOfVertSlots;
|
let numOfHorizSlots = 0, numOfVertSlots;
|
||||||
let rows = this._current_page.get_children();
|
let rows = this._currentPage.get_children();
|
||||||
numOfVertSlots = rows.length;
|
numOfVertSlots = rows.length;
|
||||||
|
|
||||||
for (let i = 0; i < rows.length; ++i) {
|
for (let i = 0; i < rows.length; ++i) {
|
||||||
@@ -1470,7 +1474,12 @@ var Keyboard = class Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onKeyboardGroupsChanged(keyboard) {
|
_onKeyboardGroupsChanged(keyboard) {
|
||||||
this._groups = [];
|
let nonGroupActors = [this._emojiSelection.actor, this._keypad.actor];
|
||||||
|
this._aspectContainer.get_children().filter(c => !nonGroupActors.includes(c)).forEach(c => {
|
||||||
|
c.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
this._groups = {};
|
||||||
this._onGroupChanged();
|
this._onGroupChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1512,13 +1521,24 @@ var Keyboard = class Keyboard {
|
|||||||
_setActiveLayer(activeLevel) {
|
_setActiveLayer(activeLevel) {
|
||||||
let activeGroupName = this._keyboardController.getCurrentGroup();
|
let activeGroupName = this._keyboardController.getCurrentGroup();
|
||||||
let layers = this._groups[activeGroupName];
|
let layers = this._groups[activeGroupName];
|
||||||
|
let currentPage = layers[activeLevel];
|
||||||
|
|
||||||
if (this._current_page != null) {
|
if (this._currentPage == currentPage) {
|
||||||
this._setCurrentLevelLatched(this._current_page, false);
|
this._updateCurrentPageVisible();
|
||||||
this._current_page.hide();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._current_page = layers[activeLevel];
|
if (this._currentPage != null) {
|
||||||
|
this._setCurrentLevelLatched(this._currentPage, false);
|
||||||
|
this._currentPage.disconnect(this._currentPage._destroyID);
|
||||||
|
this._currentPage.hide();
|
||||||
|
delete this._currentPage._destroyID;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._currentPage = currentPage;
|
||||||
|
this._currentPage._destroyID = this._currentPage.connect('destroy', () => {
|
||||||
|
this._currentPage = null;
|
||||||
|
});
|
||||||
this._updateCurrentPageVisible();
|
this._updateCurrentPageVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1606,18 +1626,6 @@ var Keyboard = class Keyboard {
|
|||||||
this.setCursorLocation(null);
|
this.setCursorLocation(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
_hideSubkeys() {
|
|
||||||
if (this._subkeysBoxPointer) {
|
|
||||||
this._subkeysBoxPointer.hide(BoxPointer.PopupAnimation.FULL);
|
|
||||||
this._subkeysBoxPointer = null;
|
|
||||||
}
|
|
||||||
if (this._capturedEventId) {
|
|
||||||
this.actor.disconnect(this._capturedEventId);
|
|
||||||
this._capturedEventId = 0;
|
|
||||||
}
|
|
||||||
this._capturedPress = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
resetSuggestions() {
|
resetSuggestions() {
|
||||||
if (this._suggestions)
|
if (this._suggestions)
|
||||||
this._suggestions.clear();
|
this._suggestions.clear();
|
||||||
|
@@ -11,6 +11,7 @@ const DND = imports.ui.dnd;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Ripples = imports.ui.ripples;
|
||||||
|
|
||||||
var STARTUP_ANIMATION_TIME = 0.5;
|
var STARTUP_ANIMATION_TIME = 0.5;
|
||||||
var KEYBOARD_ANIMATION_TIME = 0.15;
|
var KEYBOARD_ANIMATION_TIME = 0.15;
|
||||||
@@ -216,10 +217,17 @@ var LayoutManager = GObject.registerClass({
|
|||||||
this.uiGroup = new UiActor({ name: 'uiGroup' });
|
this.uiGroup = new UiActor({ name: 'uiGroup' });
|
||||||
this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
|
this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
|
||||||
|
|
||||||
|
global.stage.add_child(this.uiGroup);
|
||||||
|
|
||||||
global.stage.remove_actor(global.window_group);
|
global.stage.remove_actor(global.window_group);
|
||||||
this.uiGroup.add_actor(global.window_group);
|
this.uiGroup.add_actor(global.window_group);
|
||||||
|
|
||||||
global.stage.add_child(this.uiGroup);
|
// Using addChrome() to add actors to uiGroup will position actors
|
||||||
|
// underneath the top_window_group.
|
||||||
|
// To insert actors at the top of uiGroup, we use addTopChrome() or
|
||||||
|
// add the actor directly using uiGroup.add_actor().
|
||||||
|
global.stage.remove_actor(global.top_window_group);
|
||||||
|
this.uiGroup.add_actor(global.top_window_group);
|
||||||
|
|
||||||
this.overviewGroup = new St.Widget({ name: 'overviewGroup',
|
this.overviewGroup = new St.Widget({ name: 'overviewGroup',
|
||||||
visible: false,
|
visible: false,
|
||||||
@@ -231,7 +239,7 @@ var LayoutManager = GObject.registerClass({
|
|||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
layout_manager: new Clutter.BinLayout(),
|
layout_manager: new Clutter.BinLayout(),
|
||||||
});
|
});
|
||||||
this.addChrome(this.screenShieldGroup);
|
this.addTopChrome(this.screenShieldGroup);
|
||||||
|
|
||||||
this.panelBox = new St.BoxLayout({ name: 'panelBox',
|
this.panelBox = new St.BoxLayout({ name: 'panelBox',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
@@ -247,7 +255,7 @@ var LayoutManager = GObject.registerClass({
|
|||||||
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
this.addChrome(this.keyboardBox);
|
this.addTopChrome(this.keyboardBox);
|
||||||
this._keyboardHeightNotifyId = 0;
|
this._keyboardHeightNotifyId = 0;
|
||||||
|
|
||||||
// A dummy actor that tracks the mouse or text cursor, based on the
|
// A dummy actor that tracks the mouse or text cursor, based on the
|
||||||
@@ -255,9 +263,6 @@ var LayoutManager = GObject.registerClass({
|
|||||||
this.dummyCursor = new St.Widget({ width: 0, height: 0, opacity: 0 });
|
this.dummyCursor = new St.Widget({ width: 0, height: 0, opacity: 0 });
|
||||||
this.uiGroup.add_actor(this.dummyCursor);
|
this.uiGroup.add_actor(this.dummyCursor);
|
||||||
|
|
||||||
global.stage.remove_actor(global.top_window_group);
|
|
||||||
this.uiGroup.add_actor(global.top_window_group);
|
|
||||||
|
|
||||||
let feedbackGroup = Meta.get_feedback_group_for_display(global.display);
|
let feedbackGroup = Meta.get_feedback_group_for_display(global.display);
|
||||||
global.stage.remove_actor(feedbackGroup);
|
global.stage.remove_actor(feedbackGroup);
|
||||||
this.uiGroup.add_actor(feedbackGroup);
|
this.uiGroup.add_actor(feedbackGroup);
|
||||||
@@ -802,6 +807,16 @@ var LayoutManager = GObject.registerClass({
|
|||||||
this._trackActor(actor, params);
|
this._trackActor(actor, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// addTopChrome:
|
||||||
|
// @actor: an actor to add to the chrome
|
||||||
|
// @params: (optional) additional params
|
||||||
|
//
|
||||||
|
// Like addChrome(), but adds @actor above all windows, including popups.
|
||||||
|
addTopChrome(actor, params) {
|
||||||
|
this.uiGroup.add_actor(actor);
|
||||||
|
this._trackActor(actor, params);
|
||||||
|
}
|
||||||
|
|
||||||
// trackChrome:
|
// trackChrome:
|
||||||
// @actor: a descendant of the chrome to begin tracking
|
// @actor: a descendant of the chrome to begin tracking
|
||||||
// @params: parameters describing how to track @actor
|
// @params: parameters describing how to track @actor
|
||||||
@@ -1058,8 +1073,7 @@ var LayoutManager = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Meta.is_wayland_compositor())
|
global.set_stage_input_region(rects);
|
||||||
global.set_stage_input_region(rects);
|
|
||||||
this._isPopupWindowVisible = isPopupMenuVisible;
|
this._isPopupWindowVisible = isPopupMenuVisible;
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
@@ -1104,14 +1118,15 @@ var HotCorner = class HotCorner {
|
|||||||
Shell.ActionMode.OVERVIEW);
|
Shell.ActionMode.OVERVIEW);
|
||||||
this._pressureBarrier.connect('trigger', this._toggleOverview.bind(this));
|
this._pressureBarrier.connect('trigger', this._toggleOverview.bind(this));
|
||||||
|
|
||||||
// Cache the three ripples instead of dynamically creating and destroying them.
|
let px = 0.0;
|
||||||
this._ripple1 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
|
let py = 0.0;
|
||||||
this._ripple2 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
|
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||||
this._ripple3 = new St.BoxLayout({ style_class: 'ripple-box', opacity: 0, visible: false });
|
px = 1.0;
|
||||||
|
py = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
layoutManager.uiGroup.add_actor(this._ripple1);
|
this._ripples = new Ripples.Ripples(px, py, 'ripple-box');
|
||||||
layoutManager.uiGroup.add_actor(this._ripple2);
|
this._ripples.addTo(layoutManager.uiGroup);
|
||||||
layoutManager.uiGroup.add_actor(this._ripple3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setBarrierSize(size) {
|
setBarrierSize(size) {
|
||||||
@@ -1193,53 +1208,12 @@ var HotCorner = class HotCorner {
|
|||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
|
|
||||||
// We draw a ripple by using a source image and animating it scaling
|
|
||||||
// outwards and fading away. We want the ripples to move linearly
|
|
||||||
// or it looks unrealistic, but if the opacity of the ripple goes
|
|
||||||
// linearly to zero it fades away too quickly, so we use Tweener's
|
|
||||||
// 'onUpdate' to give a non-linear curve to the fade-away and make
|
|
||||||
// it more visible in the middle section.
|
|
||||||
|
|
||||||
ripple._opacity = startOpacity;
|
|
||||||
|
|
||||||
if (ripple.get_text_direction() == Clutter.TextDirection.RTL)
|
|
||||||
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
|
||||||
|
|
||||||
ripple.visible = true;
|
|
||||||
ripple.opacity = 255 * Math.sqrt(startOpacity);
|
|
||||||
ripple.scale_x = ripple.scale_y = startScale;
|
|
||||||
|
|
||||||
ripple.x = this._x;
|
|
||||||
ripple.y = this._y;
|
|
||||||
|
|
||||||
Tweener.addTween(ripple, { _opacity: 0,
|
|
||||||
scale_x: finalScale,
|
|
||||||
scale_y: finalScale,
|
|
||||||
delay: delay,
|
|
||||||
time: time,
|
|
||||||
transition: 'linear',
|
|
||||||
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
|
|
||||||
onComplete() { ripple.visible = false; } });
|
|
||||||
}
|
|
||||||
|
|
||||||
_rippleAnimation() {
|
|
||||||
// Show three concentric ripples expanding outwards; the exact
|
|
||||||
// parameters were found by trial and error, so don't look
|
|
||||||
// for them to make perfect sense mathematically
|
|
||||||
|
|
||||||
// delay time scale opacity => scale
|
|
||||||
this._animRipple(this._ripple1, 0.0, 0.83, 0.25, 1.0, 1.5);
|
|
||||||
this._animRipple(this._ripple2, 0.05, 1.0, 0.0, 0.7, 1.25);
|
|
||||||
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
_toggleOverview() {
|
_toggleOverview() {
|
||||||
if (this._monitor.inFullscreen && !Main.overview.visible)
|
if (this._monitor.inFullscreen && !Main.overview.visible)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Main.overview.shouldToggleByCornerOrButton()) {
|
if (Main.overview.shouldToggleByCornerOrButton()) {
|
||||||
this._rippleAnimation();
|
this._ripples.playAnimation(this._x, this._y);
|
||||||
Main.overview.toggle();
|
Main.overview.toggle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
24
js/ui/locatePointer.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const { Clutter, Gio, GLib, St } = imports.gi;
|
||||||
|
const Ripples = imports.ui.ripples;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const LOCATE_POINTER_KEY = "locate-pointer";
|
||||||
|
const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface"
|
||||||
|
|
||||||
|
var locatePointer = class {
|
||||||
|
constructor() {
|
||||||
|
this._settings = new Gio.Settings({schema_id: LOCATE_POINTER_SCHEMA});
|
||||||
|
this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location');
|
||||||
|
this._ripples.addTo(Main.uiGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
if (!this._settings.get_boolean("locate-pointer"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let [x, y, mods] = global.get_pointer();
|
||||||
|
this._ripples.playAnimation(x, y);
|
||||||
|
}
|
||||||
|
};
|
@@ -1272,7 +1272,7 @@ var ZoomRegion = class ZoomRegion {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* getContrast:
|
* getContrast:
|
||||||
* Retreive the contrast of the magnified view.
|
* Retrieve the contrast of the magnified view.
|
||||||
* @return Object containing the contrast for the red, green,
|
* @return Object containing the contrast for the red, green,
|
||||||
* and blue channels.
|
* and blue channels.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
const AccessDialog = imports.ui.accessDialog;
|
const AccessDialog = imports.ui.accessDialog;
|
||||||
@@ -37,9 +37,12 @@ const WindowManager = imports.ui.windowManager;
|
|||||||
const Magnifier = imports.ui.magnifier;
|
const Magnifier = imports.ui.magnifier;
|
||||||
const XdndHandler = imports.ui.xdndHandler;
|
const XdndHandler = imports.ui.xdndHandler;
|
||||||
const KbdA11yDialog = imports.ui.kbdA11yDialog;
|
const KbdA11yDialog = imports.ui.kbdA11yDialog;
|
||||||
|
const LocatePointer = imports.ui.locatePointer;
|
||||||
|
const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
|
||||||
|
|
||||||
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
|
||||||
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
|
||||||
|
const LOG_DOMAIN = 'GNOME Shell';
|
||||||
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
|
||||||
|
|
||||||
var componentManager = null;
|
var componentManager = null;
|
||||||
@@ -74,12 +77,14 @@ var layoutManager = null;
|
|||||||
var kbdA11yDialog = null;
|
var kbdA11yDialog = null;
|
||||||
var inputMethod = null;
|
var inputMethod = null;
|
||||||
var introspectService = null;
|
var introspectService = null;
|
||||||
|
var locatePointer = null;
|
||||||
let _startDate;
|
let _startDate;
|
||||||
let _defaultCssStylesheet = null;
|
let _defaultCssStylesheet = null;
|
||||||
let _cssStylesheet = null;
|
let _cssStylesheet = null;
|
||||||
let _a11ySettings = null;
|
let _a11ySettings = null;
|
||||||
let _themeResource = null;
|
let _themeResource = null;
|
||||||
let _oskResource = null;
|
let _oskResource = null;
|
||||||
|
let pointerA11yTimeout = null;
|
||||||
|
|
||||||
function _sessionUpdated() {
|
function _sessionUpdated() {
|
||||||
if (sessionMode.isPrimary)
|
if (sessionMode.isPrimary)
|
||||||
@@ -92,6 +97,8 @@ function _sessionUpdated() {
|
|||||||
wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
|
wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW);
|
Shell.ActionMode.OVERVIEW);
|
||||||
|
|
||||||
|
wm.allowKeybinding('locate-pointer-key', Shell.ActionMode.ALL);
|
||||||
|
|
||||||
wm.setCustomKeybindingHandler('panel-run-dialog',
|
wm.setCustomKeybindingHandler('panel-run-dialog',
|
||||||
Shell.ActionMode.NORMAL |
|
Shell.ActionMode.NORMAL |
|
||||||
Shell.ActionMode.OVERVIEW,
|
Shell.ActionMode.OVERVIEW,
|
||||||
@@ -165,6 +172,8 @@ function _initializeUI() {
|
|||||||
kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog();
|
kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog();
|
||||||
wm = new WindowManager.WindowManager();
|
wm = new WindowManager.WindowManager();
|
||||||
magnifier = new Magnifier.Magnifier();
|
magnifier = new Magnifier.Magnifier();
|
||||||
|
locatePointer = new LocatePointer.locatePointer();
|
||||||
|
|
||||||
if (LoginManager.canLock())
|
if (LoginManager.canLock())
|
||||||
screenShield = new ScreenShield.ScreenShield();
|
screenShield = new ScreenShield.ScreenShield();
|
||||||
|
|
||||||
@@ -183,6 +192,8 @@ function _initializeUI() {
|
|||||||
layoutManager.init();
|
layoutManager.init();
|
||||||
overview.init();
|
overview.init();
|
||||||
|
|
||||||
|
pointerA11yTimeout = new PointerA11yTimeout.PointerA11yTimeout();
|
||||||
|
|
||||||
_a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
_a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
||||||
|
|
||||||
global.display.connect('overlay-key', () => {
|
global.display.connect('overlay-key', () => {
|
||||||
@@ -190,6 +201,10 @@ function _initializeUI() {
|
|||||||
overview.toggle();
|
overview.toggle();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
global.connect('locate-pointer', () => {
|
||||||
|
locatePointer.show();
|
||||||
|
});
|
||||||
|
|
||||||
global.display.connect('show-restart-message', (display, message) => {
|
global.display.connect('show-restart-message', (display, message) => {
|
||||||
showRestartMessage(message);
|
showRestartMessage(message);
|
||||||
return true;
|
return true;
|
||||||
@@ -229,10 +244,14 @@ function _initializeUI() {
|
|||||||
}
|
}
|
||||||
if (sessionMode.currentMode != 'gdm' &&
|
if (sessionMode.currentMode != 'gdm' &&
|
||||||
sessionMode.currentMode != 'initial-setup') {
|
sessionMode.currentMode != 'initial-setup') {
|
||||||
Shell.Global.log_structured('GNOME Shell started at ' + _startDate,
|
GLib.log_structured(LOG_DOMAIN, GLib.LogLevelFlags.LEVEL_MESSAGE, {
|
||||||
['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]);
|
'MESSAGE': `GNOME Shell started at ${_startDate}`,
|
||||||
|
'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoginManager.registerSessionWithGDM();
|
||||||
|
|
||||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||||
if (perfModuleName) {
|
if (perfModuleName) {
|
||||||
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
|
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
|
||||||
@@ -636,7 +655,7 @@ function _queueBeforeRedraw(workId) {
|
|||||||
* initialization as well, under the assumption that new actors
|
* initialization as well, under the assumption that new actors
|
||||||
* will need it.
|
* will need it.
|
||||||
*
|
*
|
||||||
* Returns: A string work identifer
|
* Returns: A string work identifier
|
||||||
*/
|
*/
|
||||||
function initializeDeferredWork(actor, callback, props) {
|
function initializeDeferredWork(actor, callback, props) {
|
||||||
// Turn into a string so we can use as an object property
|
// Turn into a string so we can use as an object property
|
||||||
@@ -689,12 +708,13 @@ function queueDeferredWork(workId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var RestartMessage = class extends ModalDialog.ModalDialog {
|
var RestartMessage = GObject.registerClass(
|
||||||
constructor(message) {
|
class RestartMessage extends ModalDialog.ModalDialog {
|
||||||
super({ shellReactive: true,
|
_init(message) {
|
||||||
styleClass: 'restart-message headline',
|
super._init({ shellReactive: true,
|
||||||
shouldFadeIn: false,
|
styleClass: 'restart-message headline',
|
||||||
destroyOnClose: true });
|
shouldFadeIn: false,
|
||||||
|
destroyOnClose: true });
|
||||||
|
|
||||||
let label = new St.Label({ text: message });
|
let label = new St.Label({ text: message });
|
||||||
|
|
||||||
@@ -704,7 +724,7 @@ var RestartMessage = class extends ModalDialog.ModalDialog {
|
|||||||
y_align: St.Align.MIDDLE });
|
y_align: St.Align.MIDDLE });
|
||||||
this.buttonLayout.hide();
|
this.buttonLayout.hide();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
function showRestartMessage(message) {
|
function showRestartMessage(message) {
|
||||||
let restartMessage = new RestartMessage(message);
|
let restartMessage = new RestartMessage(message);
|
||||||
|
@@ -584,7 +584,6 @@ class SourceActor extends St.Widget {
|
|||||||
this._source = source;
|
this._source = source;
|
||||||
this._size = size;
|
this._size = size;
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
this.connect('destroy', () => {
|
this.connect('destroy', () => {
|
||||||
this._source.disconnect(this._iconUpdatedId);
|
this._source.disconnect(this._iconUpdatedId);
|
||||||
this._actorDestroyed = true;
|
this._actorDestroyed = true;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Atk, Clutter, Shell, St } = imports.gi;
|
const { Atk, Clutter, GObject, Shell, St } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const Dialog = imports.ui.dialog;
|
const Dialog = imports.ui.dialog;
|
||||||
@@ -21,8 +21,20 @@ var State = {
|
|||||||
FADED_OUT: 4
|
FADED_OUT: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
var ModalDialog = class {
|
var ModalDialog = GObject.registerClass({
|
||||||
constructor(params) {
|
Properties: { 'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
|
||||||
|
GObject.ParamFlags.READABLE,
|
||||||
|
Math.min(...Object.values(State)),
|
||||||
|
Math.max(...Object.values(State)),
|
||||||
|
State.CLOSED) },
|
||||||
|
Signals: { 'opened': {}, 'closed': {} }
|
||||||
|
}, class ModalDialog extends St.Widget {
|
||||||
|
_init(params) {
|
||||||
|
super._init({ visible: false,
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
accessible_role: Atk.Role.DIALOG });
|
||||||
|
|
||||||
params = Params.parse(params, { shellReactive: false,
|
params = Params.parse(params, { shellReactive: false,
|
||||||
styleClass: null,
|
styleClass: null,
|
||||||
actionMode: Shell.ActionMode.SYSTEM_MODAL,
|
actionMode: Shell.ActionMode.SYSTEM_MODAL,
|
||||||
@@ -30,7 +42,7 @@ var ModalDialog = class {
|
|||||||
shouldFadeOut: true,
|
shouldFadeOut: true,
|
||||||
destroyOnClose: true });
|
destroyOnClose: true });
|
||||||
|
|
||||||
this.state = State.CLOSED;
|
this._state = State.CLOSED;
|
||||||
this._hasModal = false;
|
this._hasModal = false;
|
||||||
this._actionMode = params.actionMode;
|
this._actionMode = params.actionMode;
|
||||||
this._shellReactive = params.shellReactive;
|
this._shellReactive = params.shellReactive;
|
||||||
@@ -38,31 +50,25 @@ var ModalDialog = class {
|
|||||||
this._shouldFadeOut = params.shouldFadeOut;
|
this._shouldFadeOut = params.shouldFadeOut;
|
||||||
this._destroyOnClose = params.destroyOnClose;
|
this._destroyOnClose = params.destroyOnClose;
|
||||||
|
|
||||||
this._group = new St.Widget({ visible: false,
|
Main.layoutManager.modalDialogGroup.add_actor(this);
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
accessible_role: Atk.Role.DIALOG });
|
|
||||||
Main.layoutManager.modalDialogGroup.add_actor(this._group);
|
|
||||||
|
|
||||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||||
coordinate: Clutter.BindCoordinate.ALL });
|
coordinate: Clutter.BindCoordinate.ALL });
|
||||||
this._group.add_constraint(constraint);
|
this.add_constraint(constraint);
|
||||||
|
|
||||||
this._group.connect('destroy', this._onGroupDestroy.bind(this));
|
|
||||||
|
|
||||||
this.backgroundStack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
this.backgroundStack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||||
this._backgroundBin = new St.Bin({ child: this.backgroundStack,
|
this._backgroundBin = new St.Bin({ child: this.backgroundStack,
|
||||||
x_fill: true, y_fill: true });
|
x_fill: true, y_fill: true });
|
||||||
this._monitorConstraint = new Layout.MonitorConstraint();
|
this._monitorConstraint = new Layout.MonitorConstraint();
|
||||||
this._backgroundBin.add_constraint(this._monitorConstraint);
|
this._backgroundBin.add_constraint(this._monitorConstraint);
|
||||||
this._group.add_actor(this._backgroundBin);
|
this.add_actor(this._backgroundBin);
|
||||||
|
|
||||||
this.dialogLayout = new Dialog.Dialog(this.backgroundStack, params.styleClass);
|
this.dialogLayout = new Dialog.Dialog(this.backgroundStack, params.styleClass);
|
||||||
this.contentLayout = this.dialogLayout.contentLayout;
|
this.contentLayout = this.dialogLayout.contentLayout;
|
||||||
this.buttonLayout = this.dialogLayout.buttonLayout;
|
this.buttonLayout = this.dialogLayout.buttonLayout;
|
||||||
|
|
||||||
if (!this._shellReactive) {
|
if (!this._shellReactive) {
|
||||||
this._lightbox = new Lightbox.Lightbox(this._group,
|
this._lightbox = new Lightbox.Lightbox(this,
|
||||||
{ inhibitEvents: true,
|
{ inhibitEvents: true,
|
||||||
radialEffect: true });
|
radialEffect: true });
|
||||||
this._lightbox.highlight(this._backgroundBin);
|
this._lightbox.highlight(this._backgroundBin);
|
||||||
@@ -77,8 +83,16 @@ var ModalDialog = class {
|
|||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
get state() {
|
||||||
this._group.destroy();
|
return this._state;
|
||||||
|
}
|
||||||
|
|
||||||
|
_setState(state) {
|
||||||
|
if (this._state == state)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._state = state;
|
||||||
|
this.notify('state');
|
||||||
}
|
}
|
||||||
|
|
||||||
clearButtons() {
|
clearButtons() {
|
||||||
@@ -96,29 +110,25 @@ var ModalDialog = class {
|
|||||||
return this.dialogLayout.addButton(buttonInfo);
|
return this.dialogLayout.addButton(buttonInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onGroupDestroy() {
|
|
||||||
this.emit('destroy');
|
|
||||||
}
|
|
||||||
|
|
||||||
_fadeOpen(onPrimary) {
|
_fadeOpen(onPrimary) {
|
||||||
if (onPrimary)
|
if (onPrimary)
|
||||||
this._monitorConstraint.primary = true;
|
this._monitorConstraint.primary = true;
|
||||||
else
|
else
|
||||||
this._monitorConstraint.index = global.display.get_current_monitor();
|
this._monitorConstraint.index = global.display.get_current_monitor();
|
||||||
|
|
||||||
this.state = State.OPENING;
|
this._setState(State.OPENING);
|
||||||
|
|
||||||
this.dialogLayout.opacity = 255;
|
this.dialogLayout.opacity = 255;
|
||||||
if (this._lightbox)
|
if (this._lightbox)
|
||||||
this._lightbox.show();
|
this._lightbox.show();
|
||||||
this._group.opacity = 0;
|
this.opacity = 0;
|
||||||
this._group.show();
|
this.show();
|
||||||
Tweener.addTween(this._group,
|
Tweener.addTween(this,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
time: this._shouldFadeIn ? OPEN_AND_CLOSE_TIME : 0,
|
time: this._shouldFadeIn ? OPEN_AND_CLOSE_TIME : 0,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
this.state = State.OPENED;
|
this._setState(State.OPENED);
|
||||||
this.emit('opened');
|
this.emit('opened');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -148,8 +158,8 @@ var ModalDialog = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_closeComplete() {
|
_closeComplete() {
|
||||||
this.state = State.CLOSED;
|
this._setState(State.CLOSED);
|
||||||
this._group.hide();
|
this.hide();
|
||||||
this.emit('closed');
|
this.emit('closed');
|
||||||
|
|
||||||
if (this._destroyOnClose)
|
if (this._destroyOnClose)
|
||||||
@@ -160,12 +170,12 @@ var ModalDialog = class {
|
|||||||
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.state = State.CLOSING;
|
this._setState(State.CLOSING);
|
||||||
this.popModal(timestamp);
|
this.popModal(timestamp);
|
||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
|
|
||||||
if (this._shouldFadeOut)
|
if (this._shouldFadeOut)
|
||||||
Tweener.addTween(this._group,
|
Tweener.addTween(this,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: OPEN_AND_CLOSE_TIME,
|
time: OPEN_AND_CLOSE_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
@@ -183,11 +193,11 @@ var ModalDialog = class {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
let focus = global.stage.key_focus;
|
let focus = global.stage.key_focus;
|
||||||
if (focus && this._group.contains(focus))
|
if (focus && this.contains(focus))
|
||||||
this._savedKeyFocus = focus;
|
this._savedKeyFocus = focus;
|
||||||
else
|
else
|
||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
Main.popModal(this._group, timestamp);
|
Main.popModal(this, timestamp);
|
||||||
this._hasModal = false;
|
this._hasModal = false;
|
||||||
|
|
||||||
if (!this._shellReactive)
|
if (!this._shellReactive)
|
||||||
@@ -201,7 +211,7 @@ var ModalDialog = class {
|
|||||||
let params = { actionMode: this._actionMode };
|
let params = { actionMode: this._actionMode };
|
||||||
if (timestamp)
|
if (timestamp)
|
||||||
params['timestamp'] = timestamp;
|
params['timestamp'] = timestamp;
|
||||||
if (!Main.pushModal(this._group, params))
|
if (!Main.pushModal(this, params))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
this._hasModal = true;
|
this._hasModal = true;
|
||||||
@@ -224,10 +234,10 @@ var ModalDialog = class {
|
|||||||
// can be dismissed by a close call.
|
// can be dismissed by a close call.
|
||||||
//
|
//
|
||||||
// The main point of this method is to give some indication to the user
|
// The main point of this method is to give some indication to the user
|
||||||
// that the dialog reponse has been acknowledged but will take a few
|
// that the dialog response has been acknowledged but will take a few
|
||||||
// moments before being processed.
|
// moments before being processed.
|
||||||
// e.g., if a user clicked "Log Out" then the dialog should go away
|
// e.g., if a user clicked "Log Out" then the dialog should go away
|
||||||
// imediately, but the lightbox should remain until the logout is
|
// immediately, but the lightbox should remain until the logout is
|
||||||
// complete.
|
// complete.
|
||||||
_fadeOutDialog(timestamp) {
|
_fadeOutDialog(timestamp) {
|
||||||
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
||||||
@@ -242,9 +252,8 @@ var ModalDialog = class {
|
|||||||
time: FADE_OUT_DIALOG_TIME,
|
time: FADE_OUT_DIALOG_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
this.state = State.FADED_OUT;
|
this._setState(State.FADED_OUT);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ModalDialog.prototype);
|
|
||||||
|
@@ -122,7 +122,7 @@ var SlidingControl = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_getSlide() {
|
_getSlide() {
|
||||||
throw new Error('getSlide() must be overridden');
|
throw new GObject.NotImplementedError(`_getSlide in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateSlide() {
|
_updateSlide() {
|
||||||
@@ -369,17 +369,15 @@ class DashSpacer extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vfunc_get_preferred_width(forHeight) {
|
vfunc_get_preferred_width(forHeight) {
|
||||||
let box = this.get_allocation_box();
|
if (this._bindConstraint)
|
||||||
let minWidth = super.vfunc_get_preferred_width(forHeight)[0];
|
return this._bindConstraint.source.get_preferred_width(forHeight);
|
||||||
let natWidth = box.x2 - box.x1;
|
return super.vfunc_get_preferred_width(forHeight);
|
||||||
return [minWidth, natWidth];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vfunc_get_preferred_height(forWidth) {
|
vfunc_get_preferred_height(forWidth) {
|
||||||
let box = this.get_allocation_box();
|
if (this._bindConstraint)
|
||||||
let minHeight = super.vfunc_get_preferred_height(forWidth)[0];
|
return this._bindConstraint.source.get_preferred_height(forWidth);
|
||||||
let natHeight = box.y2 - box.y1;
|
return super.vfunc_get_preferred_height(forWidth);
|
||||||
return [minHeight, natHeight];
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -374,12 +374,12 @@ var PadDiagram = GObject.registerClass({
|
|||||||
svgData += this._cssString();
|
svgData += this._cssString();
|
||||||
svgData += this._wrappingSvgFooter();
|
svgData += this._wrappingSvgFooter();
|
||||||
|
|
||||||
let handle = new Rsvg.Handle();
|
let istream = new Gio.MemoryInputStream();
|
||||||
handle.set_base_uri(GLib.path_get_dirname(this._imagePath));
|
istream.add_bytes(new GLib.Bytes(svgData));
|
||||||
handle.write(svgData);
|
|
||||||
handle.close();
|
|
||||||
|
|
||||||
return handle;
|
return Rsvg.Handle.new_from_stream_sync(istream,
|
||||||
|
Gio.File.new_for_path(this._imagePath),
|
||||||
|
0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateDiagramScale() {
|
_updateDiagramScale() {
|
||||||
|
106
js/ui/panel.js
@@ -75,6 +75,9 @@ class AppMenu extends PopupMenu.PopupMenu {
|
|||||||
|
|
||||||
this._windowsChangedId = 0;
|
this._windowsChangedId = 0;
|
||||||
|
|
||||||
|
/* Translators: This is the heading of a list of open windows */
|
||||||
|
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(_("Open Windows")));
|
||||||
|
|
||||||
this._windowSection = new PopupMenu.PopupMenuSection();
|
this._windowSection = new PopupMenu.PopupMenuSection();
|
||||||
this.addMenuItem(this._windowSection);
|
this.addMenuItem(this._windowSection);
|
||||||
|
|
||||||
@@ -105,6 +108,8 @@ class AppMenu extends PopupMenu.PopupMenu {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
|
||||||
this.addAction(_("Quit"), () => {
|
this.addAction(_("Quit"), () => {
|
||||||
this._app.request_quit();
|
this._app.request_quit();
|
||||||
});
|
});
|
||||||
@@ -117,7 +122,7 @@ class AppMenu extends PopupMenu.PopupMenu {
|
|||||||
|
|
||||||
_updateDetailsVisibility() {
|
_updateDetailsVisibility() {
|
||||||
let sw = this._appSystem.lookup_app('org.gnome.Software.desktop');
|
let sw = this._appSystem.lookup_app('org.gnome.Software.desktop');
|
||||||
this._detailsItem.actor.visible = (sw != null);
|
this._detailsItem.visible = (sw != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
isEmpty() {
|
isEmpty() {
|
||||||
@@ -155,7 +160,7 @@ class AppMenu extends PopupMenu.PopupMenu {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this._newWindowItem.actor.visible =
|
this._newWindowItem.visible =
|
||||||
app && app.can_open_new_window() && !actions.includes('new-window');
|
app && app.can_open_new_window() && !actions.includes('new-window');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,13 +177,6 @@ class AppMenu extends PopupMenu.PopupMenu {
|
|||||||
Main.activateWindow(window, event.get_time());
|
Main.activateWindow(window, event.get_time());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add separator between windows of the current desktop and other windows.
|
|
||||||
let workspaceManager = global.workspace_manager;
|
|
||||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
|
||||||
let pos = windows.findIndex(w => w.get_workspace() != activeWorkspace);
|
|
||||||
if (pos >= 0)
|
|
||||||
this._windowSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(), pos);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,7 +194,7 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
_init(panel) {
|
_init(panel) {
|
||||||
super._init(0.0, null, true);
|
super._init(0.0, null, true);
|
||||||
|
|
||||||
this.actor.accessible_role = Atk.Role.MENU;
|
this.accessible_role = Atk.Role.MENU;
|
||||||
|
|
||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
@@ -206,10 +204,10 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
|
|
||||||
let bin = new St.Bin({ name: 'appMenu' });
|
let bin = new St.Bin({ name: 'appMenu' });
|
||||||
bin.connect('style-changed', this._onStyleChanged.bind(this));
|
bin.connect('style-changed', this._onStyleChanged.bind(this));
|
||||||
this.actor.add_actor(bin);
|
this.add_actor(bin);
|
||||||
|
|
||||||
this.actor.bind_property("reactive", this.actor, "can-focus", 0);
|
this.bind_property("reactive", this, "can-focus", 0);
|
||||||
this.actor.reactive = false;
|
this.reactive = false;
|
||||||
|
|
||||||
this._container = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
this._container = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||||
bin.set_child(this._container);
|
bin.set_child(this._container);
|
||||||
@@ -265,10 +263,10 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._visible = true;
|
this._visible = true;
|
||||||
this.actor.reactive = true;
|
this.reactive = true;
|
||||||
this.show();
|
this.show();
|
||||||
Tweener.removeTweens(this.actor);
|
Tweener.removeTweens(this);
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
time: Overview.ANIMATION_TIME,
|
time: Overview.ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad' });
|
transition: 'easeOutQuad' });
|
||||||
@@ -279,9 +277,9 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._visible = false;
|
this._visible = false;
|
||||||
this.actor.reactive = false;
|
this.reactive = false;
|
||||||
Tweener.removeTweens(this.actor);
|
Tweener.removeTweens(this);
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: Overview.ANIMATION_TIME,
|
time: Overview.ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
@@ -404,7 +402,7 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
if (this._targetApp) {
|
if (this._targetApp) {
|
||||||
this._busyNotifyId = this._targetApp.connect('notify::busy', this._sync.bind(this));
|
this._busyNotifyId = this._targetApp.connect('notify::busy', this._sync.bind(this));
|
||||||
this._label.set_text(this._targetApp.get_name());
|
this._label.set_text(this._targetApp.get_name());
|
||||||
this.actor.set_accessible_name(this._targetApp.get_name());
|
this.set_accessible_name(this._targetApp.get_name());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -422,7 +420,7 @@ var AppMenuButton = GObject.registerClass({
|
|||||||
else
|
else
|
||||||
this.stopAnimation();
|
this.stopAnimation();
|
||||||
|
|
||||||
this.actor.reactive = (visible && !isBusy);
|
this.reactive = (visible && !isBusy);
|
||||||
|
|
||||||
this._syncIcon();
|
this._syncIcon();
|
||||||
this.menu.setApp(this._targetApp);
|
this.menu.setApp(this._targetApp);
|
||||||
@@ -461,28 +459,28 @@ var ActivitiesButton = GObject.registerClass(
|
|||||||
class ActivitiesButton extends PanelMenu.Button {
|
class ActivitiesButton extends PanelMenu.Button {
|
||||||
_init() {
|
_init() {
|
||||||
super._init(0.0, null, true);
|
super._init(0.0, null, true);
|
||||||
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
this.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||||
|
|
||||||
this.actor.name = 'panelActivities';
|
this.name = 'panelActivities';
|
||||||
|
|
||||||
/* Translators: If there is no suitable word for "Activities"
|
/* Translators: If there is no suitable word for "Activities"
|
||||||
in your language, you can use the word for "Overview". */
|
in your language, you can use the word for "Overview". */
|
||||||
this._label = new St.Label({ text: _("Activities"),
|
this._label = new St.Label({ text: _("Activities"),
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this.actor.add_actor(this._label);
|
this.add_actor(this._label);
|
||||||
|
|
||||||
this.actor.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
|
|
||||||
this.actor.connect('captured-event', this._onCapturedEvent.bind(this));
|
this.connect('captured-event', this._onCapturedEvent.bind(this));
|
||||||
this.actor.connect_after('key-release-event', this._onKeyRelease.bind(this));
|
this.connect_after('key-release-event', this._onKeyRelease.bind(this));
|
||||||
|
|
||||||
Main.overview.connect('showing', () => {
|
Main.overview.connect('showing', () => {
|
||||||
this.actor.add_style_pseudo_class('overview');
|
this.add_style_pseudo_class('overview');
|
||||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
this.add_accessible_state (Atk.StateType.CHECKED);
|
||||||
});
|
});
|
||||||
Main.overview.connect('hiding', () => {
|
Main.overview.connect('hiding', () => {
|
||||||
this.actor.remove_style_pseudo_class('overview');
|
this.remove_style_pseudo_class('overview');
|
||||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
this.remove_accessible_state (Atk.StateType.CHECKED);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._xdndTimeOut = 0;
|
this._xdndTimeOut = 0;
|
||||||
@@ -535,7 +533,7 @@ class ActivitiesButton extends PanelMenu.Button {
|
|||||||
let [x, y, mask] = global.get_pointer();
|
let [x, y, mask] = global.get_pointer();
|
||||||
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||||
|
|
||||||
if (pickedActor == this.actor && Main.overview.shouldToggleByCornerOrButton())
|
if (pickedActor == this && Main.overview.shouldToggleByCornerOrButton())
|
||||||
Main.overview.toggle();
|
Main.overview.toggle();
|
||||||
|
|
||||||
Mainloop.source_remove(this._xdndTimeOut);
|
Mainloop.source_remove(this._xdndTimeOut);
|
||||||
@@ -749,7 +747,7 @@ class AggregateMenu extends PanelMenu.Button {
|
|||||||
this.menu.box.set_layout_manager(menuLayout);
|
this.menu.box.set_layout_manager(menuLayout);
|
||||||
|
|
||||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||||
this.actor.add_child(this._indicators);
|
this.add_child(this._indicators);
|
||||||
|
|
||||||
if (Config.HAVE_NETWORKMANAGER) {
|
if (Config.HAVE_NETWORKMANAGER) {
|
||||||
this._network = new imports.ui.status.network.NMApplet();
|
this._network = new imports.ui.status.network.NMApplet();
|
||||||
@@ -819,6 +817,7 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
|
|||||||
'dateMenu': imports.ui.dateMenu.DateMenuButton,
|
'dateMenu': imports.ui.dateMenu.DateMenuButton,
|
||||||
'a11y': imports.ui.status.accessibility.ATIndicator,
|
'a11y': imports.ui.status.accessibility.ATIndicator,
|
||||||
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||||
|
'dwellClick': imports.ui.status.dwellClick.DwellClickIndicator,
|
||||||
};
|
};
|
||||||
|
|
||||||
var Panel = GObject.registerClass(
|
var Panel = GObject.registerClass(
|
||||||
@@ -827,9 +826,6 @@ class Panel extends St.Widget {
|
|||||||
super._init({ name: 'panel',
|
super._init({ name: 'panel',
|
||||||
reactive: true });
|
reactive: true });
|
||||||
|
|
||||||
// For compatibility with extensions that still use the
|
|
||||||
// this.actor field
|
|
||||||
this.actor = this;
|
|
||||||
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||||
|
|
||||||
this._sessionStyle = null;
|
this._sessionStyle = null;
|
||||||
@@ -882,7 +878,7 @@ class Panel extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vfunc_allocate(box, flags) {
|
vfunc_allocate(box, flags) {
|
||||||
super.vfunc_allocate(box, flags);
|
this.set_allocation(box, flags);
|
||||||
|
|
||||||
let allocWidth = box.x2 - box.x1;
|
let allocWidth = box.x2 - box.x1;
|
||||||
let allocHeight = box.y2 - box.y1;
|
let allocHeight = box.y2 - box.y1;
|
||||||
@@ -976,22 +972,11 @@ class Panel extends St.Widget {
|
|||||||
if (isPress && button != 1)
|
if (isPress && button != 1)
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
let focusWindow = global.display.focus_window;
|
|
||||||
if (!focusWindow)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
let dragWindow = focusWindow.is_attached_dialog() ? focusWindow.get_transient_for()
|
|
||||||
: focusWindow;
|
|
||||||
if (!dragWindow)
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
|
||||||
|
|
||||||
let rect = dragWindow.get_frame_rect();
|
|
||||||
let [stageX, stageY] = event.get_coords();
|
let [stageX, stageY] = event.get_coords();
|
||||||
|
|
||||||
let allowDrag = dragWindow.maximized_vertically &&
|
let dragWindow = this._getDraggableWindowForPosition(stageX);
|
||||||
stageX > rect.x && stageX < rect.x + rect.width;
|
|
||||||
|
|
||||||
if (!allowDrag)
|
if (!dragWindow)
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
global.display.begin_grab_op(dragWindow,
|
global.display.begin_grab_op(dragWindow,
|
||||||
@@ -1021,7 +1006,7 @@ class Panel extends St.Widget {
|
|||||||
return; // menu not supported by current session mode
|
return; // menu not supported by current session mode
|
||||||
|
|
||||||
let menu = indicator.menu;
|
let menu = indicator.menu;
|
||||||
if (!indicator.actor.reactive)
|
if (!indicator.reactive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
menu.toggle();
|
menu.toggle();
|
||||||
@@ -1043,7 +1028,7 @@ class Panel extends St.Widget {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
let menu = indicator.menu;
|
let menu = indicator.menu;
|
||||||
if (!indicator.actor.reactive)
|
if (!indicator.reactive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
menu.close();
|
menu.close();
|
||||||
@@ -1201,4 +1186,21 @@ class Panel extends St.Widget {
|
|||||||
Main.messageTray.bannerBlocked = isOpen;
|
Main.messageTray.bannerBlocked = isOpen;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getDraggableWindowForPosition(stageX) {
|
||||||
|
let workspaceManager = global.workspace_manager;
|
||||||
|
let workspace = workspaceManager.get_active_workspace()
|
||||||
|
let allWindowsByStacking = global.display.sort_windows_by_stacking(
|
||||||
|
workspace.list_windows()
|
||||||
|
).reverse();
|
||||||
|
|
||||||
|
return allWindowsByStacking.find(metaWindow => {
|
||||||
|
let rect = metaWindow.get_frame_rect();
|
||||||
|
return metaWindow.is_on_primary_monitor() &&
|
||||||
|
metaWindow.showing_on_its_workspace() &&
|
||||||
|
metaWindow.get_window_type() != Meta.WindowType.DESKTOP &&
|
||||||
|
metaWindow.maximized_vertically &&
|
||||||
|
stageX > rect.x && stageX < rect.x + rect.width
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
@@ -14,12 +14,11 @@ class ButtonBox extends St.Widget {
|
|||||||
|
|
||||||
super._init(params);
|
super._init(params);
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
this._delegate = this;
|
this._delegate = this;
|
||||||
|
|
||||||
this.container = new St.Bin({ y_fill: true,
|
this.container = new St.Bin({ y_fill: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
child: this.actor });
|
child: this });
|
||||||
|
|
||||||
this.connect('style-changed', this._onStyleChanged.bind(this));
|
this.connect('style-changed', this._onStyleChanged.bind(this));
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
@@ -105,9 +104,9 @@ var Button = GObject.registerClass({
|
|||||||
this.connect('notify::visible', this._onVisibilityChanged.bind(this));
|
this.connect('notify::visible', this._onVisibilityChanged.bind(this));
|
||||||
|
|
||||||
if (dontCreateMenu)
|
if (dontCreateMenu)
|
||||||
this.menu = new PopupMenu.PopupDummyMenu(this.actor);
|
this.menu = new PopupMenu.PopupDummyMenu(this);
|
||||||
else
|
else
|
||||||
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
this.setMenu(new PopupMenu.PopupMenu(this, menuAlignment, St.Side.TOP, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
setSensitive(sensitive) {
|
setSensitive(sensitive) {
|
||||||
@@ -145,7 +144,7 @@ var Button = GObject.registerClass({
|
|||||||
if (!this.menu)
|
if (!this.menu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this.actor.visible)
|
if (!this.visible)
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,10 +154,10 @@ var Button = GObject.registerClass({
|
|||||||
|
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
|
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
|
||||||
let group = global.focus_manager.get_group(this.actor);
|
let group = global.focus_manager.get_group(this);
|
||||||
if (group) {
|
if (group) {
|
||||||
let direction = (symbol == Clutter.KEY_Left) ? St.DirectionType.LEFT : St.DirectionType.RIGHT;
|
let direction = (symbol == Clutter.KEY_Left) ? St.DirectionType.LEFT : St.DirectionType.RIGHT;
|
||||||
group.navigate_focus(this.actor, direction, false);
|
group.navigate_focus(this, direction, false);
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -167,9 +166,9 @@ var Button = GObject.registerClass({
|
|||||||
|
|
||||||
_onOpenStateChanged(menu, open) {
|
_onOpenStateChanged(menu, open) {
|
||||||
if (open)
|
if (open)
|
||||||
this.actor.add_style_pseudo_class('active');
|
this.add_style_pseudo_class('active');
|
||||||
else
|
else
|
||||||
this.actor.remove_style_pseudo_class('active');
|
this.remove_style_pseudo_class('active');
|
||||||
|
|
||||||
// Setting the max-height won't do any good if the minimum height of the
|
// Setting the max-height won't do any good if the minimum height of the
|
||||||
// menu is higher then the screen; it's useful if part of the menu is
|
// menu is higher then the screen; it's useful if part of the menu is
|
||||||
|
104
js/ui/pointerA11yTimeout.js
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
const { Clutter, GLib, GObject, Meta, St } = imports.gi;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Cairo = imports.cairo;
|
||||||
|
|
||||||
|
const ANIMATION_STEPS = 36.;
|
||||||
|
|
||||||
|
var PieTimer = GObject.registerClass(
|
||||||
|
class PieTimer extends St.DrawingArea {
|
||||||
|
_init() {
|
||||||
|
this._x = 0;
|
||||||
|
this._y = 0;
|
||||||
|
this._startTime = 0;
|
||||||
|
this._duration = 0;
|
||||||
|
super._init( { style_class: 'pie-timer',
|
||||||
|
visible: false,
|
||||||
|
can_focus: false,
|
||||||
|
reactive: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
vfunc_repaint() {
|
||||||
|
let node = this.get_theme_node();
|
||||||
|
let backgroundColor = node.get_color('-pie-background-color');
|
||||||
|
let borderColor = node.get_color('-pie-border-color');
|
||||||
|
let borderWidth = node.get_length('-pie-border-width');
|
||||||
|
let [width, height] = this.get_surface_size();
|
||||||
|
let radius = Math.min(width / 2, height / 2);
|
||||||
|
|
||||||
|
let currentTime = GLib.get_monotonic_time() / 1000.0;
|
||||||
|
let ellapsed = currentTime - this._startTime;
|
||||||
|
let angle = (ellapsed / this._duration) * 2 * Math.PI;
|
||||||
|
let startAngle = 3 * Math.PI / 2;
|
||||||
|
let endAngle = startAngle + angle;
|
||||||
|
|
||||||
|
let cr = this.get_context();
|
||||||
|
cr.setLineCap(Cairo.LineCap.ROUND);
|
||||||
|
cr.setLineJoin(Cairo.LineJoin.ROUND);
|
||||||
|
cr.translate(width / 2, height / 2);
|
||||||
|
|
||||||
|
cr.moveTo(0, 0);
|
||||||
|
cr.arc(0, 0, radius - borderWidth, startAngle, endAngle);
|
||||||
|
cr.lineTo(0, 0);
|
||||||
|
cr.closePath();
|
||||||
|
|
||||||
|
cr.setLineWidth(0);
|
||||||
|
Clutter.cairo_set_source_color(cr, backgroundColor);
|
||||||
|
cr.fillPreserve();
|
||||||
|
|
||||||
|
cr.setLineWidth(borderWidth);
|
||||||
|
Clutter.cairo_set_source_color(cr, borderColor);
|
||||||
|
cr.stroke();
|
||||||
|
|
||||||
|
cr.$dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
start(x, y, duration) {
|
||||||
|
Tweener.removeTweens(this);
|
||||||
|
|
||||||
|
this.x = x - this.width / 2;
|
||||||
|
this.y = y - this.height / 2;
|
||||||
|
this.show();
|
||||||
|
Main.uiGroup.set_child_above_sibling(this, null);
|
||||||
|
|
||||||
|
this._startTime = GLib.get_monotonic_time() / 1000.0;
|
||||||
|
this._duration = duration;
|
||||||
|
|
||||||
|
Tweener.addTween(this,
|
||||||
|
{ opacity: 255,
|
||||||
|
time: duration / 1000,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onUpdateScope: this,
|
||||||
|
onUpdate() { this.queue_repaint() },
|
||||||
|
onCompleteScope: this,
|
||||||
|
onComplete() { this.stop(); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
Tweener.removeTweens(this);
|
||||||
|
this.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var PointerA11yTimeout = class PointerA11yTimeout {
|
||||||
|
constructor() {
|
||||||
|
let manager = Clutter.DeviceManager.get_default();
|
||||||
|
let pieTimer = new PieTimer();
|
||||||
|
|
||||||
|
Main.uiGroup.add_actor(pieTimer);
|
||||||
|
|
||||||
|
manager.connect('ptr-a11y-timeout-started', (manager, device, type, timeout) => {
|
||||||
|
let [x, y, mods] = global.get_pointer();
|
||||||
|
pieTimer.start(x, y, timeout);
|
||||||
|
if (type == Clutter.PointerA11yTimeoutType.GESTURE)
|
||||||
|
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||||
|
});
|
||||||
|
|
||||||
|
manager.connect('ptr-a11y-timeout-stopped', (manager, device, type) => {
|
||||||
|
pieTimer.stop();
|
||||||
|
if (type == Clutter.PointerA11yTimeoutType.GESTURE)
|
||||||
|
global.display.set_cursor(Meta.Cursor.DEFAULT);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@@ -51,49 +51,64 @@ function arrowIcon(side) {
|
|||||||
return arrow;
|
return arrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
var PopupBaseMenuItem = class {
|
var PopupBaseMenuItem = GObject.registerClass({
|
||||||
constructor(params) {
|
Properties: {
|
||||||
|
'active': GObject.ParamSpec.boolean('active', 'active', 'active',
|
||||||
|
GObject.ParamFlags.READWRITE,
|
||||||
|
GObject.TYPE_BOOLEAN,
|
||||||
|
false),
|
||||||
|
'sensitive': GObject.ParamSpec.boolean('sensitive', 'sensitive', 'sensitive',
|
||||||
|
GObject.ParamFlags.READWRITE,
|
||||||
|
GObject.TYPE_BOOLEAN,
|
||||||
|
true),
|
||||||
|
},
|
||||||
|
Signals: {
|
||||||
|
'activate': { param_types: [Clutter.Event.$gtype] },
|
||||||
|
}
|
||||||
|
}, class PopupBaseMenuItem extends St.BoxLayout {
|
||||||
|
_init(params) {
|
||||||
params = Params.parse (params, { reactive: true,
|
params = Params.parse (params, { reactive: true,
|
||||||
activate: true,
|
activate: true,
|
||||||
hover: true,
|
hover: true,
|
||||||
style_class: null,
|
style_class: null,
|
||||||
can_focus: true
|
can_focus: true
|
||||||
});
|
});
|
||||||
|
super._init({ style_class: 'popup-menu-item',
|
||||||
this.actor = new St.BoxLayout({ style_class: 'popup-menu-item',
|
reactive: params.reactive,
|
||||||
reactive: params.reactive,
|
track_hover: params.reactive,
|
||||||
track_hover: params.reactive,
|
can_focus: params.can_focus,
|
||||||
can_focus: params.can_focus,
|
accessible_role: Atk.Role.MENU_ITEM });
|
||||||
accessible_role: Atk.Role.MENU_ITEM });
|
this._delegate = this;
|
||||||
this.actor._delegate = this;
|
|
||||||
|
|
||||||
this._ornament = Ornament.NONE;
|
this._ornament = Ornament.NONE;
|
||||||
this._ornamentLabel = new St.Label({ style_class: 'popup-menu-ornament' });
|
this._ornamentLabel = new St.Label({ style_class: 'popup-menu-ornament' });
|
||||||
this.actor.add(this._ornamentLabel);
|
this.add(this._ornamentLabel);
|
||||||
|
|
||||||
this._parent = null;
|
this._parent = null;
|
||||||
this.active = false;
|
this._active = false;
|
||||||
this._activatable = params.reactive && params.activate;
|
this._activatable = params.reactive && params.activate;
|
||||||
this._sensitive = true;
|
this._sensitive = true;
|
||||||
|
|
||||||
if (!this._activatable)
|
if (!this._activatable)
|
||||||
this.actor.add_style_class_name('popup-inactive-menu-item');
|
this.add_style_class_name('popup-inactive-menu-item');
|
||||||
|
|
||||||
if (params.style_class)
|
if (params.style_class)
|
||||||
this.actor.add_style_class_name(params.style_class);
|
this.add_style_class_name(params.style_class);
|
||||||
|
|
||||||
if (this._activatable) {
|
if (this._activatable) {
|
||||||
this.actor.connect('button-press-event', this._onButtonPressEvent.bind(this));
|
this.connect('button-press-event', this._onButtonPressEvent.bind(this));
|
||||||
this.actor.connect('button-release-event', this._onButtonReleaseEvent.bind(this));
|
this.connect('button-release-event', this._onButtonReleaseEvent.bind(this));
|
||||||
this.actor.connect('touch-event', this._onTouchEvent.bind(this));
|
this.connect('touch-event', this._onTouchEvent.bind(this));
|
||||||
this.actor.connect('key-press-event', this._onKeyPressEvent.bind(this));
|
this.connect('key-press-event', this._onKeyPressEvent.bind(this));
|
||||||
}
|
}
|
||||||
if (params.reactive && params.hover)
|
if (params.reactive && params.hover)
|
||||||
this.actor.connect('notify::hover', this._onHoverChanged.bind(this));
|
this.bind_property('hover', this, 'active', GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
}
|
||||||
|
|
||||||
this.actor.connect('key-focus-in', this._onKeyFocusIn.bind(this));
|
get actor() {
|
||||||
this.actor.connect('key-focus-out', this._onKeyFocusOut.bind(this));
|
/* This is kept for compatibility with current implementation, and we
|
||||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
don't want to warn here yet since PopupMenu depends on this */
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
_getTopMenu() {
|
_getTopMenu() {
|
||||||
@@ -109,24 +124,24 @@ var PopupBaseMenuItem = class {
|
|||||||
|
|
||||||
_onButtonPressEvent(actor, event) {
|
_onButtonPressEvent(actor, event) {
|
||||||
// This is the CSS active state
|
// This is the CSS active state
|
||||||
this.actor.add_style_pseudo_class ('active');
|
this.add_style_pseudo_class('active');
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onButtonReleaseEvent(actor, event) {
|
_onButtonReleaseEvent(actor, event) {
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.remove_style_pseudo_class('active');
|
||||||
this.activate(event);
|
this.activate(event);
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTouchEvent(actor, event) {
|
_onTouchEvent(actor, event) {
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
if (event.type() == Clutter.EventType.TOUCH_END) {
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.remove_style_pseudo_class('active');
|
||||||
this.activate(event);
|
this.activate(event);
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
} else if (event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
} else if (event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||||
// This is the CSS active state
|
// This is the CSS active state
|
||||||
this.actor.add_style_pseudo_class ('active');
|
this.add_style_pseudo_class('active');
|
||||||
}
|
}
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
@@ -151,54 +166,56 @@ var PopupBaseMenuItem = class {
|
|||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onKeyFocusIn(actor) {
|
vfunc_key_focus_in() {
|
||||||
this.setActive(true);
|
super.vfunc_key_focus_in();
|
||||||
|
this.active = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onKeyFocusOut(actor) {
|
vfunc_key_focus_out() {
|
||||||
this.setActive(false);
|
super.vfunc_key_focus_out();
|
||||||
}
|
this.active = false;
|
||||||
|
|
||||||
_onHoverChanged(actor) {
|
|
||||||
this.setActive(actor.hover);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
this.emit('activate', event);
|
this.emit('activate', event);
|
||||||
}
|
}
|
||||||
|
|
||||||
setActive(active) {
|
get active() {
|
||||||
|
return this._active;
|
||||||
|
}
|
||||||
|
|
||||||
|
set active(active) {
|
||||||
let activeChanged = active != this.active;
|
let activeChanged = active != this.active;
|
||||||
if (activeChanged) {
|
if (activeChanged) {
|
||||||
this.active = active;
|
this._active = active;
|
||||||
if (active) {
|
if (active) {
|
||||||
this.actor.add_style_class_name('selected');
|
this.add_style_class_name('selected');
|
||||||
if (this.actor.can_focus)
|
if (this.can_focus)
|
||||||
this.actor.grab_key_focus();
|
this.grab_key_focus();
|
||||||
} else {
|
} else {
|
||||||
this.actor.remove_style_class_name('selected');
|
this.remove_style_class_name('selected');
|
||||||
// Remove the CSS active state if the user press the button and
|
// Remove the CSS active state if the user press the button and
|
||||||
// while holding moves to another menu item, so we don't paint all items.
|
// while holding moves to another menu item, so we don't paint all items.
|
||||||
// The correct behaviour would be to set the new item with the CSS
|
// The correct behaviour would be to set the new item with the CSS
|
||||||
// active state as well, but button-press-event is not trigered,
|
// active state as well, but button-press-event is not trigered,
|
||||||
// so we should track it in our own, which would involve some work
|
// so we should track it in our own, which would involve some work
|
||||||
// in the container
|
// in the container
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.remove_style_pseudo_class('active');
|
||||||
}
|
}
|
||||||
this.emit('active-changed', active);
|
this.notify('active');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
syncSensitive() {
|
syncSensitive() {
|
||||||
let sensitive = this.getSensitive();
|
let sensitive = this.sensitive;
|
||||||
this.actor.reactive = sensitive;
|
this.reactive = sensitive;
|
||||||
this.actor.can_focus = sensitive;
|
this.can_focus = sensitive;
|
||||||
this.emit('sensitive-changed');
|
this.notify('sensitive');
|
||||||
return sensitive;
|
return sensitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSensitive() {
|
getSensitive() {
|
||||||
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
|
let parentSensitive = this._parent ? this._parent.sensitive : true;
|
||||||
return this._activatable && this._sensitive && parentSensitive;
|
return this._activatable && this._sensitive && parentSensitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,12 +227,12 @@ var PopupBaseMenuItem = class {
|
|||||||
this.syncSensitive();
|
this.syncSensitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
get sensitive() {
|
||||||
this.actor.destroy();
|
return this.getSensitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
set sensitive(sensitive) {
|
||||||
this.emit('destroy');
|
this.setSensitive(sensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
setOrnament(ornament) {
|
setOrnament(ornament) {
|
||||||
@@ -226,36 +243,38 @@ var PopupBaseMenuItem = class {
|
|||||||
|
|
||||||
if (ornament == Ornament.DOT) {
|
if (ornament == Ornament.DOT) {
|
||||||
this._ornamentLabel.text = '\u2022';
|
this._ornamentLabel.text = '\u2022';
|
||||||
this.actor.add_accessible_state(Atk.StateType.CHECKED);
|
this.add_accessible_state(Atk.StateType.CHECKED);
|
||||||
} else if (ornament == Ornament.CHECK) {
|
} else if (ornament == Ornament.CHECK) {
|
||||||
this._ornamentLabel.text = '\u2713';
|
this._ornamentLabel.text = '\u2713';
|
||||||
this.actor.add_accessible_state(Atk.StateType.CHECKED);
|
this.add_accessible_state(Atk.StateType.CHECKED);
|
||||||
} else if (ornament == Ornament.NONE) {
|
} else if (ornament == Ornament.NONE) {
|
||||||
this._ornamentLabel.text = '';
|
this._ornamentLabel.text = '';
|
||||||
this.actor.remove_accessible_state(Atk.StateType.CHECKED);
|
this.remove_accessible_state(Atk.StateType.CHECKED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(PopupBaseMenuItem.prototype);
|
|
||||||
|
|
||||||
var PopupMenuItem = class extends PopupBaseMenuItem {
|
var PopupMenuItem = GObject.registerClass(
|
||||||
constructor(text, params) {
|
class PopupMenuItem extends PopupBaseMenuItem {
|
||||||
super(params);
|
_init(text, params) {
|
||||||
|
super._init(params);
|
||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.actor.add_child(this.label);
|
this.add_child(this.label);
|
||||||
this.actor.label_actor = this.label
|
this.label_actor = this.label
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var PopupSeparatorMenuItem = class extends PopupBaseMenuItem {
|
|
||||||
constructor(text) {
|
var PopupSeparatorMenuItem = GObject.registerClass(
|
||||||
super({ reactive: false,
|
class PopupSeparatorMenuItem extends PopupBaseMenuItem {
|
||||||
can_focus: false});
|
_init(text) {
|
||||||
|
super._init({ reactive: false,
|
||||||
|
can_focus: false });
|
||||||
|
|
||||||
this.label = new St.Label({ text: text || '' });
|
this.label = new St.Label({ text: text || '' });
|
||||||
this.actor.add(this.label);
|
this.add(this.label);
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
this.label.connect('notify::text',
|
this.label.connect('notify::text',
|
||||||
this._syncVisibility.bind(this));
|
this._syncVisibility.bind(this));
|
||||||
@@ -264,81 +283,78 @@ var PopupSeparatorMenuItem = class extends PopupBaseMenuItem {
|
|||||||
this._separator = new St.Widget({ style_class: 'popup-separator-menu-item',
|
this._separator = new St.Widget({ style_class: 'popup-separator-menu-item',
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this.actor.add(this._separator, { expand: true });
|
this.add(this._separator, { expand: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncVisibility() {
|
_syncVisibility() {
|
||||||
this.label.visible = this.label.text != '';
|
this.label.visible = this.label.text != '';
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var Switch = class {
|
var Switch = GObject.registerClass(
|
||||||
constructor(state) {
|
class Switch extends St.Bin {
|
||||||
this.actor = new St.Bin({ style_class: 'toggle-switch',
|
_init(state) {
|
||||||
accessible_role: Atk.Role.CHECK_BOX,
|
super._init({ style_class: 'toggle-switch',
|
||||||
can_focus: true });
|
accessible_role: Atk.Role.CHECK_BOX,
|
||||||
// Translators: this MUST be either "toggle-switch-us"
|
can_focus: true });
|
||||||
// (for toggle switches containing the English words
|
|
||||||
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
// switches containing "◯" and "|"). Other values will
|
|
||||||
// simply result in invisible toggle switches.
|
|
||||||
this.actor.add_style_class_name(_("toggle-switch-us"));
|
|
||||||
this.setToggleState(state);
|
this.setToggleState(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
setToggleState(state) {
|
setToggleState(state) {
|
||||||
if (state)
|
if (state)
|
||||||
this.actor.add_style_pseudo_class('checked');
|
this.add_style_pseudo_class('checked');
|
||||||
else
|
else
|
||||||
this.actor.remove_style_pseudo_class('checked');
|
this.remove_style_pseudo_class('checked');
|
||||||
this.state = state;
|
this.state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
this.setToggleState(!this.state);
|
this.setToggleState(!this.state);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var PopupSwitchMenuItem = class extends PopupBaseMenuItem {
|
var PopupSwitchMenuItem = GObject.registerClass({
|
||||||
constructor(text, active, params) {
|
Signals: { 'toggled': { param_types: [GObject.TYPE_BOOLEAN] }, },
|
||||||
super(params);
|
},
|
||||||
|
class PopupSwitchMenuItem extends PopupBaseMenuItem {
|
||||||
|
_init(text, active, params) {
|
||||||
|
super._init(params);
|
||||||
|
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this._switch = new Switch(active);
|
this._switch = new Switch(active);
|
||||||
|
|
||||||
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
this.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||||
this.checkAccessibleState();
|
this.checkAccessibleState();
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
this.actor.add_child(this.label);
|
this.add_child(this.label);
|
||||||
|
|
||||||
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
||||||
this.actor.add(this._statusBin, { expand: true, x_align: St.Align.END });
|
this.add(this._statusBin, { expand: true, x_align: St.Align.END });
|
||||||
|
|
||||||
this._statusLabel = new St.Label({ text: '',
|
this._statusLabel = new St.Label({ text: '',
|
||||||
style_class: 'popup-status-menu-item'
|
style_class: 'popup-status-menu-item'
|
||||||
});
|
});
|
||||||
this._statusBin.child = this._switch.actor;
|
this._statusBin.child = this._switch;
|
||||||
}
|
}
|
||||||
|
|
||||||
setStatus(text) {
|
setStatus(text) {
|
||||||
if (text != null) {
|
if (text != null) {
|
||||||
this._statusLabel.text = text;
|
this._statusLabel.text = text;
|
||||||
this._statusBin.child = this._statusLabel;
|
this._statusBin.child = this._statusLabel;
|
||||||
this.actor.reactive = false;
|
this.reactive = false;
|
||||||
this.actor.accessible_role = Atk.Role.MENU_ITEM;
|
this.accessible_role = Atk.Role.MENU_ITEM;
|
||||||
} else {
|
} else {
|
||||||
this._statusBin.child = this._switch.actor;
|
this._statusBin.child = this._switch;
|
||||||
this.actor.reactive = true;
|
this.reactive = true;
|
||||||
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
this.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||||
}
|
}
|
||||||
this.checkAccessibleState();
|
this.checkAccessibleState();
|
||||||
}
|
}
|
||||||
|
|
||||||
activate(event) {
|
activate(event) {
|
||||||
if (this._switch.actor.mapped) {
|
if (this._switch.mapped)
|
||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
|
||||||
|
|
||||||
// we allow pressing space to toggle the switch
|
// we allow pressing space to toggle the switch
|
||||||
// without closing the menu
|
// without closing the menu
|
||||||
@@ -365,29 +381,30 @@ var PopupSwitchMenuItem = class extends PopupBaseMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkAccessibleState() {
|
checkAccessibleState() {
|
||||||
switch (this.actor.accessible_role) {
|
switch (this.accessible_role) {
|
||||||
case Atk.Role.CHECK_MENU_ITEM:
|
case Atk.Role.CHECK_MENU_ITEM:
|
||||||
if (this._switch.state)
|
if (this._switch.state)
|
||||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
this.add_accessible_state(Atk.StateType.CHECKED);
|
||||||
else
|
else
|
||||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
this.remove_accessible_state(Atk.StateType.CHECKED);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
this.remove_accessible_state(Atk.StateType.CHECKED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var PopupImageMenuItem = class extends PopupBaseMenuItem {
|
var PopupImageMenuItem = GObject.registerClass(
|
||||||
constructor(text, icon, params) {
|
class PopupImageMenuItem extends PopupBaseMenuItem {
|
||||||
super(params);
|
_init(text, icon, params) {
|
||||||
|
super._init(params);
|
||||||
|
|
||||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon',
|
this._icon = new St.Icon({ style_class: 'popup-menu-icon',
|
||||||
x_align: Clutter.ActorAlign.END });
|
x_align: Clutter.ActorAlign.END });
|
||||||
this.actor.add_child(this._icon);
|
this.add_child(this._icon);
|
||||||
this.label = new St.Label({ text: text });
|
this.label = new St.Label({ text: text });
|
||||||
this.actor.add_child(this.label);
|
this.add_child(this.label);
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
this.setIcon(icon);
|
this.setIcon(icon);
|
||||||
}
|
}
|
||||||
@@ -399,12 +416,12 @@ var PopupImageMenuItem = class extends PopupBaseMenuItem {
|
|||||||
else
|
else
|
||||||
this._icon.icon_name = icon;
|
this._icon.icon_name = icon;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var PopupMenuBase = class {
|
var PopupMenuBase = class {
|
||||||
constructor(sourceActor, styleClass) {
|
constructor(sourceActor, styleClass) {
|
||||||
if (new.target === PopupMenuBase)
|
if (this.constructor === PopupMenuBase)
|
||||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||||
|
|
||||||
this.sourceActor = sourceActor;
|
this.sourceActor = sourceActor;
|
||||||
this._parent = null;
|
this._parent = null;
|
||||||
@@ -443,13 +460,21 @@ var PopupMenuBase = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getSensitive() {
|
getSensitive() {
|
||||||
let parentSensitive = this._parent ? this._parent.getSensitive() : true;
|
let parentSensitive = this._parent ? this._parent.sensitive : true;
|
||||||
return this._sensitive && parentSensitive;
|
return this._sensitive && parentSensitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
setSensitive(sensitive) {
|
setSensitive(sensitive) {
|
||||||
this._sensitive = sensitive;
|
this._sensitive = sensitive;
|
||||||
this.emit('sensitive-changed');
|
this.emit('notify::sensitive');
|
||||||
|
}
|
||||||
|
|
||||||
|
get sensitive() {
|
||||||
|
return this.getSensitive();
|
||||||
|
}
|
||||||
|
|
||||||
|
set sensitive(sensitive) {
|
||||||
|
this.setSensitive(sensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
_sessionUpdated() {
|
_sessionUpdated() {
|
||||||
@@ -485,7 +510,7 @@ var PopupMenuBase = class {
|
|||||||
app.activate();
|
app.activate();
|
||||||
});
|
});
|
||||||
|
|
||||||
menuItem.actor.visible = Main.sessionMode.allowSettings;
|
menuItem.visible = Main.sessionMode.allowSettings;
|
||||||
this._settingsActions[desktopFile] = menuItem;
|
this._settingsActions[desktopFile] = menuItem;
|
||||||
|
|
||||||
return menuItem;
|
return menuItem;
|
||||||
@@ -494,7 +519,7 @@ var PopupMenuBase = class {
|
|||||||
_setSettingsVisibility(visible) {
|
_setSettingsVisibility(visible) {
|
||||||
for (let id in this._settingsActions) {
|
for (let id in this._settingsActions) {
|
||||||
let item = this._settingsActions[id];
|
let item = this._settingsActions[id];
|
||||||
item.actor.visible = visible;
|
item.visible = visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -517,16 +542,17 @@ var PopupMenuBase = class {
|
|||||||
|
|
||||||
_subMenuActiveChanged(submenu, submenuItem) {
|
_subMenuActiveChanged(submenu, submenuItem) {
|
||||||
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
|
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
|
||||||
this._activeMenuItem.setActive(false);
|
this._activeMenuItem.active = false;
|
||||||
this._activeMenuItem = submenuItem;
|
this._activeMenuItem = submenuItem;
|
||||||
this.emit('active-changed', submenuItem);
|
this.emit('active-changed', submenuItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
_connectItemSignals(menuItem) {
|
_connectItemSignals(menuItem) {
|
||||||
menuItem._activeChangeId = menuItem.connect('active-changed', (menuItem, active) => {
|
menuItem._activeChangeId = menuItem.connect('notify::active', (menuItem) => {
|
||||||
|
let active = menuItem.active;
|
||||||
if (active && this._activeMenuItem != menuItem) {
|
if (active && this._activeMenuItem != menuItem) {
|
||||||
if (this._activeMenuItem)
|
if (this._activeMenuItem)
|
||||||
this._activeMenuItem.setActive(false);
|
this._activeMenuItem.active = false;
|
||||||
this._activeMenuItem = menuItem;
|
this._activeMenuItem = menuItem;
|
||||||
this.emit('active-changed', menuItem);
|
this.emit('active-changed', menuItem);
|
||||||
} else if (!active && this._activeMenuItem == menuItem) {
|
} else if (!active && this._activeMenuItem == menuItem) {
|
||||||
@@ -534,8 +560,8 @@ var PopupMenuBase = class {
|
|||||||
this.emit('active-changed', null);
|
this.emit('active-changed', null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
menuItem._sensitiveChangeId = menuItem.connect('sensitive-changed', () => {
|
menuItem._sensitiveChangeId = menuItem.connect('notify::sensitive', () => {
|
||||||
let sensitive = menuItem.getSensitive();
|
let sensitive = menuItem.sensitive;
|
||||||
if (!sensitive && this._activeMenuItem == menuItem) {
|
if (!sensitive && this._activeMenuItem == menuItem) {
|
||||||
if (!this.actor.navigate_focus(menuItem.actor,
|
if (!this.actor.navigate_focus(menuItem.actor,
|
||||||
St.DirectionType.TAB_FORWARD,
|
St.DirectionType.TAB_FORWARD,
|
||||||
@@ -546,12 +572,12 @@ var PopupMenuBase = class {
|
|||||||
menuItem.actor.grab_key_focus();
|
menuItem.actor.grab_key_focus();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
menuItem._activateId = menuItem.connect('activate', (menuItem, event) => {
|
menuItem._activateId = menuItem.connect_after('activate', (menuItem, event) => {
|
||||||
this.emit('activate', menuItem);
|
this.emit('activate', menuItem);
|
||||||
this.itemActivated(BoxPointer.PopupAnimation.FULL);
|
this.itemActivated(BoxPointer.PopupAnimation.FULL);
|
||||||
});
|
});
|
||||||
|
|
||||||
menuItem._parentSensitiveChangeId = this.connect('sensitive-changed', () => {
|
menuItem._parentSensitiveChangeId = this.connect('notify::sensitive', () => {
|
||||||
menuItem.syncSensitive();
|
menuItem.syncSensitive();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -603,7 +629,7 @@ var PopupMenuBase = class {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
menuItem.actor.show();
|
menuItem.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
moveMenuItem(menuItem, position) {
|
moveMenuItem(menuItem, position) {
|
||||||
@@ -650,8 +676,8 @@ var PopupMenuBase = class {
|
|||||||
let parentClosingId = this.connect('menu-closed', () => {
|
let parentClosingId = this.connect('menu-closed', () => {
|
||||||
menuItem.emit('menu-closed');
|
menuItem.emit('menu-closed');
|
||||||
});
|
});
|
||||||
let subMenuSensitiveChangedId = this.connect('sensitive-changed', () => {
|
let subMenuSensitiveChangedId = this.connect('notify::sensitive', () => {
|
||||||
menuItem.emit('sensitive-changed');
|
menuItem.emit('notify::sensitive');
|
||||||
});
|
});
|
||||||
|
|
||||||
menuItem.connect('destroy', () => {
|
menuItem.connect('destroy', () => {
|
||||||
@@ -857,9 +883,9 @@ var PopupMenu = class extends PopupMenuBase {
|
|||||||
|
|
||||||
close(animate) {
|
close(animate) {
|
||||||
if (this._activeMenuItem)
|
if (this._activeMenuItem)
|
||||||
this._activeMenuItem.setActive(false);
|
this._activeMenuItem.active = false;
|
||||||
|
|
||||||
if (this._boxPointer.actor.visible) {
|
if (this._boxPointer.visible) {
|
||||||
this._boxPointer.close(animate, () => {
|
this._boxPointer.close(animate, () => {
|
||||||
this.emit('menu-closed');
|
this.emit('menu-closed');
|
||||||
});
|
});
|
||||||
@@ -890,6 +916,10 @@ var PopupDummyMenu = class {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get sensitive() {
|
||||||
|
return this.getSensitive();
|
||||||
|
}
|
||||||
|
|
||||||
open() { this.emit('open-state-changed', true); }
|
open() { this.emit('open-state-changed', true); }
|
||||||
close() { this.emit('open-state-changed', false); }
|
close() { this.emit('open-state-changed', false); }
|
||||||
toggle() {}
|
toggle() {}
|
||||||
@@ -929,7 +959,11 @@ var PopupSubMenu = class extends PopupMenuBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getSensitive() {
|
getSensitive() {
|
||||||
return this._sensitive && this.sourceActor._delegate.getSensitive();
|
return this._sensitive && this.sourceActor.sensitive;
|
||||||
|
}
|
||||||
|
|
||||||
|
get sensitive() {
|
||||||
|
return this.getSensitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
open(animate) {
|
open(animate) {
|
||||||
@@ -996,7 +1030,7 @@ var PopupSubMenu = class extends PopupMenuBase {
|
|||||||
this.emit('open-state-changed', false);
|
this.emit('open-state-changed', false);
|
||||||
|
|
||||||
if (this._activeMenuItem)
|
if (this._activeMenuItem)
|
||||||
this._activeMenuItem.setActive(false);
|
this._activeMenuItem.active = false;
|
||||||
|
|
||||||
if (animate && this._needsScrollbar())
|
if (animate && this._needsScrollbar())
|
||||||
animate = false;
|
animate = false;
|
||||||
@@ -1028,7 +1062,7 @@ var PopupSubMenu = class extends PopupMenuBase {
|
|||||||
|
|
||||||
if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) {
|
if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) {
|
||||||
this.close(BoxPointer.PopupAnimation.FULL);
|
this.close(BoxPointer.PopupAnimation.FULL);
|
||||||
this.sourceActor._delegate.setActive(true);
|
this.sourceActor._delegate.active = true;
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1059,25 +1093,26 @@ var PopupMenuSection = class extends PopupMenuBase {
|
|||||||
close() { this.emit('open-state-changed', false); }
|
close() { this.emit('open-state-changed', false); }
|
||||||
};
|
};
|
||||||
|
|
||||||
var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
|
var PopupSubMenuMenuItem = GObject.registerClass(
|
||||||
constructor(text, wantIcon) {
|
class PopupSubMenuMenuItem extends PopupBaseMenuItem {
|
||||||
super();
|
_init(text, wantIcon) {
|
||||||
|
super._init();
|
||||||
|
|
||||||
this.actor.add_style_class_name('popup-submenu-menu-item');
|
this.add_style_class_name('popup-submenu-menu-item');
|
||||||
|
|
||||||
if (wantIcon) {
|
if (wantIcon) {
|
||||||
this.icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
this.icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||||
this.actor.add_child(this.icon);
|
this.add_child(this.icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.label = new St.Label({ text: text,
|
this.label = new St.Label({ text: text,
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this.actor.add_child(this.label);
|
this.add_child(this.label);
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
|
|
||||||
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
||||||
this.actor.add(expander, { expand: true });
|
this.add(expander, { expand: true });
|
||||||
|
|
||||||
this._triangle = arrowIcon(St.Side.RIGHT);
|
this._triangle = arrowIcon(St.Side.RIGHT);
|
||||||
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
|
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
|
||||||
@@ -1086,11 +1121,12 @@ var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
|
|||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this._triangleBin.add_child(this._triangle);
|
this._triangleBin.add_child(this._triangle);
|
||||||
|
|
||||||
this.actor.add_child(this._triangleBin);
|
this.add_child(this._triangleBin);
|
||||||
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
|
this.add_accessible_state(Atk.StateType.EXPANDABLE);
|
||||||
|
|
||||||
this.menu = new PopupSubMenu(this.actor, this._triangle);
|
this.menu = new PopupSubMenu(this, this._triangle);
|
||||||
this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this));
|
this.menu.connect('open-state-changed', this._subMenuOpenStateChanged.bind(this));
|
||||||
|
this.connect('destroy', () => { this.menu.destroy(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
_setParent(parent) {
|
_setParent(parent) {
|
||||||
@@ -1107,24 +1143,18 @@ var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
|
|||||||
|
|
||||||
_subMenuOpenStateChanged(menu, open) {
|
_subMenuOpenStateChanged(menu, open) {
|
||||||
if (open) {
|
if (open) {
|
||||||
this.actor.add_style_pseudo_class('open');
|
this.add_style_pseudo_class('open');
|
||||||
this._getTopMenu()._setOpenedSubMenu(this.menu);
|
this._getTopMenu()._setOpenedSubMenu(this.menu);
|
||||||
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
|
this.add_accessible_state(Atk.StateType.EXPANDED);
|
||||||
this.actor.add_style_pseudo_class('checked');
|
this.add_style_pseudo_class('checked');
|
||||||
} else {
|
} else {
|
||||||
this.actor.remove_style_pseudo_class('open');
|
this.remove_style_pseudo_class('open');
|
||||||
this._getTopMenu()._setOpenedSubMenu(null);
|
this._getTopMenu()._setOpenedSubMenu(null);
|
||||||
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
|
this.remove_accessible_state (Atk.StateType.EXPANDED);
|
||||||
this.actor.remove_style_pseudo_class('checked');
|
this.remove_style_pseudo_class('checked');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
|
||||||
this.menu.destroy();
|
|
||||||
|
|
||||||
super.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
setSubmenuShown(open) {
|
setSubmenuShown(open) {
|
||||||
if (open)
|
if (open)
|
||||||
this.menu.open(BoxPointer.PopupAnimation.FULL);
|
this.menu.open(BoxPointer.PopupAnimation.FULL);
|
||||||
@@ -1162,7 +1192,7 @@ var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
|
|||||||
_onButtonReleaseEvent(actor) {
|
_onButtonReleaseEvent(actor) {
|
||||||
// Since we override the parent, we need to manage what the parent does
|
// Since we override the parent, we need to manage what the parent does
|
||||||
// with the active style class
|
// with the active style class
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.remove_style_pseudo_class('active');
|
||||||
this._setOpenState(!this._getOpenState());
|
this._setOpenState(!this._getOpenState());
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
@@ -1171,12 +1201,12 @@ var PopupSubMenuMenuItem = class extends PopupBaseMenuItem {
|
|||||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
if (event.type() == Clutter.EventType.TOUCH_END) {
|
||||||
// Since we override the parent, we need to manage what the parent does
|
// Since we override the parent, we need to manage what the parent does
|
||||||
// with the active style class
|
// with the active style class
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.remove_style_pseudo_class('active');
|
||||||
this._setOpenState(!this._getOpenState());
|
this._setOpenState(!this._getOpenState());
|
||||||
}
|
}
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
/* Basic implementation of a menu manager.
|
/* Basic implementation of a menu manager.
|
||||||
* Call addMenu to add menus
|
* Call addMenu to add menus
|
||||||
@@ -1185,8 +1215,7 @@ var PopupMenuManager = class {
|
|||||||
constructor(owner, grabParams) {
|
constructor(owner, grabParams) {
|
||||||
grabParams = Params.parse(grabParams,
|
grabParams = Params.parse(grabParams,
|
||||||
{ actionMode: Shell.ActionMode.POPUP });
|
{ actionMode: Shell.ActionMode.POPUP });
|
||||||
this._owner = owner;
|
this._grabHelper = new GrabHelper.GrabHelper(owner, grabParams);
|
||||||
this._grabHelper = new GrabHelper.GrabHelper(owner.actor, grabParams);
|
|
||||||
this._menus = [];
|
this._menus = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -89,6 +89,8 @@ function loadRemoteSearchProviders(searchSettings, callback) {
|
|||||||
try {
|
try {
|
||||||
let desktopId = keyfile.get_string(group, 'DesktopId');
|
let desktopId = keyfile.get_string(group, 'DesktopId');
|
||||||
appInfo = Gio.DesktopAppInfo.new(desktopId);
|
appInfo = Gio.DesktopAppInfo.new(desktopId);
|
||||||
|
if (!appInfo.should_show())
|
||||||
|
return;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('Ignoring search provider ' + path + ': missing DesktopId');
|
log('Ignoring search provider ' + path + ': missing DesktopId');
|
||||||
return;
|
return;
|
||||||
|
97
js/ui/ripples.js
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const { Clutter, St } = imports.gi;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
// Shamelessly copied from the layout "hotcorner" ripples implementation
|
||||||
|
var Ripples = class Ripples {
|
||||||
|
constructor(px, py, styleClass) {
|
||||||
|
this._x = 0;
|
||||||
|
this._y = 0;
|
||||||
|
|
||||||
|
this._px = px;
|
||||||
|
this._py = py;
|
||||||
|
|
||||||
|
this._ripple1 = new St.BoxLayout({ style_class: styleClass,
|
||||||
|
opacity: 0,
|
||||||
|
can_focus: false,
|
||||||
|
reactive: false,
|
||||||
|
visible: false });
|
||||||
|
this._ripple1.set_pivot_point(px, py);
|
||||||
|
|
||||||
|
this._ripple2 = new St.BoxLayout({ style_class: styleClass,
|
||||||
|
opacity: 0,
|
||||||
|
can_focus: false,
|
||||||
|
reactive: false,
|
||||||
|
visible: false });
|
||||||
|
this._ripple2.set_pivot_point(px, py);
|
||||||
|
|
||||||
|
this._ripple3 = new St.BoxLayout({ style_class: styleClass,
|
||||||
|
opacity: 0,
|
||||||
|
can_focus: false,
|
||||||
|
reactive: false,
|
||||||
|
visible: false });
|
||||||
|
this._ripple3.set_pivot_point(px, py);
|
||||||
|
}
|
||||||
|
|
||||||
|
_animRipple(ripple, delay, time, startScale, startOpacity, finalScale) {
|
||||||
|
// We draw a ripple by using a source image and animating it scaling
|
||||||
|
// outwards and fading away. We want the ripples to move linearly
|
||||||
|
// or it looks unrealistic, but if the opacity of the ripple goes
|
||||||
|
// linearly to zero it fades away too quickly, so we use Tweener's
|
||||||
|
// 'onUpdate' to give a non-linear curve to the fade-away and make
|
||||||
|
// it more visible in the middle section.
|
||||||
|
|
||||||
|
ripple.x = this._x;
|
||||||
|
ripple.y = this._y;
|
||||||
|
ripple._opacity = startOpacity;
|
||||||
|
ripple.visible = true;
|
||||||
|
ripple.opacity = 255 * Math.sqrt(startOpacity);
|
||||||
|
ripple.scale_x = ripple.scale_y = startScale;
|
||||||
|
ripple.set_translation( - this._px * ripple.width, - this._py * ripple.height, 0.0);
|
||||||
|
|
||||||
|
Tweener.addTween(ripple, { _opacity: 0,
|
||||||
|
scale_x: finalScale,
|
||||||
|
scale_y: finalScale,
|
||||||
|
delay: delay,
|
||||||
|
time: time,
|
||||||
|
transition: 'linear',
|
||||||
|
onUpdate() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
|
||||||
|
onComplete() { ripple.visible = false; } });
|
||||||
|
}
|
||||||
|
|
||||||
|
addTo(stage) {
|
||||||
|
if (this._stage !== undefined) {
|
||||||
|
throw new Error('Ripples already added');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._stage = stage;
|
||||||
|
this._stage.add_actor(this._ripple1);
|
||||||
|
this._stage.add_actor(this._ripple2);
|
||||||
|
this._stage.add_actor(this._ripple3);
|
||||||
|
}
|
||||||
|
|
||||||
|
playAnimation(x, y) {
|
||||||
|
if (this._stage === undefined) {
|
||||||
|
throw new Error('Ripples not added');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._x = x;
|
||||||
|
this._y = y;
|
||||||
|
|
||||||
|
this._stage.set_child_above_sibling(this._ripple1, null);
|
||||||
|
this._stage.set_child_above_sibling(this._ripple2, this._ripple1);
|
||||||
|
this._stage.set_child_above_sibling(this._ripple3, this._ripple2);
|
||||||
|
|
||||||
|
// Show three concentric ripples expanding outwards; the exact
|
||||||
|
// parameters were found by trial and error, so don't look
|
||||||
|
// for them to make perfect sense mathematically
|
||||||
|
|
||||||
|
// delay time scale opacity => scale
|
||||||
|
this._animRipple(this._ripple1, 0.0, 0.83, 0.25, 1.0, 1.5);
|
||||||
|
this._animRipple(this._ripple2, 0.05, 1.0, 0.0, 0.7, 1.25);
|
||||||
|
this._animRipple(this._ripple3, 0.35, 1.0, 0.0, 0.3, 1);
|
||||||
|
}
|
||||||
|
};
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, Meta, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -23,10 +23,11 @@ const EXEC_ARG_KEY = 'exec-arg';
|
|||||||
|
|
||||||
var DIALOG_GROW_TIME = 0.1;
|
var DIALOG_GROW_TIME = 0.1;
|
||||||
|
|
||||||
var RunDialog = class extends ModalDialog.ModalDialog {
|
var RunDialog = GObject.registerClass(
|
||||||
constructor() {
|
class RunDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'run-dialog',
|
_init() {
|
||||||
destroyOnClose: false });
|
super._init({ styleClass: 'run-dialog',
|
||||||
|
destroyOnClose: false });
|
||||||
|
|
||||||
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||||
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
|
this._terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
|
||||||
@@ -282,5 +283,4 @@ var RunDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
super.open();
|
super.open();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(RunDialog.prototype);
|
|
||||||
|
@@ -431,6 +431,9 @@ var SearchResults = class {
|
|||||||
this._cancellable = new Gio.Cancellable();
|
this._cancellable = new Gio.Cancellable();
|
||||||
|
|
||||||
this._registerProvider(new AppDisplay.AppSearchProvider());
|
this._registerProvider(new AppDisplay.AppSearchProvider());
|
||||||
|
|
||||||
|
let appSystem = Shell.AppSystem.get_default();
|
||||||
|
appSystem.connect('installed-changed', this._reloadRemoteProviders.bind(this));
|
||||||
this._reloadRemoteProviders();
|
this._reloadRemoteProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ const _modes = {
|
|||||||
hasWorkspaces: false,
|
hasWorkspaces: false,
|
||||||
hasWindows: false,
|
hasWindows: false,
|
||||||
hasNotifications: false,
|
hasNotifications: false,
|
||||||
|
hasWmMenus: false,
|
||||||
isLocked: false,
|
isLocked: false,
|
||||||
isGreeter: false,
|
isGreeter: false,
|
||||||
isPrimary: false,
|
isPrimary: false,
|
||||||
@@ -47,7 +48,7 @@ const _modes = {
|
|||||||
panel: {
|
panel: {
|
||||||
left: [],
|
left: [],
|
||||||
center: ['dateMenu'],
|
center: ['dateMenu'],
|
||||||
right: ['a11y', 'keyboard', 'aggregateMenu']
|
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
|
||||||
},
|
},
|
||||||
panelStyle: 'login-screen'
|
panelStyle: 'login-screen'
|
||||||
},
|
},
|
||||||
@@ -72,7 +73,7 @@ const _modes = {
|
|||||||
panel: {
|
panel: {
|
||||||
left: [],
|
left: [],
|
||||||
center: [],
|
center: [],
|
||||||
right: ['a11y', 'keyboard', 'aggregateMenu']
|
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
|
||||||
},
|
},
|
||||||
panelStyle: 'unlock-screen'
|
panelStyle: 'unlock-screen'
|
||||||
},
|
},
|
||||||
@@ -86,6 +87,7 @@ const _modes = {
|
|||||||
hasRunDialog: true,
|
hasRunDialog: true,
|
||||||
hasWorkspaces: true,
|
hasWorkspaces: true,
|
||||||
hasWindows: true,
|
hasWindows: true,
|
||||||
|
hasWmMenus: true,
|
||||||
hasNotifications: true,
|
hasNotifications: true,
|
||||||
isLocked: false,
|
isLocked: false,
|
||||||
isPrimary: true,
|
isPrimary: true,
|
||||||
@@ -99,7 +101,7 @@ const _modes = {
|
|||||||
panel: {
|
panel: {
|
||||||
left: ['activities', 'appMenu'],
|
left: ['activities', 'appMenu'],
|
||||||
center: ['dateMenu'],
|
center: ['dateMenu'],
|
||||||
right: ['a11y', 'keyboard', 'aggregateMenu']
|
right: ['dwellClick', 'a11y', 'keyboard', 'aggregateMenu']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -148,7 +148,7 @@ function addContextMenu(entry, params) {
|
|||||||
|
|
||||||
entry.menu = new EntryMenu(entry);
|
entry.menu = new EntryMenu(entry);
|
||||||
entry.menu.isPassword = params.isPassword;
|
entry.menu.isPassword = params.isPassword;
|
||||||
entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry },
|
entry._menuManager = new PopupMenu.PopupMenuManager(entry,
|
||||||
{ actionMode: params.actionMode });
|
{ actionMode: params.actionMode });
|
||||||
entry._menuManager.addMenu(entry.menu);
|
entry._menuManager.addMenu(entry.menu);
|
||||||
|
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, Pango, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Pango, Shell, St } = imports.gi;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
const Animation = imports.ui.animation;
|
||||||
const CheckBox = imports.ui.checkBox;
|
const CheckBox = imports.ui.checkBox;
|
||||||
const Dialog = imports.ui.dialog;
|
const Dialog = imports.ui.dialog;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -14,6 +15,7 @@ const ShellEntry = imports.ui.shellEntry;
|
|||||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||||
|
|
||||||
var LIST_ITEM_ICON_SIZE = 48;
|
var LIST_ITEM_ICON_SIZE = 48;
|
||||||
|
var WORK_SPINNER_ICON_SIZE = 16;
|
||||||
|
|
||||||
const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
|
const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
|
||||||
|
|
||||||
@@ -148,7 +150,7 @@ var ShellMountOperation = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._dialogId = this._dialog.connect('response',
|
this._dialogId = this._dialog.connect('response',
|
||||||
(object, choice, password, remember) => {
|
(object, choice, password, remember, hiddenVolume, systemVolume, pim) => {
|
||||||
if (choice == -1) {
|
if (choice == -1) {
|
||||||
this.mountOp.reply(Gio.MountOperationResult.ABORTED);
|
this.mountOp.reply(Gio.MountOperationResult.ABORTED);
|
||||||
} else {
|
} else {
|
||||||
@@ -158,6 +160,9 @@ var ShellMountOperation = class {
|
|||||||
this.mountOp.set_password_save(Gio.PasswordSave.NEVER);
|
this.mountOp.set_password_save(Gio.PasswordSave.NEVER);
|
||||||
|
|
||||||
this.mountOp.set_password(password);
|
this.mountOp.set_password(password);
|
||||||
|
this.mountOp.set_is_tcrypt_hidden_volume(hiddenVolume);
|
||||||
|
this.mountOp.set_is_tcrypt_system_volume(systemVolume);
|
||||||
|
this.mountOp.set_pim(pim);
|
||||||
this.mountOp.reply(Gio.MountOperationResult.HANDLED);
|
this.mountOp.reply(Gio.MountOperationResult.HANDLED);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -264,9 +269,11 @@ var ShellUnmountNotifier = class extends MessageTray.Source {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
|
var ShellMountQuestionDialog = GObject.registerClass({
|
||||||
constructor(icon) {
|
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
|
||||||
super({ styleClass: 'mount-dialog' });
|
}, class ShellMountQuestionDialog extends ModalDialog.ModalDialog {
|
||||||
|
_init(icon) {
|
||||||
|
super._init({ styleClass: 'mount-dialog' });
|
||||||
|
|
||||||
this._content = new Dialog.MessageDialogContent({ icon });
|
this._content = new Dialog.MessageDialogContent({ icon });
|
||||||
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
|
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
|
||||||
@@ -276,34 +283,107 @@ var ShellMountQuestionDialog = class extends ModalDialog.ModalDialog {
|
|||||||
_setLabelsForMessage(this._content, message);
|
_setLabelsForMessage(this._content, message);
|
||||||
_setButtonsForChoices(this, choices);
|
_setButtonsForChoices(this, choices);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ShellMountQuestionDialog.prototype);
|
|
||||||
|
|
||||||
var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
|
var ShellMountPasswordDialog = GObject.registerClass({
|
||||||
constructor(message, icon, flags) {
|
Signals: { 'response': { param_types: [GObject.TYPE_INT,
|
||||||
|
GObject.TYPE_STRING,
|
||||||
|
GObject.TYPE_BOOLEAN,
|
||||||
|
GObject.TYPE_BOOLEAN,
|
||||||
|
GObject.TYPE_BOOLEAN,
|
||||||
|
GObject.TYPE_UINT] } }
|
||||||
|
}, class ShellMountPasswordDialog extends ModalDialog.ModalDialog {
|
||||||
|
_init(message, icon, flags) {
|
||||||
let strings = message.split('\n');
|
let strings = message.split('\n');
|
||||||
let title = strings.shift() || null;
|
let title = strings.shift() || null;
|
||||||
let body = strings.shift() || null;
|
let body = strings.shift() || null;
|
||||||
super({ styleClass: 'prompt-dialog' });
|
super._init({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
|
let disksApp = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop');
|
||||||
|
|
||||||
let content = new Dialog.MessageDialogContent({ icon, title, body });
|
let content = new Dialog.MessageDialogContent({ icon, title, body });
|
||||||
this.contentLayout.add_actor(content);
|
this.contentLayout.add_actor(content);
|
||||||
|
content._body.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
|
||||||
this._passwordBox = new St.BoxLayout({ vertical: false, style_class: 'prompt-dialog-password-box' });
|
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
|
||||||
content.messageBox.add(this._passwordBox);
|
let grid = new St.Widget({ style_class: 'prompt-dialog-grid',
|
||||||
|
layout_manager: layout });
|
||||||
|
layout.hookup_style(grid);
|
||||||
|
let rtl = grid.get_text_direction() === Clutter.TextDirection.RTL;
|
||||||
|
|
||||||
this._passwordLabel = new St.Label(({ style_class: 'prompt-dialog-password-label',
|
if (flags & Gio.AskPasswordFlags.TCRYPT) {
|
||||||
text: _("Password") }));
|
this._keyfilesLabel = new St.Label(({ style_class: 'prompt-dialog-keyfiles-label',
|
||||||
this._passwordBox.add(this._passwordLabel, { y_fill: false, y_align: St.Align.MIDDLE });
|
visible: false }));
|
||||||
|
|
||||||
|
this._hiddenVolume = new CheckBox.CheckBox(_("Hidden Volume"));
|
||||||
|
content.messageBox.add(this._hiddenVolume.actor);
|
||||||
|
|
||||||
|
this._systemVolume = new CheckBox.CheckBox(_("Windows System Volume"));
|
||||||
|
content.messageBox.add(this._systemVolume.actor);
|
||||||
|
|
||||||
|
this._keyfilesCheckbox = new CheckBox.CheckBox(_("Uses Keyfiles"));
|
||||||
|
this._keyfilesCheckbox.actor.connect("clicked", this._onKeyfilesCheckboxClicked.bind(this));
|
||||||
|
content.messageBox.add(this._keyfilesCheckbox.actor);
|
||||||
|
|
||||||
|
this._keyfilesLabel.clutter_text.set_markup(
|
||||||
|
/* Translators: %s is the Disks application */
|
||||||
|
_("To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead.").format(disksApp.get_name())
|
||||||
|
);
|
||||||
|
this._keyfilesLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
|
this._keyfilesLabel.clutter_text.line_wrap = true;
|
||||||
|
content.messageBox.add(this._keyfilesLabel, { y_fill: false, y_align: St.Align.MIDDLE, expand: true });
|
||||||
|
|
||||||
|
this._pimLabel = new St.Label({ style_class: 'prompt-dialog-password-label',
|
||||||
|
text: _("PIM Number"),
|
||||||
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
|
this._pimEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
|
can_focus: true,
|
||||||
|
x_expand: true });
|
||||||
|
this._pimEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
|
||||||
|
this._pimEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
|
ShellEntry.addContextMenu(this._pimEntry, { isPassword: true });
|
||||||
|
|
||||||
|
if (rtl) {
|
||||||
|
layout.attach(this._pimEntry, 0, 0, 1, 1);
|
||||||
|
layout.attach(this._pimLabel, 1, 0, 1, 1);
|
||||||
|
} else {
|
||||||
|
layout.attach(this._pimLabel, 0, 0, 1, 1);
|
||||||
|
layout.attach(this._pimEntry, 1, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._pimErrorMessageLabel = new St.Label({ style_class: 'prompt-dialog-password-entry',
|
||||||
|
text: _("The PIM must be a number or empty."),
|
||||||
|
visible: false });
|
||||||
|
layout.attach(this._pimErrorMessageLabel, 0, 2, 2, 1);
|
||||||
|
} else {
|
||||||
|
this._hiddenVolume = null;
|
||||||
|
this._systemVolume = null;
|
||||||
|
this._pimEntry = null;
|
||||||
|
this._pimErrorMessageLabel = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._passwordLabel = new St.Label({ style_class: 'prompt-dialog-password-label',
|
||||||
|
text: _("Password"),
|
||||||
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||||
text: "",
|
can_focus: true,
|
||||||
can_focus: true});
|
x_expand: true });
|
||||||
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
|
||||||
this._passwordEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
|
this._passwordEntry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
|
||||||
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||||
this._passwordBox.add(this._passwordEntry, {expand: true });
|
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||||
this.setInitialKeyFocus(this._passwordEntry);
|
this.setInitialKeyFocus(this._passwordEntry);
|
||||||
|
this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE, true);
|
||||||
|
this._passwordEntry.secondary_icon = this._workSpinner.actor;
|
||||||
|
|
||||||
|
if (rtl) {
|
||||||
|
layout.attach(this._passwordEntry, 0, 1, 1, 1);
|
||||||
|
layout.attach(this._passwordLabel, 1, 1, 1, 1);
|
||||||
|
} else {
|
||||||
|
layout.attach(this._passwordLabel, 0, 1, 1, 1);
|
||||||
|
layout.attach(this._passwordEntry, 1, 1, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
content.messageBox.add(grid);
|
||||||
|
|
||||||
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label',
|
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label',
|
||||||
text: _("Sorry, that didn’t work. Please try again.") });
|
text: _("Sorry, that didn’t work. Please try again.") });
|
||||||
@@ -313,8 +393,7 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
|
|||||||
content.messageBox.add(this._errorMessageLabel);
|
content.messageBox.add(this._errorMessageLabel);
|
||||||
|
|
||||||
if (flags & Gio.AskPasswordFlags.SAVING_SUPPORTED) {
|
if (flags & Gio.AskPasswordFlags.SAVING_SUPPORTED) {
|
||||||
this._rememberChoice = new CheckBox.CheckBox();
|
this._rememberChoice = new CheckBox.CheckBox(_("Remember Password"));
|
||||||
this._rememberChoice.getLabelActor().text = _("Remember Password");
|
|
||||||
this._rememberChoice.actor.checked =
|
this._rememberChoice.actor.checked =
|
||||||
global.settings.get_boolean(REMEMBER_MOUNT_PASSWORD_KEY);
|
global.settings.get_boolean(REMEMBER_MOUNT_PASSWORD_KEY);
|
||||||
content.messageBox.add(this._rememberChoice.actor);
|
content.messageBox.add(this._rememberChoice.actor);
|
||||||
@@ -322,25 +401,36 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
|
|||||||
this._rememberChoice = null;
|
this._rememberChoice = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
let buttons = [{ label: _("Cancel"),
|
this._defaultButtons = [{ label: _("Cancel"),
|
||||||
action: this._onCancelButton.bind(this),
|
action: this._onCancelButton.bind(this),
|
||||||
key: Clutter.Escape
|
key: Clutter.Escape
|
||||||
},
|
},
|
||||||
{ label: _("Unlock"),
|
{ label: _("Unlock"),
|
||||||
action: this._onUnlockButton.bind(this),
|
action: this._onUnlockButton.bind(this),
|
||||||
default: true
|
default: true
|
||||||
}];
|
}];
|
||||||
|
|
||||||
this.setButtons(buttons);
|
this._usesKeyfilesButtons = [{ label: _("Cancel"),
|
||||||
|
action: this._onCancelButton.bind(this),
|
||||||
|
key: Clutter.Escape
|
||||||
|
},
|
||||||
|
{ /* Translators: %s is the Disks application */
|
||||||
|
label: _("Open %s").format(disksApp.get_name()),
|
||||||
|
action: this._onOpenDisksButton.bind(this),
|
||||||
|
default: true
|
||||||
|
}];
|
||||||
|
|
||||||
|
this.setButtons(this._defaultButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
reaskPassword() {
|
reaskPassword() {
|
||||||
this._passwordEntry.set_text('');
|
this._passwordEntry.set_text('');
|
||||||
this._errorMessageLabel.show();
|
this._errorMessageLabel.show();
|
||||||
|
this._workSpinner.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onCancelButton() {
|
_onCancelButton() {
|
||||||
this.emit('response', -1, '', false);
|
this.emit('response', -1, '', false, false, false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onUnlockButton() {
|
_onUnlockButton() {
|
||||||
@@ -348,18 +438,68 @@ var ShellMountPasswordDialog = class extends ModalDialog.ModalDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onEntryActivate() {
|
_onEntryActivate() {
|
||||||
|
let pim = 0;
|
||||||
|
if (this._pimEntry !== null)
|
||||||
|
pim = this._pimEntry.get_text();
|
||||||
|
if (isNaN(pim)) {
|
||||||
|
this._pimEntry.set_text('');
|
||||||
|
this._pimErrorMessageLabel.show();
|
||||||
|
return;
|
||||||
|
} else if (this._pimErrorMessageLabel !== null) {
|
||||||
|
this._pimErrorMessageLabel.hide();
|
||||||
|
}
|
||||||
|
|
||||||
global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY,
|
global.settings.set_boolean(REMEMBER_MOUNT_PASSWORD_KEY,
|
||||||
this._rememberChoice && this._rememberChoice.actor.checked);
|
this._rememberChoice && this._rememberChoice.actor.checked);
|
||||||
|
|
||||||
|
this._workSpinner.play();
|
||||||
this.emit('response', 1,
|
this.emit('response', 1,
|
||||||
this._passwordEntry.get_text(),
|
this._passwordEntry.get_text(),
|
||||||
this._rememberChoice &&
|
this._rememberChoice &&
|
||||||
this._rememberChoice.actor.checked);
|
this._rememberChoice.actor.checked,
|
||||||
|
this._hiddenVolume &&
|
||||||
|
this._hiddenVolume.actor.checked,
|
||||||
|
this._systemVolume &&
|
||||||
|
this._systemVolume.actor.checked,
|
||||||
|
parseInt(pim));
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
|
_onKeyfilesCheckboxClicked() {
|
||||||
constructor(icon) {
|
let useKeyfiles = this._keyfilesCheckbox.actor.checked;
|
||||||
super({ styleClass: 'mount-dialog' });
|
this._passwordEntry.reactive = !useKeyfiles;
|
||||||
|
this._passwordEntry.can_focus = !useKeyfiles;
|
||||||
|
this._passwordEntry.clutter_text.editable = !useKeyfiles;
|
||||||
|
this._passwordEntry.clutter_text.selectable = !useKeyfiles;
|
||||||
|
this._pimEntry.reactive = !useKeyfiles;
|
||||||
|
this._pimEntry.can_focus = !useKeyfiles;
|
||||||
|
this._pimEntry.clutter_text.editable = !useKeyfiles;
|
||||||
|
this._pimEntry.clutter_text.selectable = !useKeyfiles;
|
||||||
|
this._rememberChoice.actor.reactive = !useKeyfiles;
|
||||||
|
this._rememberChoice.actor.can_focus = !useKeyfiles;
|
||||||
|
this._keyfilesLabel.visible = useKeyfiles;
|
||||||
|
this.setButtons(useKeyfiles ? this._usesKeyfilesButtons : this._defaultButtons);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onOpenDisksButton() {
|
||||||
|
let app = Shell.AppSystem.get_default().lookup_app('org.gnome.DiskUtility.desktop');
|
||||||
|
if (app)
|
||||||
|
app.activate();
|
||||||
|
else
|
||||||
|
Main.notifyError(
|
||||||
|
/* Translators: %s is the Disks application */
|
||||||
|
_("Unable to start %s").format(app.get_name()),
|
||||||
|
/* Translators: %s is the Disks application */
|
||||||
|
_("Couldn’t find the %s application").format(app.get_name())
|
||||||
|
);
|
||||||
|
this._onCancelButton();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var ShellProcessesDialog = GObject.registerClass({
|
||||||
|
Signals: { 'response': { param_types: [GObject.TYPE_INT] } }
|
||||||
|
}, class ShellProcessesDialog extends ModalDialog.ModalDialog {
|
||||||
|
_init(icon) {
|
||||||
|
super._init({ styleClass: 'mount-dialog' });
|
||||||
|
|
||||||
this._content = new Dialog.MessageDialogContent({ icon });
|
this._content = new Dialog.MessageDialogContent({ icon });
|
||||||
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
|
this.contentLayout.add(this._content, { x_fill: true, y_fill: false });
|
||||||
@@ -412,8 +552,7 @@ var ShellProcessesDialog = class extends ModalDialog.ModalDialog {
|
|||||||
_setLabelsForMessage(this._content, message);
|
_setLabelsForMessage(this._content, message);
|
||||||
_setButtonsForChoices(this, choices);
|
_setButtonsForChoices(this, choices);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(ShellProcessesDialog.prototype);
|
|
||||||
|
|
||||||
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
|
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
|
||||||
|
|
||||||
@@ -515,7 +654,7 @@ var GnomeShellMountOpHandler = class {
|
|||||||
|
|
||||||
this._dialog = new ShellMountPasswordDialog(message, this._createGIcon(iconName), flags);
|
this._dialog = new ShellMountPasswordDialog(message, this._createGIcon(iconName), flags);
|
||||||
this._dialog.connect('response',
|
this._dialog.connect('response',
|
||||||
(object, choice, password, remember) => {
|
(object, choice, password, remember, hiddenVolume, systemVolume, pim) => {
|
||||||
let details = {};
|
let details = {};
|
||||||
let response;
|
let response;
|
||||||
|
|
||||||
@@ -527,6 +666,9 @@ var GnomeShellMountOpHandler = class {
|
|||||||
let passSave = remember ? Gio.PasswordSave.PERMANENTLY : Gio.PasswordSave.NEVER;
|
let passSave = remember ? Gio.PasswordSave.PERMANENTLY : Gio.PasswordSave.NEVER;
|
||||||
details['password_save'] = GLib.Variant.new('u', passSave);
|
details['password_save'] = GLib.Variant.new('u', passSave);
|
||||||
details['password'] = GLib.Variant.new('s', password);
|
details['password'] = GLib.Variant.new('s', password);
|
||||||
|
details['hidden_volume'] = GLib.Variant.new('b', hiddenVolume);
|
||||||
|
details['system_volume'] = GLib.Variant.new('b', systemVolume);
|
||||||
|
details['pim'] = GLib.Variant.new('u', pim);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._clearCurrentRequest(response, details);
|
this._clearCurrentRequest(response, details);
|
||||||
|
@@ -39,7 +39,7 @@ class ATIndicator extends PanelMenu.Button {
|
|||||||
icon_name: 'preferences-desktop-accessibility-symbolic' }));
|
icon_name: 'preferences-desktop-accessibility-symbolic' }));
|
||||||
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
|
|
||||||
this.actor.add_child(this._hbox);
|
this.add_child(this._hbox);
|
||||||
|
|
||||||
this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
|
||||||
this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, this._queueSyncMenuVisibility.bind(this));
|
this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, this._queueSyncMenuVisibility.bind(this));
|
||||||
@@ -86,7 +86,7 @@ class ATIndicator extends PanelMenu.Button {
|
|||||||
let alwaysShow = this._a11ySettings.get_boolean(KEY_ALWAYS_SHOW);
|
let alwaysShow = this._a11ySettings.get_boolean(KEY_ALWAYS_SHOW);
|
||||||
let items = this.menu._getMenuItems();
|
let items = this.menu._getMenuItems();
|
||||||
|
|
||||||
this.actor.visible = alwaysShow || items.some(f => !!f.state);
|
this.visible = alwaysShow || items.some(f => !!f.state);
|
||||||
|
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
@@ -112,38 +112,22 @@ class ATIndicator extends PanelMenu.Button {
|
|||||||
|
|
||||||
_buildItem(string, schema, key) {
|
_buildItem(string, schema, key) {
|
||||||
let settings = new Gio.Settings({ schema_id: schema });
|
let settings = new Gio.Settings({ schema_id: schema });
|
||||||
settings.connect('changed::'+key, () => {
|
let widget = this._buildItemExtended(string,
|
||||||
|
settings.get_boolean(key),
|
||||||
|
settings.is_writable(key),
|
||||||
|
enabled => settings.set_boolean(key, enabled));
|
||||||
|
|
||||||
|
settings.connect('changed::' + key, () => {
|
||||||
widget.setToggleState(settings.get_boolean(key));
|
widget.setToggleState(settings.get_boolean(key));
|
||||||
|
|
||||||
this._queueSyncMenuVisibility();
|
this._queueSyncMenuVisibility();
|
||||||
});
|
});
|
||||||
|
|
||||||
let widget = this._buildItemExtended(string,
|
|
||||||
settings.get_boolean(key),
|
|
||||||
settings.is_writable(key),
|
|
||||||
enabled => settings.set_boolean(key, enabled));
|
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
_buildHCItem() {
|
_buildHCItem() {
|
||||||
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
let interfaceSettings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||||
interfaceSettings.connect('changed::' + KEY_GTK_THEME, () => {
|
|
||||||
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
|
||||||
if (value == HIGH_CONTRAST_THEME) {
|
|
||||||
highContrast.setToggleState(true);
|
|
||||||
} else {
|
|
||||||
highContrast.setToggleState(false);
|
|
||||||
gtkTheme = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._queueSyncMenuVisibility();
|
|
||||||
});
|
|
||||||
interfaceSettings.connect('changed::' + KEY_ICON_THEME, () => {
|
|
||||||
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
|
||||||
if (value != HIGH_CONTRAST_THEME)
|
|
||||||
iconTheme = value;
|
|
||||||
});
|
|
||||||
|
|
||||||
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
|
let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||||
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
|
let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||||
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
|
let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
|
||||||
@@ -164,19 +148,30 @@ class ATIndicator extends PanelMenu.Button {
|
|||||||
interfaceSettings.reset(KEY_ICON_THEME);
|
interfaceSettings.reset(KEY_ICON_THEME);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
interfaceSettings.connect('changed::' + KEY_GTK_THEME, () => {
|
||||||
|
let value = interfaceSettings.get_string(KEY_GTK_THEME);
|
||||||
|
if (value == HIGH_CONTRAST_THEME) {
|
||||||
|
highContrast.setToggleState(true);
|
||||||
|
} else {
|
||||||
|
highContrast.setToggleState(false);
|
||||||
|
gtkTheme = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._queueSyncMenuVisibility();
|
||||||
|
});
|
||||||
|
|
||||||
|
interfaceSettings.connect('changed::' + KEY_ICON_THEME, () => {
|
||||||
|
let value = interfaceSettings.get_string(KEY_ICON_THEME);
|
||||||
|
if (value != HIGH_CONTRAST_THEME)
|
||||||
|
iconTheme = value;
|
||||||
|
});
|
||||||
|
|
||||||
return highContrast;
|
return highContrast;
|
||||||
}
|
}
|
||||||
|
|
||||||
_buildFontItem() {
|
_buildFontItem() {
|
||||||
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
let settings = new Gio.Settings({ schema_id: DESKTOP_INTERFACE_SCHEMA });
|
||||||
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, () => {
|
|
||||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
|
||||||
let active = (factor > 1.0);
|
|
||||||
widget.setToggleState(active);
|
|
||||||
|
|
||||||
this._queueSyncMenuVisibility();
|
|
||||||
});
|
|
||||||
|
|
||||||
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||||
let initial_setting = (factor > 1.0);
|
let initial_setting = (factor > 1.0);
|
||||||
let widget = this._buildItemExtended(_("Large Text"),
|
let widget = this._buildItemExtended(_("Large Text"),
|
||||||
@@ -189,6 +184,15 @@ class ATIndicator extends PanelMenu.Button {
|
|||||||
else
|
else
|
||||||
settings.reset(KEY_TEXT_SCALING_FACTOR);
|
settings.reset(KEY_TEXT_SCALING_FACTOR);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, () => {
|
||||||
|
let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
|
||||||
|
let active = (factor > 1.0);
|
||||||
|
widget.setToggleState(active);
|
||||||
|
|
||||||
|
this._queueSyncMenuVisibility();
|
||||||
|
});
|
||||||
|
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@@ -118,9 +118,9 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
// Remember if there were setup devices and show the menu
|
// Remember if there were setup devices and show the menu
|
||||||
// if we've seen setup devices and we're not hard blocked
|
// if we've seen setup devices and we're not hard blocked
|
||||||
if (nDevices > 0)
|
if (nDevices > 0)
|
||||||
this._item.actor.visible = !this._proxy.BluetoothHardwareAirplaneMode;
|
this._item.visible = !this._proxy.BluetoothHardwareAirplaneMode;
|
||||||
else
|
else
|
||||||
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
this._item.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
||||||
|
|
||||||
if (nConnectedDevices > 0)
|
if (nConnectedDevices > 0)
|
||||||
/* Translators: this is the number of connected bluetooth devices */
|
/* Translators: this is the number of connected bluetooth devices */
|
||||||
|
@@ -37,12 +37,12 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
let icon = new St.Icon({ icon_name: 'display-brightness-symbolic',
|
let icon = new St.Icon({ icon_name: 'display-brightness-symbolic',
|
||||||
style_class: 'popup-menu-icon' });
|
style_class: 'popup-menu-icon' });
|
||||||
this._item.actor.add(icon);
|
this._item.add(icon);
|
||||||
this._item.actor.add(this._slider.actor, { expand: true });
|
this._item.add(this._slider.actor, { expand: true });
|
||||||
this._item.actor.connect('button-press-event', (actor, event) => {
|
this._item.connect('button-press-event', (actor, event) => {
|
||||||
return this._slider.startDragging(event);
|
return this._slider.startDragging(event);
|
||||||
});
|
});
|
||||||
this._item.actor.connect('key-press-event', (actor, event) => {
|
this._item.connect('key-press-event', (actor, event) => {
|
||||||
return this._slider.onKeyPressEvent(actor, event);
|
return this._slider.onKeyPressEvent(actor, event);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
let visible = this._proxy.Brightness >= 0;
|
let visible = this._proxy.Brightness >= 0;
|
||||||
this._item.actor.visible = visible;
|
this._item.visible = visible;
|
||||||
if (visible)
|
if (visible)
|
||||||
this._slider.setValue(this._proxy.Brightness / 100.0);
|
this._slider.setValue(this._proxy.Brightness / 100.0);
|
||||||
}
|
}
|
||||||
|
86
js/ui/status/dwellClick.js
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
const { Clutter, Gio, GLib, GObject, St } = imports.gi;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
|
||||||
|
const MOUSE_A11Y_SCHEMA = 'org.gnome.desktop.a11y.mouse';
|
||||||
|
const KEY_DWELL_CLICK_ENABLED = 'dwell-click-enabled';
|
||||||
|
const KEY_DWELL_MODE = 'dwell-mode';
|
||||||
|
const DWELL_MODE_WINDOW = 'window';
|
||||||
|
const DWELL_CLICK_MODES = {
|
||||||
|
primary: {
|
||||||
|
name: _("Single Click"),
|
||||||
|
icon: 'pointer-primary-click-symbolic',
|
||||||
|
type: Clutter.PointerA11yDwellClickType.PRIMARY
|
||||||
|
},
|
||||||
|
double: {
|
||||||
|
name: _("Double Click"),
|
||||||
|
icon: 'pointer-double-click-symbolic',
|
||||||
|
type: Clutter.PointerA11yDwellClickType.DOUBLE
|
||||||
|
},
|
||||||
|
drag: {
|
||||||
|
name: _("Drag"),
|
||||||
|
icon: 'pointer-drag-symbolic',
|
||||||
|
type: Clutter.PointerA11yDwellClickType.DRAG
|
||||||
|
},
|
||||||
|
secondary: {
|
||||||
|
name: _("Secondary Click"),
|
||||||
|
icon: 'pointer-secondary-click-symbolic',
|
||||||
|
type: Clutter.PointerA11yDwellClickType.SECONDARY
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var DwellClickIndicator = GObject.registerClass(
|
||||||
|
class DwellClickIndicator extends PanelMenu.Button {
|
||||||
|
_init() {
|
||||||
|
super._init(0.0, _("Dwell Click"));
|
||||||
|
|
||||||
|
this._hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
|
||||||
|
this._icon = new St.Icon({ style_class: 'system-status-icon',
|
||||||
|
icon_name: 'pointer-primary-click-symbolic' });
|
||||||
|
this._hbox.add_child(this._icon);
|
||||||
|
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
|
|
||||||
|
this.add_child(this._hbox);
|
||||||
|
|
||||||
|
this._a11ySettings = new Gio.Settings({ schema_id: MOUSE_A11Y_SCHEMA });
|
||||||
|
this._a11ySettings.connect('changed::' + KEY_DWELL_CLICK_ENABLED, this._syncMenuVisibility.bind(this));
|
||||||
|
this._a11ySettings.connect('changed::' + KEY_DWELL_MODE, this._syncMenuVisibility.bind(this));
|
||||||
|
|
||||||
|
this._deviceManager = Clutter.DeviceManager.get_default();
|
||||||
|
this._deviceManager.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this));
|
||||||
|
|
||||||
|
this._addDwellAction(DWELL_CLICK_MODES.primary);
|
||||||
|
this._addDwellAction(DWELL_CLICK_MODES.double);
|
||||||
|
this._addDwellAction(DWELL_CLICK_MODES.drag);
|
||||||
|
this._addDwellAction(DWELL_CLICK_MODES.secondary);
|
||||||
|
|
||||||
|
this._setClickType(DWELL_CLICK_MODES.primary);
|
||||||
|
this._syncMenuVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
_syncMenuVisibility() {
|
||||||
|
this.visible =
|
||||||
|
(this._a11ySettings.get_boolean(KEY_DWELL_CLICK_ENABLED) &&
|
||||||
|
this._a11ySettings.get_string(KEY_DWELL_MODE) == DWELL_MODE_WINDOW);
|
||||||
|
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_addDwellAction(mode) {
|
||||||
|
this.menu.addAction(mode.name, this._setClickType.bind(this, mode), mode.icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateClickType(manager, click_type) {
|
||||||
|
for (let mode in DWELL_CLICK_MODES) {
|
||||||
|
if (DWELL_CLICK_MODES[mode].type == click_type)
|
||||||
|
this._icon.icon_name = DWELL_CLICK_MODES[mode].icon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_setClickType(mode) {
|
||||||
|
this._deviceManager.set_pointer_a11y_dwell_click_type(mode.type);
|
||||||
|
this._icon.icon_name = mode.icon;
|
||||||
|
}
|
||||||
|
});
|
@@ -15,17 +15,18 @@ const Util = imports.misc.util;
|
|||||||
const INPUT_SOURCE_TYPE_XKB = 'xkb';
|
const INPUT_SOURCE_TYPE_XKB = 'xkb';
|
||||||
const INPUT_SOURCE_TYPE_IBUS = 'ibus';
|
const INPUT_SOURCE_TYPE_IBUS = 'ibus';
|
||||||
|
|
||||||
var LayoutMenuItem = class extends PopupMenu.PopupBaseMenuItem {
|
var LayoutMenuItem = GObject.registerClass(
|
||||||
constructor(displayName, shortName) {
|
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||||
super();
|
_init(displayName, shortName) {
|
||||||
|
super._init();
|
||||||
|
|
||||||
this.label = new St.Label({ text: displayName });
|
this.label = new St.Label({ text: displayName });
|
||||||
this.indicator = new St.Label({ text: shortName });
|
this.indicator = new St.Label({ text: shortName });
|
||||||
this.actor.add(this.label, { expand: true });
|
this.add(this.label, { expand: true });
|
||||||
this.actor.add(this.indicator);
|
this.add(this.indicator);
|
||||||
this.actor.label_actor = this.label;
|
this.label_actor = this.label;
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var InputSource = class {
|
var InputSource = class {
|
||||||
constructor(type, id, displayName, shortName, index) {
|
constructor(type, id, displayName, shortName, index) {
|
||||||
@@ -125,8 +126,8 @@ class InputSourceSwitcher extends SwitcherPopup.SwitcherList {
|
|||||||
|
|
||||||
var InputSourceSettings = class {
|
var InputSourceSettings = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
if (new.target === InputSourceSettings)
|
if (this.constructor === InputSourceSettings)
|
||||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
_emitInputSourcesChanged() {
|
_emitInputSourcesChanged() {
|
||||||
@@ -822,7 +823,7 @@ class InputSourceIndicator extends PanelMenu.Button {
|
|||||||
this._hbox.add_child(this._container);
|
this._hbox.add_child(this._container);
|
||||||
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
this._hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
|
||||||
|
|
||||||
this.actor.add_child(this._hbox);
|
this.add_child(this._hbox);
|
||||||
|
|
||||||
this._propSeparator = new PopupMenu.PopupSeparatorMenuItem();
|
this._propSeparator = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(this._propSeparator);
|
this.menu.addMenuItem(this._propSeparator);
|
||||||
@@ -857,7 +858,7 @@ class InputSourceIndicator extends PanelMenu.Button {
|
|||||||
// but at least for now it is used as "allow popping up windows
|
// but at least for now it is used as "allow popping up windows
|
||||||
// from shell menus"; we can always add a separate sessionMode
|
// from shell menus"; we can always add a separate sessionMode
|
||||||
// option if need arises.
|
// option if need arises.
|
||||||
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
|
this._showLayoutItem.visible = Main.sessionMode.allowSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sourcesChanged() {
|
_sourcesChanged() {
|
||||||
@@ -908,11 +909,11 @@ class InputSourceIndicator extends PanelMenu.Button {
|
|||||||
// We also hide if we have only one visible source unless
|
// We also hide if we have only one visible source unless
|
||||||
// it's an IBus source with properties.
|
// it's an IBus source with properties.
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
this.actor.hide();
|
this.hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.actor.show();
|
this.show();
|
||||||
|
|
||||||
this._buildPropSection(newSource.properties);
|
this._buildPropSection(newSource.properties);
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, Shell } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Shell } = imports.gi;
|
||||||
|
|
||||||
const Dialog = imports.ui.dialog;
|
const Dialog = imports.ui.dialog;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -101,12 +101,12 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
_syncIndicator() {
|
_syncIndicator() {
|
||||||
if (this._managerProxy == null) {
|
if (this._managerProxy == null) {
|
||||||
this._indicator.visible = false;
|
this._indicator.visible = false;
|
||||||
this._item.actor.visible = false;
|
this._item.visible = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._indicator.visible = this._managerProxy.InUse;
|
this._indicator.visible = this._managerProxy.InUse;
|
||||||
this._item.actor.visible = this._indicator.visible;
|
this._item.visible = this._indicator.visible;
|
||||||
this._updateMenuLabels();
|
this._updateMenuLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,9 +342,11 @@ var AppAuthorizer = class {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var GeolocationDialog = class extends ModalDialog.ModalDialog {
|
var GeolocationDialog = GObject.registerClass({
|
||||||
constructor(name, subtitle, reqAccuracyLevel) {
|
Signals: { 'response': { param_types: [GObject.TYPE_UINT] } }
|
||||||
super({ styleClass: 'geolocation-dialog' });
|
}, class GeolocationDialog extends ModalDialog.ModalDialog {
|
||||||
|
_init(name, subtitle, reqAccuracyLevel) {
|
||||||
|
super._init({ styleClass: 'geolocation-dialog' });
|
||||||
this.reqAccuracyLevel = reqAccuracyLevel;
|
this.reqAccuracyLevel = reqAccuracyLevel;
|
||||||
|
|
||||||
let icon = new Gio.ThemedIcon({ name: 'find-location-symbolic' });
|
let icon = new Gio.ThemedIcon({ name: 'find-location-symbolic' });
|
||||||
@@ -375,5 +377,4 @@ var GeolocationDialog = class extends ModalDialog.ModalDialog {
|
|||||||
this.emit('response', GeoclueAccuracyLevel.NONE);
|
this.emit('response', GeoclueAccuracyLevel.NONE);
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(GeolocationDialog.prototype);
|
|
||||||
|
@@ -167,10 +167,10 @@ var NMConnectionItem = class {
|
|||||||
};
|
};
|
||||||
Signals.addSignalMethods(NMConnectionItem.prototype);
|
Signals.addSignalMethods(NMConnectionItem.prototype);
|
||||||
|
|
||||||
var NMConnectionSection = class {
|
var NMConnectionSection = class NMConnectionSection {
|
||||||
constructor(client) {
|
constructor(client) {
|
||||||
if (new.target === NMConnectionSection)
|
if (this.constructor === NMConnectionSection)
|
||||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||||
|
|
||||||
this._client = client;
|
this._client = client;
|
||||||
|
|
||||||
@@ -235,14 +235,14 @@ var NMConnectionSection = class {
|
|||||||
if (!this._connectionValid(connection))
|
if (!this._connectionValid(connection))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// This function is called everytime connection is added or updated
|
// This function is called every time the connection is added or updated.
|
||||||
// In the usual case, we already added this connection and UUID
|
// In the usual case, we already added this connection and UUID
|
||||||
// didn't change. So we need to check if we already have an item,
|
// didn't change. So we need to check if we already have an item,
|
||||||
// and update it for properties in the connection that changed
|
// and update it for properties in the connection that changed
|
||||||
// (the only one we care about is the name)
|
// (the only one we care about is the name)
|
||||||
// But it's also possible we didn't know about this connection
|
// But it's also possible we didn't know about this connection
|
||||||
// (eg, during coldplug, or because it was updated and suddenly
|
// (eg, during coldplug, or because it was updated and suddenly
|
||||||
// it's valid for this device), in which case we add a new item
|
// it's valid for this device), in which case we add a new item.
|
||||||
|
|
||||||
let item = this._connectionItems.get(connection.get_uuid());
|
let item = this._connectionItems.get(connection.get_uuid());
|
||||||
if (item)
|
if (item)
|
||||||
@@ -297,12 +297,13 @@ var NMConnectionSection = class {
|
|||||||
};
|
};
|
||||||
Signals.addSignalMethods(NMConnectionSection.prototype);
|
Signals.addSignalMethods(NMConnectionSection.prototype);
|
||||||
|
|
||||||
var NMConnectionDevice = class extends NMConnectionSection {
|
var NMConnectionDevice = class NMConnectionDevice extends NMConnectionSection {
|
||||||
constructor(client, device) {
|
constructor(client, device) {
|
||||||
if (new.target === NMConnectionDevice)
|
|
||||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
|
||||||
|
|
||||||
super(client);
|
super(client);
|
||||||
|
|
||||||
|
if (this.constructor === NMConnectionDevice)
|
||||||
|
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||||
|
|
||||||
this._device = device;
|
this._device = device;
|
||||||
this._description = '';
|
this._description = '';
|
||||||
|
|
||||||
@@ -388,8 +389,8 @@ var NMConnectionDevice = class extends NMConnectionSection {
|
|||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
let nItems = this._connectionItems.size;
|
let nItems = this._connectionItems.size;
|
||||||
this._autoConnectItem.actor.visible = (nItems == 0);
|
this._autoConnectItem.visible = (nItems == 0);
|
||||||
this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED;
|
this._deactivateItem.visible = this._device.state > NM.DeviceState.DISCONNECTED;
|
||||||
|
|
||||||
if (this._activeConnection == null) {
|
if (this._activeConnection == null) {
|
||||||
let activeConnection = this._device.active_connection;
|
let activeConnection = this._device.active_connection;
|
||||||
@@ -476,7 +477,7 @@ var NMDeviceWired = class extends NMConnectionDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
this.item.actor.visible = this._hasCarrier();
|
this.item.visible = this._hasCarrier();
|
||||||
super._sync();
|
super._sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,31 +613,36 @@ var NMDeviceBluetooth = class extends NMConnectionDevice {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var NMWirelessDialogItem = class {
|
var NMWirelessDialogItem = GObject.registerClass({
|
||||||
constructor(network) {
|
Signals: {
|
||||||
|
'selected': {},
|
||||||
|
}
|
||||||
|
}, class NMWirelessDialogItem extends St.BoxLayout {
|
||||||
|
_init(network) {
|
||||||
this._network = network;
|
this._network = network;
|
||||||
this._ap = network.accessPoints[0];
|
this._ap = network.accessPoints[0];
|
||||||
|
|
||||||
this.actor = new St.BoxLayout({ style_class: 'nm-dialog-item',
|
super._init({ style_class: 'nm-dialog-item',
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
reactive: true });
|
reactive: true });
|
||||||
this.actor.connect('key-focus-in', () => { this.emit('selected'); });
|
|
||||||
|
this.connect('key-focus-in', () => { this.emit('selected'); });
|
||||||
let action = new Clutter.ClickAction();
|
let action = new Clutter.ClickAction();
|
||||||
action.connect('clicked', () => { this.actor.grab_key_focus(); });
|
action.connect('clicked', () => { this.grab_key_focus(); });
|
||||||
this.actor.add_action(action);
|
this.add_action(action);
|
||||||
|
|
||||||
let title = ssidToLabel(this._ap.get_ssid());
|
let title = ssidToLabel(this._ap.get_ssid());
|
||||||
this._label = new St.Label({ text: title });
|
this._label = new St.Label({ text: title });
|
||||||
|
|
||||||
this.actor.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
this.actor.add(this._label, { x_align: St.Align.START });
|
this.add(this._label, { x_align: St.Align.START });
|
||||||
|
|
||||||
this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
|
this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
|
||||||
icon_name: 'object-select-symbolic' });
|
icon_name: 'object-select-symbolic' });
|
||||||
this.actor.add(this._selectedIcon);
|
this.add(this._selectedIcon);
|
||||||
|
|
||||||
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
|
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
|
||||||
this.actor.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
|
this.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
|
||||||
|
|
||||||
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
|
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
|
||||||
if (this._ap._secType != NMAccessPointSecurity.NONE)
|
if (this._ap._secType != NMAccessPointSecurity.NONE)
|
||||||
@@ -668,12 +674,12 @@ var NMWirelessDialogItem = class {
|
|||||||
else
|
else
|
||||||
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
|
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
Signals.addSignalMethods(NMWirelessDialogItem.prototype);
|
|
||||||
|
|
||||||
var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
var NMWirelessDialog = GObject.registerClass(
|
||||||
constructor(client, device) {
|
class NMWirelessDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'nm-dialog' });
|
_init(client, device) {
|
||||||
|
super._init({ styleClass: 'nm-dialog' });
|
||||||
|
|
||||||
this._client = client;
|
this._client = client;
|
||||||
this._device = device;
|
this._device = device;
|
||||||
@@ -719,9 +725,11 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
Main.sessionMode.disconnect(id);
|
Main.sessionMode.disconnect(id);
|
||||||
this.close();
|
this.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
_onDestroy() {
|
||||||
if (this._apAddedId) {
|
if (this._apAddedId) {
|
||||||
GObject.Object.prototype.disconnect.call(this._device, this._apAddedId);
|
GObject.Object.prototype.disconnect.call(this._device, this._apAddedId);
|
||||||
this._apAddedId = 0;
|
this._apAddedId = 0;
|
||||||
@@ -747,8 +755,6 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
Mainloop.source_remove(this._scanTimeoutId);
|
Mainloop.source_remove(this._scanTimeoutId);
|
||||||
this._scanTimeoutId = 0;
|
this._scanTimeoutId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
super.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_onScanTimeout() {
|
_onScanTimeout() {
|
||||||
@@ -1075,7 +1081,7 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
let newPos = Util.insertSorted(this._networks, network, this._networkSortFunction);
|
let newPos = Util.insertSorted(this._networks, network, this._networkSortFunction);
|
||||||
this._createNetworkItem(network);
|
this._createNetworkItem(network);
|
||||||
this._itemBox.insert_child_at_index(network.item.actor, newPos);
|
this._itemBox.insert_child_at_index(network.item, newPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._syncView();
|
this._syncView();
|
||||||
@@ -1093,7 +1099,7 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
network.accessPoints.splice(res.ap, 1);
|
network.accessPoints.splice(res.ap, 1);
|
||||||
|
|
||||||
if (network.accessPoints.length == 0) {
|
if (network.accessPoints.length == 0) {
|
||||||
network.item.actor.destroy();
|
network.item.destroy();
|
||||||
this._networks.splice(res.network, 1);
|
this._networks.splice(res.network, 1);
|
||||||
} else {
|
} else {
|
||||||
network.item.updateBestAP(network.accessPoints[0]);
|
network.item.updateBestAP(network.accessPoints[0]);
|
||||||
@@ -1109,7 +1115,7 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
this._itemBox.remove_all_children();
|
this._itemBox.remove_all_children();
|
||||||
this._networks.forEach(network => {
|
this._networks.forEach(network => {
|
||||||
this._itemBox.add_child(network.item.actor);
|
this._itemBox.add_child(network.item);
|
||||||
});
|
});
|
||||||
|
|
||||||
adjustment.value = scrollValue;
|
adjustment.value = scrollValue;
|
||||||
@@ -1117,29 +1123,29 @@ var NMWirelessDialog = class extends ModalDialog.ModalDialog {
|
|||||||
|
|
||||||
_selectNetwork(network) {
|
_selectNetwork(network) {
|
||||||
if (this._selectedNetwork)
|
if (this._selectedNetwork)
|
||||||
this._selectedNetwork.item.actor.remove_style_pseudo_class('selected');
|
this._selectedNetwork.item.remove_style_pseudo_class('selected');
|
||||||
|
|
||||||
this._selectedNetwork = network;
|
this._selectedNetwork = network;
|
||||||
this._updateSensitivity();
|
this._updateSensitivity();
|
||||||
|
|
||||||
if (this._selectedNetwork)
|
if (this._selectedNetwork)
|
||||||
this._selectedNetwork.item.actor.add_style_pseudo_class('selected');
|
this._selectedNetwork.item.add_style_pseudo_class('selected');
|
||||||
}
|
}
|
||||||
|
|
||||||
_createNetworkItem(network) {
|
_createNetworkItem(network) {
|
||||||
network.item = new NMWirelessDialogItem(network);
|
network.item = new NMWirelessDialogItem(network);
|
||||||
network.item.setActive(network == this._selectedNetwork);
|
network.item.setActive(network == this._selectedNetwork);
|
||||||
network.item.connect('selected', () => {
|
network.item.connect('selected', () => {
|
||||||
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
|
Util.ensureActorVisibleInScrollView(this._scrollView, network.item);
|
||||||
this._selectNetwork(network);
|
this._selectNetwork(network);
|
||||||
});
|
});
|
||||||
network.item.actor.connect('destroy', () => {
|
network.item.connect('destroy', () => {
|
||||||
let keyFocus = global.stage.key_focus;
|
let keyFocus = global.stage.key_focus;
|
||||||
if (keyFocus && keyFocus.contains(network.item.actor))
|
if (keyFocus && keyFocus.contains(network.item))
|
||||||
this._itemBox.grab_key_focus();
|
this._itemBox.grab_key_focus();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var NMDeviceWireless = class {
|
var NMDeviceWireless = class {
|
||||||
constructor(client, device) {
|
constructor(client, device) {
|
||||||
@@ -1261,7 +1267,7 @@ var NMDeviceWireless = class {
|
|||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
|
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
|
||||||
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
|
this._toggleItem.visible = this._client.wireless_hardware_enabled;
|
||||||
|
|
||||||
this.item.icon.icon_name = this._getMenuIcon();
|
this.item.icon.icon_name = this._getMenuIcon();
|
||||||
this.item.label.text = this._getStatus();
|
this.item.label.text = this._getStatus();
|
||||||
@@ -1451,7 +1457,7 @@ var NMVpnSection = class extends NMConnectionSection {
|
|||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
let nItems = this._connectionItems.size;
|
let nItems = this._connectionItems.size;
|
||||||
this.item.actor.visible = (nItems > 0);
|
this.item.visible = (nItems > 0);
|
||||||
|
|
||||||
super._sync();
|
super._sync();
|
||||||
}
|
}
|
||||||
@@ -1534,7 +1540,7 @@ var DeviceCategory = class extends PopupMenu.PopupMenuSection {
|
|||||||
|
|
||||||
this._summaryItem.menu.addSettingsAction(_('Network Settings'),
|
this._summaryItem.menu.addSettingsAction(_('Network Settings'),
|
||||||
'gnome-network-panel.desktop');
|
'gnome-network-panel.desktop');
|
||||||
this._summaryItem.actor.hide();
|
this._summaryItem.hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1543,7 +1549,7 @@ var DeviceCategory = class extends PopupMenu.PopupMenuSection {
|
|||||||
(prev, child) => prev + (child.visible ? 1 : 0), 0);
|
(prev, child) => prev + (child.visible ? 1 : 0), 0);
|
||||||
this._summaryItem.label.text = this._getSummaryLabel(nDevices);
|
this._summaryItem.label.text = this._getSummaryLabel(nDevices);
|
||||||
let shouldSummarize = nDevices > MAX_DEVICE_ITEMS;
|
let shouldSummarize = nDevices > MAX_DEVICE_ITEMS;
|
||||||
this._summaryItem.actor.visible = shouldSummarize;
|
this._summaryItem.visible = shouldSummarize;
|
||||||
this.section.actor.visible = !shouldSummarize;
|
this.section.actor.visible = !shouldSummarize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1730,14 +1736,24 @@ var NMApplet = class extends PanelMenu.SystemIndicator {
|
|||||||
this._addDeviceWrapper(wrapper);
|
this._addDeviceWrapper(wrapper);
|
||||||
|
|
||||||
this._nmDevices.push(device);
|
this._nmDevices.push(device);
|
||||||
if (!skipSyncDeviceNames)
|
this._deviceChanged(device, skipSyncDeviceNames);
|
||||||
this._syncDeviceNames();
|
|
||||||
|
|
||||||
if (wrapper instanceof NMConnectionSection) {
|
device.connect('notify::interface', () => {
|
||||||
this._connections.forEach(connection => {
|
this._deviceChanged(device, false);
|
||||||
wrapper.checkConnection(connection);
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_deviceChanged(device, skipSyncDeviceNames) {
|
||||||
|
let wrapper = device._delegate;
|
||||||
|
|
||||||
|
if (!skipSyncDeviceNames)
|
||||||
|
this._syncDeviceNames();
|
||||||
|
|
||||||
|
if (wrapper instanceof NMConnectionSection) {
|
||||||
|
this._connections.forEach(connection => {
|
||||||
|
wrapper.checkConnection(connection);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,6 +61,6 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
: _("Night Light On");
|
: _("Night Light On");
|
||||||
this._disableItem.label.text = disabled ? _("Resume")
|
this._disableItem.label.text = disabled ? _("Resume")
|
||||||
: _("Disable Until Tomorrow");
|
: _("Disable Until Tomorrow");
|
||||||
this._item.actor.visible = this._indicator.visible = visible;
|
this._item.visible = this._indicator.visible = visible;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -96,11 +96,11 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
// Do we have batteries or a UPS?
|
// Do we have batteries or a UPS?
|
||||||
let visible = this._proxy.IsPresent;
|
let visible = this._proxy.IsPresent;
|
||||||
if (visible) {
|
if (visible) {
|
||||||
this._item.actor.show();
|
this._item.show();
|
||||||
this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE);
|
this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE);
|
||||||
} else {
|
} else {
|
||||||
// If there's no battery, then we use the power icon.
|
// If there's no battery, then we use the power icon.
|
||||||
this._item.actor.hide();
|
this._item.hide();
|
||||||
this._indicator.icon_name = 'system-shutdown-symbolic';
|
this._indicator.icon_name = 'system-shutdown-symbolic';
|
||||||
this._percentageLabel.hide();
|
this._percentageLabel.hide();
|
||||||
return;
|
return;
|
||||||
|
@@ -53,10 +53,10 @@ var RemoteAccessApplet = class extends PanelMenu.SystemIndicator {
|
|||||||
_sync() {
|
_sync() {
|
||||||
if (this._handles.size == 0) {
|
if (this._handles.size == 0) {
|
||||||
this._indicator.visible = false;
|
this._indicator.visible = false;
|
||||||
this._item.actor.visible = false;
|
this._item.visible = false;
|
||||||
} else {
|
} else {
|
||||||
this._indicator.visible = true;
|
this._indicator.visible = true;
|
||||||
this._item.actor.visible = true;
|
this._item.visible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -97,7 +97,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
|
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
|
||||||
|
|
||||||
this._indicator.visible = (airplaneMode && showAirplaneMode);
|
this._indicator.visible = (airplaneMode && showAirplaneMode);
|
||||||
this._item.actor.visible = (airplaneMode && showAirplaneMode);
|
this._item.visible = (airplaneMode && showAirplaneMode);
|
||||||
this._offItem.setSensitive(!hwAirplaneMode);
|
this._offItem.setSensitive(!hwAirplaneMode);
|
||||||
|
|
||||||
if (hwAirplaneMode)
|
if (hwAirplaneMode)
|
||||||
|
@@ -116,10 +116,10 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
this._createSubMenu();
|
this._createSubMenu();
|
||||||
|
|
||||||
this._loginScreenItem.actor.connect('notify::visible',
|
this._loginScreenItem.connect('notify::visible',
|
||||||
() => { this._updateMultiUser(); });
|
() => { this._updateMultiUser(); });
|
||||||
this._logoutItem.actor.connect('notify::visible',
|
this._logoutItem.connect('notify::visible',
|
||||||
() => { this._updateMultiUser(); });
|
() => { this._updateMultiUser(); });
|
||||||
// Whether shutdown is available or not depends on both lockdown
|
// Whether shutdown is available or not depends on both lockdown
|
||||||
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
||||||
// notify, so we update the menu item each time the menu opens or
|
// notify, so we update the menu item each time the menu opens or
|
||||||
@@ -142,7 +142,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
this._lockScreenAction.visible ||
|
this._lockScreenAction.visible ||
|
||||||
this._altSwitcher.actor.visible);
|
this._altSwitcher.actor.visible);
|
||||||
|
|
||||||
this._actionsItem.actor.visible = visible;
|
this.buttonGroup.visible = visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sessionUpdated() {
|
_sessionUpdated() {
|
||||||
@@ -150,10 +150,10 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_updateMultiUser() {
|
_updateMultiUser() {
|
||||||
let hasSwitchUser = this._loginScreenItem.actor.visible;
|
let hasSwitchUser = this._loginScreenItem.visible;
|
||||||
let hasLogout = this._logoutItem.actor.visible;
|
let hasLogout = this._logoutItem.visible;
|
||||||
|
|
||||||
this._switchUserSubMenu.actor.visible = hasSwitchUser || hasLogout;
|
this._switchUserSubMenu.visible = hasSwitchUser || hasLogout;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateSwitchUserSubMenu() {
|
_updateSwitchUserSubMenu() {
|
||||||
@@ -208,7 +208,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
this._switchUserSubMenu.menu.addMenuItem(item);
|
this._switchUserSubMenu.menu.addMenuItem(item);
|
||||||
this._loginScreenItem = item;
|
this._loginScreenItem = item;
|
||||||
this._systemActions.bind_property('can-switch-user',
|
this._systemActions.bind_property('can-switch-user',
|
||||||
this._loginScreenItem.actor,
|
this._loginScreenItem,
|
||||||
'visible',
|
'visible',
|
||||||
bindFlags);
|
bindFlags);
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
this._switchUserSubMenu.menu.addMenuItem(item);
|
this._switchUserSubMenu.menu.addMenuItem(item);
|
||||||
this._logoutItem = item;
|
this._logoutItem = item;
|
||||||
this._systemActions.bind_property('can-logout',
|
this._systemActions.bind_property('can-logout',
|
||||||
this._logoutItem.actor,
|
this._logoutItem,
|
||||||
'visible',
|
'visible',
|
||||||
bindFlags);
|
bindFlags);
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
|
item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
|
||||||
can_focus: false });
|
can_focus: false });
|
||||||
this.buttonGroup = item.actor;
|
this.buttonGroup = item;
|
||||||
|
|
||||||
let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
|
let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
|
||||||
'gnome-control-center.desktop'
|
'gnome-control-center.desktop'
|
||||||
@@ -251,14 +251,14 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
log('Missing required core component Settings, expect trouble…');
|
log('Missing required core component Settings, expect trouble…');
|
||||||
this._settingsAction = new St.Widget();
|
this._settingsAction = new St.Widget();
|
||||||
}
|
}
|
||||||
item.actor.add(this._settingsAction, { expand: true, x_fill: false });
|
item.add(this._settingsAction, { expand: true, x_fill: false });
|
||||||
|
|
||||||
this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
|
this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
|
||||||
this._orientationLockAction.connect('clicked', () => {
|
this._orientationLockAction.connect('clicked', () => {
|
||||||
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE),
|
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE),
|
||||||
this._systemActions.activateLockOrientation();
|
this._systemActions.activateLockOrientation();
|
||||||
});
|
});
|
||||||
item.actor.add(this._orientationLockAction, { expand: true, x_fill: false });
|
item.add(this._orientationLockAction, { expand: true, x_fill: false });
|
||||||
this._systemActions.bind_property('can-lock-orientation',
|
this._systemActions.bind_property('can-lock-orientation',
|
||||||
this._orientationLockAction,
|
this._orientationLockAction,
|
||||||
'visible',
|
'visible',
|
||||||
@@ -273,7 +273,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
||||||
this._systemActions.activateLockScreen();
|
this._systemActions.activateLockScreen();
|
||||||
});
|
});
|
||||||
item.actor.add(this._lockScreenAction, { expand: true, x_fill: false });
|
item.add(this._lockScreenAction, { expand: true, x_fill: false });
|
||||||
this._systemActions.bind_property('can-lock-screen',
|
this._systemActions.bind_property('can-lock-screen',
|
||||||
this._lockScreenAction,
|
this._lockScreenAction,
|
||||||
'visible',
|
'visible',
|
||||||
@@ -300,9 +300,8 @@ var Indicator = class extends PanelMenu.SystemIndicator {
|
|||||||
bindFlags);
|
bindFlags);
|
||||||
|
|
||||||
this._altSwitcher = new AltSwitcher(this._powerOffAction, this._suspendAction);
|
this._altSwitcher = new AltSwitcher(this._powerOffAction, this._suspendAction);
|
||||||
item.actor.add(this._altSwitcher.actor, { expand: true, x_fill: false });
|
item.add(this._altSwitcher.actor, { expand: true, x_fill: false });
|
||||||
|
|
||||||
this._actionsItem = item;
|
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -41,12 +41,12 @@ var StreamSlider = class {
|
|||||||
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
|
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
|
||||||
|
|
||||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||||
this.item.actor.add(this._icon);
|
this.item.add(this._icon);
|
||||||
this.item.actor.add(this._slider.actor, { expand: true });
|
this.item.add(this._slider.actor, { expand: true });
|
||||||
this.item.actor.connect('button-press-event', (actor, event) => {
|
this.item.connect('button-press-event', (actor, event) => {
|
||||||
return this._slider.startDragging(event);
|
return this._slider.startDragging(event);
|
||||||
});
|
});
|
||||||
this.item.actor.connect('key-press-event', (actor, event) => {
|
this.item.connect('key-press-event', (actor, event) => {
|
||||||
return this._slider.onKeyPressEvent(actor, event);
|
return this._slider.onKeyPressEvent(actor, event);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ var StreamSlider = class {
|
|||||||
|
|
||||||
_updateVisibility() {
|
_updateVisibility() {
|
||||||
let visible = this._shouldBeVisible();
|
let visible = this._shouldBeVisible();
|
||||||
this.item.actor.visible = visible;
|
this.item.visible = visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
scroll(event) {
|
scroll(event) {
|
||||||
|
@@ -30,12 +30,10 @@ function primaryModifier(mask) {
|
|||||||
return primary;
|
return primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
var SwitcherPopup = GObject.registerClass(
|
var SwitcherPopup = GObject.registerClass({
|
||||||
class SwitcherPopup extends St.Widget {
|
GTypeFlags: GObject.TypeFlags.ABSTRACT
|
||||||
|
}, class SwitcherPopup extends St.Widget {
|
||||||
_init(items) {
|
_init(items) {
|
||||||
if (new.target === SwitcherPopup)
|
|
||||||
throw new TypeError('Cannot instantiate abstract class ' + new.target.name);
|
|
||||||
|
|
||||||
super._init({ style_class: 'switcher-popup',
|
super._init({ style_class: 'switcher-popup',
|
||||||
reactive: true,
|
reactive: true,
|
||||||
visible: false });
|
visible: false });
|
||||||
@@ -164,7 +162,7 @@ class SwitcherPopup extends St.Widget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_keyPressHandler(keysym, action) {
|
_keyPressHandler(keysym, action) {
|
||||||
throw new Error('Not implemented');
|
throw new GObject.NotImplementedError(`_keyPressHandler in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
_keyPressEvent(actor, event) {
|
_keyPressEvent(actor, event) {
|
||||||
|
@@ -152,7 +152,7 @@ function registerSpecialPropertySplitter(name, splitFunction, parameters) {
|
|||||||
// Tweener to a Clutter.TimeLine. Now, Clutter.Timeline itself isn't a
|
// Tweener to a Clutter.TimeLine. Now, Clutter.Timeline itself isn't a
|
||||||
// whole lot more sophisticated than a simple timeout at a fixed frame
|
// whole lot more sophisticated than a simple timeout at a fixed frame
|
||||||
// rate, but at least it knows how to drop frames. (See
|
// rate, but at least it knows how to drop frames. (See
|
||||||
// HippoAnimationManager for a more sophisticated view of continous
|
// HippoAnimationManager for a more sophisticated view of continuous
|
||||||
// time updates; even better is to pay attention to the vertical
|
// time updates; even better is to pay attention to the vertical
|
||||||
// vblank and sync to that when possible.)
|
// vblank and sync to that when possible.)
|
||||||
//
|
//
|
||||||
|
@@ -69,8 +69,6 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
|
|||||||
() => { this.destroy(); }));
|
() => { this.destroy(); }));
|
||||||
this.signalIDs.push(this._window.connect('unmanaged',
|
this.signalIDs.push(this._window.connect('unmanaged',
|
||||||
() => { this.destroy(); }));
|
() => { this.destroy(); }));
|
||||||
|
|
||||||
this.connect('destroy', this._onDestroy.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_sync() {
|
_sync() {
|
||||||
@@ -79,13 +77,6 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
|
||||||
for(let i = 0; i < this.signalIDs.length; i++) {
|
|
||||||
this._window.disconnect(this.signalIDs[i]);
|
|
||||||
}
|
|
||||||
this.signalIDs = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
_createPolicy() {
|
_createPolicy() {
|
||||||
if (this._app && this._app.get_app_info()) {
|
if (this._app && this._app.get_app_info()) {
|
||||||
let id = this._app.get_id().replace(/\.desktop$/,'');
|
let id = this._app.get_id().replace(/\.desktop$/,'');
|
||||||
@@ -99,6 +90,14 @@ var Source = class WindowAttentionSource extends MessageTray.Source {
|
|||||||
return this._app.create_icon_texture(size);
|
return this._app.create_icon_texture(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
destroy(params) {
|
||||||
|
for (let i = 0; i < this.signalIDs.length; i++)
|
||||||
|
this._window.disconnect(this.signalIDs[i]);
|
||||||
|
this.signalIDs = [];
|
||||||
|
|
||||||
|
super.destroy(params);
|
||||||
|
}
|
||||||
|
|
||||||
open() {
|
open() {
|
||||||
Main.activateWindow(this._window);
|
Main.activateWindow(this._window);
|
||||||
}
|
}
|
||||||
|
@@ -40,9 +40,10 @@ const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
|
|||||||
const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
|
const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
|
||||||
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
|
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
|
||||||
|
|
||||||
var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
|
var DisplayChangeDialog = GObject.registerClass(
|
||||||
constructor(wm) {
|
class DisplayChangeDialog extends ModalDialog.ModalDialog {
|
||||||
super({ styleClass: 'prompt-dialog' });
|
_init(wm) {
|
||||||
|
super._init({ styleClass: 'prompt-dialog' });
|
||||||
|
|
||||||
this._wm = wm;
|
this._wm = wm;
|
||||||
|
|
||||||
@@ -59,7 +60,7 @@ var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
|
|||||||
{ x_fill: true,
|
{ x_fill: true,
|
||||||
y_fill: true });
|
y_fill: true });
|
||||||
|
|
||||||
/* Translators: this and the following message should be limited in lenght,
|
/* Translators: this and the following message should be limited in length,
|
||||||
to avoid ellipsizing the labels.
|
to avoid ellipsizing the labels.
|
||||||
*/
|
*/
|
||||||
this._cancelButton = this.addButton({ label: _("Revert Settings"),
|
this._cancelButton = this.addButton({ label: _("Revert Settings"),
|
||||||
@@ -111,7 +112,7 @@ var DisplayChangeDialog = class extends ModalDialog.ModalDialog {
|
|||||||
this._wm.complete_display_change(true);
|
this._wm.complete_display_change(true);
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
var WindowDimmer = class {
|
var WindowDimmer = class {
|
||||||
constructor(actor) {
|
constructor(actor) {
|
||||||
@@ -1488,8 +1489,13 @@ var WindowManager = class {
|
|||||||
if (this._clearAnimationInfo(actor))
|
if (this._clearAnimationInfo(actor))
|
||||||
this._shellwm.completed_size_change(actor);
|
this._shellwm.completed_size_change(actor);
|
||||||
|
|
||||||
|
let destroyId = actor.connect('destroy', () => {
|
||||||
|
this._clearAnimationInfo(actor);
|
||||||
|
});
|
||||||
|
|
||||||
actor.__animationInfo = { clone: actorClone,
|
actor.__animationInfo = { clone: actorClone,
|
||||||
oldRect: oldFrameRect };
|
oldRect: oldFrameRect,
|
||||||
|
destroyId: destroyId };
|
||||||
}
|
}
|
||||||
|
|
||||||
_sizeChangedWindow(shellwm, actor) {
|
_sizeChangedWindow(shellwm, actor) {
|
||||||
@@ -1550,6 +1556,7 @@ var WindowManager = class {
|
|||||||
_clearAnimationInfo(actor) {
|
_clearAnimationInfo(actor) {
|
||||||
if (actor.__animationInfo) {
|
if (actor.__animationInfo) {
|
||||||
actor.__animationInfo.clone.destroy();
|
actor.__animationInfo.clone.destroy();
|
||||||
|
actor.disconnect(actor.__animationInfo.destroyId);
|
||||||
delete actor.__animationInfo;
|
delete actor.__animationInfo;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1864,17 +1871,25 @@ var WindowManager = class {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_getPositionForDirection(direction) {
|
_getPositionForDirection(direction, fromWs, toWs) {
|
||||||
let xDest = 0, yDest = 0;
|
let xDest = 0, yDest = 0;
|
||||||
|
|
||||||
|
let oldWsIsFullscreen = fromWs.list_windows().some(w => w.is_fullscreen());
|
||||||
|
let newWsIsFullscreen = toWs.list_windows().some(w => w.is_fullscreen());
|
||||||
|
|
||||||
|
// We have to shift windows up or down by the height of the panel to prevent having a
|
||||||
|
// visible gap between the windows while switching workspaces. Since fullscreen windows
|
||||||
|
// hide the panel, they don't need to be shifted up or down.
|
||||||
|
let shiftHeight = Main.panel.height;
|
||||||
|
|
||||||
if (direction == Meta.MotionDirection.UP ||
|
if (direction == Meta.MotionDirection.UP ||
|
||||||
direction == Meta.MotionDirection.UP_LEFT ||
|
direction == Meta.MotionDirection.UP_LEFT ||
|
||||||
direction == Meta.MotionDirection.UP_RIGHT)
|
direction == Meta.MotionDirection.UP_RIGHT)
|
||||||
yDest = -global.screen_height + Main.panel.height;
|
yDest = -global.screen_height + (oldWsIsFullscreen ? 0 : shiftHeight);
|
||||||
else if (direction == Meta.MotionDirection.DOWN ||
|
else if (direction == Meta.MotionDirection.DOWN ||
|
||||||
direction == Meta.MotionDirection.DOWN_LEFT ||
|
direction == Meta.MotionDirection.DOWN_LEFT ||
|
||||||
direction == Meta.MotionDirection.DOWN_RIGHT)
|
direction == Meta.MotionDirection.DOWN_RIGHT)
|
||||||
yDest = global.screen_height - Main.panel.height;
|
yDest = global.screen_height - (newWsIsFullscreen ? 0 : shiftHeight);
|
||||||
|
|
||||||
if (direction == Meta.MotionDirection.LEFT ||
|
if (direction == Meta.MotionDirection.LEFT ||
|
||||||
direction == Meta.MotionDirection.UP_LEFT ||
|
direction == Meta.MotionDirection.UP_LEFT ||
|
||||||
@@ -1932,7 +1947,7 @@ var WindowManager = class {
|
|||||||
switchData.container.add_actor(info.actor);
|
switchData.container.add_actor(info.actor);
|
||||||
info.actor.raise_top();
|
info.actor.raise_top();
|
||||||
|
|
||||||
let [x, y] = this._getPositionForDirection(dir);
|
let [x, y] = this._getPositionForDirection(dir, curWs, ws);
|
||||||
info.actor.set_position(x, y);
|
info.actor.set_position(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2018,7 +2033,11 @@ var WindowManager = class {
|
|||||||
|
|
||||||
this._switchData.inProgress = true;
|
this._switchData.inProgress = true;
|
||||||
|
|
||||||
let [xDest, yDest] = this._getPositionForDirection(direction);
|
let workspaceManager = global.workspace_manager;
|
||||||
|
let fromWs = workspaceManager.get_workspace_by_index(from);
|
||||||
|
let toWs = workspaceManager.get_workspace_by_index(to);
|
||||||
|
|
||||||
|
let [xDest, yDest] = this._getPositionForDirection(direction, fromWs, toWs);
|
||||||
|
|
||||||
/* @direction is the direction that the "camera" moves, so the
|
/* @direction is the direction that the "camera" moves, so the
|
||||||
* screen contents have to move one screen's worth in the
|
* screen contents have to move one screen's worth in the
|
||||||
@@ -2102,7 +2121,14 @@ var WindowManager = class {
|
|||||||
Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask());
|
Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_allowFavoriteShortcuts() {
|
||||||
|
return Main.sessionMode.hasOverview;
|
||||||
|
}
|
||||||
|
|
||||||
_switchToApplication(display, window, binding) {
|
_switchToApplication(display, window, binding) {
|
||||||
|
if (!this._allowFavoriteShortcuts())
|
||||||
|
return;
|
||||||
|
|
||||||
let [,,,target] = binding.get_name().split('-');
|
let [,,,target] = binding.get_name().split('-');
|
||||||
let apps = AppFavorites.getAppFavorites().getFavorites();
|
let apps = AppFavorites.getAppFavorites().getFavorites();
|
||||||
let app = apps[target - 1];
|
let app = apps[target - 1];
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
|
||||||
|
|
||||||
const { Meta, St } = imports.gi;
|
const { GLib, Meta, St } = imports.gi;
|
||||||
|
|
||||||
const BoxPointer = imports.ui.boxpointer;
|
const BoxPointer = imports.ui.boxpointer;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@@ -42,13 +42,13 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
|
|||||||
item.setSensitive(false);
|
item.setSensitive(false);
|
||||||
|
|
||||||
item = this.addAction(_("Move"), event => {
|
item = this.addAction(_("Move"), event => {
|
||||||
window.begin_grab_op(Meta.GrabOp.KEYBOARD_MOVING, true, event.get_time());
|
this._grabAction(window, Meta.GrabOp.KEYBOARD_MOVING, event.get_time());
|
||||||
});
|
});
|
||||||
if (!window.allows_move())
|
if (!window.allows_move())
|
||||||
item.setSensitive(false);
|
item.setSensitive(false);
|
||||||
|
|
||||||
item = this.addAction(_("Resize"), event => {
|
item = this.addAction(_("Resize"), event => {
|
||||||
window.begin_grab_op(Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, true, event.get_time());
|
this._grabAction(window, Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, event.get_time());
|
||||||
});
|
});
|
||||||
if (!window.allows_resize())
|
if (!window.allows_resize())
|
||||||
item.setSensitive(false);
|
item.setSensitive(false);
|
||||||
@@ -169,11 +169,31 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
|
|||||||
if (!window.can_close())
|
if (!window.can_close())
|
||||||
item.setSensitive(false);
|
item.setSensitive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_grabAction(window, grabOp, time) {
|
||||||
|
if (global.display.get_grab_op() == Meta.GrabOp.NONE) {
|
||||||
|
window.begin_grab_op(grabOp, true, time);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let waitId = 0;
|
||||||
|
let id = global.display.connect('grab-op-end', (display) => {
|
||||||
|
display.disconnect(id);
|
||||||
|
GLib.source_remove(waitId);
|
||||||
|
|
||||||
|
window.begin_grab_op(grabOp, true, time);
|
||||||
|
});
|
||||||
|
|
||||||
|
waitId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
|
||||||
|
global.display.disconnect(id);
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var WindowMenuManager = class {
|
var WindowMenuManager = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
|
this._manager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor);
|
||||||
|
|
||||||
this._sourceActor = new St.Widget({ reactive: true, visible: false });
|
this._sourceActor = new St.Widget({ reactive: true, visible: false });
|
||||||
this._sourceActor.connect('button-press-event', () => {
|
this._sourceActor.connect('button-press-event', () => {
|
||||||
@@ -183,6 +203,9 @@ var WindowMenuManager = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
showWindowMenuForWindow(window, type, rect) {
|
showWindowMenuForWindow(window, type, rect) {
|
||||||
|
if (!Main.sessionMode.hasWmMenus)
|
||||||
|
return;
|
||||||
|
|
||||||
if (type != Meta.WindowMenuType.WM)
|
if (type != Meta.WindowMenuType.WM)
|
||||||
throw new Error('Unsupported window menu type');
|
throw new Error('Unsupported window menu type');
|
||||||
let menu = new WindowMenu(window, this._sourceActor);
|
let menu = new WindowMenu(window, this._sourceActor);
|
||||||
|
@@ -786,8 +786,8 @@ var WindowPositionFlags = {
|
|||||||
|
|
||||||
var LayoutStrategy = class {
|
var LayoutStrategy = class {
|
||||||
constructor(monitor, rowSpacing, columnSpacing) {
|
constructor(monitor, rowSpacing, columnSpacing) {
|
||||||
if (new.target === LayoutStrategy)
|
if (this.constructor === LayoutStrategy)
|
||||||
throw new TypeError('Cannot instantiate abstract type ' + new.target.name);
|
throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`);
|
||||||
|
|
||||||
this._monitor = monitor;
|
this._monitor = monitor;
|
||||||
this._rowSpacing = rowSpacing;
|
this._rowSpacing = rowSpacing;
|
||||||
@@ -813,7 +813,7 @@ var LayoutStrategy = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Computes and returns an individual scaling factor for @window,
|
// Computes and returns an individual scaling factor for @window,
|
||||||
// to be applied in addition to the overal layout scale.
|
// to be applied in addition to the overall layout scale.
|
||||||
_computeWindowScale(window) {
|
_computeWindowScale(window) {
|
||||||
// Since we align windows next to each other, the height of the
|
// Since we align windows next to each other, the height of the
|
||||||
// thumbnails is much more important to preserve than the width of
|
// thumbnails is much more important to preserve than the width of
|
||||||
@@ -835,7 +835,7 @@ var LayoutStrategy = class {
|
|||||||
// (optionally) for each row in @layout.rows. This method is
|
// (optionally) for each row in @layout.rows. This method is
|
||||||
// intended to be called by subclasses.
|
// intended to be called by subclasses.
|
||||||
_computeRowSizes(layout) {
|
_computeRowSizes(layout) {
|
||||||
throw new Error('_computeRowSizes not implemented');
|
throw new GObject.NotImplementedError(`_computeRowSizes in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute strategy-specific window slots for each window in
|
// Compute strategy-specific window slots for each window in
|
||||||
@@ -848,7 +848,7 @@ var LayoutStrategy = class {
|
|||||||
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
|
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
|
||||||
// * rows - A list of rows, which should be instantiated by _newRow.
|
// * rows - A list of rows, which should be instantiated by _newRow.
|
||||||
computeLayout(windows, layout) {
|
computeLayout(windows, layout) {
|
||||||
throw new Error('computeLayout not implemented');
|
throw new GObject.NotImplementedError(`computeLayout in ${this.constructor.name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given @layout, compute the overall scale and space of the layout.
|
// Given @layout, compute the overall scale and space of the layout.
|
||||||
@@ -1266,7 +1266,7 @@ var Workspace = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We will reposition windows anyway when enter again overview or when ending the windows
|
// We will reposition windows anyway when enter again overview or when ending the windows
|
||||||
// animations whith fade animation.
|
// animations with fade animation.
|
||||||
// In this way we avoid unwanted animations of windows repositioning while
|
// In this way we avoid unwanted animations of windows repositioning while
|
||||||
// animating overview.
|
// animating overview.
|
||||||
if (this.leavingOverview || this._animatingWindowsFade)
|
if (this.leavingOverview || this._animatingWindowsFade)
|
||||||
@@ -1886,10 +1886,10 @@ var Workspace = class {
|
|||||||
// Win win -- better scale and better space
|
// Win win -- better scale and better space
|
||||||
return true;
|
return true;
|
||||||
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
|
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
|
||||||
// Keep new layout only if scale gain outweights aspect space loss
|
// Keep new layout only if scale gain outweighs aspect space loss
|
||||||
return scalePower > spacePower;
|
return scalePower > spacePower;
|
||||||
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
|
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||||
// Keep new layout only if aspect space gain outweights scale loss
|
// Keep new layout only if aspect space gain outweighs scale loss
|
||||||
return spacePower > scalePower;
|
return spacePower > scalePower;
|
||||||
} else {
|
} else {
|
||||||
// Lose -- worse scale and space
|
// Lose -- worse scale and space
|
||||||
|
@@ -85,8 +85,6 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
|||||||
height: global.screen_height,
|
height: global.screen_height,
|
||||||
style_class: 'workspace-switcher-group' });
|
style_class: 'workspace-switcher-group' });
|
||||||
|
|
||||||
this.actor = this;
|
|
||||||
|
|
||||||
Main.uiGroup.add_actor(this);
|
Main.uiGroup.add_actor(this);
|
||||||
|
|
||||||
this._timeoutId = 0;
|
this._timeoutId = 0;
|
||||||
@@ -142,7 +140,7 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
|||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad'
|
||||||
});
|
});
|
||||||
this.actor.show();
|
this.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
display(direction, activeWorkspaceIndex) {
|
display(direction, activeWorkspaceIndex) {
|
||||||
|
@@ -601,8 +601,7 @@ class ThumbnailsBox extends St.Widget {
|
|||||||
style_class: 'workspace-thumbnails',
|
style_class: 'workspace-thumbnails',
|
||||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
||||||
|
|
||||||
this.actor = this;
|
this._delegate = this;
|
||||||
this.actor._delegate = this;
|
|
||||||
|
|
||||||
let indicator = new St.Bin({ style_class: 'workspace-thumbnail-indicator' });
|
let indicator = new St.Bin({ style_class: 'workspace-thumbnail-indicator' });
|
||||||
|
|
||||||
|
@@ -84,7 +84,7 @@ var WorkspacesView = class extends WorkspacesViewBase {
|
|||||||
this._animating = false; // tweening
|
this._animating = false; // tweening
|
||||||
this._scrolling = false; // swipe-scrolling
|
this._scrolling = false; // swipe-scrolling
|
||||||
this._gestureActive = false; // touch(pad) gestures
|
this._gestureActive = false; // touch(pad) gestures
|
||||||
this._animatingScroll = false; // programatically updating the adjustment
|
this._animatingScroll = false; // programmatically updating the adjustment
|
||||||
|
|
||||||
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
||||||
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
|
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
|
||||||
@@ -479,20 +479,17 @@ var WorkspacesDisplay = class {
|
|||||||
this.actor.connect('notify::mapped', () => {
|
this.actor.connect('notify::mapped', () => {
|
||||||
switchGesture.enabled = this.actor.mapped;
|
switchGesture.enabled = this.actor.mapped;
|
||||||
});
|
});
|
||||||
switchGesture.enabled = this.actor.mapped;
|
|
||||||
|
|
||||||
this._primaryIndex = Main.layoutManager.primaryIndex;
|
this._primaryIndex = Main.layoutManager.primaryIndex;
|
||||||
|
|
||||||
this._workspacesViews = [];
|
this._workspacesViews = [];
|
||||||
this._primaryScrollAdjustment = null;
|
switchGesture.enabled = this.actor.mapped;
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA });
|
this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA });
|
||||||
this._settings.connect('changed::workspaces-only-on-primary',
|
this._settings.connect('changed::workspaces-only-on-primary',
|
||||||
this._workspacesOnlyOnPrimaryChanged.bind(this));
|
this._workspacesOnlyOnPrimaryChanged.bind(this));
|
||||||
this._workspacesOnlyOnPrimaryChanged();
|
this._workspacesOnlyOnPrimaryChanged();
|
||||||
|
|
||||||
this._switchWorkspaceNotifyId = 0;
|
|
||||||
|
|
||||||
this._notifyOpacityId = 0;
|
this._notifyOpacityId = 0;
|
||||||
this._restackedNotifyId = 0;
|
this._restackedNotifyId = 0;
|
||||||
this._scrollEventId = 0;
|
this._scrollEventId = 0;
|
||||||
|
62
meson.build
@@ -1,5 +1,5 @@
|
|||||||
project('gnome-shell', 'c',
|
project('gnome-shell', 'c',
|
||||||
version: '3.32.0',
|
version: '3.33.2',
|
||||||
meson_version: '>= 0.47.0',
|
meson_version: '>= 0.47.0',
|
||||||
license: 'GPLv2+'
|
license: 'GPLv2+'
|
||||||
)
|
)
|
||||||
@@ -14,16 +14,16 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
|
|||||||
libmutter_pc = 'libmutter-' + mutter_api_version
|
libmutter_pc = 'libmutter-' + mutter_api_version
|
||||||
|
|
||||||
croco_req = '>= 0.6.8'
|
croco_req = '>= 0.6.8'
|
||||||
ecal_req = '>= 3.5.3'
|
ecal_req = '>= 3.33.1'
|
||||||
eds_req = '>= 3.17.2'
|
eds_req = '>= 3.17.2'
|
||||||
gcr_req = '>= 3.7.5'
|
gcr_req = '>= 3.7.5'
|
||||||
gdesktop_req = '>= 3.7.90'
|
gdesktop_req = '>= 3.7.90'
|
||||||
gio_req = '>= 2.56.0'
|
gio_req = '>= 2.56.0'
|
||||||
gi_req = '>= 1.49.1'
|
gi_req = '>= 1.49.1'
|
||||||
gjs_req = '>= 1.54.0'
|
gjs_req = '>= 1.57.2'
|
||||||
gtk_req = '>= 3.15.0'
|
gtk_req = '>= 3.15.0'
|
||||||
json_glib_req = '>= 0.13.2'
|
json_glib_req = '>= 0.13.2'
|
||||||
mutter_req = '>= 3.32.0'
|
mutter_req = '>= 3.33.2'
|
||||||
polkit_req = '>= 0.100'
|
polkit_req = '>= 0.100'
|
||||||
schemas_req = '>= 3.27.90'
|
schemas_req = '>= 3.27.90'
|
||||||
startup_req = '>= 0.11'
|
startup_req = '>= 0.11'
|
||||||
@@ -73,7 +73,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
atk_bridge_dep = dependency('atk-bridge-2.0')
|
atk_bridge_dep = dependency('atk-bridge-2.0')
|
||||||
ecal_dep = dependency('libecal-1.2', version: ecal_req)
|
ecal_dep = dependency('libecal-2.0', version: ecal_req)
|
||||||
eds_dep = dependency('libedataserver-1.2', version: eds_req)
|
eds_dep = dependency('libedataserver-1.2', version: eds_req)
|
||||||
gcr_dep = dependency('gcr-base-3', version: gcr_req)
|
gcr_dep = dependency('gcr-base-3', version: gcr_req)
|
||||||
gdk_x11_dep = dependency('gdk-x11-3.0')
|
gdk_x11_dep = dependency('gdk-x11-3.0')
|
||||||
@@ -167,6 +167,58 @@ cdata.set('HAVE_FDWALK',
|
|||||||
cc.has_function('fdwalk')
|
cc.has_function('fdwalk')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
buildtype = get_option('buildtype')
|
||||||
|
if buildtype != 'plain'
|
||||||
|
all_warnings = [
|
||||||
|
'-fno-strict-aliasing',
|
||||||
|
'-Wpointer-arith',
|
||||||
|
'-Wmissing-declarations',
|
||||||
|
'-Wimplicit-function-declaration',
|
||||||
|
'-Wformat=2',
|
||||||
|
'-Wformat-nonliteral',
|
||||||
|
'-Wformat-security',
|
||||||
|
'-Wstrict-prototypes',
|
||||||
|
'-Wmissing-prototypes',
|
||||||
|
'-Wnested-externs',
|
||||||
|
'-Wold-style-definition',
|
||||||
|
'-Wundef',
|
||||||
|
'-Wunused',
|
||||||
|
'-Wcast-align',
|
||||||
|
'-Wmissing-noreturn',
|
||||||
|
'-Wmissing-format-attribute',
|
||||||
|
'-Wmissing-include-dirs',
|
||||||
|
'-Wlogical-op',
|
||||||
|
'-Wignored-qualifiers',
|
||||||
|
'-Werror=redundant-decls',
|
||||||
|
'-Werror=implicit',
|
||||||
|
'-Werror=nonnull',
|
||||||
|
'-Werror=init-self',
|
||||||
|
'-Werror=main',
|
||||||
|
'-Werror=missing-braces',
|
||||||
|
'-Werror=sequence-point',
|
||||||
|
'-Werror=return-type',
|
||||||
|
'-Werror=trigraphs',
|
||||||
|
'-Werror=array-bounds',
|
||||||
|
'-Werror=write-strings',
|
||||||
|
'-Werror=address',
|
||||||
|
'-Werror=int-to-pointer-cast',
|
||||||
|
'-Werror=pointer-to-int-cast',
|
||||||
|
'-Werror=empty-body',
|
||||||
|
'-Werror=write-strings',
|
||||||
|
]
|
||||||
|
supported_warnings = cc.get_supported_arguments(all_warnings)
|
||||||
|
add_project_arguments(supported_warnings, language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('debug')
|
||||||
|
debug_c_args = [
|
||||||
|
'-DG_ENABLE_DEBUG',
|
||||||
|
'-fno-omit-frame-pointer'
|
||||||
|
]
|
||||||
|
supported_debug_c_args = cc.get_supported_arguments(debug_c_args)
|
||||||
|
add_project_arguments(supported_debug_c_args, language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
config_h = configure_file(
|
config_h = configure_file(
|
||||||
input: 'config.h.meson',
|
input: 'config.h.meson',
|
||||||
output: 'config.h',
|
output: 'config.h',
|
||||||
|
@@ -54,6 +54,7 @@ js/ui/shellMountOperation.js
|
|||||||
js/ui/status/accessibility.js
|
js/ui/status/accessibility.js
|
||||||
js/ui/status/bluetooth.js
|
js/ui/status/bluetooth.js
|
||||||
js/ui/status/brightness.js
|
js/ui/status/brightness.js
|
||||||
|
js/ui/status/dwellClick.js
|
||||||
js/ui/status/keyboard.js
|
js/ui/status/keyboard.js
|
||||||
js/ui/status/location.js
|
js/ui/status/location.js
|
||||||
js/ui/status/network.js
|
js/ui/status/network.js
|
||||||
|
128
po/de.po
@@ -16,14 +16,14 @@
|
|||||||
# Benjamin Steinwender <b@stbe.at>, 2013-2014.
|
# Benjamin Steinwender <b@stbe.at>, 2013-2014.
|
||||||
# Bernd Homuth <dev@hmt.im>, 2014-2015, 2016, 2019.
|
# Bernd Homuth <dev@hmt.im>, 2014-2015, 2016, 2019.
|
||||||
# Franco Della-Monica <franco.della.monica@gmail.com>, 2016.
|
# Franco Della-Monica <franco.della.monica@gmail.com>, 2016.
|
||||||
# Tim Sabsch <tim@sabsch.com>, 2018.
|
# Tim Sabsch <tim@sabsch.com>, 2018-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||||
"POT-Creation-Date: 2019-03-02 19:56+0000\n"
|
"POT-Creation-Date: 2019-05-08 10:16+0000\n"
|
||||||
"PO-Revision-Date: 2019-03-02 21:13+0100\n"
|
"PO-Revision-Date: 2019-05-12 12:36+0200\n"
|
||||||
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
@@ -390,11 +390,6 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Netzwerkanmeldung"
|
msgstr "Netzwerkanmeldung"
|
||||||
|
|
||||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
|
|
||||||
msgid "network-workgroup"
|
|
||||||
msgstr "network-workgroup"
|
|
||||||
|
|
||||||
#: js/extensionPrefs/main.js:116
|
#: js/extensionPrefs/main.js:116
|
||||||
msgid "Something’s gone wrong"
|
msgid "Something’s gone wrong"
|
||||||
msgstr "Etwas ist schiefgelaufen"
|
msgstr "Etwas ist schiefgelaufen"
|
||||||
@@ -542,7 +537,7 @@ msgstr "abmelden;verlassen"
|
|||||||
#: js/misc/systemActions.js:109
|
#: js/misc/systemActions.js:109
|
||||||
msgctxt "search-result"
|
msgctxt "search-result"
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "In Bereitschaft versetzen"
|
msgstr "Bereitschaft"
|
||||||
|
|
||||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||||
#: js/misc/systemActions.js:112
|
#: js/misc/systemActions.js:112
|
||||||
@@ -762,12 +757,12 @@ msgstr "Zu Favoriten hinzufügen"
|
|||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Details anzeigen"
|
msgstr "Details anzeigen"
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:141
|
#: js/ui/appFavorites.js:149
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
|
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:175
|
#: js/ui/appFavorites.js:183
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s wurde aus Ihren Favoriten entfernt"
|
msgstr "%s wurde aus Ihren Favoriten entfernt"
|
||||||
@@ -1053,7 +1048,7 @@ msgstr "Passwort der mobilen Breitbandverbindung"
|
|||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
|
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665
|
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Netzwerk-Verwaltung"
|
msgstr "Netzwerk-Verwaltung"
|
||||||
|
|
||||||
@@ -1125,23 +1120,23 @@ msgstr "Weltuhren hinzufügen …"
|
|||||||
msgid "World Clocks"
|
msgid "World Clocks"
|
||||||
msgstr "Weltuhren"
|
msgstr "Weltuhren"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:222
|
#: js/ui/dateMenu.js:228
|
||||||
msgid "Weather"
|
msgid "Weather"
|
||||||
msgstr "Wetter"
|
msgstr "Wetter"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:305
|
#: js/ui/dateMenu.js:311
|
||||||
msgid "Select a location…"
|
msgid "Select a location…"
|
||||||
msgstr "Ort auswählen …"
|
msgstr "Ort auswählen …"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:313
|
#: js/ui/dateMenu.js:319
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Wird geladen …"
|
msgstr "Wird geladen …"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:323
|
#: js/ui/dateMenu.js:329
|
||||||
msgid "Go online for weather information"
|
msgid "Go online for weather information"
|
||||||
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
|
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:325
|
#: js/ui/dateMenu.js:331
|
||||||
msgid "Weather information is currently unavailable"
|
msgid "Weather information is currently unavailable"
|
||||||
msgstr "Wetterinformationen sind momentan nicht verfügbar"
|
msgstr "Wetterinformationen sind momentan nicht verfügbar"
|
||||||
|
|
||||||
@@ -1304,26 +1299,26 @@ msgid "Download and install “%s” from extensions.gnome.org?"
|
|||||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||||
|
|
||||||
#. Translators: %s is an application name like "Settings"
|
#. Translators: %s is an application name like "Settings"
|
||||||
#: js/ui/inhibitShortcutsDialog.js:50
|
#: js/ui/inhibitShortcutsDialog.js:78
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s wants to inhibit shortcuts"
|
msgid "%s wants to inhibit shortcuts"
|
||||||
msgstr "%s möchte Tastenkombinationen sperren"
|
msgstr "%s möchte Tastenkombinationen sperren"
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:51
|
#: js/ui/inhibitShortcutsDialog.js:79
|
||||||
msgid "Application wants to inhibit shortcuts"
|
msgid "Application wants to inhibit shortcuts"
|
||||||
msgstr "Die Anwendung möchte Tastenkombinationen sperren"
|
msgstr "Die Anwendung möchte Tastenkombinationen sperren"
|
||||||
|
|
||||||
#. Translators: %s is a keyboard shortcut like "Super+x"
|
#. Translators: %s is a keyboard shortcut like "Super+x"
|
||||||
#: js/ui/inhibitShortcutsDialog.js:60
|
#: js/ui/inhibitShortcutsDialog.js:88
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You can restore shortcuts by pressing %s."
|
msgid "You can restore shortcuts by pressing %s."
|
||||||
msgstr "Sie können Tastenkombinationen durch Drücken von %s wiederherstellen."
|
msgstr "Sie können Tastenkombinationen durch Drücken von %s wiederherstellen."
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:65
|
#: js/ui/inhibitShortcutsDialog.js:93
|
||||||
msgid "Deny"
|
msgid "Deny"
|
||||||
msgstr "Ablehnen"
|
msgstr "Ablehnen"
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:71
|
#: js/ui/inhibitShortcutsDialog.js:100
|
||||||
msgid "Allow"
|
msgid "Allow"
|
||||||
msgstr "Zulassen"
|
msgstr "Zulassen"
|
||||||
|
|
||||||
@@ -1376,13 +1371,13 @@ msgid "Leave On"
|
|||||||
msgstr "Eingeschaltet lassen"
|
msgstr "Eingeschaltet lassen"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:1264
|
#: js/ui/status/network.js:1263
|
||||||
msgid "Turn On"
|
msgid "Turn On"
|
||||||
msgstr "Einschalten"
|
msgstr "Einschalten"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
||||||
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
|
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
||||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||||
#: js/ui/status/rfkill.js:106
|
#: js/ui/status/rfkill.js:106
|
||||||
msgid "Turn Off"
|
msgid "Turn Off"
|
||||||
@@ -1392,7 +1387,7 @@ msgstr "Ausschalten"
|
|||||||
msgid "Leave Off"
|
msgid "Leave Off"
|
||||||
msgstr "Ausgeschaltet lassen"
|
msgstr "Ausgeschaltet lassen"
|
||||||
|
|
||||||
#: js/ui/keyboard.js:203
|
#: js/ui/keyboard.js:200
|
||||||
msgid "Region & Language Settings"
|
msgid "Region & Language Settings"
|
||||||
msgstr "Regions- und Spracheinstellungen"
|
msgstr "Regions- und Spracheinstellungen"
|
||||||
|
|
||||||
@@ -1444,7 +1439,7 @@ msgstr "Quelle zeigen"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Webseite"
|
msgstr "Webseite"
|
||||||
|
|
||||||
#: js/ui/messageTray.js:1474
|
#: js/ui/messageTray.js:1480
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformationen"
|
msgstr "Systeminformationen"
|
||||||
|
|
||||||
@@ -1528,11 +1523,11 @@ msgstr "Beenden"
|
|||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: js/ui/panel.js:471
|
#: js/ui/panel.js:470
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktivitäten"
|
msgstr "Aktivitäten"
|
||||||
|
|
||||||
#: js/ui/panel.js:746
|
#: js/ui/panel.js:745
|
||||||
msgctxt "System menu in the top bar"
|
msgctxt "System menu in the top bar"
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
@@ -1541,15 +1536,6 @@ msgstr "System"
|
|||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Oberes Panel"
|
msgstr "Oberes Panel"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
|
||||||
#. (for toggle switches containing the English words
|
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
#. switches containing "◯" and "|"). Other values will
|
|
||||||
#. simply result in invisible toggle switches.
|
|
||||||
#: js/ui/popupMenu.js:285
|
|
||||||
msgid "toggle-switch-us"
|
|
||||||
msgstr "toggle-switch-intl"
|
|
||||||
|
|
||||||
#: js/ui/runDialog.js:64
|
#: js/ui/runDialog.js:64
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Bitte geben Sie einen Befehl ein"
|
msgstr "Bitte geben Sie einen Befehl ein"
|
||||||
@@ -1589,7 +1575,7 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d neue Benachrichtigung"
|
msgstr[0] "%d neue Benachrichtigung"
|
||||||
msgstr[1] "%d neue Benachrichtigungen"
|
msgstr[1] "%d neue Benachrichtigungen"
|
||||||
|
|
||||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
|
#: js/ui/screenShield.js:449 js/ui/status/system.js:271
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Sperren"
|
msgstr "Sperren"
|
||||||
|
|
||||||
@@ -1604,11 +1590,11 @@ msgstr "GNOME muss den Bildschirm sperren"
|
|||||||
#.
|
#.
|
||||||
#. XXX: another option is to kick the user into the gdm login
|
#. XXX: another option is to kick the user into the gdm login
|
||||||
#. screen, where we're not affected by grabs
|
#. screen, where we're not affected by grabs
|
||||||
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
|
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1299
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "Sperrung fehlgeschlagen"
|
msgstr "Sperrung fehlgeschlagen"
|
||||||
|
|
||||||
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
|
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
||||||
|
|
||||||
@@ -1772,7 +1758,7 @@ msgid "<unknown>"
|
|||||||
msgstr "<Unbekannt>"
|
msgstr "<Unbekannt>"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1293
|
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Off"
|
msgid "%s Off"
|
||||||
msgstr "%s ausgeschaltet"
|
msgstr "%s ausgeschaltet"
|
||||||
@@ -1798,7 +1784,7 @@ msgid "%s Disconnecting"
|
|||||||
msgstr "%s wird getrennt"
|
msgstr "%s wird getrennt"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1285
|
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connecting"
|
msgid "%s Connecting"
|
||||||
msgstr "%s wird verbunden"
|
msgstr "%s wird verbunden"
|
||||||
@@ -1838,7 +1824,7 @@ msgid "Mobile Broadband Settings"
|
|||||||
msgstr "Einstellungen der mobilen Breitbandverbindung"
|
msgstr "Einstellungen der mobilen Breitbandverbindung"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1290
|
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hardware Disabled"
|
msgid "%s Hardware Disabled"
|
||||||
msgstr "%s-Hardware ausgeschaltet"
|
msgstr "%s-Hardware ausgeschaltet"
|
||||||
@@ -1910,72 +1896,72 @@ msgid "Wi-Fi Settings"
|
|||||||
msgstr "Drahtlosnetzwerk-Einstellungen"
|
msgstr "Drahtlosnetzwerk-Einstellungen"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1281
|
#: js/ui/status/network.js:1280
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hotspot Active"
|
msgid "%s Hotspot Active"
|
||||||
msgstr "Hotspot %s eingeschaltet"
|
msgstr "Hotspot %s eingeschaltet"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1296
|
#: js/ui/status/network.js:1295
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Not Connected"
|
msgid "%s Not Connected"
|
||||||
msgstr "%s nicht verbunden"
|
msgstr "%s nicht verbunden"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1393
|
#: js/ui/status/network.js:1392
|
||||||
msgid "connecting…"
|
msgid "connecting…"
|
||||||
msgstr "Verbindungsaufbau …"
|
msgstr "Verbindungsaufbau …"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: js/ui/status/network.js:1396
|
#: js/ui/status/network.js:1395
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "Anmeldung erforderlich"
|
msgstr "Anmeldung erforderlich"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1398
|
#: js/ui/status/network.js:1397
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "Verbindung gescheitert"
|
msgstr "Verbindung gescheitert"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1448
|
#: js/ui/status/network.js:1447
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "VPN-Einstellungen"
|
msgstr "VPN-Einstellungen"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1465
|
#: js/ui/status/network.js:1464
|
||||||
msgid "VPN"
|
msgid "VPN"
|
||||||
msgstr "VPN"
|
msgstr "VPN"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1475
|
#: js/ui/status/network.js:1474
|
||||||
msgid "VPN Off"
|
msgid "VPN Off"
|
||||||
msgstr "VPN ausgeschaltet"
|
msgstr "VPN ausgeschaltet"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82
|
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Netzwerkeinstellungen"
|
msgstr "Netzwerkeinstellungen"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1565
|
#: js/ui/status/network.js:1564
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wired Connection"
|
msgid "%s Wired Connection"
|
||||||
msgid_plural "%s Wired Connections"
|
msgid_plural "%s Wired Connections"
|
||||||
msgstr[0] "%s Kabelverbindung"
|
msgstr[0] "%s Kabelverbindung"
|
||||||
msgstr[1] "%s Kabelverbindungen"
|
msgstr[1] "%s Kabelverbindungen"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1569
|
#: js/ui/status/network.js:1568
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wi-Fi Connection"
|
msgid "%s Wi-Fi Connection"
|
||||||
msgid_plural "%s Wi-Fi Connections"
|
msgid_plural "%s Wi-Fi Connections"
|
||||||
msgstr[0] "%s Funknetzwerkverbindung"
|
msgstr[0] "%s Funknetzwerkverbindung"
|
||||||
msgstr[1] "%s Funknetzwerkverbindungen"
|
msgstr[1] "%s Funknetzwerkverbindungen"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1573
|
#: js/ui/status/network.js:1572
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Modem Connection"
|
msgid "%s Modem Connection"
|
||||||
msgid_plural "%s Modem Connections"
|
msgid_plural "%s Modem Connections"
|
||||||
msgstr[0] "%s Modem-Verbindung"
|
msgstr[0] "%s Modem-Verbindung"
|
||||||
msgstr[1] "%s Modem-Verbindungen"
|
msgstr[1] "%s Modem-Verbindungen"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1702
|
#: js/ui/status/network.js:1705
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Verbindung gescheitert"
|
msgstr "Verbindung gescheitert"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1703
|
#: js/ui/status/network.js:1706
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
|
||||||
|
|
||||||
@@ -2057,15 +2043,15 @@ msgstr "Abmelden"
|
|||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "Kontoeinstellungen"
|
msgstr "Kontoeinstellungen"
|
||||||
|
|
||||||
#: js/ui/status/system.js:255
|
#: js/ui/status/system.js:256
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Hoch-/Querformats-Fixierung"
|
msgstr "Hoch-/Querformats-Fixierung"
|
||||||
|
|
||||||
#: js/ui/status/system.js:281
|
#: js/ui/status/system.js:282
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "In Bereitschaft versetzen"
|
msgstr "Bereitschaft"
|
||||||
|
|
||||||
#: js/ui/status/system.js:291
|
#: js/ui/status/system.js:292
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Ausschalten"
|
msgstr "Ausschalten"
|
||||||
|
|
||||||
@@ -2183,7 +2169,7 @@ msgstr[1] ""
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#: js/ui/windowManager.js:662
|
#: js/ui/windowManager.js:677
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d × %d"
|
msgid "%d × %d"
|
||||||
msgstr "%d × %d"
|
msgstr "%d × %d"
|
||||||
@@ -2256,11 +2242,6 @@ msgstr "Auf den Bildschirm nach rechts verschieben"
|
|||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Evolution-Kalender"
|
msgstr "Evolution-Kalender"
|
||||||
|
|
||||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
#: src/calendar-server/evolution-calendar.desktop.in:6
|
|
||||||
msgid "evolution"
|
|
||||||
msgstr "evolution"
|
|
||||||
|
|
||||||
#: src/main.c:408
|
#: src/main.c:408
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Version ausgeben"
|
msgstr "Version ausgeben"
|
||||||
@@ -2279,12 +2260,12 @@ msgstr ""
|
|||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Die möglichen Modi auflisten"
|
msgstr "Die möglichen Modi auflisten"
|
||||||
|
|
||||||
#: src/shell-app.c:260
|
#: src/shell-app.c:264
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unbekannt"
|
msgstr "Unbekannt"
|
||||||
|
|
||||||
#: src/shell-app.c:511
|
#: src/shell-app.c:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "»%s« konnte nicht gestartet werden"
|
msgstr "»%s« konnte nicht gestartet werden"
|
||||||
@@ -2323,6 +2304,15 @@ msgstr[1] "%u Eingänge"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemklänge"
|
msgstr "Systemklänge"
|
||||||
|
|
||||||
|
#~ msgid "network-workgroup"
|
||||||
|
#~ msgstr "network-workgroup"
|
||||||
|
|
||||||
|
#~ msgid "toggle-switch-us"
|
||||||
|
#~ msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
|
#~ msgid "evolution"
|
||||||
|
#~ msgstr "evolution"
|
||||||
|
|
||||||
#~ msgid "There was an error loading the preferences dialog for %s:"
|
#~ msgid "There was an error loading the preferences dialog for %s:"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
|
#~ "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
|
||||||
|
169
po/eo.po
@@ -6,22 +6,22 @@
|
|||||||
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
# Daniel PUENTES <blatberk@openmailbox.org>, 2015.
|
||||||
# Nicolas MAIA < >, 2015.
|
# Nicolas MAIA < >, 2015.
|
||||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015, 2016, 2018.
|
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015, 2016, 2018.
|
||||||
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2018, 2019.
|
# Carmen Bianca BAKKER <carmen@carmenbianca.eu>, 2018-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||||
"POT-Creation-Date: 2019-03-24 17:37+0000\n"
|
"POT-Creation-Date: 2019-05-08 17:45+0000\n"
|
||||||
"PO-Revision-Date: 2019-03-31 00:14+0100\n"
|
"PO-Revision-Date: 2019-05-09 20:12+0200\n"
|
||||||
"Last-Translator: Carmen Bianca Bakker <carmen@carmenbianca.eu>\n"
|
"Last-Translator: Carmen Bianca BAKKER <carmen@carmenbianca.eu>\n"
|
||||||
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
||||||
"Language: eo\n"
|
"Language: eo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
"X-Generator: Poedit 2.2.1\n"
|
"X-Generator: Gtranslator 3.32.0\n"
|
||||||
"X-DamnedLies-Scope: partial\n"
|
"X-DamnedLies-Scope: partial\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
@@ -383,7 +383,7 @@ msgstr "Foliumi en Programaro"
|
|||||||
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
|
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
|
||||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
|
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
|
||||||
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
|
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
|
||||||
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
|
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:889
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Nuligi"
|
msgstr "Nuligi"
|
||||||
|
|
||||||
@@ -681,32 +681,37 @@ msgstr "Oftaj"
|
|||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Ĉiuj"
|
msgstr "Ĉiuj"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
#. Translators: This is the heading of a list of open windows
|
||||||
|
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||||
|
msgid "Open Windows"
|
||||||
|
msgstr "Malfermaj fenestroj"
|
||||||
|
|
||||||
|
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nova fenestro"
|
msgstr "Nova fenestro"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1751
|
#: js/ui/appDisplay.js:1746
|
||||||
msgid "Launch using Dedicated Graphics Card"
|
msgid "Launch using Dedicated Graphics Card"
|
||||||
msgstr "Lanĉi uzante dediĉitan vidkarton"
|
msgstr "Lanĉi uzante dediĉitan vidkarton"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Forigi el preferataj"
|
msgstr "Forigi el preferataj"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1784
|
#: js/ui/appDisplay.js:1779
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Aldoni al preferataj"
|
msgstr "Aldoni al preferataj"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Montri detalojn"
|
msgstr "Montri detalojn"
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:141
|
#: js/ui/appFavorites.js:149
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s estas aldonita de via preferataj aplikaĵoj."
|
msgstr "%s estas aldonita de via preferataj aplikaĵoj."
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:175
|
#: js/ui/appFavorites.js:183
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s estas forigita de via preferataj aplikaĵoj."
|
msgstr "%s estas forigita de via preferataj aplikaĵoj."
|
||||||
@@ -914,7 +919,7 @@ msgstr ""
|
|||||||
"Alternative vi povas konekti per premi la “WPS”-butonon de via enkursigilo."
|
"Alternative vi povas konekti per premi la “WPS”-butonon de via enkursigilo."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
|
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
|
||||||
#: js/ui/status/network.js:309 js/ui/status/network.js:891
|
#: js/ui/status/network.js:310 js/ui/status/network.js:892
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Konekti"
|
msgstr "Konekti"
|
||||||
|
|
||||||
@@ -944,7 +949,7 @@ msgstr "Servo: "
|
|||||||
|
|
||||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
|
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "Aŭtentigo estas bezonata de sendrata reto"
|
msgstr "Sendrata reto bezonas aŭtentigon"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@@ -972,7 +977,7 @@ msgstr "PIN-kodo bezonata"
|
|||||||
|
|
||||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "PIN-kodo estas bezonata por la portebla larĝkapacita aparato"
|
msgstr "PIN-kodo necesas por la portebla larĝkapacita aparato"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:333
|
#: js/ui/components/networkAgent.js:333
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
@@ -986,9 +991,9 @@ msgstr "Portebla larĝkapacita retopasvorto"
|
|||||||
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
|
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "Pasvorto estas bezonata por konekti al “%s”."
|
msgstr "Pasvorto necesas por konekti al “%s”."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1665
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Retadministrilo"
|
msgstr "Retadministrilo"
|
||||||
|
|
||||||
@@ -1060,23 +1065,23 @@ msgstr "Aldoni mondajn horloĝojn…"
|
|||||||
msgid "World Clocks"
|
msgid "World Clocks"
|
||||||
msgstr "Mondaj horloĝoj"
|
msgstr "Mondaj horloĝoj"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:222
|
#: js/ui/dateMenu.js:228
|
||||||
msgid "Weather"
|
msgid "Weather"
|
||||||
msgstr "Vetero"
|
msgstr "Vetero"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:305
|
#: js/ui/dateMenu.js:311
|
||||||
msgid "Select a location…"
|
msgid "Select a location…"
|
||||||
msgstr "Elekti lokon…"
|
msgstr "Elekti lokon…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:313
|
#: js/ui/dateMenu.js:319
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Ŝargante…"
|
msgstr "Ŝargante…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:323
|
#: js/ui/dateMenu.js:329
|
||||||
msgid "Go online for weather information"
|
msgid "Go online for weather information"
|
||||||
msgstr "Enretigi por veterinformoj"
|
msgstr "Enretigi por veterinformoj"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:325
|
#: js/ui/dateMenu.js:331
|
||||||
msgid "Weather information is currently unavailable"
|
msgid "Weather information is currently unavailable"
|
||||||
msgstr "Veterinformoj ĉimomente nehaveblas"
|
msgstr "Veterinformoj ĉimomente nehaveblas"
|
||||||
|
|
||||||
@@ -1305,13 +1310,13 @@ msgid "Leave On"
|
|||||||
msgstr "Lasi ŝaltita"
|
msgstr "Lasi ŝaltita"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:1263
|
#: js/ui/status/network.js:1264
|
||||||
msgid "Turn On"
|
msgid "Turn On"
|
||||||
msgstr "Ŝalti"
|
msgstr "Ŝalti"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
#: js/ui/status/network.js:128 js/ui/status/network.js:311
|
||||||
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
#: js/ui/status/network.js:1264 js/ui/status/network.js:1376
|
||||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||||
#: js/ui/status/rfkill.js:106
|
#: js/ui/status/rfkill.js:106
|
||||||
msgid "Turn Off"
|
msgid "Turn Off"
|
||||||
@@ -1373,7 +1378,7 @@ msgstr "Montri fonton"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Retpaĝo"
|
msgstr "Retpaĝo"
|
||||||
|
|
||||||
#: js/ui/messageTray.js:1480
|
#: js/ui/messageTray.js:1479
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Sisteminformoj"
|
msgstr "Sisteminformoj"
|
||||||
|
|
||||||
@@ -1452,34 +1457,25 @@ msgstr "Premu Esk-klavon por ĉesi"
|
|||||||
msgid "Press any key to exit"
|
msgid "Press any key to exit"
|
||||||
msgstr "Premu iun ajn klavon por ĉesi"
|
msgstr "Premu iun ajn klavon por ĉesi"
|
||||||
|
|
||||||
#: js/ui/panel.js:108
|
#: js/ui/panel.js:113
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Ĉesi"
|
msgstr "Ĉesi"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: js/ui/panel.js:471
|
#: js/ui/panel.js:468
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktivecoj"
|
msgstr "Aktivecoj"
|
||||||
|
|
||||||
#: js/ui/panel.js:746
|
#: js/ui/panel.js:743
|
||||||
msgctxt "System menu in the top bar"
|
msgctxt "System menu in the top bar"
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistemo"
|
msgstr "Sistemo"
|
||||||
|
|
||||||
#: js/ui/panel.js:867
|
#: js/ui/panel.js:861
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Supra breto"
|
msgstr "Supra breto"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
|
||||||
#. (for toggle switches containing the English words
|
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
#. switches containing "◯" and "|"). Other values will
|
|
||||||
#. simply result in invisible toggle switches.
|
|
||||||
#: js/ui/popupMenu.js:285
|
|
||||||
msgid "toggle-switch-us"
|
|
||||||
msgstr "toggle-switch-intl"
|
|
||||||
|
|
||||||
#: js/ui/runDialog.js:64
|
#: js/ui/runDialog.js:64
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Enigu komandon"
|
msgstr "Enigu komandon"
|
||||||
@@ -1614,11 +1610,11 @@ msgstr "Saltaj klavoj"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Musklavoj"
|
msgstr "Musklavoj"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:151
|
#: js/ui/status/accessibility.js:135
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Alta kontrasto"
|
msgstr "Alta kontrasto"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:182
|
#: js/ui/status/accessibility.js:177
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Granda teksto"
|
msgstr "Granda teksto"
|
||||||
|
|
||||||
@@ -1626,7 +1622,7 @@ msgstr "Granda teksto"
|
|||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bludento"
|
msgstr "Bludento"
|
||||||
|
|
||||||
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
|
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Bludento-agordoj"
|
msgstr "Bludento-agordoj"
|
||||||
|
|
||||||
@@ -1697,13 +1693,13 @@ msgid "<unknown>"
|
|||||||
msgstr "<nekonata>"
|
msgstr "<nekonata>"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
#: js/ui/status/network.js:417 js/ui/status/network.js:1293
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Off"
|
msgid "%s Off"
|
||||||
msgstr "%s malŝaltita"
|
msgstr "%s malŝaltita"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:419
|
#: js/ui/status/network.js:420
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connected"
|
msgid "%s Connected"
|
||||||
msgstr "%s konektita"
|
msgstr "%s konektita"
|
||||||
@@ -1711,189 +1707,189 @@ msgstr "%s konektita"
|
|||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu);
|
#. under NetworkManager's control (and thus cannot be used in the menu);
|
||||||
#. %s is a network identifier
|
#. %s is a network identifier
|
||||||
#: js/ui/status/network.js:424
|
#: js/ui/status/network.js:425
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unmanaged"
|
msgid "%s Unmanaged"
|
||||||
msgstr "%s nemastrumita"
|
msgstr "%s nemastrumita"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:427
|
#: js/ui/status/network.js:428
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disconnecting"
|
msgid "%s Disconnecting"
|
||||||
msgstr "%s malkonektante"
|
msgstr "%s malkonektante"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
#: js/ui/status/network.js:435 js/ui/status/network.js:1285
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connecting"
|
msgid "%s Connecting"
|
||||||
msgstr "%s konektante"
|
msgstr "%s konektante"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
||||||
#: js/ui/status/network.js:437
|
#: js/ui/status/network.js:438
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Requires Authentication"
|
msgid "%s Requires Authentication"
|
||||||
msgstr "%s postulas aŭtentigon"
|
msgstr "%s postulas aŭtentigon"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing; %s is a network identifier
|
#. module, which is missing; %s is a network identifier
|
||||||
#: js/ui/status/network.js:445
|
#: js/ui/status/network.js:446
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Firmware Missing For %s"
|
msgid "Firmware Missing For %s"
|
||||||
msgstr "Mikroprogramo mankas por %s"
|
msgstr "Mikroprogramo mankas por %s"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
||||||
#: js/ui/status/network.js:449
|
#: js/ui/status/network.js:450
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unavailable"
|
msgid "%s Unavailable"
|
||||||
msgstr "%s nedisponebla"
|
msgstr "%s nedisponebla"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:452
|
#: js/ui/status/network.js:453
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connection Failed"
|
msgid "%s Connection Failed"
|
||||||
msgstr "%s konekto malsukcesis"
|
msgstr "%s konekto malsukcesis"
|
||||||
|
|
||||||
#: js/ui/status/network.js:464
|
#: js/ui/status/network.js:465
|
||||||
msgid "Wired Settings"
|
msgid "Wired Settings"
|
||||||
msgstr "Drataj agordoj"
|
msgstr "Drataj agordoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:506
|
#: js/ui/status/network.js:507
|
||||||
msgid "Mobile Broadband Settings"
|
msgid "Mobile Broadband Settings"
|
||||||
msgstr "Porteblaj larĝkapacitaj agordoj"
|
msgstr "Porteblaj larĝkapacitaj agordoj"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
#: js/ui/status/network.js:554 js/ui/status/network.js:1290
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hardware Disabled"
|
msgid "%s Hardware Disabled"
|
||||||
msgstr "%s aparataro malŝaltita"
|
msgstr "%s aparataro malŝaltita"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated
|
#. Translators: this is for a network device that cannot be activated
|
||||||
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
||||||
#: js/ui/status/network.js:557
|
#: js/ui/status/network.js:558
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disabled"
|
msgid "%s Disabled"
|
||||||
msgstr "%s malŝaltita"
|
msgstr "%s malŝaltita"
|
||||||
|
|
||||||
#: js/ui/status/network.js:597
|
#: js/ui/status/network.js:598
|
||||||
msgid "Connect to Internet"
|
msgid "Connect to Internet"
|
||||||
msgstr "Konekti al interreto"
|
msgstr "Konekti al interreto"
|
||||||
|
|
||||||
#: js/ui/status/network.js:786
|
#: js/ui/status/network.js:787
|
||||||
msgid "Airplane Mode is On"
|
msgid "Airplane Mode is On"
|
||||||
msgstr "Aviadila reĝimo ŝaltita"
|
msgstr "Aviadila reĝimo ŝaltita"
|
||||||
|
|
||||||
#: js/ui/status/network.js:787
|
#: js/ui/status/network.js:788
|
||||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||||
msgstr "Vifio malebliĝas se aviadila reĝimo estas ŝaltita."
|
msgstr "Vifio malebliĝas se aviadila reĝimo estas ŝaltita."
|
||||||
|
|
||||||
#: js/ui/status/network.js:788
|
#: js/ui/status/network.js:789
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
msgstr "Malŝalti aviadilan reĝimon"
|
msgstr "Malŝalti aviadilan reĝimon"
|
||||||
|
|
||||||
#: js/ui/status/network.js:797
|
#: js/ui/status/network.js:798
|
||||||
msgid "Wi-Fi is Off"
|
msgid "Wi-Fi is Off"
|
||||||
msgstr "Vifio malŝaltita"
|
msgstr "Vifio malŝaltita"
|
||||||
|
|
||||||
#: js/ui/status/network.js:798
|
#: js/ui/status/network.js:799
|
||||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||||
msgstr "Necesas ŝalti vifion por konekti al reto."
|
msgstr "Necesas ŝalti vifion por konekti al reto."
|
||||||
|
|
||||||
#: js/ui/status/network.js:799
|
#: js/ui/status/network.js:800
|
||||||
msgid "Turn On Wi-Fi"
|
msgid "Turn On Wi-Fi"
|
||||||
msgstr "Ŝalti vifion"
|
msgstr "Ŝalti vifion"
|
||||||
|
|
||||||
#: js/ui/status/network.js:824
|
#: js/ui/status/network.js:825
|
||||||
msgid "Wi-Fi Networks"
|
msgid "Wi-Fi Networks"
|
||||||
msgstr "Vifiaj retoj"
|
msgstr "Vifiaj retoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:826
|
#: js/ui/status/network.js:827
|
||||||
msgid "Select a network"
|
msgid "Select a network"
|
||||||
msgstr "Elekti reton"
|
msgstr "Elekti reton"
|
||||||
|
|
||||||
#: js/ui/status/network.js:855
|
#: js/ui/status/network.js:856
|
||||||
msgid "No Networks"
|
msgid "No Networks"
|
||||||
msgstr "Neniu reto"
|
msgstr "Neniu reto"
|
||||||
|
|
||||||
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
|
#: js/ui/status/network.js:877 js/ui/status/rfkill.js:104
|
||||||
msgid "Use hardware switch to turn off"
|
msgid "Use hardware switch to turn off"
|
||||||
msgstr "Uzi aparataran ŝaltilon por malŝalti"
|
msgstr "Uzi aparataran ŝaltilon por malŝalti"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1152
|
#: js/ui/status/network.js:1153
|
||||||
msgid "Select Network"
|
msgid "Select Network"
|
||||||
msgstr "Elekti reton"
|
msgstr "Elekti reton"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1158
|
#: js/ui/status/network.js:1159
|
||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Vifio-agordoj"
|
msgstr "Vifio-agordoj"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1280
|
#: js/ui/status/network.js:1281
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hotspot Active"
|
msgid "%s Hotspot Active"
|
||||||
msgstr "%s retkaptejo aktiva"
|
msgstr "%s retkaptejo aktiva"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1295
|
#: js/ui/status/network.js:1296
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Not Connected"
|
msgid "%s Not Connected"
|
||||||
msgstr "%s ne konektita"
|
msgstr "%s ne konektita"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1392
|
#: js/ui/status/network.js:1393
|
||||||
msgid "connecting…"
|
msgid "connecting…"
|
||||||
msgstr "konektante…"
|
msgstr "konektante…"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: js/ui/status/network.js:1395
|
#: js/ui/status/network.js:1396
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "aŭtentigo necesas"
|
msgstr "aŭtentigo necesas"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1397
|
#: js/ui/status/network.js:1398
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "konekto malsukcesis"
|
msgstr "konekto malsukcesis"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1447
|
#: js/ui/status/network.js:1448
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "VPR-agordoj"
|
msgstr "VPR-agordoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1464
|
#: js/ui/status/network.js:1465
|
||||||
msgid "VPN"
|
msgid "VPN"
|
||||||
msgstr "VPR"
|
msgstr "VPR"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1474
|
#: js/ui/status/network.js:1475
|
||||||
msgid "VPN Off"
|
msgid "VPN Off"
|
||||||
msgstr "VPR malŝaltita"
|
msgstr "VPR malŝaltita"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
#: js/ui/status/network.js:1536 js/ui/status/rfkill.js:82
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Ret-agordoj"
|
msgstr "Ret-agordoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1564
|
#: js/ui/status/network.js:1565
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wired Connection"
|
msgid "%s Wired Connection"
|
||||||
msgid_plural "%s Wired Connections"
|
msgid_plural "%s Wired Connections"
|
||||||
msgstr[0] "%s drata konekto"
|
msgstr[0] "%s drata konekto"
|
||||||
msgstr[1] "%s drataj konektoj"
|
msgstr[1] "%s drataj konektoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1568
|
#: js/ui/status/network.js:1569
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wi-Fi Connection"
|
msgid "%s Wi-Fi Connection"
|
||||||
msgid_plural "%s Wi-Fi Connections"
|
msgid_plural "%s Wi-Fi Connections"
|
||||||
msgstr[0] "%s vifia konekto"
|
msgstr[0] "%s vifia konekto"
|
||||||
msgstr[1] "%s vifiaj konektoj"
|
msgstr[1] "%s vifiaj konektoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1572
|
#: js/ui/status/network.js:1573
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Modem Connection"
|
msgid "%s Modem Connection"
|
||||||
msgid_plural "%s Modem Connections"
|
msgid_plural "%s Modem Connections"
|
||||||
msgstr[0] "%s modema konekto"
|
msgstr[0] "%s modema konekto"
|
||||||
msgstr[1] "%s modemaj konektoj"
|
msgstr[1] "%s modemaj konektoj"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1701
|
#: js/ui/status/network.js:1706
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Konekto malsukcesis"
|
msgstr "Konekto malsukcesis"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1702
|
#: js/ui/status/network.js:1707
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Aktivigo de reto-konekto malsukcesis"
|
msgstr "Aktivigo de reto-konekto malsukcesis"
|
||||||
|
|
||||||
@@ -2098,7 +2094,7 @@ msgstr[1] "Agordaj ŝanĝoj malfaritos post %d sekundoj"
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#: js/ui/windowManager.js:662
|
#: js/ui/windowManager.js:677
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d × %d"
|
msgid "%d × %d"
|
||||||
msgstr "%d × %d"
|
msgstr "%d × %d"
|
||||||
@@ -2231,6 +2227,9 @@ msgstr[1] "%u enigoj"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sistemsonoj"
|
msgstr "Sistemsonoj"
|
||||||
|
|
||||||
|
#~ msgid "toggle-switch-us"
|
||||||
|
#~ msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#~ msgid "network-workgroup"
|
#~ msgid "network-workgroup"
|
||||||
#~ msgstr "network-workgroup"
|
#~ msgstr "network-workgroup"
|
||||||
|
|
||||||
|
370
po/es.po
@@ -9,8 +9,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||||
"POT-Creation-Date: 2019-03-24 17:37+0000\n"
|
"POT-Creation-Date: 2019-06-06 11:42+0000\n"
|
||||||
"PO-Revision-Date: 2019-02-06 11:27+0100\n"
|
"PO-Revision-Date: 2019-06-10 12:04+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 3.31.90\n"
|
"X-Generator: Gtranslator 3.32.0\n"
|
||||||
|
|
||||||
#: data/50-gnome-shell-system.xml:6
|
#: data/50-gnome-shell-system.xml:6
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -428,10 +428,11 @@ msgstr ""
|
|||||||
msgid "Browse in Software"
|
msgid "Browse in Software"
|
||||||
msgstr "Buscar en Software"
|
msgstr "Buscar en Software"
|
||||||
|
|
||||||
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
|
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
|
||||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
|
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
|
||||||
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
|
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
|
||||||
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
|
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
|
||||||
|
#: js/ui/status/network.js:894
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
@@ -439,7 +440,7 @@ msgstr "Cancelar"
|
|||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Siguiente"
|
msgstr "Siguiente"
|
||||||
|
|
||||||
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
|
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
|
||||||
#: js/ui/unlockDialog.js:41
|
#: js/ui/unlockDialog.js:41
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Desbloquear"
|
msgstr "Desbloquear"
|
||||||
@@ -470,8 +471,8 @@ msgstr "(ej., usuario o %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
|
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
|
||||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nombre de usuario:"
|
msgstr "Nombre de usuario:"
|
||||||
|
|
||||||
@@ -522,7 +523,7 @@ msgstr "Cerrar la sesión"
|
|||||||
|
|
||||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||||
#: js/misc/systemActions.js:105
|
#: js/misc/systemActions.js:105
|
||||||
msgid "logout;sign off"
|
msgid "logout;log out;sign off"
|
||||||
msgstr "cerrar;sesión;salir"
|
msgstr "cerrar;sesión;salir"
|
||||||
|
|
||||||
#. Translators: The name of the suspend action in search
|
#. Translators: The name of the suspend action in search
|
||||||
@@ -708,11 +709,11 @@ msgstr ""
|
|||||||
|
|
||||||
#. No support for non-modal system dialogs, so ignore the option
|
#. No support for non-modal system dialogs, so ignore the option
|
||||||
#. let modal = options['modal'] || true;
|
#. let modal = options['modal'] || true;
|
||||||
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
|
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
|
||||||
msgid "Deny Access"
|
msgid "Deny Access"
|
||||||
msgstr "Denegar acceso"
|
msgstr "Denegar acceso"
|
||||||
|
|
||||||
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
|
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
|
||||||
msgid "Grant Access"
|
msgid "Grant Access"
|
||||||
msgstr "Conceder acceso"
|
msgstr "Conceder acceso"
|
||||||
|
|
||||||
@@ -728,53 +729,58 @@ msgstr "Frecuentes"
|
|||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todas"
|
msgstr "Todas"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
#. Translators: This is the heading of a list of open windows
|
||||||
|
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||||
|
msgid "Open Windows"
|
||||||
|
msgstr "Ventanas abiertas"
|
||||||
|
|
||||||
|
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Ventana nueva"
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1751
|
#: js/ui/appDisplay.js:1746
|
||||||
msgid "Launch using Dedicated Graphics Card"
|
msgid "Launch using Dedicated Graphics Card"
|
||||||
msgstr "Lanzar usando la tarjeta gráfica dedicada"
|
msgstr "Lanzar usando la tarjeta gráfica dedicada"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Quitar de los favoritos"
|
msgstr "Quitar de los favoritos"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1784
|
#: js/ui/appDisplay.js:1779
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Añadir a los favoritos"
|
msgstr "Añadir a los favoritos"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Mostrar detalles"
|
msgstr "Mostrar detalles"
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:141
|
#: js/ui/appFavorites.js:149
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "Se ha añadido %s a sus favoritos."
|
msgstr "Se ha añadido %s a sus favoritos."
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:175
|
#: js/ui/appFavorites.js:183
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "Se ha quitado %s de sus favoritos."
|
msgstr "Se ha quitado %s de sus favoritos."
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:42
|
#: js/ui/audioDeviceSelection.js:39
|
||||||
msgid "Select Audio Device"
|
msgid "Select Audio Device"
|
||||||
msgstr "Seleccionar dispositivo de sonido"
|
msgstr "Seleccionar dispositivo de sonido"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:53
|
#: js/ui/audioDeviceSelection.js:50
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Configuración de sonido"
|
msgstr "Configuración de sonido"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:62
|
#: js/ui/audioDeviceSelection.js:59
|
||||||
msgid "Headphones"
|
msgid "Headphones"
|
||||||
msgstr "Auriculares"
|
msgstr "Auriculares"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:64
|
#: js/ui/audioDeviceSelection.js:61
|
||||||
msgid "Headset"
|
msgid "Headset"
|
||||||
msgstr "Manos libres"
|
msgstr "Manos libres"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
|
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Micrófono"
|
msgstr "Micrófono"
|
||||||
|
|
||||||
@@ -935,67 +941,75 @@ msgstr "Forzar la salida"
|
|||||||
msgid "Wait"
|
msgid "Wait"
|
||||||
msgstr "Esperar"
|
msgstr "Esperar"
|
||||||
|
|
||||||
#: js/ui/components/automountManager.js:86
|
#: js/ui/components/automountManager.js:87
|
||||||
msgid "External drive connected"
|
msgid "External drive connected"
|
||||||
msgstr "Dispositivo externo conectado"
|
msgstr "Dispositivo externo conectado"
|
||||||
|
|
||||||
#: js/ui/components/automountManager.js:98
|
#: js/ui/components/automountManager.js:99
|
||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "Dispositivo externo desconectado"
|
msgstr "Dispositivo externo desconectado"
|
||||||
|
|
||||||
|
#: js/ui/components/automountManager.js:211
|
||||||
|
msgid "Unable to unlock volume"
|
||||||
|
msgstr "No se puede desbloquear el volumen"
|
||||||
|
|
||||||
|
#: js/ui/components/automountManager.js:212
|
||||||
|
msgid "The installed udisks version does not support the PIM setting"
|
||||||
|
msgstr "La versión de udisks instalada no soporta la configuración PIM"
|
||||||
|
|
||||||
#: js/ui/components/autorunManager.js:334
|
#: js/ui/components/autorunManager.js:334
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Abrir con %s"
|
msgstr "Abrir con %s"
|
||||||
|
|
||||||
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
|
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Contraseña:"
|
msgstr "Contraseña:"
|
||||||
|
|
||||||
#: js/ui/components/keyring.js:108
|
#: js/ui/components/keyring.js:97
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Escriba de nuevo:"
|
msgstr "Escriba de nuevo:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:102
|
#: js/ui/components/networkAgent.js:103
|
||||||
msgid ""
|
msgid ""
|
||||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
|
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
|
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
|
||||||
#: js/ui/status/network.js:309 js/ui/status/network.js:891
|
#: js/ui/status/network.js:310 js/ui/status/network.js:897
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Conectar"
|
msgstr "Conectar"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
|
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
|
||||||
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
|
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
|
||||||
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
|
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Contraseña: "
|
msgstr "Contraseña: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: js/ui/components/networkAgent.js:216
|
#: js/ui/components/networkAgent.js:217
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Clave:"
|
msgstr "Clave:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
|
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Contraseña de la clave privada:"
|
msgstr "Contraseña de la clave privada:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:269
|
#: js/ui/components/networkAgent.js:270
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Identidad:"
|
msgstr "Identidad:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:283
|
#: js/ui/components/networkAgent.js:284
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Servicio:"
|
msgstr "Servicio:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
|
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "La red inalámbrica requiere autenticación"
|
msgstr "La red inalámbrica requiere autenticación"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
@@ -1004,53 +1018,53 @@ msgstr ""
|
|||||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||||
"inalámbrica «%s»."
|
"inalámbrica «%s»."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
|
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Autenticación 802.1X cableada"
|
msgstr "Autenticación 802.1X cableada"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:319
|
#: js/ui/components/networkAgent.js:320
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Nombre de la red: "
|
msgstr "Nombre de la red: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
|
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "Autenticación DSL"
|
msgstr "Autenticación DSL"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
|
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "Código PIN requerido"
|
msgstr "Código PIN requerido"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
|
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:333
|
#: js/ui/components/networkAgent.js:334
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
|
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Contraseña de la red de banda ancha móvil"
|
msgstr "Contraseña de la red de banda ancha móvil"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
|
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
|
||||||
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
|
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "Se requiere una contraseña para conectarse a «%s»."
|
msgstr "Se requiere una contraseña para conectarse a «%s»."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Gestor de la red"
|
msgstr "Gestor de la red"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:34
|
#: js/ui/components/polkitAgent.js:36
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Se necesita autenticación"
|
msgstr "Se necesita autenticación"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:62
|
#: js/ui/components/polkitAgent.js:64
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Administrador"
|
msgstr "Administrador"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:139
|
#: js/ui/components/polkitAgent.js:141
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Autenticar"
|
msgstr "Autenticar"
|
||||||
|
|
||||||
@@ -1058,7 +1072,7 @@ msgstr "Autenticar"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
|
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
|
||||||
msgid "Sorry, that didn’t work. Please try again."
|
msgid "Sorry, that didn’t work. Please try again."
|
||||||
msgstr "Eso no ha funcionado. Inténtelo de nuevo."
|
msgstr "Eso no ha funcionado. Inténtelo de nuevo."
|
||||||
|
|
||||||
@@ -1108,23 +1122,23 @@ msgstr "Añadir relojes del mundo…"
|
|||||||
msgid "World Clocks"
|
msgid "World Clocks"
|
||||||
msgstr "Relojes del mundo"
|
msgstr "Relojes del mundo"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:222
|
#: js/ui/dateMenu.js:228
|
||||||
msgid "Weather"
|
msgid "Weather"
|
||||||
msgstr "Meteorología"
|
msgstr "Meteorología"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:305
|
#: js/ui/dateMenu.js:311
|
||||||
msgid "Select a location…"
|
msgid "Select a location…"
|
||||||
msgstr "Seleccionar ubicación…"
|
msgstr "Seleccionar ubicación…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:313
|
#: js/ui/dateMenu.js:319
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Cargando…"
|
msgstr "Cargando…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:323
|
#: js/ui/dateMenu.js:329
|
||||||
msgid "Go online for weather information"
|
msgid "Go online for weather information"
|
||||||
msgstr "Conectarse para obtener la información meteorológica"
|
msgstr "Conectarse para obtener la información meteorológica"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:325
|
#: js/ui/dateMenu.js:331
|
||||||
msgid "Weather information is currently unavailable"
|
msgid "Weather information is currently unavailable"
|
||||||
msgstr "La información meteorológica no está disponible actualmente."
|
msgstr "La información meteorológica no está disponible actualmente."
|
||||||
|
|
||||||
@@ -1252,27 +1266,27 @@ msgstr ""
|
|||||||
"puede tardar mucho tiempo: asegúrese de que tiene una copia de respaldo y de "
|
"puede tardar mucho tiempo: asegúrese de que tiene una copia de respaldo y de "
|
||||||
"que el equipo está enchufado."
|
"que el equipo está enchufado."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:309
|
#: js/ui/endSessionDialog.js:310
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Funcionando con batería: conéctese antes de instalar las actualizaciones."
|
"Funcionando con batería: conéctese antes de instalar las actualizaciones."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:326
|
#: js/ui/endSessionDialog.js:327
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr "Algunas aplicaciones están ocupadas o tienen trabajo sin guardar."
|
msgstr "Algunas aplicaciones están ocupadas o tienen trabajo sin guardar."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:333
|
#: js/ui/endSessionDialog.js:334
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "Hay otros usuarios con la sesión iniciada."
|
msgstr "Hay otros usuarios con la sesión iniciada."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||||
#: js/ui/endSessionDialog.js:614
|
#: js/ui/endSessionDialog.js:615
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (remoto)"
|
msgstr "%s (remoto)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console
|
#. Translators: Console here refers to a tty like a VT console
|
||||||
#: js/ui/endSessionDialog.js:617
|
#: js/ui/endSessionDialog.js:618
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (consola)"
|
msgstr "%s (consola)"
|
||||||
@@ -1359,13 +1373,13 @@ msgid "Leave On"
|
|||||||
msgstr "Dejar activada"
|
msgstr "Dejar activada"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:1263
|
#: js/ui/status/network.js:1269
|
||||||
msgid "Turn On"
|
msgid "Turn On"
|
||||||
msgstr "Encender"
|
msgstr "Encender"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
#: js/ui/status/network.js:128 js/ui/status/network.js:311
|
||||||
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
|
||||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||||
#: js/ui/status/rfkill.js:106
|
#: js/ui/status/rfkill.js:106
|
||||||
msgid "Turn Off"
|
msgid "Turn Off"
|
||||||
@@ -1427,7 +1441,7 @@ msgstr "Ver fuente"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
#: js/ui/messageTray.js:1480
|
#: js/ui/messageTray.js:1479
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
@@ -1505,47 +1519,38 @@ msgstr "Pulse Esc para salir"
|
|||||||
msgid "Press any key to exit"
|
msgid "Press any key to exit"
|
||||||
msgstr "Pulse cualquier tecla para salir"
|
msgstr "Pulse cualquier tecla para salir"
|
||||||
|
|
||||||
#: js/ui/panel.js:108
|
#: js/ui/panel.js:113
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Salir"
|
msgstr "Salir"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: js/ui/panel.js:471
|
#: js/ui/panel.js:468
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: js/ui/panel.js:746
|
#: js/ui/panel.js:743
|
||||||
msgctxt "System menu in the top bar"
|
msgctxt "System menu in the top bar"
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
#: js/ui/panel.js:867
|
#: js/ui/panel.js:862
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#: js/ui/runDialog.js:65
|
||||||
#. (for toggle switches containing the English words
|
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
#. switches containing "◯" and "|"). Other values will
|
|
||||||
#. simply result in invisible toggle switches.
|
|
||||||
#: js/ui/popupMenu.js:285
|
|
||||||
msgid "toggle-switch-us"
|
|
||||||
msgstr "toggle-switch-intl"
|
|
||||||
|
|
||||||
#: js/ui/runDialog.js:64
|
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Introducir un comando"
|
msgstr "Introducir un comando"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
|
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Cerrar"
|
msgstr "Cerrar"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:266
|
#: js/ui/runDialog.js:267
|
||||||
msgid "Restart is not available on Wayland"
|
msgid "Restart is not available on Wayland"
|
||||||
msgstr "Reiniciar no está disponible en Wayland"
|
msgstr "Reiniciar no está disponible en Wayland"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:271
|
#: js/ui/runDialog.js:272
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "Reiniciando…"
|
msgstr "Reiniciando…"
|
||||||
|
|
||||||
@@ -1592,15 +1597,15 @@ msgstr "No se pudo bloquear"
|
|||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Una aplicación impidió el bloqueo"
|
msgstr "Una aplicación impidió el bloqueo"
|
||||||
|
|
||||||
#: js/ui/search.js:635
|
#: js/ui/search.js:638
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: js/ui/search.js:637
|
#: js/ui/search.js:640
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "No se encontraron resultados."
|
msgstr "No se encontraron resultados."
|
||||||
|
|
||||||
#: js/ui/search.js:761
|
#: js/ui/search.js:764
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d more"
|
msgid "%d more"
|
||||||
msgid_plural "%d more"
|
msgid_plural "%d more"
|
||||||
@@ -1623,14 +1628,61 @@ msgstr "Mostrar texto"
|
|||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Ocultar texto"
|
msgstr "Ocultar texto"
|
||||||
|
|
||||||
#: js/ui/shellMountOperation.js:296
|
#: js/ui/shellMountOperation.js:318
|
||||||
|
msgid "Hidden Volume"
|
||||||
|
msgstr "Ocultar volumen"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:321
|
||||||
|
msgid "Windows System Volume"
|
||||||
|
msgstr "Volumen de sistema Windows"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:324
|
||||||
|
msgid "Uses Keyfiles"
|
||||||
|
msgstr "Usa archivos de claves"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:330
|
||||||
|
#, javascript-format
|
||||||
|
msgid ""
|
||||||
|
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
|
||||||
|
msgstr ""
|
||||||
|
"Para desbloquear un volumen que usa archivos de claves use la herramienta <i>"
|
||||||
|
"%s</i> en su lugar."
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:337
|
||||||
|
msgid "PIM Number"
|
||||||
|
msgstr "Número PIM"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:355
|
||||||
|
msgid "The PIM must be a number or empty."
|
||||||
|
msgstr "El PIM debe ser un número o estar vacío."
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:366
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Contraseña"
|
msgstr "Contraseña"
|
||||||
|
|
||||||
#: js/ui/shellMountOperation.js:317
|
#: js/ui/shellMountOperation.js:396
|
||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Recordar contraseña"
|
msgstr "Recordar contraseña"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:418
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Open %s"
|
||||||
|
msgstr "Abrir %s"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:490
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Unable to start %s"
|
||||||
|
msgstr "No se puede iniciar %s"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:492
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Couldn’t find the %s application"
|
||||||
|
msgstr "No se pudo encontrar la aplicación %s"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:35
|
#: js/ui/status/accessibility.js:35
|
||||||
msgid "Accessibility"
|
msgid "Accessibility"
|
||||||
msgstr "Accesibilidad"
|
msgstr "Accesibilidad"
|
||||||
@@ -1667,11 +1719,11 @@ msgstr "Rechazo de teclas"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Teclas del ratón"
|
msgstr "Teclas del ratón"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:151
|
#: js/ui/status/accessibility.js:135
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Contraste alto"
|
msgstr "Contraste alto"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:182
|
#: js/ui/status/accessibility.js:177
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
@@ -1679,7 +1731,7 @@ msgstr "Texto grande"
|
|||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
|
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Configuración de Bluetooth"
|
msgstr "Configuración de Bluetooth"
|
||||||
|
|
||||||
@@ -1703,11 +1755,31 @@ msgstr "Encendido"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brillo"
|
msgstr "Brillo"
|
||||||
|
|
||||||
#: js/ui/status/keyboard.js:812
|
#: js/ui/status/dwellClick.js:13
|
||||||
|
msgid "Single Click"
|
||||||
|
msgstr "Una sola pulsación"
|
||||||
|
|
||||||
|
#: js/ui/status/dwellClick.js:18
|
||||||
|
msgid "Double Click"
|
||||||
|
msgstr "Doble pulsación"
|
||||||
|
|
||||||
|
#: js/ui/status/dwellClick.js:23
|
||||||
|
msgid "Drag"
|
||||||
|
msgstr "Arrastrar"
|
||||||
|
|
||||||
|
#: js/ui/status/dwellClick.js:28
|
||||||
|
msgid "Secondary Click"
|
||||||
|
msgstr "Pulsación secundaria"
|
||||||
|
|
||||||
|
#: js/ui/status/dwellClick.js:37
|
||||||
|
msgid "Dwell Click"
|
||||||
|
msgstr "Pulsación al posarse"
|
||||||
|
|
||||||
|
#: js/ui/status/keyboard.js:813
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: js/ui/status/keyboard.js:834
|
#: js/ui/status/keyboard.js:835
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Mostrar la distribución del teclado"
|
msgstr "Mostrar la distribución del teclado"
|
||||||
|
|
||||||
@@ -1736,12 +1808,12 @@ msgid "Enable"
|
|||||||
msgstr "Activar"
|
msgstr "Activar"
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
#. Translators: %s is an application name
|
||||||
#: js/ui/status/location.js:353
|
#: js/ui/status/location.js:355
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Give %s access to your location?"
|
msgid "Give %s access to your location?"
|
||||||
msgstr "¿Conceder acceso a %s a su ubicación?"
|
msgstr "¿Conceder acceso a %s a su ubicación?"
|
||||||
|
|
||||||
#: js/ui/status/location.js:354
|
#: js/ui/status/location.js:356
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
msgid "Location access can be changed at any time from the privacy settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Los servicios de ubicación se pueden cambiar en cualquier momento desde la "
|
"Los servicios de ubicación se pueden cambiar en cualquier momento desde la "
|
||||||
@@ -1752,13 +1824,13 @@ msgid "<unknown>"
|
|||||||
msgstr "<desconocido>"
|
msgstr "<desconocido>"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Off"
|
msgid "%s Off"
|
||||||
msgstr "%s apagada"
|
msgstr "%s apagada"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:419
|
#: js/ui/status/network.js:420
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connected"
|
msgid "%s Connected"
|
||||||
msgstr "%s conectada"
|
msgstr "%s conectada"
|
||||||
@@ -1766,189 +1838,189 @@ msgstr "%s conectada"
|
|||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu);
|
#. under NetworkManager's control (and thus cannot be used in the menu);
|
||||||
#. %s is a network identifier
|
#. %s is a network identifier
|
||||||
#: js/ui/status/network.js:424
|
#: js/ui/status/network.js:425
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unmanaged"
|
msgid "%s Unmanaged"
|
||||||
msgstr "%s sin gestionar"
|
msgstr "%s sin gestionar"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:427
|
#: js/ui/status/network.js:428
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disconnecting"
|
msgid "%s Disconnecting"
|
||||||
msgstr "Desconectando %s"
|
msgstr "Desconectando %s"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connecting"
|
msgid "%s Connecting"
|
||||||
msgstr "Conectando %s"
|
msgstr "Conectando %s"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
||||||
#: js/ui/status/network.js:437
|
#: js/ui/status/network.js:438
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Requires Authentication"
|
msgid "%s Requires Authentication"
|
||||||
msgstr "%s requiere autenticación"
|
msgstr "%s requiere autenticación"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing; %s is a network identifier
|
#. module, which is missing; %s is a network identifier
|
||||||
#: js/ui/status/network.js:445
|
#: js/ui/status/network.js:446
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Firmware Missing For %s"
|
msgid "Firmware Missing For %s"
|
||||||
msgstr "Falta el «firmware» para %s"
|
msgstr "Falta el «firmware» para %s"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
||||||
#: js/ui/status/network.js:449
|
#: js/ui/status/network.js:450
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unavailable"
|
msgid "%s Unavailable"
|
||||||
msgstr "%s no disponible"
|
msgstr "%s no disponible"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:452
|
#: js/ui/status/network.js:453
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connection Failed"
|
msgid "%s Connection Failed"
|
||||||
msgstr "Falló la conexión %s"
|
msgstr "Falló la conexión %s"
|
||||||
|
|
||||||
#: js/ui/status/network.js:464
|
#: js/ui/status/network.js:465
|
||||||
msgid "Wired Settings"
|
msgid "Wired Settings"
|
||||||
msgstr "Configuración de red cableada"
|
msgstr "Configuración de red cableada"
|
||||||
|
|
||||||
#: js/ui/status/network.js:506
|
#: js/ui/status/network.js:507
|
||||||
msgid "Mobile Broadband Settings"
|
msgid "Mobile Broadband Settings"
|
||||||
msgstr "Configuración de banda ancha móvil"
|
msgstr "Configuración de banda ancha móvil"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hardware Disabled"
|
msgid "%s Hardware Disabled"
|
||||||
msgstr "Hardware %s desactivado"
|
msgstr "Hardware %s desactivado"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated
|
#. Translators: this is for a network device that cannot be activated
|
||||||
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
||||||
#: js/ui/status/network.js:557
|
#: js/ui/status/network.js:558
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disabled"
|
msgid "%s Disabled"
|
||||||
msgstr "%s desactivado"
|
msgstr "%s desactivado"
|
||||||
|
|
||||||
#: js/ui/status/network.js:597
|
#: js/ui/status/network.js:598
|
||||||
msgid "Connect to Internet"
|
msgid "Connect to Internet"
|
||||||
msgstr "Conectar a Internet"
|
msgstr "Conectar a Internet"
|
||||||
|
|
||||||
#: js/ui/status/network.js:786
|
#: js/ui/status/network.js:792
|
||||||
msgid "Airplane Mode is On"
|
msgid "Airplane Mode is On"
|
||||||
msgstr "El modo avión está activado"
|
msgstr "El modo avión está activado"
|
||||||
|
|
||||||
#: js/ui/status/network.js:787
|
#: js/ui/status/network.js:793
|
||||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||||
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
|
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
|
||||||
|
|
||||||
#: js/ui/status/network.js:788
|
#: js/ui/status/network.js:794
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
msgstr "Apagar el modo avión"
|
msgstr "Apagar el modo avión"
|
||||||
|
|
||||||
#: js/ui/status/network.js:797
|
#: js/ui/status/network.js:803
|
||||||
msgid "Wi-Fi is Off"
|
msgid "Wi-Fi is Off"
|
||||||
msgstr "La Wi-Fi está desactivada"
|
msgstr "La Wi-Fi está desactivada"
|
||||||
|
|
||||||
#: js/ui/status/network.js:798
|
#: js/ui/status/network.js:804
|
||||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||||
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
|
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
|
||||||
|
|
||||||
#: js/ui/status/network.js:799
|
#: js/ui/status/network.js:805
|
||||||
msgid "Turn On Wi-Fi"
|
msgid "Turn On Wi-Fi"
|
||||||
msgstr "Activar la Wi-Fi"
|
msgstr "Activar la Wi-Fi"
|
||||||
|
|
||||||
#: js/ui/status/network.js:824
|
#: js/ui/status/network.js:830
|
||||||
msgid "Wi-Fi Networks"
|
msgid "Wi-Fi Networks"
|
||||||
msgstr "Redes Wi-Fi"
|
msgstr "Redes Wi-Fi"
|
||||||
|
|
||||||
#: js/ui/status/network.js:826
|
#: js/ui/status/network.js:832
|
||||||
msgid "Select a network"
|
msgid "Select a network"
|
||||||
msgstr "Seleccionar una red"
|
msgstr "Seleccionar una red"
|
||||||
|
|
||||||
#: js/ui/status/network.js:855
|
#: js/ui/status/network.js:861
|
||||||
msgid "No Networks"
|
msgid "No Networks"
|
||||||
msgstr "No hay redes"
|
msgstr "No hay redes"
|
||||||
|
|
||||||
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
|
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
|
||||||
msgid "Use hardware switch to turn off"
|
msgid "Use hardware switch to turn off"
|
||||||
msgstr "Usar el interruptor hardware para apagar"
|
msgstr "Usar el interruptor hardware para apagar"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1152
|
#: js/ui/status/network.js:1158
|
||||||
msgid "Select Network"
|
msgid "Select Network"
|
||||||
msgstr "Seleccionar red"
|
msgstr "Seleccionar red"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1158
|
#: js/ui/status/network.js:1164
|
||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Configuración de Wi-Fi"
|
msgstr "Configuración de Wi-Fi"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1280
|
#: js/ui/status/network.js:1286
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hotspot Active"
|
msgid "%s Hotspot Active"
|
||||||
msgstr "Punto de acceso %s activo"
|
msgstr "Punto de acceso %s activo"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1295
|
#: js/ui/status/network.js:1301
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Not Connected"
|
msgid "%s Not Connected"
|
||||||
msgstr "%s no conectado"
|
msgstr "%s no conectado"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1392
|
#: js/ui/status/network.js:1398
|
||||||
msgid "connecting…"
|
msgid "connecting…"
|
||||||
msgstr "conectando…"
|
msgstr "conectando…"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: js/ui/status/network.js:1395
|
#: js/ui/status/network.js:1401
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "se necesita autenticación"
|
msgstr "se necesita autenticación"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1397
|
#: js/ui/status/network.js:1403
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "falló la conexión"
|
msgstr "falló la conexión"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1447
|
#: js/ui/status/network.js:1453
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "Configuración de VPN"
|
msgstr "Configuración de VPN"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1464
|
#: js/ui/status/network.js:1470
|
||||||
msgid "VPN"
|
msgid "VPN"
|
||||||
msgstr "VPN"
|
msgstr "VPN"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1474
|
#: js/ui/status/network.js:1480
|
||||||
msgid "VPN Off"
|
msgid "VPN Off"
|
||||||
msgstr "VPN apagada"
|
msgstr "VPN apagada"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Configuración de la red"
|
msgstr "Configuración de la red"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1564
|
#: js/ui/status/network.js:1570
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wired Connection"
|
msgid "%s Wired Connection"
|
||||||
msgid_plural "%s Wired Connections"
|
msgid_plural "%s Wired Connections"
|
||||||
msgstr[0] "%s conexión cableada"
|
msgstr[0] "%s conexión cableada"
|
||||||
msgstr[1] "%s conexiones cableadas"
|
msgstr[1] "%s conexiones cableadas"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1568
|
#: js/ui/status/network.js:1574
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wi-Fi Connection"
|
msgid "%s Wi-Fi Connection"
|
||||||
msgid_plural "%s Wi-Fi Connections"
|
msgid_plural "%s Wi-Fi Connections"
|
||||||
msgstr[0] "%s conexión inalámbrica"
|
msgstr[0] "%s conexión inalámbrica"
|
||||||
msgstr[1] "%s conexiones inalámbricas"
|
msgstr[1] "%s conexiones inalámbricas"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1572
|
#: js/ui/status/network.js:1578
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Modem Connection"
|
msgid "%s Modem Connection"
|
||||||
msgid_plural "%s Modem Connections"
|
msgid_plural "%s Modem Connections"
|
||||||
msgstr[0] "%s conexión por módem"
|
msgstr[0] "%s conexión por módem"
|
||||||
msgstr[1] "%s conexiones por módem"
|
msgstr[1] "%s conexiones por módem"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1701
|
#: js/ui/status/network.js:1711
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Falló la conexión"
|
msgstr "Falló la conexión"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1702
|
#: js/ui/status/network.js:1712
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Falló la activación de la conexión de red"
|
msgstr "Falló la activación de la conexión de red"
|
||||||
|
|
||||||
@@ -2130,22 +2202,22 @@ msgstr "Buscar"
|
|||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "«%s» está preparado"
|
msgstr "«%s» está preparado"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:53
|
#: js/ui/windowManager.js:54
|
||||||
msgid "Do you want to keep these display settings?"
|
msgid "Do you want to keep these display settings?"
|
||||||
msgstr "¿Quiere mantener esta configuración de la pantalla?"
|
msgstr "¿Quiere mantener esta configuración de la pantalla?"
|
||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in length,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#.
|
#.
|
||||||
#: js/ui/windowManager.js:65
|
#: js/ui/windowManager.js:66
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "Revertir configuración"
|
msgstr "Revertir configuración"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:68
|
#: js/ui/windowManager.js:69
|
||||||
msgid "Keep Changes"
|
msgid "Keep Changes"
|
||||||
msgstr "Mantener cambios"
|
msgstr "Mantener cambios"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:86
|
#: js/ui/windowManager.js:87
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Settings changes will revert in %d second"
|
msgid "Settings changes will revert in %d second"
|
||||||
msgid_plural "Settings changes will revert in %d seconds"
|
msgid_plural "Settings changes will revert in %d seconds"
|
||||||
@@ -2154,7 +2226,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#: js/ui/windowManager.js:662
|
#: js/ui/windowManager.js:678
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d × %d"
|
msgid "%d × %d"
|
||||||
msgstr "%d × %d"
|
msgstr "%d × %d"
|
||||||
@@ -2255,11 +2327,11 @@ msgstr "Desconocido"
|
|||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Falló al lanzar «%s»"
|
msgstr "Falló al lanzar «%s»"
|
||||||
|
|
||||||
#: src/shell-keyring-prompt.c:730
|
#: src/shell-keyring-prompt.c:731
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Las contraseñas no coinciden."
|
msgstr "Las contraseñas no coinciden."
|
||||||
|
|
||||||
#: src/shell-keyring-prompt.c:738
|
#: src/shell-keyring-prompt.c:739
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "La contraseña no puede estar vacía"
|
msgstr "La contraseña no puede estar vacía"
|
||||||
|
|
||||||
@@ -2289,6 +2361,9 @@ msgstr[1] "%u entradas"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
|
#~ msgid "toggle-switch-us"
|
||||||
|
#~ msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#~ msgid "network-workgroup"
|
#~ msgid "network-workgroup"
|
||||||
#~ msgstr "network-workgroup"
|
#~ msgstr "network-workgroup"
|
||||||
|
|
||||||
@@ -2512,9 +2587,6 @@ msgstr "Sonidos del sistema"
|
|||||||
#~ msgid "Internal error"
|
#~ msgid "Internal error"
|
||||||
#~ msgstr "Error interno"
|
#~ msgstr "Error interno"
|
||||||
|
|
||||||
#~ msgid "Unable to connect to %s"
|
|
||||||
#~ msgstr "No se pudo conectar a %s"
|
|
||||||
|
|
||||||
#~ msgid "View account"
|
#~ msgid "View account"
|
||||||
#~ msgstr "Ver cuenta"
|
#~ msgstr "Ver cuenta"
|
||||||
|
|
||||||
|
386
po/hu.po
@@ -4,22 +4,22 @@
|
|||||||
#
|
#
|
||||||
# Gabor Kelemen <kelemeng at gnome dot hu>, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016.
|
# Gabor Kelemen <kelemeng at gnome dot hu>, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016.
|
||||||
# Lukács Bence <lukacs.bence1 at gmail dot com>, 2012.
|
# Lukács Bence <lukacs.bence1 at gmail dot com>, 2012.
|
||||||
# Balázs Meskó <meskobalazs at gmail dot com>, 2014.
|
# Balázs Meskó <meskobalazs at gmail dot com>, 2014, 2019.
|
||||||
# Balázs Úr <urbalazs at gmail dot com>, 2012, 2014, 2015, 2016, 2017, 2018, 2019.
|
# Balázs Úr <ur.balazs at fsf dot hu>, 2012, 2014, 2015, 2016, 2017, 2018, 2019.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||||
"POT-Creation-Date: 2019-03-03 10:16+0000\n"
|
"POT-Creation-Date: 2019-05-28 17:15+0000\n"
|
||||||
"PO-Revision-Date: 2019-02-05 21:05+0100\n"
|
"PO-Revision-Date: 2019-06-01 13:15+0200\n"
|
||||||
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
|
||||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 1.2\n"
|
"X-Generator: Lokalize 18.12.3\n"
|
||||||
|
|
||||||
#: data/50-gnome-shell-system.xml:6
|
#: data/50-gnome-shell-system.xml:6
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -373,11 +373,6 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Hálózati bejelentkezés"
|
msgstr "Hálózati bejelentkezés"
|
||||||
|
|
||||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
|
|
||||||
msgid "network-workgroup"
|
|
||||||
msgstr "network-workgroup"
|
|
||||||
|
|
||||||
#: js/extensionPrefs/main.js:116
|
#: js/extensionPrefs/main.js:116
|
||||||
msgid "Something’s gone wrong"
|
msgid "Something’s gone wrong"
|
||||||
msgstr "Valami elromlott"
|
msgstr "Valami elromlott"
|
||||||
@@ -423,10 +418,11 @@ msgstr ""
|
|||||||
msgid "Browse in Software"
|
msgid "Browse in Software"
|
||||||
msgstr "Tallózás a Szoftverekben"
|
msgstr "Tallózás a Szoftverekben"
|
||||||
|
|
||||||
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:55
|
#: js/gdm/authPrompt.js:140 js/ui/audioDeviceSelection.js:52
|
||||||
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:136
|
#: js/ui/components/networkAgent.js:118 js/ui/components/polkitAgent.js:138
|
||||||
#: js/ui/endSessionDialog.js:430 js/ui/extensionDownloader.js:188
|
#: js/ui/endSessionDialog.js:431 js/ui/extensionDownloader.js:188
|
||||||
#: js/ui/shellMountOperation.js:325 js/ui/status/network.js:888
|
#: js/ui/shellMountOperation.js:404 js/ui/shellMountOperation.js:413
|
||||||
|
#: js/ui/status/network.js:894
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Mégse"
|
msgstr "Mégse"
|
||||||
|
|
||||||
@@ -434,7 +430,7 @@ msgstr "Mégse"
|
|||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Következő"
|
msgstr "Következő"
|
||||||
|
|
||||||
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:329
|
#: js/gdm/authPrompt.js:198 js/ui/shellMountOperation.js:408
|
||||||
#: js/ui/unlockDialog.js:41
|
#: js/ui/unlockDialog.js:41
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Feloldás"
|
msgstr "Feloldás"
|
||||||
@@ -465,8 +461,8 @@ msgstr "(például: felhasználó vagy %s)"
|
|||||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||||
#. is not visible here since we only care about phase2 authentication
|
#. is not visible here since we only care about phase2 authentication
|
||||||
#. (and don't even care of which one)
|
#. (and don't even care of which one)
|
||||||
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:243
|
#: js/gdm/loginDialog.js:889 js/ui/components/networkAgent.js:244
|
||||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Felhasználónév: "
|
msgstr "Felhasználónév: "
|
||||||
|
|
||||||
@@ -517,7 +513,7 @@ msgstr "Kijelentkezés"
|
|||||||
|
|
||||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||||
#: js/misc/systemActions.js:105
|
#: js/misc/systemActions.js:105
|
||||||
msgid "logout;sign off"
|
msgid "logout;log out;sign off"
|
||||||
msgstr "kijelentkezés;kilépés"
|
msgstr "kijelentkezés;kilépés"
|
||||||
|
|
||||||
#. Translators: The name of the suspend action in search
|
#. Translators: The name of the suspend action in search
|
||||||
@@ -704,11 +700,11 @@ msgstr ""
|
|||||||
|
|
||||||
#. No support for non-modal system dialogs, so ignore the option
|
#. No support for non-modal system dialogs, so ignore the option
|
||||||
#. let modal = options['modal'] || true;
|
#. let modal = options['modal'] || true;
|
||||||
#: js/ui/accessDialog.js:37 js/ui/status/location.js:360
|
#: js/ui/accessDialog.js:38 js/ui/status/location.js:362
|
||||||
msgid "Deny Access"
|
msgid "Deny Access"
|
||||||
msgstr "Hozzáférés tiltása"
|
msgstr "Hozzáférés tiltása"
|
||||||
|
|
||||||
#: js/ui/accessDialog.js:38 js/ui/status/location.js:363
|
#: js/ui/accessDialog.js:39 js/ui/status/location.js:365
|
||||||
msgid "Grant Access"
|
msgid "Grant Access"
|
||||||
msgstr "Hozzáférés megadása"
|
msgstr "Hozzáférés megadása"
|
||||||
|
|
||||||
@@ -724,53 +720,58 @@ msgstr "Gyakori"
|
|||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Összes"
|
msgstr "Összes"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1737 js/ui/panel.js:83
|
#. Translators: This is the heading of a list of open windows
|
||||||
|
#: js/ui/appDisplay.js:1713 js/ui/panel.js:79
|
||||||
|
msgid "Open Windows"
|
||||||
|
msgstr "Ablakok megnyitása"
|
||||||
|
|
||||||
|
#: js/ui/appDisplay.js:1732 js/ui/panel.js:86
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Új ablak"
|
msgstr "Új ablak"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1751
|
#: js/ui/appDisplay.js:1746
|
||||||
msgid "Launch using Dedicated Graphics Card"
|
msgid "Launch using Dedicated Graphics Card"
|
||||||
msgstr "Futtatás a dedikált videokártyával"
|
msgstr "Futtatás a dedikált videokártyával"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1778 js/ui/dash.js:239
|
#: js/ui/appDisplay.js:1773 js/ui/dash.js:239
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Eltávolítás a Kedvencek közül"
|
msgstr "Eltávolítás a Kedvencek közül"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1784
|
#: js/ui/appDisplay.js:1779
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Hozzáadás a Kedvencekhez"
|
msgstr "Hozzáadás a Kedvencekhez"
|
||||||
|
|
||||||
#: js/ui/appDisplay.js:1794 js/ui/panel.js:94
|
#: js/ui/appDisplay.js:1789 js/ui/panel.js:97
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Részletek megjelenítése"
|
msgstr "Részletek megjelenítése"
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:141
|
#: js/ui/appFavorites.js:149
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been added to your favorites."
|
msgid "%s has been added to your favorites."
|
||||||
msgstr "%s felvéve a Kedvencek közé."
|
msgstr "%s felvéve a Kedvencek közé."
|
||||||
|
|
||||||
#: js/ui/appFavorites.js:175
|
#: js/ui/appFavorites.js:183
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s eltávolítva a Kedvencek közül"
|
msgstr "%s eltávolítva a Kedvencek közül."
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:42
|
#: js/ui/audioDeviceSelection.js:39
|
||||||
msgid "Select Audio Device"
|
msgid "Select Audio Device"
|
||||||
msgstr "Válasszon hangeszközt"
|
msgstr "Válasszon hangeszközt"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:53
|
#: js/ui/audioDeviceSelection.js:50
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Hangbeállítások"
|
msgstr "Hangbeállítások"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:62
|
#: js/ui/audioDeviceSelection.js:59
|
||||||
msgid "Headphones"
|
msgid "Headphones"
|
||||||
msgstr "Fülhallgatók"
|
msgstr "Fülhallgatók"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:64
|
#: js/ui/audioDeviceSelection.js:61
|
||||||
msgid "Headset"
|
msgid "Headset"
|
||||||
msgstr "Fejhallgató"
|
msgstr "Fejhallgató"
|
||||||
|
|
||||||
#: js/ui/audioDeviceSelection.js:66 js/ui/status/volume.js:247
|
#: js/ui/audioDeviceSelection.js:63 js/ui/status/volume.js:247
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
@@ -931,66 +932,74 @@ msgstr "Erőltetett kilépés"
|
|||||||
msgid "Wait"
|
msgid "Wait"
|
||||||
msgstr "Várakozás"
|
msgstr "Várakozás"
|
||||||
|
|
||||||
#: js/ui/components/automountManager.js:86
|
#: js/ui/components/automountManager.js:87
|
||||||
msgid "External drive connected"
|
msgid "External drive connected"
|
||||||
msgstr "Külső meghajtó csatlakoztatva"
|
msgstr "Külső meghajtó csatlakoztatva"
|
||||||
|
|
||||||
#: js/ui/components/automountManager.js:98
|
#: js/ui/components/automountManager.js:99
|
||||||
msgid "External drive disconnected"
|
msgid "External drive disconnected"
|
||||||
msgstr "Külső meghajtó leválasztva"
|
msgstr "Külső meghajtó leválasztva"
|
||||||
|
|
||||||
|
#: js/ui/components/automountManager.js:211
|
||||||
|
msgid "Unable to unlock volume"
|
||||||
|
msgstr "Nem lehet feloldani a kötetet"
|
||||||
|
|
||||||
|
#: js/ui/components/automountManager.js:212
|
||||||
|
msgid "The installed udisks version does not support the PIM setting"
|
||||||
|
msgstr "A telepített udisks verzió nem támogatja a PIM beállítást"
|
||||||
|
|
||||||
#: js/ui/components/autorunManager.js:334
|
#: js/ui/components/autorunManager.js:334
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Open with %s"
|
msgid "Open with %s"
|
||||||
msgstr "Megnyitás ezzel: %s"
|
msgstr "Megnyitás ezzel: %s"
|
||||||
|
|
||||||
#: js/ui/components/keyring.js:77 js/ui/components/polkitAgent.js:255
|
#: js/ui/components/keyring.js:66 js/ui/components/polkitAgent.js:257
|
||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr "Jelszó:"
|
msgstr "Jelszó:"
|
||||||
|
|
||||||
#: js/ui/components/keyring.js:108
|
#: js/ui/components/keyring.js:97
|
||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Írja be újra:"
|
msgstr "Írja be újra:"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:102
|
#: js/ui/components/networkAgent.js:103
|
||||||
msgid ""
|
msgid ""
|
||||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||||
msgstr "Alternatívaként kapcsolódhat a „WPS” gomb megnyomásával az eszközön."
|
msgstr "Alternatívaként kapcsolódhat a „WPS” gomb megnyomásával az eszközön."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:219
|
#: js/ui/components/networkAgent.js:113 js/ui/status/network.js:219
|
||||||
#: js/ui/status/network.js:309 js/ui/status/network.js:891
|
#: js/ui/status/network.js:310 js/ui/status/network.js:897
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "Kapcsolódás"
|
msgstr "Kapcsolódás"
|
||||||
|
|
||||||
#. Cisco LEAP
|
#. Cisco LEAP
|
||||||
#: js/ui/components/networkAgent.js:211 js/ui/components/networkAgent.js:223
|
#: js/ui/components/networkAgent.js:212 js/ui/components/networkAgent.js:224
|
||||||
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:265
|
#: js/ui/components/networkAgent.js:247 js/ui/components/networkAgent.js:266
|
||||||
#: js/ui/components/networkAgent.js:285 js/ui/components/networkAgent.js:295
|
#: js/ui/components/networkAgent.js:286 js/ui/components/networkAgent.js:296
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Jelszó: "
|
msgstr "Jelszó: "
|
||||||
|
|
||||||
#. static WEP
|
#. static WEP
|
||||||
#: js/ui/components/networkAgent.js:216
|
#: js/ui/components/networkAgent.js:217
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Kulcs: "
|
msgstr "Kulcs: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:271
|
#: js/ui/components/networkAgent.js:250 js/ui/components/networkAgent.js:272
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Személyes kulcs jelszava: "
|
msgstr "Személyes kulcs jelszava: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:269
|
#: js/ui/components/networkAgent.js:270
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Személyazonosság: "
|
msgstr "Személyazonosság: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:283
|
#: js/ui/components/networkAgent.js:284
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Szolgáltatás: "
|
msgstr "Szolgáltatás: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:685
|
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "A vezeték nélküli hálózat hitelesítést igényel"
|
msgstr "A vezeték nélküli hálózat hitelesítést igényel"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:686
|
#: js/ui/components/networkAgent.js:314 js/ui/components/networkAgent.js:687
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network "
|
||||||
@@ -999,53 +1008,53 @@ msgstr ""
|
|||||||
"Jelszavak vagy titkosítási kulcsok szükségesek a(z) „%s” vezeték nélküli "
|
"Jelszavak vagy titkosítási kulcsok szükségesek a(z) „%s” vezeték nélküli "
|
||||||
"hálózat eléréséhez."
|
"hálózat eléréséhez."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:689
|
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
|
||||||
msgid "Wired 802.1X authentication"
|
msgid "Wired 802.1X authentication"
|
||||||
msgstr "Vezetékes 802.1X hitelesítés"
|
msgstr "Vezetékes 802.1X hitelesítés"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:319
|
#: js/ui/components/networkAgent.js:320
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Hálózat neve: "
|
msgstr "Hálózat neve: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:693
|
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:694
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL hitelesítés"
|
msgstr "DSL hitelesítés"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:699
|
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
||||||
msgid "PIN code required"
|
msgid "PIN code required"
|
||||||
msgstr "PIN kód szükséges"
|
msgstr "PIN kód szükséges"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:700
|
#: js/ui/components/networkAgent.js:333 js/ui/components/networkAgent.js:701
|
||||||
msgid "PIN code is needed for the mobile broadband device"
|
msgid "PIN code is needed for the mobile broadband device"
|
||||||
msgstr "PIN kód szükséges a mobil széles sávú eszközhöz"
|
msgstr "PIN kód szükséges a mobil széles sávú eszközhöz"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:333
|
#: js/ui/components/networkAgent.js:334
|
||||||
msgid "PIN: "
|
msgid "PIN: "
|
||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:706
|
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:707
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "Mobil széles sávú hálózat jelszava"
|
msgstr "Mobil széles sávú hálózat jelszava"
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:690
|
#: js/ui/components/networkAgent.js:342 js/ui/components/networkAgent.js:691
|
||||||
#: js/ui/components/networkAgent.js:694 js/ui/components/networkAgent.js:707
|
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:708
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "A password is required to connect to “%s”."
|
msgid "A password is required to connect to “%s”."
|
||||||
msgstr "Jelszó szükséges a kapcsolódáshoz a következőhöz: „%s”."
|
msgstr "Jelszó szükséges a kapcsolódáshoz a következőhöz: „%s”."
|
||||||
|
|
||||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1664
|
#: js/ui/components/networkAgent.js:675 js/ui/status/network.js:1670
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Hálózatkezelő"
|
msgstr "Hálózatkezelő"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:34
|
#: js/ui/components/polkitAgent.js:36
|
||||||
msgid "Authentication Required"
|
msgid "Authentication Required"
|
||||||
msgstr "Hitelesítés szükséges"
|
msgstr "Hitelesítés szükséges"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:62
|
#: js/ui/components/polkitAgent.js:64
|
||||||
msgid "Administrator"
|
msgid "Administrator"
|
||||||
msgstr "Rendszergazda"
|
msgstr "Rendszergazda"
|
||||||
|
|
||||||
#: js/ui/components/polkitAgent.js:139
|
#: js/ui/components/polkitAgent.js:141
|
||||||
msgid "Authenticate"
|
msgid "Authenticate"
|
||||||
msgstr "Hitelesítés"
|
msgstr "Hitelesítés"
|
||||||
|
|
||||||
@@ -1053,7 +1062,7 @@ msgstr "Hitelesítés"
|
|||||||
#. * requested authentication was not gained; this can happen
|
#. * requested authentication was not gained; this can happen
|
||||||
#. * because of an authentication error (like invalid password),
|
#. * because of an authentication error (like invalid password),
|
||||||
#. * for instance.
|
#. * for instance.
|
||||||
#: js/ui/components/polkitAgent.js:241 js/ui/shellMountOperation.js:309
|
#: js/ui/components/polkitAgent.js:243 js/ui/shellMountOperation.js:389
|
||||||
msgid "Sorry, that didn’t work. Please try again."
|
msgid "Sorry, that didn’t work. Please try again."
|
||||||
msgstr "Elnézést, ez nem sikerült. Próbálja újra."
|
msgstr "Elnézést, ez nem sikerült. Próbálja újra."
|
||||||
|
|
||||||
@@ -1104,23 +1113,23 @@ msgstr "Világórák hozzáadása…"
|
|||||||
msgid "World Clocks"
|
msgid "World Clocks"
|
||||||
msgstr "Világórák"
|
msgstr "Világórák"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:222
|
#: js/ui/dateMenu.js:228
|
||||||
msgid "Weather"
|
msgid "Weather"
|
||||||
msgstr "Időjárás"
|
msgstr "Időjárás"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:305
|
#: js/ui/dateMenu.js:311
|
||||||
msgid "Select a location…"
|
msgid "Select a location…"
|
||||||
msgstr "Válasszon egy helyet…"
|
msgstr "Válasszon egy helyet…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:313
|
#: js/ui/dateMenu.js:319
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Betöltés…"
|
msgstr "Betöltés…"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:323
|
#: js/ui/dateMenu.js:329
|
||||||
msgid "Go online for weather information"
|
msgid "Go online for weather information"
|
||||||
msgstr "Időjárás-információkért kapcsolódjon az internetre"
|
msgstr "Időjárás-információkért kapcsolódjon az internetre"
|
||||||
|
|
||||||
#: js/ui/dateMenu.js:325
|
#: js/ui/dateMenu.js:331
|
||||||
msgid "Weather information is currently unavailable"
|
msgid "Weather information is currently unavailable"
|
||||||
msgstr "Az időjárás-információk jelenleg nem érhetőek el"
|
msgstr "Az időjárás-információk jelenleg nem érhetőek el"
|
||||||
|
|
||||||
@@ -1248,28 +1257,28 @@ msgstr ""
|
|||||||
"eltarthat egy ideig: győződjön meg arról, hogy készített-e biztonsági "
|
"eltarthat egy ideig: győződjön meg arról, hogy készített-e biztonsági "
|
||||||
"mentést, valamint a számítógép be van-e dugva."
|
"mentést, valamint a számítógép be van-e dugva."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:309
|
#: js/ui/endSessionDialog.js:310
|
||||||
msgid "Running on battery power: please plug in before installing updates."
|
msgid "Running on battery power: please plug in before installing updates."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Akkumulátoros működés: a frissítések telepítése előtt dugja be eszközét a "
|
"Akkumulátoros működés: a frissítések telepítése előtt dugja be eszközét a "
|
||||||
"konnektorba."
|
"konnektorba."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:326
|
#: js/ui/endSessionDialog.js:327
|
||||||
msgid "Some applications are busy or have unsaved work."
|
msgid "Some applications are busy or have unsaved work."
|
||||||
msgstr "Egyes alkalmazások elfoglaltak, vagy mentetlen munkát tartalmaznak."
|
msgstr "Egyes alkalmazások elfoglaltak, vagy mentetlen munkát tartalmaznak."
|
||||||
|
|
||||||
#: js/ui/endSessionDialog.js:333
|
#: js/ui/endSessionDialog.js:334
|
||||||
msgid "Other users are logged in."
|
msgid "Other users are logged in."
|
||||||
msgstr "Más felhasználók vannak bejelentkezve."
|
msgstr "Más felhasználók vannak bejelentkezve."
|
||||||
|
|
||||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||||
#: js/ui/endSessionDialog.js:614
|
#: js/ui/endSessionDialog.js:615
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (remote)"
|
msgid "%s (remote)"
|
||||||
msgstr "%s (távoli)"
|
msgstr "%s (távoli)"
|
||||||
|
|
||||||
#. Translators: Console here refers to a tty like a VT console
|
#. Translators: Console here refers to a tty like a VT console
|
||||||
#: js/ui/endSessionDialog.js:617
|
#: js/ui/endSessionDialog.js:618
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s (console)"
|
msgid "%s (console)"
|
||||||
msgstr "%s (konzol)"
|
msgstr "%s (konzol)"
|
||||||
@@ -1285,26 +1294,26 @@ msgstr ""
|
|||||||
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
||||||
|
|
||||||
#. Translators: %s is an application name like "Settings"
|
#. Translators: %s is an application name like "Settings"
|
||||||
#: js/ui/inhibitShortcutsDialog.js:50
|
#: js/ui/inhibitShortcutsDialog.js:78
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s wants to inhibit shortcuts"
|
msgid "%s wants to inhibit shortcuts"
|
||||||
msgstr "A(z) %s meg akarja gátolni a gyorsbillentyűk használatát"
|
msgstr "A(z) %s meg akarja gátolni a gyorsbillentyűk használatát"
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:51
|
#: js/ui/inhibitShortcutsDialog.js:79
|
||||||
msgid "Application wants to inhibit shortcuts"
|
msgid "Application wants to inhibit shortcuts"
|
||||||
msgstr "Az alkalmazás meg akarja gátolni a gyorsbillentyűk használatát"
|
msgstr "Az alkalmazás meg akarja gátolni a gyorsbillentyűk használatát"
|
||||||
|
|
||||||
#. Translators: %s is a keyboard shortcut like "Super+x"
|
#. Translators: %s is a keyboard shortcut like "Super+x"
|
||||||
#: js/ui/inhibitShortcutsDialog.js:60
|
#: js/ui/inhibitShortcutsDialog.js:88
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "You can restore shortcuts by pressing %s."
|
msgid "You can restore shortcuts by pressing %s."
|
||||||
msgstr "A(z) %s megnyomásával visszaállíthatja a gyorsbillentyűket."
|
msgstr "A(z) %s megnyomásával visszaállíthatja a gyorsbillentyűket."
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:65
|
#: js/ui/inhibitShortcutsDialog.js:93
|
||||||
msgid "Deny"
|
msgid "Deny"
|
||||||
msgstr "Tiltás"
|
msgstr "Tiltás"
|
||||||
|
|
||||||
#: js/ui/inhibitShortcutsDialog.js:71
|
#: js/ui/inhibitShortcutsDialog.js:100
|
||||||
msgid "Allow"
|
msgid "Allow"
|
||||||
msgstr "Engedélyezés"
|
msgstr "Engedélyezés"
|
||||||
|
|
||||||
@@ -1355,13 +1364,13 @@ msgid "Leave On"
|
|||||||
msgstr "Bekapcsolva hagyás"
|
msgstr "Bekapcsolva hagyás"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:57 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:1263
|
#: js/ui/status/network.js:1269
|
||||||
msgid "Turn On"
|
msgid "Turn On"
|
||||||
msgstr "Bekapcsolás"
|
msgstr "Bekapcsolás"
|
||||||
|
|
||||||
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
#: js/ui/kbdA11yDialog.js:65 js/ui/status/bluetooth.js:133
|
||||||
#: js/ui/status/network.js:128 js/ui/status/network.js:310
|
#: js/ui/status/network.js:128 js/ui/status/network.js:311
|
||||||
#: js/ui/status/network.js:1263 js/ui/status/network.js:1375
|
#: js/ui/status/network.js:1269 js/ui/status/network.js:1381
|
||||||
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
#: js/ui/status/nightLight.js:39 js/ui/status/rfkill.js:79
|
||||||
#: js/ui/status/rfkill.js:106
|
#: js/ui/status/rfkill.js:106
|
||||||
msgid "Turn Off"
|
msgid "Turn Off"
|
||||||
@@ -1371,7 +1380,7 @@ msgstr "Kikapcsolás"
|
|||||||
msgid "Leave Off"
|
msgid "Leave Off"
|
||||||
msgstr "Kikapcsolva hagyás"
|
msgstr "Kikapcsolva hagyás"
|
||||||
|
|
||||||
#: js/ui/keyboard.js:203
|
#: js/ui/keyboard.js:200
|
||||||
msgid "Region & Language Settings"
|
msgid "Region & Language Settings"
|
||||||
msgstr "Területi és nyelvi beállítások"
|
msgstr "Területi és nyelvi beállítások"
|
||||||
|
|
||||||
@@ -1423,7 +1432,7 @@ msgstr "Forrás megtekintése"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Weblap"
|
msgstr "Weblap"
|
||||||
|
|
||||||
#: js/ui/messageTray.js:1480
|
#: js/ui/messageTray.js:1479
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Rendszerinformációk"
|
msgstr "Rendszerinformációk"
|
||||||
|
|
||||||
@@ -1501,47 +1510,38 @@ msgstr "Nyomja meg az Esc gombot a kilépéshez"
|
|||||||
msgid "Press any key to exit"
|
msgid "Press any key to exit"
|
||||||
msgstr "Nyomjon meg egy gombot a kilépéshez"
|
msgstr "Nyomjon meg egy gombot a kilépéshez"
|
||||||
|
|
||||||
#: js/ui/panel.js:108
|
#: js/ui/panel.js:113
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Kilépés"
|
msgstr "Kilépés"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: js/ui/panel.js:471
|
#: js/ui/panel.js:468
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Tevékenységek"
|
msgstr "Tevékenységek"
|
||||||
|
|
||||||
#: js/ui/panel.js:746
|
#: js/ui/panel.js:743
|
||||||
msgctxt "System menu in the top bar"
|
msgctxt "System menu in the top bar"
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Rendszer"
|
msgstr "Rendszer"
|
||||||
|
|
||||||
#: js/ui/panel.js:866
|
#: js/ui/panel.js:861
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Felső sáv"
|
msgstr "Felső sáv"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#: js/ui/runDialog.js:65
|
||||||
#. (for toggle switches containing the English words
|
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
|
||||||
#. switches containing "◯" and "|"). Other values will
|
|
||||||
#. simply result in invisible toggle switches.
|
|
||||||
#: js/ui/popupMenu.js:285
|
|
||||||
msgid "toggle-switch-us"
|
|
||||||
msgstr "toggle-switch-intl"
|
|
||||||
|
|
||||||
#: js/ui/runDialog.js:64
|
|
||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Adjon meg egy parancsot"
|
msgstr "Adjon meg egy parancsot"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:104 js/ui/windowMenu.js:166
|
#: js/ui/runDialog.js:105 js/ui/windowMenu.js:166
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Bezárás"
|
msgstr "Bezárás"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:266
|
#: js/ui/runDialog.js:267
|
||||||
msgid "Restart is not available on Wayland"
|
msgid "Restart is not available on Wayland"
|
||||||
msgstr "Az újraindítás nem érhető el Wayland alatt"
|
msgstr "Az újraindítás nem érhető el Wayland alatt"
|
||||||
|
|
||||||
#: js/ui/runDialog.js:271
|
#: js/ui/runDialog.js:272
|
||||||
msgid "Restarting…"
|
msgid "Restarting…"
|
||||||
msgstr "Újraindítás…"
|
msgstr "Újraindítás…"
|
||||||
|
|
||||||
@@ -1565,7 +1565,7 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d új értesítés"
|
msgstr[0] "%d új értesítés"
|
||||||
msgstr[1] "%d új értesítés"
|
msgstr[1] "%d új értesítés"
|
||||||
|
|
||||||
#: js/ui/screenShield.js:449 js/ui/status/system.js:270
|
#: js/ui/screenShield.js:449 js/ui/status/system.js:271
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Zárolás"
|
msgstr "Zárolás"
|
||||||
|
|
||||||
@@ -1580,11 +1580,11 @@ msgstr "A GNOME-nak zárolnia kell a képernyőt"
|
|||||||
#.
|
#.
|
||||||
#. XXX: another option is to kick the user into the gdm login
|
#. XXX: another option is to kick the user into the gdm login
|
||||||
#. screen, where we're not affected by grabs
|
#. screen, where we're not affected by grabs
|
||||||
#: js/ui/screenShield.js:834 js/ui/screenShield.js:1307
|
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1299
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "Nem lehet zárolni"
|
msgstr "Nem lehet zárolni"
|
||||||
|
|
||||||
#: js/ui/screenShield.js:835 js/ui/screenShield.js:1308
|
#: js/ui/screenShield.js:827 js/ui/screenShield.js:1300
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "A zárolást egy alkalmazás blokkolta"
|
msgstr "A zárolást egy alkalmazás blokkolta"
|
||||||
|
|
||||||
@@ -1619,14 +1619,61 @@ msgstr "Szöveg megjelenítése"
|
|||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "Szöveg elrejtése"
|
msgstr "Szöveg elrejtése"
|
||||||
|
|
||||||
#: js/ui/shellMountOperation.js:296
|
#: js/ui/shellMountOperation.js:318
|
||||||
|
msgid "Hidden Volume"
|
||||||
|
msgstr "Rejtett kötet"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:321
|
||||||
|
msgid "Windows System Volume"
|
||||||
|
msgstr "Windows rendszerkötet"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:324
|
||||||
|
msgid "Uses Keyfiles"
|
||||||
|
msgstr "Kulcsfájlokat használ"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:330
|
||||||
|
#, javascript-format
|
||||||
|
msgid ""
|
||||||
|
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
|
||||||
|
msgstr ""
|
||||||
|
"A kulcsfájlokat használó kötetek feloldásához használja inkább a(z) <i>%s</i> "
|
||||||
|
"segédprogramot."
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:337
|
||||||
|
msgid "PIM Number"
|
||||||
|
msgstr "PIM-szám"
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:355
|
||||||
|
msgid "The PIM must be a number or empty."
|
||||||
|
msgstr "A PIM-nek számnak vagy üresnek kell lennie."
|
||||||
|
|
||||||
|
#: js/ui/shellMountOperation.js:366
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Jelszó"
|
msgstr "Jelszó"
|
||||||
|
|
||||||
#: js/ui/shellMountOperation.js:317
|
#: js/ui/shellMountOperation.js:396
|
||||||
msgid "Remember Password"
|
msgid "Remember Password"
|
||||||
msgstr "Jelszó megjegyzése"
|
msgstr "Jelszó megjegyzése"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:418
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Open %s"
|
||||||
|
msgstr "%s megnyitása"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:490
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Unable to start %s"
|
||||||
|
msgstr "A(z) %s nem indítható el"
|
||||||
|
|
||||||
|
#. Translators: %s is the Disks application
|
||||||
|
#: js/ui/shellMountOperation.js:492
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Couldn’t find the %s application"
|
||||||
|
msgstr "Nem sikerült megtalálni a(z) %s alkalmazást"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:35
|
#: js/ui/status/accessibility.js:35
|
||||||
msgid "Accessibility"
|
msgid "Accessibility"
|
||||||
msgstr "Akadálymentesítés"
|
msgstr "Akadálymentesítés"
|
||||||
@@ -1663,11 +1710,11 @@ msgstr "Billentyűszűrés"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Egérbillentyűk"
|
msgstr "Egérbillentyűk"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:151
|
#: js/ui/status/accessibility.js:135
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Nagy kontraszt"
|
msgstr "Nagy kontraszt"
|
||||||
|
|
||||||
#: js/ui/status/accessibility.js:182
|
#: js/ui/status/accessibility.js:177
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Nagy szöveg"
|
msgstr "Nagy szöveg"
|
||||||
|
|
||||||
@@ -1675,7 +1722,7 @@ msgstr "Nagy szöveg"
|
|||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:585
|
#: js/ui/status/bluetooth.js:47 js/ui/status/network.js:586
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Bluetooth-beállítások"
|
msgstr "Bluetooth-beállítások"
|
||||||
|
|
||||||
@@ -1699,11 +1746,11 @@ msgstr "Be"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Fényerő"
|
msgstr "Fényerő"
|
||||||
|
|
||||||
#: js/ui/status/keyboard.js:812
|
#: js/ui/status/keyboard.js:813
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Billentyűzet"
|
msgstr "Billentyűzet"
|
||||||
|
|
||||||
#: js/ui/status/keyboard.js:834
|
#: js/ui/status/keyboard.js:835
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Billentyűzetkiosztás megjelenítése"
|
msgstr "Billentyűzetkiosztás megjelenítése"
|
||||||
|
|
||||||
@@ -1732,12 +1779,12 @@ msgid "Enable"
|
|||||||
msgstr "Engedélyezés"
|
msgstr "Engedélyezés"
|
||||||
|
|
||||||
#. Translators: %s is an application name
|
#. Translators: %s is an application name
|
||||||
#: js/ui/status/location.js:353
|
#: js/ui/status/location.js:355
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Give %s access to your location?"
|
msgid "Give %s access to your location?"
|
||||||
msgstr "Elérheti a(z) %s a földrajzi hely adatait?"
|
msgstr "Elérheti a(z) %s a földrajzi hely adatait?"
|
||||||
|
|
||||||
#: js/ui/status/location.js:354
|
#: js/ui/status/location.js:356
|
||||||
msgid "Location access can be changed at any time from the privacy settings."
|
msgid "Location access can be changed at any time from the privacy settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"A hely hozzáférése bármikor megváltoztatható az adatvédelmi beállításokban."
|
"A hely hozzáférése bármikor megváltoztatható az adatvédelmi beállításokban."
|
||||||
@@ -1747,13 +1794,13 @@ msgid "<unknown>"
|
|||||||
msgstr "<ismeretlen>"
|
msgstr "<ismeretlen>"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:416 js/ui/status/network.js:1292
|
#: js/ui/status/network.js:417 js/ui/status/network.js:1298
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Off"
|
msgid "%s Off"
|
||||||
msgstr "%s ki"
|
msgstr "%s ki"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:419
|
#: js/ui/status/network.js:420
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connected"
|
msgid "%s Connected"
|
||||||
msgstr "%s kapcsolódva"
|
msgstr "%s kapcsolódva"
|
||||||
@@ -1761,189 +1808,189 @@ msgstr "%s kapcsolódva"
|
|||||||
#. Translators: this is for network devices that are physically present but are not
|
#. Translators: this is for network devices that are physically present but are not
|
||||||
#. under NetworkManager's control (and thus cannot be used in the menu);
|
#. under NetworkManager's control (and thus cannot be used in the menu);
|
||||||
#. %s is a network identifier
|
#. %s is a network identifier
|
||||||
#: js/ui/status/network.js:424
|
#: js/ui/status/network.js:425
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unmanaged"
|
msgid "%s Unmanaged"
|
||||||
msgstr "%s felügyeletlen"
|
msgstr "%s felügyeletlen"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:427
|
#: js/ui/status/network.js:428
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disconnecting"
|
msgid "%s Disconnecting"
|
||||||
msgstr "%s leválasztása"
|
msgstr "%s leválasztása"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:434 js/ui/status/network.js:1284
|
#: js/ui/status/network.js:435 js/ui/status/network.js:1290
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connecting"
|
msgid "%s Connecting"
|
||||||
msgstr "%s kapcsolódás"
|
msgstr "%s kapcsolódás"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
|
||||||
#: js/ui/status/network.js:437
|
#: js/ui/status/network.js:438
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Requires Authentication"
|
msgid "%s Requires Authentication"
|
||||||
msgstr "%s hitelesítést igényel"
|
msgstr "%s hitelesítést igényel"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing; %s is a network identifier
|
#. module, which is missing; %s is a network identifier
|
||||||
#: js/ui/status/network.js:445
|
#: js/ui/status/network.js:446
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Firmware Missing For %s"
|
msgid "Firmware Missing For %s"
|
||||||
msgstr "Hiányzó firmware ennél: %s"
|
msgstr "Hiányzó firmware ennél: %s"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
|
||||||
#: js/ui/status/network.js:449
|
#: js/ui/status/network.js:450
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Unavailable"
|
msgid "%s Unavailable"
|
||||||
msgstr "%s nem érhető el"
|
msgstr "%s nem érhető el"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:452
|
#: js/ui/status/network.js:453
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Connection Failed"
|
msgid "%s Connection Failed"
|
||||||
msgstr "%s kapcsolódás meghiúsult"
|
msgstr "%s kapcsolódás meghiúsult"
|
||||||
|
|
||||||
#: js/ui/status/network.js:464
|
#: js/ui/status/network.js:465
|
||||||
msgid "Wired Settings"
|
msgid "Wired Settings"
|
||||||
msgstr "Vezetékes beállítások"
|
msgstr "Vezetékes beállítások"
|
||||||
|
|
||||||
#: js/ui/status/network.js:506
|
#: js/ui/status/network.js:507
|
||||||
msgid "Mobile Broadband Settings"
|
msgid "Mobile Broadband Settings"
|
||||||
msgstr "Mobil széles sáv beállításai"
|
msgstr "Mobil széles sáv beállításai"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:553 js/ui/status/network.js:1289
|
#: js/ui/status/network.js:554 js/ui/status/network.js:1295
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hardware Disabled"
|
msgid "%s Hardware Disabled"
|
||||||
msgstr "%s hardver letiltva"
|
msgstr "%s hardver letiltva"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated
|
#. Translators: this is for a network device that cannot be activated
|
||||||
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
|
||||||
#: js/ui/status/network.js:557
|
#: js/ui/status/network.js:558
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Disabled"
|
msgid "%s Disabled"
|
||||||
msgstr "%s letiltva"
|
msgstr "%s letiltva"
|
||||||
|
|
||||||
#: js/ui/status/network.js:597
|
#: js/ui/status/network.js:598
|
||||||
msgid "Connect to Internet"
|
msgid "Connect to Internet"
|
||||||
msgstr "Kapcsolódás az internetre"
|
msgstr "Kapcsolódás az internetre"
|
||||||
|
|
||||||
#: js/ui/status/network.js:786
|
#: js/ui/status/network.js:792
|
||||||
msgid "Airplane Mode is On"
|
msgid "Airplane Mode is On"
|
||||||
msgstr "Repülőgép mód be"
|
msgstr "Repülőgép mód be"
|
||||||
|
|
||||||
#: js/ui/status/network.js:787
|
#: js/ui/status/network.js:793
|
||||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||||
msgstr "A Wi-Fi ki van kapcsolva repülőgép üzemmódban."
|
msgstr "A Wi-Fi ki van kapcsolva repülőgép üzemmódban."
|
||||||
|
|
||||||
#: js/ui/status/network.js:788
|
#: js/ui/status/network.js:794
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
msgstr "Repülőgép mód ki"
|
msgstr "Repülőgép mód ki"
|
||||||
|
|
||||||
#: js/ui/status/network.js:797
|
#: js/ui/status/network.js:803
|
||||||
msgid "Wi-Fi is Off"
|
msgid "Wi-Fi is Off"
|
||||||
msgstr "Wi-Fi ki"
|
msgstr "Wi-Fi ki"
|
||||||
|
|
||||||
#: js/ui/status/network.js:798
|
#: js/ui/status/network.js:804
|
||||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||||
msgstr "A Wi-Fi-t be kell kapcsolni a hálózatra kapcsolódáshoz."
|
msgstr "A Wi-Fi-t be kell kapcsolni a hálózatra kapcsolódáshoz."
|
||||||
|
|
||||||
#: js/ui/status/network.js:799
|
#: js/ui/status/network.js:805
|
||||||
msgid "Turn On Wi-Fi"
|
msgid "Turn On Wi-Fi"
|
||||||
msgstr "Wi-Fi bekapcsolása"
|
msgstr "Wi-Fi bekapcsolása"
|
||||||
|
|
||||||
#: js/ui/status/network.js:824
|
#: js/ui/status/network.js:830
|
||||||
msgid "Wi-Fi Networks"
|
msgid "Wi-Fi Networks"
|
||||||
msgstr "Wi-Fi hálózatok"
|
msgstr "Wi-Fi hálózatok"
|
||||||
|
|
||||||
#: js/ui/status/network.js:826
|
#: js/ui/status/network.js:832
|
||||||
msgid "Select a network"
|
msgid "Select a network"
|
||||||
msgstr "Válasszon egy hálózatot"
|
msgstr "Válasszon egy hálózatot"
|
||||||
|
|
||||||
#: js/ui/status/network.js:855
|
#: js/ui/status/network.js:861
|
||||||
msgid "No Networks"
|
msgid "No Networks"
|
||||||
msgstr "Nincs hálózat"
|
msgstr "Nincs hálózat"
|
||||||
|
|
||||||
#: js/ui/status/network.js:876 js/ui/status/rfkill.js:104
|
#: js/ui/status/network.js:882 js/ui/status/rfkill.js:104
|
||||||
msgid "Use hardware switch to turn off"
|
msgid "Use hardware switch to turn off"
|
||||||
msgstr "A hardveres kapcsolóval kapcsolja ki"
|
msgstr "A hardveres kapcsolóval kapcsolja ki"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1152
|
#: js/ui/status/network.js:1158
|
||||||
msgid "Select Network"
|
msgid "Select Network"
|
||||||
msgstr "Válasszon hálózatot"
|
msgstr "Válasszon hálózatot"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1158
|
#: js/ui/status/network.js:1164
|
||||||
msgid "Wi-Fi Settings"
|
msgid "Wi-Fi Settings"
|
||||||
msgstr "Wi-Fi beállítások"
|
msgstr "Wi-Fi beállítások"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1280
|
#: js/ui/status/network.js:1286
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Hotspot Active"
|
msgid "%s Hotspot Active"
|
||||||
msgstr "%s hotspot aktív"
|
msgstr "%s hotspot aktív"
|
||||||
|
|
||||||
#. Translators: %s is a network identifier
|
#. Translators: %s is a network identifier
|
||||||
#: js/ui/status/network.js:1295
|
#: js/ui/status/network.js:1301
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Not Connected"
|
msgid "%s Not Connected"
|
||||||
msgstr "%s nincs kapcsolódva"
|
msgstr "%s nincs kapcsolódva"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1392
|
#: js/ui/status/network.js:1398
|
||||||
msgid "connecting…"
|
msgid "connecting…"
|
||||||
msgstr "kapcsolódás…"
|
msgstr "kapcsolódás…"
|
||||||
|
|
||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: js/ui/status/network.js:1395
|
#: js/ui/status/network.js:1401
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "hitelesítés szükséges"
|
msgstr "hitelesítés szükséges"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1397
|
#: js/ui/status/network.js:1403
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "a kapcsolódás meghiúsult"
|
msgstr "a kapcsolódás meghiúsult"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1447
|
#: js/ui/status/network.js:1453
|
||||||
msgid "VPN Settings"
|
msgid "VPN Settings"
|
||||||
msgstr "VPN beállítások"
|
msgstr "VPN beállítások"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1464
|
#: js/ui/status/network.js:1470
|
||||||
msgid "VPN"
|
msgid "VPN"
|
||||||
msgstr "VPN"
|
msgstr "VPN"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1474
|
#: js/ui/status/network.js:1480
|
||||||
msgid "VPN Off"
|
msgid "VPN Off"
|
||||||
msgstr "VPN ki"
|
msgstr "VPN ki"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1535 js/ui/status/rfkill.js:82
|
#: js/ui/status/network.js:1541 js/ui/status/rfkill.js:82
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Hálózati beállítások"
|
msgstr "Hálózati beállítások"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1564
|
#: js/ui/status/network.js:1570
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wired Connection"
|
msgid "%s Wired Connection"
|
||||||
msgid_plural "%s Wired Connections"
|
msgid_plural "%s Wired Connections"
|
||||||
msgstr[0] "%s vezetékes kapcsolat"
|
msgstr[0] "%s vezetékes kapcsolat"
|
||||||
msgstr[1] "%s vezetékes kapcsolat"
|
msgstr[1] "%s vezetékes kapcsolat"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1568
|
#: js/ui/status/network.js:1574
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Wi-Fi Connection"
|
msgid "%s Wi-Fi Connection"
|
||||||
msgid_plural "%s Wi-Fi Connections"
|
msgid_plural "%s Wi-Fi Connections"
|
||||||
msgstr[0] "%s Wi-Fi kapcsolat"
|
msgstr[0] "%s Wi-Fi kapcsolat"
|
||||||
msgstr[1] "%s Wi-Fi kapcsolat"
|
msgstr[1] "%s Wi-Fi kapcsolat"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1572
|
#: js/ui/status/network.js:1578
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s Modem Connection"
|
msgid "%s Modem Connection"
|
||||||
msgid_plural "%s Modem Connections"
|
msgid_plural "%s Modem Connections"
|
||||||
msgstr[0] "%s modemes kapcsolat"
|
msgstr[0] "%s modemes kapcsolat"
|
||||||
msgstr[1] "%s modemes kapcsolat"
|
msgstr[1] "%s modemes kapcsolat"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1701
|
#: js/ui/status/network.js:1711
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Kapcsolódás meghiúsult"
|
msgstr "Kapcsolódás meghiúsult"
|
||||||
|
|
||||||
#: js/ui/status/network.js:1702
|
#: js/ui/status/network.js:1712
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "A hálózati kapcsolat aktiválása meghiúsult"
|
msgstr "A hálózati kapcsolat aktiválása meghiúsult"
|
||||||
|
|
||||||
@@ -1990,7 +2037,7 @@ msgstr "%d∶%02d van hátra (%d%%)"
|
|||||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||||
#: js/ui/status/power.js:89
|
#: js/ui/status/power.js:89
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d∶%02d Until Full (%d %%)"
|
msgid "%d∶%02d Until Full (%d %%)"
|
||||||
msgstr "Töltésidő: %d∶%02d (%d%%)"
|
msgstr "Töltésidő: %d∶%02d (%d%%)"
|
||||||
|
|
||||||
#: js/ui/status/power.js:117 js/ui/status/power.js:119
|
#: js/ui/status/power.js:117 js/ui/status/power.js:119
|
||||||
@@ -2025,15 +2072,15 @@ msgstr "Kijelentkezés"
|
|||||||
msgid "Account Settings"
|
msgid "Account Settings"
|
||||||
msgstr "Fiókbeállítások"
|
msgstr "Fiókbeállítások"
|
||||||
|
|
||||||
#: js/ui/status/system.js:255
|
#: js/ui/status/system.js:256
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Tájolás zárolása"
|
msgstr "Tájolás zárolása"
|
||||||
|
|
||||||
#: js/ui/status/system.js:281
|
#: js/ui/status/system.js:282
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Felfüggesztés"
|
msgstr "Felfüggesztés"
|
||||||
|
|
||||||
#: js/ui/status/system.js:291
|
#: js/ui/status/system.js:292
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Kikapcsolás"
|
msgstr "Kikapcsolás"
|
||||||
|
|
||||||
@@ -2125,22 +2172,22 @@ msgstr "Oldalsáv"
|
|||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "„%s” kész"
|
msgstr "„%s” kész"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:53
|
#: js/ui/windowManager.js:54
|
||||||
msgid "Do you want to keep these display settings?"
|
msgid "Do you want to keep these display settings?"
|
||||||
msgstr "Meg szeretné tartani ezeket a kijelzőbeállításokat?"
|
msgstr "Meg szeretné tartani ezeket a kijelzőbeállításokat?"
|
||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in length,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#.
|
#.
|
||||||
#: js/ui/windowManager.js:65
|
#: js/ui/windowManager.js:66
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "Beállítások visszavonása"
|
msgstr "Beállítások visszavonása"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:68
|
#: js/ui/windowManager.js:69
|
||||||
msgid "Keep Changes"
|
msgid "Keep Changes"
|
||||||
msgstr "Módosítások megtartása"
|
msgstr "Módosítások megtartása"
|
||||||
|
|
||||||
#: js/ui/windowManager.js:86
|
#: js/ui/windowManager.js:87
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Settings changes will revert in %d second"
|
msgid "Settings changes will revert in %d second"
|
||||||
msgid_plural "Settings changes will revert in %d seconds"
|
msgid_plural "Settings changes will revert in %d seconds"
|
||||||
@@ -2149,7 +2196,7 @@ msgstr[1] "A beállítások módosításai %d másodperc múlva visszavonásra k
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#: js/ui/windowManager.js:662
|
#: js/ui/windowManager.js:678
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d × %d"
|
msgid "%d × %d"
|
||||||
msgstr "%d × %d"
|
msgstr "%d × %d"
|
||||||
@@ -2222,11 +2269,6 @@ msgstr "Áthelyezés a jobb oldali kijelzőre"
|
|||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Evolution naptár"
|
msgstr "Evolution naptár"
|
||||||
|
|
||||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
#: src/calendar-server/evolution-calendar.desktop.in:6
|
|
||||||
msgid "evolution"
|
|
||||||
msgstr "evolution"
|
|
||||||
|
|
||||||
#: src/main.c:408
|
#: src/main.c:408
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Verzió kiírása"
|
msgstr "Verzió kiírása"
|
||||||
@@ -2244,21 +2286,21 @@ msgstr ""
|
|||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Lehetséges módok listázása"
|
msgstr "Lehetséges módok listázása"
|
||||||
|
|
||||||
#: src/shell-app.c:260
|
#: src/shell-app.c:264
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ismeretlen"
|
msgstr "Ismeretlen"
|
||||||
|
|
||||||
#: src/shell-app.c:511
|
#: src/shell-app.c:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "„%s” indítása meghiúsult"
|
msgstr "„%s” indítása meghiúsult"
|
||||||
|
|
||||||
#: src/shell-keyring-prompt.c:730
|
#: src/shell-keyring-prompt.c:731
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "A jelszavak nem egyeznek."
|
msgstr "A jelszavak nem egyeznek."
|
||||||
|
|
||||||
#: src/shell-keyring-prompt.c:738
|
#: src/shell-keyring-prompt.c:739
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "A jelszó nem lehet üres"
|
msgstr "A jelszó nem lehet üres"
|
||||||
|
|
||||||
|
1083
po/zh_CN.po
@@ -295,13 +295,13 @@ create_client_for_source (ESource *source,
|
|||||||
CalendarSourceData *source_data)
|
CalendarSourceData *source_data)
|
||||||
{
|
{
|
||||||
ClientData *data;
|
ClientData *data;
|
||||||
ECalClient *client;
|
EClient *client;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
client = g_hash_table_lookup (source_data->clients, source);
|
client = g_hash_table_lookup (source_data->clients, source);
|
||||||
g_return_if_fail (client == NULL);
|
g_return_if_fail (client == NULL);
|
||||||
|
|
||||||
client = e_cal_client_new (source, source_type, &error);
|
client = e_cal_client_connect_sync (source, source_type, -1, NULL, &error);
|
||||||
if (!client)
|
if (!client)
|
||||||
{
|
{
|
||||||
g_warning ("Could not load source '%s': %s",
|
g_warning ("Could not load source '%s': %s",
|
||||||
@@ -312,7 +312,7 @@ create_client_for_source (ESource *source,
|
|||||||
}
|
}
|
||||||
|
|
||||||
data = g_slice_new0 (ClientData);
|
data = g_slice_new0 (ClientData);
|
||||||
data->client = client; /* takes ownership */
|
data->client = E_CAL_CLIENT (client); /* takes ownership */
|
||||||
data->backend_died_id = g_signal_connect (client,
|
data->backend_died_id = g_signal_connect (client,
|
||||||
"backend-died",
|
"backend-died",
|
||||||
G_CALLBACK (backend_died_cb),
|
G_CALLBACK (backend_died_cb),
|
||||||
|
@@ -102,97 +102,120 @@ typedef struct
|
|||||||
} CollectAppointmentsData;
|
} CollectAppointmentsData;
|
||||||
|
|
||||||
static time_t
|
static time_t
|
||||||
get_time_from_property (icalcomponent *ical,
|
get_time_from_property (ICalComponent *icomp,
|
||||||
icalproperty_kind prop_kind,
|
ICalPropertyKind prop_kind,
|
||||||
struct icaltimetype (* get_prop_func) (const icalproperty *prop),
|
ICalTime * (* get_prop_func) (ICalProperty *prop),
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
icalproperty *prop;
|
ICalProperty *prop;
|
||||||
struct icaltimetype ical_time;
|
ICalTime *itt;
|
||||||
icalparameter *param;
|
ICalParameter *param;
|
||||||
icaltimezone *timezone = NULL;
|
ICalTimezone *timezone = NULL;
|
||||||
|
time_t retval;
|
||||||
|
|
||||||
prop = icalcomponent_get_first_property (ical, prop_kind);
|
prop = i_cal_component_get_first_property (icomp, prop_kind);
|
||||||
if (!prop)
|
if (!prop)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ical_time = get_prop_func (prop);
|
itt = get_prop_func (prop);
|
||||||
|
|
||||||
param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
|
param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER);
|
||||||
if (param)
|
if (param)
|
||||||
timezone = icaltimezone_get_builtin_timezone_from_tzid (icalparameter_get_tzid (param));
|
timezone = i_cal_timezone_get_builtin_timezone_from_tzid (i_cal_parameter_get_tzid (param));
|
||||||
else if (icaltime_is_utc (ical_time))
|
else if (i_cal_time_is_utc (itt))
|
||||||
timezone = icaltimezone_get_utc_timezone ();
|
timezone = i_cal_timezone_get_utc_timezone ();
|
||||||
else
|
else
|
||||||
timezone = default_zone;
|
timezone = default_zone;
|
||||||
|
|
||||||
return icaltime_as_timet_with_zone (ical_time, timezone);
|
retval = i_cal_time_as_timet_with_zone (itt, timezone);
|
||||||
|
|
||||||
|
g_clear_object (¶m);
|
||||||
|
g_clear_object (&prop);
|
||||||
|
g_clear_object (&itt);
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_ical_uid (icalcomponent *ical)
|
get_ical_uid (ICalComponent *icomp)
|
||||||
{
|
{
|
||||||
return g_strdup (icalcomponent_get_uid (ical));
|
return g_strdup (i_cal_component_get_uid (icomp));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_ical_summary (icalcomponent *ical)
|
get_ical_summary (ICalComponent *icomp)
|
||||||
{
|
{
|
||||||
icalproperty *prop;
|
ICalProperty *prop;
|
||||||
|
char *retval;
|
||||||
|
|
||||||
prop = icalcomponent_get_first_property (ical, ICAL_SUMMARY_PROPERTY);
|
prop = i_cal_component_get_first_property (icomp, I_CAL_SUMMARY_PROPERTY);
|
||||||
if (!prop)
|
if (!prop)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return g_strdup (icalproperty_get_summary (prop));
|
retval = g_strdup (i_cal_property_get_summary (prop));
|
||||||
|
|
||||||
|
g_object_unref (prop);
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_ical_description (icalcomponent *ical)
|
get_ical_description (ICalComponent *icomp)
|
||||||
{
|
{
|
||||||
icalproperty *prop;
|
ICalProperty *prop;
|
||||||
|
char *retval;
|
||||||
|
|
||||||
prop = icalcomponent_get_first_property (ical, ICAL_DESCRIPTION_PROPERTY);
|
prop = i_cal_component_get_first_property (icomp, I_CAL_DESCRIPTION_PROPERTY);
|
||||||
if (!prop)
|
if (!prop)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return g_strdup (icalproperty_get_description (prop));
|
retval = g_strdup (i_cal_property_get_description (prop));
|
||||||
|
|
||||||
|
g_object_unref (prop);
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline time_t
|
static inline time_t
|
||||||
get_ical_start_time (icalcomponent *ical,
|
get_ical_start_time (ICalComponent *icomp,
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
return get_time_from_property (ical,
|
return get_time_from_property (icomp,
|
||||||
ICAL_DTSTART_PROPERTY,
|
I_CAL_DTSTART_PROPERTY,
|
||||||
icalproperty_get_dtstart,
|
i_cal_property_get_dtstart,
|
||||||
default_zone);
|
default_zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline time_t
|
static inline time_t
|
||||||
get_ical_end_time (icalcomponent *ical,
|
get_ical_end_time (ICalComponent *icomp,
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
return get_time_from_property (ical,
|
return get_time_from_property (icomp,
|
||||||
ICAL_DTEND_PROPERTY,
|
I_CAL_DTEND_PROPERTY,
|
||||||
icalproperty_get_dtend,
|
i_cal_property_get_dtend,
|
||||||
default_zone);
|
default_zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
get_ical_is_all_day (icalcomponent *ical,
|
get_ical_is_all_day (ICalComponent *icomp,
|
||||||
time_t start_time,
|
time_t start_time,
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
icalproperty *prop;
|
ICalProperty *prop;
|
||||||
struct tm *start_tm;
|
ICalDuration *duration;
|
||||||
time_t end_time;
|
ICalTime *dtstart;
|
||||||
struct icaldurationtype duration;
|
struct tm *start_tm;
|
||||||
struct icaltimetype start_icaltime;
|
time_t end_time;
|
||||||
|
gboolean retval;
|
||||||
|
|
||||||
start_icaltime = icalcomponent_get_dtstart (ical);
|
dtstart = i_cal_component_get_dtstart (icomp);
|
||||||
if (start_icaltime.is_date)
|
if (dtstart && i_cal_time_is_date (dtstart))
|
||||||
return TRUE;
|
{
|
||||||
|
g_clear_object (&dtstart);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_clear_object (&dtstart);
|
||||||
|
|
||||||
start_tm = gmtime (&start_time);
|
start_tm = gmtime (&start_time);
|
||||||
if (start_tm->tm_sec != 0 ||
|
if (start_tm->tm_sec != 0 ||
|
||||||
@@ -200,35 +223,40 @@ get_ical_is_all_day (icalcomponent *ical,
|
|||||||
start_tm->tm_hour != 0)
|
start_tm->tm_hour != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if ((end_time = get_ical_end_time (ical, default_zone)))
|
if ((end_time = get_ical_end_time (icomp, default_zone)))
|
||||||
return (end_time - start_time) % 86400 == 0;
|
return (end_time - start_time) % 86400 == 0;
|
||||||
|
|
||||||
prop = icalcomponent_get_first_property (ical, ICAL_DURATION_PROPERTY);
|
prop = i_cal_component_get_first_property (icomp, I_CAL_DURATION_PROPERTY);
|
||||||
if (!prop)
|
if (!prop)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
duration = icalproperty_get_duration (prop);
|
duration = i_cal_property_get_duration (prop);
|
||||||
|
|
||||||
return icaldurationtype_as_int (duration) % 86400 == 0;
|
retval = duration && (i_cal_duration_as_int (duration) % 86400) == 0;
|
||||||
|
|
||||||
|
g_clear_object (&duration);
|
||||||
|
g_clear_object (&prop);
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline time_t
|
static inline time_t
|
||||||
get_ical_due_time (icalcomponent *ical,
|
get_ical_due_time (ICalComponent *icomp,
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
return get_time_from_property (ical,
|
return get_time_from_property (icomp,
|
||||||
ICAL_DUE_PROPERTY,
|
I_CAL_DUE_PROPERTY,
|
||||||
icalproperty_get_due,
|
i_cal_property_get_due,
|
||||||
default_zone);
|
default_zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline time_t
|
static inline time_t
|
||||||
get_ical_completed_time (icalcomponent *ical,
|
get_ical_completed_time (ICalComponent *icomp,
|
||||||
icaltimezone *default_zone)
|
ICalTimezone *default_zone)
|
||||||
{
|
{
|
||||||
return get_time_from_property (ical,
|
return get_time_from_property (icomp,
|
||||||
ICAL_COMPLETED_PROPERTY,
|
I_CAL_COMPLETED_PROPERTY,
|
||||||
icalproperty_get_completed,
|
i_cal_property_get_completed,
|
||||||
default_zone);
|
default_zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,67 +393,69 @@ calendar_appointment_free (CalendarAppointment *appointment)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
calendar_appointment_init (CalendarAppointment *appointment,
|
calendar_appointment_init (CalendarAppointment *appointment,
|
||||||
icalcomponent *ical,
|
ICalComponent *icomp,
|
||||||
ECalClient *cal)
|
ECalClient *cal)
|
||||||
{
|
{
|
||||||
icaltimezone *default_zone;
|
ICalTimezone *default_zone;
|
||||||
const char *source_id;
|
const char *source_id;
|
||||||
|
|
||||||
source_id = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
|
source_id = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
|
||||||
default_zone = e_cal_client_get_default_timezone (cal);
|
default_zone = e_cal_client_get_default_timezone (cal);
|
||||||
|
|
||||||
appointment->uid = get_ical_uid (ical);
|
appointment->uid = get_ical_uid (icomp);
|
||||||
appointment->source_id = g_strdup (source_id);
|
appointment->source_id = g_strdup (source_id);
|
||||||
appointment->backend_name = get_source_backend_name (cal);
|
appointment->backend_name = get_source_backend_name (cal);
|
||||||
appointment->summary = get_ical_summary (ical);
|
appointment->summary = get_ical_summary (icomp);
|
||||||
appointment->description = get_ical_description (ical);
|
appointment->description = get_ical_description (icomp);
|
||||||
appointment->color_string = get_source_color (cal);
|
appointment->color_string = get_source_color (cal);
|
||||||
appointment->start_time = get_ical_start_time (ical, default_zone);
|
appointment->start_time = get_ical_start_time (icomp, default_zone);
|
||||||
appointment->end_time = get_ical_end_time (ical, default_zone);
|
appointment->end_time = get_ical_end_time (icomp, default_zone);
|
||||||
appointment->is_all_day = get_ical_is_all_day (ical,
|
appointment->is_all_day = get_ical_is_all_day (icomp,
|
||||||
appointment->start_time,
|
appointment->start_time,
|
||||||
default_zone);
|
default_zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CalendarAppointment *
|
static CalendarAppointment *
|
||||||
calendar_appointment_new (icalcomponent *ical,
|
calendar_appointment_new (ICalComponent *icomp,
|
||||||
ECalClient *cal)
|
ECalClient *cal)
|
||||||
{
|
{
|
||||||
CalendarAppointment *appointment;
|
CalendarAppointment *appointment;
|
||||||
|
|
||||||
appointment = g_new0 (CalendarAppointment, 1);
|
appointment = g_new0 (CalendarAppointment, 1);
|
||||||
|
|
||||||
calendar_appointment_init (appointment, ical, cal);
|
calendar_appointment_init (appointment, icomp, cal);
|
||||||
return appointment;
|
return appointment;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
generate_instances_cb (ECalComponent *comp,
|
generate_instances_cb (ICalComponent *icomp,
|
||||||
time_t start,
|
ICalTime *instance_start,
|
||||||
time_t end,
|
ICalTime *instance_end,
|
||||||
gpointer data)
|
gpointer user_data,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
{
|
{
|
||||||
ECalClient *cal = ((CollectAppointmentsData *)data)->client;
|
ECalClient *cal = ((CollectAppointmentsData *)user_data)->client;
|
||||||
GHashTable *appointments = ((CollectAppointmentsData *)data)->appointments;
|
GHashTable *appointments = ((CollectAppointmentsData *)user_data)->appointments;
|
||||||
CalendarAppointment *appointment;
|
CalendarAppointment *appointment;
|
||||||
CalendarOccurrence *occurrence;
|
CalendarOccurrence *occurrence;
|
||||||
const char *uid;
|
ICalTimezone *default_zone;
|
||||||
|
const gchar *uid;
|
||||||
|
|
||||||
e_cal_component_get_uid (comp, &uid);
|
default_zone = e_cal_client_get_default_timezone (cal);
|
||||||
|
uid = i_cal_component_get_uid (icomp);
|
||||||
appointment = g_hash_table_lookup (appointments, uid);
|
appointment = g_hash_table_lookup (appointments, uid);
|
||||||
|
|
||||||
if (appointment == NULL)
|
if (appointment == NULL)
|
||||||
{
|
{
|
||||||
icalcomponent *ical = e_cal_component_get_icalcomponent (comp);
|
appointment = calendar_appointment_new (icomp, cal);
|
||||||
|
|
||||||
appointment = calendar_appointment_new (ical, cal);
|
|
||||||
g_hash_table_insert (appointments, g_strdup (uid), appointment);
|
g_hash_table_insert (appointments, g_strdup (uid), appointment);
|
||||||
}
|
}
|
||||||
|
|
||||||
occurrence = g_new0 (CalendarOccurrence, 1);
|
occurrence = g_new0 (CalendarOccurrence, 1);
|
||||||
occurrence->start_time = start;
|
occurrence->start_time = i_cal_time_as_timet_with_zone (instance_start, default_zone);
|
||||||
occurrence->end_time = end;
|
occurrence->end_time = i_cal_time_as_timet_with_zone (instance_end, default_zone);
|
||||||
occurrence->rid = e_cal_component_get_recurid_as_string (comp);
|
occurrence->rid = e_cal_util_component_get_recurid_as_string (icomp);
|
||||||
|
|
||||||
appointment->occurrences = g_slist_append (appointment->occurrences, occurrence);
|
appointment->occurrences = g_slist_append (appointment->occurrences, occurrence);
|
||||||
|
|
||||||
@@ -442,7 +472,7 @@ struct _App
|
|||||||
time_t since;
|
time_t since;
|
||||||
time_t until;
|
time_t until;
|
||||||
|
|
||||||
icaltimezone *zone;
|
ICalTimezone *zone;
|
||||||
|
|
||||||
CalendarSources *sources;
|
CalendarSources *sources;
|
||||||
gulong sources_signal_id;
|
gulong sources_signal_id;
|
||||||
@@ -468,9 +498,9 @@ app_update_timezone (App *app)
|
|||||||
if (g_strcmp0 (location, app->timezone_location) != 0)
|
if (g_strcmp0 (location, app->timezone_location) != 0)
|
||||||
{
|
{
|
||||||
if (location == NULL)
|
if (location == NULL)
|
||||||
app->zone = icaltimezone_get_utc_timezone ();
|
app->zone = i_cal_timezone_get_utc_timezone ();
|
||||||
else
|
else
|
||||||
app->zone = icaltimezone_get_builtin_timezone (location);
|
app->zone = i_cal_timezone_get_builtin_timezone (location);
|
||||||
g_free (app->timezone_location);
|
g_free (app->timezone_location);
|
||||||
app->timezone_location = location;
|
app->timezone_location = location;
|
||||||
print_debug ("Using timezone %s", app->timezone_location);
|
print_debug ("Using timezone %s", app->timezone_location);
|
||||||
@@ -528,10 +558,10 @@ on_objects_added (ECalClientView *view,
|
|||||||
|
|
||||||
for (l = objects; l != NULL; l = l->next)
|
for (l = objects; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
icalcomponent *ical = l->data;
|
ICalComponent *icomp = l->data;
|
||||||
const char *uid;
|
const char *uid;
|
||||||
|
|
||||||
uid = icalcomponent_get_uid (ical);
|
uid = i_cal_component_get_uid (icomp);
|
||||||
|
|
||||||
if (g_hash_table_lookup (app->appointments, uid) == NULL)
|
if (g_hash_table_lookup (app->appointments, uid) == NULL)
|
||||||
{
|
{
|
||||||
@@ -600,7 +630,7 @@ app_load_events (App *app)
|
|||||||
|
|
||||||
since_iso8601 = isodate_from_time_t (app->since);
|
since_iso8601 = isodate_from_time_t (app->since);
|
||||||
until_iso8601 = isodate_from_time_t (app->until);
|
until_iso8601 = isodate_from_time_t (app->until);
|
||||||
tz_location = icaltimezone_get_location (app->zone);
|
tz_location = i_cal_timezone_get_location (app->zone);
|
||||||
|
|
||||||
print_debug ("Loading events since %s until %s",
|
print_debug ("Loading events since %s until %s",
|
||||||
since_iso8601,
|
since_iso8601,
|
||||||
@@ -622,21 +652,12 @@ app_load_events (App *app)
|
|||||||
|
|
||||||
e_cal_client_set_default_timezone (cal, app->zone);
|
e_cal_client_set_default_timezone (cal, app->zone);
|
||||||
|
|
||||||
error = NULL;
|
|
||||||
if (!e_client_open_sync (E_CLIENT (cal), TRUE, NULL, &error))
|
|
||||||
{
|
|
||||||
ESource *source = e_client_get_source (E_CLIENT (cal));
|
|
||||||
g_warning ("Error opening calendar %s: %s\n",
|
|
||||||
e_source_get_uid (source), error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.client = cal;
|
data.client = cal;
|
||||||
data.appointments = app->appointments;
|
data.appointments = app->appointments;
|
||||||
e_cal_client_generate_instances_sync (cal,
|
e_cal_client_generate_instances_sync (cal,
|
||||||
app->since,
|
app->since,
|
||||||
app->until,
|
app->until,
|
||||||
|
NULL,
|
||||||
generate_instances_cb,
|
generate_instances_cb,
|
||||||
&data);
|
&data);
|
||||||
|
|
||||||
@@ -1078,7 +1099,7 @@ main (int argc,
|
|||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void __attribute__((format(printf, 1, 0)))
|
||||||
print_debug (const gchar *format, ...)
|
print_debug (const gchar *format, ...)
|
||||||
{
|
{
|
||||||
gchar *s;
|
gchar *s;
|
||||||
|
@@ -346,6 +346,13 @@ gnome_shell_plugin_create_inhibit_shortcuts_dialog (MetaPlugin *plugin,
|
|||||||
return _shell_wm_create_inhibit_shortcuts_dialog (get_shell_wm (), window);
|
return _shell_wm_create_inhibit_shortcuts_dialog (get_shell_wm (), window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_locate_pointer (MetaPlugin *plugin)
|
||||||
|
{
|
||||||
|
GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin);
|
||||||
|
_shell_global_locate_pointer (shell_plugin->global);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
||||||
{
|
{
|
||||||
@@ -378,6 +385,8 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
|||||||
|
|
||||||
plugin_class->create_close_dialog = gnome_shell_plugin_create_close_dialog;
|
plugin_class->create_close_dialog = gnome_shell_plugin_create_close_dialog;
|
||||||
plugin_class->create_inhibit_shortcuts_dialog = gnome_shell_plugin_create_inhibit_shortcuts_dialog;
|
plugin_class->create_inhibit_shortcuts_dialog = gnome_shell_plugin_create_inhibit_shortcuts_dialog;
|
||||||
|
|
||||||
|
plugin_class->locate_pointer = gnome_shell_plugin_locate_pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -266,7 +266,7 @@ main (int argc,
|
|||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void __attribute__((format(printf, 1, 0)))
|
||||||
print_debug (const gchar *format, ...)
|
print_debug (const gchar *format, ...)
|
||||||
{
|
{
|
||||||
gchar *s;
|
gchar *s;
|
||||||
|