Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
ximper-welcome
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
ximper-welcome
Commits
4a1a7b18
Commit
4a1a7b18
authored
Jul 12, 2020
by
Bilal Elmoussaoui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use hdy Deck/Carousel to simplify the code
parent
ce7b9a4e
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
300 additions
and
214 deletions
+300
-214
Cargo.lock
Cargo.lock
+137
-16
Cargo.toml
Cargo.toml
+4
-1
org.gnome.TourDevel.json
build-aux/org.gnome.TourDevel.json
+26
-2
application.rs
src/application.rs
+6
-2
main.rs
src/main.rs
+1
-0
meson.build
src/meson.build
+0
-1
headerbar.rs
src/widgets/headerbar.rs
+0
-78
mod.rs
src/widgets/mod.rs
+0
-1
welcome.rs
src/widgets/pages/welcome.rs
+20
-8
paginator.rs
src/widgets/paginator.rs
+76
-42
window.rs
src/widgets/window.rs
+30
-63
No files found.
Cargo.lock
View file @
4a1a7b18
...
@@ -19,7 +19,7 @@ version = "0.9.0"
...
@@ -19,7 +19,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"atk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"atk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -38,8 +38,18 @@ dependencies = [
...
@@ -38,8 +38,18 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "bitflags"
name = "bitflags"
version = "1.
1.0
"
version = "1.
2.1
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
...
@@ -47,7 +57,7 @@ name = "cairo-rs"
...
@@ -47,7 +57,7 @@ name = "cairo-rs"
version = "0.9.1"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -82,6 +92,18 @@ version = "1.5.3"
...
@@ -82,6 +92,18 @@ version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
name = "env_logger"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
"humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
"termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "futures"
name = "futures"
version = "0.3.5"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -172,7 +194,7 @@ name = "gdk"
...
@@ -172,7 +194,7 @@ name = "gdk"
version = "0.13.0"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk-pixbuf 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk-pixbuf 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -250,7 +272,7 @@ name = "gio"
...
@@ -250,7 +272,7 @@ name = "gio"
version = "0.9.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -281,7 +303,7 @@ name = "glib"
...
@@ -281,7 +303,7 @@ name = "glib"
version = "0.10.1"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -322,12 +344,15 @@ dependencies = [
...
@@ -322,12 +344,15 @@ dependencies = [
name = "gnome-tour"
name = "gnome-tour"
version = "0.0.1"
version = "0.0.1"
dependencies = [
dependencies = [
"anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gettext-rs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gettext-rs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gtk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gtk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
"libhandy 1.0.0 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pretty_env_logger 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
]
[[package]]
[[package]]
...
@@ -346,7 +371,7 @@ version = "0.9.0"
...
@@ -346,7 +371,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"atk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"atk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -393,6 +418,22 @@ dependencies = [
...
@@ -393,6 +418,22 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "hermit-abi"
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "humantime"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "itertools"
name = "itertools"
version = "0.9.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -402,7 +443,7 @@ dependencies = [
...
@@ -402,7 +443,7 @@ dependencies = [
[[package]]
[[package]]
name = "lazy_static"
name = "lazy_static"
version = "1.
3
.0"
version = "1.
4
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
...
@@ -411,18 +452,58 @@ version = "0.2.59"
...
@@ -411,18 +452,58 @@ version = "0.2.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
name = "libhandy"
version = "1.0.0"
source = "git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git#8e83a51344d981f0cdb6a643ae3b6fc63b328d96"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gio-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gtk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gtk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
"libhandy-sys 1.0.0 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git)",
"pango 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libhandy-sys"
version = "1.0.0"
source = "git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git#8e83a51344d981f0cdb6a643ae3b6fc63b328d96"
dependencies = [
"gdk 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk-pixbuf-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gdk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gio-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gtk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)",
"pango-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "locale_config"
name = "locale_config"
version = "0.2.3"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"lazy_static 1.
3
.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.
4
.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
]
[[package]]
[[package]]
name = "log"
name = "log"
version = "0.4.
7
"
version = "0.4.
8
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -443,7 +524,7 @@ name = "pango"
...
@@ -443,7 +524,7 @@ name = "pango"
version = "0.9.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"bitflags 1.
1.0
(registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.
2.1
(registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glib-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gobject-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
...
@@ -492,6 +573,15 @@ version = "0.3.14"
...
@@ -492,6 +573,15 @@ version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
name = "pretty_env_logger"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "proc-macro-crate"
name = "proc-macro-crate"
version = "0.1.5"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -547,6 +637,11 @@ dependencies = [
...
@@ -547,6 +637,11 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "quick-error"
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "quote"
name = "quote"
version = "1.0.2"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -635,6 +730,14 @@ dependencies = [
...
@@ -635,6 +730,14 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "termcolor"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "thiserror"
name = "thiserror"
version = "1.0.20"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -657,7 +760,7 @@ name = "thread_local"
...
@@ -657,7 +760,7 @@ name = "thread_local"
version = "0.3.6"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
dependencies = [
"lazy_static 1.
3
.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.
4
.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
]
[[package]]
[[package]]
...
@@ -713,6 +816,14 @@ version = "0.4.0"
...
@@ -713,6 +816,14 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -722,12 +833,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -722,12 +833,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f"
"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f"
"checksum atk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "812b4911e210bd51b24596244523c856ca749e6223c50a7fbbba3f89ee37c426"
"checksum atk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "812b4911e210bd51b24596244523c856ca749e6223c50a7fbbba3f89ee37c426"
"checksum atk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f530e4af131d94cc4fa15c5c9d0348f0ef28bac64ba660b6b2a1cf2605dedfce"
"checksum atk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f530e4af131d94cc4fa15c5c9d0348f0ef28bac64ba660b6b2a1cf2605dedfce"
"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd"
"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
"checksum cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c5c0f2e047e8ca53d0ff249c54ae047931d7a6ebe05d00af73e0ffeb6e34bdb8"
"checksum cairo-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c5c0f2e047e8ca53d0ff249c54ae047931d7a6ebe05d00af73e0ffeb6e34bdb8"
"checksum cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ed2639b9ad5f1d6efa76de95558e11339e7318426d84ac4890b86c03e828ca7"
"checksum cairo-sys-rs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ed2639b9ad5f1d6efa76de95558e11339e7318426d84ac4890b86c03e828ca7"
"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d"
"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d"
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
"checksum futures 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613"
"checksum futures 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613"
"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
...
@@ -752,11 +865,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -752,11 +865,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum gtk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3adf6adf7ba686d5e4f4dae32edfa12118af9469f67425f0afd075bf4a58ea9d"
"checksum gtk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3adf6adf7ba686d5e4f4dae32edfa12118af9469f67425f0afd075bf4a58ea9d"
"checksum gtk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "89acda6f084863307d948ba64a4b1ef674e8527dddab147ee4cdcc194c880457"
"checksum gtk-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "89acda6f084863307d948ba64a4b1ef674e8527dddab147ee4cdcc194c880457"
"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
"checksum hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
"checksum lazy_static 1.
3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14
"
"checksum lazy_static 1.
4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
"
"checksum libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)" = "3262021842bf00fe07dbd6cf34ff25c99d7a7ebef8deea84db72be3ea3bb0aff"
"checksum libc 0.2.59 (registry+https://github.com/rust-lang/crates.io-index)" = "3262021842bf00fe07dbd6cf34ff25c99d7a7ebef8deea84db72be3ea3bb0aff"
"checksum libhandy 1.0.0 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git)" = "<none>"
"checksum libhandy-sys 1.0.0 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs.git)" = "<none>"
"checksum locale_config 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "73ac19ebe45489e5d53b4346d8b90bb3dd03275c5fdf2ce22a982516d86b535c"
"checksum locale_config 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "73ac19ebe45489e5d53b4346d8b90bb3dd03275c5fdf2ce22a982516d86b535c"
"checksum log 0.4.
7 (registry+https://github.com/rust-lang/crates.io-index)" = "c275b6ad54070ac2d665eef9197db647b32239c9d244bfb6f041a766d00da5b3
"
"checksum log 0.4.
8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7
"
"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
"checksum pango 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "460dbe5ad850c46780ba61f142e966beacf5eebb09822830f796c91d7d4fec31"
"checksum pango 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "460dbe5ad850c46780ba61f142e966beacf5eebb09822830f796c91d7d4fec31"
...
@@ -765,12 +882,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -765,12 +882,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
"checksum pretty_env_logger 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d"
"checksum proc-macro-crate 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
"checksum proc-macro-crate 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
"checksum proc-macro-error 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fc175e9777c3116627248584e8f8b3e2987405cabe1c0adf7d1dd28f09dc7880"
"checksum proc-macro-error 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fc175e9777c3116627248584e8f8b3e2987405cabe1c0adf7d1dd28f09dc7880"
"checksum proc-macro-error-attr 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3cc9795ca17eb581285ec44936da7fc2335a3f34f2ddd13118b6f4d515435c50"
"checksum proc-macro-error-attr 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3cc9795ca17eb581285ec44936da7fc2335a3f34f2ddd13118b6f4d515435c50"
"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5"
"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5"
"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e"
"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e"
"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
"checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad"
"checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad"
"checksum regex-syntax 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9b01330cce219c1c6b2e209e5ed64ccd587ae5c67bed91c0b49eecf02ae40e21"
"checksum regex-syntax 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9b01330cce219c1c6b2e209e5ed64ccd587ae5c67bed91c0b49eecf02ae40e21"
...
@@ -781,6 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -781,6 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a"
"checksum syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a"
"checksum system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
"checksum system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
"checksum thiserror 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08"
"checksum thiserror 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08"
"checksum thiserror-impl 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793"
"checksum thiserror-impl 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793"
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
...
@@ -793,4 +913,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -793,4 +913,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
Cargo.toml
View file @
4a1a7b18
...
@@ -10,4 +10,7 @@ gdk = "0.13"
...
@@ -10,4 +10,7 @@ gdk = "0.13"
gtk
=
{
version
=
"0.9"
,
features=
["v3_16"]
}
gtk
=
{
version
=
"0.9"
,
features=
["v3_16"]
}
gio
=
"0.9"
gio
=
"0.9"
log
=
"0.4"
log
=
"0.4"
gettext-rs
=
{
version
=
"0.4"
,
features
=
["gettext-system"]
}
gettext-rs
=
{
version
=
"0.4"
,
features
=
["gettext-system"]
}
libhandy
=
{
git
=
"https://gitlab.gnome.org/World/Rust/libhandy-rs.git"
}
pretty_env_logger
=
"0.4"
anyhow
=
"1.0"
build-aux/org.gnome.TourDevel.json
View file @
4a1a7b18
...
@@ -14,7 +14,11 @@
...
@@ -14,7 +14,11 @@
"--share=ipc"
,
"--share=ipc"
,
"--socket=fallback-x11"
,
"--socket=fallback-x11"
,
"--socket=wayland"
,
"--socket=wayland"
,
"--device=dri"
"--device=dri"
,
"--filesystem=xdg-run/dconf"
,
"--filesystem=~/.config/dconf:ro"
,
"--talk-name=ca.desrt.dconf"
,
"--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
],
"build-options"
:
{
"build-options"
:
{
"append-path"
:
"/usr/lib/sdk/rust-stable/bin"
,
"append-path"
:
"/usr/lib/sdk/rust-stable/bin"
,
...
@@ -26,7 +30,27 @@
...
@@ -26,7 +30,27 @@
"RUST_BACKTRACE"
:
"1"
"RUST_BACKTRACE"
:
"1"
}
}
},
},
"modules"
:
[
"modules"
:
[{
"name"
:
"libhandy"
,
"buildsystem"
:
"meson"
,
"config-opts"
:
[
"-Dintrospection=disabled"
,
"-Dgtk_doc=false"
,
"-Dtests=false"
,
"-Dexamples=false"
,
"-Dvapi=false"
,
"-Dglade_catalog=disabled"
],
"cleanup"
:
[
"/include"
,
"/lib/pkgconfig"
],
"sources"
:
[{
"type"
:
"git"
,
"url"
:
"https://gitlab.gnome.org/GNOME/libhandy.git"
,
"branch"
:
"0.83.0"
}]
},
{
{
"name"
:
"gnome-tour"
,
"name"
:
"gnome-tour"
,
"buildsystem"
:
"meson"
,
"buildsystem"
:
"meson"
,
...
...
src/application.rs
View file @
4a1a7b18
...
@@ -58,7 +58,9 @@ impl Application {
...
@@ -58,7 +58,9 @@ impl Application {
"next-page"
,
"next-page"
,
clone!
(
@
strong
application
=>
move
|
_
,
_
|
{
clone!
(
@
strong
application
=>
move
|
_
,
_
|
{
if
let
Some
(
window
)
=
&*
application
.window
.borrow
()
.clone
()
{
if
let
Some
(
window
)
=
&*
application
.window
.borrow
()
.clone
()
{
window
.next_page
();
if
window
.paginator
.borrow_mut
()
.next
()
.is_err
()
{
window
.widget
.close
();
}
}
}
}),
}),
);
);
...
@@ -67,7 +69,9 @@ impl Application {
...
@@ -67,7 +69,9 @@ impl Application {
"previous-page"
,
"previous-page"
,
clone!
(
@
strong
application
=>
move
|
_
,
_
|
{
clone!
(
@
strong
application
=>
move
|
_
,
_
|
{
if
let
Some
(
window
)
=
&*
application
.window
.borrow
()
.clone
()
{
if
let
Some
(
window
)
=
&*
application
.window
.borrow
()
.clone
()
{
window
.previous_page
();
if
window
.paginator
.borrow_mut
()
.previous
()
.is_err
()
{
window
.stop_tour
();
}
}
}
}),
}),
);
);
...
...
src/main.rs
View file @
4a1a7b18
...
@@ -15,6 +15,7 @@ use application::Application;
...
@@ -15,6 +15,7 @@ use application::Application;
use
config
::{
GETTEXT_PACKAGE
,
LOCALEDIR
};
use
config
::{
GETTEXT_PACKAGE
,
LOCALEDIR
};
fn
main
()
{
fn
main
()
{
pretty_env_logger
::
init
();
// Prepare i18n
// Prepare i18n
setlocale
(
LocaleCategory
::
LcAll
,
""
);
setlocale
(
LocaleCategory
::
LcAll
,
""
);
bindtextdomain
(
GETTEXT_PACKAGE
,
LOCALEDIR
);
bindtextdomain
(
GETTEXT_PACKAGE
,
LOCALEDIR
);
...
...
src/meson.build
View file @
4a1a7b18
...
@@ -39,7 +39,6 @@ sources = files(
...
@@ -39,7 +39,6 @@ sources = files(
'widgets/pages/image.rs',
'widgets/pages/image.rs',
'widgets/pages/mod.rs',
'widgets/pages/mod.rs',
'widgets/pages/welcome.rs',
'widgets/pages/welcome.rs',
'widgets/headerbar.rs',
'widgets/mod.rs',
'widgets/mod.rs',
'widgets/paginator.rs',
'widgets/paginator.rs',
'widgets/window.rs',
'widgets/window.rs',
...
...
src/widgets/headerbar.rs
deleted
100644 → 0
View file @
ce7b9a4e
use
gettextrs
::
gettext
;
use
gtk
::
prelude
::
*
;
pub
struct
HeaderBar
{
pub
widget
:
gtk
::
Stack
,
headerbar
:
gtk
::
HeaderBar
,
title
:
gtk
::
Label
,
next_btn
:
gtk
::
Button
,
}
impl
HeaderBar
{
pub
fn
new
()
->
Self
{
let
widget
=
gtk
::
Stack
::
new
();
let
headerbar
=
gtk
::
HeaderBar
::
new
();
let
title
=
gtk
::
Label
::
new
(
None
);
let
next_btn
=
gtk
::
Button
::
new
();
let
headerbar
=
Self
{
widget
,
headerbar
,
title
,
next_btn
};
headerbar
.init
();
headerbar
}
pub
fn
start_tour
(
&
self
)
{
self
.widget
.set_visible_child_name
(
"pages"
);
self
.headerbar
.set_show_close_button
(
false
);
}
pub
fn
set_page_nr
(
&
self
,
page_nr
:
i32
,
total_pages
:
i32
)
{
if
page_nr
==
total_pages
{
self
.next_btn
.set_label
(
&
gettext
(
"Close"
));
}
else
{
self
.next_btn
.set_label
(
&
gettext
(
"Next"
));
}
}
pub
fn
set_page_title
(
&
self
,
title
:
&
str
)
{
self
.title
.set_label
(
title
);
}
pub
fn
end_tour
(
&
self
)
{
self
.widget
.set_visible_child_name
(
"welcome"
);
self
.headerbar
.set_show_close_button
(
true
);
}
fn
init
(
&
self
)
{
self
.headerbar
.set_show_close_button
(
true
);
self
.headerbar
.set_custom_title
(
Some
(
&
self
.title
));
self
.title
.get_style_context
()
.add_class
(
"title"
);
self
.widget
.set_hexpand
(
true
);
self
.widget
.set_transition_type
(
gtk
::
StackTransitionType
::
SlideLeftRight
);
self
.widget
.set_transition_duration
(
300
);
self
.widget
.get_style_context
()
.add_class
(
"titlebar"
);
let
container
=
gtk
::
HeaderBar
::
new
();
container
.set_show_close_button
(
true
);
container
.set_title
(
Some
(
&
gettext
(
"Welcome Tour"
)));
self
.widget
.add_named
(
&
container
,
"welcome"
);
let
previous_btn
=
gtk
::
Button
::
new
();
previous_btn
.add
(
&
gtk
::
Label
::
new
(
Some
(
"Previous"
)));
previous_btn
.set_halign
(
gtk
::
Align
::
Start
);
previous_btn
.set_action_name
(
Some
(
"app.previous-page"
));
previous_btn
.set_hexpand
(
true
);
previous_btn
.set_property_width_request
(
60
);
self
.next_btn
.add
(
&
gtk
::
Label
::
new
(
Some
(
&
gettext
(
"Next"
))));
self
.next_btn
.get_style_context
()
.add_class
(
"suggested-action"
);
self
.next_btn
.set_action_name
(
Some
(
"app.next-page"
));
self
.next_btn
.set_halign
(
gtk
::
Align
::
End
);
self
.next_btn
.set_hexpand
(
true
);
self
.next_btn
.set_property_width_request
(
60
);
self
.headerbar
.pack_start
(
&
previous_btn
);
self
.headerbar
.pack_end
(
&
self
.next_btn
);
self
.widget
.add_named
(
&
self
.headerbar
,
"pages"
);
}
}
src/widgets/mod.rs
View file @
4a1a7b18
mod
headerbar
;
mod
pages
;
mod
pages
;
mod
paginator
;
mod
paginator
;
mod
window
;
mod
window
;
...
...
src/widgets/pages/welcome.rs
View file @
4a1a7b18
use
gettextrs
::
gettext
;
use
gettextrs
::
gettext
;
use
gtk
::
prelude
::
*
;
use
gtk
::
prelude
::
*
;
use
libhandy
::
prelude
::
HeaderBarExt
;
pub
struct
WelcomePageWidget
{
pub
struct
WelcomePageWidget
{
pub
widget
:
gtk
::
Box
,
pub
widget
:
gtk
::
Box
,
...
@@ -16,10 +17,14 @@ impl WelcomePageWidget {
...
@@ -16,10 +17,14 @@ impl WelcomePageWidget {
}
}
fn
init
(
&
self
)
{
fn
init
(
&
self
)
{
self
.widget
.set_valign
(
gtk
::
Align
::
Center
);
self
.widget
.set_property_expand
(
true
);
self
.widget
.set_halign
(
gtk
::
Align
::
Center
);
self
.widget
.set_margin_top
(
24
);
let
container
=
gtk
::
Box
::
new
(
gtk
::
Orientation
::
Vertical
,
0
);
self
.widget
.set_margin_bottom
(
24
);
container
.set_property_expand
(
true
);
container
.set_valign
(
gtk
::
Align
::
Center
);
container
.set_halign
(
gtk
::
Align
::
Center
);
container
.set_margin_top
(
24
);
container
.set_margin_bottom
(
24
);
let
name
=
glib
::
get_os_info
(
"NAME"
)
.unwrap_or
(
"GNOME"
.into
());
let
name
=
glib
::
get_os_info
(
"NAME"
)
.unwrap_or
(
"GNOME"
.into
());
let
version
=
glib
::
get_os_info
(
"VERSION"
)
.unwrap_or
(
"3.36"
.into
());
let
version
=
glib
::
get_os_info
(
"VERSION"
)
.unwrap_or
(
"3.36"
.into
());
...
@@ -27,17 +32,17 @@ impl WelcomePageWidget {
...
@@ -27,17 +32,17 @@ impl WelcomePageWidget {
let
logo
=
gtk
::
Image
::
from_icon_name
(
Some
(
&
icon
),
gtk
::
IconSize
::
Dialog
);
let
logo
=
gtk
::
Image
::
from_icon_name
(
Some
(
&
icon
),
gtk
::
IconSize
::
Dialog
);
logo
.set_pixel_size
(
196
);
logo
.set_pixel_size
(
196
);
self
.widget
.add
(
&
logo
);
container
.add
(
&
logo
);
let
title
=
gtk
::
Label
::
new
(
Some
(
&
gettext
(
format!
(
"Welcome to {} {}"
,
name
,
version
))));
let
title
=
gtk
::
Label
::
new
(
Some
(
&
gettext
(
format!
(
"Welcome to {} {}"
,
name
,
version
))));
title
.set_margin_top
(
36
);
title
.set_margin_top
(
36
);
title
.get_style_context
()
.add_class
(
"large-title"
);
title
.get_style_context
()
.add_class
(
"large-title"
);
self
.widget
.add
(
&
title
);
container
.add
(
&
title
);
let
text
=
gtk
::
Label
::
new
(
Some
(
&
gettext
(
"Hi there! If you are new to GNOME, you can take the tour to learn some essential features."
)));
let
text
=
gtk
::
Label
::
new
(
Some
(
&
gettext
(
"Hi there! If you are new to GNOME, you can take the tour to learn some essential features."
)));
text
.get_style_context
()
.add_class
(
"body"
);
text
.get_style_context
()
.add_class
(
"body"
);
text
.set_margin_top
(
12
);
text
.set_margin_top
(
12
);
self
.widget
.add
(
&
text
);
container
.add
(
&
text
);
let
actions_container
=
gtk
::
Box
::
new
(
gtk
::
Orientation
::
Horizontal
,
12
);
let
actions_container
=
gtk
::
Box
::
new
(
gtk
::
Orientation
::
Horizontal
,
12
);
actions_container
.set_halign
(
gtk
::
Align
::
Center
);
actions_container
.set_halign
(
gtk
::
Align
::
Center
);
...
@@ -60,6 +65,13 @@ impl WelcomePageWidget {
...
@@ -60,6 +65,13 @@ impl WelcomePageWidget {
actions_container
.add
(
&
start_tour_btn
);
actions_container
.add
(
&
start_tour_btn
);
actions_container
.set_focus_child
(
Some
(
&
start_tour_btn
));
actions_container
.set_focus_child
(
Some
(
&
start_tour_btn
));
self
.widget
.add
(
&
actions_container
);
container
.add
(
&
actions_container
);
let
headerbar
=
libhandy
::
HeaderBar
::
new
();
headerbar
.set_show_close_button
(
true
);
headerbar
.set_title
(
Some
(
&
gettext
(
"Welcome Tour"
)));
self
.widget
.add
(
&
headerbar
);
self
.widget
.add
(
&
container
);
}
}
}
}
src/widgets/paginator.rs
View file @
4a1a7b18
use
anyhow
::
Result
;
use
gettextrs
::
gettext
;
use
gtk
::
prelude
::
*
;
use
gtk
::
prelude
::
*
;
use
std
::
cell
::
RefCell
;
use
std
::
cell
::
RefCell
;
use
std
::
convert
::
TryInto
;
use
std
::
rc
::
Rc
;
use
super
::
pages
::
Pageable
;
use
super
::
pages
::
Pageable
;
use
libhandy
::
prelude
::{
CarouselExt
,
HeaderBarExt
};
pub
struct
PaginatorWidget
{
pub
struct
PaginatorWidget
{
pub
widget
:
gtk
::
Stack
,
pub
widget
:
gtk
::
Box
,
pages
:
Vec
<
Box
<
dyn
Pageable
>>
,
carousel
:
libhandy
::
Carousel
,
current_page
:
RefCell
<
i32
>
,
headerbar
:
libhandy
::
HeaderBar
,
pages
:
RefCell
<
Vec
<
Box
<
dyn
Pageable
>>>
,
current_page
:
RefCell
<
u32
>
,
next_btn
:
gtk
::
Button
,
}
}
impl
PaginatorWidget
{
impl
PaginatorWidget
{
pub
fn
new
()
->
Self
{
pub
fn
new
()
->
Rc
<
Self
>
{
let
widget
=
gtk
::
Stack
::
new
(
);
let
widget
=
gtk
::
Box
::
new
(
gtk
::
Orientation
::
Vertical
,
0
);
let
paginator
=
Self
{
let
paginator
=
Rc
::
new
(
Self
{
widget
,
widget
,
pages
:
Vec
::
new
(),
carousel
:
libhandy
::
Carousel
::
new
(),
current_page
:
RefCell
::
new
(
1
),
headerbar
:
libhandy
::
HeaderBar
::
new
(),
};
next_btn
:
gtk
::
Button
::
new
(),
paginator
.init
();
pages
:
RefCell
::
new
(
Vec
::
new
()),
current_page
:
RefCell
::
new
(
0
),
});
paginator
.init
(
paginator
.clone
());
paginator
paginator
}
}
pub
fn
get_total_pages
(
&
self
)
->
i32
{
pub
fn
next
(
&
self
)
->
Result
<
()
>
{
self
.pages
.len
()
.try_into
()
.unwrap_or
(
1
)
let
p
=
*
self
.current_page
.borrow
()
+
1
;
if
p
==
self
.carousel
.get_n_pages
()
{
anyhow
::
bail!
(
"Already at the latest page"
);
}
self
.set_page
(
p
);
Ok
(())
}
}
pub
fn
get_current_page_nr
(
&
self
)
->
i32
{
pub
fn
previous
(
&
self
)
->
Result
<
()
>
{
*
self
.current_page
.borrow
()
let
p
=
*
self
.current_page
.borrow
();
if
p
==
0
{
anyhow
::
bail!
(
"Already at the first page"
);
}
self
.set_page
(
p
-
1
);
Ok
(())
}
}
pub
fn
get_current_page
(
&
self
)
->
Option
<&
Box
<
dyn
Pageable
>>
{
pub
fn
add_page
(
&
self
,
page
:
Box
<
dyn
Pageable
>
)
{
let
current_page_idx
:
usize
=
(
self
.get_current_page_nr
()
-
1
)
.try_into
()
.unwrap_or
(
0
);
let
page_nr
=
self
.pages
.borrow
()
.len
();
self
.pages
.get
(
current_page_idx
)
self
.carousel
.insert
(
&
page
.get_widget
(),
page_nr
as
i32
);
self
.pages
.borrow_mut
()
.push
(
page
);
}
}
pub
fn
next
(
&
self
)
{
fn
init
(
&
self
,
p
:
Rc
<
Self
>
)
{
let
next_page
=
*
self
.current_page
.borrow
()
+
1
;
self
.carousel
.set_property_expand
(
true
);
self
.go_to
(
next_page
);
self
.carousel
.set_animation_duration
(
300
);
}
pub
fn
previous
(
&
self
)
{
self
.carousel
.connect_page_changed
(
clone!
(
@
weak
p
=>
move
|
carousel
,
page_nr
|
{
let
previous_page
=
*
self
.current_page
.borrow
()
-
1
;
let
pages
=
&
p
.pages
.borrow
()
;
self
.go_to
(
previous_page
);
let
page
=
pages
.get
(
page_nr
as
usize
)
.unwrap
(
);
}
p
.headerbar
.set_title
(
Some
(
&
page
.get_title
()));
pub
fn
add_page
(
&
mut
self
,
page
:
Box
<
dyn
Pageable
>
)
{
if
page_nr
==
carousel
.get_n_pages
()
-
1
{
let
page_nr
=
self
.pages
.len
()
+
1
;
p
.next_btn
.set_label
(
&
gettext
(
"Close"
));
let
page_name
=
format!
(
"page-{}"
,
page_nr
);
}
else
{
p
.next_btn
.set_label
(
&
gettext
(
"Next"
));
}
p
.current_page
.replace
(
page_nr
);
}));
self
.widget
.add_named
(
&
page
.get_widget
(),
&
page_name
);
let
previous_btn
=
gtk
::
Button
::
new
();
self
.pages
.push
(
page
);
previous_btn
.add
(
&
gtk
::
Label
::
new
(
Some
(
"Previous"
)));
}
previous_btn
.set_halign
(
gtk
::
Align
::
Start
);
previous_btn
.set_action_name
(
Some
(
"app.previous-page"
));
previous_btn
.set_hexpand
(
true
);
previous_btn
.set_property_width_request
(
60
);
fn
init
(
&
self
)
{
self
.next_btn
.add
(
&
gtk
::
Label
::
new
(
Some
(
&
gettext
(
"Next"
))));
self
.widget
.set_transition_type
(
gtk
::
StackTransitionType
::
SlideLeftRight
);
self
.next_btn
.get_style_context
()
.add_class
(
"suggested-action"
);
self
.widget
.set_transition_duration
(
300
);
self
.next_btn
.set_action_name
(
Some
(
"app.next-page"
));
}
self
.next_btn
.set_halign
(
gtk
::
Align
::
End
);
self
.next_btn
.set_hexpand
(
true
);
self
.next_btn
.set_property_width_request
(
60
);
fn
go_to
(
&
self
,
page_nr
:
i32
)
{
self
.headerbar
.pack_start
(
&
previous_btn
);
let
page_name
=
format!
(
"page-{}"
,
page_nr
);
self
.headerbar
.pack_end
(
&
self
.next_btn
);
let
total_pages
:
i32
=
self
.pages
.len
()
.try_into
()
.unwrap_or
(
0
);
self
.headerbar
.set_show_close_button
(
false
);
self
.widget
.add
(
&
self
.headerbar
);
self
.widget
.add
(
&
self
.carousel
);
}
if
page_nr
<=
total_pages
&&
self
.widget
.get_child_by_name
(
&
page_name
)
.is_some
()
{
pub
fn
set_page
(
&
self
,
page_nr
:
u32
)
{
self
.current_page
.replace
(
page_nr
);
if
page_nr
<
self
.carousel
.get_n_pages
()
{
self
.widget
.set_visible_child_name
(
&
page_name
);
let
pages
=
&
self
.pages
.borrow
();
let
page
=
pages
.get
(
page_nr
as
usize
)
.unwrap
();
self
.carousel
.scroll_to
(
&
page
.get_widget
());
}
}
}
}
}
}
src/widgets/window.rs
View file @
4a1a7b18
use
gettextrs
::
gettext
;
use
gettextrs
::
gettext
;
use
gtk
::
prelude
::
*
;
use
gtk
::
prelude
::
*
;
use
std
::
cell
::
RefCell
;
use
std
::
rc
::
Rc
;
use
super
::
headerbar
::
HeaderBar
;
use
super
::
pages
::{
ImagePageWidget
,
WelcomePageWidget
};
use
super
::
pages
::{
ImagePageWidget
,
WelcomePageWidget
};
use
super
::
paginator
::
PaginatorWidget
;
use
super
::
paginator
::
PaginatorWidget
;
use
crate
::
config
::
PROFILE
;
use
crate
::
config
::
PROFILE
;
use
libhandy
::
prelude
::
DeckExt
;
pub
struct
Window
{
pub
struct
Window
{
pub
widget
:
gtk
::
ApplicationWindow
,
pub
widget
:
libhandy
::
ApplicationWindow
,
container
:
gtk
::
Sta
ck
,
deck
:
libhandy
::
De
ck
,
headerbar
:
HeaderBar
,
pub
paginator
:
RefCell
<
Rc
<
PaginatorWidget
>>
,
paginator
:
Paginator
Widget
,
welcome_page
:
WelcomePage
Widget
,
}
}
impl
Window
{
impl
Window
{
pub
fn
new
(
app
:
&
gtk
::
Application
)
->
Self
{
pub
fn
new
(
app
:
&
gtk
::
Application
)
->
Self
{
let
widget
=
gtk
::
ApplicationWindow
::
new
(
app
);
let
widget
=
libhandy
::
ApplicationWindow
::
new
();
let
container
=
gtk
::
Stack
::
new
();
widget
.set_application
(
Some
(
app
));
let
headerbar
=
HeaderBar
::
new
();
let
paginator
=
PaginatorWidget
::
new
();
let
deck
=
libhandy
::
Deck
::
new
();
let
paginator
=
RefCell
::
new
(
PaginatorWidget
::
new
());
let
mut
window_widget
=
Window
{
let
mut
window_widget
=
Window
{
widget
,
widget
,
container
,
deck
,
headerbar
,
welcome_page
:
WelcomePageWidget
::
new
()
,
paginator
,
paginator
,
};
};
...
@@ -32,91 +35,55 @@ impl Window {
...
@@ -32,91 +35,55 @@ impl Window {
}
}
pub
fn
start_tour
(
&
self
)
{
pub
fn
start_tour
(
&
self
)
{
if
let
Some
(
page
)
=
self
.paginator
.get_current_page
()
{
self
.deck
.set_visible_child
(
&
self
.paginator
.borrow
()
.widget
);
self
.headerbar
.set_page_title
(
&
page
.get_title
());
self
.paginator
.borrow_mut
()
.set_page
(
0
);
}
self
.container
.set_visible_child_name
(
"pages"
);
self
.headerbar
.start_tour
();
}
fn
end_tour
(
&
self
)
{
self
.container
.set_visible_child_name
(
"welcome"
);
self
.headerbar
.end_tour
();
}
pub
fn
next_page
(
&
self
)
{
let
total_pages
=
self
.paginator
.get_total_pages
();
let
current_page
=
self
.paginator
.get_current_page_nr
();
self
.headerbar
.set_page_nr
(
current_page
+
1
,
total_pages
);
if
current_page
==
total_pages
{
self
.widget
.close
();
}
else
{
self
.paginator
.next
();
}
if
let
Some
(
page
)
=
self
.paginator
.get_current_page
()
{
self
.headerbar
.set_page_title
(
&
page
.get_title
());
}
}
}
pub
fn
previous_page
(
&
self
)
{
pub
fn
stop_tour
(
&
self
)
{
let
total_pages
=
self
.paginator
.get_total_pages
();
self
.paginator
.borrow_mut
()
.set_page
(
0
);
let
current_page
=
self
.paginator
.get_current_page_nr
();
self
.deck
.set_visible_child
(
&
self
.welcome_page.widget
);
self
.headerbar
.set_page_nr
(
current_page
-
1
,
total_pages
);
match
current_page
{
1
=>
self
.end_tour
(),
_
=>
self
.paginator
.previous
(),
}
if
let
Some
(
page
)
=
self
.paginator
.get_current_page
()
{
self
.headerbar
.set_page_title
(
&
page
.get_title
());
}
}
}
fn
init
(
&
mut
self
)
{
fn
init
(
&
mut
self
)
{
self
.widget
.set_default_size
(
920
,
640
);
self
.widget
.set_default_size
(
920
,
640
);
self
.
container
.set_transition_type
(
gtk
::
StackTransitionType
::
SlideLeftRight
);
self
.
deck
.set_transition_type
(
libhandy
::
DeckTransitionType
::
Slide
);
self
.
container
.set_transition_duration
(
300
);
self
.
deck
.set_transition_duration
(
300
);
// Devel Profile
// Devel Profile
if
PROFILE
==
"Devel"
{
if
PROFILE
==
"Devel"
{
self
.widget
.get_style_context
()
.add_class
(
"devel"
);
self
.widget
.get_style_context
()
.add_class
(
"devel"
);
}
}
self
.widget
.set_titlebar
(
Some
(
&
self
.headerbar.widget
));
self
.deck
.add
(
&
self
.welcome_page.widget
);
let
welcome_page
=
WelcomePageWidget
::
new
();
self
.container
.add_named
(
&
welcome_page
.widget
,
"welcome"
);
self
.paginator
.add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
self
.paginator
.
borrow
()
.
add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
"/org/gnome/Tour/activities.svg"
,
"/org/gnome/Tour/activities.svg"
,
gettext
(
"Activities Overview"
),
gettext
(
"Activities Overview"
),
gettext
(
"Open Activities to start apps"
),
gettext
(
"Open Activities to start apps"
),
gettext
(
"You can also view open windows, search and use workspaces."
),
gettext
(
"You can also view open windows, search and use workspaces."
),
)));
)));
self
.paginator
.add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
self
.paginator
.
borrow_mut
()
.
add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
"/org/gnome/Tour/search.svg"
,
"/org/gnome/Tour/search.svg"
,
gettext
(
"Search"
),
gettext
(
"Search"
),
gettext
(
"In the Activities Overview, just start typing to search"
),
gettext
(
"In the Activities Overview, just start typing to search"
),
gettext
(
"Search can be used to launch apps, find settings, do calculations and much more."
),
gettext
(
"Search can be used to launch apps, find settings, do calculations and much more."
),
)));
)));
self
.paginator
.add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
self
.paginator
.
borrow_mut
()
.
add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
"/org/gnome/Tour/calendar.svg"
,
"/org/gnome/Tour/calendar.svg"
,
gettext
(
"Date & Time"
),
gettext
(
"Date & Time"
),
gettext
(
"Click the time to see your now and next"
),
gettext
(
"Click the time to see your now and next"
),
gettext
(
"This includes notifications, media controls, calendar events, the weather and world clocks."
),
gettext
(
"This includes notifications, media controls, calendar events, the weather and world clocks."
),
)));
)));
self
.paginator
.add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
self
.paginator
.
borrow_mut
()
.
add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
"/org/gnome/Tour/status-menu.svg"
,
"/org/gnome/Tour/status-menu.svg"
,
gettext
(
"System Menu"
),
gettext
(
"System Menu"
),
gettext
(
"View system information and settings"
),
gettext
(
"View system information and settings"
),
gettext
(
"Get an overview of the system status and quickly change settings."
),
gettext
(
"Get an overview of the system status and quickly change settings."
),
)));
)));
self
.paginator
.add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
self
.paginator
.
borrow_mut
()
.
add_page
(
Box
::
new
(
ImagePageWidget
::
new
(
"/org/gnome/Tour/software.svg"
,
"/org/gnome/Tour/software.svg"
,
gettext
(
"Software"
),
gettext
(
"Software"
),
gettext
(
"Find and install apps"
),
gettext
(
"Find and install apps"
),
...
@@ -130,9 +97,9 @@ impl Window {
...
@@ -130,9 +97,9 @@ impl Window {
gettext
(
"The help app contains information, tips and tricks."
),
gettext
(
"The help app contains information, tips and tricks."
),
);
);
last_page
.widget
.get_style_context
()
.add_class
(
"last-page"
);
last_page
.widget
.get_style_context
()
.add_class
(
"last-page"
);
self
.paginator
.add_page
(
Box
::
new
(
last_page
));
self
.paginator
.
borrow_mut
()
.
add_page
(
Box
::
new
(
last_page
));
self
.
container
.add_named
(
&
self
.paginator.widget
,
"pages"
);
self
.
deck
.add
(
&
self
.paginator
.borrow
()
.widget
);
self
.widget
.add
(
&
self
.
container
);
self
.widget
.add
(
&
self
.
deck
);
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment