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

View File

@@ -4,8 +4,9 @@ version = "0.1.0"
edition = "2021"
[dependencies]
gtk = { version = "0.7", package = "gtk4" }
gtk4 = "0.9"
glib = "0.17"
cairo-rs = "0.17"
rand = "0.9.1"
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;
use crate::font::Font; // this brings in the struct Font
use gtk::cairo::Context;
use gtk::prelude::*;
use gtk::{
Application, ApplicationWindow, DrawingArea, HeaderBar, Label, ListBox, ListBoxRow, MenuButton,
Popover,
};
use gtk4::{cairo::Context, DrawingArea, Label, ListBox, ListBoxRow, MenuButton, Popover};
use adw::{prelude::*, Application, ApplicationWindow, HeaderBar};
fn main() {
let app = Application::builder()
@@ -14,10 +11,11 @@ fn main() {
.build();
app.connect_activate(build_ui);
app.run();
}
fn build_ui(app: &gtk::Application) {
fn build_ui(app: &adw::Application) {
let window = ApplicationWindow::builder()
.application(app)
.title("Dot Matrix")
@@ -27,7 +25,6 @@ fn build_ui(app: &gtk::Application) {
// HeaderBar
let header_bar = HeaderBar::new();
window.set_titlebar(Some(&header_bar));
// MenuButton
let menu_button = MenuButton::new();
@@ -41,57 +38,36 @@ fn build_ui(app: &gtk::Application) {
// ListBox in popover
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)
let item1_row = ListBoxRow::new();
let item1_label = Label::new(Some("Settings"));
item1_row.set_child(Some(&item1_label));
list_box.append(&item1_row);
// Add menu items
for label in ["Settings", "Help", "About"] {
let row = ListBoxRow::new();
let lbl = Label::new(Some(label));
row.set_child(Some(&lbl));
list_box.append(&row);
}
let item2_row = ListBoxRow::new();
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
popover.set_child(Some(&list_box));
// Drawing area setup
let drawing_area = DrawingArea::new();
drawing_area.set_vexpand(true);
drawing_area.set_hexpand(true);
let rows = 36 as u8;
let cols = 72 as u8;
let rows = 36u8;
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 insert_matrix: Vec<Vec<u8>> = (0..7).map(|_| (0..5).map(|_| 1).collect()).collect();
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 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;
for ch in ascii_values {
let char_matrix = &font_5x7.get_char_bitmap(*ch as u64).unwrap();
insert_matrix_at(
&mut dot_matrix,
char_matrix,
0,
col_offset,
);
println!("length of character {}", char_matrix.first().unwrap().len());
let char_matrix = &font_5x7.get_char_bitmap(ch as u64).unwrap();
insert_matrix_at(&mut dot_matrix, char_matrix, 0, col_offset);
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);
});
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();
}