feat: use libadwaita

This commit is contained in:
2025-06-20 23:42:31 -06:00
parent 0711df8381
commit 9872bf5245
4 changed files with 295 additions and 170 deletions

View File

@@ -1,3 +1,4 @@
{ {
"editor.inlayHints.enabled": "off" "editor.inlayHints.enabled": "off",
"editor.formatOnSave": true
} }

382
dot-matrix/Cargo.lock generated
View File

@@ -42,16 +42,14 @@ dependencies = [
[[package]] [[package]]
name = "cairo-rs" name = "cairo-rs"
version = "0.18.5" version = "0.20.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" checksum = "91e3bd0f4e25afa9cabc157908d14eeef9067d6448c49414d17b3fb55f0eadd0"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags 2.9.1",
"cairo-sys-rs 0.18.2", "cairo-sys-rs 0.20.10",
"glib 0.18.5", "glib 0.20.12",
"libc", "libc",
"once_cell",
"thiserror",
] ]
[[package]] [[package]]
@@ -62,18 +60,18 @@ checksum = "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1"
dependencies = [ dependencies = [
"glib-sys 0.17.10", "glib-sys 0.17.10",
"libc", "libc",
"system-deps", "system-deps 6.2.2",
] ]
[[package]] [[package]]
name = "cairo-sys-rs" name = "cairo-sys-rs"
version = "0.18.2" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" checksum = "059cc746549898cbfd9a47754288e5a958756650ef4652bbb6c5f71a6bda4f8b"
dependencies = [ dependencies = [
"glib-sys 0.18.1", "glib-sys 0.20.10",
"libc", "libc",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
@@ -83,7 +81,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
dependencies = [ dependencies = [
"smallvec", "smallvec",
"target-lexicon", "target-lexicon 0.12.16",
]
[[package]]
name = "cfg-expr"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e34e221e91c7eb5e8315b5c9cf1a61670938c0626451f954a51693ed44b37f45"
dependencies = [
"smallvec",
"target-lexicon 0.13.2",
] ]
[[package]] [[package]]
@@ -99,6 +107,7 @@ dependencies = [
"cairo-rs 0.17.10", "cairo-rs 0.17.10",
"glib 0.17.10", "glib 0.17.10",
"gtk4", "gtk4",
"libadwaita",
"rand", "rand",
"serde_json", "serde_json",
] ]
@@ -184,60 +193,59 @@ dependencies = [
[[package]] [[package]]
name = "gdk-pixbuf" name = "gdk-pixbuf"
version = "0.18.5" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" checksum = "2fd242894c084f4beed508a56952750bce3e96e85eb68fdc153637daa163e10c"
dependencies = [ dependencies = [
"gdk-pixbuf-sys", "gdk-pixbuf-sys",
"gio", "gio",
"glib 0.18.5", "glib 0.20.12",
"libc", "libc",
"once_cell",
] ]
[[package]] [[package]]
name = "gdk-pixbuf-sys" name = "gdk-pixbuf-sys"
version = "0.18.0" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" checksum = "5b34f3b580c988bd217e9543a2de59823fafae369d1a055555e5f95a8b130b96"
dependencies = [ dependencies = [
"gio-sys 0.18.1", "gio-sys 0.20.10",
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"libc", "libc",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
name = "gdk4" name = "gdk4"
version = "0.7.3" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7edb019ad581f8ecf8ea8e4baa6df7c483a95b5a59be3140be6a9c3b0c632af6" checksum = "4850c9d9c1aecd1a3eb14fadc1cdb0ac0a2298037e116264c7473e1740a32d60"
dependencies = [ dependencies = [
"cairo-rs 0.18.5", "cairo-rs 0.20.12",
"gdk-pixbuf", "gdk-pixbuf",
"gdk4-sys", "gdk4-sys",
"gio", "gio",
"glib 0.18.5", "glib 0.20.12",
"libc", "libc",
"pango", "pango",
] ]
[[package]] [[package]]
name = "gdk4-sys" name = "gdk4-sys"
version = "0.7.2" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0" checksum = "6f6eb95798e2b46f279cf59005daf297d5b69555428f185650d71974a910473a"
dependencies = [ dependencies = [
"cairo-sys-rs 0.18.2", "cairo-sys-rs 0.20.10",
"gdk-pixbuf-sys", "gdk-pixbuf-sys",
"gio-sys 0.18.1", "gio-sys 0.20.10",
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"libc", "libc",
"pango-sys", "pango-sys",
"pkg-config", "pkg-config",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
@@ -254,21 +262,19 @@ dependencies = [
[[package]] [[package]]
name = "gio" name = "gio"
version = "0.18.4" version = "0.20.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" checksum = "8e27e276e7b6b8d50f6376ee7769a71133e80d093bdc363bd0af71664228b831"
dependencies = [ dependencies = [
"futures-channel", "futures-channel",
"futures-core", "futures-core",
"futures-io", "futures-io",
"futures-util", "futures-util",
"gio-sys 0.18.1", "gio-sys 0.20.10",
"glib 0.18.5", "glib 0.20.12",
"libc", "libc",
"once_cell",
"pin-project-lite", "pin-project-lite",
"smallvec", "smallvec",
"thiserror",
] ]
[[package]] [[package]]
@@ -280,21 +286,21 @@ dependencies = [
"glib-sys 0.17.10", "glib-sys 0.17.10",
"gobject-sys 0.17.10", "gobject-sys 0.17.10",
"libc", "libc",
"system-deps", "system-deps 6.2.2",
"winapi", "winapi",
] ]
[[package]] [[package]]
name = "gio-sys" name = "gio-sys"
version = "0.18.1" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" checksum = "521e93a7e56fc89e84aea9a52cfc9436816a4b363b030260b699950ff1336c83"
dependencies = [ dependencies = [
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"libc", "libc",
"system-deps", "system-deps 7.0.5",
"winapi", "windows-sys",
] ]
[[package]] [[package]]
@@ -322,9 +328,9 @@ dependencies = [
[[package]] [[package]]
name = "glib" name = "glib"
version = "0.18.5" version = "0.20.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" checksum = "ffc4b6e352d4716d84d7dde562dd9aee2a7d48beb872dd9ece7f2d1515b2d683"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags 2.9.1",
"futures-channel", "futures-channel",
@@ -332,15 +338,13 @@ dependencies = [
"futures-executor", "futures-executor",
"futures-task", "futures-task",
"futures-util", "futures-util",
"gio-sys 0.18.1", "gio-sys 0.20.10",
"glib-macros 0.18.5", "glib-macros 0.20.12",
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"libc", "libc",
"memchr", "memchr",
"once_cell",
"smallvec", "smallvec",
"thiserror",
] ]
[[package]] [[package]]
@@ -360,13 +364,12 @@ dependencies = [
[[package]] [[package]]
name = "glib-macros" name = "glib-macros"
version = "0.18.5" version = "0.20.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" checksum = "e8084af62f09475a3f529b1629c10c429d7600ee1398ae12dd3bf175d74e7145"
dependencies = [ dependencies = [
"heck 0.4.1", "heck 0.5.0",
"proc-macro-crate 2.0.2", "proc-macro-crate 3.3.0",
"proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.101", "syn 2.0.101",
@@ -379,17 +382,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0" checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0"
dependencies = [ dependencies = [
"libc", "libc",
"system-deps", "system-deps 6.2.2",
] ]
[[package]] [[package]]
name = "glib-sys" name = "glib-sys"
version = "0.18.1" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" checksum = "8ab79e1ed126803a8fb827e3de0e2ff95191912b8db65cee467edb56fc4cc215"
dependencies = [ dependencies = [
"libc", "libc",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
@@ -400,52 +403,52 @@ checksum = "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062"
dependencies = [ dependencies = [
"glib-sys 0.17.10", "glib-sys 0.17.10",
"libc", "libc",
"system-deps", "system-deps 6.2.2",
] ]
[[package]] [[package]]
name = "gobject-sys" name = "gobject-sys"
version = "0.18.0" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" checksum = "ec9aca94bb73989e3cfdbf8f2e0f1f6da04db4d291c431f444838925c4c63eda"
dependencies = [ dependencies = [
"glib-sys 0.18.1", "glib-sys 0.20.10",
"libc", "libc",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
name = "graphene-rs" name = "graphene-rs"
version = "0.18.1" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b2228cda1505613a7a956cca69076892cfbda84fc2b7a62b94a41a272c0c401" checksum = "6b86dfad7d14251c9acaf1de63bc8754b7e3b4e5b16777b6f5a748208fe9519b"
dependencies = [ dependencies = [
"glib 0.18.5", "glib 0.20.12",
"graphene-sys", "graphene-sys",
"libc", "libc",
] ]
[[package]] [[package]]
name = "graphene-sys" name = "graphene-sys"
version = "0.18.1" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc4144cee8fc8788f2a9b73dc5f1d4e1189d1f95305c4cb7bd9c1af1cfa31f59" checksum = "df583a85ba2d5e15e1797e40d666057b28bc2f60a67c9c24145e6db2cc3861ea"
dependencies = [ dependencies = [
"glib-sys 0.18.1", "glib-sys 0.20.10",
"libc", "libc",
"pkg-config", "pkg-config",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
name = "gsk4" name = "gsk4"
version = "0.7.3" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d958e351d2f210309b32d081c832d7de0aca0b077aa10d88336c6379bd01f7e" checksum = "61f5e72f931c8c9f65fbfc89fe0ddc7746f147f822f127a53a9854666ac1f855"
dependencies = [ dependencies = [
"cairo-rs 0.18.5", "cairo-rs 0.20.12",
"gdk4", "gdk4",
"glib 0.18.5", "glib 0.20.12",
"graphene-rs", "graphene-rs",
"gsk4-sys", "gsk4-sys",
"libc", "libc",
@@ -454,33 +457,33 @@ dependencies = [
[[package]] [[package]]
name = "gsk4-sys" name = "gsk4-sys"
version = "0.7.3" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12bd9e3effea989f020e8f1ff3fa3b8c63ba93d43b899c11a118868853a56d55" checksum = "755059de55fa6f85a46bde8caf03e2184c96bfda1f6206163c72fb0ea12436dc"
dependencies = [ dependencies = [
"cairo-sys-rs 0.18.2", "cairo-sys-rs 0.20.10",
"gdk4-sys", "gdk4-sys",
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"graphene-sys", "graphene-sys",
"libc", "libc",
"pango-sys", "pango-sys",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
name = "gtk4" name = "gtk4"
version = "0.7.3" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aeb51aa3e9728575a053e1f43543cd9992ac2477e1b186ad824fd4adfb70842" checksum = "af1c491051f030994fd0cde6f3c44f3f5640210308cff1298c7673c47408091d"
dependencies = [ dependencies = [
"cairo-rs 0.18.5", "cairo-rs 0.20.12",
"field-offset", "field-offset",
"futures-channel", "futures-channel",
"gdk-pixbuf", "gdk-pixbuf",
"gdk4", "gdk4",
"gio", "gio",
"glib 0.18.5", "glib 0.20.12",
"graphene-rs", "graphene-rs",
"gsk4", "gsk4",
"gtk4-macros", "gtk4-macros",
@@ -491,35 +494,33 @@ dependencies = [
[[package]] [[package]]
name = "gtk4-macros" name = "gtk4-macros"
version = "0.7.2" version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f" checksum = "0ed1786c4703dd196baf7e103525ce0cf579b3a63a0570fe653b7ee6bac33999"
dependencies = [ dependencies = [
"anyhow", "proc-macro-crate 3.3.0",
"proc-macro-crate 1.3.1",
"proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 1.0.109", "syn 2.0.101",
] ]
[[package]] [[package]]
name = "gtk4-sys" name = "gtk4-sys"
version = "0.7.3" version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54d8c4aa23638ce9faa2caf7e2a27d4a1295af2155c8e8d28c4d4eeca7a65eb8" checksum = "41e03b01e54d77c310e1d98647d73f996d04b2f29b9121fe493ea525a7ec03d6"
dependencies = [ dependencies = [
"cairo-sys-rs 0.18.2", "cairo-sys-rs 0.20.10",
"gdk-pixbuf-sys", "gdk-pixbuf-sys",
"gdk4-sys", "gdk4-sys",
"gio-sys 0.18.1", "gio-sys 0.20.10",
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"graphene-sys", "graphene-sys",
"gsk4-sys", "gsk4-sys",
"libc", "libc",
"pango-sys", "pango-sys",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
@@ -556,6 +557,37 @@ version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "libadwaita"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "500135d29c16aabf67baafd3e7741d48e8b8978ca98bac39e589165c8dc78191"
dependencies = [
"gdk4",
"gio",
"glib 0.20.12",
"gtk4",
"libadwaita-sys",
"libc",
"pango",
]
[[package]]
name = "libadwaita-sys"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6680988058c2558baf3f548a370e4e78da3bf7f08469daa822ac414842c912db"
dependencies = [
"gdk4-sys",
"gio-sys 0.20.10",
"glib-sys 0.20.10",
"gobject-sys 0.20.10",
"gtk4-sys",
"libc",
"pango-sys",
"system-deps 7.0.5",
]
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.172" version = "0.2.172"
@@ -585,27 +617,26 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]] [[package]]
name = "pango" name = "pango"
version = "0.18.3" version = "0.20.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" checksum = "6576b311f6df659397043a5fa8a021da8f72e34af180b44f7d57348de691ab5c"
dependencies = [ dependencies = [
"gio", "gio",
"glib 0.18.5", "glib 0.20.12",
"libc", "libc",
"once_cell",
"pango-sys", "pango-sys",
] ]
[[package]] [[package]]
name = "pango-sys" name = "pango-sys"
version = "0.18.0" version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" checksum = "186909673fc09be354555c302c0b3dcf753cd9fa08dcb8077fa663c80fb243fa"
dependencies = [ dependencies = [
"glib-sys 0.18.1", "glib-sys 0.20.10",
"gobject-sys 0.18.0", "gobject-sys 0.20.10",
"libc", "libc",
"system-deps", "system-deps 7.0.5",
] ]
[[package]] [[package]]
@@ -647,12 +678,11 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro-crate" name = "proc-macro-crate"
version = "2.0.2" version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
dependencies = [ dependencies = [
"toml_datetime", "toml_edit 0.22.27",
"toml_edit 0.20.2",
] ]
[[package]] [[package]]
@@ -837,7 +867,20 @@ version = "6.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
dependencies = [ dependencies = [
"cfg-expr", "cfg-expr 0.15.8",
"heck 0.5.0",
"pkg-config",
"toml",
"version-compare",
]
[[package]]
name = "system-deps"
version = "7.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4be53aa0cba896d2dc615bd42bbc130acdcffa239e0a2d965ea5b3b2a86ffdb"
dependencies = [
"cfg-expr 0.20.0",
"heck 0.5.0", "heck 0.5.0",
"pkg-config", "pkg-config",
"toml", "toml",
@@ -850,6 +893,12 @@ version = "0.12.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "target-lexicon"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.69" version = "1.0.69"
@@ -884,9 +933,9 @@ dependencies = [
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.6.3" version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@@ -899,7 +948,7 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"toml_datetime", "toml_datetime",
"winnow", "winnow 0.5.40",
] ]
[[package]] [[package]]
@@ -912,7 +961,18 @@ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned",
"toml_datetime", "toml_datetime",
"winnow", "winnow 0.5.40",
]
[[package]]
name = "toml_edit"
version = "0.22.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap",
"toml_datetime",
"winnow 0.7.11",
] ]
[[package]] [[package]]
@@ -964,6 +1024,79 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]] [[package]]
name = "winnow" name = "winnow"
version = "0.5.40" version = "0.5.40"
@@ -973,6 +1106,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "winnow"
version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "wit-bindgen-rt" name = "wit-bindgen-rt"
version = "0.39.0" version = "0.39.0"

View File

@@ -4,8 +4,9 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
gtk = { version = "0.7", package = "gtk4" } gtk4 = "0.9"
glib = "0.17" glib = "0.17"
cairo-rs = "0.17" cairo-rs = "0.17"
rand = "0.9.1" rand = "0.9.1"
serde_json = "1.0.140" serde_json = "1.0.140"
adw = { version = "0.7.2", package = "libadwaita", features = ["v1_2", "v1_3", "v1_4", "v1_5"] }

View File

@@ -1,12 +1,9 @@
mod font; mod font;
use crate::font::Font; // this brings in the struct Font use crate::font::Font; // this brings in the struct Font
use gtk::cairo::Context; use gtk4::{cairo::Context, DrawingArea, Label, ListBox, ListBoxRow, MenuButton, Popover};
use gtk::prelude::*;
use gtk::{ use adw::{prelude::*, Application, ApplicationWindow, HeaderBar};
Application, ApplicationWindow, DrawingArea, HeaderBar, Label, ListBox, ListBoxRow, MenuButton,
Popover,
};
fn main() { fn main() {
let app = Application::builder() let app = Application::builder()
@@ -14,10 +11,11 @@ fn main() {
.build(); .build();
app.connect_activate(build_ui); app.connect_activate(build_ui);
app.run(); app.run();
} }
fn build_ui(app: &gtk::Application) { fn build_ui(app: &adw::Application) {
let window = ApplicationWindow::builder() let window = ApplicationWindow::builder()
.application(app) .application(app)
.title("Dot Matrix") .title("Dot Matrix")
@@ -27,7 +25,6 @@ fn build_ui(app: &gtk::Application) {
// HeaderBar // HeaderBar
let header_bar = HeaderBar::new(); let header_bar = HeaderBar::new();
window.set_titlebar(Some(&header_bar));
// MenuButton // MenuButton
let menu_button = MenuButton::new(); let menu_button = MenuButton::new();
@@ -41,57 +38,36 @@ fn build_ui(app: &gtk::Application) {
// ListBox in popover // ListBox in popover
let list_box = ListBox::new(); let list_box = ListBox::new();
list_box.set_selection_mode(gtk::SelectionMode::None); // No selection on menu items list_box.set_selection_mode(gtk4::SelectionMode::None);
// Add menu items (ListBoxRows with Labels) // Add menu items
let item1_row = ListBoxRow::new(); for label in ["Settings", "Help", "About"] {
let item1_label = Label::new(Some("Settings")); let row = ListBoxRow::new();
item1_row.set_child(Some(&item1_label)); let lbl = Label::new(Some(label));
list_box.append(&item1_row); row.set_child(Some(&lbl));
list_box.append(&row);
}
let item2_row = ListBoxRow::new(); popover.set_child(Some(&list_box));
let item2_label = Label::new(Some("Help"));
item2_row.set_child(Some(&item2_label));
list_box.append(&item2_row);
let item3_row = ListBoxRow::new();
let item3_label = Label::new(Some("About"));
item3_row.set_child(Some(&item3_label));
list_box.append(&item3_row);
popover.set_child(Some(&list_box)); // Set the ListBox as the child of the Popover
// Drawing area setup
let drawing_area = DrawingArea::new(); let drawing_area = DrawingArea::new();
drawing_area.set_vexpand(true);
drawing_area.set_hexpand(true);
let rows = 36 as u8; let rows = 36u8;
let cols = 72 as u8; let cols = 72u8;
// Generate the matrix using iterators
let mut dot_matrix: Vec<Vec<u8>> = (0..rows).map(|_| (0..cols).map(|_| 0).collect()).collect(); let mut dot_matrix: Vec<Vec<u8>> = (0..rows).map(|_| (0..cols).map(|_| 0).collect()).collect();
// let insert_matrix: Vec<Vec<u8>> = (0..7).map(|_| (0..5).map(|_| 1).collect()).collect();
let font_5x7: Font = Font::new("5x7"); let font_5x7: Font = Font::new("5x7");
// let char_bitmap = font_5x7.get_char_bitmap(1).unwrap();
// insert_matrix_at(&mut dot_matrix, &insert_matrix, 0, 0);
// insert_matrix_at(&mut dot_matrix, &insert_matrix, 0, 6);
// insert_matrix_at(&mut dot_matrix, &char_bitmap, 0, 12);
let thing = String::from("abcdefghijklmnop"); let thing = String::from("abcdefghijklmnop");
let ascii_values: &Vec<u8> = &thing.chars().map(|c| c as u8).collect(); let ascii_values: Vec<u8> = thing.chars().map(|c| c as u8).collect();
let mut col_offset = 0; let mut col_offset = 0;
for ch in ascii_values { for ch in ascii_values {
let char_matrix = &font_5x7.get_char_bitmap(*ch as u64).unwrap(); let char_matrix = &font_5x7.get_char_bitmap(ch as u64).unwrap();
insert_matrix_at(&mut dot_matrix, char_matrix, 0, col_offset);
insert_matrix_at(
&mut dot_matrix,
char_matrix,
0,
col_offset,
);
println!("length of character {}", char_matrix.first().unwrap().len());
col_offset += char_matrix.first().unwrap().len() + 1; col_offset += char_matrix.first().unwrap().len() + 1;
} }
@@ -99,7 +75,12 @@ fn build_ui(app: &gtk::Application) {
draw_dot_matrix(cr, width, height, &dot_matrix); draw_dot_matrix(cr, width, height, &dot_matrix);
}); });
window.set_child(Some(&drawing_area)); // 🔁 NEW: ToolbarView container
let layout = gtk4::Box::new(gtk4::Orientation::Vertical, 0);
layout.append(&header_bar);
layout.append(&drawing_area);
window.set_content(Some(&layout));
window.show(); window.show();
} }