feat: update druid
This commit is contained in:
240
__gui/druid/Cargo.lock
generated
240
__gui/druid/Cargo.lock
generated
@@ -1,10 +1,12 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anyhow"
|
name = "anyhow"
|
||||||
version = "1.0.40"
|
version = "1.0.57"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"
|
checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayvec"
|
name = "arrayvec"
|
||||||
@@ -57,15 +59,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "base-x"
|
name = "base-x"
|
||||||
version = "0.2.8"
|
version = "0.2.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
|
checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "1.2.1"
|
version = "1.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "block"
|
name = "block"
|
||||||
@@ -75,9 +77,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.6.1"
|
version = "3.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe"
|
checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cairo-rs"
|
name = "cairo-rs"
|
||||||
@@ -107,9 +109,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.67"
|
version = "1.0.73"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd"
|
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
@@ -160,15 +162,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "const_fn"
|
name = "const_fn"
|
||||||
version = "0.4.7"
|
version = "0.4.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "402da840495de3f976eaefc3485b7f5eb5b0bf9761f9a47be27fe975b3b8c2ec"
|
checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation"
|
name = "core-foundation"
|
||||||
version = "0.9.1"
|
version = "0.9.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62"
|
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"core-foundation-sys",
|
"core-foundation-sys",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -176,15 +178,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation-sys"
|
name = "core-foundation-sys"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
|
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-graphics"
|
name = "core-graphics"
|
||||||
version = "0.22.2"
|
version = "0.22.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86"
|
checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"core-foundation",
|
"core-foundation",
|
||||||
@@ -371,9 +373,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures"
|
name = "futures"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a9d5813545e459ad3ca1bff9915e9ad7f1a47dc6a91b627ce321d5863b7dd253"
|
checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
@@ -386,9 +388,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-channel"
|
name = "futures-channel"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25"
|
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
@@ -396,15 +398,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-core"
|
name = "futures-core"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815"
|
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-executor"
|
name = "futures-executor"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "10f6cb7042eda00f0049b1d2080aa4b93442997ee507eb3828e8bd7577f94c9d"
|
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
@@ -413,17 +415,16 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-io"
|
name = "futures-io"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04"
|
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-macro"
|
name = "futures-macro"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b"
|
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-hack",
|
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn",
|
"syn",
|
||||||
@@ -431,21 +432,21 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-sink"
|
name = "futures-sink"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23"
|
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-task"
|
name = "futures-task"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc"
|
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.14"
|
version = "0.3.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025"
|
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
@@ -456,8 +457,6 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"pin-utils",
|
"pin-utils",
|
||||||
"proc-macro-hack",
|
|
||||||
"proc-macro-nested",
|
|
||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -664,27 +663,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "heck"
|
name = "heck"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac"
|
checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.18"
|
version = "0.1.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "instant"
|
name = "instant"
|
||||||
version = "0.1.9"
|
version = "0.1.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
|
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@@ -723,15 +722,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "0.4.7"
|
version = "1.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
|
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.50"
|
version = "0.3.57"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c"
|
checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
@@ -762,15 +761,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.94"
|
version = "0.2.125"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"
|
checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.14"
|
version = "0.4.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
|
checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
@@ -786,15 +785,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matches"
|
name = "matches"
|
||||||
version = "0.1.8"
|
version = "0.1.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
|
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.4.0"
|
version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "objc"
|
name = "objc"
|
||||||
@@ -807,9 +806,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "once_cell"
|
name = "once_cell"
|
||||||
version = "1.7.2"
|
version = "1.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
|
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pango"
|
name = "pango"
|
||||||
@@ -923,9 +922,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-lite"
|
name = "pin-project-lite"
|
||||||
version = "0.2.6"
|
version = "0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905"
|
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-utils"
|
name = "pin-utils"
|
||||||
@@ -935,9 +934,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pkg-config"
|
name = "pkg-config"
|
||||||
version = "0.3.19"
|
version = "0.3.25"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
|
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro-crate"
|
name = "proc-macro-crate"
|
||||||
@@ -978,35 +977,29 @@ version = "0.5.19"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro-nested"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.26"
|
version = "1.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
|
checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-xid",
|
"unicode-xid",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.9"
|
version = "1.0.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
|
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rental"
|
name = "rental"
|
||||||
version = "0.5.5"
|
version = "0.5.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f"
|
checksum = "cc89fe2acac36d212474d138aaf939c04a82df5b61d07011571ebce5aef81f2e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rental-impl",
|
"rental-impl",
|
||||||
"stable_deref_trait",
|
"stable_deref_trait",
|
||||||
@@ -1040,9 +1033,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ryu"
|
name = "ryu"
|
||||||
version = "1.0.5"
|
version = "1.0.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
|
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scopeguard"
|
name = "scopeguard"
|
||||||
@@ -1067,15 +1060,15 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.125"
|
version = "1.0.137"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
|
checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.125"
|
version = "1.0.137"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d"
|
checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1084,9 +1077,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.64"
|
version = "1.0.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
|
checksum = "f972498cf015f7c0746cac89ebe1d6ef10c293b94175a243a2d9442c163d9944"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
@@ -1095,15 +1088,24 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha1"
|
name = "sha1"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d"
|
checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770"
|
||||||
|
dependencies = [
|
||||||
|
"sha1_smol",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sha1_smol"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "simple_logger"
|
name = "simple_logger"
|
||||||
version = "1.11.0"
|
version = "1.16.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd57f17c093ead1d4a1499dc9acaafdd71240908d64775465543b8d9a9f1d198"
|
checksum = "45b60258a35dc3cb8a16890b8fd6723349bfa458d7960e25e633f1b1c19d7b5e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atty",
|
"atty",
|
||||||
"log",
|
"log",
|
||||||
@@ -1112,15 +1114,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "slab"
|
name = "slab"
|
||||||
version = "0.4.3"
|
version = "0.4.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527"
|
checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.6.1"
|
version = "1.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
|
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
@@ -1206,9 +1208,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.71"
|
version = "1.0.92"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373"
|
checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1232,18 +1234,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.24"
|
version = "1.0.31"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
|
checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror-impl",
|
"thiserror-impl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror-impl"
|
name = "thiserror-impl"
|
||||||
version = "1.0.24"
|
version = "1.0.31"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
|
checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1252,9 +1254,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.2.26"
|
version = "0.2.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "08a8cbfbf47955132d0202d1662f49b2423ae35862aee471f3ba4b133358f372"
|
checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const_fn",
|
"const_fn",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -1277,9 +1279,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time-macros-impl"
|
name = "time-macros-impl"
|
||||||
version = "0.1.1"
|
version = "0.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa"
|
checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-hack",
|
"proc-macro-hack",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -1296,9 +1298,9 @@ checksum = "29738eedb4388d9ea620eeab9384884fc3f06f586a2eddb56bedc5885126c7c1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
|
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@@ -1383,9 +1385,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-segmentation"
|
name = "unicode-segmentation"
|
||||||
version = "1.7.1"
|
version = "1.9.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
|
checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-xid"
|
name = "unicode-xid"
|
||||||
@@ -1407,15 +1409,15 @@ checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.3"
|
version = "0.9.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen"
|
name = "wasm-bindgen"
|
||||||
version = "0.2.73"
|
version = "0.2.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9"
|
checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"wasm-bindgen-macro",
|
"wasm-bindgen-macro",
|
||||||
@@ -1423,9 +1425,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-backend"
|
name = "wasm-bindgen-backend"
|
||||||
version = "0.2.73"
|
version = "0.2.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae"
|
checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
@@ -1438,9 +1440,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro"
|
name = "wasm-bindgen-macro"
|
||||||
version = "0.2.73"
|
version = "0.2.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f"
|
checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"wasm-bindgen-macro-support",
|
"wasm-bindgen-macro-support",
|
||||||
@@ -1448,9 +1450,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro-support"
|
name = "wasm-bindgen-macro-support"
|
||||||
version = "0.2.73"
|
version = "0.2.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c"
|
checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1461,15 +1463,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-shared"
|
name = "wasm-bindgen-shared"
|
||||||
version = "0.2.73"
|
version = "0.2.80"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489"
|
checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "web-sys"
|
name = "web-sys"
|
||||||
version = "0.3.50"
|
version = "0.3.57"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be"
|
checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
|
|||||||
262
__gui/druid/examples/calc.rs
Normal file
262
__gui/druid/examples/calc.rs
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
// Copyright 2018 The xi-editor Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
//! Simple calculator.
|
||||||
|
|
||||||
|
use druid::{
|
||||||
|
theme, AppLauncher, Color, Data, Lens, LocalizedString, RenderContext, Widget, WidgetExt,
|
||||||
|
WindowDesc,
|
||||||
|
};
|
||||||
|
|
||||||
|
use druid::widget::{CrossAxisAlignment, Flex, Label, Painter};
|
||||||
|
|
||||||
|
#[derive(Clone, Data, Lens)]
|
||||||
|
struct CalcState {
|
||||||
|
/// The number displayed. Generally a valid float.
|
||||||
|
value: String,
|
||||||
|
operand: f64,
|
||||||
|
operator: char,
|
||||||
|
in_num: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CalcState {
|
||||||
|
fn digit(&mut self, digit: u8) {
|
||||||
|
if !self.in_num {
|
||||||
|
self.value.clear();
|
||||||
|
self.in_num = true;
|
||||||
|
}
|
||||||
|
let ch = (b'0' + digit) as char;
|
||||||
|
self.value.push(ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn display(&mut self) {
|
||||||
|
// TODO: change hyphen-minus to actual minus
|
||||||
|
self.value = self.operand.to_string();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn compute(&mut self) {
|
||||||
|
if self.in_num {
|
||||||
|
let operand2 = self.value.parse().unwrap_or(0.0);
|
||||||
|
let result = match self.operator {
|
||||||
|
'+' => Some(self.operand + operand2),
|
||||||
|
'−' => Some(self.operand - operand2),
|
||||||
|
'×' => Some(self.operand * operand2),
|
||||||
|
'÷' => Some(self.operand / operand2),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
if let Some(result) = result {
|
||||||
|
self.operand = result;
|
||||||
|
self.display();
|
||||||
|
self.in_num = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn op(&mut self, op: char) {
|
||||||
|
match op {
|
||||||
|
'+' | '−' | '×' | '÷' | '=' => {
|
||||||
|
self.compute();
|
||||||
|
self.operand = self.value.parse().unwrap_or(0.0);
|
||||||
|
self.operator = op;
|
||||||
|
self.in_num = false;
|
||||||
|
}
|
||||||
|
'±' => {
|
||||||
|
if self.in_num {
|
||||||
|
if self.value.starts_with('−') {
|
||||||
|
self.value = self.value[3..].to_string();
|
||||||
|
} else {
|
||||||
|
self.value = ["−", &self.value].concat();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.operand = -self.operand;
|
||||||
|
self.display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'.' => {
|
||||||
|
if !self.in_num {
|
||||||
|
self.value = "0".to_string();
|
||||||
|
self.in_num = true;
|
||||||
|
}
|
||||||
|
if self.value.find('.').is_none() {
|
||||||
|
self.value.push('.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'c' => {
|
||||||
|
self.value = "0".to_string();
|
||||||
|
self.in_num = false;
|
||||||
|
}
|
||||||
|
'C' => {
|
||||||
|
self.value = "0".to_string();
|
||||||
|
self.operator = 'C';
|
||||||
|
self.in_num = false;
|
||||||
|
}
|
||||||
|
'⌫' => {
|
||||||
|
if self.in_num {
|
||||||
|
self.value.pop();
|
||||||
|
if self.value.is_empty() || self.value == "−" {
|
||||||
|
self.value = "0".to_string();
|
||||||
|
self.in_num = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn op_button_label(op: char, label: String) -> impl Widget<CalcState> {
|
||||||
|
let painter = Painter::new(|ctx, _, env| {
|
||||||
|
let bounds = ctx.size().to_rect();
|
||||||
|
|
||||||
|
ctx.fill(bounds, &env.get(theme::PRIMARY_DARK));
|
||||||
|
|
||||||
|
if ctx.is_hot() {
|
||||||
|
ctx.stroke(bounds.inset(-0.5), &Color::WHITE, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.is_active() {
|
||||||
|
ctx.fill(bounds, &env.get(theme::PRIMARY_LIGHT));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Label::new(label)
|
||||||
|
.with_text_size(24.)
|
||||||
|
.center()
|
||||||
|
.background(painter)
|
||||||
|
.expand()
|
||||||
|
.on_click(move |_ctx, data: &mut CalcState, _env| data.op(op))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn op_button(op: char) -> impl Widget<CalcState> {
|
||||||
|
op_button_label(op, op.to_string())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn digit_button(digit: u8) -> impl Widget<CalcState> {
|
||||||
|
let painter = Painter::new(|ctx, _, env| {
|
||||||
|
let bounds = ctx.size().to_rect();
|
||||||
|
|
||||||
|
ctx.fill(bounds, &env.get(theme::BACKGROUND_LIGHT));
|
||||||
|
|
||||||
|
if ctx.is_hot() {
|
||||||
|
ctx.stroke(bounds.inset(-0.5), &Color::WHITE, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.is_active() {
|
||||||
|
ctx.fill(bounds, &Color::rgb8(0x71, 0x71, 0x71));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Label::new(format!("{}", digit))
|
||||||
|
.with_text_size(24.)
|
||||||
|
.center()
|
||||||
|
.background(painter)
|
||||||
|
.expand()
|
||||||
|
.on_click(move |_ctx, data: &mut CalcState, _env| data.digit(digit))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn flex_row<T: Data>(
|
||||||
|
w1: impl Widget<T> + 'static,
|
||||||
|
w2: impl Widget<T> + 'static,
|
||||||
|
w3: impl Widget<T> + 'static,
|
||||||
|
w4: impl Widget<T> + 'static,
|
||||||
|
) -> impl Widget<T> {
|
||||||
|
Flex::row()
|
||||||
|
.with_flex_child(w1, 1.0)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(w2, 1.0)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(w3, 1.0)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(w4, 1.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_calc() -> impl Widget<CalcState> {
|
||||||
|
let display = Label::new(|data: &String, _env: &_| data.clone())
|
||||||
|
.with_text_size(32.0)
|
||||||
|
.lens(CalcState::value)
|
||||||
|
.padding(5.0);
|
||||||
|
Flex::column()
|
||||||
|
.with_flex_spacer(0.2)
|
||||||
|
.with_child(display)
|
||||||
|
.with_flex_spacer(0.2)
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::End)
|
||||||
|
.with_flex_child(
|
||||||
|
flex_row(
|
||||||
|
op_button_label('c', "CE".to_string()),
|
||||||
|
op_button('C'),
|
||||||
|
op_button('⌫'),
|
||||||
|
op_button('÷'),
|
||||||
|
),
|
||||||
|
1.0,
|
||||||
|
)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(
|
||||||
|
flex_row(
|
||||||
|
digit_button(7),
|
||||||
|
digit_button(8),
|
||||||
|
digit_button(9),
|
||||||
|
op_button('×'),
|
||||||
|
),
|
||||||
|
1.0,
|
||||||
|
)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(
|
||||||
|
flex_row(
|
||||||
|
digit_button(4),
|
||||||
|
digit_button(5),
|
||||||
|
digit_button(6),
|
||||||
|
op_button('−'),
|
||||||
|
),
|
||||||
|
1.0,
|
||||||
|
)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(
|
||||||
|
flex_row(
|
||||||
|
digit_button(1),
|
||||||
|
digit_button(2),
|
||||||
|
digit_button(3),
|
||||||
|
op_button('+'),
|
||||||
|
),
|
||||||
|
1.0,
|
||||||
|
)
|
||||||
|
.with_spacer(1.0)
|
||||||
|
.with_flex_child(
|
||||||
|
flex_row(
|
||||||
|
op_button('±'),
|
||||||
|
digit_button(0),
|
||||||
|
op_button('.'),
|
||||||
|
op_button('='),
|
||||||
|
),
|
||||||
|
1.0,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
let window = WindowDesc::new(build_calc)
|
||||||
|
.window_size((223., 300.))
|
||||||
|
.resizable(false)
|
||||||
|
.title(
|
||||||
|
LocalizedString::new("calc-demo-window-title").with_placeholder("Simple Calculator"),
|
||||||
|
);
|
||||||
|
let calc_state = CalcState {
|
||||||
|
value: "0".to_string(),
|
||||||
|
operand: 0.0,
|
||||||
|
operator: 'C',
|
||||||
|
in_num: false,
|
||||||
|
};
|
||||||
|
AppLauncher::with_window(window)
|
||||||
|
.use_simple_logger()
|
||||||
|
.launch(calc_state)
|
||||||
|
.expect("launch failed");
|
||||||
|
}
|
||||||
48
__gui/druid/examples/ex1.rs
Normal file
48
__gui/druid/examples/ex1.rs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
use druid::widget::{Align, Flex, Label, TextBox};
|
||||||
|
use druid::{AppLauncher, Data, Env, Lens, LocalizedString, Widget, WindowDesc, WidgetExt};
|
||||||
|
|
||||||
|
const VERTICAL_WIDGET_SPACING: f64 = 20.0;
|
||||||
|
const TEXT_BOX_WIDTH: f64 = 200.0;
|
||||||
|
const WINDOW_TITLE: LocalizedString<HelloState> = LocalizedString::new("Hello World!");
|
||||||
|
|
||||||
|
#[derive(Clone, Data, Lens)]
|
||||||
|
struct HelloState {
|
||||||
|
name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// describe the main window
|
||||||
|
let main_window = WindowDesc::new(build_root_widget)
|
||||||
|
.title(WINDOW_TITLE)
|
||||||
|
.window_size((400.0, 400.0));
|
||||||
|
|
||||||
|
// create the initial app state
|
||||||
|
let initial_state = HelloState {
|
||||||
|
name: "World".into(),
|
||||||
|
};
|
||||||
|
|
||||||
|
// start the application
|
||||||
|
AppLauncher::with_window(main_window)
|
||||||
|
.launch(initial_state)
|
||||||
|
.expect("Failed to launch application");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_root_widget() -> impl Widget<HelloState> {
|
||||||
|
// a label that will determine its text based on the current app data.
|
||||||
|
let label = Label::new(|data: &HelloState, _env: &Env| format!("Hello {}!", data.name));
|
||||||
|
// a text box that modifies `name`.
|
||||||
|
let text_box = TextBox::new()
|
||||||
|
.with_placeholder("Who are we greeting?")
|
||||||
|
.fix_width(TEXT_BOX_WIDTH)
|
||||||
|
// .expand_width()
|
||||||
|
.lens(HelloState::name);
|
||||||
|
|
||||||
|
// arrange the two widgets vertically, with some padding
|
||||||
|
let layout = Flex::column()
|
||||||
|
.with_child(label)
|
||||||
|
.with_spacer(VERTICAL_WIDGET_SPACING)
|
||||||
|
.with_child(text_box);
|
||||||
|
|
||||||
|
// center the two widgets in the available space
|
||||||
|
Align::centered(layout)
|
||||||
|
}
|
||||||
332
__gui/druid/examples/flex.rs
Normal file
332
__gui/druid/examples/flex.rs
Normal file
@@ -0,0 +1,332 @@
|
|||||||
|
// Copyright 2020 The xi-editor Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
//! Demonstrates alignment of children in the flex container.
|
||||||
|
|
||||||
|
use druid::widget::prelude::*;
|
||||||
|
use druid::widget::{
|
||||||
|
Button, Checkbox, CrossAxisAlignment, Flex, Label, MainAxisAlignment, ProgressBar, RadioGroup,
|
||||||
|
SizedBox, Slider, Stepper, Switch, TextBox, WidgetExt,
|
||||||
|
};
|
||||||
|
use druid::{
|
||||||
|
AppLauncher, Color, Data, Lens, LensExt, LocalizedString, PlatformError, WidgetId, WindowDesc,
|
||||||
|
};
|
||||||
|
|
||||||
|
const DEFAULT_SPACER_SIZE: f64 = 8.;
|
||||||
|
|
||||||
|
#[derive(Clone, Data, Lens)]
|
||||||
|
struct AppState {
|
||||||
|
demo_state: DemoState,
|
||||||
|
params: Params,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Data, Lens)]
|
||||||
|
struct DemoState {
|
||||||
|
pub input_text: String,
|
||||||
|
pub enabled: bool,
|
||||||
|
volume: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Data, Lens)]
|
||||||
|
struct Params {
|
||||||
|
axis: FlexType,
|
||||||
|
cross_alignment: CrossAxisAlignment,
|
||||||
|
main_alignment: MainAxisAlignment,
|
||||||
|
fill_major_axis: bool,
|
||||||
|
debug_layout: bool,
|
||||||
|
fix_minor_axis: bool,
|
||||||
|
fix_major_axis: bool,
|
||||||
|
spacers: Spacers,
|
||||||
|
spacer_size: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, PartialEq, Data)]
|
||||||
|
enum Spacers {
|
||||||
|
None,
|
||||||
|
Flex,
|
||||||
|
Fixed,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, PartialEq, Data)]
|
||||||
|
enum FlexType {
|
||||||
|
Row,
|
||||||
|
Column,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// builds a child Flex widget from some paramaters.
|
||||||
|
struct Rebuilder {
|
||||||
|
inner: Box<dyn Widget<AppState>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Rebuilder {
|
||||||
|
fn new() -> Rebuilder {
|
||||||
|
Rebuilder {
|
||||||
|
inner: SizedBox::empty().boxed(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rebuild_inner(&mut self, data: &AppState) {
|
||||||
|
self.inner = build_widget(&data.params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Widget<AppState> for Rebuilder {
|
||||||
|
fn event(&mut self, ctx: &mut EventCtx, event: &Event, data: &mut AppState, env: &Env) {
|
||||||
|
self.inner.event(ctx, event, data, env)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn lifecycle(&mut self, ctx: &mut LifeCycleCtx, event: &LifeCycle, data: &AppState, env: &Env) {
|
||||||
|
if let LifeCycle::WidgetAdded = event {
|
||||||
|
self.rebuild_inner(data);
|
||||||
|
}
|
||||||
|
self.inner.lifecycle(ctx, event, data, env)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, ctx: &mut UpdateCtx, old_data: &AppState, data: &AppState, env: &Env) {
|
||||||
|
if !old_data.params.same(&data.params) {
|
||||||
|
self.rebuild_inner(data);
|
||||||
|
ctx.children_changed();
|
||||||
|
} else {
|
||||||
|
self.inner.update(ctx, old_data, data, env);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn layout(
|
||||||
|
&mut self,
|
||||||
|
ctx: &mut LayoutCtx,
|
||||||
|
bc: &BoxConstraints,
|
||||||
|
data: &AppState,
|
||||||
|
env: &Env,
|
||||||
|
) -> Size {
|
||||||
|
self.inner.layout(ctx, bc, data, env)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn paint(&mut self, ctx: &mut PaintCtx, data: &AppState, env: &Env) {
|
||||||
|
self.inner.paint(ctx, data, env)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn id(&self) -> Option<WidgetId> {
|
||||||
|
self.inner.id()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_control_row() -> impl Widget<AppState> {
|
||||||
|
Flex::row()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(
|
||||||
|
Flex::column()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(Label::new("Type:").padding(5.0))
|
||||||
|
.with_child(
|
||||||
|
RadioGroup::new(vec![("Row", FlexType::Row), ("Column", FlexType::Column)])
|
||||||
|
.lens(Params::axis),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.with_child(
|
||||||
|
Flex::column()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(Label::new("CrossAxis:").padding(5.0))
|
||||||
|
.with_child(
|
||||||
|
RadioGroup::new(vec![
|
||||||
|
("Start", CrossAxisAlignment::Start),
|
||||||
|
("Center", CrossAxisAlignment::Center),
|
||||||
|
("End", CrossAxisAlignment::End),
|
||||||
|
])
|
||||||
|
.lens(Params::cross_alignment),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.with_child(
|
||||||
|
Flex::column()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(Label::new("MainAxis:").padding(5.0))
|
||||||
|
.with_child(
|
||||||
|
RadioGroup::new(vec![
|
||||||
|
("Start", MainAxisAlignment::Start),
|
||||||
|
("Center", MainAxisAlignment::Center),
|
||||||
|
("End", MainAxisAlignment::End),
|
||||||
|
("Between", MainAxisAlignment::SpaceBetween),
|
||||||
|
("Evenly", MainAxisAlignment::SpaceEvenly),
|
||||||
|
("Around", MainAxisAlignment::SpaceAround),
|
||||||
|
])
|
||||||
|
.lens(Params::main_alignment),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.with_child(make_spacer_select())
|
||||||
|
.with_child(
|
||||||
|
Flex::column()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(Label::new("Misc:").padding((0., 0., 0., 10.)))
|
||||||
|
.with_child(Checkbox::new("Debug layout").lens(Params::debug_layout))
|
||||||
|
.with_spacer(10.)
|
||||||
|
.with_child(Checkbox::new("Fill main axis").lens(Params::fill_major_axis))
|
||||||
|
.with_spacer(10.)
|
||||||
|
.with_child(Checkbox::new("Fix minor axis size").lens(Params::fix_minor_axis))
|
||||||
|
.with_spacer(10.)
|
||||||
|
.with_child(Checkbox::new("Fix major axis size").lens(Params::fix_major_axis))
|
||||||
|
.padding(5.0),
|
||||||
|
)
|
||||||
|
.border(Color::grey(0.6), 2.0)
|
||||||
|
.rounded(5.0)
|
||||||
|
.lens(AppState::params)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_spacer_select() -> impl Widget<Params> {
|
||||||
|
Flex::column()
|
||||||
|
.cross_axis_alignment(CrossAxisAlignment::Start)
|
||||||
|
.with_child(Label::new("Insert Spacers:").padding(5.0))
|
||||||
|
.with_child(
|
||||||
|
RadioGroup::new(vec![
|
||||||
|
("None", Spacers::None),
|
||||||
|
("Flex", Spacers::Flex),
|
||||||
|
("Fixed:", Spacers::Fixed),
|
||||||
|
])
|
||||||
|
.lens(Params::spacers),
|
||||||
|
)
|
||||||
|
.with_child(
|
||||||
|
Flex::row()
|
||||||
|
.with_child(
|
||||||
|
TextBox::new()
|
||||||
|
.parse()
|
||||||
|
.lens(
|
||||||
|
Params::spacer_size
|
||||||
|
.map(|x| Some(*x), |x, y| *x = y.unwrap_or(DEFAULT_SPACER_SIZE)),
|
||||||
|
)
|
||||||
|
.fix_width(60.0),
|
||||||
|
)
|
||||||
|
.with_child(
|
||||||
|
Stepper::new()
|
||||||
|
.with_range(2.0, 50.0)
|
||||||
|
.with_step(2.0)
|
||||||
|
.lens(Params::spacer_size),
|
||||||
|
)
|
||||||
|
.padding((8.0, 5.0)),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn space_if_needed<T: Data>(flex: &mut Flex<T>, params: &Params) {
|
||||||
|
match params.spacers {
|
||||||
|
Spacers::None => (),
|
||||||
|
Spacers::Fixed => flex.add_spacer(params.spacer_size),
|
||||||
|
Spacers::Flex => flex.add_flex_spacer(1.0),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_widget(state: &Params) -> Box<dyn Widget<AppState>> {
|
||||||
|
let flex = match state.axis {
|
||||||
|
FlexType::Column => Flex::column(),
|
||||||
|
FlexType::Row => Flex::row(),
|
||||||
|
}
|
||||||
|
.cross_axis_alignment(state.cross_alignment)
|
||||||
|
.main_axis_alignment(state.main_alignment)
|
||||||
|
.must_fill_main_axis(state.fill_major_axis);
|
||||||
|
|
||||||
|
let mut flex = flex.with_child(TextBox::new().lens(DemoState::input_text));
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
|
||||||
|
flex.add_child(
|
||||||
|
Button::new("Clear").on_click(|_ctx, data: &mut DemoState, _env| {
|
||||||
|
data.input_text.clear();
|
||||||
|
data.enabled = false;
|
||||||
|
data.volume = 0.0;
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
|
||||||
|
flex.add_child(Label::new(|data: &DemoState, _: &Env| {
|
||||||
|
data.input_text.clone()
|
||||||
|
}));
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
flex.add_child(Checkbox::new("Demo").lens(DemoState::enabled));
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
flex.add_child(Slider::new().lens(DemoState::volume));
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
flex.add_child(ProgressBar::new().lens(DemoState::volume));
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
flex.add_child(
|
||||||
|
Stepper::new()
|
||||||
|
.with_range(0.0, 1.0)
|
||||||
|
.with_step(0.1)
|
||||||
|
.with_wraparound(true)
|
||||||
|
.lens(DemoState::volume),
|
||||||
|
);
|
||||||
|
space_if_needed(&mut flex, state);
|
||||||
|
flex.add_child(Switch::new().lens(DemoState::enabled));
|
||||||
|
|
||||||
|
let flex = flex
|
||||||
|
.background(Color::rgba8(0, 0, 0xFF, 0x30))
|
||||||
|
.lens(AppState::demo_state);
|
||||||
|
|
||||||
|
let mut flex = SizedBox::new(flex);
|
||||||
|
if state.fix_minor_axis {
|
||||||
|
match state.axis {
|
||||||
|
FlexType::Row => flex = flex.height(200.),
|
||||||
|
FlexType::Column => flex = flex.width(200.),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if state.fix_major_axis {
|
||||||
|
match state.axis {
|
||||||
|
FlexType::Row => flex = flex.width(600.),
|
||||||
|
FlexType::Column => flex = flex.height(300.),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if state.debug_layout {
|
||||||
|
flex.debug_paint_layout().boxed()
|
||||||
|
} else {
|
||||||
|
flex.boxed()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_ui() -> impl Widget<AppState> {
|
||||||
|
Flex::column()
|
||||||
|
.must_fill_main_axis(true)
|
||||||
|
.with_child(make_control_row())
|
||||||
|
.with_spacer(20.)
|
||||||
|
.with_flex_child(Rebuilder::new(), 1.0)
|
||||||
|
.padding(10.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main() -> Result<(), PlatformError> {
|
||||||
|
let main_window = WindowDesc::new(make_ui)
|
||||||
|
.window_size((620., 600.00))
|
||||||
|
.with_min_size((620., 265.00))
|
||||||
|
.title(LocalizedString::new("Flex Container Options"));
|
||||||
|
|
||||||
|
let demo_state = DemoState {
|
||||||
|
input_text: "hello".into(),
|
||||||
|
enabled: false,
|
||||||
|
volume: 0.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
let params = Params {
|
||||||
|
axis: FlexType::Row,
|
||||||
|
cross_alignment: CrossAxisAlignment::Center,
|
||||||
|
main_alignment: MainAxisAlignment::Start,
|
||||||
|
debug_layout: false,
|
||||||
|
fix_minor_axis: false,
|
||||||
|
fix_major_axis: false,
|
||||||
|
spacers: Spacers::None,
|
||||||
|
spacer_size: DEFAULT_SPACER_SIZE,
|
||||||
|
fill_major_axis: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
let data = AppState { demo_state, params };
|
||||||
|
|
||||||
|
AppLauncher::with_window(main_window)
|
||||||
|
.use_simple_logger()
|
||||||
|
.launch(data)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user