From 0bb3d2cd5da7ea4ccebea27db9bbec2b20e95e5b Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Thu, 26 Jun 2025 09:00:23 +0200 Subject: [PATCH] Slint fixes (#433) * Slint fixes * more * more * more * more * more * more * more * more * more --- Cargo.lock | 595 ++++++------------------------- src/device/cpu.rs | 1 + src/ui/gui.rs | 60 +++- src/ui/gui/appwindow.slint | 5 +- src/ui/gui/controller_page.slint | 260 ++++---------- src/ui/gui/netplay_create.slint | 2 +- src/ui/gui/netplay_join.slint | 2 +- src/ui/gui/settings_page.slint | 6 +- src/ui/netplay.rs | 2 +- 9 files changed, 220 insertions(+), 713 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 20e4da1a..9ef61f71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -196,7 +196,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -339,7 +339,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -374,30 +374,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", + "syn", ] [[package]] @@ -424,7 +401,7 @@ dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -504,7 +481,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.104", + "syn", ] [[package]] @@ -524,7 +501,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.104", + "syn", ] [[package]] @@ -659,7 +636,7 @@ checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -699,31 +676,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.9.1", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - [[package]] name = "calloop" version = "0.13.0" @@ -870,10 +822,10 @@ version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -908,9 +860,12 @@ dependencies = [ [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.12", +] [[package]] name = "codemap" @@ -987,7 +942,7 @@ checksum = "5387f5bbc9e9e6c96436ea125afa12614cebf8ac67f49abc08c1e7a891466c90" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1171,9 +1126,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -1246,7 +1201,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1266,7 +1221,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", "unicode-xid", ] @@ -1278,7 +1233,7 @@ checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1349,7 +1304,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1447,7 +1402,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1467,7 +1422,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1691,7 +1646,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1778,7 +1733,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -1817,64 +1772,6 @@ dependencies = [ "slab", ] -[[package]] -name = "gdk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -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" @@ -1938,38 +1835,6 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - [[package]] name = "gl_generator" version = "0.14.0" @@ -1981,53 +1846,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.9.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - [[package]] name = "glob" version = "0.3.2" @@ -2112,17 +1930,6 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - [[package]] name = "gopher64" version = "1.0.18" @@ -2235,58 +2042,6 @@ dependencies = [ "bitflags 2.9.1", ] -[[package]] -name = "gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.104", -] - [[package]] name = "h2" version = "0.4.10" @@ -2357,12 +2112,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2499,9 +2248,9 @@ dependencies = [ [[package]] name = "i-slint-backend-selector" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891b24f1323ea2f8791667b960620532d95a76fd9008ac67d2826e1153889978" +checksum = "50166eb0f0f63ffa514069cdad5465d1d4c711c57dbd495f16f0a4ee14b82e46" dependencies = [ "cfg-if", "i-slint-backend-winit", @@ -2512,9 +2261,9 @@ dependencies = [ [[package]] name = "i-slint-backend-winit" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b87c1fb7bcdd6cf0c93dfd2de2c33b0c21eca625ec8aafee714edac5bd9f2b" +checksum = "2c3b5697d3fbbc7ae0fcba4592c76f39d13a25fad055064a31855f2234fd82ba" dependencies = [ "cfg-if", "cfg_aliases", @@ -2545,9 +2294,9 @@ dependencies = [ [[package]] name = "i-slint-common" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "748b5c0e292b2263fbd5b2855df207f4f6e068382668c55526037ac0ff5ba038" +checksum = "0c400c33bd6bc68397adefa1be2abaf77cdd90c216ad88b1be2ebdb0003ea996" dependencies = [ "cfg-if", "derive_more", @@ -2558,9 +2307,9 @@ dependencies = [ [[package]] name = "i-slint-compiler" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae46edba3b6875f66765d4074ecf4d65b8cbf1e7a0f2b4581e23e72bd8f1157" +checksum = "1eafbcc08babe8bb24967193a7796c0e26170d0a6cdf09236cc2fdb63dded502" dependencies = [ "by_address", "codemap", @@ -2588,9 +2337,9 @@ dependencies = [ [[package]] name = "i-slint-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13599d9d81dba95796c9bf7c9f9f179bf955cdf240f886a442eb460f57b17ba1" +checksum = "dc384a0a106e7bc1aaf6fbf06d5a4d0d8e51a4bc5ff5ce36dbe559620aef4533" dependencies = [ "auto_enums", "bitflags 2.9.1", @@ -2632,20 +2381,20 @@ dependencies = [ [[package]] name = "i-slint-core-macros" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2633fb6f59e2184db69c0b3323ad8c324b169aa8d24999a67f2b5cc2c2324b8e" +checksum = "81504739c60f11af98f80f287624379514923888ecdf37e0bc43c5dc1cadafa5" dependencies = [ "quote", "serde_json", - "syn 2.0.104", + "syn", ] [[package]] name = "i-slint-renderer-femtovg" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63ad7c680b0d205a2bc19f3974fcb9bc567ab786dbc34553e30aa8b1dffb9f9" +checksum = "754f4a057294c77897b0a4a9795131e2442f494e02feccbcd09bd041270f789a" dependencies = [ "cfg-if", "const-field-offset", @@ -2674,9 +2423,9 @@ dependencies = [ [[package]] name = "i-slint-renderer-skia" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63a3aa935a803f1e59e1fb04bc49f93bc23a0612cd49afa7dc9533613e992aa" +checksum = "687126d7e82d447e15bc2666053f7653fa562e11dc6a9799e6dd0186a7927142" dependencies = [ "bytemuck", "cfg-if", @@ -2918,7 +2667,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -3016,7 +2765,7 @@ checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -3181,34 +2930,15 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ "bitflags 2.9.1", "libc", "redox_syscall 0.5.13", ] -[[package]] -name = "libxdo" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db" -dependencies = [ - "libxdo-sys", -] - -[[package]] -name = "libxdo-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212" -dependencies = [ - "libc", - "x11", -] - [[package]] name = "libz-rs-sys" version = "0.5.1" @@ -3455,15 +3185,13 @@ dependencies = [ [[package]] name = "muda" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de14a9b5d569ca68d7c891d613b390cf5ab4f851c77aaa2f9e435555d3d9492" +checksum = "58b89bf91c19bf036347f1ab85a81c560f08c0667c8601bece664d860a600988" dependencies = [ "crossbeam-channel", "dpi", - "gtk", "keyboard-types", - "libxdo", "objc2 0.6.1", "objc2-app-kit 0.3.1", "objc2-core-foundation", @@ -3612,7 +3340,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -3661,10 +3389,10 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -4088,31 +3816,6 @@ dependencies = [ "ttf-parser 0.25.1", ] -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - [[package]] name = "parking" version = "2.2.1" @@ -4193,7 +3896,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -4294,9 +3997,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +checksum = "6c1de96e20f51df24ca73cafcc4690e044854d803259db27a00a461cb3b9d17a" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -4342,26 +4045,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.104", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", + "syn", ] [[package]] @@ -4370,31 +4054,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.27", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit", ] [[package]] @@ -4422,7 +4082,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5096,7 +4756,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5119,7 +4779,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5234,7 +4894,7 @@ dependencies = [ "bindgen 0.71.1", "cc", "flate2", - "heck 0.5.0", + "heck", "lazy_static", "regex", "serde_json", @@ -5262,9 +4922,9 @@ checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slint" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad0f31b974d0d69db787cc4f8b2965806f4991b0b47bfcb40538ae714fd9448" +checksum = "8c99512aff435eb85fc719bf73aff5c4a13f3d202843c326a2f50eb0377956f8" dependencies = [ "const-field-offset", "i-slint-backend-selector", @@ -5281,21 +4941,21 @@ dependencies = [ [[package]] name = "slint-build" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7076e05474941b35df7e2d03c393a3c3b4e4855dd93f0280451002df07e474" +checksum = "e0f58adfef3f956cc3c124cb19154cf29b510badf2a06b3a3521c6fdb97a47a4" dependencies = [ "derive_more", "i-slint-compiler", "spin_on", - "toml_edit 0.22.27", + "toml_edit", ] [[package]] name = "slint-macros" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b5db8df61e3766111c8e42a957af8502b2fc1814f87eacc3a19252ae964a5c" +checksum = "33e4f639260309e13e8f8dc40ec905d57a15dc512d8d50c52ad650088cc7e1e2" dependencies = [ "i-slint-compiler", "proc-macro2", @@ -5510,11 +5170,11 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn", ] [[package]] @@ -5523,11 +5183,11 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn", ] [[package]] @@ -5546,16 +5206,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.104" @@ -5584,7 +5234,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5603,7 +5253,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", - "heck 0.5.0", + "heck", "pkg-config", "toml", "version-compare", @@ -5680,7 +5330,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5691,7 +5341,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5825,7 +5475,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -5872,7 +5522,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.27", + "toml_edit", ] [[package]] @@ -5884,28 +5534,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.22.27" @@ -5917,7 +5545,7 @@ dependencies = [ "serde_spanned", "toml_datetime", "toml_write", - "winnow 0.7.11", + "winnow", ] [[package]] @@ -5990,7 +5618,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -6251,7 +5879,7 @@ checksum = "8cfcf6171aa2b0f85718ca5888ca32f6edf61d1849f8e4b3786ad890e5b68f68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -6310,7 +5938,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn", "wasm-bindgen-shared", ] @@ -6345,7 +5973,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6720,7 +6348,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -6731,7 +6359,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -6742,7 +6370,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -6753,7 +6381,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -7148,15 +6776,6 @@ dependencies = [ "xkbcommon-dl", ] -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - [[package]] name = "winnow" version = "0.7.11" @@ -7200,16 +6819,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - [[package]] name = "x11-clipboard" version = "0.9.3" @@ -7254,9 +6863,9 @@ checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xattr" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", "rustix 1.0.7", @@ -7319,7 +6928,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", "synstructure", ] @@ -7351,7 +6960,7 @@ dependencies = [ "tracing", "uds_windows", "windows-sys 0.59.0", - "winnow 0.7.11", + "winnow", "zbus_macros", "zbus_names", "zvariant", @@ -7363,10 +6972,10 @@ version = "5.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn", "zbus_names", "zvariant", "zvariant_utils", @@ -7380,7 +6989,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.11", + "winnow", "zvariant", ] @@ -7401,7 +7010,7 @@ checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -7421,7 +7030,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", "synstructure", ] @@ -7442,7 +7051,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -7475,7 +7084,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn", ] [[package]] @@ -7584,7 +7193,7 @@ dependencies = [ "enumflags2", "serde", "url", - "winnow 0.7.11", + "winnow", "zvariant_derive", "zvariant_utils", ] @@ -7595,10 +7204,10 @@ version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn", "zvariant_utils", ] @@ -7612,6 +7221,6 @@ dependencies = [ "quote", "serde", "static_assertions", - "syn 2.0.104", - "winnow 0.7.11", + "syn", + "winnow", ] diff --git a/src/device/cpu.rs b/src/device/cpu.rs index 085bda86..57faaeeb 100644 --- a/src/device/cpu.rs +++ b/src/device/cpu.rs @@ -227,6 +227,7 @@ pub fn init(device: &mut device::Device) { device.cpu.clock_rate = if !device.cpu.overclock { 93750000 } else { + println!("Overclocking enabled, setting clock rate to 125 MHz"); 125000000 }; diff --git a/src/ui/gui.rs b/src/ui/gui.rs index 26fe3475..599e6892 100644 --- a/src/ui/gui.rs +++ b/src/ui/gui.rs @@ -108,7 +108,7 @@ fn local_game_window(app: &AppWindow, controller_paths: &[Option]) { }); } -fn get_input_profiles(config: &ui::config::Config) -> Vec { +fn input_profiles(config: &ui::config::Config) -> Vec { let mut profiles = vec![]; for key in config.input.input_profiles.keys() { profiles.push(key.clone()) @@ -122,12 +122,33 @@ fn settings_window(app: &AppWindow, config: &ui::config::Config) { app.set_widescreen(config.video.widescreen); app.set_apply_crt_shader(config.video.crt); app.set_overclock_n64_cpu(config.emulation.overclock); - app.set_resolution(format!("{}x", config.video.upscale).into()); + let combobox_value = match config.video.upscale { + 1 => 0, + 2 => 1, + 4 => 2, + _ => 0, + }; + app.set_resolution(combobox_value); } fn update_input_profiles(weak: &slint::Weak, config: &ui::config::Config) { - let profiles = get_input_profiles(config); + let profiles = input_profiles(config); + let config_bindings = config.input.input_profile_binding.clone(); + let weak2 = weak.clone(); weak.upgrade_in_event_loop(move |handle| { + let profile_bindings = slint::VecModel::default(); + for (i, input_profile_binding) in handle.get_selected_profile_binding().iter().enumerate() { + let currently_selected = handle + .get_input_profiles() + .row_data(input_profile_binding as usize) + .unwrap_or(config_bindings[i].clone().into()) + .to_string(); + let position = profiles + .iter() + .position(|profile| *profile == currently_selected); + profile_bindings.push(position.unwrap() as i32); + } + let input_profiles = slint::VecModel::default(); for profile in profiles { input_profiles.push(profile.into()); @@ -135,6 +156,20 @@ fn update_input_profiles(weak: &slint::Weak, config: &ui::config::Con let input_profiles_model: std::rc::Rc> = std::rc::Rc::new(input_profiles); handle.set_input_profiles(slint::ModelRc::from(input_profiles_model)); + + let input_profile_binding_model: std::rc::Rc> = + std::rc::Rc::new(profile_bindings); + handle.set_selected_profile_binding(slint::ModelRc::from(input_profile_binding_model)); + + // this is a workaround to make the input profile combobox update + handle.set_blank_profiles(true); + slint::Timer::single_shot(std::time::Duration::from_millis(200), move || { + weak2 + .upgrade_in_event_loop(move |handle| { + handle.set_blank_profiles(false); + }) + .unwrap(); + }); }) .unwrap(); } @@ -156,14 +191,6 @@ fn controller_window( std::rc::Rc::new(slint::VecModel::from(config.input.transfer_pak.to_vec())); app.set_transferpak(slint::ModelRc::from(transferpak_enabled_model)); - let profile_bindings = slint::VecModel::default(); - for binding in config.input.input_profile_binding.iter() { - profile_bindings.push(binding.into()); - } - let input_profile_binding_model: std::rc::Rc> = - std::rc::Rc::new(profile_bindings); - app.set_input_profile_binding(slint::ModelRc::from(input_profile_binding_model)); - update_input_profiles(&app.as_weak(), config); let controllers = slint::VecModel::default(); @@ -224,7 +251,8 @@ fn save_settings(app: &AppWindow, controller_paths: &[Option]) { config.video.widescreen = app.get_widescreen(); config.video.crt = app.get_apply_crt_shader(); config.emulation.overclock = app.get_overclock_n64_cpu(); - config.video.upscale = app.get_resolution().trim_end_matches('x').parse().unwrap(); + let upscale_values = [1, 2, 4]; + config.video.upscale = upscale_values[app.get_resolution() as usize]; config.input.emulate_vru = app.get_emulate_vru(); for (i, controller_enabled) in app.get_controller_enabled().iter().enumerate() { @@ -233,8 +261,12 @@ fn save_settings(app: &AppWindow, controller_paths: &[Option]) { for (i, transferpak_enabled) in app.get_transferpak().iter().enumerate() { config.input.transfer_pak[i] = transferpak_enabled; } - for (i, input_profile_binding) in app.get_input_profile_binding().iter().enumerate() { - config.input.input_profile_binding[i] = input_profile_binding.into(); + for (i, input_profile_binding) in app.get_selected_profile_binding().iter().enumerate() { + config.input.input_profile_binding[i] = app + .get_input_profiles() + .row_data(input_profile_binding as usize) + .unwrap() + .to_string(); } for (i, selected_controller) in app.get_selected_controller().iter().enumerate() { diff --git a/src/ui/gui/appwindow.slint b/src/ui/gui/appwindow.slint index dfaa753b..7719cd3e 100644 --- a/src/ui/gui/appwindow.slint +++ b/src/ui/gui/appwindow.slint @@ -1,7 +1,7 @@ // Copyright © SixtyFPS GmbH // SPDX-License-Identifier: MIT -import { LocalGame, ControllerConfig,Netplay,Settings,About } from "pages.slint"; +import { LocalGame, ControllerConfig, Netplay, Settings, About } from "pages.slint"; import { SideBar } from "side_bar.slint"; import { SettingsData } from "settings_page.slint"; import { AboutData } from "about_page.slint"; @@ -34,11 +34,12 @@ export component AppWindow inherits Window { in-out property emulate_vru <=> ControllerData.emulate_vru; in-out property controller_enabled <=> ControllerData.controller_enabled; in-out property transferpak <=> ControllerData.transferpak; - in-out property input_profile_binding <=> ControllerData.input_profile_binding; + in-out property selected_profile_binding <=> ControllerData.selected_profile_binding; in-out property input_profiles <=> ControllerData.input_profiles; in-out property controller_names <=> ControllerData.controller_names; in-out property selected_controller <=> ControllerData.selected_controller; in-out property game_running <=> State.game_running; + in-out property blank_profiles <=> ControllerData.blank_profiles; preferred-width: 700px; preferred-height: 500px; title: @tr("Gopher64"); diff --git a/src/ui/gui/controller_page.slint b/src/ui/gui/controller_page.slint index 0ec63032..89cbbde6 100644 --- a/src/ui/gui/controller_page.slint +++ b/src/ui/gui/controller_page.slint @@ -1,7 +1,7 @@ // Copyright © SixtyFPS GmbH // SPDX-License-Identifier: MIT -import { CheckBox, ComboBox, Button, HorizontalBox, VerticalBox, GridBox } from "std-widgets.slint"; +import { CheckBox, ComboBox, Button, HorizontalBox, VerticalBox, GroupBox } from "std-widgets.slint"; import { Page } from "page.slint"; import { State } from "localgame_page.slint"; @@ -9,20 +9,14 @@ export global ControllerData { in-out property emulate_vru; in-out property <[bool]> controller_enabled; in-out property <[bool]> transferpak; - in-out property <[string]> input_profile_binding; + in-out property <[int]> selected_profile_binding: [-1, -1, -1, -1]; in-out property <[string]> input_profiles; in-out property <[string]> controller_names; in-out property <[int]> selected_controller; + in-out property blank_profiles; } export component ControllerConfig inherits Page { - property <[{name: string, vru-enabled: bool}]> rows: [ - { name: "1", vru-enabled: false }, - { name: "2", vru-enabled: false }, - { name: "3", vru-enabled: false }, - { name: "4", vru-enabled: true } - ]; - callback input_profile_button_clicked; title: @tr("Controller Configuration"); @@ -41,213 +35,83 @@ export component ControllerConfig inherits Page { Rectangle { } - Text { - text: @tr("Controller Settings:"); - font-weight: 600; - } - - GridBox { - Row { - Text { - text: @tr("Port"); - } - - Text { - text: @tr("Enabled"); - } - - Text { - text: @tr("Emulate VRU"); - } - - Text { - text: @tr("Transfer Pak"); - } - - Text { - text: @tr("Profile"); - } - - Text { - text: @tr("Controller"); - } - } - - Row { // 0 - property number: 0; - Text { // Port - text: rows[number].name; - vertical-alignment: center; - } - - CheckBox { // Enabled - checked: ControllerData.controller_enabled[number]; - toggled => { - ControllerData.controller_enabled[number] = self.checked; - } - } - - CheckBox { // Emulate VRU - enabled: rows[number].vru-enabled; - checked: false; - } - - CheckBox { // Transfer Pak - checked: ControllerData.transferpak[number]; - toggled => { - ControllerData.transferpak[number] = self.checked; - } - } - - ComboBox { // Profile - model: ControllerData.input_profiles; - current-value: ControllerData.input_profile_binding[number]; - selected => { - ControllerData.input_profile_binding[number] = self.current-value; - } - } - - ComboBox { // Controller - model: ControllerData.controller_names; - width: self.preferred-width; - current-value: ControllerData.controller_names[ControllerData.selected_controller[number]]; - selected => { - ControllerData.selected_controller[number] = self.current-index; + HorizontalBox { + GroupBox { + title: @tr("Port"); + VerticalLayout { + alignment: space-between; + for player in [0, 1, 2, 3]: Text { + text: player + 1; + vertical-alignment: center; } } } - Row { // 1 - property number: 1; - Text { // Port - text: rows[number].name; - vertical-alignment: center; - } - - CheckBox { // Enabled - checked: ControllerData.controller_enabled[number]; - toggled => { - ControllerData.controller_enabled[number] = self.checked; - } - } - - CheckBox { // Emulate VRU - enabled: rows[number].vru-enabled; - checked: false; - } - - CheckBox { // Transfer Pak - checked: ControllerData.transferpak[number]; - toggled => { - ControllerData.transferpak[number] = self.checked; - } - } - - ComboBox { // Profile - model: ControllerData.input_profiles; - current-value: ControllerData.input_profile_binding[number]; - selected => { - ControllerData.input_profile_binding[number] = self.current-value; - } - } - - ComboBox { // Controller - model: ControllerData.controller_names; - width: self.preferred-width; - current-value: ControllerData.controller_names[ControllerData.selected_controller[number]]; - selected => { - ControllerData.selected_controller[number] = self.current-index; + GroupBox { + title: @tr("Enabled"); + VerticalLayout { + alignment: space-between; + for player in [0, 1, 2, 3]: CheckBox { + checked: ControllerData.controller_enabled[player]; + toggled => { + ControllerData.controller_enabled[player] = self.checked; + } } } } - Row { // 2 - property number: 2; - Text { // Port - text: rows[number].name; - vertical-alignment: center; - } - - CheckBox { // Enabled - checked: ControllerData.controller_enabled[number]; - toggled => { - ControllerData.controller_enabled[number] = self.checked; - } - } - - CheckBox { // Emulate VRU - enabled: rows[number].vru-enabled; - checked: false; - } - - CheckBox { // Transfer Pak - checked: ControllerData.transferpak[number]; - toggled => { - ControllerData.transferpak[number] = self.checked; - } - } - - ComboBox { // Profile - model: ControllerData.input_profiles; - current-value: ControllerData.input_profile_binding[number]; - selected => { - ControllerData.input_profile_binding[number] = self.current-value; - } - } - - ComboBox { // Controller - model: ControllerData.controller_names; - width: self.preferred-width; - current-value: ControllerData.controller_names[ControllerData.selected_controller[number]]; - selected => { - ControllerData.selected_controller[number] = self.current-index; + GroupBox { + title: @tr("Emulate VRU"); + VerticalLayout { + alignment: space-between; + for valid in [false, false, false, true]: CheckBox { + enabled: valid; + checked: valid && ControllerData.emulate_vru; + toggled => { + ControllerData.emulate_vru = self.checked; + } } } } - Row { // 3 - property number: 3; - Text { // Port - text: rows[number].name; - vertical-alignment: center; - } - - CheckBox { // Enabled - checked: ControllerData.controller_enabled[number]; - toggled => { - ControllerData.controller_enabled[number] = self.checked; + GroupBox { + title: @tr("Transfer Pak"); + VerticalLayout { + alignment: space-between; + for player in [0, 1, 2, 3]: CheckBox { + checked: ControllerData.transferpak[player]; + toggled => { + ControllerData.transferpak[player] = self.checked; + } } } + } - CheckBox { // Emulate VRU - enabled: rows[number].vru-enabled; - checked: ControllerData.emulate_vru; - toggled => { - ControllerData.emulate_vru = self.checked; + if !ControllerData.blank_profiles: GroupBox { + title: @tr("Profile"); + VerticalLayout { + alignment: space-between; + for player in [0, 1, 2, 3]: ComboBox { + model: ControllerData.input_profiles; + current-index: ControllerData.selected_profile_binding[player]; + selected => { + ControllerData.selected_profile_binding[player] = self.current-index; + } } } + } - CheckBox { // Transfer Pak - checked: ControllerData.transferpak[number]; - toggled => { - ControllerData.transferpak[number] = self.checked; - } - } - - ComboBox { // Profile - model: ControllerData.input_profiles; - current-value: ControllerData.input_profile_binding[number]; - selected => { - ControllerData.input_profile_binding[number] = self.current-value; - } - } - - ComboBox { // Controller - model: ControllerData.controller_names; - width: self.preferred-width; - current-value: ControllerData.controller_names[ControllerData.selected_controller[number]]; - selected => { - ControllerData.selected_controller[number] = self.current-index; + GroupBox { + title: @tr("Controller"); + VerticalLayout { + alignment: space-between; + for player in [0, 1, 2, 3]: ComboBox { + model: ControllerData.controller_names; + width: self.preferred-width; + current-index: ControllerData.selected_controller[player]; + selected => { + ControllerData.selected_controller[player] = self.current-index; + } } } } diff --git a/src/ui/gui/netplay_create.slint b/src/ui/gui/netplay_create.slint index 1533cd33..5ebd859b 100644 --- a/src/ui/gui/netplay_create.slint +++ b/src/ui/gui/netplay_create.slint @@ -65,7 +65,7 @@ export component NetplayCreate inherits Window { HorizontalBox { server := ComboBox { model: NetplayData.server_names; - selected(current-value) => { + selected => { if (self.current-index >= 0) { get_ping(NetplayData.server_urls[self.current-index]); } diff --git a/src/ui/gui/netplay_join.slint b/src/ui/gui/netplay_join.slint index 7b5a7b1f..cadfc77e 100644 --- a/src/ui/gui/netplay_join.slint +++ b/src/ui/gui/netplay_join.slint @@ -42,7 +42,7 @@ export component NetplayJoin inherits Window { HorizontalBox { server := ComboBox { model: NetplayData.server_names; - selected(current-value) => { + selected => { if (self.current-index >= 0) { get_ping(NetplayData.server_urls[self.current-index]); } diff --git a/src/ui/gui/settings_page.slint b/src/ui/gui/settings_page.slint index edbe04dd..1807e821 100644 --- a/src/ui/gui/settings_page.slint +++ b/src/ui/gui/settings_page.slint @@ -10,7 +10,7 @@ export global SettingsData { in-out property widescreen; in-out property apply_crt_shader; in-out property overclock_n64_cpu; - in-out property resolution; + in-out property resolution; } export component Settings inherits Page { @@ -27,9 +27,9 @@ export component Settings inherits Page { ComboBox { model: ["1x", "2x", "4x"]; - current-value: SettingsData.resolution; + current-index: SettingsData.resolution; selected => { - SettingsData.resolution = self.current-value; + SettingsData.resolution = self.current-index; } } } diff --git a/src/ui/netplay.rs b/src/ui/netplay.rs index 2698250f..01acb8f9 100644 --- a/src/ui/netplay.rs +++ b/src/ui/netplay.rs @@ -112,7 +112,7 @@ impl NetplayPages for NetplayJoin { } fn populate_server_names(weak: slint::Weak) { - let task = reqwest::get("https://m64p.s3.amazonaws.com/servers.json"); + let task = reqwest::get("https://m64p.s3.amazonaws.com/serverstest.json"); tokio::spawn(async move { let mut local_servers: Vec<(String, String)> = vec![];