mirror of
https://gitlab.com/gabmus/envision.git
synced 2025-08-03 22:58:44 +00:00
feat!: new adwaita 1.4 styling
This commit is contained in:
parent
356e1152e8
commit
376c7ce01f
13 changed files with 195 additions and 201 deletions
126
Cargo.lock
generated
126
Cargo.lock
generated
|
@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aho-corasick"
|
name = "aho-corasick"
|
||||||
version = "1.0.5"
|
version = "1.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783"
|
checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
@ -40,7 +40,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -89,7 +89,7 @@ dependencies = [
|
||||||
"regex",
|
"regex",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"shlex",
|
"shlex",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
"which",
|
"which",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -128,9 +128,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.13.0"
|
version = "3.14.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytes"
|
name = "bytes"
|
||||||
|
@ -140,9 +140,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cairo-rs"
|
name = "cairo-rs"
|
||||||
version = "0.18.0"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d859b656775a6b1dd078d3e5924884e6ea88aa649a7fdde03d5b2ec56ffcc10b"
|
checksum = "1c0466dfa8c0ee78deef390c274ad756801e0a6dbb86c5ef0924a298c5761c4d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.0",
|
"bitflags 2.4.0",
|
||||||
"cairo-sys-rs",
|
"cairo-sys-rs",
|
||||||
|
@ -154,9 +154,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cairo-sys-rs"
|
name = "cairo-sys-rs"
|
||||||
version = "0.18.0"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bd4d115132e01c0165e3bf5f56aedee8980b0b96ede4eb000b693c05a8adb8ff"
|
checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib-sys",
|
"glib-sys",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -263,7 +263,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -459,7 +459,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -520,9 +520,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gdk4"
|
name = "gdk4"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6982d9815ed6ac95b0467b189e81f29dea26d08a732926ec113e65744ed3f96c"
|
checksum = "7edb019ad581f8ecf8ea8e4baa6df7c483a95b5a59be3140be6a9c3b0c632af6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cairo-rs",
|
"cairo-rs",
|
||||||
"gdk-pixbuf",
|
"gdk-pixbuf",
|
||||||
|
@ -591,9 +591,9 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gio"
|
name = "gio"
|
||||||
version = "0.18.1"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7884cba6b1c5db1607d970cadf44b14a43913d42bc68766eea6a5e2fe0891524"
|
checksum = "57052f84e8e5999b258e8adf8f5f2af0ac69033864936b8b6838321db2f759b1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
@ -638,9 +638,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glib"
|
name = "glib"
|
||||||
version = "0.18.1"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "331156127e8166dd815cf8d2db3a5beb492610c716c03ee6db4f2d07092af0a7"
|
checksum = "1c316afb01ce8067c5eaab1fc4f2cd47dc21ce7b6296358605e2ffab23ccbd19"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.0",
|
"bitflags 2.4.0",
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
|
@ -661,16 +661,16 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glib-macros"
|
name = "glib-macros"
|
||||||
version = "0.18.0"
|
version = "0.18.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "179643c50bf28d20d2f6eacd2531a88f2f5d9747dd0b86b8af1e8bb5dd0de3c0"
|
checksum = "f8da903822b136d42360518653fcf154455defc437d3e7a81475bf9a95ff1e47"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro-error",
|
"proc-macro-error",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -725,9 +725,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gsk4"
|
name = "gsk4"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cc25855255120f294d874acd6eaf4fbed7ce1cdc550e2d8415ea57fafbe816d5"
|
checksum = "0d958e351d2f210309b32d081c832d7de0aca0b077aa10d88336c6379bd01f7e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cairo-rs",
|
"cairo-rs",
|
||||||
"gdk4",
|
"gdk4",
|
||||||
|
@ -740,9 +740,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gsk4-sys"
|
name = "gsk4-sys"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e1ecf3a63bf1223d68f80f72cc896c4d8c80482fbce1c9a12c66d3de7290ee46"
|
checksum = "12bd9e3effea989f020e8f1ff3fa3b8c63ba93d43b899c11a118868853a56d55"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cairo-sys-rs",
|
"cairo-sys-rs",
|
||||||
"gdk4-sys",
|
"gdk4-sys",
|
||||||
|
@ -756,9 +756,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gtk4"
|
name = "gtk4"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3b095b26f2a2df70be1805d3590eeb9d7a05ecb5be9649b82defc72dc56228c"
|
checksum = "5aeb51aa3e9728575a053e1f43543cd9992ac2477e1b186ad824fd4adfb70842"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cairo-rs",
|
"cairo-rs",
|
||||||
"field-offset",
|
"field-offset",
|
||||||
|
@ -791,9 +791,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gtk4-sys"
|
name = "gtk4-sys"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7b0bdde87c50317b4f355bcbb4a9c2c414ece1b7c824fb4ad4ba8f3bdb2c6603"
|
checksum = "54d8c4aa23638ce9faa2caf7e2a27d4a1295af2155c8e8d28c4d4eeca7a65eb8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cairo-sys-rs",
|
"cairo-sys-rs",
|
||||||
"gdk-pixbuf-sys",
|
"gdk-pixbuf-sys",
|
||||||
|
@ -847,9 +847,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
|
checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "home"
|
name = "home"
|
||||||
|
@ -1005,9 +1005,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libadwaita"
|
name = "libadwaita"
|
||||||
version = "0.5.2"
|
version = "0.5.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "06444f4ca05a60693da6e9e2b591bd40a298e65a118a8d5e830771718b3e0253"
|
checksum = "2fe7e70c06507ed10a16cda707f358fbe60fe0dc237498f78c686ade92fd979c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gdk-pixbuf",
|
"gdk-pixbuf",
|
||||||
"gdk4",
|
"gdk4",
|
||||||
|
@ -1021,9 +1021,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libadwaita-sys"
|
name = "libadwaita-sys"
|
||||||
version = "0.5.2"
|
version = "0.5.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "021cfe3d1fcfa82411765a791f7e9b32f35dd98ce88d2e3fa10e7320f5cc8ce7"
|
checksum = "5e10aaa38de1d53374f90deeb4535209adc40cc5dba37f9704724169bceec69a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gdk4-sys",
|
"gdk4-sys",
|
||||||
"gio-sys",
|
"gio-sys",
|
||||||
|
@ -1352,7 +1352,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1439,7 +1439,7 @@ dependencies = [
|
||||||
"phf_shared",
|
"phf_shared",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1482,7 +1482,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
|
checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1607,9 +1607,9 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "relm4"
|
name = "relm4"
|
||||||
version = "0.7.0-alpha.1"
|
version = "0.7.0-beta.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d307673e36bb450a4823d500d661f53e1622a685b330149c193b791687146b3f"
|
checksum = "0f324ac78fb652034ff63c392b3aabad02b4a04cd802e73555e0bff07a21e08b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"flume",
|
"flume",
|
||||||
|
@ -1625,9 +1625,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "relm4-components"
|
name = "relm4-components"
|
||||||
version = "0.7.0-alpha.1"
|
version = "0.7.0-beta.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bfffa2b1c9e0f2c9a35602ebe9d55358728a3dd1a7e10ed1f2df0216e6b04634"
|
checksum = "5b28bfc632d7e26eea6481c52f4ef3f718155fe5bf962504c2a283620b38df0a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"relm4",
|
"relm4",
|
||||||
|
@ -1636,13 +1636,13 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "relm4-macros"
|
name = "relm4-macros"
|
||||||
version = "0.7.0-alpha.1"
|
version = "0.7.0-beta.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d1892cdfb2df6c8bbe5a84451d3979125255e31437c0bfd14c81bde93ff0cf6"
|
checksum = "7cdf60cdb41e28131b6c0d830db742dc2b9ea311ef319f08cfac28567ec1d938"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1705,9 +1705,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustix"
|
name = "rustix"
|
||||||
version = "0.38.13"
|
version = "0.38.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662"
|
checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.0",
|
"bitflags 2.4.0",
|
||||||
"errno",
|
"errno",
|
||||||
|
@ -1762,9 +1762,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "semver"
|
name = "semver"
|
||||||
version = "1.0.18"
|
version = "1.0.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
|
checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
|
@ -1783,14 +1783,14 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.106"
|
version = "1.0.107"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2"
|
checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
|
@ -1841,9 +1841,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.11.0"
|
version = "1.11.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
|
checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
|
@ -1922,9 +1922,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.33"
|
version = "2.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9caece70c63bfba29ec2fed841a09851b14a235c60010fa4de58089b6c025668"
|
checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -1986,7 +1986,7 @@ checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2032,9 +2032,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-util"
|
name = "tokio-util"
|
||||||
version = "0.7.8"
|
version = "0.7.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
|
checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
@ -2104,7 +2104,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2133,7 +2133,7 @@ checksum = "ca029746fbe0efda3298205de77bf759d7fef23ac97902641e0b49a623b0455f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2244,7 +2244,7 @@ dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2278,7 +2278,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.33",
|
"syn 2.0.37",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
|
|
@ -15,8 +15,8 @@ gtk4 = { version = "0.7.2", features = [
|
||||||
"v4_10",
|
"v4_10",
|
||||||
] }
|
] }
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
libadwaita = { version = "0.5.2", features = [
|
libadwaita = { version = "0.5.3", features = [
|
||||||
"v1_3"
|
"v1_4"
|
||||||
] }
|
] }
|
||||||
libmonado-rs = { git = "https://github.com/technobaboo/libmonado-rs", version = "0.1.0" }
|
libmonado-rs = { git = "https://github.com/technobaboo/libmonado-rs", version = "0.1.0" }
|
||||||
libusb = "0.3.0"
|
libusb = "0.3.0"
|
||||||
|
@ -25,7 +25,7 @@ nix = { version = "0.26.4", features = [
|
||||||
] }
|
] }
|
||||||
phf = "0.11.2"
|
phf = "0.11.2"
|
||||||
phf_macros = "0.11.2"
|
phf_macros = "0.11.2"
|
||||||
relm4 = { version = "0.7.0-alpha.1", features = [
|
relm4 = { version = "0.7.0-beta.1", features = [
|
||||||
"libadwaita"
|
"libadwaita"
|
||||||
] }
|
] }
|
||||||
relm4-components = "0.7.0-alpha.1"
|
relm4-components = "0.7.0-alpha.1"
|
||||||
|
|
|
@ -73,6 +73,8 @@ pub struct App {
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
debug_view: Controller<DebugView>,
|
debug_view: Controller<DebugView>,
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
|
split_view: Option<adw::OverlaySplitView>,
|
||||||
|
#[tracker::do_not_track]
|
||||||
about_dialog: Controller<AboutDialog>,
|
about_dialog: Controller<AboutDialog>,
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
build_window: Controller<BuildWindow>,
|
build_window: Controller<BuildWindow>,
|
||||||
|
@ -258,21 +260,23 @@ impl SimpleComponent for App {
|
||||||
adw::ApplicationWindow {
|
adw::ApplicationWindow {
|
||||||
set_title: Some(APP_NAME),
|
set_title: Some(APP_NAME),
|
||||||
set_default_size: (win_size[0], win_size[1]),
|
set_default_size: (win_size[0], win_size[1]),
|
||||||
|
set_width_request: 390,
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
gtk::Box {
|
#[name = "split_view"]
|
||||||
set_orientation: gtk::Orientation::Horizontal,
|
adw::OverlaySplitView {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
model.main_view.widget(),
|
set_content: Some(model.main_view.widget()),
|
||||||
gtk::Separator {
|
set_sidebar: Some(model.debug_view.widget()),
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_sidebar_position: gtk::PackType::End,
|
||||||
#[track = "model.changed(App::enable_debug_view())"]
|
set_show_sidebar: model.config.debug_view_enabled,
|
||||||
set_visible: model.enable_debug_view,
|
set_sidebar_width_fraction: 1.0,
|
||||||
},
|
// stupid way to make sidebar hexpand
|
||||||
model.debug_view.widget(),
|
set_max_sidebar_width: 999999.9,
|
||||||
|
set_pin_sidebar: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
connect_close_request[sender] => move |win| {
|
connect_close_request[sender] => move |win| {
|
||||||
|
@ -365,9 +369,7 @@ impl SimpleComponent for App {
|
||||||
self.set_enable_debug_view(val);
|
self.set_enable_debug_view(val);
|
||||||
self.config.debug_view_enabled = val;
|
self.config.debug_view_enabled = val;
|
||||||
self.config.save();
|
self.config.save();
|
||||||
self.debug_view
|
self.split_view.clone().unwrap().set_show_sidebar(val);
|
||||||
.sender()
|
|
||||||
.emit(DebugViewMsg::EnableDebugViewChanged(val));
|
|
||||||
self.main_view
|
self.main_view
|
||||||
.sender()
|
.sender()
|
||||||
.emit(MainViewMsg::EnableDebugViewChanged(val));
|
.emit(MainViewMsg::EnableDebugViewChanged(val));
|
||||||
|
@ -623,7 +625,7 @@ impl SimpleComponent for App {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let model = App {
|
let mut model = App {
|
||||||
application: init.application,
|
application: init.application,
|
||||||
app_win: root.clone(),
|
app_win: root.clone(),
|
||||||
inhibit_id: None,
|
inhibit_id: None,
|
||||||
|
@ -642,13 +644,12 @@ impl SimpleComponent for App {
|
||||||
MainViewOutMsg::SaveProfile(p) => Msg::SaveProfile(p),
|
MainViewOutMsg::SaveProfile(p) => Msg::SaveProfile(p),
|
||||||
MainViewOutMsg::OpenLibsurviveSetup => Msg::OpenLibsurviveSetup,
|
MainViewOutMsg::OpenLibsurviveSetup => Msg::OpenLibsurviveSetup,
|
||||||
}),
|
}),
|
||||||
debug_view: DebugView::builder()
|
debug_view: DebugView::builder().launch(DebugViewInit {}).forward(
|
||||||
.launch(DebugViewInit {
|
sender.input_sender(),
|
||||||
enable_debug_view: config.debug_view_enabled,
|
|message| match message {
|
||||||
})
|
|
||||||
.forward(sender.input_sender(), |message| match message {
|
|
||||||
_ => Msg::ClockTicking,
|
_ => Msg::ClockTicking,
|
||||||
}),
|
},
|
||||||
|
),
|
||||||
about_dialog: AboutDialog::builder()
|
about_dialog: AboutDialog::builder()
|
||||||
.transient_for(root)
|
.transient_for(root)
|
||||||
.launch(())
|
.launch(())
|
||||||
|
@ -663,6 +664,7 @@ impl SimpleComponent for App {
|
||||||
.transient_for(root)
|
.transient_for(root)
|
||||||
.launch(())
|
.launch(())
|
||||||
.detach(),
|
.detach(),
|
||||||
|
split_view: None,
|
||||||
setcap_confirm_dialog,
|
setcap_confirm_dialog,
|
||||||
enable_debug_view: config.debug_view_enabled,
|
enable_debug_view: config.debug_view_enabled,
|
||||||
config,
|
config,
|
||||||
|
@ -743,6 +745,8 @@ impl SimpleComponent for App {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
model.split_view = Some(widgets.split_view.clone());
|
||||||
|
|
||||||
ComponentParts { model, widgets }
|
ComponentParts { model, widgets }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ pub enum SearchDirection {
|
||||||
pub enum DebugViewMsg {
|
pub enum DebugViewMsg {
|
||||||
LogUpdated(Vec<String>),
|
LogUpdated(Vec<String>),
|
||||||
ClearLog,
|
ClearLog,
|
||||||
EnableDebugViewChanged(bool),
|
|
||||||
FilterLog(SearchDirection),
|
FilterLog(SearchDirection),
|
||||||
LogLevelChanged(LogLevel),
|
LogLevelChanged(LogLevel),
|
||||||
}
|
}
|
||||||
|
@ -45,13 +44,9 @@ pub struct DebugView {
|
||||||
search_mark: Option<gtk::TextMark>,
|
search_mark: Option<gtk::TextMark>,
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
log_level: LogLevel,
|
log_level: LogLevel,
|
||||||
|
|
||||||
enable_debug_view: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DebugViewInit {
|
pub struct DebugViewInit {}
|
||||||
pub enable_debug_view: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[relm4::component(pub)]
|
#[relm4::component(pub)]
|
||||||
impl SimpleComponent for DebugView {
|
impl SimpleComponent for DebugView {
|
||||||
|
@ -64,34 +59,23 @@ impl SimpleComponent for DebugView {
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
#[track = "model.changed(DebugView::enable_debug_view())"]
|
adw::HeaderBar {
|
||||||
set_visible: model.enable_debug_view,
|
|
||||||
gtk::WindowHandle {
|
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
adw::HeaderBar {
|
add_css_class: "flat",
|
||||||
#[wrap(Some)]
|
#[wrap(Some)]
|
||||||
set_title_widget: title_label = >k::Label {
|
set_title_widget: title_label = &adw::WindowTitle {
|
||||||
set_label: "Debug View",
|
set_title: "Debug View",
|
||||||
add_css_class: "title",
|
|
||||||
},
|
},
|
||||||
pack_end: search_toggle = >k::ToggleButton {
|
pack_end: search_toggle = >k::ToggleButton {
|
||||||
set_icon_name: "edit-find-symbolic",
|
set_icon_name: "edit-find-symbolic",
|
||||||
set_tooltip_text: Some("Filter Log"),
|
set_tooltip_text: Some("Filter Log"),
|
||||||
},
|
},
|
||||||
pack_start: log_level_dropdown = >k::DropDown::from_strings(
|
pack_start: &log_level_dropdown,
|
||||||
LogLevel::iter()
|
|
||||||
.map(|lvl| lvl.to_string())
|
|
||||||
.collect::<Vec<String>>()
|
|
||||||
.iter()
|
|
||||||
.map(|s| s.as_str())
|
|
||||||
.collect::<Vec<&str>>()
|
|
||||||
.as_slice()
|
|
||||||
),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
#[name(searchbar)]
|
#[name(searchbar)]
|
||||||
gtk::SearchBar {
|
gtk::SearchBar {
|
||||||
|
set_margin_start: 1,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
#[chain(flags(gtk::glib::BindingFlags::BIDIRECTIONAL).build())]
|
#[chain(flags(gtk::glib::BindingFlags::BIDIRECTIONAL).build())]
|
||||||
bind_property: ("search-mode-enabled", &search_toggle, "active"),
|
bind_property: ("search-mode-enabled", &search_toggle, "active"),
|
||||||
|
@ -131,8 +115,10 @@ impl SimpleComponent for DebugView {
|
||||||
gtk::ScrolledWindow {
|
gtk::ScrolledWindow {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
|
add_css_class: "undershoot-top",
|
||||||
#[name(textview)]
|
#[name(textview)]
|
||||||
sourceview5::View {
|
sourceview5::View {
|
||||||
|
set_margin_start: 1,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
set_editable: false,
|
set_editable: false,
|
||||||
|
@ -227,21 +213,21 @@ impl SimpleComponent for DebugView {
|
||||||
self.log = vec![];
|
self.log = vec![];
|
||||||
self.textbuf.set_text("");
|
self.textbuf.set_text("");
|
||||||
}
|
}
|
||||||
Self::Input::EnableDebugViewChanged(val) => self.set_enable_debug_view(val),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init(
|
fn init(
|
||||||
init: Self::Init,
|
_init: Self::Init,
|
||||||
root: &Self::Root,
|
root: &Self::Root,
|
||||||
sender: ComponentSender<Self>,
|
sender: ComponentSender<Self>,
|
||||||
) -> ComponentParts<Self> {
|
) -> ComponentParts<Self> {
|
||||||
let textbuf = sourceview5::Buffer::builder()
|
let textbuf = sourceview5::Buffer::builder()
|
||||||
.highlight_syntax(false)
|
.highlight_syntax(false)
|
||||||
.build();
|
.build();
|
||||||
match &sourceview5::StyleSchemeManager::new().scheme("Adwaita-dark") {
|
if let Some(scheme) = &sourceview5::StyleSchemeManager::new().scheme("Adwaita-dark") {
|
||||||
Some(scheme) => textbuf.set_style_scheme(Some(scheme)),
|
textbuf.set_style_scheme(Some(scheme));
|
||||||
None => {}
|
} else {
|
||||||
|
println!("gtksourceview style scheme not found")
|
||||||
}
|
}
|
||||||
let search_settings = sourceview5::SearchSettings::builder()
|
let search_settings = sourceview5::SearchSettings::builder()
|
||||||
.wrap_around(true)
|
.wrap_around(true)
|
||||||
|
@ -251,12 +237,36 @@ impl SimpleComponent for DebugView {
|
||||||
.buffer(&textbuf)
|
.buffer(&textbuf)
|
||||||
.settings(&search_settings)
|
.settings(&search_settings)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
let log_level_dropdown = gtk::DropDown::from_strings(
|
||||||
|
LogLevel::iter()
|
||||||
|
.map(|lvl| lvl.to_string())
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.iter()
|
||||||
|
.map(|s| s.as_str())
|
||||||
|
.collect::<Vec<&str>>()
|
||||||
|
.as_slice(),
|
||||||
|
);
|
||||||
|
if let Some(btn) = log_level_dropdown.first_child() {
|
||||||
|
btn.add_css_class("flat");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
withclones![sender];
|
||||||
|
log_level_dropdown.connect_selected_notify(move |dd| {
|
||||||
|
sender.input(Self::Input::LogLevelChanged(
|
||||||
|
*LogLevel::iter()
|
||||||
|
.as_slice()
|
||||||
|
.get(dd.selected() as usize)
|
||||||
|
.unwrap(),
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let mut model = Self {
|
let mut model = Self {
|
||||||
tracker: 0,
|
tracker: 0,
|
||||||
log: vec![],
|
log: vec![],
|
||||||
textbuf,
|
textbuf,
|
||||||
textview: None,
|
textview: None,
|
||||||
enable_debug_view: init.enable_debug_view,
|
|
||||||
searchbar: None,
|
searchbar: None,
|
||||||
search_entry: None,
|
search_entry: None,
|
||||||
dropdown: None,
|
dropdown: None,
|
||||||
|
@ -271,23 +281,9 @@ impl SimpleComponent for DebugView {
|
||||||
model.searchbar = Some(widgets.searchbar.clone());
|
model.searchbar = Some(widgets.searchbar.clone());
|
||||||
model.search_entry = Some(widgets.search_entry.clone());
|
model.search_entry = Some(widgets.search_entry.clone());
|
||||||
model.textview = Some(widgets.textview.clone());
|
model.textview = Some(widgets.textview.clone());
|
||||||
model.dropdown = Some(widgets.log_level_dropdown.clone());
|
model.dropdown = Some(log_level_dropdown.clone());
|
||||||
model.scrolledwin = Some(widgets.scrolledwin.clone());
|
model.scrolledwin = Some(widgets.scrolledwin.clone());
|
||||||
|
|
||||||
{
|
|
||||||
withclones![sender];
|
|
||||||
widgets
|
|
||||||
.log_level_dropdown
|
|
||||||
.connect_selected_notify(move |dd| {
|
|
||||||
sender.input(Self::Input::LogLevelChanged(
|
|
||||||
*LogLevel::iter()
|
|
||||||
.as_slice()
|
|
||||||
.get(dd.selected() as usize)
|
|
||||||
.unwrap(),
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
ComponentParts { model, widgets }
|
ComponentParts { model, widgets }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,14 @@ use crate::{
|
||||||
xr_devices::{XRDevice, XRDeviceType},
|
xr_devices::{XRDevice, XRDeviceType},
|
||||||
};
|
};
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::{factory::FactoryVecDeque, prelude::*, Sender};
|
use relm4::{factory::AsyncFactoryVecDeque, prelude::*, Sender};
|
||||||
|
|
||||||
#[tracker::track]
|
#[tracker::track]
|
||||||
pub struct DevicesBox {
|
pub struct DevicesBox {
|
||||||
devices: Vec<XRDevice>,
|
devices: Vec<XRDevice>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
device_rows: FactoryVecDeque<DeviceRowModel>,
|
device_rows: AsyncFactoryVecDeque<DeviceRowModel>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -53,10 +53,8 @@ impl SimpleComponent for DevicesBox {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_top: 12,
|
|
||||||
#[track = "model.changed(Self::devices())"]
|
#[track = "model.changed(Self::devices())"]
|
||||||
set_visible: !model.devices.is_empty(),
|
set_visible: !model.devices.is_empty(),
|
||||||
|
|
||||||
append: &devices_listbox,
|
append: &devices_listbox,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,16 +188,12 @@ impl SimpleComponent for DevicesBox {
|
||||||
let devices_listbox = gtk::ListBox::builder()
|
let devices_listbox = gtk::ListBox::builder()
|
||||||
.css_classes(["boxed-list"])
|
.css_classes(["boxed-list"])
|
||||||
.selection_mode(gtk::SelectionMode::None)
|
.selection_mode(gtk::SelectionMode::None)
|
||||||
.margin_start(12)
|
|
||||||
.margin_end(12)
|
|
||||||
.margin_top(12)
|
|
||||||
.margin_bottom(12)
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let model = Self {
|
let model = Self {
|
||||||
tracker: 0,
|
tracker: 0,
|
||||||
devices: vec![],
|
devices: vec![],
|
||||||
device_rows: FactoryVecDeque::new(devices_listbox.clone(), sender.input_sender()),
|
device_rows: AsyncFactoryVecDeque::new(devices_listbox.clone(), sender.input_sender()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let widgets = view_output!();
|
let widgets = view_output!();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::prelude::*;
|
use relm4::{factory::AsyncFactoryComponent, prelude::*, AsyncFactorySender};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ui::devices_box::DevicesBoxMsg,
|
ui::devices_box::DevicesBoxMsg,
|
||||||
|
@ -72,13 +72,12 @@ impl DeviceRowModelInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[relm4::factory(pub)]
|
#[relm4::factory(async pub)]
|
||||||
impl FactoryComponent for DeviceRowModel {
|
impl AsyncFactoryComponent for DeviceRowModel {
|
||||||
type Init = DeviceRowModelInit;
|
type Init = DeviceRowModelInit;
|
||||||
type Input = ();
|
type Input = ();
|
||||||
type Output = ();
|
type Output = ();
|
||||||
type CommandOutput = ();
|
type CommandOutput = ();
|
||||||
type Widgets = DeviceRowModelWidgets;
|
|
||||||
type ParentInput = DevicesBoxMsg;
|
type ParentInput = DevicesBoxMsg;
|
||||||
type ParentWidget = gtk::ListBox;
|
type ParentWidget = gtk::ListBox;
|
||||||
|
|
||||||
|
@ -95,10 +94,10 @@ impl FactoryComponent for DeviceRowModel {
|
||||||
|
|
||||||
fn init_widgets(
|
fn init_widgets(
|
||||||
&mut self,
|
&mut self,
|
||||||
_index: &Self::Index,
|
_index: &DynamicIndex,
|
||||||
root: &Self::Root,
|
root: &Self::Root,
|
||||||
_returned_widget: &<Self::ParentWidget as relm4::factory::FactoryView>::ReturnedWidget,
|
_returned_widget: &<Self::ParentWidget as relm4::factory::FactoryView>::ReturnedWidget,
|
||||||
_sender: FactorySender<Self>,
|
_sender: AsyncFactorySender<Self>,
|
||||||
) -> Self::Widgets {
|
) -> Self::Widgets {
|
||||||
let widgets = view_output!();
|
let widgets = view_output!();
|
||||||
|
|
||||||
|
@ -113,7 +112,11 @@ impl FactoryComponent for DeviceRowModel {
|
||||||
widgets
|
widgets
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_model(init: Self::Init, _index: &Self::Index, _sender: FactorySender<Self>) -> Self {
|
async fn init_model(
|
||||||
|
init: Self::Init,
|
||||||
|
_index: &DynamicIndex,
|
||||||
|
_sender: AsyncFactorySender<Self>,
|
||||||
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
title: init.title.unwrap_or_default(),
|
title: init.title.unwrap_or_default(),
|
||||||
subtitle: init.subtitle.unwrap_or_default(),
|
subtitle: init.subtitle.unwrap_or_default(),
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::ui::profile_editor::ProfileEditorMsg;
|
use crate::ui::profile_editor::ProfileEditorMsg;
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::prelude::*;
|
use relm4::{factory::AsyncFactoryComponent, prelude::*, AsyncFactorySender};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct EnvVarModel {
|
pub struct EnvVarModel {
|
||||||
|
@ -25,13 +25,12 @@ pub enum EnvVarModelOutMsg {
|
||||||
Delete(String),
|
Delete(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[relm4::factory(pub)]
|
#[relm4::factory(async pub)]
|
||||||
impl FactoryComponent for EnvVarModel {
|
impl AsyncFactoryComponent for EnvVarModel {
|
||||||
type Init = EnvVarModelInit;
|
type Init = EnvVarModelInit;
|
||||||
type Input = EnvVarModelMsg;
|
type Input = EnvVarModelMsg;
|
||||||
type Output = EnvVarModelOutMsg;
|
type Output = EnvVarModelOutMsg;
|
||||||
type CommandOutput = ();
|
type CommandOutput = ();
|
||||||
type Widgets = EnvVarModelWidgets;
|
|
||||||
type ParentInput = ProfileEditorMsg;
|
type ParentInput = ProfileEditorMsg;
|
||||||
type ParentWidget = adw::PreferencesGroup;
|
type ParentWidget = adw::PreferencesGroup;
|
||||||
|
|
||||||
|
@ -55,7 +54,7 @@ impl FactoryComponent for EnvVarModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>) {
|
async fn update(&mut self, message: Self::Input, sender: AsyncFactorySender<Self>) {
|
||||||
match message {
|
match message {
|
||||||
Self::Input::Changed(val) => {
|
Self::Input::Changed(val) => {
|
||||||
self.value = val.clone();
|
self.value = val.clone();
|
||||||
|
@ -76,7 +75,11 @@ impl FactoryComponent for EnvVarModel {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_model(init: Self::Init, _index: &Self::Index, _sender: FactorySender<Self>) -> Self {
|
async fn init_model(
|
||||||
|
init: Self::Init,
|
||||||
|
_index: &DynamicIndex,
|
||||||
|
_sender: AsyncFactorySender<Self>,
|
||||||
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
name: init.name,
|
name: init.name,
|
||||||
value: init.value,
|
value: init.value,
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::{
|
||||||
withclones,
|
withclones,
|
||||||
};
|
};
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::prelude::*;
|
use relm4::{factory::AsyncFactoryComponent, prelude::*, AsyncFactorySender};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct TrackerRoleModel {
|
pub struct TrackerRoleModel {
|
||||||
|
@ -30,13 +30,12 @@ pub enum TrackerRoleModelOutMsg {
|
||||||
Delete(usize),
|
Delete(usize),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[relm4::factory(pub)]
|
#[relm4::factory(async pub)]
|
||||||
impl FactoryComponent for TrackerRoleModel {
|
impl AsyncFactoryComponent for TrackerRoleModel {
|
||||||
type Init = TrackerRoleModelInit;
|
type Init = TrackerRoleModelInit;
|
||||||
type Input = TrackerRoleModelMsg;
|
type Input = TrackerRoleModelMsg;
|
||||||
type Output = TrackerRoleModelOutMsg;
|
type Output = TrackerRoleModelOutMsg;
|
||||||
type CommandOutput = ();
|
type CommandOutput = ();
|
||||||
type Widgets = TrackerRoleModelWidgets;
|
|
||||||
type ParentInput = FbtConfigEditorMsg;
|
type ParentInput = FbtConfigEditorMsg;
|
||||||
type ParentWidget = adw::PreferencesPage;
|
type ParentWidget = adw::PreferencesPage;
|
||||||
|
|
||||||
|
@ -90,7 +89,7 @@ impl FactoryComponent for TrackerRoleModel {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>) {
|
async fn update(&mut self, message: Self::Input, sender: AsyncFactorySender<Self>) {
|
||||||
match message {
|
match message {
|
||||||
Self::Input::Changed(r) => {
|
Self::Input::Changed(r) => {
|
||||||
self.tracker_role = r;
|
self.tracker_role = r;
|
||||||
|
@ -100,7 +99,11 @@ impl FactoryComponent for TrackerRoleModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_model(init: Self::Init, _index: &Self::Index, _sender: FactorySender<Self>) -> Self {
|
async fn init_model(
|
||||||
|
init: Self::Init,
|
||||||
|
_index: &DynamicIndex,
|
||||||
|
_sender: AsyncFactorySender<Self>,
|
||||||
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
index: init.index,
|
index: init.index,
|
||||||
tracker_role: init.tracker_role.unwrap_or_else(|| TrackerRole::default()),
|
tracker_role: init.tracker_role.unwrap_or_else(|| TrackerRole::default()),
|
||||||
|
|
|
@ -7,7 +7,10 @@ use crate::{
|
||||||
withclones,
|
withclones,
|
||||||
};
|
};
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::{factory::FactoryVecDeque, prelude::*};
|
use relm4::{
|
||||||
|
factory::{AsyncFactoryVecDeque, FactoryVecDeque},
|
||||||
|
prelude::*,
|
||||||
|
};
|
||||||
|
|
||||||
#[tracker::track]
|
#[tracker::track]
|
||||||
pub struct FbtConfigEditor {
|
pub struct FbtConfigEditor {
|
||||||
|
@ -17,7 +20,7 @@ pub struct FbtConfigEditor {
|
||||||
win: Option<adw::Window>,
|
win: Option<adw::Window>,
|
||||||
|
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
tracker_role_groups: FactoryVecDeque<TrackerRoleModel>,
|
tracker_role_groups: AsyncFactoryVecDeque<TrackerRoleModel>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -137,7 +140,7 @@ impl SimpleComponent for FbtConfigEditor {
|
||||||
win: None,
|
win: None,
|
||||||
tracker: 0,
|
tracker: 0,
|
||||||
monado_config_v0: get_monado_config_v0(),
|
monado_config_v0: get_monado_config_v0(),
|
||||||
tracker_role_groups: FactoryVecDeque::new(page, sender.input_sender()),
|
tracker_role_groups: AsyncFactoryVecDeque::new(page, sender.input_sender()),
|
||||||
};
|
};
|
||||||
|
|
||||||
model.populate_tracker_roles();
|
model.populate_tracker_roles();
|
||||||
|
|
|
@ -70,7 +70,6 @@ impl SimpleComponent for InstallWivrnBox {
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::selected_profile())"]
|
#[track = "model.changed(Self::selected_profile())"]
|
||||||
|
|
|
@ -123,20 +123,20 @@ impl SimpleComponent for MainView {
|
||||||
}
|
}
|
||||||
|
|
||||||
view! {
|
view! {
|
||||||
gtk::Box {
|
// TODO: refactor with adw.toolbarview
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
adw::ToolbarView {
|
||||||
|
set_top_bar_style: adw::ToolbarStyle::Flat,
|
||||||
|
set_bottom_bar_style: adw::ToolbarStyle::Flat,
|
||||||
#[track = "model.changed(Self::enable_debug_view())"]
|
#[track = "model.changed(Self::enable_debug_view())"]
|
||||||
set_hexpand: !model.enable_debug_view,
|
set_hexpand: !model.enable_debug_view,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
set_size_request: (360, 350),
|
set_size_request: (360, 350),
|
||||||
gtk::WindowHandle {
|
add_top_bar: top_bar = &adw::HeaderBar {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
adw::HeaderBar {
|
|
||||||
#[wrap(Some)]
|
#[wrap(Some)]
|
||||||
set_title_widget: title_label = >k::Label {
|
set_title_widget: title_label = &adw::WindowTitle {
|
||||||
set_label: APP_NAME,
|
set_title: APP_NAME,
|
||||||
add_css_class: "title",
|
|
||||||
},
|
},
|
||||||
pack_end: menu_btn = >k::MenuButton {
|
pack_end: menu_btn = >k::MenuButton {
|
||||||
set_icon_name: "open-menu-symbolic",
|
set_icon_name: "open-menu-symbolic",
|
||||||
|
@ -145,15 +145,14 @@ impl SimpleComponent for MainView {
|
||||||
#[track = "model.changed(Self::enable_debug_view())"]
|
#[track = "model.changed(Self::enable_debug_view())"]
|
||||||
set_show_end_title_buttons: !model.enable_debug_view,
|
set_show_end_title_buttons: !model.enable_debug_view,
|
||||||
},
|
},
|
||||||
},
|
#[wrap(Some)]
|
||||||
gtk::ScrolledWindow {
|
set_content: content = >k::ScrolledWindow {
|
||||||
set_hscrollbar_policy: gtk::PolicyType::Never,
|
set_hscrollbar_policy: gtk::PolicyType::Never,
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: true,
|
set_vexpand: true,
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_spacing: 6,
|
set_spacing: 12,
|
||||||
set_margin_top: 12,
|
set_margin_all: 12,
|
||||||
set_margin_bottom: 12,
|
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_halign: gtk::Align::Center,
|
set_halign: gtk::Align::Center,
|
||||||
|
@ -195,7 +194,6 @@ impl SimpleComponent for MainView {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::selected_profile())"]
|
#[track = "model.changed(Self::selected_profile())"]
|
||||||
|
@ -229,7 +227,6 @@ impl SimpleComponent for MainView {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::selected_profile())"]
|
#[track = "model.changed(Self::selected_profile())"]
|
||||||
|
@ -252,7 +249,6 @@ impl SimpleComponent for MainView {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::selected_profile())"]
|
#[track = "model.changed(Self::selected_profile())"]
|
||||||
|
@ -335,7 +331,6 @@ impl SimpleComponent for MainView {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::selected_profile())"]
|
#[track = "model.changed(Self::selected_profile())"]
|
||||||
|
@ -371,15 +366,10 @@ impl SimpleComponent for MainView {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
gtk::Separator {
|
add_bottom_bar: bottom_bar = >k::Box {
|
||||||
set_orientation: gtk::Orientation::Horizontal,
|
|
||||||
set_hexpand: true,
|
|
||||||
},
|
|
||||||
gtk::Box {
|
|
||||||
set_orientation: gtk::Orientation::Horizontal,
|
set_orientation: gtk::Orientation::Horizontal,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
add_css_class: "toolbar",
|
set_margin_all: 12,
|
||||||
add_css_class: "view",
|
|
||||||
gtk::Box {
|
gtk::Box {
|
||||||
set_orientation: gtk::Orientation::Horizontal,
|
set_orientation: gtk::Orientation::Horizontal,
|
||||||
add_css_class: "linked",
|
add_css_class: "linked",
|
||||||
|
|
|
@ -9,7 +9,7 @@ use crate::{
|
||||||
withclones,
|
withclones,
|
||||||
};
|
};
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use relm4::{factory::FactoryVecDeque, prelude::*};
|
use relm4::{factory::AsyncFactoryVecDeque, prelude::*};
|
||||||
use std::{cell::RefCell, rc::Rc};
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
#[tracker::track]
|
#[tracker::track]
|
||||||
|
@ -18,7 +18,7 @@ pub struct ProfileEditor {
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
win: Option<adw::Window>,
|
win: Option<adw::Window>,
|
||||||
#[tracker::do_not_track]
|
#[tracker::do_not_track]
|
||||||
env_rows: FactoryVecDeque<EnvVarModel>,
|
env_rows: AsyncFactoryVecDeque<EnvVarModel>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -360,7 +360,7 @@ impl SimpleComponent for ProfileEditor {
|
||||||
.env_rows
|
.env_rows
|
||||||
.guard()
|
.guard()
|
||||||
.iter()
|
.iter()
|
||||||
.position(|evr| evr.name == name);
|
.position(|evr| evr.unwrap().name == name);
|
||||||
if let Some(p) = pos {
|
if let Some(p) = pos {
|
||||||
self.env_rows.guard().remove(p);
|
self.env_rows.guard().remove(p);
|
||||||
}
|
}
|
||||||
|
@ -415,7 +415,7 @@ impl SimpleComponent for ProfileEditor {
|
||||||
let mut model = Self {
|
let mut model = Self {
|
||||||
profile,
|
profile,
|
||||||
win: None,
|
win: None,
|
||||||
env_rows: FactoryVecDeque::new(
|
env_rows: AsyncFactoryVecDeque::new(
|
||||||
adw::PreferencesGroup::builder()
|
adw::PreferencesGroup::builder()
|
||||||
.title("Environment Variables")
|
.title("Environment Variables")
|
||||||
.description(env_var_descriptions_as_paragraph())
|
.description(env_var_descriptions_as_paragraph())
|
||||||
|
|
|
@ -27,7 +27,6 @@ impl SimpleComponent for SteamLaunchOptionsBox {
|
||||||
set_hexpand: true,
|
set_hexpand: true,
|
||||||
set_vexpand: false,
|
set_vexpand: false,
|
||||||
set_spacing: 12,
|
set_spacing: 12,
|
||||||
set_margin_all: 12,
|
|
||||||
add_css_class: "card",
|
add_css_class: "card",
|
||||||
add_css_class: "padded",
|
add_css_class: "padded",
|
||||||
#[track = "model.changed(Self::xrservice_active())"]
|
#[track = "model.changed(Self::xrservice_active())"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue