From ddddb97c5f6695f9d517ed8fa7db700a2a487b46 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Thu, 3 Dec 2020 15:10:24 +0100 Subject: [PATCH] subclassing: use composite templates everywhere --- Cargo.lock | 2452 ++++++++--------- Cargo.toml | 1 + data/resources.gresource.xml | 2 +- data/resources/ui/account_add.ui | 8 +- data/resources/ui/account_row.ui | 4 +- data/resources/ui/preferences.ui.in | 4 +- .../ui/preferences_password_page.ui.in | 4 +- data/resources/ui/provider_row.ui | 6 +- data/resources/ui/providers_list.ui.in | 4 +- data/resources/ui/window.ui.in | 228 +- src/application.rs | 32 +- src/helpers/qrcode.rs | 2 +- src/models/account.rs | 10 +- src/models/provider.rs | 16 +- src/widgets/accounts/add.rs | 312 ++- src/widgets/accounts/mod.rs | 2 +- src/widgets/accounts/row.rs | 185 +- src/widgets/mod.rs | 4 +- src/widgets/preferences/password_page.rs | 188 +- src/widgets/preferences/provider_page.rs | 9 +- src/widgets/preferences/providers_page.rs | 22 +- src/widgets/preferences/window.rs | 177 +- src/widgets/providers/list.rs | 106 +- src/widgets/providers/row.rs | 149 +- src/widgets/window.rs | 156 +- 25 files changed, 2226 insertions(+), 1857 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d7ae69..3d0c94b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,3187 +4,3169 @@ name = "adler" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" [[package]] name = "adler32" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "aead" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "aes" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5" dependencies = [ - "aes-soft 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "aesni 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "block-cipher 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-soft 0.4.0", + "aesni 0.7.0", + "block-cipher", ] [[package]] name = "aes" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" dependencies = [ - "aes-soft 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "aesni 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-soft 0.6.4", + "aesni 0.10.0", + "cipher", ] [[package]] name = "aes-gcm" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" dependencies = [ - "aead 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "aes 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ctr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ghash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aead", + "aes 0.6.0", + "cipher", + "ctr", + "ghash", + "subtle", ] [[package]] name = "aes-soft" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4925647ee64e5056cf231608957ce7c81e12d6d6e316b9ce1404778cc1d35fa7" dependencies = [ - "block-cipher 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher", + "byteorder", + "opaque-debug 0.2.3", ] [[package]] name = "aes-soft" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" dependencies = [ - "cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cipher", + "opaque-debug 0.3.0", ] [[package]] name = "aesni" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050d39b0b7688b3a3254394c3e30a9d66c41dcf9b05b0e2dbdc623f6505d264" dependencies = [ - "block-cipher 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher", + "opaque-debug 0.2.3", ] [[package]] name = "aesni" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" dependencies = [ - "cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cipher", + "opaque-debug 0.3.0", ] [[package]] name = "aho-corasick" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" dependencies = [ - "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "anyhow" version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" [[package]] name = "ashpd" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05092d6c609057712953f07e974752926ec8fcf5feed2782e9ed70a2ea0a2304" dependencies = [ - "enumflags2 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_repr 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "strum 0.19.5 (registry+https://github.com/rust-lang/crates.io-index)", - "strum_macros 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", - "zbus 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zvariant 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zvariant_derive 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "enumflags2", + "serde", + "serde_repr", + "strum", + "strum_macros", + "zbus", + "zvariant", + "zvariant_derive", ] [[package]] name = "async-channel" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" dependencies = [ - "concurrent-queue 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "event-listener 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "concurrent-queue", + "event-listener", + "futures-core", ] [[package]] name = "async-executor" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" dependencies = [ - "async-task 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "concurrent-queue 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "vec-arena 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "vec-arena", ] [[package]] name = "async-global-executor" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73079b49cd26b8fd5a15f68fc7707fc78698dc2a3d61430f2a7a9430230dfa04" dependencies = [ - "async-executor 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-io 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "async-executor", + "async-io", + "futures-lite", + "num_cpus", + "once_cell", ] [[package]] name = "async-io" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" dependencies = [ - "concurrent-queue 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "nb-connect 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parking 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "polling 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "vec-arena 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "waker-fn 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "concurrent-queue", + "fastrand", + "futures-lite", + "libc", + "log", + "nb-connect", + "once_cell", + "parking", + "polling", + "vec-arena", + "waker-fn", + "winapi", ] [[package]] name = "async-mutex" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" dependencies = [ - "event-listener 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "event-listener", ] [[package]] name = "async-std" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e82538bc65a25dbdff70e4c5439d52f068048ab97cdea0acd73f131594caa1" dependencies = [ - "async-global-executor 1.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "async-io 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-mutex 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blocking 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "gloo-timers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kv-log-macro 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)", + "async-global-executor", + "async-io", + "async-mutex", + "blocking", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "num_cpus", + "once_cell", + "pin-project-lite 0.1.11", + "pin-utils", + "slab", + "wasm-bindgen-futures", ] [[package]] name = "async-task" version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.41" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "atomic-waker" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi", ] [[package]] name = "authenticator" version = "0.1.0" dependencies = [ - "anyhow 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", - "ashpd 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "diesel 1.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gettext-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "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-rs)", - "image 0.23.11 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "pretty_env_logger 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-xml 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "secret-service 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "surf 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zbar-rust 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "ashpd", + "diesel", + "diesel_migrations", + "futures", + "gdk-pixbuf", + "gdk4", + "gettext-rs", + "gio", + "glib", + "gtk-macros", + "gtk4", + "image", + "lazy_static", + "libhandy4", + "log", + "once_cell", + "pretty_env_logger", + "quick-xml", + "secret-service", + "surf", + "url", + "zbar-rust", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "base-x" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base64" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] name = "base64" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "block" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "block-cipher" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "block-modes" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc7143fa8aadf0a3d8140f3f558063dcfc1b3205e5e837ad59485140f1575ae8" dependencies = [ - "block-cipher 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher", + "block-padding", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "blocking" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" dependencies = [ - "async-channel 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "async-task 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "atomic-waker 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", ] [[package]] name = "bumpalo" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" [[package]] name = "byteorder" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "cache-padded" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] name = "cairo-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "freetype 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cairo-sys-rs", + "freetype", + "glib", + "libc", + "thiserror", ] [[package]] name = "cairo-sys-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys", + "libc", + "system-deps", ] [[package]] name = "cc" -version = "1.0.62" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cipher" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "cloudabi" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "cmake" version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "concurrent-queue" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" dependencies = [ - "cache-padded 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cache-padded", ] [[package]] name = "const_fn" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" [[package]] name = "cookie" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784ad0fbab4f3e9cef09f20e0aea6000ae08d2cb98ac4c0abc53df18803d702f" dependencies = [ - "aes-gcm 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hkdf 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-gcm", + "base64 0.12.3", + "hkdf 0.10.0", + "hmac 0.10.1", + "percent-encoding", + "rand 0.7.3", + "sha2", + "time", + "version_check", ] [[package]] name = "cpuid-bool" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" [[package]] name = "crc32fast" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "const_fn 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "const_fn", + "crossbeam-utils", + "lazy_static", + "memoffset 0.6.1", + "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "const_fn 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "cfg-if 1.0.0", + "lazy_static", ] [[package]] name = "crypto-mac" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle", ] [[package]] name = "crypto-mac" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle", ] [[package]] name = "ctr" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" dependencies = [ - "cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cipher", ] [[package]] name = "curl" version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e268162af1a5fe89917ae25ba3b0a77c8da752bdc58e7dbb4f15b91fbd33756e" dependencies = [ - "curl-sys 0.4.38+curl-7.73.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", - "socket2 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi", ] [[package]] name = "curl-sys" version = "0.4.38+curl-7.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498ecfb4f59997fd40023d62a9f1e506e768b2baeb59a1d311eb9751cdcd7e3f" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "libnghttp2-sys 0.1.4+1.41.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi", ] [[package]] name = "data-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993a608597367c6377b258c25d7120740f00ed23a2252b729b1932dd7866f908" [[package]] name = "dbus" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a0c10ea61042b7555729ab0608727bbbb06ce709c11e6047cfa4e10f6d052d" dependencies = [ - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "deflate" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" dependencies = [ - "adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32", + "byteorder", ] [[package]] name = "derivative" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "diesel" version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2de9deab977a153492a1468d1b1c0662c1cf39e5ea87d0c060ecd59ef18d8c" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "diesel_derives 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libsqlite3-sys 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "r2d2 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "diesel_derives", + "libsqlite3-sys", + "r2d2", ] [[package]] name = "diesel_derives" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45f5098f628d02a7a0f68ddba586fb61e80edec3bdc1be3b921f4ceec60858d3" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "diesel_migrations" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf3cde8413353dc7f5d72fa8ce0b99a560a359d2c5ef1e5817ca731cd9008f4c" dependencies = [ - "migrations_internals 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "migrations_macros 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "migrations_internals", + "migrations_macros", ] [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "discard" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "either" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "enum-ordinalize" version = "3.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1676e1daadfd216bda88d3a6fedd1bf53b829a085f5cc4d81c6f3054f50ef983" dependencies = [ - "num-bigint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "enumflags2" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0" dependencies = [ - "enumflags2_derive 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "enumflags2_derive", + "serde", ] [[package]] name = "enumflags2_derive" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "env_logger" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log", + "regex", + "termcolor", ] [[package]] name = "event-listener" version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" [[package]] name = "fastrand" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" dependencies = [ - "instant 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "instant", +] + +[[package]] +name = "field-offset" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c40e7a744c1d22cd64783732a287dd5d08a9f0e1d89b685bf084aab753cb20d4" +dependencies = [ + "memoffset 0.5.6", + "rustc_version", ] [[package]] name = "flume" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bebadab126f8120d410b677ed95eee4ba6eb7c6dd8e34a5ec88a08050e26132" dependencies = [ - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "spinning_top 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-sink", + "spinning_top", ] [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "percent-encoding", ] [[package]] name = "freetype" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" dependencies = [ - "freetype-sys 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "freetype-sys", + "libc", ] [[package]] name = "freetype-sys" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" dependencies = [ - "cmake 0.1.45 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake", + "libc", + "pkg-config", ] [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] name = "futures-channel" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" dependencies = [ - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-sink", ] [[package]] name = "futures-core" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" [[package]] name = "futures-executor" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" dependencies = [ - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core", + "futures-task", + "futures-util", ] [[package]] name = "futures-io" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" [[package]] name = "futures-lite" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" dependencies = [ - "fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "waker-fn 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.1.11", + "waker-fn", ] [[package]] name = "futures-macro" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" dependencies = [ - "proc-macro-hack 0.5.19 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "futures-sink" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" [[package]] name = "futures-task" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" dependencies = [ - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell", ] [[package]] name = "futures-util" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-macro 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-sink 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.4 (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.19 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project 1.0.2", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", ] [[package]] name = "gdk-pixbuf" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", ] [[package]] name = "gdk-pixbuf-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", ] [[package]] name = "gdk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio", + "glib", + "libc", + "pango", ] [[package]] name = "gdk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", ] [[package]] name = "generic-array" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ - "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", + "version_check", ] [[package]] name = "getrandom" version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "libc", + "wasi", ] [[package]] name = "gettext-rs" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b95fa19cca70adf9888150e979839ae9bd58f85a1a42e4753699112875189e1" dependencies = [ - "gettext-sys 0.19.9 (registry+https://github.com/rust-lang/crates.io-index)", - "locale_config 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gettext-sys", + "locale_config", ] [[package]] name = "gettext-sys" version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e034c4ba5bb796730a6cc5eb0d654c16885006a7c3d6c6603581ed809434f153" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "ghash" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" dependencies = [ - "polyval 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "polyval", ] [[package]] name = "gif" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02efba560f227847cb41463a7395c514d127d4f74fff12ef0137fff1b84b96c4" dependencies = [ - "color_quant 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "weezl 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "color_quant", + "weezl", ] [[package]] name = "gio" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "futures", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", ] [[package]] name = "gio-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", ] [[package]] name = "glib" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-executor 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-task 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-macros 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", ] [[package]] name = "glib-macros" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "anyhow 1.0.34 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "heck", + "itertools", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "glib-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "system-deps", ] [[package]] name = "gloo-timers" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" dependencies = [ - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "gobject-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys", + "libc", + "system-deps", ] [[package]] name = "graphene-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "glib", + "graphene-sys", + "libc", ] [[package]] name = "graphene-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys", + "libc", + "pkg-config", + "system-deps", ] [[package]] name = "gsk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", + "bitflags", + "cairo-rs", + "gdk4", + "glib", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", ] [[package]] name = "gsk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs", + "gdk4-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "libc", + "pango-sys", + "system-deps", ] [[package]] name = "gtk-macros" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1874c48e670519ce192093ac906c08a6dde7cb2d18b28722ef237726a39c3a63" [[package]] name = "gtk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gsk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", + "bitflags", + "cairo-rs", + "field-offset", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.1.0" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" +dependencies = [ + "anyhow", + "heck", + "itertools", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "gtk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#95e9521e3b8a1113e42fc15c1e805ca5175a850e" +source = "git+https://github.com/gtk-rs/gtk4-rs#91d797945cddd19d20ea4f7e80833765d4169423" dependencies = [ - "cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "gsk4-sys", + "libc", + "pango-sys", + "system-deps", ] [[package]] name = "heck" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "unicode-segmentation 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-segmentation", ] [[package]] name = "hermit-abi" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "hkdf" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe1149865383e4526a43aee8495f9a325f0b806c63ce6427d06336a590abbbc9" dependencies = [ - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest", + "hmac 0.8.1", ] [[package]] name = "hkdf" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" dependencies = [ - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "digest", + "hmac 0.10.1", ] [[package]] name = "hmac" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.8.0", + "digest", ] [[package]] name = "hmac" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" dependencies = [ - "crypto-mac 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.10.0", + "digest", ] [[package]] name = "http" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" dependencies = [ - "bytes 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "fnv", + "itoa", ] [[package]] name = "http-client" version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "010092b71b94ee49293995625ce7a607778b8b4099c8088fa84fd66bd3e0f21c" dependencies = [ - "async-std 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-trait 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "http-types 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "isahc 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "async-trait", + "http-types", + "isahc", + "log", ] [[package]] name = "http-types" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f316f6a06306570e899238d3b85375f350cfceda60ec47807c4164d6e169e58" dependencies = [ - "anyhow 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", - "async-channel 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "async-std 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cookie 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "infer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_qs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow", + "async-channel", + "async-std", + "base64 0.13.0", + "cookie", + "futures-lite", + "infer", + "pin-project-lite 0.1.11", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", ] [[package]] name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error", ] [[package]] name = "idna" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "image" -version = "0.23.11" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce04077ead78e39ae8610ad26216aed811996b043d47beed5090db674f9e9b5" dependencies = [ - "bytemuck 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "color_quant 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gif 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "png 0.16.7 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tiff 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytemuck", + "byteorder", + "color_quant", + "gif", + "jpeg-decoder", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", ] [[package]] name = "infer" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" [[package]] name = "instant" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", ] [[package]] name = "isahc" version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80aafab09693e9fa74b76ef207c55dc1cba5d9d5dc6dcc1b6a96d008a98000e9" dependencies = [ - "bytes 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "curl 0.4.34 (registry+https://github.com/rust-lang/crates.io-index)", - "curl-sys 0.4.38+curl-7.73.0 (registry+https://github.com/rust-lang/crates.io-index)", - "flume 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sluice 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-futures 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "waker-fn 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "crossbeam-utils", + "curl", + "curl-sys", + "flume", + "futures-lite", + "http", + "log", + "once_cell", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", ] [[package]] name = "itertools" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" dependencies = [ - "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either", ] [[package]] name = "itoa" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" [[package]] name = "jpeg-decoder" version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc797adac5f083b8ff0ca6f6294a999393d76e197c36488e2ef732c4715f6fa3" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "rayon", ] [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" dependencies = [ - "wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen", ] [[package]] name = "kv-log-macro" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" dependencies = [ - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "log", ] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" [[package]] name = "libhandy4" version = "0.1.0" -source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#80834bb478e427a3d776793ad4ff23a2f1f36256" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#eb0675965538bff25934a5537b278b3628491582" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gtk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "libhandy4-sys 0.1.0 (git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs)", - "pango 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", + "bitflags", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "lazy_static", + "libc", + "libhandy4-sys", + "pango", ] [[package]] name = "libhandy4-sys" version = "0.1.0" -source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#80834bb478e427a3d776793ad4ff23a2f1f36256" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#eb0675965538bff25934a5537b278b3628491582" dependencies = [ - "gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "pango-sys", + "system-deps", ] [[package]] name = "libnghttp2-sys" -version = "0.1.4+1.41.0" +version = "0.1.5+1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9657455ff47889b70ffd37c3e118e8cdd23fd1f9f3293a285f141070621c4c79" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", ] [[package]] name = "libsqlite3-sys" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e704a02bcaecd4a08b93a23f6be59d0bd79cd161e0963e9499165a0a35df7bd" dependencies = [ - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config", + "vcpkg", ] [[package]] name = "libz-sys" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] name = "locale_config" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" 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.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "objc", + "objc-foundation", + "regex", + "winapi", ] [[package]] name = "lock_api" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" dependencies = [ - "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard", ] [[package]] name = "log" version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", ] [[package]] name = "malloc_buf" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" dependencies = [ - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memchr" version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" [[package]] name = "memoffset" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", +] + +[[package]] +name = "memoffset" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +dependencies = [ + "autocfg 1.0.1", ] [[package]] name = "migrations_internals" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b4fc84e4af020b837029e017966f86a1c2d5e83e64b589963d5047525995860" dependencies = [ - "diesel 1.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "diesel", ] [[package]] name = "migrations_macros" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9753f12909fd8d923f75ae5c3258cae1ed3c8ec052e1b38c93c21a6d157f789c" dependencies = [ - "migrations_internals 1.4.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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "migrations_internals", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "mime" version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "mime_guess" version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" dependencies = [ - "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mime", + "unicase", ] [[package]] name = "miniz_oxide" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" dependencies = [ - "adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32", ] [[package]] name = "miniz_oxide" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ - "adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "adler", + "autocfg 1.0.1", ] [[package]] name = "nb-connect" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998" dependencies = [ - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi", ] [[package]] name = "nix" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", + "void", ] [[package]] name = "num" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" dependencies = [ - "num-bigint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-complex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-rational 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", ] [[package]] name = "num-bigint" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9a41747ae4633fce5adffb4d2e81ffc5e89593cb19917f8fb2cc5ff76507bf" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-integer", + "num-traits", ] [[package]] name = "num-complex" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5" dependencies = [ - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits", ] [[package]] name = "num-integer" version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-traits", ] [[package]] name = "num-iter" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-integer", + "num-traits", ] [[package]] name = "num-rational" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "num-bigint", + "num-integer", + "num-traits", ] [[package]] name = "num-traits" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", ] [[package]] name = "num_cpus" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" dependencies = [ - "hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", ] [[package]] name = "objc" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ - "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "malloc_buf", ] [[package]] name = "objc-foundation" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 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)", + "block", + "objc", + "objc_id", ] [[package]] name = "objc_id" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" dependencies = [ - "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "objc", ] [[package]] name = "once_cell" version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "opaque-debug" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl-probe" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" version = "0.9.58" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] name = "pango" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", + "bitflags", + "glib", + "libc", + "once_cell", + "pango-sys", ] [[package]] name = "pango-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#d4ee5a4c20311aa66f69da5e8d4b2484cc977f0f" +source = "git+https://github.com/gtk-rs/gtk-rs#82017a57d9c6fddb086662c6b5cf4ca48ec12b27" dependencies = [ - "glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", ] [[package]] name = "parking" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] name = "parking_lot" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ - "instant 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lock_api 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "instant", + "lock_api", + "parking_lot_core", ] [[package]] name = "parking_lot_core" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "instant 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "cloudabi 0.1.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", ] [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" dependencies = [ - "pin-project-internal 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-internal 0.4.27", ] [[package]] name = "pin-project" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" dependencies = [ - "pin-project-internal 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project-internal 1.0.2", ] [[package]] name = "pin-project-internal" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "pin-project-internal" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "pin-project-lite" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" + +[[package]] +name = "pin-project-lite" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c" [[package]] name = "pin-utils" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "png" version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "deflate 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", ] [[package]] name = "polling" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wepoll-sys 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", + "libc", + "log", + "wepoll-sys", + "winapi", ] [[package]] name = "polyval" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3fd900a291ceb8b99799cc8cd3d1d3403a51721e015bc533528b2ceafcc443c" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "universal-hash 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "universal-hash", ] [[package]] name = "ppv-lite86" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "pretty_env_logger" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" dependencies = [ - "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger", + "log", ] [[package]] name = "proc-macro-crate" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "toml 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "toml", ] [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 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.7 (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)", + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", ] [[package]] name = "proc-macro-error-attr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "version_check", ] [[package]] name = "proc-macro-hack" version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ - "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid", ] [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd" dependencies = [ - "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "quote" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", ] [[package]] name = "r2d2" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545c5bc2b880973c9c10e4067418407a0ccaa3091781d1671d46eb35107cb26f" dependencies = [ - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "scheduled-thread-pool 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log", + "parking_lot", + "scheduled-thread-pool", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi", ] [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_chacha" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ - "ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", ] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.80 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rayon" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ - "autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.1", + "crossbeam-deque", + "either", + "rayon-core", ] [[package]] name = "rayon-core" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ - "crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_syscall" version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "regex" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" dependencies = [ - "aho-corasick 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-syntax" version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver", ] [[package]] name = "ryu" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schannel" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "winapi", ] [[package]] name = "scheduled-thread-pool" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f74fd1204073fa02d5d5d68bec8021be4c38690b61264b2fdb48083d0e7d7" dependencies = [ - "parking_lot 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot", ] [[package]] name = "scoped-tls" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" [[package]] name = "scoped_threadpool" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "secret-service" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0903e5d5de19c5f0add54005dab183b555dca4eb12b023e967906284a9120c" dependencies = [ - "aes 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "block-modes 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dbus 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "hkdf 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)", - "num 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes 0.4.0", + "block-modes", + "dbus", + "hkdf 0.9.0", + "lazy_static", + "num", + "rand 0.6.5", + "sha2", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" dependencies = [ - "serde_derive 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "serde_json" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779" dependencies = [ - "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa", + "ryu", + "serde", ] [[package]] name = "serde_qs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9408a61dabe404c76cec504ec510f7d92f41dc0a9362a0db8ab73d141cfbf93f" dependencies = [ - "data-encoding 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding", + "percent-encoding", + "serde", + "thiserror", ] [[package]] name = "serde_repr" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "serde_urlencoded" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" dependencies = [ - "form_urlencoded 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "form_urlencoded", + "itoa", + "ryu", + "serde", ] [[package]] name = "sha1" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8" dependencies = [ - "block-buffer 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cpuid-bool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "cfg-if 1.0.0", + "cpuid-bool", + "digest", + "opaque-debug 0.3.0", ] [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "sluice" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e24ed1edc8e774f2ec098b0650eec82bfc7c59ddd16cd0e17797bdc92ce2bf1" dependencies = [ - "futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel", + "futures-core", + "futures-io", ] [[package]] name = "smallvec" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" [[package]] name = "socket2" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c29947abdee2a218277abeca306f25789c938e500ea5a9d4b12a5a504466902" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi", ] [[package]] name = "spinning_top" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36" dependencies = [ - "lock_api 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api", ] [[package]] name = "standback" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8" dependencies = [ - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check", ] [[package]] name = "stdweb" version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" dependencies = [ - "discard 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "stdweb-derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "stdweb-internal-macros 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "stdweb-internal-runtime 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", ] [[package]] name = "stdweb-derive" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", ] [[package]] name = "stdweb-internal-macros" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" dependencies = [ - "base-x 0.2.8 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", ] [[package]] name = "stdweb-internal-runtime" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "strum" version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89a286a7e3b5720b9a477b23253bc50debac207c8d21505f8e70b36792f11b5" [[package]] name = "strum_macros" version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e61bb0be289045cb80bfce000512e32d09f8337e54c186725da381377ad1f8d5" 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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "subtle" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" [[package]] name = "surf" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7189c787d96fe18fef704950de76d590022d9d70858a4a201e1f07a0666882ea" dependencies = [ - "async-std 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "async-trait 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.26 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "http-client 6.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http-types 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", + "async-std", + "async-trait", + "cfg-if 0.1.10", + "encoding_rs", + "futures-util", + "http-client", + "http-types", + "log", + "mime_guess", + "once_cell", + "pin-project-lite 0.1.11", + "serde", + "serde_json", + "web-sys", ] [[package]] name = "syn" -version = "1.0.48" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8833e20724c24de12bbaba5ad230ea61c3eafb05b881c7c9d3cfe8638b187e68" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] name = "system-deps" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4170ccf11383925644a45f4fd3bbeb86c9d1d6c85248ec9f77b382d042ed55" dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "strum 0.19.5 (registry+https://github.com/rust-lang/crates.io-index)", - "strum_macros 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.22 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "heck", + "pkg-config", + "strum", + "strum_macros", + "thiserror", + "toml", + "version-compare", ] [[package]] name = "termcolor" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" dependencies = [ - "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "thiserror" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" dependencies = [ - "thiserror-impl 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "thread_local" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "tiff" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abeb4e3f32a8973722c0254189e6890358e72b1bf11becb287ee0b23c595a41d" dependencies = [ - "jpeg-decoder 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "weezl 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder", + "miniz_oxide 0.4.3", + "weezl", ] [[package]] name = "time" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" dependencies = [ - "const_fn 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "standback 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "stdweb 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "time-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros", + "version_check", + "winapi", ] [[package]] name = "time-macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" dependencies = [ - "proc-macro-hack 0.5.19 (registry+https://github.com/rust-lang/crates.io-index)", - "time-macros-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "time-macros-impl", ] [[package]] name = "time-macros-impl" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" dependencies = [ - "proc-macro-hack 0.5.19 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "standback 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn", ] [[package]] name = "tinyvec" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" dependencies = [ - "tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec_macros", ] [[package]] name = "tinyvec_macros" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "toml" version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" dependencies = [ - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "tracing" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-attributes 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "log", + "pin-project-lite 0.2.0", + "tracing-attributes", + "tracing-core", ] [[package]] name = "tracing-attributes" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "tracing-core" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "tracing-futures" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" dependencies = [ - "pin-project 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.27", + "tracing", ] [[package]] name = "typenum" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" [[package]] name = "unicase" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" dependencies = [ - "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" dependencies = [ - "tinyvec 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" [[package]] name = "unicode-xid" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "universal-hash" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" dependencies = [ - "generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle", ] [[package]] name = "url" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" dependencies = [ - "form_urlencoded 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", + "form_urlencoded", + "idna", + "matches", + "percent-encoding", + "serde", ] [[package]] name = "vcpkg" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" [[package]] name = "vec-arena" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" [[package]] name = "version-compare" version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" [[package]] name = "version_check" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "waker-fn" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" dependencies = [ - "bumpalo 3.4.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.11 (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.7 (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.68 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe9756085a84584ee9457a002b7cdfe0bfff169f45d2591d8be1345a6780e35" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" dependencies = [ - "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "quote", + "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" dependencies = [ - "proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.7 (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.68 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" dependencies = [ - "js-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys", + "wasm-bindgen", ] [[package]] name = "weezl" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2bb9fc8309084dd7cd651336673844c1d47f8ef6d2091ec160b27f5c4aa277" [[package]] name = "wepoll-sys" version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" dependencies = [ - "cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "zbar-rust" version = "0.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "656722fbc8aea14448b74c9116ce5e4e156f04be85453bccb382445019f4a94c" dependencies = [ - "enum-ordinalize 3.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", + "enum-ordinalize", + "libc", + "pkg-config", ] [[package]] name = "zbus" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f1803d7af14e3cddc5c1511b05af4bda27f89d8387e5e1aa3a7b918639cb18" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "derivative 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "enumflags2 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped-tls 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_repr 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "zbus_macros 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "zvariant 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "derivative", + "enumflags2", + "fastrand", + "nix", + "once_cell", + "scoped-tls", + "serde", + "serde_repr", + "zbus_macros", + "zvariant", ] [[package]] name = "zbus_macros" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03273fa8aec65ed1be7026f58f92b90ecea09e622103718e9300591e21e24711" dependencies = [ - "proc-macro-crate 0.1.5 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "zvariant" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8bb578d9efd69a950d6061d12a9359ea5b2e961ad4dee10f25ccd4bc2201a4" dependencies = [ - "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "enumflags2 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)", - "zvariant_derive 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "enumflags2", + "serde", + "zvariant_derive", ] [[package]] name = "zvariant_derive" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f327c66f7a22695719b1cf26ae671081a9c47f1c7fa6d79209039f6ad0f6acd" dependencies = [ - "proc-macro-crate 0.1.5 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] - -[metadata] -"checksum adler 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" -"checksum adler32 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -"checksum aead 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" -"checksum aes 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7001367fde4c768a19d1029f0a8be5abd9308e1119846d5bd9ad26297b8faf5" -"checksum aes 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" -"checksum aes-gcm 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" -"checksum aes-soft 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4925647ee64e5056cf231608957ce7c81e12d6d6e316b9ce1404778cc1d35fa7" -"checksum aes-soft 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e8bdbc97ba3854ecf597a3b69d7bd30a719dee72d22ce6313c84dbf2c8f2694" -"checksum aesni 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" -"checksum aesni 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d050d39b0b7688b3a3254394c3e30a9d66c41dcf9b05b0e2dbdc623f6505d264" -"checksum aho-corasick 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" -"checksum anyhow 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" -"checksum ashpd 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05092d6c609057712953f07e974752926ec8fcf5feed2782e9ed70a2ea0a2304" -"checksum async-channel 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" -"checksum async-executor 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" -"checksum async-global-executor 1.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "73079b49cd26b8fd5a15f68fc7707fc78698dc2a3d61430f2a7a9430230dfa04" -"checksum async-io 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40a0b2bb8ae20fede194e779150fe283f65a4a08461b496de546ec366b174ad9" -"checksum async-mutex 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" -"checksum async-std 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a7e82538bc65a25dbdff70e4c5439d52f068048ab97cdea0acd73f131594caa1" -"checksum async-task 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" -"checksum async-trait 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0" -"checksum atomic-waker 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" -"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum autocfg 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" -"checksum base-x 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" -"checksum base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" -"checksum base64 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" -"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 block-buffer 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -"checksum block-cipher 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fa136449e765dc7faa244561ccae839c394048667929af599b5d931ebe7b7f10" -"checksum block-modes 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7143fa8aadf0a3d8140f3f558063dcfc1b3205e5e837ad59485140f1575ae8" -"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -"checksum blocking 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" -"checksum bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum bytemuck 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" -"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" -"checksum bytes 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" -"checksum cache-padded 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" -"checksum cairo-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum cairo-sys-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum cc 1.0.62 (registry+https://github.com/rust-lang/crates.io-index)" = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -"checksum cipher 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cloudabi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" -"checksum cmake 0.1.45 (registry+https://github.com/rust-lang/crates.io-index)" = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" -"checksum color_quant 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -"checksum concurrent-queue 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" -"checksum const_fn 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" -"checksum cookie 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)" = "784ad0fbab4f3e9cef09f20e0aea6000ae08d2cb98ac4c0abc53df18803d702f" -"checksum cpuid-bool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" -"checksum crc32fast 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" -"checksum crossbeam-channel 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" -"checksum crossbeam-deque 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" -"checksum crossbeam-epoch 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec0f606a85340376eef0d6d8fec399e6d4a544d648386c6645eb6d0653b27d9f" -"checksum crossbeam-utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec91540d98355f690a86367e566ecad2e9e579f230230eb7c21398372be73ea5" -"checksum crypto-mac 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" -"checksum crypto-mac 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -"checksum ctr 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" -"checksum curl 0.4.34 (registry+https://github.com/rust-lang/crates.io-index)" = "e268162af1a5fe89917ae25ba3b0a77c8da752bdc58e7dbb4f15b91fbd33756e" -"checksum curl-sys 0.4.38+curl-7.73.0 (registry+https://github.com/rust-lang/crates.io-index)" = "498ecfb4f59997fd40023d62a9f1e506e768b2baeb59a1d311eb9751cdcd7e3f" -"checksum data-encoding 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "993a608597367c6377b258c25d7120740f00ed23a2252b729b1932dd7866f908" -"checksum dbus 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4a0c10ea61042b7555729ab0608727bbbb06ce709c11e6047cfa4e10f6d052d" -"checksum deflate 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" -"checksum derivative 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" -"checksum diesel 1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2de9deab977a153492a1468d1b1c0662c1cf39e5ea87d0c060ecd59ef18d8c" -"checksum diesel_derives 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "45f5098f628d02a7a0f68ddba586fb61e80edec3bdc1be3b921f4ceec60858d3" -"checksum diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3cde8413353dc7f5d72fa8ce0b99a560a359d2c5ef1e5817ca731cd9008f4c" -"checksum digest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -"checksum discard 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" -"checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" -"checksum encoding_rs 0.8.26 (registry+https://github.com/rust-lang/crates.io-index)" = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" -"checksum enum-ordinalize 3.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1676e1daadfd216bda88d3a6fedd1bf53b829a085f5cc4d81c6f3054f50ef983" -"checksum enumflags2 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0" -"checksum enumflags2_derive 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" -"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -"checksum event-listener 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" -"checksum fastrand 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" -"checksum flume 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d9e818efa7776f4dd7df0e542f877f7a5a87bddd6a1a10f59a7732b71ffb9d55" -"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -"checksum form_urlencoded 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" -"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 futures 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" -"checksum futures-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" -"checksum futures-core 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" -"checksum futures-executor 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" -"checksum futures-io 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" -"checksum futures-lite 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" -"checksum futures-macro 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" -"checksum futures-sink 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" -"checksum futures-task 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" -"checksum futures-util 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" -"checksum gdk-pixbuf 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum gdk-pixbuf-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum gdk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)" = "" -"checksum gdk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)" = "" -"checksum generic-array 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -"checksum getrandom 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" -"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 ghash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" -"checksum gif 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02efba560f227847cb41463a7395c514d127d4f74fff12ef0137fff1b84b96c4" -"checksum gio 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum gio-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum glib 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum glib-macros 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum glib-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum gloo-timers 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" -"checksum gobject-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum graphene-rs 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum graphene-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum gsk4 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)" = "" -"checksum gsk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)" = "" -"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-rs)" = "" -"checksum gtk4-sys 0.1.0 (git+https://github.com/gtk-rs/gtk4-rs)" = "" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum hermit-abi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" -"checksum hkdf 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" -"checksum hkdf 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe1149865383e4526a43aee8495f9a325f0b806c63ce6427d06336a590abbbc9" -"checksum hmac 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -"checksum hmac 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -"checksum http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" -"checksum http-client 6.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "010092b71b94ee49293995625ce7a607778b8b4099c8088fa84fd66bd3e0f21c" -"checksum http-types 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f316f6a06306570e899238d3b85375f350cfceda60ec47807c4164d6e169e58" -"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -"checksum image 0.23.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b4f0a8345b33b082aedec2f4d7d4a926b845cee184cbe78b703413066564431b" -"checksum infer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" -"checksum instant 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" -"checksum isahc 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)" = "80aafab09693e9fa74b76ef207c55dc1cba5d9d5dc6dcc1b6a96d008a98000e9" -"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -"checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" -"checksum jpeg-decoder 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "cc797adac5f083b8ff0ca6f6294a999393d76e197c36488e2ef732c4715f6fa3" -"checksum js-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)" = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" -"checksum kv-log-macro 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" -"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 libnghttp2-sys 0.1.4+1.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1" -"checksum libsqlite3-sys 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1e704a02bcaecd4a08b93a23f6be59d0bd79cd161e0963e9499165a0a35df7bd" -"checksum libz-sys 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" -"checksum locale_config 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" -"checksum lock_api 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" -"checksum log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" -"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.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" -"checksum memoffset 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -"checksum migrations_internals 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b4fc84e4af020b837029e017966f86a1c2d5e83e64b589963d5047525995860" -"checksum migrations_macros 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9753f12909fd8d923f75ae5c3258cae1ed3c8ec052e1b38c93c21a6d157f789c" -"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" -"checksum mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" -"checksum miniz_oxide 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" -"checksum miniz_oxide 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" -"checksum nb-connect 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998" -"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" -"checksum num 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" -"checksum num-bigint 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5e9a41747ae4633fce5adffb4d2e81ffc5e89593cb19917f8fb2cc5ff76507bf" -"checksum num-complex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5" -"checksum num-integer 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -"checksum num-iter 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" -"checksum num-rational 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" -"checksum num-traits 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -"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.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum opaque-debug 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.58 (registry+https://github.com/rust-lang/crates.io-index)" = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" -"checksum pango 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum pango-sys 0.13.0 (git+https://github.com/gtk-rs/gtk-rs)" = "" -"checksum parking 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" -"checksum parking_lot 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733" -"checksum parking_lot_core 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" -"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -"checksum pin-project 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" -"checksum pin-project 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" -"checksum pin-project-internal 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" -"checksum pin-project-internal 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" -"checksum pin-project-lite 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" -"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -"checksum pkg-config 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" -"checksum png 0.16.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" -"checksum polling 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" -"checksum polyval 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a5884790f1ce3553ad55fec37b5aaac5882e0e845a2612df744d6c85c9bf046c" -"checksum ppv-lite86 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" -"checksum pretty_env_logger 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" -"checksum proc-macro-crate 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -"checksum proc-macro-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.19 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -"checksum proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" -"checksum proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -"checksum quick-xml 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd" -"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -"checksum r2d2 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "545c5bc2b880973c9c10e4067418407a0ccaa3091781d1671d46eb35107cb26f" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rayon 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" -"checksum rayon-core 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" -"checksum regex 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" -"checksum regex-syntax 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" -"checksum schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -"checksum scheduled-thread-pool 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f74fd1204073fa02d5d5d68bec8021be4c38690b61264b2fdb48083d0e7d7" -"checksum scoped-tls 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" -"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" -"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -"checksum secret-service 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe0903e5d5de19c5f0add54005dab183b555dca4eb12b023e967906284a9120c" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)" = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" -"checksum serde_derive 1.0.117 (registry+https://github.com/rust-lang/crates.io-index)" = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" -"checksum serde_json 1.0.59 (registry+https://github.com/rust-lang/crates.io-index)" = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" -"checksum serde_qs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9408a61dabe404c76cec504ec510f7d92f41dc0a9362a0db8ab73d141cfbf93f" -"checksum serde_repr 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76" -"checksum serde_urlencoded 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum sluice 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e24ed1edc8e774f2ec098b0650eec82bfc7c59ddd16cd0e17797bdc92ce2bf1" -"checksum smallvec 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" -"checksum socket2 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "7fd8b795c389288baa5f355489c65e71fd48a02104600d15c4cfbc561e9e429d" -"checksum spinning_top 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36" -"checksum standback 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f4e0831040d2cf2bdfd51b844be71885783d489898a192f254ae25d57cce725c" -"checksum stdweb 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" -"checksum stdweb-derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -"checksum stdweb-internal-macros 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" -"checksum stdweb-internal-runtime 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" -"checksum strum 0.19.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b89a286a7e3b5720b9a477b23253bc50debac207c8d21505f8e70b36792f11b5" -"checksum strum_macros 0.19.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e61bb0be289045cb80bfce000512e32d09f8337e54c186725da381377ad1f8d5" -"checksum subtle 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" -"checksum surf 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7189c787d96fe18fef704950de76d590022d9d70858a4a201e1f07a0666882ea" -"checksum syn 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" -"checksum system-deps 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab4170ccf11383925644a45f4fd3bbeb86c9d1d6c85248ec9f77b382d042ed55" -"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" -"checksum thiserror 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" -"checksum thiserror-impl 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" -"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -"checksum tiff 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "abeb4e3f32a8973722c0254189e6890358e72b1bf11becb287ee0b23c595a41d" -"checksum time 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)" = "55b7151c9065e80917fbf285d9a5d1432f60db41d170ccafc749a136b41a93af" -"checksum time-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" -"checksum time-macros-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" -"checksum tinyvec 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b78a366903f506d2ad52ca8dc552102ffdd3e937ba8a227f024dc1d1eae28575" -"checksum tinyvec_macros 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" -"checksum toml 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" -"checksum tracing 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" -"checksum tracing-attributes 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" -"checksum tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -"checksum tracing-futures 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" -"checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" -"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b7f98e67a4d84f730d343392f9bfff7d21e3fca562b9cb7a43b768350beeddc6" -"checksum unicode-segmentation 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db8716a166f290ff49dabc18b44aa407cb7c6dbe1aa0971b44b8a24b0ca35aae" -"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" -"checksum universal-hash 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" -"checksum url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" -"checksum vcpkg 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" -"checksum vec-arena 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" -"checksum version-compare 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" -"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum waker-fn 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -"checksum wasm-bindgen 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" -"checksum wasm-bindgen-backend 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" -"checksum wasm-bindgen-futures 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)" = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" -"checksum wasm-bindgen-macro 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" -"checksum wasm-bindgen-macro-support 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" -"checksum wasm-bindgen-shared 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" -"checksum web-sys 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" -"checksum weezl 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2bb9fc8309084dd7cd651336673844c1d47f8ef6d2091ec160b27f5c4aa277" -"checksum wepoll-sys 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" -"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum zbar-rust 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "656722fbc8aea14448b74c9116ce5e4e156f04be85453bccb382445019f4a94c" -"checksum zbus 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2f1803d7af14e3cddc5c1511b05af4bda27f89d8387e5e1aa3a7b918639cb18" -"checksum zbus_macros 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03273fa8aec65ed1be7026f58f92b90ecea09e622103718e9300591e21e24711" -"checksum zvariant 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc8bb578d9efd69a950d6061d12a9359ea5b2e961ad4dee10f25ccd4bc2201a4" -"checksum zvariant_derive 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f327c66f7a22695719b1cf26ae671081a9c47f1c7fa6d79209039f6ad0f6acd" diff --git a/Cargo.toml b/Cargo.toml index 2854426..d100ca8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,7 @@ surf = "2.1" url = "2.1" zbar-rust = "0.0" secret-service = "1.1" +once_cell = "1.5" [dependencies.gtk] git = "https://github.com/gtk-rs/gtk4-rs" diff --git a/data/resources.gresource.xml b/data/resources.gresource.xml index 2ea0ef2..cc58d81 100644 --- a/data/resources.gresource.xml +++ b/data/resources.gresource.xml @@ -15,7 +15,7 @@ resources/ui/shortcuts.ui about_dialog.ui - window.ui + window.ui preferences.ui preferences_password_page.ui resources/ui/preferences_provider_page.ui diff --git a/data/resources/ui/account_add.ui b/data/resources/ui/account_add.ui index 06a2ae8..e8a1833 100644 --- a/data/resources/ui/account_add.ui +++ b/data/resources/ui/account_add.ui @@ -1,11 +1,10 @@ - + 2 1 diff --git a/data/resources/ui/account_row.ui b/data/resources/ui/account_row.ui index 9e1c319..aa75727 100644 --- a/data/resources/ui/account_row.ui +++ b/data/resources/ui/account_row.ui @@ -10,7 +10,7 @@ account.delete - + diff --git a/data/resources/ui/preferences.ui.in b/data/resources/ui/preferences.ui.in index 21d84ab..b7ccd2c 100644 --- a/data/resources/ui/preferences.ui.in +++ b/data/resources/ui/preferences.ui.in @@ -6,7 +6,7 @@ 1 10 - + diff --git a/data/resources/ui/preferences_password_page.ui.in b/data/resources/ui/preferences_password_page.ui.in index 2970b66..4a52307 100644 --- a/data/resources/ui/preferences_password_page.ui.in +++ b/data/resources/ui/preferences_password_page.ui.in @@ -1,6 +1,6 @@ - + GTK_SIZE_GROUP_HORIZONTAL diff --git a/data/resources/ui/provider_row.ui b/data/resources/ui/provider_row.ui index 89a88ac..3db7b57 100644 --- a/data/resources/ui/provider_row.ui +++ b/data/resources/ui/provider_row.ui @@ -1,6 +1,6 @@ - + diff --git a/data/resources/ui/providers_list.ui.in b/data/resources/ui/providers_list.ui.in index 636edfb..f72f411 100644 --- a/data/resources/ui/providers_list.ui.in +++ b/data/resources/ui/providers_list.ui.in @@ -1,6 +1,6 @@ - + diff --git a/data/resources/ui/window.ui.in b/data/resources/ui/window.ui.in index 34d2b60..2180ee8 100644 --- a/data/resources/ui/window.ui.in +++ b/data/resources/ui/window.ui.in @@ -18,157 +18,161 @@ app.about - - False + diff --git a/src/application.rs b/src/application.rs index 245b23a..fc91814 100644 --- a/src/application.rs +++ b/src/application.rs @@ -1,7 +1,7 @@ use crate::config; use crate::helpers::Keyring; use crate::models::{Account, Provider, ProvidersModel}; -use crate::widgets::{AddAccountDialog, PreferencesWindow, View, Window, WindowPrivate}; +use crate::widgets::{AccountAddDialog, PreferencesWindow, View, Window}; use gio::prelude::*; use glib::subclass::prelude::*; use glib::{subclass, WeakRef}; @@ -95,12 +95,12 @@ impl ObjectImpl for ApplicationPrivate { } } - fn get_property(&self, _obj: &Self::Type, id: usize) -> Result { + fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value { let prop = &PROPERTIES[id]; match *prop { - subclass::Property("locked", ..) => Ok(self.locked.get().to_value()), - subclass::Property("can-be-locked", ..) => Ok(self.can_be_locked.get().to_value()), + subclass::Property("locked", ..) => self.locked.get().to_value(), + subclass::Property("can-be-locked", ..) => self.can_be_locked.get().to_value(), _ => unimplemented!(), } } @@ -127,11 +127,11 @@ impl ApplicationImpl for ApplicationPrivate { action!( app, "preferences", - clone!(@strong app, @weak self.model as model => move |_,_| { + clone!(@strong app => move |_,_| { let window = app.get_active_window().unwrap(); - let preferences = PreferencesWindow::new(model); - preferences.widget.set_transient_for(Some(&window)); - preferences.widget.show(); + let preferences = PreferencesWindow::new(); + preferences.set_transient_for(Some(&window)); + preferences.show(); }) ); @@ -249,23 +249,21 @@ impl Application { match action { Action::OpenAddAccountDialog => { - let dialog = AddAccountDialog::new(self_.model.clone(), self_.sender.clone()); - dialog.widget.set_transient_for(Some(&active_window)); - dialog.widget.show(); + let dialog = AccountAddDialog::new(self_.model.clone(), self_.sender.clone()); + dialog.set_transient_for(Some(&active_window)); + dialog.show(); } Action::AccountCreated(account, provider) => { - let win_ = active_window.downcast_ref::().unwrap(); - let priv_ = WindowPrivate::from_instance(win_); + let win = active_window.downcast_ref::().unwrap(); self_.model.add_account(&account, &provider); - priv_.providers.refilter(); + win.providers().refilter(); } Action::AccountRemoved(account) => { - let win_ = active_window.downcast_ref::().unwrap(); - let priv_ = WindowPrivate::from_instance(win_); + let win = active_window.downcast_ref::().unwrap(); self_.model.remove_account(&account); - priv_.providers.refilter(); + win.providers().refilter(); } Action::SetView(view) => { let win_ = active_window.downcast_ref::().unwrap(); diff --git a/src/helpers/qrcode.rs b/src/helpers/qrcode.rs index 98a3407..f1e9bbc 100644 --- a/src/helpers/qrcode.rs +++ b/src/helpers/qrcode.rs @@ -46,7 +46,7 @@ pub(crate) fn scan(screenshot: &gio::File) -> Result { let img = image::load_from_memory(&data)?; let (width, height) = img.dimensions(); - let img_data: Vec = img.to_luma().to_vec(); + let img_data: Vec = img.to_luma8().to_vec(); let mut scanner = ZBarImageScanner::new(); diff --git a/src/models/account.rs b/src/models/account.rs index 2b86079..247e4f0 100644 --- a/src/models/account.rs +++ b/src/models/account.rs @@ -122,14 +122,14 @@ impl ObjectImpl for AccountPriv { } } - fn get_property(&self, _obj: &Self::Type, id: usize) -> Result { + fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value { let prop = &PROPERTIES[id]; match *prop { - subclass::Property("id", ..) => Ok(self.id.get().to_value()), - subclass::Property("name", ..) => Ok(self.name.borrow().to_value()), - subclass::Property("token-id", ..) => Ok(self.token_id.borrow().to_value()), - subclass::Property("provider-id", ..) => Ok(self.provider_id.get().to_value()), + subclass::Property("id", ..) => self.id.get().to_value(), + subclass::Property("name", ..) => self.name.borrow().to_value(), + subclass::Property("token-id", ..) => self.token_id.borrow().to_value(), + subclass::Property("provider-id", ..) => self.provider_id.get().to_value(), _ => unimplemented!(), } } diff --git a/src/models/provider.rs b/src/models/provider.rs index 48058d7..a50aa85 100644 --- a/src/models/provider.rs +++ b/src/models/provider.rs @@ -197,17 +197,17 @@ impl ObjectImpl for ProviderPriv { } } - fn get_property(&self, _obj: &Self::Type, id: usize) -> Result { + fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value { let prop = &PROPERTIES[id]; match *prop { - subclass::Property("id", ..) => Ok(self.id.get().to_value()), - subclass::Property("name", ..) => Ok(self.name.borrow().to_value()), - subclass::Property("period", ..) => Ok(self.period.get().to_value()), - subclass::Property("algorithm", ..) => Ok(self.algorithm.borrow().to_value()), - subclass::Property("website", ..) => Ok(self.website.borrow().to_value()), - subclass::Property("help-url", ..) => Ok(self.help_url.borrow().to_value()), - subclass::Property("image-uri", ..) => Ok(self.image_uri.borrow().to_value()), + subclass::Property("id", ..) => self.id.get().to_value(), + subclass::Property("name", ..) => self.name.borrow().to_value(), + subclass::Property("period", ..) => self.period.get().to_value(), + subclass::Property("algorithm", ..) => self.algorithm.borrow().to_value(), + subclass::Property("website", ..) => self.website.borrow().to_value(), + subclass::Property("help-url", ..) => self.help_url.borrow().to_value(), + subclass::Property("image-uri", ..) => self.image_uri.borrow().to_value(), _ => unimplemented!(), } } diff --git a/src/widgets/accounts/add.rs b/src/widgets/accounts/add.rs index 13cd079..9b1e631 100644 --- a/src/widgets/accounts/add.rs +++ b/src/widgets/accounts/add.rs @@ -3,61 +3,155 @@ use crate::helpers::qrcode; use crate::models::{Account, Provider, ProvidersModel}; use anyhow::Result; use gio::prelude::*; +use gio::{subclass::ObjectSubclass, ActionMapExt}; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; use glib::{signal::Inhibit, Receiver, Sender}; -use gtk::prelude::*; +use gtk::{prelude::*, CompositeTemplate}; use libhandy::ActionRowExt; +use once_cell::sync::OnceCell; use std::cell::RefCell; use std::rc::Rc; -pub enum AddAccountAction { +pub enum AccountAddAction { SetIcon(gio::File), SetProvider(Provider), Save, ScanQR, } -pub struct AddAccountDialog { - pub widget: libhandy::Window, - builder: gtk::Builder, - global_sender: Sender, - sender: Sender, - receiver: RefCell>>, - model: Rc, - selected_provider: Rc>>, - actions: gio::SimpleActionGroup, +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; + + #[derive(CompositeTemplate)] + pub struct AccountAddDialog { + pub global_sender: OnceCell>, + pub sender: Sender, + pub receiver: RefCell>>, + pub model: OnceCell>, + pub selected_provider: OnceCell, + pub actions: gio::SimpleActionGroup, + + #[template_child(id = "username_entry")] + pub username_entry: TemplateChild, + + #[template_child(id = "token_entry")] + pub token_entry: TemplateChild, + + #[template_child(id = "more_list")] + pub more_list: TemplateChild, + + #[template_child(id = "period_label")] + pub period_label: TemplateChild, + + #[template_child(id = "provider_entry")] + pub provider_entry: TemplateChild, + + #[template_child(id = "algorithm_label")] + pub algorithm_label: TemplateChild, + + #[template_child(id = "provider_website_row")] + pub provider_website_row: TemplateChild, + + #[template_child(id = "provider_help_row")] + pub provider_help_row: TemplateChild, + + #[template_child(id = "provider_completion")] + pub provider_completion: TemplateChild, + + #[template_child(id = "image")] + pub image: TemplateChild, + + #[template_child(id = "spinner")] + pub spinner: TemplateChild, + + #[template_child(id = "image_stack")] + pub image_stack: TemplateChild, + } + + impl ObjectSubclass for AccountAddDialog { + const NAME: &'static str = "AccountAddDialog"; + type Type = super::AccountAddDialog; + type ParentType = libhandy::Window; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; + + glib_object_subclass!(); + + fn new() -> Self { + let (sender, r) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); + let receiver = RefCell::new(Some(r)); + + let actions = gio::SimpleActionGroup::new(); + + Self { + global_sender: OnceCell::new(), + sender, + receiver, + actions, + model: OnceCell::new(), + selected_provider: OnceCell::new(), + token_entry: TemplateChild::default(), + username_entry: TemplateChild::default(), + more_list: TemplateChild::default(), + period_label: TemplateChild::default(), + provider_entry: TemplateChild::default(), + algorithm_label: TemplateChild::default(), + provider_website_row: TemplateChild::default(), + provider_help_row: TemplateChild::default(), + provider_completion: TemplateChild::default(), + image: TemplateChild::default(), + spinner: TemplateChild::default(), + image_stack: TemplateChild::default(), + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/account_add.ui"); + Self::bind_template_children(klass); + } + } + + impl ObjectImpl for AccountAddDialog { + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + self.parent_constructed(obj); + } + } + impl WidgetImpl for AccountAddDialog {} + impl WindowImpl for AccountAddDialog {} + impl libhandy::subclass::window::WindowImpl for AccountAddDialog {} +} +glib_wrapper! { + pub struct AccountAddDialog(ObjectSubclass) @extends gtk::Widget, gtk::Window, libhandy::Window; } -impl AddAccountDialog { - pub fn new(model: Rc, global_sender: Sender) -> Rc { - let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/account_add.ui"); - get_widget!(builder, libhandy::Window, add_dialog); +impl AccountAddDialog { + pub fn new(model: Rc, global_sender: Sender) -> Self { + let dialog = glib::Object::new(Self::static_type(), &[]) + .expect("Failed to create AccountAddDialog") + .downcast::() + .expect("Created object is of wrong type"); - let (sender, r) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); - let receiver = RefCell::new(Some(r)); - let actions = gio::SimpleActionGroup::new(); + let self_ = imp::AccountAddDialog::from_instance(&dialog); + self_.model.set(model); + self_.global_sender.set(global_sender); - let add_account_dialog = Rc::new(Self { - widget: add_dialog, - builder, - global_sender, - sender, - receiver, - actions, - model, - selected_provider: Rc::new(RefCell::new(None)), - }); - - add_account_dialog.setup_actions(); - add_account_dialog.setup_signals(); - add_account_dialog.setup_widgets(add_account_dialog.clone()); - add_account_dialog + dialog.setup_actions(); + dialog.setup_signals(); + dialog.setup_widgets(); + dialog } fn setup_signals(&self) { - get_widget!(self.builder, gtk::Entry, username_entry); - get_widget!(self.builder, gtk::Entry, token_entry); + let self_ = imp::AccountAddDialog::from_instance(self); - let validate_entries = clone!(@weak username_entry, @weak token_entry, @strong self.actions as actions => move |_: >k::Entry| { + let username_entry = self_.username_entry.get(); + let token_entry = self_.token_entry.get(); + + let validate_entries = clone!(@weak username_entry, @weak token_entry, @strong self_.actions as actions => move |_: >k::Entry| { let username = username_entry.get_text().unwrap(); let token = token_entry.get_text().unwrap(); @@ -70,27 +164,33 @@ impl AddAccountDialog { token_entry.connect_changed(validate_entries); let event_controller = gtk::EventControllerKey::new(); - event_controller.connect_key_pressed(clone!(@weak self.widget as widget => @default-return Inhibit(false), move |_, k, _, _| { - if k == 65307 { - widget.close(); - } - Inhibit(false) - })); - self.widget.add_controller(&event_controller); + event_controller.connect_key_pressed( + clone!(@weak self as widget => @default-return Inhibit(false), move |_, k, _, _| { + if k == 65307 { + widget.close(); + } + Inhibit(false) + }), + ); + self.add_controller(&event_controller); } fn scan_qr(&self) -> Result<()> { + let self_ = imp::AccountAddDialog::from_instance(self); + let token_entry = self_.token_entry.get(); + let username_entry = self_.username_entry.get(); + qrcode::screenshot_area( - clone!(@strong self.builder as builder, @strong self.model as model, - @strong self.sender as sender => move |screenshot| { + clone!(@weak token_entry, @weak username_entry, @strong self_.model as model, + @strong self_.sender as sender => move |screenshot| { if let Ok(otpauth) = qrcode::scan(&gio::File::new_for_uri(&screenshot)) { - get_widget!(builder, gtk::Entry, @token_entry).set_text(&otpauth.token); + token_entry.set_text(&otpauth.token); if let Some(ref username) = otpauth.account { - get_widget!(builder, gtk::Entry, @username_entry).set_text(&username); + username_entry.set_text(&username); } if let Some(ref provider) = otpauth.issuer { - let provider = model.find_by_name(provider).unwrap(); - send!(sender, AddAccountAction::SetProvider(provider)); + let provider = model.get().unwrap().find_by_name(provider).unwrap(); + send!(sender, AccountAddAction::SetProvider(provider)); } } }), @@ -99,98 +199,100 @@ impl AddAccountDialog { } fn save(&self) -> Result<()> { - if let Some(provider) = self.selected_provider.borrow().clone() { - let username = get_widget!(self.builder, gtk::Entry, @username_entry) - .get_text() - .unwrap(); - let token = get_widget!(self.builder, gtk::Entry, @token_entry) - .get_text() - .unwrap(); + let self_ = imp::AccountAddDialog::from_instance(self); + + if let Some(provider) = self_.selected_provider.get().clone() { + let username = self_.username_entry.get().get_text().unwrap(); + let token = self_.token_entry.get().get_text().unwrap(); let account = Account::create(&username, &token, provider.id())?; send!( - self.global_sender, - Action::AccountCreated(account, provider) + self_.global_sender.get().unwrap(), + Action::AccountCreated(account, provider.clone()) ); } Ok(()) } fn set_provider(&self, provider: Provider) { - get_widget!(self.builder, gtk::ListBox, @more_list).show(); - get_widget!(self.builder, gtk::Entry, @provider_entry).set_text(&provider.name()); - get_widget!(self.builder, gtk::Label, @period_label) - .set_text(&format!("{} seconds", provider.period())); - get_widget!(self.builder, gtk::Label, @algorithm_label) + let self_ = imp::AccountAddDialog::from_instance(self); + + self_.more_list.get().show(); + + self_.provider_entry.get().set_text(&provider.name()); + self_ + .period_label + .get() + .set_text(&provider.period().to_string()); + self_ + .algorithm_label + .get() .set_text(&provider.algorithm().to_locale_string()); if let Some(ref website) = provider.website() { - get_widget!(self.builder, libhandy::ActionRow, provider_website_row); - provider_website_row.set_subtitle(Some(website)); + self_.provider_website_row.get().set_subtitle(Some(website)); } if let Some(ref help_url) = provider.help_url() { - get_widget!(self.builder, libhandy::ActionRow, provider_help_row); - provider_help_row.set_subtitle(Some(help_url)); + self_.provider_help_row.get().set_subtitle(Some(help_url)); } - get_widget!(self.builder, gtk::Stack, @image_stack).set_visible_child_name("loading"); - get_widget!(self.builder, gtk::Spinner, @spinner).start(); + self_.image_stack.get().set_visible_child_name("loading"); + self_.spinner.get().start(); let p = provider.clone(); - let sender = self.sender.clone(); + let sender = self_.sender.clone(); spawn!(async move { if let Ok(file) = p.favicon().await { - send!(sender, AddAccountAction::SetIcon(file)); + send!(sender, AccountAddAction::SetIcon(file)); } }); - self.selected_provider.replace(Some(provider)); + self_.selected_provider.set(provider); } fn setup_actions(&self) { + let self_ = imp::AccountAddDialog::from_instance(self); action!( - self.actions, + self_.actions, "back", - clone!(@weak self.widget as dialog => move |_, _| { + clone!(@weak self as dialog => move |_, _| { dialog.destroy(); }) ); - action!( - self.actions, + self_.actions, "save", - clone!(@strong self.sender as sender => move |_, _| { - send!(sender, AddAccountAction::Save); + clone!(@strong self_.sender as sender => move |_, _| { + send!(sender, AccountAddAction::Save); }) ); action!( - self.actions, + self_.actions, "scan-qr", - clone!(@strong self.sender as sender => move |_, _| { - send!(sender, AddAccountAction::ScanQR); + clone!(@strong self_.sender as sender => move |_, _| { + send!(sender, AccountAddAction::ScanQR); }) ); - self.widget.insert_action_group("add", Some(&self.actions)); - get_action!(self.actions, @save).set_enabled(false); + self.insert_action_group("add", Some(&self_.actions)); + get_action!(self_.actions, @save).set_enabled(false); } - fn setup_widgets(&self, dialog: Rc) { - let receiver = self.receiver.borrow_mut().take().unwrap(); + fn setup_widgets(&self) { + let self_ = imp::AccountAddDialog::from_instance(self); + let receiver = self_.receiver.borrow_mut().take().unwrap(); receiver.attach( None, - clone!(@strong dialog => move |action| dialog.do_action(action)), + clone!(@weak self as dialog => move |action| dialog.do_action(action)), ); - - get_widget!(self.builder, gtk::EntryCompletion, provider_completion); - provider_completion.set_model(Some(&self.model.completion_model())); - - get_widget!(self.builder, gtk::Entry, @token_entry); - - provider_completion.connect_match_selected( - clone!(@strong dialog, @strong self.model as model => move |_, store, iter| { + self_ + .provider_completion + .get() + .set_model(Some(&self_.model.get().unwrap().completion_model())); + self_.provider_completion.get().connect_match_selected( + clone!(@strong self as dialog, @strong self_.model as model => move |_, store, iter| { let provider_id = store.get_value(iter, 0). get_some::().unwrap(); - let provider = model.find_by_id(provider_id).unwrap(); + let provider = model.get().unwrap().find_by_id(provider_id).unwrap(); dialog.set_provider(provider); Inhibit(false) @@ -198,21 +300,21 @@ impl AddAccountDialog { ); } - fn do_action(&self, action: AddAccountAction) -> glib::Continue { + fn do_action(&self, action: AccountAddAction) -> glib::Continue { match action { - AddAccountAction::SetIcon(file) => { - get_widget!(self.builder, gtk::Image, @image) - .set_from_file(file.get_path().unwrap()); - get_widget!(self.builder, gtk::Spinner, @spinner).stop(); - get_widget!(self.builder, gtk::Stack, @image_stack).set_visible_child_name("image"); + AccountAddAction::SetIcon(file) => { + let self_ = imp::AccountAddDialog::from_instance(self); + self_.image.get().set_from_file(file.get_path().unwrap()); + self_.spinner.get().stop(); + self_.image_stack.get().set_visible_child_name("image"); } - AddAccountAction::SetProvider(p) => self.set_provider(p), - AddAccountAction::Save => { + AccountAddAction::SetProvider(p) => self.set_provider(p), + AccountAddAction::Save => { if self.save().is_ok() { - self.widget.close(); + self.close(); } } - AddAccountAction::ScanQR => { + AccountAddAction::ScanQR => { self.scan_qr(); } }; diff --git a/src/widgets/accounts/mod.rs b/src/widgets/accounts/mod.rs index 8e126fa..d098f29 100644 --- a/src/widgets/accounts/mod.rs +++ b/src/widgets/accounts/mod.rs @@ -1,5 +1,5 @@ mod add; mod row; -pub use self::add::AddAccountDialog; +pub use self::add::AccountAddDialog; pub use self::row::AccountRow; diff --git a/src/widgets/accounts/row.rs b/src/widgets/accounts/row.rs index 7e1fc0c..1cc3143 100644 --- a/src/widgets/accounts/row.rs +++ b/src/widgets/accounts/row.rs @@ -1,84 +1,161 @@ -use crate::application::Action; use crate::models::Account; -use gio::ActionMapExt; -use glib::Sender; -use gtk::prelude::*; +use gio::prelude::*; +use gio::{subclass::ObjectSubclass, ActionMapExt}; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; +use gtk::{prelude::*, CompositeTemplate}; +use std::cell::RefCell; +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; -pub struct AccountRow<'a> { - pub widget: gtk::ListBoxRow, - builder: gtk::Builder, - sender: Sender, - account: &'a Account, - actions: gio::SimpleActionGroup, -} + static PROPERTIES: [subclass::Property; 1] = [subclass::Property("account", |name| { + glib::ParamSpec::object( + name, + "Account", + "The account", + Account::static_type(), + glib::ParamFlags::READWRITE | glib::ParamFlags::CONSTRUCT_ONLY, + ) + })]; -impl<'a> AccountRow<'a> { - pub fn new(account: &'a Account, sender: Sender) -> Self { - let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/account_row.ui"); - get_widget!(builder, gtk::ListBoxRow, account_row); - let actions = gio::SimpleActionGroup::new(); - let row = Self { - widget: account_row, - builder, - sender, - account, - actions, - }; - row.init(); - row + #[derive(CompositeTemplate)] + pub struct AccountRow { + pub account: RefCell>, + pub actions: gio::SimpleActionGroup, + #[template_child(id = "name_label")] + pub name_label: TemplateChild, + #[template_child(id = "name_entry")] + pub name_entry: TemplateChild, + #[template_child(id = "edit_stack")] + pub edit_stack: TemplateChild, } - fn init(&self) { - self.widget - .insert_action_group("account", Some(&self.actions)); + impl ObjectSubclass for AccountRow { + const NAME: &'static str = "AccountRow"; + type Type = super::AccountRow; + type ParentType = gtk::ListBoxRow; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; - get_widget!(self.builder, gtk::Label, name_label); - get_widget!(self.builder, gtk::Entry, name_entry); + glib_object_subclass!(); - self.account - .bind_property("name", &name_label, "label") + fn new() -> Self { + let actions = gio::SimpleActionGroup::new(); + + Self { + actions, + name_label: TemplateChild::default(), + name_entry: TemplateChild::default(), + edit_stack: TemplateChild::default(), + account: RefCell::new(None), + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/account_row.ui"); + Self::bind_template_children(klass); + klass.install_properties(&PROPERTIES); + } + } + + impl ObjectImpl for AccountRow { + fn set_property(&self, _obj: &Self::Type, id: usize, value: &glib::Value) { + let prop = &PROPERTIES[id]; + + match *prop { + subclass::Property("account", ..) => { + let account = value + .get() + .expect("type conformity checked by `Object::set_property`"); + self.account.replace(account); + } + _ => unimplemented!(), + } + } + + fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value { + let prop = &PROPERTIES[id]; + match *prop { + subclass::Property("account", ..) => self.account.borrow().to_value(), + _ => unimplemented!(), + } + } + + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + obj.setup_actions(); + obj.setup_widgets(); + self.parent_constructed(obj); + } + } + impl WidgetImpl for AccountRow {} + impl ListBoxRowImpl for AccountRow {} +} + +glib_wrapper! { + pub struct AccountRow(ObjectSubclass) @extends gtk::Widget, gtk::ListBoxRow; +} + +impl AccountRow { + pub fn new(account: Account) -> Self { + glib::Object::new(Self::static_type(), &[("account", &account)]) + .expect("Failed to create AccountRow") + .downcast::() + .expect("Created object is of wrong type") + } + + fn account(&self) -> Account { + let account = self.get_property("account").unwrap(); + account.get::().unwrap().unwrap() + } + + fn setup_widgets(&self) { + let self_ = imp::AccountRow::from_instance(self); + self.account() + .bind_property("name", &self_.name_label.get(), "label") .flags(glib::BindingFlags::DEFAULT | glib::BindingFlags::SYNC_CREATE) .build(); - self.account - .bind_property("name", &name_entry, "text") + self.account() + .bind_property("name", &self_.name_entry.get(), "text") .flags(glib::BindingFlags::DEFAULT | glib::BindingFlags::SYNC_CREATE) .build(); - action!( - self.actions, - "delete", - clone!(@strong self.sender as sender, @strong self.account as account => move |_, _| { - send!(sender, Action::AccountRemoved(account.clone())); - }) + self_.name_entry.get().connect_changed( + clone!(@strong self_.actions as actions => move |entry| { + let name = entry.get_text().unwrap(); + get_action!(actions, @save).set_enabled(!name.is_empty()); + }), ); + } + fn setup_actions(&self) { + let self_ = imp::AccountRow::from_instance(self); + self.insert_action_group("account", Some(&self_.actions)); + action!(self_.actions, "delete", move |_, _| { + //send!(sender, Action::AccountRemoved(account.clone())); + }); + + let edit_stack = self_.edit_stack.get(); action!( - self.actions, + self_.actions, "edit", - clone!(@strong self.builder as builder => move |_, _| { - get_widget!(builder, gtk::Stack, edit_stack); + clone!(@weak edit_stack => move |_, _| { edit_stack.set_visible_child_name("edit"); }) ); + let name_entry = self_.name_entry.get(); action!( - self.actions, + self_.actions, "save", - clone!(@weak name_entry, - @strong self.account as account, - @strong self.builder as builder => move |_, _| { + clone!(@weak edit_stack, @weak name_entry => move |_, _| { let new_name = name_entry.get_text().unwrap(); - account.set_name(&new_name); - get_widget!(builder, gtk::Stack, edit_stack); edit_stack.set_visible_child_name("display"); }) ); - - name_entry.connect_changed(clone!(@strong self.actions as actions => move |entry| { - let name = entry.get_text().unwrap(); - get_action!(actions, @save).set_enabled(!name.is_empty()); - })); } } diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs index bb2722c..82cb76d 100644 --- a/src/widgets/mod.rs +++ b/src/widgets/mod.rs @@ -3,7 +3,7 @@ mod preferences; mod providers; mod window; -pub use self::accounts::AddAccountDialog; +pub use self::accounts::AccountAddDialog; pub use self::preferences::PreferencesWindow; pub use self::providers::ProvidersList; -pub use self::window::{View, Window, WindowPrivate}; +pub use self::window::{View, Window}; diff --git a/src/widgets/preferences/password_page.rs b/src/widgets/preferences/password_page.rs index 264d1a4..90333af 100644 --- a/src/widgets/preferences/password_page.rs +++ b/src/widgets/preferences/password_page.rs @@ -1,70 +1,131 @@ use crate::helpers::Keyring; -use gio::{ActionExt, ActionMapExt}; -use gtk::prelude::*; use std::cell::Cell; -use std::rc::Rc; -pub struct PasswordPage { - pub widget: gtk::Box, - builder: gtk::Builder, - actions: gio::SimpleActionGroup, - has_set_password: Cell, +use gio::prelude::*; +use gio::subclass::ObjectSubclass; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; +use gtk::{prelude::*, CompositeTemplate}; + +mod imp { + + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; + #[derive(CompositeTemplate)] + pub struct PasswordPage { + // actions: gio::SimpleActionGroup, + pub has_set_password: Cell, + + #[template_child(id = "current_password_entry")] + pub current_password_entry: TemplateChild, + + #[template_child(id = "password_entry")] + pub password_entry: TemplateChild, + + #[template_child(id = "confirm_password_entry")] + pub confirm_password_entry: TemplateChild, + + #[template_child(id = "current_password_row")] + pub current_password_row: TemplateChild, + } + + impl ObjectSubclass for PasswordPage { + const NAME: &'static str = "PasswordPage"; + type Type = super::PasswordPage; + type ParentType = gtk::Box; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; + + glib_object_subclass!(); + + fn new() -> Self { + let has_set_password = Keyring::has_set_password().unwrap_or_else(|_| false); + + Self { + has_set_password: Cell::new(has_set_password), + current_password_entry: TemplateChild::default(), + password_entry: TemplateChild::default(), + confirm_password_entry: TemplateChild::default(), + current_password_row: TemplateChild::default(), + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource( + "/com/belmoussaoui/Authenticator/preferences_password_page.ui", + ); + Self::bind_template_children(klass); + } + } + + impl ObjectImpl for PasswordPage { + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + obj.setup_widgets(); + obj.setup_actions(); + self.parent_constructed(obj); + } + } + + impl WidgetImpl for PasswordPage {} + impl BoxImpl for PasswordPage {} +} + +glib_wrapper! { + pub struct PasswordPage(ObjectSubclass) @extends gtk::Widget, gtk::Box; } impl PasswordPage { - pub fn new(actions: gio::SimpleActionGroup) -> Rc { - let builder = gtk::Builder::from_resource( - "/com/belmoussaoui/Authenticator/preferences_password_page.ui", - ); - get_widget!(builder, gtk::Box, password_page); - - let has_set_password = Keyring::has_set_password().unwrap_or_else(|_| false); - - let page = Rc::new(Self { - widget: password_page, - builder, - actions, - has_set_password: Cell::new(has_set_password), - }); - page.init(page.clone()); - page + pub fn new() -> Self { + glib::Object::new(Self::static_type(), &[]) + .expect("Failed to create PasswordPage") + .downcast::() + .expect("Created object is of wrong type") } fn validate(&self) { - get_widget!(self.builder, gtk::PasswordEntry, current_password_entry); - get_widget!(self.builder, gtk::PasswordEntry, password_entry); - get_widget!(self.builder, gtk::PasswordEntry, confirm_password_entry); + let self_ = imp::PasswordPage::from_instance(self); - let current_password = current_password_entry.get_text().unwrap(); - let password = password_entry.get_text().unwrap(); - let password_repeat = confirm_password_entry.get_text().unwrap(); + let current_password = self_.current_password_entry.get().get_text().unwrap(); + let password = self_.password_entry.get().get_text().unwrap(); + let password_repeat = self_.confirm_password_entry.get().get_text().unwrap(); - let is_valid = if self.has_set_password.get() { + let is_valid = if self_.has_set_password.get() { password_repeat == password && current_password != password && password != "" } else { password_repeat == password && password != "" }; - get_action!(self.actions, @save_password).set_enabled(is_valid); + // get_action!(self.actions, @save_password).set_enabled(is_valid); } - fn init(&self, page: Rc) { - get_widget!(self.builder, gtk::PasswordEntry, current_password_entry); - get_widget!(self.builder, gtk::PasswordEntry, password_entry); - get_widget!(self.builder, gtk::PasswordEntry, confirm_password_entry); - get_widget!(self.builder, libhandy::ActionRow, current_password_row); + fn setup_widgets(&self) { + let self_ = imp::PasswordPage::from_instance(self); - password_entry.connect_changed(clone!(@strong page => move |_| page.validate())); - confirm_password_entry.connect_changed(clone!(@strong page => move |_| page.validate())); + self_ + .password_entry + .get() + .connect_changed(clone!(@weak self as page=> move |_| page.validate())); + self_ + .confirm_password_entry + .get() + .connect_changed(clone!(@weak self as page => move |_| page.validate())); - if !self.has_set_password.get() { - current_password_row.hide(); + if !self_.has_set_password.get() { + self_.current_password_row.get().hide(); } else { - current_password_entry - .connect_changed(clone!(@strong page => move |_| page.validate())); + self_ + .current_password_entry + .get() + .connect_changed(clone!(@weak self as page => move |_| page.validate())); } + } - action!( + fn setup_actions(&self) { + let self_ = imp::PasswordPage::from_instance(self); + + /*action!( self.actions, "save_password", clone!(@strong page => move |_, _| { @@ -79,28 +140,27 @@ impl PasswordPage { page.reset(); }) ); - get_action!(self.actions, @save_password).set_enabled(false); - get_action!(self.actions, @reset_password).set_enabled(self.has_set_password.get()); + get_action!(self.actions, @reset_password).set_enabled(self.has_set_password.get());*/ } fn reset(&self) { if Keyring::reset_password().is_ok() { - get_action!(self.actions, @close_page).activate(None); - get_action!(self.actions, @save_password).set_enabled(false); - get_action!(self.actions, @reset_password).set_enabled(false); - get_widget!(self.builder, libhandy::ActionRow, @current_password_row).hide(); - self.has_set_password.set(false); + let self_ = imp::PasswordPage::from_instance(self); + + // get_action!(self.actions, @close_page).activate(None); + // get_action!(self.actions, @save_password).set_enabled(false); + // get_action!(self.actions, @reset_password).set_enabled(false); + self_.current_password_row.get().hide(); + self_.has_set_password.set(false); } } fn save(&self) { - get_widget!(self.builder, gtk::PasswordEntry, current_password_entry); - get_widget!(self.builder, gtk::PasswordEntry, password_entry); - get_widget!(self.builder, gtk::PasswordEntry, confirm_password_entry); + let self_ = imp::PasswordPage::from_instance(self); - let current_password = current_password_entry.get_text().unwrap(); - let password = password_entry.get_text().unwrap(); + let current_password = self_.current_password_entry.get().get_text().unwrap(); + let password = self_.password_entry.get().get_text().unwrap(); if Keyring::has_set_password().unwrap_or(false) { if !Keyring::is_current_password(¤t_password).unwrap_or(false) { @@ -109,14 +169,14 @@ impl PasswordPage { } if Keyring::set_password(&password).is_ok() { - get_widget!(self.builder, libhandy::ActionRow, @current_password_row).show(); - current_password_entry.set_text(""); - password_entry.set_text(""); - confirm_password_entry.set_text(""); - get_action!(self.actions, @save_password).set_enabled(false); - get_action!(self.actions, @reset_password).set_enabled(true); - get_action!(self.actions, @close_page).activate(None); - self.has_set_password.set(true); + self_.current_password_row.get().show(); + self_.current_password_entry.get().set_text(""); + self_.password_entry.get().set_text(""); + self_.confirm_password_entry.get().set_text(""); + // get_action!(self.actions, @save_password).set_enabled(false); + // get_action!(self.actions, @reset_password).set_enabled(true); + // get_action!(self.actions, @close_page).activate(None); + self_.has_set_password.set(true); } } } diff --git a/src/widgets/preferences/provider_page.rs b/src/widgets/preferences/provider_page.rs index 8a67e71..c192d1f 100644 --- a/src/widgets/preferences/provider_page.rs +++ b/src/widgets/preferences/provider_page.rs @@ -1,20 +1,17 @@ -use super::window::PreferencesAction; use crate::models::{Algorithm, Provider}; use glib::translate::ToGlib; -use glib::Sender; use gtk::prelude::*; -use libhandy::ComboRowExt; +use libhandy::{ComboRowExt, EnumListModelExt}; use std::rc::Rc; pub struct ProviderPage { pub widget: gtk::Box, builder: gtk::Builder, - sender: Sender, algorithms_model: libhandy::EnumListModel, } impl ProviderPage { - pub fn new(sender: Sender) -> Rc { + pub fn new() -> Rc { let builder = gtk::Builder::from_resource( "/com/belmoussaoui/Authenticator/preferences_provider_page.ui", ); @@ -23,7 +20,6 @@ impl ProviderPage { let page = Rc::new(Self { widget: provider_page, - sender, builder, algorithms_model, }); @@ -49,7 +45,6 @@ impl ProviderPage { .find_position(provider.algorithm().to_glib()), ); - let p = provider.clone(); /*let sender = self.sender.clone(); spawn!(async move { if let Ok(file) = p.favicon().await { diff --git a/src/widgets/preferences/providers_page.rs b/src/widgets/preferences/providers_page.rs index 1e70092..74b52e4 100644 --- a/src/widgets/preferences/providers_page.rs +++ b/src/widgets/preferences/providers_page.rs @@ -1,7 +1,5 @@ -use super::window::PreferencesAction; use crate::models::{Provider, ProvidersModel}; use gio::ListModelExt; -use glib::Sender; use gtk::prelude::*; use std::rc::Rc; @@ -9,11 +7,10 @@ pub struct ProvidersPage { pub widget: libhandy::PreferencesPage, builder: gtk::Builder, model: Rc, - sender: Sender, } impl ProvidersPage { - pub fn new(model: Rc, sender: Sender) -> Rc { + pub fn new(model: Rc) -> Rc { let builder = gtk::Builder::from_resource( "/com/belmoussaoui/Authenticator/preferences_providers_page.ui", ); @@ -23,7 +20,6 @@ impl ProvidersPage { widget: providers_page, builder, model, - sender, }); page.init(); page @@ -44,13 +40,15 @@ impl ProvidersPage { let selection_model = gtk::NoSelection::new(Some(&self.model.model)); providers_list.set_model(Some(&selection_model)); - providers_list.connect_activate( - clone!(@strong self.sender as sender => move|listview, pos|{ - let model = listview.get_model().unwrap(); - let provider = model.get_object(pos).unwrap().downcast::().unwrap(); - send!(sender, PreferencesAction::EditProvider(provider)); - }), - ); + providers_list.connect_activate(move |listview, pos| { + let model = listview.get_model().unwrap(); + let provider = model + .get_object(pos) + .unwrap() + .downcast::() + .unwrap(); + // send!(sender, PreferencesAction::EditProvider(provider)); + }); } } diff --git a/src/widgets/preferences/window.rs b/src/widgets/preferences/window.rs index 798d889..eb7b383 100644 --- a/src/widgets/preferences/window.rs +++ b/src/widgets/preferences/window.rs @@ -1,118 +1,131 @@ use super::password_page::PasswordPage; -use super::provider_page::ProviderPage; -use super::providers_page::ProvidersPage; use crate::config; -use crate::models::{Provider, ProvidersModel}; +use gio::prelude::*; use gio::ActionMapExt; -use gio::SettingsExt; -use glib::{Receiver, Sender}; -use gtk::prelude::*; +use gio::{subclass::ObjectSubclass, SettingsExt}; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; +use gtk::{prelude::*, CompositeTemplate}; use libhandy::PreferencesWindowExt; -use std::cell::RefCell; -use std::rc::Rc; -pub enum PreferencesAction { - EditProvider(Provider), +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; + use libhandy::subclass::{ + preferences_window::PreferencesWindowImpl, window::WindowImpl as HdyWindowImpl, + }; + + #[derive(CompositeTemplate)] + pub struct PreferencesWindow { + pub settings: gio::Settings, + pub actions: gio::SimpleActionGroup, + pub password_page: PasswordPage, + #[template_child(id = "auto_lock_switch")] + pub auto_lock: TemplateChild, + #[template_child(id = "dark_theme_switch")] + pub dark_theme: TemplateChild, + #[template_child(id = "lock_timeout_spin_btn")] + pub lock_timeout: TemplateChild, + } + + impl ObjectSubclass for PreferencesWindow { + const NAME: &'static str = "PreferencesWindow"; + type Type = super::PreferencesWindow; + type ParentType = libhandy::PreferencesWindow; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; + + glib_object_subclass!(); + + fn new() -> Self { + let settings = gio::Settings::new(config::APP_ID); + let actions = gio::SimpleActionGroup::new(); + + Self { + settings, + actions, + password_page: PasswordPage::new(), + auto_lock: TemplateChild::default(), + dark_theme: TemplateChild::default(), + lock_timeout: TemplateChild::default(), + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/preferences.ui"); + Self::bind_template_children(klass); + } + } + + impl ObjectImpl for PreferencesWindow { + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + obj.setup_widgets(); + obj.setup_actions(); + self.parent_constructed(obj); + } + } + impl WidgetImpl for PreferencesWindow {} + impl WindowImpl for PreferencesWindow {} + impl HdyWindowImpl for PreferencesWindow {} + impl PreferencesWindowImpl for PreferencesWindow {} } -pub struct PreferencesWindow { - pub widget: libhandy::PreferencesWindow, - builder: gtk::Builder, - settings: gio::Settings, - providers_model: Rc, - password_page: Rc, - providers_page: Rc, - provider_page: Rc, - actions: gio::SimpleActionGroup, - sender: Sender, - receiver: RefCell>>, +glib_wrapper! { + pub struct PreferencesWindow(ObjectSubclass) + @extends gtk::Widget, gtk::Window, libhandy::Window, libhandy::PreferencesWindow; } impl PreferencesWindow { - pub fn new(providers_model: Rc) -> Rc { - let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/preferences.ui"); - get_widget!(builder, libhandy::PreferencesWindow, preferences_window); - let settings = gio::Settings::new(config::APP_ID); - let actions = gio::SimpleActionGroup::new(); - let (sender, r) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); - let receiver = RefCell::new(Some(r)); - - let preferences = Rc::new(Self { - widget: preferences_window, - builder, - settings, - providers_page: ProvidersPage::new(providers_model.clone(), sender.clone()), - provider_page: ProviderPage::new(sender.clone()), - password_page: PasswordPage::new(actions.clone()), - - providers_model, - actions, - sender, - receiver, - }); - preferences.init(preferences.clone()); - preferences.setup_actions(); - preferences + pub fn new() -> Self { + glib::Object::new(Self::static_type(), &[]) + .expect("Failed to create PreferencesWindow") + .downcast::() + .expect("Created object is of wrong type") } - fn init(&self, preferences: Rc) { - get_widget!(self.builder, gtk::Switch, dark_theme_switch); - self.settings.bind( + fn setup_widgets(&self) { + let self_ = imp::PreferencesWindow::from_instance(self); + + self_.settings.bind( "dark-theme", - &dark_theme_switch, + &self_.dark_theme.get(), "active", gio::SettingsBindFlags::DEFAULT, ); - - get_widget!(self.builder, gtk::Switch, auto_lock_switch); - self.settings.bind( + self_.settings.bind( "auto-lock", - &auto_lock_switch, + &self_.auto_lock.get(), "active", gio::SettingsBindFlags::DEFAULT, ); - get_widget!(self.builder, gtk::SpinButton, lock_timeout_spin_btn); - auto_lock_switch - .bind_property("active", &lock_timeout_spin_btn, "sensitive") + self_ + .auto_lock + .get() + .bind_property("active", &self_.lock_timeout.get(), "sensitive") .flags(glib::BindingFlags::DEFAULT | glib::BindingFlags::SYNC_CREATE) .build(); - - self.widget.add(&self.providers_page.widget); - - let receiver = self.receiver.borrow_mut().take().unwrap(); - receiver.attach(None, move |action| preferences.do_action(action)); - } - - fn do_action(&self, action: PreferencesAction) -> glib::Continue { - match action { - PreferencesAction::EditProvider(provider) => { - self.provider_page.set_provider(provider); - self.widget.present_subpage(&self.provider_page.widget) - } - } - glib::Continue(true) } fn setup_actions(&self) { + let self_ = imp::PreferencesWindow::from_instance(self); + action!( - self.actions, + self_.actions, "show_password_page", - clone!(@strong self.builder as builder, - @strong self.password_page.widget as password_page, - @strong self.widget as widget => move |_, _| { - widget.present_subpage(&password_page); + clone!(@weak self as win, @weak self_.password_page as password_page => move |_, _| { + win.present_subpage(&password_page); }) ); action!( - self.actions, + self_.actions, "close_page", - clone!(@strong self.builder as builder, - @strong self.widget as widget => move |_, _| { - widget.close_subpage(); + clone!(@weak self as win => move |_, _| { + win.close_subpage(); }) ); - self.widget - .insert_action_group("preferences", Some(&self.actions)); + self.insert_action_group("preferences", Some(&self_.actions)); } } diff --git a/src/widgets/providers/list.rs b/src/widgets/providers/list.rs index edb68ce..a9ced66 100644 --- a/src/widgets/providers/list.rs +++ b/src/widgets/providers/list.rs @@ -1,69 +1,107 @@ -use crate::application::Action; use crate::models::{Provider, ProvidersModel}; use crate::widgets::providers::ProviderRow; -use gio::ListModelExt; -use glib::Sender; -use gtk::prelude::*; +use gio::{subclass::ObjectSubclass, ListModelExt}; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; +use gtk::{prelude::*, CompositeTemplate}; use std::rc::Rc; -pub struct ProvidersList { - pub widget: gtk::Box, - builder: gtk::Builder, - pub filter_model: gtk::FilterListModel, +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; + + #[derive(Debug, CompositeTemplate)] + pub struct ProvidersList { + #[template_child(id = "providers_list")] + pub providers_list: TemplateChild, + pub filter_model: gtk::FilterListModel, + } + + impl ObjectSubclass for ProvidersList { + const NAME: &'static str = "ProvidersList"; + type Type = super::ProvidersList; + type ParentType = gtk::Box; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; + + glib_object_subclass!(); + + fn new() -> Self { + let filter_model = + gtk::FilterListModel::new(gtk::NONE_FILTER_LIST_MODEL, gtk::NONE_FILTER); + Self { + providers_list: TemplateChild::default(), + filter_model, + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/providers_list.ui"); + Self::bind_template_children(klass); + } + } + + impl ObjectImpl for ProvidersList { + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + obj.setup_widgets(); + self.parent_constructed(obj); + } + } + impl WidgetImpl for ProvidersList {} + impl BoxImpl for ProvidersList {} } +glib_wrapper! { + pub struct ProvidersList(ObjectSubclass) @extends gtk::Widget, gtk::Box; +} impl ProvidersList { pub fn new() -> Self { - let builder = - gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/providers_list.ui"); - get_widget!(builder, gtk::Box, providers_box); - - let filter_model = gtk::FilterListModel::new(gtk::NONE_FILTER_LIST_MODEL, gtk::NONE_FILTER); - - let list = Self { - widget: providers_box, - builder, - filter_model, - }; - list + glib::Object::new(Self::static_type(), &[]) + .expect("Failed to create ProvidersList") + .downcast::() + .expect("Created object is of wrong type") } pub fn set_model(&self, model: Rc) { + let self_ = imp::ProvidersList::from_instance(self); let accounts_filter = gtk::CustomFilter::new(Some(Box::new(|object| { let provider = object.downcast_ref::().unwrap(); provider.has_accounts() }))); - self.filter_model.set_filter(Some(&accounts_filter)); - self.filter_model.set_model(Some(&model.model)); + self_.filter_model.set_filter(Some(&accounts_filter)); + self_.filter_model.set_model(Some(&model.model)); } pub fn refilter(&self) { - if let Some(filter) = self.filter_model.get_filter() { + let self_ = imp::ProvidersList::from_instance(self); + + if let Some(filter) = self_.filter_model.get_filter() { filter.changed(gtk::FilterChange::Different); } } pub fn search(&self, text: String) { - get_widget!(self.builder, gtk::ListBox, providers_list); + let self_ = imp::ProvidersList::from_instance(self); let accounts_filter = gtk::CustomFilter::new(Some(Box::new(move |object| { let provider = object.downcast_ref::().unwrap(); provider.search_accounts(text.clone()); provider.accounts().get_n_items() != 0 }))); - self.filter_model.set_filter(Some(&accounts_filter)); + self_.filter_model.set_filter(Some(&accounts_filter)); } - pub fn init(&self, sender: Sender) { - get_widget!(self.builder, gtk::ListBox, providers_list); + fn setup_widgets(&self) { + let self_ = imp::ProvidersList::from_instance(self); - providers_list.bind_model( - Some(&self.filter_model), - Some(Box::new(clone!(@strong sender => move |obj| { - let provider = obj.downcast_ref::().unwrap(); - let row = ProviderRow::new(provider, sender.clone()); - row.widget.upcast::() - }))), + self_.providers_list.get().bind_model( + Some(&self_.filter_model), + Some(Box::new(move |obj| { + let provider = obj.clone().downcast::().unwrap(); + ProviderRow::new(provider).upcast::() + })), ); } } diff --git a/src/widgets/providers/row.rs b/src/widgets/providers/row.rs index e2c8cda..07e34a0 100644 --- a/src/widgets/providers/row.rs +++ b/src/widgets/providers/row.rs @@ -1,52 +1,123 @@ -use crate::application::Action; use crate::models::{Account, Provider}; use crate::widgets::accounts::AccountRow; -use glib::Sender; -use gtk::prelude::*; +use gio::prelude::*; +use gio::subclass::ObjectSubclass; +use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; +use gtk::{prelude::*, CompositeTemplate}; +use std::cell::RefCell; +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; -pub struct ProviderRow<'a> { - pub widget: gtk::ListBoxRow, - provider: &'a Provider, - builder: gtk::Builder, - sender: Sender, -} + static PROPERTIES: [subclass::Property; 1] = [subclass::Property("provider", |name| { + glib::ParamSpec::object( + name, + "Provider", + "The accounts provider", + Provider::static_type(), + glib::ParamFlags::READWRITE | glib::ParamFlags::CONSTRUCT_ONLY, + ) + })]; -impl<'a> ProviderRow<'a> { - pub fn new(provider: &'a Provider, sender: Sender) -> Self { - let builder = - gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/provider_row.ui"); - get_widget!(builder, gtk::ListBoxRow, provider_row); - - let row = Self { - widget: provider_row, - builder, - sender, - provider, - }; - row.init(); - row + #[derive(CompositeTemplate)] + pub struct ProviderRow { + pub provider: RefCell>, + #[template_child(id = "name_label")] + pub name_label: TemplateChild, + #[template_child(id = "accounts_list")] + pub accounts_list: TemplateChild, } - fn init(&self) { - get_widget!(self.builder, gtk::Label, name); + impl ObjectSubclass for ProviderRow { + const NAME: &'static str = "ProviderRow"; + type Type = super::ProviderRow; + type ParentType = gtk::ListBoxRow; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; - self.provider - .bind_property("name", &name, "label") + glib_object_subclass!(); + + fn new() -> Self { + Self { + name_label: TemplateChild::default(), + accounts_list: TemplateChild::default(), + provider: RefCell::new(None), + } + } + + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/provider_row.ui"); + Self::bind_template_children(klass); + klass.install_properties(&PROPERTIES); + } + } + + impl ObjectImpl for ProviderRow { + fn set_property(&self, _obj: &Self::Type, id: usize, value: &glib::Value) { + let prop = &PROPERTIES[id]; + + match *prop { + subclass::Property("provider", ..) => { + let provider = value + .get() + .expect("type conformity checked by `Object::set_property`"); + self.provider.replace(provider); + } + _ => unimplemented!(), + } + } + + fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value { + let prop = &PROPERTIES[id]; + match *prop { + subclass::Property("provider", ..) => self.provider.borrow().to_value(), + _ => unimplemented!(), + } + } + + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + obj.setup_widgets(); + self.parent_constructed(obj); + } + } + impl WidgetImpl for ProviderRow {} + impl ListBoxRowImpl for ProviderRow {} +} + +glib_wrapper! { + pub struct ProviderRow(ObjectSubclass) @extends gtk::Widget, gtk::ListBoxRow; +} + +impl ProviderRow { + pub fn new(provider: Provider) -> Self { + glib::Object::new(Self::static_type(), &[("provider", &provider)]) + .expect("Failed to create ProviderRow") + .downcast::() + .expect("Created object is of wrong type") + } + + fn provider(&self) -> Provider { + let provider = self.get_property("provider").unwrap(); + provider.get::().unwrap().unwrap() + } + + fn setup_widgets(&self) { + let self_ = imp::ProviderRow::from_instance(self); + + self.provider() + .bind_property("name", &self_.name_label.get(), "label") .flags(glib::BindingFlags::DEFAULT | glib::BindingFlags::SYNC_CREATE) .build(); - get_widget!(self.builder, gtk::ListBox, accounts_list); - accounts_list.bind_model( - Some(self.provider.accounts()), - Some(Box::new( - clone!(@strong self.sender as sender => move |account: &glib::Object| { - let account: &Account = account - .downcast_ref::() - .unwrap(); - let row = AccountRow::new(account, sender.clone()); - row.widget.upcast::() - }), - )), + self_.accounts_list.get().bind_model( + Some(self.provider().accounts()), + Some(Box::new(move |account: &glib::Object| { + let account = account.clone().downcast::().unwrap(); + AccountRow::new(account).upcast::() + })), ); } } diff --git a/src/widgets/window.rs b/src/widgets/window.rs index 6bb53a3..e46eadd 100644 --- a/src/widgets/window.rs +++ b/src/widgets/window.rs @@ -5,11 +5,11 @@ use crate::models::ProvidersModel; use crate::widgets::providers::ProvidersList; use crate::window_state; use gio::prelude::*; -use glib::subclass; +use gio::subclass::ObjectSubclass; use glib::subclass::prelude::*; +use glib::{glib_object_subclass, glib_wrapper}; use glib::{signal::Inhibit, Sender}; -use gtk::prelude::*; -use gtk::subclass::prelude::{WidgetImpl, WindowImpl}; +use gtk::{prelude::*, CompositeTemplate}; use libhandy::prelude::*; use std::rc::Rc; @@ -19,45 +19,75 @@ pub enum View { Accounts, } -pub struct WindowPrivate { - builder: gtk::Builder, - settings: gio::Settings, - pub providers: Rc, -} +mod imp { + use super::*; + use glib::subclass; + use gtk::subclass::prelude::*; + use libhandy::subclass::application_window::ApplicationWindowImpl as HdyApplicationWindowImpl; -impl ObjectSubclass for WindowPrivate { - const NAME: &'static str = "Window"; - type Type = super::Window; - type ParentType = libhandy::ApplicationWindow; - type Instance = subclass::simple::InstanceStruct; - type Class = subclass::simple::ClassStruct; + #[derive(Debug, CompositeTemplate)] + pub struct Window { + pub settings: gio::Settings, + pub providers: ProvidersList, + #[template_child(id = "search_entry")] + pub search_entry: TemplateChild, + #[template_child(id = "deck")] + pub deck: TemplateChild, + #[template_child(id = "container")] + pub container: TemplateChild, + #[template_child(id = "search_bar")] + pub search_bar: TemplateChild, + #[template_child(id = "search_btn")] + pub search_btn: TemplateChild, + #[template_child(id = "password_entry")] + pub password_entry: TemplateChild, + } - glib_object_subclass!(); + impl ObjectSubclass for Window { + const NAME: &'static str = "Window"; + type Type = super::Window; + type ParentType = libhandy::ApplicationWindow; + type Instance = subclass::simple::InstanceStruct; + type Class = subclass::simple::ClassStruct; - fn new() -> Self { - let builder = gtk::Builder::from_resource("/com/belmoussaoui/Authenticator/window.ui"); - let settings = gio::Settings::new(APP_ID); - let providers = Rc::new(ProvidersList::new()); - Self { - builder, - settings, - providers, + glib_object_subclass!(); + + fn new() -> Self { + let settings = gio::Settings::new(APP_ID); + let providers = ProvidersList::new(); + Self { + settings, + providers, + search_entry: TemplateChild::default(), + deck: TemplateChild::default(), + container: TemplateChild::default(), + search_bar: TemplateChild::default(), + search_btn: TemplateChild::default(), + password_entry: TemplateChild::default(), + } + } + fn class_init(klass: &mut Self::Class) { + klass.set_template_from_resource("/com/belmoussaoui/Authenticator/window.ui"); + Self::bind_template_children(klass); } } + + impl ObjectImpl for Window { + fn constructed(&self, obj: &Self::Type) { + obj.init_template(); + + self.parent_constructed(obj); + } + } + + impl WidgetImpl for Window {} + impl WindowImpl for Window {} + impl ApplicationWindowImpl for Window {} + impl HdyApplicationWindowImpl for Window {} } -impl ObjectImpl for WindowPrivate {} - -impl WidgetImpl for WindowPrivate {} - -impl WindowImpl for WindowPrivate {} - -impl gtk::subclass::prelude::ApplicationWindowImpl for WindowPrivate {} - -impl libhandy::subclass::prelude::ApplicationWindowImpl for WindowPrivate {} - glib_wrapper! { - pub struct Window(ObjectSubclass) + pub struct Window(ObjectSubclass) @extends gtk::Widget, gtk::Window, gtk::ApplicationWindow, libhandy::ApplicationWindow, gio::ActionMap; } @@ -72,7 +102,7 @@ impl Window { if PROFILE == "Devel" { window.get_style_context().add_class("devel"); } - window.init(model, sender.clone()); + window.init(model); window.setup_actions(app, sender.clone()); window.set_view(View::Login); // Start by default in an empty state window.setup_signals(app, sender); @@ -80,22 +110,25 @@ impl Window { } pub fn set_view(&self, view: View) { - let self_ = WindowPrivate::from_instance(self); - get_widget!(self_.builder, libhandy::Leaflet, deck); + let self_ = imp::Window::from_instance(self); match view { View::Login => { - deck.set_visible_child_name("login"); + self_.deck.get().set_visible_child_name("login"); } View::Accounts => { - deck.set_visible_child_name("accounts"); + self_.deck.get().set_visible_child_name("accounts"); } } } - fn init(&self, model: Rc, sender: Sender) { - let self_ = WindowPrivate::from_instance(self); + pub fn providers(&self) -> ProvidersList { + let self_ = imp::Window::from_instance(self); + self_.providers.clone() + } + + fn init(&self, model: Rc) { + let self_ = imp::Window::from_instance(self); self_.providers.set_model(model.clone()); - self_.providers.init(sender.clone()); // load latest window state window_state::load(&self, &self_.settings); // save window state on delete event @@ -110,31 +143,30 @@ impl Window { get_widget!(builder, gtk::ShortcutsWindow, shortcuts); self.set_help_overlay(Some(&shortcuts)); - get_widget!(self_.builder, gtk::Box, container); - container.append(&self_.providers.widget); + self_.container.get().append(&self_.providers); - get_widget!(self_.builder, gtk::SearchBar, search_bar); - get_widget!(self_.builder, gtk::ToggleButton, search_btn); - search_btn - .bind_property("active", &search_bar, "search-mode-enabled") + self_ + .search_btn + .get() + .bind_property("active", &self_.search_bar.get(), "search-mode-enabled") .flags(glib::BindingFlags::BIDIRECTIONAL | glib::BindingFlags::SYNC_CREATE) .build(); - get_widget!(self_.builder, gtk::SearchEntry, search_entry); - search_entry.connect_search_changed( + self_.search_entry.get().connect_search_changed( clone!(@weak self_.providers as providers => move |entry| { let text = entry.get_text().unwrap().to_string(); providers.search(text); }), ); - search_entry.connect_stop_search(clone!(@strong search_btn => move |entry| { - entry.set_text(""); - search_btn.set_active(false); - })); - - get_widget!(self_.builder, libhandy::Leaflet, deck); - libhandy::ApplicationWindowExt::set_child(self, Some(&deck)); + let search_btn = self_.search_btn.get(); + self_ + .search_entry + .get() + .connect_stop_search(clone!(@weak search_btn => move |entry| { + entry.set_text(""); + search_btn.set_active(false); + })); let gtk_settings = gtk::Settings::get_default().unwrap(); self_.settings.bind( @@ -147,12 +179,12 @@ impl Window { } fn setup_actions(&self, app: &Application, sender: Sender) { - let self_ = WindowPrivate::from_instance(self); + let self_ = imp::Window::from_instance(self); + let search_btn = self_.search_btn.get(); action!( self, "search", - clone!(@strong self_.builder as builder => move |_,_| { - get_widget!(builder, gtk::ToggleButton, search_btn); + clone!(@weak search_btn => move |_,_| { search_btn.set_active(!search_btn.get_active()); }) ); @@ -165,11 +197,11 @@ impl Window { }) ); + let password_entry = self_.password_entry.get(); action!( self, "unlock", - clone!(@strong sender, @strong self_.builder as builder, @strong app => move |_, _| { - get_widget!(builder, gtk::PasswordEntry, password_entry); + clone!(@strong sender, @weak password_entry, @strong app => move |_, _| { let password = password_entry.get_text().unwrap(); if Keyring::is_current_password(&password).unwrap() { password_entry.set_text("");