From baca5a787fb3b3b51a9833c164defb18db26c15c Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Tue, 28 Jun 2022 23:59:20 +0200 Subject: [PATCH] Init commit --- .gitignore | 2 + .gitmodules | 6 + Cargo.lock | 1562 ++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 13 + LICENSE | 674 +++++++++++++++++++ README.md | 34 + anime-game-core | 1 + assets/icon.png | Bin 0 -> 280182 bytes blueprint-compiler | 1 + build.rs | 65 ++ src/lib/mod.rs | 6 + src/main.rs | 85 +++ ui/main.blp | 78 +++ ui/preferences.blp | 310 +++++++++ 14 files changed, 2837 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 160000 anime-game-core create mode 100644 assets/icon.png create mode 160000 blueprint-compiler create mode 100644 build.rs create mode 100644 src/lib/mod.rs create mode 100644 src/main.rs create mode 100644 ui/main.blp create mode 100644 ui/preferences.blp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..08505e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/ui/.dist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b7e10aa --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "blueprint-compiler"] + path = blueprint-compiler + url = https://gitlab.gnome.org/jwestman/blueprint-compiler +[submodule "anime-game-core"] + path = anime-game-core + url = https://gitlab.com/an-anime-team/anime-game-core diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..c235ede --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1562 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "anime-game-core" +version = "0.1.0" +dependencies = [ + "bzip2", + "curl", + "flate2", + "fs_extra", + "md5", + "serde", + "serde_json", + "tar", + "uuid", + "xz", + "zip", +] + +[[package]] +name = "anime-game-launcher" +version = "0.1.0" +dependencies = [ + "anime-game-core", + "gtk4", + "libadwaita", +] + +[[package]] +name = "anyhow" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "base64ct" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bzip2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "cairo-rs" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-expr" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" +dependencies = [ + "smallvec", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "cpufeatures" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "crypto-common" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "curl" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d855aeef205b43f65a5001e0997d81f8efca7badad4fad7d897aa7f0d0651f" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi", +] + +[[package]] +name = "curl-sys" +version = "0.4.55+curl-7.83.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23734ec77368ec583c2e61dd3f0b0e5c98b93abe6d2a004ca06b91dd7e3e2762" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "rustls-ffi", + "vcpkg", + "winapi", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "field-offset" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filetime" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "winapi", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fs_extra" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk4" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fabb7cf843c26b085a5d68abb95d0c0bf27a9ae2eeff9c4adb503a1eb580876" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk4-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efe7dcb44f5c00aeabff3f69abfc5673de46559070f89bd3fbb7b66485d9cef2" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gio" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "graphene-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c54f9fbbeefdb62c99f892dfca35f83991e2cb5b46a8dc2a715e58612f85570" +dependencies = [ + "glib", + "graphene-sys", + "libc", +] + +[[package]] +name = "graphene-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa691fc7337ba1df599afb55c3bcb85c04f1b3f17362570e9bb0ff0d1bc3028a" +dependencies = [ + "glib-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gsk4" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e9020d333280b3aa38d496495bfa9b50712eebf1ad63f0ec5bcddb5eb61be4" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk4", + "glib", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gsk4-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7add39ccf60078508c838643a2dcc91f045c46ed63b5ea6ab701b2e25bda3fea" +dependencies = [ + "cairo-sys-rs", + "gdk4-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk4" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64f0c2a3d80e899dc3febddad5bac193ffcf74a0fd7e31037f30dd34d6f7396" +dependencies = [ + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fafbcc920af4eb677d7d164853e7040b9de5a22379c596f570190c675d45f7a7" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quick-xml", + "quote", + "syn", +] + +[[package]] +name = "gtk4-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bc8006eea634b7c72da3ff79e24606e45f21b3b832a3c5a1f543f5f97eb0f63" +dependencies = [ + "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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "itoa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" + +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libadwaita" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ae453d28e3b91f03749f02b1531e8cfe315a1d0762b77a61797d2ab80bb87d" +dependencies = [ + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "libadwaita-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "libadwaita-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8" +dependencies = [ + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "system-deps", +] + +[[package]] +name = "libc" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "lzma-sys" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e06754c4acf47d49c727d5665ca9fb828851cda315ed3bd51edd148ef78a8772" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "once_cell" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "pango" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +dependencies = [ + "bitflags", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "password-hash" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" +dependencies = [ + "digest", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[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.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "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", + "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", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-ffi" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9da52707cca59e6eef8a78f3ad8d04024254a168ed1b41eb4dfa9616eace781a" +dependencies = [ + "libc", + "log", + "num_enum", + "rustls", + "rustls-pemfile", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64", +] + +[[package]] +name = "ryu" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "slab" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" + +[[package]] +name = "smallvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2" + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +dependencies = [ + "itoa", + "libc", + "num_threads", + "time-macros", +] + +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" + +[[package]] +name = "unicode-ident" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "getrandom", + "rand", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" + +[[package]] +name = "web-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[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", + "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-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "xz" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c887690ff2a2e233e8e49633461521f98ec57fbff9d59a884c9a4f04ec1da34" +dependencies = [ + "xz2", +] + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "zip" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf225bcf73bb52cbb496e70475c7bd7a3f769df699c0020f6c7bd9a96dcf0b8d" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.10.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.6+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.3+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" +dependencies = [ + "cc", + "libc", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..ef4f345 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "anime-game-launcher" +version = "0.1.0" +description = "Anime Game launcher" +authors = ["Nikita Podvirnyy "] +license = "GPL-3.0" +edition = "2021" +build = "build.rs" + +[dependencies] +gtk4 = "0.4" +libadwaita = "0.1" +anime-game-core = { path = "anime-game-core", features = ["all"] } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8f96e92 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# An Anime Game Launcher GTK + +Development version of the launcher variant written on Rust, GTK4 and libadwaita, using [Anime Game Core](https://gitlab.com/an-anime-team/anime-game-core) library + +Work in progress + +## Development + +| Folder | Description | +| - | - | +| ui | Blueprint UI files | +| ui/.dist | UI files compiled by the blueprint | +| src | Rust source code | +| target/release | Release build of the app | +| blueprint-compiler | Blueprint compiler | +| anime-game-core | Anime Game Core library | + +### Clone repo + +```sh +git clone --recursive https://gitlab.com/an-anime-team/an-anime-game-launcher-gtk +``` + +### Run app + +```sh +cargo run +``` + +### Build app + +```sh +cargo build --release +``` diff --git a/anime-game-core b/anime-game-core new file mode 160000 index 0000000..9fd1413 --- /dev/null +++ b/anime-game-core @@ -0,0 +1 @@ +Subproject commit 9fd14137eaf494f2e6647c12f854c6cd0c20ebd2 diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..63559313581798834fbe029c43095667360a34d3 GIT binary patch literal 280182 zcmeFa1z1(zwl}=!?(P(%J0v6(kW>kg+`y*0J0%2_P!R+PK|v*?Q|Xch0qK#eg!+GCkibv%kIO5IMcKx3{)+ zJ`yPvRC|F44?N$-4g3*w8YvKX9(Zw#*c(ApIBml@uMRsp^WXgz^lf$|-0a9hX=Q0^ zZG`Ui)M`4tL!n7}YT)_j^Nl)EyPH)~B0D1CHNykPRpF94t!{o{I@DMduUn{W^C1pxzO}`4*h?U&ozv>Z0K?IA_ zvE9?XV|8cKCO&y71U|8R7d85)4^z*=E05d09!uNhpPfV=E!lkQ+}Z+n5tlmWfwsKAby!`4S7dh^7KD%>#pcN$b13^-l@?s8A(3tM~ zCMMV6Y$m-Y-80sY=;5ic#n{5q1?u8az(7g*PHpe;_d+X|7>-n}WBSHwOpKt>q-=U! zVakM{G%@W)GZIoJUbCCK(;7bIH%9eRgRi!&XhNtEln=QV65VI|1 zoA+t)v2Fgw=Wj2_4Q#7k>l)a7drt3*`rVCP({JrtY(pe|fs{952F<*Se_lsx7 zI!h}v89dPpx?r%}I2N&+P2n(k6x2&ymwyneD%Ggs*^^WhN6%I(XxBvb2OblG#t}uOH4iB2rieTQhe3mtd>A zB_aK<(uIC>IZ13u_xiV%9VV^Neb|4Lqw;2RO0~xZ>9q(0d(O9K?I}MxfxYjB6yQYL z;%px}e7b&0q*Hp0*_FT==dL5VjpIi@g{J`cqt+zqTf?uPA^S_S=T5a&v*U|Z1S}GT zo)!9AWQaD8-bH3HuOw9?zU-tqe~mzM<=-7lWmIX;7^#G!u@T9VhiLZcTxF3dQ4S7f z)_JdIiIh&o5hz;6z4K=Qbr-8R;1Hrm%hm3f$+SQ@LkWa03f`%4^Q7rAWbk+q$Uv&> z{WzsIOpf_CmJ@oY{;#b(zWJ|aqbqN@T3mJ~N}gH0@)s<+%PGK3_#m>0xdEH$x!Y!J z`r=b*ZIKTDsYA6X(c$kAw~Fe22rfz4o!}vNFR^*hI2plTrk>vT(E4zk=IMn`+Ud9C zB%%3nzjv92;r2Fuhu;*QMoKPyWP2&q#*wv@tZBPM%51vOjY_1z=bo~PY0)92Sl{i3 z@Q7>US`c{%yNmE4zdx$09#U%jn%nG`<8no>C+27356+~Vu<8dayLthqFZt%ql4D?S z+@2X4=5rfG9x#a3bJa8MR#=OZRmbscM&%A(hN$D1m2r#n65p+ zQ&YQOF&{Q-R$9^e9Ts(yYowVAS+>V-lNvEjiD~KU3`#B5@ma=Q+u`u|;=ifN|r|^E3b0iM!kcE_#p6zq9+$ z;S4skhj*NDZV3>rPu~F6X3$uS(#4S6sXSr!o%%c>Z*caf zF?rayBdYyi#m+d43+;RlXcy3ILUxS4X+>mdewoN*L2rGzzulV0AsxJM$Cq7vlkG8S zTny3O`SeIrZ`)xkdWFOtwjLC*s$M}L%|l3z^^?u(p6WULhYz=>lB19ws2n2wc>giD zk%$6uXUyF~`xKp5`dj^IWZ!uB8h3No@^4?+QH3L-H{qC^KB84(As237Lk zXx?VDp8QI$Et@ArbJriMh`LXSCGU+vufxZZ&_XhP?XyXx_GWI1=HOCI%9~k? zsvV^CYp`dxxiR-??}hr?z?;=x@+ZW2kNSf@`y7!XGqbn4&}%IR94-GG3GuvdIMFa# zGDH|pkJ7+OD9>)88|bQ<(M8sSXLfMb%y}wUYykpn&a$ZH3LiGk=*^h2lB4qb6Berb zX_G$cuuYXVoZBJ)T*>(MfJ!C7gPXJc%PmnAoPD&Mc!AuTgxNjFM2Amj^gg9WV?W(n zMO`p3AZ}rx-;*n+4PdLB#)@e%!PK3u>)4GBWszh;Je~5P>Kjrqs0?Cg!_bL{4Qwk2 zbMa|n^ksaM7B;as$Fx)Gr&r%?(@Jd_M~&o8xgKuzZe-M>0mTcMFHYdu@oek;ba?E2 zgYSCs@D0p&inn7@R+OoETe3oBP^qZ1oBf$0MOS&lxY8eBy_{W|zaJ?TF#G-PT^_{< zuBGrtItpcdf6Pl1LPVs-XKF z6KtwcI&)7enlH_9V5?-tp>O;^eK+EEg!{Nx;2lrb zy!xUq94thv_2Mdfgb{cj!%3?$Ilk)gSS!*A+smapGpaP~-+90CnlCBr{j*$)FJ`#3 z$^Mw`cW6blACfuR!Z%5RU39JaI*`5ys!x2t-k^`ulfk1_s1Cs;4+b=%Kqmhp{UeOl z4+%Y8C?_b7{czkiDCS~sjgcVkNZrQcaAv*5{A!%JqP>DUugo9bY^m{-wTZ`V=ZIG3 z1YThKf-kC4CC|JdcvgtTpHZ~_)fxE{s?~VPs&Qy1+7+pZN{-o#N@t-acsGDJ;kR&s1)Aq7Sw8QTWft_sgcq}2 zoFseGQAm(5!;}wiHe-#`1uFlhg%Md_hpoJIn#y*96M~-oN;Ar(4~_(NyQ| z$uX!_X)&a~DMUrwUYccEmAk=%EAE@l!H!poxiQ;MP)_-rIKPGeGEL_FS1+{S1>PYsgjbWMYHcBphH90FMUbdcF2woI> z{2P=sW8Th2;=#as&lq>`%c%AT2RiR6iOd76Ip54f%HK87Z_EibEO0MuiL#<(??)~L zp1+8fp%Z=D@%iVVUGs`(*b=a7dhE6mNKik1XfEcl42e7+?4MP_yb-QzfNz zC83Yq}4TEmUXdJ`kON)@~07kUrZleh#z_&QU&gkFvV)K z@@3pFeI`G5E8xq9|M|h&G_2tkoBb#@?{rB{ypY1E>^3X)h>5<)f<8)%Hrsk6_pYBW ztCN-1j>_=EpWID+C%|Uk(uX-l^9)OqMZHn4E;%2Ga^fAJhoh{XsMlC(Ae?)OY-;=r zOKK!5K3Nx|i~Z5*Xx3?7&Tb~v8@*kGz4_ay3E&>R2sO=#UssHpocxc>iPK3n&Rv%n z!Cp69wuL6^>_O?o$LOHFlzS_w8-9|_8|tbE=_nM((JrTV53_LkTu!5>gH`T0kyD=B zmF_^+$7wd5F!?}U?-%F1Vwm(fgRggrU2b3J$e>{@b8g#cMoL*kH_Dm!YsGW=JhFS^ z)U7cpEJb&fjwv|8p7_DM9r5v^Dwc4f(@XPqS+zgBv>21~NEP^GJE^97V}=`1iu257 zd7ciKv&>}BQ2ZtEn&HQ#qlEvzT^=$oZSw17p0Iqy<`i z1o*1*w(9Cr_cEzwzCxn`M0j|9P`GTN^?_w4e_olaWCm7 za&iidm=jNj(mWCR9d~K5_cxE2BIe83nJr%Ggo{(nyiI-BkVA^?Eti)$oa}}so!J~D zOFK55Y?BXf_pfSqr_-(%&-}uz%ok;u7}m{Z8tyRn(-pbbTXJ<}NQ&rC_Lpr`5_?uQ zMWzQ#W=27Y_D33d{xr?Qosl1Ly0J;)?A_ii7&!P0IXyBgn{{M;{&6>$m{y#_b;-xA zs?rYpXZ&Pj87zsb9`f`m{61}5ZEAYdJ=&QsqyeiDjhCN^<1Tw9mqoyz;|i6U zuFoZ`*V_`?8s4;)#X64eWyt20fA79&DI>6shK^zw)&HWkUY7P_`qTR2X+^=k&~c!n zy(y+c!4uh9rBjH=PhAP?{=A9A=jRKG-%TBWTO1#`pINcFvTyFTdoFF58`f;kXJu~Z zw0-{eb8iy4Zp>?y=0Gh&jDevqEGtvC*x5>3Xca9IGW%wjZ}z$9w-DgH4*4FomzapQ z@iRn|*G#2)%9peC<+M7}Yg#&9?zmSJ@_jbTPcWNwFIb->N6^-HJS|94#yb*CJT@W- zl{Xdl^>;RPF2viK`)XLs_Pd`c5liX5pNDW>4=Uq)b@P`3Y|eRz% zjBL2s!se1J^D*ht>MwDN1o_-6a7L8t22Il4t|@Fz2ZSAb>T#)t2oo$x`}eJT$ZwvvCB_iKv~Em%YGSU+ zKcZiz@{oTEvk`Idet?{e!2*)q>v%k~8L+t4`NRT-G}+fQ8G<6zqd5CIYS=~S#WRMg zb6dUpzux8knBf2D8{w49V?xbmwx#+JrJ{@=)y092MNJfS%6h9wE;n?_`aJKoG}*{O zlp=2^QZ&Vbn`X5pen1A-ll<_v2=rntcQ&v=#Y)Y%+_+s|wUwg3`#+*=5m`>>a4#wX8~nv8+> zlb9wq2#DXZN6*V!5fx!--J}a-$=E)~tu4sHFnx(exH|&(YeeFnATXoSS+R}%psmcF z?GoSl8!MX^+f%6GtE&A$rFU@!Qk%bg)5DC=HVUSJJe8)!N5E~^{O(*#U!yOwj$)g$ zj&11u+Ru3evE`~pvO{5Qc)G;!=((eW_HJUYYMF4XBZC&kh#4+qU9sKw_oyqR(#!af ztf_b3GvZ}z-+W%V>$~;heKS^CctyFVt3z&`t%R$syz~q18p`Va5~@t_6H&2`456uu zZj?p_n?fh>q-6tb^*e64j5$2IH#oOZO)LxT<&hwDR-lJ~gB z)4o+b!vn2t)D#PvY?Y0}$z_ep7_@dnCmgXPO|~wCtiKb-SjkMZ6A-mqF_L$Bh=`5> z#V%eFhNd3VdFM{`EeQvdh$ij)_qO4^ zQM$NNu^~TLsf@P+-z<&kOuEX49NsoT1R0b)u#t+r(>qViIvlKjm!YvquRKWxwqp8` zh>BeLq`!qLhy7yi*JCY;(o7$C1buNjhubaH{Il081-+OW_GDdm;!tmL*4SQ{S;XB@ z+)W#mpJ_;Govp8r>?EtNsrGMed+B)|YCxUaC@hxodg6>6&1r;|6ixhbf@=*BB2s?u z<^9jf)BLF6O9my;htD%U7~aJ8K$hq0qcbe~UgavMnE=}w)Nm8^aRIH++|5CtNOt11T*i9NH8%d;1pX(Yetm(*n)Kp*N_zoOUn zg)*U1b7Z6*Tl=Zey&D*U1N#!gby;Kj`ypXgB_^3o&t$Um>8iOuySl|Eu`*OpHkr<< zR3Q%*;LH2rNw1@u)2BEcHjP)^Y&BWdzq#c@^*dg(g5;|~5aZrcLG%c{hOrrsfKs+*qrA4I()s=A*-$|F{s=xhpYx4(l3zo2CsAYXD4Xd7S1q^ibgisKAF<`^ zJc$p^H4r!{!fYg8`S}37pLCOC=7oH83)iNuR_U4>dZ{X>_iDufVGG^vrT(lnH?0ypabv^G2JP6e2O}A- zVwi#Q6pD(r+&FmBz*<9MEDk5D&S&4lMcYnvrk{$FM&E2WUfNi4eg)cEVEMLXBIs!N zs_wJ|8Xhk?MOa?}Pi^Waby+y`zBJSMc-JGBuYVQ z{JZpqgdv^q3%$b06O4@?f`CI~( z{a8V2EP;_dB@$j+(YyFNosouI7c=hl!=QJdYiP%k+iZ87Q7qGpLo9PHqAGH1_%=zl zZLMlwdAwCK5np}|YnRgT$?JQMyQk>mF1n+hKP3YUW##SG>0F5GE1vb-^CXK4AxGkq zV%Rd5ZS`K?k)^4};bl+!SaElRoq3I;dyKWwg-Li_3|_9+V-k%jP{WkJe=6BTkEVya zLw8zQ`qsoKV4N#duhd9(Rz4Ulig3hLjCKSu`pK}1tJzYM{@FQMn7|2A7gF-h$8-3{ zq9uYotVi-~JrX0gyXbo@d+`@>aA0j6>XiD)za-GR72?VbjTKgF@2em2unp05NRO-1 zPkuyOq3N8`dLUMhKDbaVF%?sUB^K-wr%L6ia94lW-3IN`{3?eWgNxx;q^$4?teVGu zts>jjginmP&Z|&vrW&HyRqP@iNyMx8#&~?A_||e>Ehw%mRLa|&;y462rs_Xz(-;V0 z@-5A9C79tjXm%ELrLAS((nDefa?6?bMEKvMKDT@B8{y51Lp>wVZ({U)n*1wM`a(k9 z3!&Fw2Dk;TP|CA{A&8Z9H-%bomP%*p&FwY8N_4pmG+ z*1V>l9`C2^UNPCWY%f85x=|t3<9lX#YLZ5u;blv&)wp9aFF1YLzqtm9VrCpGRk&?F z@JBr@HC_j@^qql{FKjzG;Ue)5DoNVKmtN!i&kAnWW zb$bDrZOl;rZ(^!)7HyHC^K5m+O&2EBr%F;}$b~Yz9F>C6sy2jtk80>QaVQ^oJ(5?g zI3>bEi^!&QlE?UNwpozV{3#ovZcKt1hq-b=)cH zb8-6?VWq*=Vn;+jN9h_G5X7@Kp^Ph~XL-xoS7#;v+TdLREE}wT@z#Br*5Kf^{3VSunGVF3>1tJaTGQFw;#xgaXUN^ zlt|!FL5ouA{V~}%gHmt%hoMjV=x4-C?i1wFa1}OT?}Xj9aK&^R>RwkKKV=pyqs|ai z4zpQsC@9uQJ9`8_)jj-3r`uNEduq^+e4a5YR=tqh#aL9Z&=VZFsD~^uQCBRRbIeMQqDkJN_fHX+J=h4XG+@_vxU1%Bm zdVlN?iuP>UNWzDq_`+BsH}g)Cm3yg`A?Pm8KHlNb#)~HL9kCZ$f>QbMyPkZe zfx$Zi&z@B%RL1`VV#^IrT4O`b7hA=+hFbEC=0|eHj|VG#^hv`f#*oe)w)NwAz2dG> zY-5ZFCR7w9z<&1ls~dcHlo^XBEL=}1-RNeA?rgu6F7rU(=XW?JXggDC4~n}T#^W2o zKB7cCLT4g7BzwWgBl@cQ&wPwz)wkpom@RS=qAIF@2RlzO$JLG!Zdp8

