From 338fd0fd37da4339c3c0c2fa9915ca003feb7430 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Wed, 28 Oct 2020 01:52:54 +0100 Subject: [PATCH] init a port to gtk4 --- .editorconfig | 2 +- Cargo.lock | 926 +++++++++++++----- Cargo.toml | 36 +- .../com.belmoussaoui.AuthenticatorDevel.json | 23 +- code-of-conduct.md | 77 -- ...m.belmoussaoui.Authenticator.gresource.xml | 2 +- ....belmoussaoui.Authenticator.gschema.xml.in | 10 - data/resources/style.css | 56 -- data/resources/ui/about_dialog.ui.in | 35 +- data/resources/ui/account_config.ui | 16 - data/resources/ui/account_edit.ui | 26 +- data/resources/ui/account_row.ui | 98 +- data/resources/ui/accounts_list.ui | 34 +- data/resources/ui/accounts_widget.ui | 19 - data/resources/ui/add_account.ui | 431 ++++---- data/resources/ui/login.ui | 54 + data/resources/ui/password_widget.ui | 126 +-- data/resources/ui/provider_image.ui | 48 +- data/resources/ui/providers_list.ui | 30 +- data/resources/ui/settings.ui.in | 139 ++- data/resources/ui/shortcuts.ui | 102 +- data/resources/ui/window.ui.in | 843 +++------------- meson.build | 4 +- rustfmt.toml | 3 - src/application.rs | 83 +- src/config.rs.in | 14 +- src/main.rs | 13 +- src/models/account.rs | 9 +- src/models/accounts.rs | 16 +- src/models/database.rs | 7 +- src/models/object_wrapper.rs | 26 +- src/models/provider.rs | 9 +- src/models/providers.rs | 8 +- src/static_resources.rs.in | 6 +- src/widgets/accounts/add.rs | 84 +- src/widgets/accounts/list.rs | 61 +- src/widgets/accounts/row.rs | 26 +- src/widgets/providers/list.rs | 25 +- src/widgets/window.rs | 101 +- src/window_state.rs | 16 +- 40 files changed, 1460 insertions(+), 2184 deletions(-) delete mode 100644 code-of-conduct.md delete mode 100644 data/resources/ui/account_config.ui create mode 100644 data/resources/ui/login.ui delete mode 100644 rustfmt.toml diff --git a/.editorconfig b/.editorconfig index 2d4dc9d..9d8ef49 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,7 +5,7 @@ trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 -[*.{xml,build,sql}] +[*.{xml,ui,ui.in,build,sql}] indent_size = 2 [*.{json,py,rs}] diff --git a/Cargo.lock b/Cargo.lock index 5d5875d..2555826 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,6 +13,11 @@ dependencies = [ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "anyhow" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arrayvec" version = "0.4.11" @@ -23,26 +28,26 @@ dependencies = [ [[package]] name = "atk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.9.0" +source = "git+https://github.com/gtk-rs/atk#6d4d8c970955acf75f4403ae5ca0546d671d344f" dependencies = [ - "atk-sys 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)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atk-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "atk-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -51,31 +56,27 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "authenticator" version = "0.1.0" dependencies = [ - "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gettext-rs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf 0.9.0 (git+https://github.com/gtk-rs/gdk-pixbuf)", + "gdk4 0.1.0 (git+https://github.com/gtk-rs/gdk4)", + "gettext-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio 0.9.0 (git+https://github.com/gtk-rs/gio)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "gtk-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gtk4 0.1.0 (git+https://github.com/gtk-rs/gtk4)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libhandy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libhandy4 0.1.0 (git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nanoid 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", @@ -119,7 +120,12 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.1.0" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "block" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -153,26 +159,27 @@ dependencies = [ [[package]] name = "cairo-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.9.0" +source = "git+https://github.com/gtk-rs/cairo#7455304ba4c9ae76fecf9c70c94fa44f07f35de0" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.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 (git+https://github.com/gtk-rs/cairo)", + "freetype 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cairo-sys-rs" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/cairo#7455304ba4c9ae76fecf9c70c94fa44f07f35de0" dependencies = [ - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -203,7 +210,15 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" 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)", +] + +[[package]] +name = "cmake" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -411,9 +426,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "fragile" -version = "0.3.0" +name = "freetype" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "freetype-sys 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "freetype-sys" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cmake 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "fuchsia-cprng" @@ -425,7 +454,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" 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)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -439,6 +468,34 @@ name = "futures" version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-channel" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "futures-cpupool" version = "0.1.8" @@ -449,63 +506,121 @@ dependencies = [ ] [[package]] -name = "gdk" -version = "0.11.0" +name = "futures-executor" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-macro" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-task" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-util" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gdk-pixbuf" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.9.0" +source = "git+https://github.com/gtk-rs/gdk-pixbuf#5ecc831fd5f4d28597fa060cb2f319ba4fad03e8" dependencies = [ - "gdk-pixbuf-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gio 0.9.0 (git+https://github.com/gtk-rs/gio)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (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 = "gdk-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "gdk4" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/gdk4#320982bd25a027e22c91fca59dcdb5aec4aeb9cd" dependencies = [ - "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.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.0 (git+https://github.com/gtk-rs/cairo)", + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk-pixbuf 0.9.0 (git+https://github.com/gtk-rs/gdk-pixbuf)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gio 0.9.0 (git+https://github.com/gtk-rs/gio)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pango 0.9.0 (git+https://github.com/gtk-rs/pango)", +] + +[[package]] +name = "gdk4-sys" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" +dependencies = [ + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -520,11 +635,11 @@ dependencies = [ [[package]] name = "gettext-rs" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gettext-sys 0.19.9 (registry+https://github.com/rust-lang/crates.io-index)", - "locale_config 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "locale_config 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -537,102 +652,200 @@ dependencies = [ [[package]] name = "gio" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.9.0" +source = "git+https://github.com/gtk-rs/gio#6c15125b3542c591c3c148f0a4f9daab3d50fdb5" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.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.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gio-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glib" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/glib#f53054c8d392d22dba55ac122dddfe9fc9b191ef" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.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.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-task 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-macros 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glib-macros" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/glib#f53054c8d392d22dba55ac122dddfe9fc9b191ef" +dependencies = [ + "anyhow 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glib-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (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 = "gobject-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (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 = "gtk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "graphene-rs" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/graphene#6b835b228a517c1904d537b5fafabd68df4138b3" dependencies = [ - "atk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gtk-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "graphene-sys" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/graphene#6b835b228a517c1904d537b5fafabd68df4138b3" dependencies = [ - "atk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.15 (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 = "gsk4" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/gsk4#39cc35b1b1662a89dad63eb6ce1e1dc4a88635ed" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-rs 0.9.0 (git+https://github.com/gtk-rs/cairo)", + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk4 0.1.0 (git+https://github.com/gtk-rs/gdk4)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "graphene-rs 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pango 0.9.0 (git+https://github.com/gtk-rs/pango)", +] + +[[package]] +name = "gsk4-sys" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" +dependencies = [ + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gtk-macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "gtk4" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/gtk4#e2240d0d20fef7e7a1c30012e5f77fe5d1ef4f5c" +dependencies = [ + "atk 0.9.0 (git+https://github.com/gtk-rs/atk)", + "atk-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-rs 0.9.0 (git+https://github.com/gtk-rs/cairo)", + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk-pixbuf 0.9.0 (git+https://github.com/gtk-rs/gdk-pixbuf)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gdk4 0.1.0 (git+https://github.com/gtk-rs/gdk4)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gio 0.9.0 (git+https://github.com/gtk-rs/gio)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "graphene-rs 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "gsk4 0.1.0 (git+https://github.com/gtk-rs/gsk4)", + "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pango 0.9.0 (git+https://github.com/gtk-rs/pango)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", +] + +[[package]] +name = "gtk4-sys" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" +dependencies = [ + "atk-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)", + "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -652,6 +865,14 @@ dependencies = [ "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "http" version = "0.1.18" @@ -761,6 +982,14 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "itoa" version = "0.4.4" @@ -794,41 +1023,42 @@ version = "0.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "libhandy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "libhandy4" +version = "0.1.0" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#112462f61772db7f736a3db0b5511b186e85cdc3" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf 0.9.0 (git+https://github.com/gtk-rs/gdk-pixbuf)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gdk4 0.1.0 (git+https://github.com/gtk-rs/gdk4)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gio 0.9.0 (git+https://github.com/gtk-rs/gio)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib 0.10.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gtk4 0.1.0 (git+https://github.com/gtk-rs/gtk4)", + "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libhandy-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libhandy4-sys 0.1.0 (git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs)", + "pango 0.9.0 (git+https://github.com/gtk-rs/pango)", ] [[package]] -name = "libhandy-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "libhandy4-sys" +version = "0.1.0" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#112462f61772db7f736a3db0b5511b186e85cdc3" dependencies = [ - "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", + "gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -842,12 +1072,14 @@ dependencies = [ [[package]] name = "locale_config" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -883,6 +1115,14 @@ dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "matches" version = "0.1.8" @@ -1004,7 +1244,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1037,12 +1277,43 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "once_cell" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "openssl" version = "0.10.24" source = "registry+https://github.com/rust-lang/crates.io-index" 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)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1077,27 +1348,27 @@ dependencies = [ [[package]] name = "pango" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.9.0" +source = "git+https://github.com/gtk-rs/pango#a9fdf5475104c984d9292f6c14edfbc34fc5cca8" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.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.0 (git+https://github.com/gtk-rs/glib)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", ] [[package]] name = "pango-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.10.0" +source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" dependencies = [ - "glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", + "gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1138,7 +1409,7 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1153,7 +1424,7 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1167,7 +1438,7 @@ dependencies = [ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1180,6 +1451,29 @@ name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "pin-project" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pin-project-internal 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pkg-config" version = "0.3.15" @@ -1200,6 +1494,46 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "toml 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-nested" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -1210,7 +1544,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.2" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1251,7 +1585,7 @@ name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1273,7 +1607,7 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1291,7 +1625,7 @@ dependencies = [ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1376,7 +1710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1389,7 +1723,7 @@ dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1443,7 +1777,7 @@ name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1503,7 +1837,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1569,9 +1903,9 @@ name = "serde_derive" version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1605,6 +1939,11 @@ name = "smallvec" version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "smallvec" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "stable_deref_trait" version = "1.1.1" @@ -1618,6 +1957,22 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "strum" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "strum_macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "syn" version = "0.11.11" @@ -1640,10 +1995,10 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.5" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1667,6 +2022,20 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "system-deps" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "strum 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum_macros 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tempfile" version = "3.1.0" @@ -1677,7 +2046,7 @@ dependencies = [ "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1688,6 +2057,24 @@ dependencies = [ "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "thiserror" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "thiserror-impl 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "thread_local" version = "0.3.6" @@ -1703,7 +2090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1829,6 +2216,14 @@ dependencies = [ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "toml" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "try-lock" version = "0.2.2" @@ -1866,6 +2261,11 @@ dependencies = [ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-segmentation" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.0.4" @@ -1914,11 +2314,21 @@ name = "vcpkg" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "version-compare" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "want" version = "0.2.0" @@ -1951,9 +2361,9 @@ dependencies = [ "bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1971,9 +2381,9 @@ name = "wasm-bindgen-macro-support" version = "0.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1990,7 +2400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2012,7 +2422,7 @@ name = "winapi-util" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2025,7 +2435,7 @@ name = "wincolor" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2034,7 +2444,7 @@ name = "winreg" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2049,25 +2459,28 @@ dependencies = [ [metadata] "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" +"checksum anyhow 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c" "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" -"checksum atk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "86b7499272acf036bb5820c6e346bbfb5acc5dceb104bc2c4fd7e6e33dfcde6a" -"checksum atk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067531f752c01027f004032bb676e715aba74b75e904a7340a61ce3fb0b61b0" +"checksum atk 0.9.0 (git+https://github.com/gtk-rs/atk)" = "" +"checksum atk-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" "checksum backtrace 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "1371048253fa3bac6704bfd6bbfc922ee9bdcee8881330d40f308b81cc5adc55" "checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" "checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" -"checksum cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e05db47de3b0f09a222fa4bba2eab957d920d4243962a86b2d77ab401e4a359c" -"checksum cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "90a1ec04603a78c111886a385edcec396dbfbc57ea26b9e74aeea6a1fe55dcca" +"checksum cairo-rs 0.9.0 (git+https://github.com/gtk-rs/cairo)" = "" +"checksum cairo-sys-rs 0.10.0 (git+https://github.com/gtk-rs/cairo)" = "" "checksum cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "27429a03ca54100bf6bdc726c09adc46a74187ac93f9ce96dc7aaa9594ebf707" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum cmake 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "0e56268c17a6248366d66d4a47a3381369d068cce8409bb1716ed77ea32163bb" "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" @@ -2091,27 +2504,44 @@ dependencies = [ "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -"checksum fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f8140122fa0d5dcb9fc8627cfce2b37cc1500f752636d46ea28bc26785c2f9" +"checksum freetype 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" +"checksum freetype-sys 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" +"checksum futures 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "95314d38584ffbfda215621d723e0a3906f032e03ae5551e650058dac83d4797" +"checksum futures-channel 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151" +"checksum futures-core 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6243e995f41f3a61a31847e54cc719edce93dd9140c89dca3b9919be1cfe22d5" -"checksum gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9726408ee1bbada83094326a99b9c68fea275f9dbb515de242a69e72051f4fcc" -"checksum gdk-pixbuf-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1d6778abf5764b9080a9345a16c5d16289426a3b3edd808a29a9061d431c465" -"checksum gdk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ebe06357212127f50575b535bdb04638f5d375bb41062287abc6c94e5b8067b" +"checksum futures-executor 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f5f8e0c9258abaea85e78ebdda17ef9666d390e987f006be6080dfe354b708cb" +"checksum futures-io 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b" +"checksum futures-macro 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e36fccf3fc58563b4a14d265027c627c3b665d7fed489427e88e7cc929559efe" +"checksum futures-sink 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11" +"checksum futures-task 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c" +"checksum futures-util 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34" +"checksum gdk-pixbuf 0.9.0 (git+https://github.com/gtk-rs/gdk-pixbuf)" = "" +"checksum gdk-pixbuf-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" +"checksum gdk4 0.1.0 (git+https://github.com/gtk-rs/gdk4)" = "" +"checksum gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)" = "" "checksum getrandom 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fc344b02d3868feb131e8b5fe2b9b0a1cc42942679af493061fc13b853243872" -"checksum gettext-rs 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a668364fec5934bb278781a431e1200acb8ad41a25e149f97206a4b4cc81fca5" +"checksum gettext-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b95fa19cca70adf9888150e979839ae9bd58f85a1a42e4753699112875189e1" "checksum gettext-sys 0.19.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e034c4ba5bb796730a6cc5eb0d654c16885006a7c3d6c6603581ed809434f153" -"checksum gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6261b5d34c30c2d59f879e643704cf54cb44731f3a2038000b68790c03e360e3" -"checksum gio-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "778b856a70a32e2cc5dd5cc7fa1b0c4b6df924fdf5c82984bc28f30565657cfe" -"checksum glib 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "91a70db179515473b57aaff8b879167f1f8460bc5523e97beacf6d1026a8b99d" -"checksum glib-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4b86a9169fbc9cf9a0ef315039c2304b09d5c575c5fde7defba3576a0311b863" -"checksum gobject-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "61d55bc9202447ca776f6ad0048c36e3312010f66f82ab478e97513e93f3604b" -"checksum gtk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "709f1074259d4685b96133f92b75c7f35b504715b0fcdc96ec95de2607296a60" -"checksum gtk-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bbd9395497ae1d1915d1d6e522d51ae8745bf613906c34ac191c411250fc4025" +"checksum gio 0.9.0 (git+https://github.com/gtk-rs/gio)" = "" +"checksum gio-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" +"checksum glib 0.10.0 (git+https://github.com/gtk-rs/glib)" = "" +"checksum glib-macros 0.10.0 (git+https://github.com/gtk-rs/glib)" = "" +"checksum glib-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" +"checksum gobject-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" +"checksum graphene-rs 0.1.0 (git+https://github.com/gtk-rs/graphene)" = "" +"checksum graphene-sys 0.1.0 (git+https://github.com/gtk-rs/graphene)" = "" +"checksum gsk4 0.1.0 (git+https://github.com/gtk-rs/gsk4)" = "" +"checksum gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)" = "" +"checksum gtk-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1874c48e670519ce192093ac906c08a6dde7cb2d18b28722ef237726a39c3a63" +"checksum gtk4 0.1.0 (git+https://github.com/gtk-rs/gtk4)" = "" +"checksum gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/sys)" = "" "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" @@ -2122,19 +2552,21 @@ dependencies = [ "checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" "checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "1efc4f2a556c58e79c5500912e221dd826bec64ff4aabd8ce71ccef6da02d7d4" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" -"checksum libhandy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7195919b261667e13240c14004c3fdc1a07a77ee865a9e0da5c2a4e134171c25" -"checksum libhandy-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "17019593005fd387b0d2f6e5b29533796e3206e9f433dbf74846a609ceeb5fbf" +"checksum libhandy4 0.1.0 (git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs)" = "" +"checksum libhandy4-sys 0.1.0 (git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs)" = "" "checksum libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd6457c70bbff456d9fe49deaba35ec47c3e598bf8d7950ff0575ceb7a8a6ad1" -"checksum locale_config 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "73ac19ebe45489e5d53b4346d8b90bb3dd03275c5fdf2ce22a982516d86b535c" +"checksum locale_config 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" @@ -2152,12 +2584,16 @@ dependencies = [ "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" +"checksum objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +"checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +"checksum objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +"checksum once_cell 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" "checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393fa071b144f8ffb83ede273758983cf414ca3c0b1d2a5a9ce325b3ba3dd786" -"checksum pango-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ee97abcad820f9875e032656257ad1c790e7b11a0e6ce2516a8f5b0d8f8213f" +"checksum pango 0.9.0 (git+https://github.com/gtk-rs/pango)" = "" +"checksum pango-sys 0.10.0 (git+https://github.com/gtk-rs/sys)" = "" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" @@ -2166,11 +2602,19 @@ dependencies = [ "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +"checksum pin-project 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" +"checksum pin-project-internal 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" +"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" "checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "717ee476b1690853d222af4634056d830b5197ffd747726a9a1eee6da9f49074" +"checksum proc-macro-crate 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +"checksum proc-macro-error 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +"checksum proc-macro-error-attr 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +"checksum proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)" = "0d659fe7c6d27f25e9d80a1a094c223f5246f6a6596453e09d7229bf42750b63" +"checksum proc-macro-nested 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8e946095f9d3ed29ec38de908c22f95d9ac008e424c7bcae54c75a79c527c694" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "175a40b9cf564ce9bf050654633dbf339978706b8ead1a907bb970b63185dd95" +"checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" "checksum publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9bf259a81de2b2eb9850ec990ec78e6a25319715584fd7652b9b26f96fcb1510" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" @@ -2215,15 +2659,21 @@ dependencies = [ "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum smallvec 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +"checksum strum 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" +"checksum strum_macros 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +"checksum syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" +"checksum system-deps 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"checksum thiserror 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" +"checksum thiserror-impl 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" @@ -2236,11 +2686,13 @@ dependencies = [ "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum toml 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" @@ -2248,7 +2700,9 @@ dependencies = [ "checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" +"checksum version-compare 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" "checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" "checksum wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "dcddca308b16cd93c2b67b126c688e5467e4ef2e28200dc7dfe4ae284f2faefc" @@ -2257,7 +2711,7 @@ dependencies = [ "checksum wasm-bindgen-macro-support 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "6a433d89ecdb9f77d46fcf00c8cf9f3467b7de9954d8710c175f61e2e245bb0e" "checksum wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "d41fc1bc3570cdf8d108c15e014045fd45a95bb5eb36605f96a90461fc34027d" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" diff --git a/Cargo.toml b/Cargo.toml index ad4737e..c396481 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,19 +4,8 @@ version = "0.1.0" edition = "2018" [dependencies] -gtk = { version = "0.7", features = ["v3_22"] } -libhandy = "0.4" -glib = { version = "0.8", features = ["subclassing"] } -gio = { version = "0.7", features = ["v2_46"] } -gdk = "0.11" -gdk-sys = "0.9" -gobject-sys = "0.9" -glib-sys = "0.9" -cairo-rs = "0.7" -pango = "0.7" log = "0.4" -gdk-pixbuf = {version = "0.7", features = ["v2_32"] } -gettext-rs= { version = "0.4", features = ["gettext-system"] } +gettext-rs= { version = "0.5", features = ["gettext-system"] } pretty_env_logger = "0.3" lazy_static = "1.3" failure = "0.1" @@ -28,3 +17,26 @@ serde_derive = "1.0" nanoid = "0.1" reqwest = "0.9" url = "2.1" +gtk-macros = "0.2" + +[dependencies.gtk] +git = "https://github.com/gtk-rs/gtk4" +package = "gtk4" + +[dependencies.glib] +git = "https://github.com/gtk-rs/glib" + +[dependencies.gio] +git = "https://github.com/gtk-rs/gio" + +[dependencies.gdk] +git = "https://github.com/gtk-rs/gdk4" +package = "gdk4" + +[dependencies.libhandy] +git = "https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs" +package = "libhandy4" + +[dependencies.gdk-pixbuf] +git = "https://github.com/gtk-rs/gdk-pixbuf" + diff --git a/build-aux/com.belmoussaoui.AuthenticatorDevel.json b/build-aux/com.belmoussaoui.AuthenticatorDevel.json index 08824b2..41a5887 100644 --- a/build-aux/com.belmoussaoui.AuthenticatorDevel.json +++ b/build-aux/com.belmoussaoui.AuthenticatorDevel.json @@ -6,20 +6,13 @@ "sdk-extensions" : [ "org.freedesktop.Sdk.Extension.rust-stable" ], - "tags" : [ - "nightly" - ], - "desktop-file-name-prefix" : "(Development) ", "command": "authenticator", "finish-args": [ "--share=network", "--share=ipc", + "--device=dri", "--socket=fallback-x11", - "--socket=wayland", - "--filesystem=xdg-run/dconf", - "--filesystem=~/.config/dconf:ro", - "--talk-name=ca.desrt.dconf", - "--env=DCONF_USER_CONFIG_DIR=.config/dconf" + "--socket=wayland" ], "build-options": { "append-path" : "/usr/lib/sdk/rust-stable/bin", @@ -27,7 +20,6 @@ "--share=network" ], "env" : { - "RUSTFLAGS" : "--remap-path-prefix =../ --error-format=human", "CARGO_HOME" : "/run/build/authenticator/cargo", "RUST_BACKTRACE" : "1", "RUST_LOG" : "authenticator=debug" @@ -38,7 +30,7 @@ "name": "libhandy", "buildsystem": "meson", "config-opts": [ - "-Dintrospection=disabled", + "-Dintrospection=enabled", "-Dgtk_doc=false", "-Dtests=false", "-Dexamples=false", @@ -47,9 +39,8 @@ ], "sources": [{ "type": "git", - "url": "https://source.puri.sm/Librem5/libhandy.git", - "tag": "v0.0.11", - "commit": "f5909a897f70143bdd2f89f47a63c1bf848330ce" + "url": "https://gitlab.gnome.org/exalm/libhandy.git", + "branch": "gtk4" }] }, { @@ -60,8 +51,8 @@ ], "sources": [ { - "type": "git", - "url" : "https://gitlab.gnome.org/World/authenticator.git" + "type": "dir", + "path" : "../" } ] } diff --git a/code-of-conduct.md b/code-of-conduct.md deleted file mode 100644 index 50201bd..0000000 --- a/code-of-conduct.md +++ /dev/null @@ -1,77 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies within all project spaces, and it also applies when -an individual is representing the project or its community in public spaces. -Examples of representing a project or community include using an official -project e-mail address, posting via an official social media account, or acting -as an appointed representative at an online or offline event. Representation of -a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project maintainer at bilal.elmoussaoui@gnome.org. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq - diff --git a/data/com.belmoussaoui.Authenticator.gresource.xml b/data/com.belmoussaoui.Authenticator.gresource.xml index 72a186d..7fd2369 100644 --- a/data/com.belmoussaoui.Authenticator.gresource.xml +++ b/data/com.belmoussaoui.Authenticator.gresource.xml @@ -22,7 +22,7 @@ window.ui settings.ui - + resources/icons/qrscanner-symbolic.svg diff --git a/data/com.belmoussaoui.Authenticator.gschema.xml.in b/data/com.belmoussaoui.Authenticator.gschema.xml.in index 2245d50..17926f1 100644 --- a/data/com.belmoussaoui.Authenticator.gschema.xml.in +++ b/data/com.belmoussaoui.Authenticator.gschema.xml.in @@ -11,16 +11,6 @@ Default window height Default window height - - -1 - Default window x position - Default window x position - - - -1 - Default window y position - Default window y position - false Default window maximized behaviour diff --git a/data/resources/style.css b/data/resources/style.css index 88e3d7a..e69de29 100644 --- a/data/resources/style.css +++ b/data/resources/style.css @@ -1,56 +0,0 @@ - -/* Empty View */ -.empty-logo{ - -gtk-icon-shadow:0 2px 12px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.5); -} -/* Common */ -label.head-title{ - font-size: 26px; - font-weight: bolder; - color: @theme_fg_color; -} - - - - -.insert-image-box{ - border: 1px solid mix(@theme_fg_color, @theme_bg_color, 0.7); -} -.account-name{ - font-weight: bold; -} - -/* Common */ -.progress-bar trough progress { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -.progress-bar trough { - border-radius: 0px -} - - - - -/* Accounts Widget */ -.provider-name{ - margin: 6px; - font-weight: bold; - font-size: 18px; -} -/* Accounts List */ -.accounts-list { - margin-left:6px; - margin-right:6px; -} -/* Account Row */ -.account-row{ - padding: 6px; -} -.account-name{ - font-size: 16px; -} -.account-pin { - font-size: 14px; -} diff --git a/data/resources/ui/about_dialog.ui.in b/data/resources/ui/about_dialog.ui.in index c92862a..bdb46ed 100644 --- a/data/resources/ui/about_dialog.ui.in +++ b/data/resources/ui/about_dialog.ui.in @@ -1,11 +1,8 @@ - - - False - dialog Authenticator + True @version@ A Two-Factor Authentication application https://gitlab.gnome.org/World/Authenticator @@ -15,35 +12,5 @@ Tobias Bernard @app-id@ gpl-3-0 - - - - - - False - vertical - 2 - - - False - end - - - - - - - - - False - False - 0 - - - - - - - diff --git a/data/resources/ui/account_config.ui b/data/resources/ui/account_config.ui deleted file mode 100644 index f43b08a..0000000 --- a/data/resources/ui/account_config.ui +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/data/resources/ui/account_edit.ui b/data/resources/ui/account_edit.ui index 7c57f6e..fd5d5e5 100644 --- a/data/resources/ui/account_edit.ui +++ b/data/resources/ui/account_edit.ui @@ -1,51 +1,27 @@ - - diff --git a/data/resources/ui/account_row.ui b/data/resources/ui/account_row.ui index b92e44d..01d2c48 100644 --- a/data/resources/ui/account_row.ui +++ b/data/resources/ui/account_row.ui @@ -1,55 +1,31 @@ - - - False - True - False center vertical - True - False False - 6 - 6 - 6 - 6 + 6 + 6 + 6 + 6 Edit - - - False - True - 0 - - True - False False - 6 - 6 - 6 - 6 + 6 + 6 + 6 + 6 Delete - - False - True - 1 - - - main - 1 - @@ -60,20 +36,14 @@ False - True - False - True - False False center more_actions_popover - True - False - view-more-symbolic + view-more-symbolic - - False - True - 3 - end - 0 - - True - True True Copy PIN to clipboard center none - - True - False center center - True - False - edit-copy-symbolic + edit-copy-symbolic - - copy_image - - True - False - emblem-ok-symbolic + emblem-ok-symbolic - - ok_image - 1 - @@ -131,45 +78,22 @@ - - False - True - end - 1 - - True - False start center - - False - True - 3 - end - 2 - - True - False start center end - - False - True - 3 - 3 - diff --git a/data/resources/ui/accounts_list.ui b/data/resources/ui/accounts_list.ui index 74b7d1d..0572cc8 100644 --- a/data/resources/ui/accounts_list.ui +++ b/data/resources/ui/accounts_list.ui @@ -1,64 +1,32 @@ - - - True - False vertical - True - False - True - False 96 - image-missing-symbolic + image-missing-symbolic - - False - True - 0 - - True - False Some random provider - - False - True - 1 - - - False - True - 0 - - True - False none - - True - True - 1 - diff --git a/data/resources/ui/accounts_widget.ui b/data/resources/ui/accounts_widget.ui index 7e7bdb1..87b9d91 100644 --- a/data/resources/ui/accounts_widget.ui +++ b/data/resources/ui/accounts_widget.ui @@ -1,35 +1,21 @@ - - - True - False True True vertical - - - - True True - True - False - True - False 600 600 - True - False start vertical @@ -42,11 +28,6 @@ - - True - True - 1 - + + + + + True + Scan QR Code + add.scan-qr + qrscanner-symbolic + + + + + + + center + 12 + 12 + True + 400 + 400 + + + vertical + 42 + + + none + + + provider_entry + Provider + + + end + center + True + provider_completion + True + + + + + + + username_entry + Account + + + end + center + True + True + + + + + + + token_entry + Token + + + end + center + True + False + dialog-information-symbolic + Enable 2FA for this account + Enable 2FA for this account + pin + + + + + + + + + + none + + + provider_website_entry + Website + + + end + center + True + url + True + + + + + + + period_spinbutton + Period + + + end + center + True + 0 + period_adjustment + True + + + + + + + Algorithm + + + + + + + + + + + + + + + + + 2 1 True - + 1 - - 360 - 600 - False - True - 360 - 600 - True - dialog - - - True - False - Add a new account - - - True - True - True - add.back - - - - True - False - go-previous-symbolic - - - - - - - Add - True - False - True - True - add.save - - - - - end - 1 - - - - - True - True - True - Scan QR Code - add.scan-qr - - - - True - False - qrscanner-symbolic - - - - - end - 2 - - - - - - - True - False - - - True - False - 600 - 600 - - - True - False - center - center - 42 - True - True - vertical - - - - - - True - False - center - baseline - 24 - True - 6 - 6 - True - - - True - True - True - Account Name - True - - - - 0 - 2 - - - - - True - False - True - True - 1 - 0 - - - - True - Provider - provider_completion - - - - - 0 - 0 - - - - - True - True - True - False - dialog-information-symbolic - Enable 2FA for this account - Enable 2FA for this account - 2FA Token - pin - - - - 0 - 3 - - - - - True - True - True - Provider Website - url - True - - - - 0 - 1 - - - - - False - True - end - 1 - - - - - - - True - -1 - - - - - True - False - start - - - True - False - - - True - False - - - False - True - 0 - - - - - True - True - True - end - - - True - False - window-close-symbolic - - - - - - True - True - 1 - - - - - - - - - - + + 60 + 1 + 10 + + + + + + + + + diff --git a/data/resources/ui/login.ui b/data/resources/ui/login.ui new file mode 100644 index 0000000..9313398 --- /dev/null +++ b/data/resources/ui/login.ui @@ -0,0 +1,54 @@ + + + + center + center + True + True + vertical + + + center + True + /com/github/bilelmoussaoui/Authenticator/authenticator.svg + + + + + center + 12 + Authenticator is locked + + + + + + center + start + 24 + True + True + vertical + + + center + False + password + + + + + Unlock + True + center + + + + + + + diff --git a/data/resources/ui/password_widget.ui b/data/resources/ui/password_widget.ui index 983780c..be637f1 100644 --- a/data/resources/ui/password_widget.ui +++ b/data/resources/ui/password_widget.ui @@ -1,238 +1,114 @@ - - diff --git a/data/resources/ui/provider_image.ui b/data/resources/ui/provider_image.ui index eae4ae0..aa6ca11 100644 --- a/data/resources/ui/provider_image.ui +++ b/data/resources/ui/provider_image.ui @@ -1,7 +1,5 @@ - - diff --git a/data/resources/ui/providers_list.ui b/data/resources/ui/providers_list.ui index d34a49a..2acf922 100644 --- a/data/resources/ui/providers_list.ui +++ b/data/resources/ui/providers_list.ui @@ -1,48 +1,26 @@ - - - True - False True True vertical - True True - - True - False + - - True - False - 600 - 600 + + vertical - - True - False - vertical - - - - + - - True - True - 1 - - - - reader - - - - - True - False - start - vertical - True - - - 146 - True - False - - - True - True - True - start - library.sort-ascending - - - True - False - view-sort-ascending-symbolic - - - - - True - True - end - 0 - - - - - True - True - True - start - library.sort-descending - - - True - False - view-sort-descending-symbolic - - - - - True - True - end - 1 - - - - - - False - True - 0 - - - - - True - False - start - start - vertical - - - Name - True - True - False - library.sort-by - True - True - - - False - True - 0 - - - - - Date - True - True - False - library.sort-by - True - True - sort_name_radio - - - False - True - 1 - - - - - False - False - 1 - - - - - - library - 1 - - - - - False - True - 0 - - - - - True - False - - - False - True - 1 - - - - - True - False - False - win.show-help-overlay - _Keyboard Shortcuts - - - False - True - 4 - - - - - True - False - False - app.about - _About Authenticator - - - False - True - 5 - - - - - main - 1 - - - - + + + _Lock the application + app.preferences + + + _Preferences + app.preferences + + + _Keyboard Shortcuts + win.show-help-overlay + + + About Authenticator + app.about + + + 350 500 - False 360 550 - @app-id@ - - - True - False - True - - - True - False - True - slide-left-right - - - True - False - True - - - True - True - True - win.add-account - - - - True - False - list-add-symbolic - - - - - False - True - 0 - - - - - True - True - True - - - True - False - system-search-symbolic - - - - - False - True - end - 1 - - - - - main_headerbar - - - - - True - False - True - - - True - True - True - win.add-account - - - True - False - list-add-symbolic - - - - - False - True - 0 - - - - - empty_headerbar - 1 - - - - - True - False - center - True - - - - - - locked_headerbar - 2 - - - - - - - True - True - True - popover - - - True - False - open-menu-symbolic - - - - - end - - - - + @app-id@ - - 350 - True - False - slide-left-right + - - True - False - center - center - True - True - 12 - vertical - - - True - False - center - start - True - True - 192 - @app-id@ - 6 - - - - False - True - 10 - 0 - - - - - True - False - center - start - 12 - True - True - There are no accounts yet… - True - end - - - - False - True - 6 - 1 - - - - - True - False - center - start - 24 - True - True - 12 - 12 + + + + vertical - - True - False - start - Add a new account from the menu - True - end - - - - 1 - 0 - - - - - True - False - start - Scan a QR Code - True - end - - - - 1 - 1 - - - - - True - False - list-add-symbolic - - - - 0 - 0 - - - - - True - False - qrscanner-symbolic - - - - 0 - 1 - - - - - False - True - 2 - - - - - empty_state - - - - - True - False - vertical - - - True - False - - - False - True - 0 - - - - - True - False - 300 - slide-left-right - - - True - False - True - True - vertical - - + + True + + + True + win.add-account + list-add-symbolic + + + + + True + menu + open-menu-symbolic + + + + + True + system-search-symbolic + - - results - - True - False center center True True - 36 vertical - True - False center start True True - 128 - system-search-symbolic - 6 + 192 + @app-id@ + - - False - True - 10 - 0 - - True - False center start - 12 + 12 True True - No results found + There are no accounts yet… + True end - - False - True - 6 - 1 - + + + + center + start + 16 + 8 + True + True + vertical + + + horizontal + 8 + + + list-add-symbolic + + + + + + start + Add a new account from the menu + True + end + + + + + + + + horizontal + 8 + + + qrscanner-symbolic + + + + + + start + Scan a QR Code + True + end + + + + + + - - empty_results - 1 - - - True - True - 2 - - + - - normal_state - 1 - - - - - True - False - center - center - True - True - 36 - vertical - - - True - False - center - True - /com/github/bilelmoussaoui/Authenticator/authenticator.svg - 6 - - - False - True - 10 - 0 - - - - - True - False - center - 12 - Authenticator is locked - - - - False - True - 6 - 1 - - - - - True - False - center - start - 24 - True - True - vertical - - - True - True - center - False - password - - - False - True - 6 - 0 - - - - - Unlock - True - True - True - center - - - - - False - True - 6 - 1 - - - - - False - True - 2 - - - - - locked_state - 2 - - diff --git a/meson.build b/meson.build index 3522fe4..b73a93d 100644 --- a/meson.build +++ b/meson.build @@ -7,8 +7,8 @@ project('authenticator', 'rust', dependency('glib-2.0', version: '>= 2.56') dependency('gio-2.0', version: '>= 2.56') dependency('gdk-pixbuf-2.0') -dependency('gtk+-3.0', version: '>= 3.24.7') -dependency('libhandy-0.0', version: '>= 0.0.11') +dependency('gtk4', version: '>= 3.99.2') +#dependency('libhandy-4', version: '>= 1') cargo = find_program('cargo', required: false) glib_compile_schemas = find_program('glib-compile-schemas', required: true) diff --git a/rustfmt.toml b/rustfmt.toml deleted file mode 100644 index fd77315..0000000 --- a/rustfmt.toml +++ /dev/null @@ -1,3 +0,0 @@ -max_width = 200 -edition = "2018" - diff --git a/src/application.rs b/src/application.rs index 01edb33..74fb7d1 100644 --- a/src/application.rs +++ b/src/application.rs @@ -14,7 +14,7 @@ pub enum Action { pub struct Application { app: gtk::Application, - window: Rc>, + window: Rc, sender: Sender, receiver: RefCell>>, } @@ -23,19 +23,17 @@ impl Application { pub fn new() -> Rc { let app = gtk::Application::new(Some(config::APP_ID), Default::default()).unwrap(); - glib::set_application_name(&format!("{}Authenticator", config::NAME_PREFIX)); - glib::set_prgname(Some("authenticator")); - let (sender, r) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); let receiver = RefCell::new(Some(r)); let window = Window::new(sender.clone()); - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/shortcuts.ui"); - let dialog: gtk::ShortcutsWindow = builder.get_object("shortcuts").unwrap(); - window.borrow().widget.set_help_overlay(Some(&dialog)); - - let application = Rc::new(Self { app, window, sender, receiver }); + let application = Rc::new(Self { + app, + window, + sender, + receiver, + }); application.setup_gactions(); application.setup_signals(); @@ -58,55 +56,56 @@ impl Application { fn setup_gactions(&self) { // Quit - let app = self.app.clone(); - let simple_action = gio::SimpleAction::new("quit", None); - simple_action.connect_activate(move |_, _| app.quit()); - self.app.add_action(&simple_action); - self.app.set_accels_for_action("app.quit", &["q"]); - + action!( + self.app, + "quit", + clone!(@strong self.app as app => move |_, _| app.quit()) + ); // About - let window = self.window.borrow().widget.clone(); - let simple_action = gio::SimpleAction::new("about", None); - simple_action.connect_activate(move |_, _| { - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/about_dialog.ui"); - let about_dialog: gtk::AboutDialog = builder.get_object("about_dialog").unwrap(); - about_dialog.set_transient_for(Some(&window)); + action!( + self.app, + "about", + clone!(@weak self.window.widget as window => move |_, _| { + let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/about_dialog.ui"); + get_widget!(builder, gtk::AboutDialog, about_dialog); + about_dialog.set_transient_for(Some(&window)); + about_dialog.show(); + }) + ); - about_dialog.connect_response(|dialog, _| dialog.destroy()); - about_dialog.show(); - }); - self.app.add_action(&simple_action); - - self.app.set_accels_for_action("win.show-help-overlay", &["question"]); + self.app.set_accels_for_action("app.quit", &["q"]); + self.app + .set_accels_for_action("win.show-help-overlay", &["question"]); } fn setup_signals(&self) { - let window = self.window.borrow().widget.clone(); - self.app.connect_activate(move |app| { - let gtk_settings = gtk::Settings::get_default().unwrap(); - - window.set_application(Some(app)); - app.add_window(&window); - window.present(); - }); + self.app + .connect_activate(clone!(@weak self.window.widget as window => move |app| { + window.set_application(Some(app)); + app.add_window(&window); + window.present(); + })); } fn setup_css(&self) { - let theme = gtk::IconTheme::get_default().unwrap(); - theme.add_resource_path("/com/belmoussaoui/Authenticator/icons"); + self.app + .set_resource_base_path(Some("/com/belmoussaoui/Authenticator")); - let p = gtk::CssProvider::new(); - gtk::CssProvider::load_from_resource(&p, "/com/belmoussaoui/Authenticator/style.css"); - gtk::StyleContext::add_provider_for_screen(&gdk::Screen::get_default().unwrap(), &p, 500); + if let Some(ref display) = gdk::Display::get_default() { + let p = gtk::CssProvider::new(); + gtk::CssProvider::load_from_resource(&p, "/com/belmoussaoui/Authenticator/style.css"); + gtk::StyleContext::add_provider_for_display(display, &p, 500); + } } fn do_action(&self, action: Action) -> glib::Continue { match action { Action::OpenAddAccountDialog => { let dialog = AddAccountDialog::new(self.sender.clone()); - dialog.widget.set_transient_for(Some(&self.window.borrow().widget)); + dialog.widget.set_transient_for(Some(&self.window.widget)); + dialog.widget.show(); } - Action::ViewAccounts => self.window.borrow().set_view(View::Accounts), + Action::ViewAccounts => self.window.set_view(View::Accounts), }; glib::Continue(true) diff --git a/src/config.rs.in b/src/config.rs.in index dab146f..2f63632 100644 --- a/src/config.rs.in +++ b/src/config.rs.in @@ -1,8 +1,8 @@ -pub static APP_ID: &'static str = @APP_ID@; -pub static PKGDATADIR: &'static str = @PKGDATADIR@; -pub static PROFILE: &'static str = @PROFILE@; -pub static NAME_PREFIX: &'static str = @NAME_PREFIX@; -pub static VERSION: &'static str = @VERSION@; -pub static GETTEXT_PACKAGE: &'static str = @GETTEXT_PACKAGE@; -pub static LOCALEDIR: &'static str = @LOCALEDIR@; +pub static APP_ID: &str = @APP_ID@; +pub static PKGDATADIR: &str = @PKGDATADIR@; +pub static PROFILE: &str = @PROFILE@; +pub static NAME_PREFIX: &str = @NAME_PREFIX@; +pub static VERSION: &str = @VERSION@; +pub static GETTEXT_PACKAGE: &str = @GETTEXT_PACKAGE@; +pub static LOCALEDIR: &str = @LOCALEDIR@; diff --git a/src/main.rs b/src/main.rs index e09150f..54470fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,3 @@ -extern crate pretty_env_logger; #[macro_use] extern crate log; #[macro_use] @@ -13,10 +12,10 @@ extern crate diesel; extern crate glib; #[macro_use] extern crate serde_derive; +#[macro_use] +extern crate gtk_macros; -extern crate gtk; use gettextrs::*; -use libhandy::ColumnExt; mod application; mod config; mod models; @@ -32,16 +31,16 @@ fn main() { pretty_env_logger::init(); gtk::init().expect("Unable to start GTK3"); + libhandy::functions::init(); // Prepare i18n setlocale(LocaleCategory::LcAll, ""); bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); textdomain(GETTEXT_PACKAGE); - static_resources::init().expect("Failed to initialize the resource file."); + glib::set_application_name("Authenticator"); + glib::set_prgname(Some("authenticator")); - let column = libhandy::Column::new(); - column.set_maximum_width(800); - column.set_linear_growth_width(600); + static_resources::init().expect("Failed to initialize the resource file."); let app = Application::new(); app.run(app.clone()); diff --git a/src/models/account.rs b/src/models/account.rs index d482db8..fbbd07d 100644 --- a/src/models/account.rs +++ b/src/models/account.rs @@ -29,8 +29,13 @@ impl database::Insert for NewAccount { let db = database::connection(); let conn = db.get()?; - diesel::insert_into(accounts::table).values(self).execute(&conn)?; + diesel::insert_into(accounts::table) + .values(self) + .execute(&conn)?; - accounts::table.order(accounts::columns::id.desc()).first::(&conn).map_err(From::from) + accounts::table + .order(accounts::columns::id.desc()) + .first::(&conn) + .map_err(From::from) } } diff --git a/src/models/accounts.rs b/src/models/accounts.rs index c958a0d..d6f1de6 100644 --- a/src/models/accounts.rs +++ b/src/models/accounts.rs @@ -3,7 +3,6 @@ use super::database; use super::object_wrapper::ObjectWrapper; use super::provider::Provider; use gio::prelude::*; -use glib::prelude::*; use std::cell::RefCell; #[derive(Clone, PartialEq)] @@ -61,8 +60,9 @@ impl AccountsModel { let object = ObjectWrapper::new(Box::new(account)); let sort_by = self.sort_by.clone(); let sort_order = self.sort_order.clone(); - self.model - .insert_sorted(&object, move |a, b| Self::accounts_cmp(a, b, sort_by.borrow().clone(), sort_order.borrow().clone())); + self.model.insert_sorted(&object, move |a, b| { + Self::accounts_cmp(a, b, sort_by.borrow().clone(), sort_order.borrow().clone()) + }); } pub fn get_count(&self) -> u32 { @@ -85,10 +85,16 @@ impl AccountsModel { } None => self.sort_order.borrow().clone(), }; - self.model.sort(move |a, b| Self::accounts_cmp(a, b, sort_by.clone(), sort_order.clone())); + self.model + .sort(move |a, b| Self::accounts_cmp(a, b, sort_by.clone(), sort_order.clone())); } - fn accounts_cmp(a: &gio::Object, b: &gio::Object, sort_by: SortBy, sort_order: SortOrder) -> std::cmp::Ordering { + fn accounts_cmp( + a: &glib::Object, + b: &glib::Object, + sort_by: SortBy, + sort_order: SortOrder, + ) -> std::cmp::Ordering { let mut account_a: Account = a.downcast_ref::().unwrap().deserialize(); let mut account_b: Account = b.downcast_ref::().unwrap().deserialize(); diff --git a/src/models/database.rs b/src/models/database.rs index 0b2e3d2..995b307 100644 --- a/src/models/database.rs +++ b/src/models/database.rs @@ -10,7 +10,7 @@ use std::{fs, fs::File}; type Pool = r2d2::Pool>; lazy_static! { - static ref DB_PATH: PathBuf = glib::get_user_data_dir().unwrap().join("authenticator"); + static ref DB_PATH: PathBuf = glib::get_user_data_dir().join("authenticator"); static ref POOL: Pool = init_pool().expect("Failed to create a pool"); } @@ -54,7 +54,10 @@ pub fn get_accounts_by_provider(provider_model: Provider) -> Result let db = connection(); let conn = db.get()?; - accounts.filter(provider.eq(provider_model.id)).load::(&conn).map_err(From::from) + accounts + .filter(provider.eq(provider_model.id)) + .load::(&conn) + .map_err(From::from) } pub fn get_accounts() -> Result, Error> { diff --git a/src/models/object_wrapper.rs b/src/models/object_wrapper.rs index 097567a..46a6efc 100644 --- a/src/models/object_wrapper.rs +++ b/src/models/object_wrapper.rs @@ -43,19 +43,19 @@ mod imp { } fn new() -> Self { - Self { data: RefCell::new(None) } + Self { + data: RefCell::new(None), + } } } impl ObjectImpl for ObjectWrapper { - glib_object_impl!(); - fn set_property(&self, _obj: &glib::Object, id: usize, value: &glib::Value) { let prop = &PROPERTIES[id]; match *prop { subclass::Property("data", ..) => { - let data = value.get(); + let data = value.get().unwrap(); self.data.replace(data); } _ => unimplemented!(), @@ -86,17 +86,25 @@ impl ObjectWrapper { where O: serde::ser::Serialize, { - glib::Object::new(Self::static_type(), &[("data", &serde_json::to_string(&object).unwrap())]) - .unwrap() - .downcast() - .unwrap() + glib::Object::new( + Self::static_type(), + &[("data", &serde_json::to_string(&object).unwrap())], + ) + .unwrap() + .downcast() + .unwrap() } pub fn deserialize(&self) -> O where O: DeserializeOwned, { - let data = self.get_property("data").unwrap().get::().unwrap(); + let data = self + .get_property("data") + .unwrap() + .get::() + .unwrap() + .unwrap(); serde_json::from_str(&data).unwrap() } } diff --git a/src/models/provider.rs b/src/models/provider.rs index f300cb6..aa2110c 100644 --- a/src/models/provider.rs +++ b/src/models/provider.rs @@ -31,8 +31,13 @@ impl database::Insert for NewProvider { let db = database::connection(); let conn = db.get()?; - diesel::insert_into(providers::table).values(self).execute(&conn)?; + diesel::insert_into(providers::table) + .values(self) + .execute(&conn)?; - providers::table.order(providers::columns::id.desc()).first::(&conn).map_err(From::from) + providers::table + .order(providers::columns::id.desc()) + .first::(&conn) + .map_err(From::from) } } diff --git a/src/models/providers.rs b/src/models/providers.rs index fba093a..c4274ee 100644 --- a/src/models/providers.rs +++ b/src/models/providers.rs @@ -1,9 +1,6 @@ use super::accounts::AccountsModel; use super::database; use super::provider::Provider; -use gio::prelude::*; -use glib::prelude::*; -use std::cell::RefCell; use std::collections::HashMap; pub struct ProvidersModel { @@ -12,7 +9,9 @@ pub struct ProvidersModel { impl ProvidersModel { pub fn new() -> Self { - let mut model = Self { model: HashMap::new() }; + let mut model = Self { + model: HashMap::new(), + }; model.init(); model } @@ -23,6 +22,7 @@ impl ProvidersModel { } pub fn get_count(&self) -> usize { + println!("{}", self.model.len()); self.model.len() } diff --git a/src/static_resources.rs.in b/src/static_resources.rs.in index d2190da..c619de5 100644 --- a/src/static_resources.rs.in +++ b/src/static_resources.rs.in @@ -1,7 +1,7 @@ // Source: https://gitlab.gnome.org/World/podcasts/blob/master/podcasts-gtk/src/static_resource.rs -use gio::{resources_register, Error, Resource}; -use glib::Bytes; +use gio::{resources_register, Resource}; +use glib::{Bytes, Error}; pub(crate) fn init() -> Result<(), Error> { // load the gresource binary at build time and include/link it into the final @@ -10,7 +10,7 @@ pub(crate) fn init() -> Result<(), Error> { // Create Resource it will live as long the value lives. let gbytes = Bytes::from_static(res_bytes.as_ref()); - let resource = Resource::new_from_data(&gbytes)?; + let resource = Resource::from_data(&gbytes)?; // Register the resource so it won't be dropped and will continue to live in // memory. diff --git a/src/widgets/accounts/add.rs b/src/widgets/accounts/add.rs index 09720d1..266159a 100644 --- a/src/widgets/accounts/add.rs +++ b/src/widgets/accounts/add.rs @@ -1,24 +1,29 @@ use crate::application::Action; use crate::models::database::{self, *}; -use crate::models::{Account, AccountsModel, NewAccount}; +use crate::models::{Account, NewAccount}; use gio::prelude::*; use glib::Sender; use gtk::prelude::*; use std::rc::Rc; pub struct AddAccountDialog { - pub widget: gtk::Window, + pub widget: libhandy::Window, builder: gtk::Builder, sender: Sender, } impl AddAccountDialog { pub fn new(sender: Sender) -> Rc { - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/add_account.ui"); - let widget: gtk::Window = builder.get_object("add_dialog").expect("Failed to retrieve AddAccountDialog"); - widget.show_all(); + let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/add_account.ui"); + let widget: libhandy::Window = builder + .get_object("add_dialog") + .expect("Failed to retrieve AddAccountDialog"); - let add_account_dialog = Rc::new(Self { widget, builder, sender }); + let add_account_dialog = Rc::new(Self { + widget, + builder, + sender, + }); add_account_dialog.setup_actions(add_account_dialog.clone()); add_account_dialog.setup_signals(); @@ -32,37 +37,27 @@ impl AddAccountDialog { } fn notify_err(&self, error_msg: &str) { - let notification: gtk::Revealer = self.builder.get_object("notification").expect("Failed to retrieve notification"); - - let notification_msg: gtk::Label = self.builder.get_object("notification_msg").expect("Failed to retrieve notification_msg"); + get_widget!(self.builder, gtk::Revealer, notification); + get_widget!(self.builder, gtk::Label, notification_msg); notification_msg.set_text(error_msg); notification.set_reveal_child(true); // Display the notification } fn setup_signals(&self) { - let username_entry: gtk::Entry = self.builder.get_object("username_entry").expect("Failed to retrieve username_entry"); - let token_entry: gtk::Entry = self.builder.get_object("token_entry").expect("Failed to retrieve token_entry"); + get_widget!(self.builder, gtk::Entry, username_entry); + get_widget!(self.builder, gtk::Entry, token_entry); - let action_group = self.widget.get_action_group("add").unwrap().downcast::().unwrap(); - let save_action = action_group.lookup_action("save").unwrap().downcast::().unwrap(); + //let action_group = self.widget.get_action_group("add").unwrap().downcast::().unwrap(); + //let save_action = action_group.lookup_action("save").unwrap().downcast::().unwrap(); - let weak_username = username_entry.downgrade(); - let weak_token = token_entry.downgrade(); - let validate_entries = move |entry: >k::Entry| { - let mut username = String::new(); - let mut token = String::new(); - - if let Some(username_entry) = weak_username.upgrade() { - username.push_str(&username_entry.get_text().unwrap()); - } - if let Some(token_entry) = weak_token.upgrade() { - token.push_str(&token_entry.get_text().unwrap()); - } + let validate_entries = clone!(@weak username_entry, @weak token_entry => move |_: >k::Entry| { + let username = username_entry.get_text().unwrap(); + let token = token_entry.get_text().unwrap(); let is_valid = !(username.is_empty() || token.is_empty()); - save_action.set_enabled(is_valid); - }; + //save_action.set_enabled(is_valid); + }); username_entry.connect_changed(validate_entries.clone()); token_entry.connect_changed(validate_entries); @@ -82,13 +77,22 @@ impl AddAccountDialog { actions.add_action(&back); let save = gio::SimpleAction::new("save", None); - let add_account_dialog = s.clone(); - save.connect_activate(move |_, _| { - let builder = &add_account_dialog.builder; - let username_entry: gtk::Entry = builder.get_object("username_entry").expect("Failed to retrieve username_entry"); - let token_entry: gtk::Entry = builder.get_object("token_entry").expect("Failed to retrieve token_entry"); - let provider_combobox: gtk::ComboBox = builder.get_object("provider_combobox").expect("Failed to retrieve provider_combobox"); + save.connect_activate(clone!(@strong self.builder as builder => move |_, _| { + get_widget!(builder, gtk::Entry, username_entry); + get_widget!(builder, gtk::Entry, token_entry); + get_widget!(builder, gtk::Entry, provider_entry); + get_widget!(builder, gtk::Entry, website_entry); + // get_widget!(builder, gtk::Entry, period_entry); + // get_widget!(builder, gtk::Entry, algorithm_model); + + + + + + + + /* let new_account = NewAccount { username: username_entry.get_text().unwrap().to_string(), token_id: token_entry.get_text().unwrap().to_string(), @@ -100,7 +104,8 @@ impl AddAccountDialog { // Close the dialog if everything is fine. add_account_dialog.widget.destroy(); } - }); + */ + })); save.set_enabled(false); actions.add_action(&save); @@ -115,19 +120,14 @@ impl AddAccountDialog { fn setup_widgets(&self) { // Fill the providers gtk::ListStore - let col_types: [gtk::Type; 2] = [gtk::Type::String, gtk::Type::String]; - let providers_store = gtk::ListStore::new(&col_types); - + /*get_widget!(self.builder, gtk::ListStore, providers_store); if let Ok(providers) = database::get_providers() { for provider in providers.iter() { let values: [&dyn ToValue; 2] = [&provider.id, &provider.name]; providers_store.set(&providers_store.append(), &[0, 1], &values); } - } + }*/ - let provider_completion: gtk::EntryCompletion = self.builder.get_object("provider_completion").expect("Failed to retrieve provider_completion"); - let provider_combobox: gtk::ComboBox = self.builder.get_object("provider_combobox").expect("Failed to retrieve provider_combobox"); - provider_combobox.set_model(Some(&providers_store)); - provider_completion.set_model(Some(&providers_store)); + get_widget!(self.builder, gtk::SpinButton, @period_spinbutton).set_value(30.0); } } diff --git a/src/widgets/accounts/list.rs b/src/widgets/accounts/list.rs index e6dfd3f..cd41935 100644 --- a/src/widgets/accounts/list.rs +++ b/src/widgets/accounts/list.rs @@ -1,6 +1,6 @@ use gtk::prelude::*; -use glib::Sender; +use glib::{signal::Inhibit, Sender}; use crate::application::Action; use crate::models::{Account, AccountsModel, ObjectWrapper, Provider}; @@ -19,8 +19,11 @@ pub struct AccountsList<'a> { */ impl<'a> AccountsList<'a> { pub fn new(model: &'a AccountsModel, provider: &'a Provider, sender: Sender) -> Self { - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/accounts_list.ui"); - let widget: gtk::Box = builder.get_object("accounts_list").expect("Failed to retrieve accounts_list"); + let builder = + gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/accounts_list.ui"); + let widget: gtk::Box = builder + .get_object("accounts_list") + .expect("Failed to retrieve accounts_list"); let accounts_list = Self { widget, builder, @@ -33,29 +36,43 @@ impl<'a> AccountsList<'a> { } fn init(&self) { - let provider_name: gtk::Label = self.builder.get_object("provider_name").expect("Failed to retrieve provider_name"); + let provider_name: gtk::Label = self + .builder + .get_object("provider_name") + .expect("Failed to retrieve provider_name"); provider_name.set_text(&self.provider.name); - let listbox: gtk::ListBox = self.builder.get_object("listbox").expect("Failed to retrieve listbox"); + let listbox: gtk::ListBox = self + .builder + .get_object("listbox") + .expect("Failed to retrieve listbox"); let sender = self.sender.clone(); - listbox.bind_model(Some(&self.model.model), move |account| { - let account: Account = account.downcast_ref::().unwrap().deserialize(); - let row = AccountRow::new(account, sender.clone()); - let sender = sender.clone(); - row.set_on_click_callback(move |_, _| { - // sender.send(Action::LoadChapter(chapter.clone())).unwrap(); - gtk::Inhibit(false) - }); - row.widget.upcast::() - }); + listbox.bind_model( + Some(&self.model.model), + Some(Box::new(move |account: &glib::Object| { + let account: Account = account + .downcast_ref::() + .unwrap() + .deserialize(); + let row = AccountRow::new(account, sender.clone()); + let sender = sender.clone(); + /*row.set_on_click_callback(move |_, _| { + // sender.send(Action::LoadChapter(chapter.clone())).unwrap(); + Inhibit(false) + });*/ + row.widget.upcast::() + })), + ); - listbox.set_header_func(Some(Box::new(move |row1: >k::ListBoxRow, row2: Option<>k::ListBoxRow>| { - if let Some(row_before) = row2 { - let separator = gtk::Separator::new(gtk::Orientation::Horizontal); - row1.set_header(Some(&separator)); - separator.show(); - } - }))); + listbox.set_header_func(Some(Box::new( + move |row1: >k::ListBoxRow, row2: Option<>k::ListBoxRow>| { + if let Some(row_before) = row2 { + let separator = gtk::Separator::new(gtk::Orientation::Horizontal); + row1.set_header(Some(&separator)); + separator.show(); + } + }, + ))); } } diff --git a/src/widgets/accounts/row.rs b/src/widgets/accounts/row.rs index d293f2e..36b37d0 100644 --- a/src/widgets/accounts/row.rs +++ b/src/widgets/accounts/row.rs @@ -12,25 +12,27 @@ pub struct AccountRow { impl AccountRow { pub fn new(account: Account, sender: Sender) -> Self { - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/account_row.ui"); - let widget: gtk::ListBoxRow = builder.get_object("account_row").expect("Failed to load library_row object"); + let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/account_row.ui"); + let widget: gtk::ListBoxRow = builder + .get_object("account_row") + .expect("Failed to load library_row object"); - let account_row = Self { widget, builder, sender, account }; + let account_row = Self { + widget, + builder, + sender, + account, + }; account_row.init(); account_row } fn init(&self) { - let username_label: gtk::Label = self.builder.get_object("username_label").expect("Failed to retrieve username_label"); + let username_label: gtk::Label = self + .builder + .get_object("username_label") + .expect("Failed to retrieve username_label"); username_label.set_text(&self.account.username); } - - pub fn set_on_click_callback(&self, callback: F) - where - for<'r, 's> F: std::ops::Fn(&'r gtk::EventBox, &'s gdk::EventButton) -> gtk::Inhibit + 'static, - { - //let event_box: gtk::EventBox = self.builder.get_object("eventbox").expect("Failed to load eventbox"); - // event_box.connect_button_press_event(callback); - } } diff --git a/src/widgets/providers/list.rs b/src/widgets/providers/list.rs index f215300..c87ad5a 100644 --- a/src/widgets/providers/list.rs +++ b/src/widgets/providers/list.rs @@ -1,4 +1,3 @@ -use gio::prelude::*; use glib::Sender; use gtk::prelude::*; use std::cell::RefCell; @@ -16,23 +15,35 @@ pub struct ProvidersList { impl ProvidersList { pub fn new(sender: Sender) -> Self { - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/providers_list.ui"); - let widget: gtk::Box = builder.get_object("providers_list").expect("Failed to retrieve providers_list"); + let builder = + gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/providers_list.ui"); + let widget: gtk::Box = builder + .get_object("providers_list") + .expect("Failed to retrieve providers_list"); let model = RefCell::new(ProvidersModel::new()); - let providers_list = Self { widget, builder, sender, model }; + let providers_list = Self { + widget, + builder, + sender, + model, + }; providers_list.init(); providers_list } fn init(&self) { - let providers_container: gtk::Box = self.builder.get_object("providers_container").expect("Failed to retrieve providers_container"); + let providers_container: gtk::Box = self + .builder + .get_object("providers_container") + .expect("Failed to retrieve providers_container"); for (provider, accounts_model) in &self.model.borrow().model { if accounts_model.get_count() != 0 { - let accounts_list = AccountsList::new(accounts_model, provider, self.sender.clone()); - providers_container.pack_start(&accounts_list.widget, false, false, 0); + let accounts_list = + AccountsList::new(accounts_model, provider, self.sender.clone()); + providers_container.append(&accounts_list.widget); } } } diff --git a/src/widgets/window.rs b/src/widgets/window.rs index 5073934..87deec1 100644 --- a/src/widgets/window.rs +++ b/src/widgets/window.rs @@ -4,7 +4,7 @@ use crate::widgets::providers::ProvidersList; use crate::window_state; use gio::prelude::*; -use glib::Sender; +use glib::{signal::Inhibit, Sender, WeakRef}; use gtk::prelude::*; use std::cell::RefCell; @@ -18,37 +18,37 @@ pub enum View { } pub struct Window { - pub widget: gtk::ApplicationWindow, + pub widget: libhandy::ApplicationWindow, sender: Sender, builder: gtk::Builder, settings: RefCell, } impl Window { - pub fn new(sender: Sender) -> Rc> { + pub fn new(sender: Sender) -> Rc { let settings = gio::Settings::new(APP_ID); - let builder = gtk::Builder::new_from_resource("/com/belmoussaoui/Authenticator/window.ui"); - let widget: gtk::ApplicationWindow = builder.get_object("window").unwrap(); + let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/window.ui"); + get_widget!(builder, libhandy::ApplicationWindow, window); if PROFILE == "Devel" { - widget.get_style_context().add_class("devel"); + window.get_style_context().add_class("devel"); } - let window = Rc::new(RefCell::new(Window { - widget, + let window_widget = Rc::new(Window { + widget: window, sender, builder, settings: RefCell::new(settings), - })); + }); - window.borrow().init(); - window.borrow().setup_actions(window.clone()); - window.borrow().set_view(View::Empty); // Start by default in an empty state - window + window_widget.init(); + window_widget.setup_actions(); + window_widget.set_view(View::Empty); // Start by default in an empty state + window_widget } pub fn set_view(&self, view: View) { - let headerbar_stack: gtk::Stack = self.builder.get_object("headerbar_stack").expect("Failed to retrieve headerbar_stack"); - let main_stack: gtk::Stack = self.builder.get_object("main_stack").expect("Failed to retrieve main_stack"); + /*get_widget!(self.builder, gtk::Stack, headerbar_stack); + get_widget!(self.builder, gtk::Stack, main_stack); match view { View::Empty => { main_stack.set_visible_child_name("empty_state"); @@ -62,7 +62,7 @@ impl Window { main_stack.set_visible_child_name("normal_state"); headerbar_stack.set_visible_child_name("main_headerbar"); } - } + }*/ } fn init(&self) { @@ -70,66 +70,31 @@ impl Window { let settings = self.settings.borrow().clone(); window_state::load(&self.widget, &settings); // save window state on delete event - self.widget.connect_delete_event(move |window, _| { + self.widget.connect_close_request(move |window| { window_state::save(&window, &settings); Inhibit(false) }); + let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/shortcuts.ui"); + get_widget!(builder, gtk::ShortcutsWindow, shortcuts); + self.widget.set_help_overlay(Some(&shortcuts)); + let providers_list = ProvidersList::new(self.sender.clone()); - let providers_container: gtk::Box = self.builder.get_object("providers_container").expect("Failed to retrieve providers_container"); + /*get_widget!(self.builder, gtk::Box, providers_container); - providers_container.pack_start(&providers_list.widget, true, true, 0); + providers_container.append(&providers_list.widget); if providers_list.model.borrow().get_count() != 0 { - self.sender.send(Action::ViewAccounts).expect("Failed to send ViewAccountsAction"); - } + send!(self.sender, Action::ViewAccounts); + }*/ } - /* - fn order(&self, sort_by: Option, sort_order: Option) { - // self.library.borrow_mut().clone().sort(sort_by.clone(), sort_order.clone()); - } - */ - - fn setup_actions(&self, s: Rc>) { - let actions = gio::SimpleActionGroup::new(); - let add_account = gio::SimpleAction::new("add-account", None); - let sender = self.sender.clone(); - add_account.connect_activate(move |_, _| { - sender.send(Action::OpenAddAccountDialog).unwrap(); - }); - actions.add_action(&add_account); - self.widget.insert_action_group("win", Some(&actions)); - - let actions = gio::SimpleActionGroup::new(); - let sort_descending = gio::SimpleAction::new("sort-descending", None); - let sort_ascending = gio::SimpleAction::new("sort-ascending", None); - - let window = s.clone(); - let sort_ascending_action = sort_ascending.clone(); - sort_descending.connect_activate(move |action, _| { - action.set_enabled(false); - sort_ascending_action.set_enabled(true); - // window.borrow_mut().order(None, Some(SortOrder::Desc)); - }); - actions.add_action(&sort_descending); - - let window = s.clone(); - let sort_descending_action = sort_descending.clone(); - sort_ascending.connect_activate(move |action, _| { - action.set_enabled(false); - sort_descending_action.set_enabled(true); - // window.borrow().order(None, Some(SortOrder::Asc)); - }); - actions.add_action(&sort_ascending); - - let window = s.clone(); - let sort_by = gio::SimpleAction::new("sort-by", Some(glib::VariantTy::new("s").unwrap())); - sort_by.connect_activate(move |_, data| { - // let sort_by = SortBy::from(data.unwrap().get_str().unwrap()); - // window.borrow().order(Some(sort_by), None); - }); - actions.add_action(&sort_by); - - self.widget.insert_action_group("library", Some(&actions)); + fn setup_actions(&self) { + action!( + self.widget, + "add-account", + clone!(@strong self.sender as sender => move |_,_| { + send!(sender, Action::OpenAddAccountDialog); + }) + ); } } diff --git a/src/window_state.rs b/src/window_state.rs index c976c27..2cc755a 100644 --- a/src/window_state.rs +++ b/src/window_state.rs @@ -1,7 +1,7 @@ use gio::prelude::SettingsExt; use gtk::prelude::GtkWindowExt; -pub fn load(window: >k::ApplicationWindow, settings: &gio::Settings) { +pub fn load(window: &libhandy::ApplicationWindow, settings: &gio::Settings) { let width = settings.get_int("window-width"); let height = settings.get_int("window-height"); @@ -9,26 +9,16 @@ pub fn load(window: >k::ApplicationWindow, settings: &gio::Settings) { window.resize(360, 600); } - let x = settings.get_int("window-x"); - let y = settings.get_int("window-y"); let is_maximized = settings.get_boolean("is-maximized"); - - if x > -1 && y > -1 { - window.move_(x, y); - } else if is_maximized { + if is_maximized { window.maximize(); } } -pub fn save(window: >k::ApplicationWindow, settings: &gio::Settings) { +pub fn save(window: &libhandy::ApplicationWindow, settings: &gio::Settings) { let size = window.get_size(); - let position = window.get_position(); - settings.set_int("window-width", size.0); settings.set_int("window-height", size.1); settings.set_boolean("is-maximized", window.is_maximized()); - - settings.set_int("window-x", position.0); - settings.set_int("window-y", position.1); }