diff --git a/Cargo.lock b/Cargo.lock
index 998004b..6d1084c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -129,9 +129,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aes"
-version = "0.9.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66bd29a732b644c0431c6140f370d097879203d79b80c94a6747ba0872adaef8"
+checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138"
dependencies = [
"cipher",
"cpubits",
@@ -548,9 +548,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.5.0"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
[[package]]
name = "av-scenechange"
@@ -694,9 +694,9 @@ dependencies = [
[[package]]
name = "brotli"
-version = "8.0.2"
+version = "8.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
+checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@@ -705,9 +705,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
-version = "5.0.0"
+version = "5.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
+checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@@ -726,15 +726,15 @@ dependencies = [
[[package]]
name = "built"
-version = "0.8.0"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64"
+checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9"
[[package]]
name = "bumpalo"
-version = "3.20.2"
+version = "3.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
[[package]]
name = "bytemuck"
@@ -827,9 +827,9 @@ dependencies = [
[[package]]
name = "cbc"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98db6aeaef0eeef2c1e3ce9a27b739218825dae116076352ac3777076aa22225"
+checksum = "ce2dc9ee5f88d11e0beb842c88b33c8a5cf0d1329c4b19494af42b07dbfe8896"
dependencies = [
"cipher",
]
@@ -882,9 +882,9 @@ dependencies = [
[[package]]
name = "cipher"
-version = "0.5.1"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e34d8227fe1ba289043aeb13792056ff80fd6de1a9f49137a5f499de8e8c78ea"
+checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c"
dependencies = [
"crypto-common",
"inout",
@@ -1063,9 +1063,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "crypto-common"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
+checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
dependencies = [
"hybrid-array",
]
@@ -1122,9 +1122,9 @@ dependencies = [
[[package]]
name = "displaydoc"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
dependencies = [
"proc-macro2",
"quote",
@@ -1163,9 +1163,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
[[package]]
name = "ecolor"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55f6cc0cb3b84a21232c468db972ebcddd34decbf1ff02cdebffd807c13bbd81"
+checksum = "a05fbfa222ffb51989d5ccf33e5f7aebfcf96c5023413856b0c3618a7f79896e"
dependencies = [
"bytemuck",
"emath",
@@ -1173,9 +1173,9 @@ dependencies = [
[[package]]
name = "eframe"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea3080bfd001aee2223dcb2228d9de7d31f41d7cfb99e8cd70df3ae8083a42f"
+checksum = "f98fe83b2589105b69dd25ca1e0fa2135a6e864d502fd8e08978f937e128cfef"
dependencies = [
"ahash",
"bytemuck",
@@ -1209,9 +1209,9 @@ dependencies = [
[[package]]
name = "egui"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3cbe28ac1a9c0761319aafb9ad37737720cc49d99c13a4a6b990768fa01ffe67"
+checksum = "42112be0ae157289312b92b3dfaf20e911b5a3c4c65d4aab0e7c47fbc0ce16e3"
dependencies = [
"accesskit",
"ahash",
@@ -1227,9 +1227,9 @@ dependencies = [
[[package]]
name = "egui-wgpu"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f311c0b9cdd8a38821ae6f245fbe6e1a3d7d157c77b7d22344f205b317232c8"
+checksum = "9f0c0559ac5598a1b887a6206dccbab7e3e6246c57cb00ae287262bd44776c9c"
dependencies = [
"ahash",
"bytemuck",
@@ -1247,9 +1247,9 @@ dependencies = [
[[package]]
name = "egui-winit"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8e97625c2fe0fadc8b92ec690fbf515e15e2efd67ca50e063ad3302ec8ee626"
+checksum = "967c5b323625d46d46a59b5daba3fef742248d27693cc18972458619858c4239"
dependencies = [
"accesskit_winit",
"arboard",
@@ -1269,9 +1269,9 @@ dependencies = [
[[package]]
name = "egui_extras"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c609fc87f6c70ffd3afd679cbb294985096d2fc0be33e762ad5614bde4925bc"
+checksum = "598d8675f6fd9088db8a93d8c7aacda936b2f3d0c2b0660ad1744a45b5caf922"
dependencies = [
"ahash",
"egui",
@@ -1283,9 +1283,9 @@ dependencies = [
[[package]]
name = "egui_glow"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6caa4eca47cc2358e2c5ae60843a94118e338f87099c6af4170e6e968e8d77cb"
+checksum = "62b652957fa7e1ab01e8fecbfbf4e35f6e43a53fa98af8a562b50d5403cd44b9"
dependencies = [
"bytemuck",
"egui",
@@ -1300,15 +1300,15 @@ dependencies = [
[[package]]
name = "either"
-version = "1.15.0"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
[[package]]
name = "emath"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a74fbbf7501c430b89df62d102b6bfa02162faaf3e155512c677c9d20f5708d1"
+checksum = "b53f0d33a479321da6b0caa71366c9f67e8a2c149762d90bdc0d16e601ee8ecb"
dependencies = [
"bytemuck",
]
@@ -1403,9 +1403,9 @@ dependencies = [
[[package]]
name = "epaint"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92b452e348c2758115288802ca25f86ee286ce2cfae6643711ce116662311310"
+checksum = "6675898a291ec212fc3df04f537d177fce8496120244590e6359dcaa4c25da79"
dependencies = [
"ahash",
"bytemuck",
@@ -1425,9 +1425,9 @@ dependencies = [
[[package]]
name = "epaint_default_fonts"
-version = "0.34.2"
+version = "0.34.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1644e25dbe3d663fd9c2a4181772c64b23361e377e550c10422ecc3a7de1c3c2"
+checksum = "f8970033a4282a7bcf899b38b5ed3a58b732fe093d03785d58648515d8d309da"
[[package]]
name = "equator"
@@ -1734,7 +1734,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159"
dependencies = [
"color_quant",
- "weezl",
+ "weezl 0.1.12",
]
[[package]]
@@ -2293,9 +2293,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]]
name = "jiff"
-version = "0.2.24"
+version = "0.2.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d"
+checksum = "392c70591e8749fe235ddaf513e6f58b26bce3dcc16524cecc8936f75afa161e"
dependencies = [
"jiff-static",
"log",
@@ -2306,9 +2306,9 @@ dependencies = [
[[package]]
name = "jiff-static"
-version = "0.2.24"
+version = "0.2.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7"
+checksum = "47b605b0c050d845fc355bb11eb3f9a8deddc218ea60c76e61aa1f2adfb2c96a"
dependencies = [
"proc-macro2",
"quote",
@@ -2394,9 +2394,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.98"
+version = "0.3.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08"
+checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"
dependencies = [
"cfg-if",
"futures-util",
@@ -2434,12 +2434,13 @@ dependencies = [
[[package]]
name = "kurbo"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb"
+checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2"
dependencies = [
"arrayvec",
"euclid",
+ "polycool",
"smallvec",
]
@@ -2513,14 +2514,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
-version = "0.1.16"
+version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
+checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
dependencies = [
"bitflags 2.11.1",
"libc",
"plain",
- "redox_syscall 0.7.5",
+ "redox_syscall 0.8.0",
]
[[package]]
@@ -2564,9 +2565,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.29"
+version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5"
[[package]]
name = "loop9"
@@ -2599,9 +2600,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.8.0"
+version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
[[package]]
name = "memmap2"
@@ -2763,9 +2764,9 @@ dependencies = [
[[package]]
name = "num-conv"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
[[package]]
name = "num-derive"
@@ -3192,9 +3193,9 @@ dependencies = [
[[package]]
name = "orbclient"
-version = "0.3.54"
+version = "0.3.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329"
+checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747"
dependencies = [
"libc",
"libredox",
@@ -3277,9 +3278,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "pdf_oxide"
-version = "0.3.50"
+version = "0.3.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c512f3d7e8feac18e94ee08995d5c12d0fb86375ff4b03f931a11c808276eff4"
+checksum = "5945029a68efc99773074ef9d5c8a211a3e515d5bee46feba2f4df31776e1c5c"
dependencies = [
"aes",
"base64",
@@ -3304,7 +3305,7 @@ dependencies = [
"office_oxide",
"phf 0.13.1",
"qcms",
- "quick-xml 0.39.4",
+ "quick-xml 0.40.1",
"regex",
"serde",
"serde_json",
@@ -3318,18 +3319,18 @@ dependencies = [
"unicode-bidi",
"unicode-linebreak",
"uuid",
- "weezl",
+ "weezl 0.2.1",
]
[[package]]
name = "peniko"
-version = "0.6.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a"
+checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6"
dependencies = [
"bytemuck",
"color",
- "kurbo 0.13.0",
+ "kurbo 0.13.1",
"linebender_resource_handle",
"smallvec",
]
@@ -3429,18 +3430,18 @@ dependencies = [
[[package]]
name = "pin-project"
-version = "1.1.12"
+version = "1.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9"
+checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
-version = "1.1.12"
+version = "1.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389"
+checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"
dependencies = [
"proc-macro2",
"quote",
@@ -3509,6 +3510,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
+[[package]]
+name = "polycool"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6"
+dependencies = [
+ "arrayvec",
+]
+
[[package]]
name = "portable-atomic"
version = "1.13.1"
@@ -3853,9 +3863,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.7.5"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b"
+checksum = "7c7591fa2c6b601dfcfe5f043f65a1c39fcdf50efefcd7f1572e538c1f4b398d"
dependencies = [
"bitflags 2.11.1",
]
@@ -4059,9 +4069,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.149"
+version = "1.0.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
dependencies = [
"itoa",
"memchr",
@@ -4434,7 +4444,7 @@ dependencies = [
"flate2",
"half",
"quick-error",
- "weezl",
+ "weezl 0.1.12",
"zune-jpeg",
]
@@ -4547,9 +4557,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.25.11+spec-1.1.0"
+version = "0.25.12+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
+checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
dependencies = [
"indexmap",
"toml_datetime",
@@ -4808,9 +4818,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
-version = "0.2.121"
+version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790"
+checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"
dependencies = [
"cfg-if",
"once_cell",
@@ -4821,9 +4831,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.71"
+version = "0.4.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8"
+checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -4831,9 +4841,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.121"
+version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578"
+checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -4841,9 +4851,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.121"
+version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2"
+checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -4854,9 +4864,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.121"
+version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441"
+checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"
dependencies = [
"unicode-ident",
]
@@ -5032,9 +5042,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.98"
+version = "0.3.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa"
+checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -5072,6 +5082,12 @@ version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
+[[package]]
+name = "weezl"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4ca08e5ef825b65b056d9efbd95c8750683f0a6d0466d02e96dc2e4e360f3d2"
+
[[package]]
name = "wgpu"
version = "29.0.3"
@@ -5588,9 +5604,9 @@ dependencies = [
[[package]]
name = "winnow"
-version = "1.0.2"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0"
+checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
dependencies = [
"memchr",
]
@@ -5909,18 +5925,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.48"
+version = "0.8.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
+checksum = "bce33a6288fa3f072a8c2c7d0f2fdbb90e28298f0135c1f99b96c3db2efcc60b"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.48"
+version = "0.8.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
+checksum = "8fd425244944f4ab65ccff928e7323354c5a018c75838362fdce749dfad2ee1e"
dependencies = [
"proc-macro2",
"quote",
@@ -5929,9 +5945,9 @@ dependencies = [
[[package]]
name = "zerofrom"
-version = "0.1.7"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"
+checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
dependencies = [
"zerofrom-derive",
]
diff --git a/README.md b/README.md
index 81a1b56..b6d132b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
# Lexi
윈도우 기본 검색 쓰다가 답답해서 직접 만든 파일 검색기
-
+
diff --git a/src/app.rs b/src/app.rs
index 6cafc57..5c4fa70 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -9,7 +9,7 @@ use egui::UiKind;
use egui_extras::{Column, TableBuilder};
use rfd::FileDialog;
-use crate::search::{PendingSearch, SearchConfig, SearchResult};
+use crate::search::{PendingSearch, SearchConfig, SearchMode, SearchResult};
/// Main state for the entire application.
pub struct SearchApp {
@@ -383,10 +383,21 @@ impl SearchApp {
ui.horizontal(|ui| {
let mut to_remove = None;
for (i, tab) in self.tabs.iter().enumerate() {
- let label = if tab.config.paths.is_empty() {
- "새 검색".to_string()
- } else {
- tab.config.paths.join(", ")
+ let label = {
+ let valid_queries: Vec = tab
+ .config
+ .queries
+ .iter()
+ .map(|q| q.query.trim())
+ .filter(|q| !q.is_empty())
+ .map(|q| q.to_string())
+ .collect();
+
+ if valid_queries.is_empty() {
+ format!("탭 {}", i + 1)
+ } else {
+ valid_queries.join(", ")
+ }
};
let response = ui.selectable_label(self.selected_tab_index == i, label);
if response.clicked() {
@@ -474,36 +485,47 @@ impl SearchApp {
// File pattern input (glob filtering).
ui.horizontal(|ui| {
ui.label("파일패턴:");
- let remaining_width = ui.available_width() - 200.0;
+ let remaining_width = ui.available_width() - 300.0;
if ui
.add(
egui::TextEdit::singleline(&mut tab.config.patterns)
.desired_width(remaining_width)
- .hint_text("예시: *.txt *.{txt,csv} !dir/"),
+ .hint_text("예시: *.pdf (PDF 파일만 검색) *.{pdf,csv} (PDF, CSV 파일만 검색) !dir/ (dir 폴더 제외)"),
)
.changed()
{
input_changed = true;
}
- if ui
- .checkbox(&mut tab.config.file_name_only, "파일명만")
- .on_hover_text("파일명만 검색합니다.")
- .changed()
- {
- input_changed = true;
- if tab.config.file_name_only {
- tab.config.search_doc_content = false;
- }
- }
- if ui
- .checkbox(&mut tab.config.search_doc_content, "문서내용도")
- .on_hover_text("pdf, docx, pptx, xlsx 내용도 검색합니다.")
- .changed()
- {
+
+ let combo_id = ui.id().with("search_mode_combo").with(tab_index);
+ let combo_res = egui::ComboBox::from_id_salt(combo_id)
+ .selected_text(tab.config.mode.label())
+ .width(180.0)
+ .show_ui(ui, |ui| {
+ let mut sub_changed = false;
+
+ sub_changed |= ui.selectable_value(
+ &mut tab.config.mode,
+ SearchMode::FileNameOnly,
+ SearchMode::FileNameOnly.label()
+ ).changed();
+
+ sub_changed |= ui.selectable_value(
+ &mut tab.config.mode,
+ SearchMode::PathAndContent,
+ SearchMode::PathAndContent.label()
+ ).changed();
+
+ sub_changed |= ui.selectable_value(
+ &mut tab.config.mode,
+ SearchMode::IncludeDocContent,
+ SearchMode::IncludeDocContent.label()
+ ).changed();
+
+ sub_changed
+ });
+ if let Some(true) = combo_res.inner {
input_changed = true;
- if tab.config.search_doc_content {
- tab.config.file_name_only = false;
- }
}
});
@@ -513,8 +535,8 @@ impl SearchApp {
let mut should_cancel = false;
for query in &mut tab.config.queries {
ui.horizontal(|ui| {
- ui.label("검색어: ");
- let remaining_width = ui.available_width() - 200.0;
+ ui.label("검색어:");
+ let remaining_width = ui.available_width() - 300.0;
if ui
.add(
egui::TextEdit::singleline(&mut query.query)
diff --git a/src/search.rs b/src/search.rs
index 1cd3b77..7df26b7 100644
--- a/src/search.rs
+++ b/src/search.rs
@@ -201,14 +201,31 @@ impl SearchQuery {
}
}
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
+pub enum SearchMode {
+ #[default]
+ PathAndContent,
+ FileNameOnly,
+ IncludeDocContent,
+}
+
+impl SearchMode {
+ pub fn label(&self) -> &'static str {
+ match self {
+ SearchMode::FileNameOnly => "파일명만",
+ SearchMode::PathAndContent => "파일명 + 텍스트",
+ SearchMode::IncludeDocContent => "파일명 + 텍스트 + 문서내용",
+ }
+ }
+}
+
/// Full configuration for a search operation.
#[derive(Debug, Clone, Default)]
pub struct SearchConfig {
pub paths: Vec,
pub patterns: String,
pub queries: Vec,
- pub file_name_only: bool,
- pub search_doc_content: bool,
+ pub mode: SearchMode,
}
impl SearchConfig {
@@ -218,8 +235,7 @@ impl SearchConfig {
paths,
patterns,
queries: vec![SearchQuery::new()],
- file_name_only: false,
- search_doc_content: false,
+ mode: SearchMode::PathAndContent,
}
}
@@ -274,8 +290,7 @@ impl SearchConfig {
pub fn spawn_search(config: &SearchConfig) -> Result {
// Create variables for the search configuration.
let matcher = config.create_matcher()?;
- let file_name_only = config.file_name_only;
- let search_doc_content = config.search_doc_content;
+ let mode = config.mode;
let paths = config.paths();
if paths.is_empty() {
bail!("No search paths provided");
@@ -338,9 +353,9 @@ pub fn spawn_search(config: &SearchConfig) -> Result {
at = m.end();
}
- let mut entries = Vec::new();
// Second pass: scan file content (unless "File name only" mode is on).
- if !file_name_only {
+ let mut entries = Vec::new();
+ if mode != SearchMode::FileNameOnly {
let mut handled = false;
let extension = path
.extension()
@@ -348,7 +363,7 @@ pub fn spawn_search(config: &SearchConfig) -> Result {
.unwrap_or("")
.to_lowercase();
- if search_doc_content {
+ if mode == SearchMode::IncludeDocContent {
match extension.as_str() {
"docx" | "pptx" | "xlsx" | "doc" | "ppt" | "xls" => {
if let Ok(text) = office_oxide::extract_text(path) {
diff --git a/tests/search_tests.rs b/tests/search_tests.rs
index a85de84..4279421 100644
--- a/tests/search_tests.rs
+++ b/tests/search_tests.rs
@@ -3,7 +3,7 @@ use std::io::Write;
use tempfile::tempdir;
-use lexi::search::{SearchConfig, spawn_search};
+use lexi::search::{SearchConfig, SearchMode, spawn_search};
#[test]
fn test_search_filename() {
@@ -155,7 +155,7 @@ fn test_search_korean_qp_eml() {
vec![dir.path().to_string_lossy().to_string()],
"".to_string(),
);
- config.search_doc_content = true;
+ config.mode = SearchMode::IncludeDocContent;
config.queries[0].query = "안녕".to_string();
let pending = spawn_search(&config).unwrap();