diff --git a/Cargo.lock b/Cargo.lock index 25eb91f..b46dea8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,9 +147,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "android-activity" @@ -195,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -244,9 +244,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arboard" @@ -349,9 +349,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -404,7 +404,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -439,7 +439,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -507,7 +507,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -612,9 +612,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "serde", @@ -628,9 +628,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" dependencies = [ "bytemuck_derive", ] @@ -643,7 +643,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -664,29 +664,6 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" -[[package]] -name = "cairo-rs" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fa699e1d7ae691001a811dda5ef0e3e42e1d4119b26426352989df9e94e3e6" -dependencies = [ - "bitflags 2.6.0", - "cairo-sys-rs", - "glib", - "libc", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - [[package]] name = "calloop" version = "0.13.0" @@ -727,16 +704,16 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.86", + "syn 2.0.89", "tempfile", "toml", ] [[package]] name = "cc" -version = "1.1.33" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3788d6ac30243803df38a3e9991cf37e41210232916d41a8222ae378f912624" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -749,16 +726,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cfg-expr" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0890061c4d3223e7267f3bad2ec40b997d64faac1c2815a4a9d95018e2b9e9c" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -802,9 +769,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -812,9 +779,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -831,14 +798,14 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "clipboard-win" @@ -967,9 +934,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -1063,6 +1030,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "dlib" version = "0.5.2" @@ -1268,7 +1246,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -1289,7 +1267,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -1396,9 +1374,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fdeflate" @@ -1409,16 +1387,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - [[package]] name = "fixedbitset" version = "0.4.2" @@ -1427,9 +1395,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1453,7 +1421,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -1501,17 +1469,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - [[package]] name = "futures-io" version = "0.3.31" @@ -1520,9 +1477,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -1539,7 +1496,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -1572,63 +1529,6 @@ dependencies = [ "slab", ] -[[package]] -name = "gdk-pixbuf" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4c29071a9e92337d8270a85cb0510cda4ac478be26d09ad027cc1d081911b19" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687343b059b91df5f3fbd87b4307038fa9e647fcc0461d0d3f93e94fee20bf3d" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk4" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fb4af2d606b0ac4e81f982f0d064bcb71ca73859ce5f30475f7eb2e2be4bc3" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk4-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk4-sys" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3642625b384ad43c006871462e6c498488b503dbf219542591f4ddf0f5f2032b" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1666,36 +1566,6 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -[[package]] -name = "gio" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8569975884fdfdbed536b682448fbd8c70bafbd69cac2d45eb1a7a372702241" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "pin-project-lite", - "smallvec", -] - -[[package]] -name = "gio-sys" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217f464cad5946ae4369c355155e2d16b488c08920601083cb4891e352ae777b" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "windows-sys 0.52.0", -] - [[package]] name = "gl_generator" version = "0.14.0" @@ -1707,50 +1577,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "glib" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358431b0e0eb15b9d02db52e1f19c805b953c5c168099deb3de88beab761768c" -dependencies = [ - "bitflags 2.6.0", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "smallvec", -] - -[[package]] -name = "glib-macros" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d21ca27acfc3e91da70456edde144b4ac7c36f78ee77b10189b3eb4901c156" -dependencies = [ - "heck 0.5.0", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.86", -] - -[[package]] -name = "glib-sys" -version = "0.20.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5911863ab7ecd4a6f8d5976f12eeba076b23669c49b066d877e742544aa389" -dependencies = [ - "libc", - "system-deps", -] - [[package]] name = "glow" version = "0.13.1" @@ -1841,17 +1667,6 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "gobject-sys" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c674d2ff8478cf0ec29d2be730ed779fef54415a2fb4b565c52def62696462" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - [[package]] name = "gpu-alloc" version = "0.6.0" @@ -1904,112 +1719,6 @@ dependencies = [ "bitflags 2.6.0", ] -[[package]] -name = "graphene-rs" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f53144c7fe78292705ff23935f1477d511366fb2f73c43d63b37be89076d2fe" -dependencies = [ - "glib", - "graphene-sys", - "libc", -] - -[[package]] -name = "graphene-sys" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e741797dc5081e59877a4d72c442c72d61efdd99161a0b1c1b29b6b988934b99" -dependencies = [ - "glib-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gsk4" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deb9ae5a7fb759b2405e248d52850d9ef733079b90af2d6b01638f5b9eeafe1" -dependencies = [ - "cairo-rs", - "gdk4", - "glib", - "graphene-rs", - "gsk4-sys", - "libc", - "pango", -] - -[[package]] -name = "gsk4-sys" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2226662e97948f3f241c9a6c432cd95eeca662daf4a327e201458bb540ad9590" -dependencies = [ - "cairo-sys-rs", - "gdk4-sys", - "glib-sys", - "gobject-sys", - "graphene-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk4" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34465497f5a4c182c9c94a582a187db7d6af0863f28e87ccf4379f21f0e2a22" -dependencies = [ - "cairo-rs", - "field-offset", - "futures-channel", - "gdk-pixbuf", - "gdk4", - "gio", - "glib", - "graphene-rs", - "gsk4", - "gtk4-macros", - "gtk4-sys", - "libc", - "pango", -] - -[[package]] -name = "gtk4-macros" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c518d5dd41c57385c7cd30af52e261820c897fc1144e558bb88c303d048ae2" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.86", -] - -[[package]] -name = "gtk4-sys" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c7812e28542edb4d0495a2fde1f4588899e2accfcebaa80115f27dc7358a3" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk4-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "graphene-sys", - "gsk4-sys", - "libc", - "pango-sys", - "system-deps", -] - [[package]] name = "hashbrown" version = "0.14.5" @@ -2022,9 +1731,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "hassle-rs" @@ -2121,21 +1830,150 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "image" -version = "0.25.4" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc144d44a31d753b02ce64093d532f55ff8dc4ebf2ffb8a63c0dda691385acae" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" dependencies = [ "bytemuck", "byteorder-lite", @@ -2159,7 +1997,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2184,7 +2022,7 @@ checksum = "9dd28cfd4cfba665d47d31c08a6ba637eed16770abca2eccbbc3ca831fef1e44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -2215,9 +2053,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" [[package]] name = "jni" @@ -2313,7 +2151,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feee752d43abd0f4807a921958ab4131f692a44d4d599733d4419c5d586176ce" dependencies = [ - "regex-automata 0.4.8", + "regex-automata 0.4.9", "rustversion", ] @@ -2325,9 +2163,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" [[package]] name = "libloading" @@ -2356,6 +2194,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "litrs" version = "0.4.1" @@ -2524,9 +2368,9 @@ dependencies = [ [[package]] name = "mlua" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6ddbd668297c46be4bdea6c599dcc1f001a129586272d53170b7ac0a62961e" +checksum = "0ae9546e4a268c309804e8bbb7526e31cbfdedca7cd60ac1b987d0b212e0d876" dependencies = [ "bstr", "either", @@ -2540,9 +2384,9 @@ dependencies = [ [[package]] name = "mlua-sys" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9eebac25c35a13285456c88ee2fde93d9aee8bcfdaf03f9d6d12be3391351ec" +checksum = "efa6bf1a64f06848749b7e7727417f4ec2121599e2a10ef0a8a3888b0e9a5a0d" dependencies = [ "cc", "cfg-if", @@ -2561,7 +2405,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -2686,7 +2530,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -2950,30 +2794,6 @@ dependencies = [ "ttf-parser", ] -[[package]] -name = "pango" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa26aa54b11094d72141a754901cd71d9356432bb8147f9cace8d9c7ba95f356" -dependencies = [ - "gio", - "glib", - "libc", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84fd65917bf12f06544ae2bbc200abf9fc0a513a5a88a0fa81013893aef2b838" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - [[package]] name = "parking" version = "2.2.1" @@ -3057,7 +2877,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -3104,9 +2924,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.3" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", @@ -3183,9 +3003,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3217,9 +3037,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbfb3ddf5364c9cfcd65549a1e7b801d0e8d1b14c1a1590a6408aa93cfbfa84" +checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" dependencies = [ "memchr", "serde", @@ -3296,7 +3116,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -3311,9 +3131,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -3383,9 +3203,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.38" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -3448,29 +3268,29 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -3486,7 +3306,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -3652,6 +3472,12 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3676,7 +3502,7 @@ dependencies = [ "log", "mlua", "once_cell", - "quick-xml 0.37.0", + "quick-xml 0.37.1", "regex", "serde", "smallmap", @@ -3732,7 +3558,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -3748,9 +3574,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.86" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -3758,29 +3584,21 @@ dependencies = [ ] [[package]] -name = "system-deps" -version = "7.0.3" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d23aaf9f331227789a99e8de4c91bf46703add012bdfd45fdecdfb2975a005" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml", - "version-compare", + "proc-macro2", + "quote", + "syn 2.0.89", ] -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -3810,22 +3628,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -3864,25 +3682,20 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", @@ -3902,7 +3715,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4003,7 +3816,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4031,7 +3844,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4111,26 +3924,11 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" @@ -4152,9 +3950,9 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -4162,6 +3960,18 @@ dependencies = [ "serde", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -4188,7 +3998,7 @@ checksum = "6b91f57fe13a38d0ce9e28a03463d8d3c2468ed03d75375110ec71d93b449a08" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4197,12 +4007,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" - [[package]] name = "version_check" version = "0.9.5" @@ -4216,12 +4020,10 @@ dependencies = [ "async-channel", "eframe", "egui_extras", - "glib", - "gtk4", "log", "once_cell", "pretty_env_logger", - "quick-xml 0.37.0", + "quick-xml 0.37.1", "stc-rs", ] @@ -4263,7 +4065,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", "wasm-bindgen-shared", ] @@ -4297,7 +4099,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4643,7 +4445,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4654,7 +4456,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] [[package]] @@ -4942,6 +4744,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x11-dl" version = "2.21.0" @@ -5011,9 +4825,33 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.22" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" + +[[package]] +name = "yoke" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure", +] [[package]] name = "zbus" @@ -5071,7 +4909,7 @@ checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", "zbus-lockstep", "zbus_xml", "zvariant", @@ -5086,7 +4924,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", "zvariant_utils", ] @@ -5132,7 +4970,50 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] @@ -5157,7 +5038,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", "zvariant_utils", ] @@ -5169,5 +5050,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.89", ] diff --git a/lib/src/utils/graphviz.rs b/lib/src/utils/graphviz.rs index 695e131..409f9c8 100644 --- a/lib/src/utils/graphviz.rs +++ b/lib/src/utils/graphviz.rs @@ -410,7 +410,6 @@ impl AstVisitor<'_> for GraphvizExporter { labels.push(label); } - dbg!(stmt.start_pos); let groups = GraphvizLabelGroup::from_name_with_location( "IfStatement", stmt.start_pos, diff --git a/viewer/Cargo.toml b/viewer/Cargo.toml index fb6852a..a91ac67 100644 --- a/viewer/Cargo.toml +++ b/viewer/Cargo.toml @@ -11,8 +11,6 @@ path = "src/bin.rs" stc-rs = { path = "../lib" } pretty_env_logger = "*" log = "*" -gtk4 = { version = "*", optional = true } -glib = { version = "*", optional = true } once_cell = "*" async-channel = "*" quick-xml = { version = "*", features = ["serialize"] } @@ -21,5 +19,4 @@ egui_extras = { version = "*", features = ["default", "image"], optional = true [features] default = ["gui-egui"] -gui-egui = ["eframe", "egui_extras"] -gui-gtk4 = ["gtk4", "glib"] \ No newline at end of file +gui-egui = ["eframe", "egui_extras"] \ No newline at end of file diff --git a/viewer/src/bin.rs b/viewer/src/bin.rs index a2bbb50..606b833 100644 --- a/viewer/src/bin.rs +++ b/viewer/src/bin.rs @@ -6,19 +6,6 @@ mod app; #[cfg(feature = "gui-egui")] mod egui; -#[cfg(feature = "gui-gtk4")] -mod gtk4; - -#[cfg(all(feature = "gui-egui", feature = "gui-gtk4"))] -compile_error!( - "Feature gui-egui and gui-gtk4 are mutually exclusive and cannot be enabled together" -); - -#[cfg(feature = "gui-gtk4")] -fn main() { - gtk4::main() -} - #[cfg(feature = "gui-egui")] fn main() -> Result<(), eframe::Error> { egui::main() diff --git a/viewer/src/gtk4/column_object.rs b/viewer/src/gtk4/column_object.rs deleted file mode 100644 index ef164d3..0000000 --- a/viewer/src/gtk4/column_object.rs +++ /dev/null @@ -1,110 +0,0 @@ -use crate::PrototypeContent; -use glib::Object; -use gtk4::subclass::prelude::*; -use stc::context::{Function, Prototype}; -use stc::prelude::ModuleContext; -use std::cell::RefCell; -use std::fmt::{Display, Formatter}; - -glib::wrapper! { - pub struct ColumnObject(ObjectSubclass); -} - -impl ColumnObject { - pub fn from_ctx(ctx: &ModuleContext) -> Self { - let s = Self::default(); - let imp = s.imp(); - - imp.data.replace(ColumnObjectData::Ctx(ctx.clone())); - - s - } - - pub fn from_proto(proto: &Prototype) -> Self { - let s = Self::default(); - let imp = s.imp(); - - imp.data.replace(ColumnObjectData::Prototype(proto.clone())); - - s - } - - pub fn from_func(func: &Function) -> Self { - let s = Self::default(); - let imp = s.imp(); - - imp.data.replace(ColumnObjectData::Function(func.clone())); - - s - } -} - -impl Default for ColumnObject { - fn default() -> Self { - Object::new::() - } -} - -pub enum ColumnObjectData { - None, - Ctx(ModuleContext), - Prototype(Prototype), - Function(Function), -} - -impl Display for ColumnObjectData { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - Self::None => f.write_str("None"), - Self::Ctx(ctx) => { - let ctx = ctx.read(); - writeln!(f, "{}", ctx)?; - writeln!(f, "ID: {}", ctx.id()) - } - Self::Prototype(proto) => writeln!(f, "{}", proto.content()), - Self::Function(func) => { - let func = func.read(); - - // Function properties - let uuid = func.object_id(); - if !uuid.is_nil() { - writeln!(f, "ObjectId: {}", uuid)?; - } - writeln!(f, "DeclId: {}", func.decl_id())?; - writeln!(f)?; - - if let Some(code) = func.compiled_code() { - writeln!(f, "{}", code) - } else { - writeln!(f, "{}", func.parse_tree()) - } - } - } - } -} - -pub struct ColumnObjectPrivate { - pub data: RefCell, -} - -impl ColumnObjectPrivate { - pub fn content(&self) -> String { - self.data.borrow().to_string() - } -} - -impl Default for ColumnObjectPrivate { - fn default() -> Self { - Self { - data: RefCell::new(ColumnObjectData::None), - } - } -} - -#[glib::object_subclass] -impl ObjectSubclass for ColumnObjectPrivate { - const NAME: &'static str = "ColumnObject"; - type Type = ColumnObject; -} - -impl ObjectImpl for ColumnObjectPrivate {} diff --git a/viewer/src/gtk4/mod.rs b/viewer/src/gtk4/mod.rs deleted file mode 100644 index 0ad7820..0000000 --- a/viewer/src/gtk4/mod.rs +++ /dev/null @@ -1,158 +0,0 @@ -mod column_object; -mod stc_viewer; -use stc_viewer::{StcViewerGtk4, UIMessages, STC_VIEWER_COLUMN_NAME}; - -use crate::app::StcViewerApp; - -use glib::MainContext; -use gtk4::gdk::ffi::GDK_BUTTON_SECONDARY; -use gtk4::gdk::Rectangle; -use gtk4::prelude::*; -use gtk4::{ - Application, ApplicationWindow, CellRendererText, EventSequenceState, GestureClick, - Orientation, Paned, PopoverMenu, ScrolledWindow, TreeViewColumn, WrapMode, -}; -use std::rc::Rc; -use std::sync::Mutex; - -pub fn main() { - pretty_env_logger::init(); - - let gtk_app = Application::builder().build(); - gtk_app.connect_activate(move |app| build_ui(app, StcViewerApp::load_test_project())); - gtk_app.run(); -} - -fn build_ui(app: &Application, stc_app: StcViewerApp) { - let (stc_app, rx) = StcViewerGtk4::new(stc_app); - let window = ApplicationWindow::new(app); - - window.set_title(Some("STC compilation units viewer")); - window.set_size_request(800, 600); - - stc_app.content_view.set_monospace(true); - stc_app.content_view.set_wrap_mode(WrapMode::WordChar); - - let cell = CellRendererText::new(); - CellLayoutExt::pack_start(&stc_app.tree_column_name, &cell, true); - TreeViewColumn::add_attribute( - &stc_app.tree_column_name, - &cell, - "text", - STC_VIEWER_COLUMN_NAME as i32, - ); - - // let cell = CellRendererText::new(); - // CellLayoutExt::pack_start(&stc_app.tree_column_object, &cell, true); - // TreeViewColumnExt::add_attribute( - // &stc_app.tree_column_object, - // &cell, - // "text", - // STC_VIEWER_COLUMN_OBJECT as i32, - // ); - - stc_app.tree_view.append_column(&stc_app.tree_column_name); - stc_app.tree_view.append_column(&stc_app.tree_column_object); - stc_app.tree_view.set_headers_visible(false); - - let tree_scroll = ScrolledWindow::builder() - .child(&stc_app.tree_view) - .vexpand(true) - .build(); - - let left_layout = gtk4::Box::new(Orientation::Vertical, 0); - left_layout.append(&stc_app.search_entry); - left_layout.append(&tree_scroll); - left_layout.set_width_request(100); - let content_scroll = ScrolledWindow::builder() - .child(&stc_app.content_view) - .vexpand(true) - .build(); - - let button_layout = gtk4::Box::new(Orientation::Horizontal, 0); - button_layout.append(&stc_app.refresh_button); - button_layout.append(&stc_app.compile_button); - button_layout.append(&stc_app.run_button); - - let right_layout = gtk4::Box::new(Orientation::Vertical, 0); - right_layout.append(&button_layout); - right_layout.append(&content_scroll); - - let paned = Paned::builder() - .hexpand(true) - .start_child(&left_layout) - .end_child(&right_layout) - .build(); - - let stc_app = Rc::new(Mutex::new(stc_app)); - let app_copy = stc_app.clone(); - let app_lock = stc_app.lock().unwrap(); - app_lock - .refresh_button - .connect_clicked(move |_| app_copy.lock().unwrap().refresh()); - - let app_copy = stc_app.clone(); - app_lock - .compile_button - .connect_clicked(move |_| app_copy.lock().unwrap().app.compile()); - - let app_copy = stc_app.clone(); - app_lock - .run_button - .connect_clicked(move |_| app_copy.lock().unwrap().run()); - - let app_copy = stc_app.clone(); - app_lock.tree_view.connect_cursor_changed(move |_| { - if let Ok(app) = app_copy.try_lock() { - app.on_cursor_changed() - } - }); - - // TreeView popup menus - let app_copy = stc_app.clone(); - let window_copy = window.clone(); - let gesture = GestureClick::new(); - gesture.set_button(GDK_BUTTON_SECONDARY as u32); - gesture.connect_pressed(move |g, _, x, y| { - g.set_state(EventSequenceState::Claimed); - - let app = app_copy.lock().unwrap(); - let menu_model = &app.popup_menu_model(); - if menu_model.n_items() == 0 { - return; - } - - let menu = PopoverMenu::builder() - .menu_model(menu_model) - .has_arrow(false) - .pointing_to(&Rectangle::new(x as i32, y as i32, 0, 0)) - .build(); - menu.set_parent(&window_copy); - menu.show(); - }); - app_lock.tree_view.add_controller(gesture); - - // refresh UI when the window is shown - let tx = app_lock.ui_tx.clone(); - window.connect_show(move |_| { - let tx = tx.clone(); - - glib::idle_add_once(move || { - tx.send_blocking(UIMessages::Refresh).unwrap(); - }); - }); - - // handle UI messages from other threads - let app_copy = stc_app.clone(); - let ctx = MainContext::default(); - ctx.spawn_local(async move { - while let Ok(r) = rx.recv().await { - match r { - UIMessages::Refresh => app_copy.lock().unwrap().refresh(), - } - } - }); - - window.set_child(Some(&paned)); - window.present(); -} diff --git a/viewer/src/gtk4/stc_viewer.rs b/viewer/src/gtk4/stc_viewer.rs deleted file mode 100644 index 632243d..0000000 --- a/viewer/src/gtk4/stc_viewer.rs +++ /dev/null @@ -1,177 +0,0 @@ -use super::column_object::ColumnObject; - -use crate::app::StcViewerApp; -use crate::PrototypeDisplayName; - -use async_channel::{Receiver, Sender}; -use glib::subclass::prelude::ObjectSubclassIsExt; -use glib::value::ValueTypeMismatchOrNoneError; -use gtk4::gio::Menu; -use gtk4::glib::Type; -use gtk4::prelude::*; -use gtk4::{Button, SearchEntry, TextBuffer, TextView, TreeStore, TreeView, TreeViewColumn}; - -pub const STC_VIEWER_COLUMN_NAME: u32 = 0; -pub const STC_VIEWER_COLUMN_OBJECT: u32 = 1; - -/// Send UI operations from other threads -pub enum UIMessages { - Refresh, -} - -pub struct StcViewerGtk4 { - pub app: StcViewerApp, - pub ui_tx: Sender, - - pub tree_view: TreeView, - pub tree_store: TreeStore, - pub tree_column_name: TreeViewColumn, - pub tree_column_object: TreeViewColumn, - pub content_view: TextView, - pub content_buffer: TextBuffer, - pub search_entry: SearchEntry, - pub refresh_button: Button, - pub compile_button: Button, - pub run_button: Button, -} - -impl StcViewerGtk4 { - pub fn new(app: StcViewerApp) -> (Self, Receiver) { - let (tx, rx) = async_channel::unbounded(); - - let content_buffer = TextBuffer::builder().build(); - let content_view = TextView::with_buffer(&content_buffer); - - let tree_store = TreeStore::new(&[Type::STRING, Type::OBJECT]); - let tree_view = TreeView::with_model(&tree_store); - - let r = Self { - app, - ui_tx: tx, - - tree_view, - tree_store, - tree_column_name: TreeViewColumn::new(), - tree_column_object: TreeViewColumn::new(), - content_view, - content_buffer, - search_entry: SearchEntry::new(), - refresh_button: Button::with_label("Refresh"), - compile_button: Button::with_label("Compile"), - run_button: Button::with_label("Run"), - }; - - (r, rx) - } - - pub fn popup_menu_model(&self) -> Menu { - let m = Menu::new(); - m.append(Some("a"), None); - m.append(Some("b"), None); - - m - } - - pub fn on_cursor_changed(&self) { - let (path, _col) = TreeViewExt::cursor(&self.tree_view); - - if let Some(p) = path { - let iter = self.tree_store.iter(&p); - match self - .tree_store - .get_value(&iter.unwrap(), 1) - .get::() - { - Ok(column_object) => { - let s = column_object.imp().content(); - self.content_buffer.set_text(&s); - } - Err(ValueTypeMismatchOrNoneError::UnexpectedNone) => {} - Err(e) => panic!("{:?}", e), - } - } - - // dbg!(path.map(|x| x.to_str()), column.map(|x| x.to_string())); - } - - pub fn refresh(&self) { - // record last selection - let (last_tree_path, last_tree_column) = TreeViewExt::cursor(&self.tree_view); - self.tree_store.clear(); - - for ctx in self.app.mgr.read().contexts() { - let column_object = ColumnObject::from_ctx(ctx); - let ctx_iter = self.tree_store.insert_with_values( - None, - None, - &[ - (STC_VIEWER_COLUMN_NAME, &format!("{}", ctx.read())), - (STC_VIEWER_COLUMN_OBJECT, &column_object), - ], - ); - - // Declarations - let decl_iter = self.tree_store.insert_with_values( - Some(&ctx_iter), - None, - &[(STC_VIEWER_COLUMN_NAME, &"Declarations")], - ); - for decl in ctx.read().declarations() { - let proto = ColumnObject::from_proto(decl); - self.tree_store.insert_with_values( - Some(&decl_iter), - None, - &[ - (STC_VIEWER_COLUMN_NAME, &decl.display_name()), - (STC_VIEWER_COLUMN_OBJECT, &proto), - ], - ); - } - - // Functions - let function_iter = - self.tree_store - .insert_with_values(Some(&ctx_iter), None, &[(0, &"Functions")]); - for fun in ctx.read().functions() { - let fun_object = ColumnObject::from_func(fun); - let fun_id = fun.read().decl_id(); - let decl_name = ctx - .read() - .get_declaration_by_id(fun_id) - .unwrap() - .display_name(); - - self.tree_store.insert_with_values( - Some(&function_iter), - None, - &[ - (STC_VIEWER_COLUMN_NAME, &decl_name), - (STC_VIEWER_COLUMN_OBJECT, &fun_object), - ], - ); - } - } - - // let tx = self.ui_tx.clone(); - // gio::spawn_blocking(move || { - // let five_seconds = Duration::from_secs(5); - // thread::sleep(five_seconds); - // - // glib::idle_add(move || { - // tx.send(UIMessages::ResetTreeViewPath).unwrap(); - // ControlFlow::Break - // }); - // }); - - // reset to last selected row - if let Some(p) = last_tree_path { - self.tree_view.expand_to_path(&p); - TreeViewExt::set_cursor(&self.tree_view, &p, last_tree_column.as_ref(), false); - - // refresh contents - self.on_cursor_changed() - } - } - - pub fn run(&mut self) {} -}