gk<=+zQ* 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: T) -> Result { + // python blueprint-compiler/blueprint-compiler.py compile ui/main.blp + let output = Command::new("python") + .arg("blueprint-compiler/blueprint-compiler.py") + .arg("compile") + .arg(path.to_string()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output(); + + match output { + Ok(output) => { + if output.status.success() { + Ok(String::from_utf8(output.stdout).unwrap()) + } + + else { + Err(String::from_utf8(output.stdout).unwrap()) + } + }, + Err(err) => Err(err.to_string()) + } +} + +fn main() { + if let Ok(entries) = read_dir("ui") { + if let Err(_) = read_dir("ui/.dist") { + create_dir("ui/.dist").expect("UI dist dir couldn't be created"); + } + + for entry in entries { + if let Ok(entry) = entry { + if let Ok(metadata) = entry.metadata() { + if metadata.is_file() { + let entry_path = entry.path().to_str().unwrap().to_string(); + let entry_filename = entry.file_name().to_str().unwrap().to_string(); + + let entry_dist_path = format!("ui/.dist/{}.ui", &entry_filename[..entry_filename.len() - 4]); + + match compile_blueprint(&entry_path) { + Ok(xml) => { + let result = fs::write(entry_dist_path, xml); + + if let Err(err) = result { + println!("cargo:warning=Couldn't write compiled XML UI: {}", err); + } + }, + Err(err) => { + if Path::new(&entry_dist_path).exists() { + fs::remove_file(entry_dist_path).expect("Couldn't remove broken file"); + } + + println!("cargo:warning=Couldn't compile {}: {}", entry_path, err); + } + } + } + } + } + } + } +} diff --git a/src/lib/mod.rs b/src/lib/mod.rs new file mode 100644 index 0000000..6576300 --- /dev/null +++ b/src/lib/mod.rs @@ -0,0 +1,6 @@ +use gtk4::{self as gtk, prelude::*}; + +/// This function loads object from builder or panics if it doesn't exist +pub fn get_object>(builder: >k::Builder, name: &str) -> T { + builder.object::(name).unwrap() +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..c5f70fc --- /dev/null +++ b/src/main.rs @@ -0,0 +1,85 @@ +use gtk4::{self as gtk, prelude::*}; +use libadwaita as adw; + +pub mod lib; + +struct PreferencesPage { + pub preferences: gtk::Box, + pub preferences_go_back: gtk::Button +} + +impl PreferencesPage { + pub fn new() -> Self { + let builder = gtk::Builder::from_string(include_str!("../ui/.dist/preferences.ui")); + + let result = Self { + preferences: lib::get_object(&builder, "preferences"), + preferences_go_back: lib::get_object(&builder, "preferences_go_back") + }; + + result + } +} + +struct App { + pub window: adw::ApplicationWindow, + pub leaflet: adw::Leaflet, + pub launch_game: adw::SplitButton, + pub open_preferences: gtk::Button +} + +impl App { + pub fn new(app: >k::Application) -> Self { + // Create builder from UI file + let builder = gtk::Builder::from_string(include_str!("../ui/.dist/main.ui")); + + // Parse objects from builder + let result = Self { + window: lib::get_object(&builder, "window"), + leaflet: lib::get_object(&builder, "leaflet"), + launch_game: lib::get_object(&builder, "launch_game"), + open_preferences: lib::get_object(&builder, "open_preferences") + }; + + // Add preferences page to the leaflet + let page = PreferencesPage::new(); + let leaflet = result.leaflet.clone(); + + result.leaflet.append(&page.preferences).set_name(Some("preferences_page")); + + // Go back button for preferences page + page.preferences_go_back.connect_clicked(move |_| { + leaflet.navigate(adw::NavigationDirection::Back); + }); + + // Bind app to the window + result.window.set_application(Some(app)); + + result + } +} + +fn main() { + gtk::init().expect("GTK initialization failed"); + adw::init(); + + // Create app + let application = gtk::Application::new( + Some("com.gitlab.an-anime-team.an-anime-game-launcher"), + Default::default() + ); + + // Init app window and show it + application.connect_activate(|app| { + let app = App::new(app); + + app.open_preferences.connect_clicked(move |_| { + app.leaflet.set_visible_child_name("preferences_page"); + }); + + app.window.show(); + }); + + // Run app + application.run(); +} diff --git a/ui/main.blp b/ui/main.blp new file mode 100644 index 0000000..4625362 --- /dev/null +++ b/ui/main.blp @@ -0,0 +1,78 @@ +using Gtk 4.0; +using Adw 1; + +Adw.ApplicationWindow window { + default-width: 900; + default-height: 600; + + styles ["devel"] + + content: Gtk.Box { + orientation: vertical; + + Adw.Leaflet leaflet { + can-navigate-back: true; + can-unfold: false; + + Gtk.Box { + orientation: vertical; + hexpand: true; + + name: "main"; + + Adw.HeaderBar { + title-widget: Adw.WindowTitle { + title: "An Anime Game Launcher"; + }; + } + + Adw.PreferencesPage { + Adw.PreferencesGroup { + Gtk.Image { + file: "assets/icon.png"; + vexpand: true; + margin-top: 48; + } + + Gtk.Label { + label: "An Anime Game Launcher"; + margin-top: 32; + + styles ["title-1"] + } + } + + Adw.PreferencesGroup { + vexpand: true; + valign: center; + + Gtk.Box { + halign: center; + margin-top: 64; + spacing: 8; + + Adw.SplitButton launch_game { + label: "Launch"; + + hexpand: false; + width-request: 200; + + styles ["suggested-action"] + + popover: Gtk.Popover { + Gtk.Button { + label: "Launch in debug mode"; + } + }; + } + + Gtk.Button open_preferences { + icon-name: "preferences-system-symbolic"; + } + } + } + } + } + } + }; +} diff --git a/ui/preferences.blp b/ui/preferences.blp new file mode 100644 index 0000000..f976596 --- /dev/null +++ b/ui/preferences.blp @@ -0,0 +1,310 @@ +using Gtk 4.0; +using Adw 1; + +Gtk.Box preferences { + orientation: vertical; + + Adw.HeaderBar { + title-widget: Adw.WindowTitle { + title: "Preferences"; + }; + + Gtk.Button preferences_go_back { + icon-name: "go-previous-symbolic"; + halign: start; + } + } + + Adw.Flap { + vexpand: true; + + flap: Gtk.StackSidebar { + width-request: 200; + stack: stack; + }; + + separator: Gtk.Separator {}; + + content: Gtk.Stack stack { + Gtk.StackPage { + title: "General"; + + child: Adw.PreferencesPage { + Adw.PreferencesGroup { + title: "General"; + + Adw.ComboRow { + title: "Launcher language"; + + model: Gtk.StringList { + strings [ + "English", + "German", + "Russian", + "French", + "Chinese" + ] + }; + } + } + + Adw.PreferencesGroup { + title: "Status"; + + Adw.ActionRow { + title: "Game version"; + + Gtk.Label { + label: "2.7.0"; + + styles ["success"] + } + } + + Adw.ActionRow { + title: "Patch version"; + + Gtk.Label { + label: "2.7.0"; + + styles ["success"] + } + } + + Gtk.Box { + orientation: horizontal; + spacing: 8; + margin-top: 8; + + Gtk.Button { + label: "Revert patch"; + } + + Gtk.Button { + label: "Re-apply patch"; + } + } + } + + Adw.PreferencesGroup { + title: "Wine version"; + + Adw.ExpanderRow { + title: "Wine-GE"; + + Adw.ActionRow { + title: "7-16"; + } + + Adw.ActionRow { + title: "7-15"; + } + + Adw.ActionRow { + title: "7-14"; + } + + Adw.ActionRow { + title: "7-12"; + } + + Adw.ActionRow { + title: "7-10"; + } + + Adw.ActionRow { + title: "7-9"; + } + } + + Adw.ExpanderRow { + title: "Proton-GE"; + + Adw.ActionRow { + title: "7-16"; + } + + Adw.ActionRow { + title: "7-15"; + } + + Adw.ActionRow { + title: "7-14"; + } + + Adw.ActionRow { + title: "7-12"; + } + + Adw.ActionRow { + title: "7-10"; + } + + Adw.ActionRow { + title: "7-9"; + } + } + + Adw.ExpanderRow { + title: "Lutris"; + + Adw.ActionRow { + title: "7-16"; + } + + Adw.ActionRow { + title: "7-15"; + } + + Adw.ActionRow { + title: "7-14"; + } + + Adw.ActionRow { + title: "7-12"; + } + + Adw.ActionRow { + title: "7-10"; + } + + Adw.ActionRow { + title: "7-9"; + } + } + } + + Adw.PreferencesGroup { + title: "DXVK version"; + + Adw.ExpanderRow { + title: "Vanilla"; + + Adw.ActionRow { + title: "1.10.1"; + } + + Adw.ActionRow { + title: "1.10"; + } + + Adw.ActionRow { + title: "1.9.4"; + } + + Adw.ActionRow { + title: "1.9.3"; + } + + Adw.ActionRow { + title: "1.9.2"; + } + + Adw.ActionRow { + title: "1.9.1"; + } + } + + Adw.ExpanderRow { + title: "Async"; + subtitle: "This version is not recommended for usage as can lead to anti-cheat detection"; + + Adw.ActionRow { + title: "1.10.1"; + } + + Adw.ActionRow { + title: "1.10"; + } + + Adw.ActionRow { + title: "1.9.4"; + } + + Adw.ActionRow { + title: "1.9.3"; + } + + Adw.ActionRow { + title: "1.9.2"; + } + + Adw.ActionRow { + title: "1.9.1"; + } + } + } + }; + } + + Gtk.StackPage { + title: "Enhancements"; + + child: Adw.PreferencesPage { + title: "Enhancements"; + + Adw.PreferencesGroup { + title: "Wine"; + + Adw.ComboRow { + title: "HUD"; + + model: Gtk.StringList { + strings [ + "None", + "DXVK", + "MangoHUD" + ] + }; + } + + Adw.ComboRow { + title: "Synchronization"; + subtitle: "Technology used to synchronize inner wine events"; + + model: Gtk.StringList { + strings [ + "None", + "ESync", + "FSync", + "Futex2" + ] + }; + } + + Adw.ComboRow { + title: "FSR"; + subtitle: "AMD FSR scales game resolution while rendering the game with the lower one"; + + model: Gtk.StringList { + strings [ + "Ultra Quality", + "Quality", + "Performance", + "Balanced" + ] + }; + + Gtk.Switch { + valign: center; + } + } + } + + Adw.PreferencesGroup { + title: "Game"; + + Adw.ActionRow { + title: "Gamemode"; + subtitle: "This prioritizes the game over the rest of the processes"; + + Gtk.Switch { + valign: center; + } + } + } + }; + } + }; + } +}