diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 63e4a2a..60da987 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -175,9 +175,9 @@ jobs: rm -rf czkawka_gui cp target/release/czkawka_gui . strip czkawka_gui - wget https://github.com/AppImage/pkg2appimage/releases/download/continuous/pkg2appimage-1806-x86_64.AppImage - chmod +x pkg2appimage-1806-x86_64.AppImage - ./pkg2appimage-1806-x86_64.AppImage misc/czkawka-appimage-recipe.yml + wget https://github.com/AppImage/pkg2appimage/releases/download/continuous/pkg2appimage-1807-x86_64.AppImage + chmod +x pkg2appimage-1807-x86_64.AppImage + ./pkg2appimage-1807-x86_64.AppImage misc/czkawka-appimage-recipe.yml mv out/Czkawka*.AppImage out/czkawka_gui-minimal.AppImage - name: Minimal Appimage Upload diff --git a/Cargo.lock b/Cargo.lock index 8749daa..895b984 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,23 +65,21 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "atk" -version = "0.9.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812b4911e210bd51b24596244523c856ca749e6223c50a7fbbba3f89ee37c426" +checksum = "a83b21d2aa75e464db56225e1bda2dd5993311ba1095acaa8fa03d1ae67026ba" dependencies = [ "atk-sys", "bitflags", "glib", - "glib-sys", - "gobject-sys", "libc", ] [[package]] name = "atk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f530e4af131d94cc4fa15c5c9d0348f0ef28bac64ba660b6b2a1cf2605dedfce" +checksum = "badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea" dependencies = [ "glib-sys", "gobject-sys", @@ -164,9 +162,9 @@ checksum = "5488039ea2c6de8668351415e39a0218a8955bffadcff0cf01d1293a20854584" [[package]] name = "blake3" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", "arrayvec", @@ -203,9 +201,9 @@ checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "bzip2" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" dependencies = [ "bzip2-sys", "libc", @@ -213,9 +211,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.10+1.0.8" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17fa3d1ac1ca21c5c4e36a97f3c3eb25084576f6fc47bf0139c1123434216c6c" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" dependencies = [ "cc", "libc", @@ -224,24 +222,22 @@ dependencies = [ [[package]] name = "cairo-rs" -version = "0.9.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5c0f2e047e8ca53d0ff249c54ae047931d7a6ebe05d00af73e0ffeb6e34bdb8" +checksum = "8d32eecb1e806433cf68063c4548bbdc15cc56d35db19d685ab60909c4c85206" dependencies = [ "bitflags", "cairo-sys-rs", "glib", - "glib-sys", - "gobject-sys", "libc", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ed2639b9ad5f1d6efa76de95558e11339e7318426d84ac4890b86c03e828ca7" +checksum = "d7c9c3928781e8a017ece15eace05230f04b647457d170d2d9641c94a444ff80" dependencies = [ "glib-sys", "libc", @@ -272,6 +268,15 @@ dependencies = [ "nom", ] +[[package]] +name = "cfg-expr" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30aa9e2ffbb838c6b451db14f3cd8e63ed622bf859f9956bc93845a10fafc26a" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "0.1.10" @@ -607,6 +612,16 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "field-offset" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +dependencies = [ + "memoffset", + "rustc_version", +] + [[package]] name = "flate2" version = "1.0.20" @@ -627,9 +642,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "futures" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d5813545e459ad3ca1bff9915e9ad7f1a47dc6a91b627ce321d5863b7dd253" +checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" dependencies = [ "futures-channel", "futures-core", @@ -642,9 +657,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" dependencies = [ "futures-core", "futures-sink", @@ -652,15 +667,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" [[package]] name = "futures-executor" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f6cb7042eda00f0049b1d2080aa4b93442997ee507eb3828e8bd7577f94c9d" +checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" dependencies = [ "futures-core", "futures-task", @@ -669,16 +684,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" +checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" [[package]] name = "futures-macro" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" +checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" dependencies = [ + "autocfg", "proc-macro-hack", "proc-macro2", "quote", @@ -687,22 +703,23 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" +checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" [[package]] name = "futures-task" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" [[package]] name = "futures-util" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" dependencies = [ + "autocfg", "futures-channel", "futures-core", "futures-io", @@ -719,44 +736,37 @@ dependencies = [ [[package]] name = "gdk" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db00839b2a68a7a10af3fa28dfb3febaba3a20c3a9ac2425a33b7df1f84a6b7d" +checksum = "679e22651cd15888e7acd01767950edca2ee9fcd6421fbf5b3c3b420d4e88bb0" dependencies = [ "bitflags", "cairo-rs", - "cairo-sys-rs", "gdk-pixbuf", "gdk-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", "pango", ] [[package]] name = "gdk-pixbuf" -version = "0.9.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6dae3cb99dd49b758b88f0132f8d401108e63ae8edd45f432d42cdff99998a" +checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" dependencies = [ "gdk-pixbuf-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfe468a7f43e97b8d193a762b6c5cf67a7d36cacbc0b9291dbcae24bfea1e8f" +checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" dependencies = [ "gio-sys", "glib-sys", @@ -767,9 +777,9 @@ dependencies = [ [[package]] name = "gdk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a9653cfc500fd268015b1ac055ddbc3df7a5c9ea3f4ccef147b3957bd140d69" +checksum = "0e091b3d3d6696949ac3b3fb3c62090e5bfd7bd6850bef5c3c5ea701de1b1f1e" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -815,20 +825,16 @@ dependencies = [ [[package]] name = "gio" -version = "0.9.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb60242bfff700772dae5d9e3a1f7aa2e4ebccf18b89662a16acb2822568561" +checksum = "86c6823b39d46d22cac2466de261f28d7f049ebc18f7b35296a42c7ed8a88325" dependencies = [ "bitflags", - "futures", "futures-channel", "futures-core", "futures-io", - "futures-util", "gio-sys", "glib", - "glib-sys", - "gobject-sys", "libc", "once_cell", "thiserror", @@ -836,9 +842,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e24fb752f8f5d2cf6bbc2c606fd2bc989c81c5e2fe321ab974d54f8b6344eac" +checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" dependencies = [ "glib-sys", "gobject-sys", @@ -849,33 +855,32 @@ dependencies = [ [[package]] name = "glib" -version = "0.10.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c685013b7515e668f1b57a165b009d4d28cb139a8a989bbd699c10dad29d0c5" +checksum = "f0028bbfd270d0778540294abca11141d59cb474da4c1f61ca1e11f579c49247" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", - "futures-util", "glib-macros", "glib-sys", "gobject-sys", "libc", "once_cell", + "smallvec", ] [[package]] name = "glib-macros" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039" +checksum = "9eb7bdf41972a6f6dab5d72c23d22789f400059a43ba0d72b4bb2f8664d946a9" dependencies = [ "anyhow", "heck", - "itertools", - "proc-macro-crate", + "proc-macro-crate 1.0.0", "proc-macro-error", "proc-macro2", "quote", @@ -884,9 +889,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e9b997a66e9a23d073f2b1abb4dbfc3925e0b8952f67efd8d9b6e168e4cdc1" +checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" dependencies = [ "libc", "system-deps", @@ -900,9 +905,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "gobject-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "952133b60c318a62bf82ee75b93acc7e84028a093e06b9e27981c2b6fe68218c" +checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" dependencies = [ "glib-sys", "libc", @@ -911,37 +916,32 @@ dependencies = [ [[package]] name = "gtk" -version = "0.9.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f022f2054072b3af07666341984562c8e626a79daa8be27b955d12d06a5ad6a" +checksum = "10ae864e5eab8bc8b6b8544ed259eb02dd61b25323b20e777a77aa289c05fd0c" dependencies = [ "atk", "bitflags", "cairo-rs", - "cairo-sys-rs", - "cc", + "field-offset", + "futures-channel", "gdk", "gdk-pixbuf", - "gdk-pixbuf-sys", - "gdk-sys", "gio", - "gio-sys", "glib", - "glib-sys", - "gobject-sys", "gtk-sys", + "gtk3-macros", "libc", "once_cell", "pango", - "pango-sys", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89acda6f084863307d948ba64a4b1ef674e8527dddab147ee4cdcc194c880457" +checksum = "8c14c8d3da0545785a7c5a120345b3abb534010fb8ae0f2ef3f47c027fba303e" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -955,6 +955,21 @@ dependencies = [ "system-deps", ] +[[package]] +name = "gtk3-macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21de1da96dc117443fb03c2e270b2d34b7de98d0a79a19bbb689476173745b79" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate 1.0.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "hamming" version = "0.1.3" @@ -993,9 +1008,9 @@ checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549" [[package]] name = "humansize" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" +checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" [[package]] name = "id3" @@ -1057,9 +1072,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" dependencies = [ "either", ] @@ -1291,7 +1306,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" dependencies = [ "darling", - "proc-macro-crate", + "proc-macro-crate 0.1.5", "proc-macro2", "quote", "syn", @@ -1413,7 +1428,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 0.1.5", "proc-macro2", "quote", "syn", @@ -1469,14 +1484,12 @@ dependencies = [ [[package]] name = "pango" -version = "0.9.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9937068580bebd8ced19975938573803273ccbcbd598c58d4906efd4ac87c438" +checksum = "415823a4fb9f1789785cd6e2d2413816f2ecff92380382969aaca9c400e13a19" dependencies = [ "bitflags", "glib", - "glib-sys", - "gobject-sys", "libc", "once_cell", "pango-sys", @@ -1484,9 +1497,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d2650c8b62d116c020abd0cea26a4ed96526afda89b1c4ea567131fdefc890" +checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" dependencies = [ "glib-sys", "gobject-sys", @@ -1525,6 +1538,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + [[package]] name = "pin-project-lite" version = "0.2.6" @@ -1570,6 +1592,16 @@ dependencies = [ "toml", ] +[[package]] +name = "proc-macro-crate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +dependencies = [ + "thiserror", + "toml", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1666,9 +1698,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -1678,9 +1710,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1734,9 +1766,9 @@ dependencies = [ [[package]] name = "rodio" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65c2eda643191f6d1bb12ea323a9db8d9ba95374e9be3780b5a9fb5cfb8520f" +checksum = "4d98f5e557b61525057e2bc142c8cd7f0e70d75dc32852309bec440e6e046bf9" dependencies = [ "claxon", "cpal", @@ -1751,6 +1783,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver", +] + [[package]] name = "rustdct" version = "0.4.0" @@ -1794,6 +1835,24 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.125" @@ -1893,15 +1952,15 @@ dependencies = [ [[package]] name = "strum" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" [[package]] name = "strum_macros" -version = "0.18.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" dependencies = [ "heck", "proc-macro2", @@ -1928,11 +1987,14 @@ dependencies = [ [[package]] name = "system-deps" -version = "1.3.2" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" +checksum = "c248107ad7bc1ac07066a4d003cae9e9a7bc2e27d3418f7a9cdcdc8699dbea70" dependencies = [ + "anyhow", + "cfg-expr", "heck", + "itertools", "pkg-config", "strum", "strum_macros", @@ -2060,6 +2122,12 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" + [[package]] name = "unicode-segmentation" version = "1.7.1" @@ -2086,9 +2154,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" -version = "0.0.10" +version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" [[package]] name = "version_check" @@ -2232,9 +2300,9 @@ checksum = "e575e15bedf6e57b5c2d763ffc6c3c760143466cbd09d762d539680ab5992ded" [[package]] name = "zip" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c83dc9b784d252127720168abd71ea82bf8c3d96b17dc565b5e2a02854f2b27" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ "byteorder", "bzip2", diff --git a/czkawka_cli/Cargo.toml b/czkawka_cli/Cargo.toml index 04e0b9e..4d1dc87 100644 --- a/czkawka_cli/Cargo.toml +++ b/czkawka_cli/Cargo.toml @@ -10,4 +10,4 @@ repository = "https://github.com/qarmin/czkawka" [dependencies] czkawka_core = { path = "../czkawka_core" } -structopt = "0.3.18" \ No newline at end of file +structopt = "0.3.21" \ No newline at end of file diff --git a/czkawka_core/Cargo.toml b/czkawka_core/Cargo.toml index b5b44e8..7efe227 100644 --- a/czkawka_core/Cargo.toml +++ b/czkawka_core/Cargo.toml @@ -10,9 +10,9 @@ repository = "https://github.com/qarmin/czkawka" [dependencies] -humansize = "1" -rayon = "1" -crossbeam-channel = "0.5.0" +humansize = "1.1.1" +rayon = "1.5.1" +crossbeam-channel = "0.5.1" # For saving/loading config files to specific directories directories-next = "2.0.0" @@ -20,7 +20,7 @@ directories-next = "2.0.0" # Needed by similar images img_hash = "3.1" bk-tree = "0.3" -image = "0.23.12" +image = "0.23.14" hamming = "0.1" # Needed by same music @@ -28,18 +28,18 @@ bitflags = "1.2.1" audiotags = "0.2.7182" # Futures - needed by async progress sender -futures = "0.3.9" +futures = "0.3.15" # Needed by broken files -zip = "0.5.9" -rodio = { version = "0.13.0", optional = true } +zip = "0.5.13" +rodio = { version = "0.14.0", optional = true } # Hashes -blake3 = "0.3" +blake3 = "0.3.8" crc32fast = "1.2.1" xxhash-rust = { version = "0.8.2", features = ["xxh3"] } -tempfile = "3.1" +tempfile = "3.2" [features] default = [] diff --git a/czkawka_gui/Cargo.toml b/czkawka_gui/Cargo.toml index bacc2a5..6d03583 100644 --- a/czkawka_gui/Cargo.toml +++ b/czkawka_gui/Cargo.toml @@ -10,26 +10,26 @@ repository = "https://github.com/qarmin/czkawka" [dependencies] czkawka_core = { path = "../czkawka_core" } -gdk = "0.13.2" -glib = "0.10.1" +gdk = "0.14.0" +glib = "0.14.0" -humansize = "1" -chrono = "0.4" +humansize = "1.1.1" +chrono = "0.4.19" # Used for sending stop signal across threads -crossbeam-channel = "0.5" +crossbeam-channel = "0.5.1" # To get informations about progress -futures = "0.3.8" +futures = "0.3.15" # For saving/loading config files to specific directories directories-next = "2.0.0" # For opening files -open = "1.4.0" +open = "1.7.0" # To get image preview -image = "0.23.12" +image = "0.23.14" # Move files to trash trash = "1.3.0" @@ -38,7 +38,7 @@ trash = "1.3.0" winapi = { version = "0.3.9", features = ["combaseapi", "objbase", "shobjidl_core", "windef", "winerror", "wtypesbase", "winuser"] } [dependencies.gtk] -version = "0.9.2" +version = "0.14.0" default-features = false # just in case features = ["v3_22"] diff --git a/czkawka_gui/src/connect_button_delete.rs b/czkawka_gui/src/connect_button_delete.rs index 8e4ccae..667ed3f 100644 --- a/czkawka_gui/src/connect_button_delete.rs +++ b/czkawka_gui/src/connect_button_delete.rs @@ -34,10 +34,9 @@ pub fn connect_button_delete(gui_data: &GuiData) { return; } - match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) { + match to_notebook_main_enum(notebook_main.current_page().unwrap()) { NotebookMainEnum::Duplicate => { - if !check_button_settings_confirm_group_deletion.get_active() || !check_if_deleting_all_files_in_group(&tree_view_duplicate_finder.clone(), ColumnsDuplicates::Color as i32, &window_main, &check_button_settings_confirm_group_deletion) - { + if !check_button_settings_confirm_group_deletion.is_active() || !check_if_deleting_all_files_in_group(&tree_view_duplicate_finder.clone(), ColumnsDuplicates::Color as i32, &window_main, &check_button_settings_confirm_group_deletion) { tree_remove(&tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data); } } @@ -54,7 +53,7 @@ pub fn connect_button_delete(gui_data: &GuiData) { basic_remove(&tree_view_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data); } NotebookMainEnum::SimilarImages => { - if !check_button_settings_confirm_group_deletion.get_active() + if !check_button_settings_confirm_group_deletion.is_active() || !check_if_deleting_all_files_in_group(&tree_view_similar_images_finder.clone(), ColumnsSimilarImages::Color as i32, &window_main, &check_button_settings_confirm_group_deletion) { tree_remove( @@ -71,8 +70,7 @@ pub fn connect_button_delete(gui_data: &GuiData) { basic_remove(&tree_view_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data); } NotebookMainEnum::SameMusic => { - if !check_button_settings_confirm_group_deletion.get_active() || !check_if_deleting_all_files_in_group(&tree_view_same_music_finder.clone(), ColumnsSameMusic::Color as i32, &window_main, &check_button_settings_confirm_group_deletion) - { + if !check_button_settings_confirm_group_deletion.is_active() || !check_if_deleting_all_files_in_group(&tree_view_same_music_finder.clone(), ColumnsSameMusic::Color as i32, &window_main, &check_button_settings_confirm_group_deletion) { tree_remove(&tree_view_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data); } } @@ -87,7 +85,7 @@ pub fn connect_button_delete(gui_data: &GuiData) { } pub fn check_if_can_delete_files(check_button_settings_confirm_deletion: >k::CheckButton, window_main: >k::Window) -> bool { - if check_button_settings_confirm_deletion.get_active() { + if check_button_settings_confirm_deletion.is_active() { let confirmation_dialog_delete = gtk::Dialog::with_buttons( Some("Delete confirmation"), Some(window_main), @@ -99,19 +97,15 @@ pub fn check_if_can_delete_files(check_button_settings_confirm_deletion: >k::C check_button.set_active(true); check_button.set_halign(Align::Center); - let button_box = confirmation_dialog_delete.get_children()[0].clone().downcast::().unwrap().get_children()[0] - .clone() - .downcast::() - .unwrap() - .get_children()[0] + let button_box = confirmation_dialog_delete.children()[0].clone().downcast::().unwrap().children()[0].clone().downcast::().unwrap().children()[0] .clone() .downcast::() .unwrap(); - let button_ok = button_box.get_children()[0].clone(); + let button_ok = button_box.children()[0].clone(); button_ok.grab_focus(); - let internal_box = confirmation_dialog_delete.get_children()[0].clone().downcast::().unwrap(); + let internal_box = confirmation_dialog_delete.children()[0].clone().downcast::().unwrap(); internal_box.add(&label); internal_box.add(&check_button); @@ -119,7 +113,7 @@ pub fn check_if_can_delete_files(check_button_settings_confirm_deletion: >k::C let response_type = confirmation_dialog_delete.run(); if response_type == gtk::ResponseType::Ok { - if !check_button.get_active() { + if !check_button.is_active() { check_button_settings_confirm_deletion.set_active(false); } confirmation_dialog_delete.hide(); @@ -134,8 +128,8 @@ pub fn check_if_can_delete_files(check_button_settings_confirm_deletion: >k::C } pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_color: i32, window_main: >k::Window, check_button_settings_confirm_group_deletion: >k::CheckButton) -> bool { - let selection = tree_view.get_selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let selection = tree_view.selection(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return false; } @@ -144,9 +138,9 @@ pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_co let mut selected_all_records: bool = true; - if let Some(first_iter) = tree_model.get_iter_first() { + if let Some(first_iter) = tree_model.iter_first() { let current_iter = first_iter; - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!("First element, should be a header"); // First element should be header }; @@ -158,11 +152,11 @@ pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_co break; } - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { if selected_all_records { break; } - } else if current_selected_row != selection_rows.len() && selection_rows[current_selected_row] == tree_model.get_path(¤t_iter).unwrap() { + } else if current_selected_row != selection_rows.len() && selection_rows[current_selected_row] == tree_model.path(¤t_iter).unwrap() { current_selected_row += 1; } else { selected_all_records = false; @@ -187,19 +181,19 @@ pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_co check_button.set_active(true); check_button.set_halign(Align::Center); - let button_box = confirmation_dialog_group_delete.get_children()[0].clone().downcast::().unwrap().get_children()[0] + let button_box = confirmation_dialog_group_delete.children()[0].clone().downcast::().unwrap().children()[0] .clone() .downcast::() .unwrap() - .get_children()[0] + .children()[0] .clone() .downcast::() .unwrap(); - let button_ok = button_box.get_children()[0].clone(); + let button_ok = button_box.children()[0].clone(); button_ok.grab_focus(); - let internal_box = confirmation_dialog_group_delete.get_children()[0].clone().downcast::().unwrap(); + let internal_box = confirmation_dialog_group_delete.children()[0].clone().downcast::().unwrap(); internal_box.add(&label); internal_box.add(&label2); internal_box.add(&check_button); @@ -208,7 +202,7 @@ pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_co let response_type = confirmation_dialog_group_delete.run(); if response_type == gtk::ResponseType::Ok { - if !check_button.get_active() { + if !check_button.is_active() { check_button_settings_confirm_group_deletion.set_active(false); } } else { @@ -225,11 +219,11 @@ pub fn check_if_deleting_all_files_in_group(tree_view: >k::TreeView, column_co pub fn empty_folder_remover(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) { let text_view_errors = gui_data.text_view_errors.clone(); - let use_trash = gui_data.settings.check_button_settings_use_trash.clone().get_active(); + let use_trash = gui_data.settings.check_button_settings_use_trash.clone().is_active(); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return; } @@ -239,8 +233,8 @@ pub fn empty_folder_remover(tree_view: >k::TreeView, column_file_name: i32, co // Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data for tree_path in selection_rows.iter().rev() { - let name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_file_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::().unwrap().unwrap(); + let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::().unwrap(); + let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::().unwrap(); // We must check if folder is really empty or contains only other empty folders let mut error_happened = false; @@ -294,14 +288,14 @@ pub fn empty_folder_remover(tree_view: >k::TreeView, column_file_name: i32, co if !use_trash { match fs::remove_dir_all(format!("{}/{}", path, name)) { Ok(_) => { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } Err(_) => error_happened = true, } } else { match trash::delete(format!("{}/{}", path, name)) { Ok(_) => { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } Err(_) => error_happened = true, } @@ -312,17 +306,17 @@ pub fn empty_folder_remover(tree_view: >k::TreeView, column_file_name: i32, co } } - text_view_errors.get_buffer().unwrap().set_text(messages.as_str()); + text_view_errors.buffer().unwrap().set_text(messages.as_str()); selection.unselect_all(); } pub fn basic_remove(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) { let text_view_errors = gui_data.text_view_errors.clone(); - let use_trash = gui_data.settings.check_button_settings_use_trash.clone().get_active(); + let use_trash = gui_data.settings.check_button_settings_use_trash.clone().is_active(); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return; } @@ -332,38 +326,38 @@ pub fn basic_remove(tree_view: >k::TreeView, column_file_name: i32, column_pat // Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data for tree_path in selection_rows.iter().rev() { - let name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_file_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::().unwrap().unwrap(); + let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::().unwrap(); + let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::().unwrap(); if !use_trash { match fs::remove_file(format!("{}/{}", path, name)) { Ok(_) => { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } Err(_) => messages += format!("Failed to remove file {}/{} because file doesn't exists or you don't have permissions.\n", path, name).as_str(), } } else { match trash::delete(format!("{}/{}", path, name)) { Ok(_) => { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } Err(_) => messages += format!("Failed to remove file {}/{} because file doesn't exists or you don't have permissions.\n", path, name).as_str(), } } } - text_view_errors.get_buffer().unwrap().set_text(messages.as_str()); + text_view_errors.buffer().unwrap().set_text(messages.as_str()); selection.unselect_all(); } // Remove all occurrences - remove every element which have same path and name as even non selected ones pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) { let text_view_errors = gui_data.text_view_errors.clone(); - let use_trash = gui_data.settings.check_button_settings_use_trash.clone().get_active(); + let use_trash = gui_data.settings.check_button_settings_use_trash.clone().is_active(); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return; } @@ -376,10 +370,10 @@ pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path // Save to variable paths of files, and remove it when not removing all occurrences. for tree_path in selection_rows.iter().rev() { - let file_name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_file_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::().unwrap().unwrap(); + let file_name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::().unwrap(); + let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::().unwrap(); - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); map_with_path_to_delete.entry(path.clone()).or_insert_with(Vec::new); map_with_path_to_delete.get_mut(path.as_str()).unwrap().push(file_name); @@ -411,30 +405,30 @@ pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path } // Remove only child from header - if let Some(first_iter) = list_store.get_iter_first() { + if let Some(first_iter) = list_store.iter_first() { let mut vec_tree_path_to_delete: Vec = Vec::new(); let mut current_iter = first_iter; - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!("First deleted element, should be a header"); // First element should be header }; let mut next_iter; let mut next_next_iter; 'main: loop { - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!("First deleted element, should be a header"); // First element should be header }; next_iter = current_iter.clone(); if !list_store.iter_next(&next_iter) { // There is only single header left (H1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // There are two headers each others(we remove just first) -> (H1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); current_iter = next_iter.clone(); continue 'main; } @@ -442,15 +436,15 @@ pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path next_next_iter = next_iter.clone(); if !list_store.iter_next(&next_next_iter) { // There is only one child of header left, so we remove it with header (H1 -> C1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // One child between two headers, we can remove them (H1 -> C1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); current_iter = next_next_iter.clone(); continue 'main; } @@ -461,24 +455,24 @@ pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path break 'main; } // Move to next header - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { current_iter = next_next_iter.clone(); continue 'main; } } } for tree_path in vec_tree_path_to_delete.iter().rev() { - list_store.remove(&list_store.get_iter(&tree_path).unwrap()); + list_store.remove(&list_store.iter(&tree_path).unwrap()); } } // Last step, remove orphan header if exists - if let Some(iter) = list_store.get_iter_first() { + if let Some(iter) = list_store.iter_first() { if !list_store.iter_next(&iter) { list_store.clear(); } } - text_view_errors.get_buffer().unwrap().set_text(messages.as_str()); + text_view_errors.buffer().unwrap().set_text(messages.as_str()); selection.unselect_all(); } diff --git a/czkawka_gui/src/connect_button_hardlink.rs b/czkawka_gui/src/connect_button_hardlink.rs index 025534d..af24d64 100644 --- a/czkawka_gui/src/connect_button_hardlink.rs +++ b/czkawka_gui/src/connect_button_hardlink.rs @@ -19,7 +19,7 @@ pub fn connect_button_hardlink(gui_data: &GuiData) { let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone(); - buttons_hardlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) { + buttons_hardlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.current_page().unwrap()) { NotebookMainEnum::Duplicate => { hardlink(tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data); } @@ -44,9 +44,9 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c reset_text_view(&text_view_errors); let list_store = get_list_store(&tree_view); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return; } @@ -58,11 +58,11 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c let mut vec_tree_path_to_remove: Vec = Vec::new(); // List of hardlinked files without its root let mut vec_hardlink_data: Vec = Vec::new(); - let current_iter: TreeIter = tree_model.get_iter_first().unwrap(); // Hardlink button should be only visible when more than 1 element is visible, otherwise it needs to be fixed + let current_iter: TreeIter = tree_model.iter_first().unwrap(); // Hardlink button should be only visible when more than 1 element is visible, otherwise it needs to be fixed let mut current_hardlink_data: Option = None; let mut current_selected_index = 0; loop { - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { if let Some(current_hardlink_data) = current_hardlink_data { if !current_hardlink_data.files_to_hardlink.is_empty() { vec_hardlink_data.push(current_hardlink_data); @@ -76,13 +76,13 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c continue; } - if tree_model.get_path(¤t_iter).unwrap() == selection_rows[current_selected_index] { - let file_name = tree_model.get_value(¤t_iter, column_file_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(¤t_iter, column_path).get::().unwrap().unwrap(); + if tree_model.path(¤t_iter).unwrap() == selection_rows[current_selected_index] { + let file_name = tree_model.value(¤t_iter, column_file_name).get::().unwrap(); + let path = tree_model.value(¤t_iter, column_path).get::().unwrap(); let full_file_path = format!("{}/{}", path, file_name); if current_hardlink_data.is_some() { - vec_tree_path_to_remove.push(tree_model.get_path(¤t_iter).unwrap()); + vec_tree_path_to_remove.push(tree_model.path(¤t_iter).unwrap()); let mut temp_data = current_hardlink_data.unwrap(); temp_data.files_to_hardlink.push(full_file_path); current_hardlink_data = Some(temp_data); @@ -128,34 +128,34 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c println!(); } for tree_path in vec_tree_path_to_remove.iter().rev() { - list_store.remove(&tree_model.get_iter(tree_path).unwrap()); + list_store.remove(&tree_model.iter(tree_path).unwrap()); } // Remove only child from header - if let Some(first_iter) = list_store.get_iter_first() { + if let Some(first_iter) = list_store.iter_first() { let mut vec_tree_path_to_delete: Vec = Vec::new(); let mut current_iter = first_iter; - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!(); // First element should be header }; let mut next_iter; let mut next_next_iter; 'main: loop { - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!(); // First element should be header }; next_iter = current_iter.clone(); if !list_store.iter_next(&next_iter) { // There is only single header left (H1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // There are two headers each others(we remove just first) -> (H1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); current_iter = next_iter.clone(); continue 'main; } @@ -163,15 +163,15 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c next_next_iter = next_iter.clone(); if !list_store.iter_next(&next_next_iter) { // There is only one child of header left, so we remove it with header (H1 -> C1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // One child between two headers, we can remove them (H1 -> C1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); current_iter = next_next_iter.clone(); continue 'main; } @@ -182,14 +182,14 @@ fn hardlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, c break 'main; } // Move to next header - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { current_iter = next_next_iter.clone(); continue 'main; } } } for tree_path in vec_tree_path_to_delete.iter().rev() { - list_store.remove(&list_store.get_iter(&tree_path).unwrap()); + list_store.remove(&list_store.iter(&tree_path).unwrap()); } } diff --git a/czkawka_gui/src/connect_button_save.rs b/czkawka_gui/src/connect_button_save.rs index 9bd3e81..18f9efb 100644 --- a/czkawka_gui/src/connect_button_save.rs +++ b/czkawka_gui/src/connect_button_save.rs @@ -21,7 +21,7 @@ pub fn connect_button_save(gui_data: &GuiData) { buttons_save.connect_clicked(move |_| { let file_name; - match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) { + match to_notebook_main_enum(notebook_main.current_page().unwrap()) { NotebookMainEnum::Duplicate => { file_name = "results_duplicates.txt"; @@ -73,7 +73,7 @@ pub fn connect_button_save(gui_data: &GuiData) { shared_broken_files_state.borrow_mut().save_results_to_file(file_name); } } - post_save_things(file_name, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &gui_data); + post_save_things(file_name, &to_notebook_main_enum(notebook_main.current_page().unwrap()), &gui_data); }); } fn post_save_things(file_name: &str, type_of_tab: &NotebookMainEnum, gui_data: &GuiData) { diff --git a/czkawka_gui/src/connect_button_search.rs b/czkawka_gui/src/connect_button_search.rs index 90e1718..96189c8 100644 --- a/czkawka_gui/src/connect_button_search.rs +++ b/czkawka_gui/src/connect_button_search.rs @@ -97,12 +97,12 @@ pub fn connect_button_search( buttons_search_clone.connect_clicked(move |_| { let included_directories = get_path_buf_from_vector_of_strings(get_string_from_list_store(&tree_view_included_directories)); let excluded_directories = get_path_buf_from_vector_of_strings(get_string_from_list_store(&tree_view_excluded_directories)); - let recursive_search = check_button_recursive.get_active(); - let excluded_items = entry_excluded_items.get_text().as_str().to_string().split(',').map(|e| e.to_string()).collect::>(); - let allowed_extensions = entry_allowed_extensions.get_text().as_str().to_string(); - let hide_hard_links = check_button_settings_hide_hard_links.get_active(); - let use_cache = check_button_settings_use_cache.get_active(); - let minimal_cache_file_size = entry_settings_cache_file_minimal_size.get_text().as_str().parse::().unwrap_or(2 * 1024 * 1024); + let recursive_search = check_button_recursive.is_active(); + let excluded_items = entry_excluded_items.text().as_str().to_string().split(',').map(|e| e.to_string()).collect::>(); + let allowed_extensions = entry_allowed_extensions.text().as_str().to_string(); + let hide_hard_links = check_button_settings_hide_hard_links.is_active(); + let use_cache = check_button_settings_use_cache.is_active(); + let minimal_cache_file_size = entry_settings_cache_file_minimal_size.text().as_str().parse::().unwrap_or(2 * 1024 * 1024); let show_dialog = Arc::new(AtomicBool::new(true)); @@ -125,7 +125,7 @@ pub fn connect_button_search( let glib_stop_sender = glib_stop_sender.clone(); let stop_receiver = stop_receiver.clone(); - match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) { + match to_notebook_main_enum(notebook_main.current_page().unwrap()) { NotebookMainEnum::Duplicate => { label_stage.show(); grid_progress_stages.show_all(); @@ -134,25 +134,25 @@ pub fn connect_button_search( get_list_store(&tree_view_duplicate_finder).clear(); let check_method; - if radio_button_duplicates_name.get_active() { + if radio_button_duplicates_name.is_active() { check_method = duplicate::CheckingMethod::Name; - } else if radio_button_duplicates_size.get_active() { + } else if radio_button_duplicates_size.is_active() { check_method = duplicate::CheckingMethod::Size; - } else if radio_button_duplicates_hashmb.get_active() { + } else if radio_button_duplicates_hashmb.is_active() { check_method = duplicate::CheckingMethod::HashMb; - } else if radio_button_duplicates_hash.get_active() { + } else if radio_button_duplicates_hash.is_active() { check_method = duplicate::CheckingMethod::Hash; } else { panic!("No radio button is pressed"); } - let minimal_file_size = entry_duplicate_minimal_size.get_text().as_str().parse::().unwrap_or(1024); + let minimal_file_size = entry_duplicate_minimal_size.text().as_str().parse::().unwrap_or(1024); let hash_type: HashType; - if radio_button_hash_type_blake3.get_active() { + if radio_button_hash_type_blake3.is_active() { hash_type = duplicate::HashType::Blake3; - } else if radio_button_hash_type_crc32.get_active() { + } else if radio_button_hash_type_crc32.is_active() { hash_type = duplicate::HashType::Crc32; - } else if radio_button_hash_type_xxh3.get_active() { + } else if radio_button_hash_type_xxh3.is_active() { hash_type = duplicate::HashType::Xxh3; } else { panic!("No radio button is pressed"); @@ -223,7 +223,7 @@ pub fn connect_button_search( get_list_store(&tree_view_big_files_finder).clear(); - let numbers_of_files_to_check = entry_big_files_number.get_text().as_str().parse::().unwrap_or(50); + let numbers_of_files_to_check = entry_big_files_number.text().as_str().parse::().unwrap_or(50); let futures_sender_big_file = futures_sender_big_file.clone(); // Find big files @@ -268,20 +268,20 @@ pub fn connect_button_search( get_list_store(&tree_view_similar_images_finder).clear(); - let minimal_file_size = entry_similar_images_minimal_size.get_text().as_str().parse::().unwrap_or(1024 * 16); + let minimal_file_size = entry_similar_images_minimal_size.text().as_str().parse::().unwrap_or(1024 * 16); let similarity; - if radio_button_similar_images_minimal.get_active() { + if radio_button_similar_images_minimal.is_active() { similarity = similar_images::Similarity::Minimal; - } else if radio_button_similar_images_very_small.get_active() { + } else if radio_button_similar_images_very_small.is_active() { similarity = similar_images::Similarity::VerySmall; - } else if radio_button_similar_images_small.get_active() { + } else if radio_button_similar_images_small.is_active() { similarity = similar_images::Similarity::Small; - } else if radio_button_similar_images_medium.get_active() { + } else if radio_button_similar_images_medium.is_active() { similarity = similar_images::Similarity::Medium; - } else if radio_button_similar_images_high.get_active() { + } else if radio_button_similar_images_high.is_active() { similarity = similar_images::Similarity::High; - } else if radio_button_similar_images_very_high.get_active() { + } else if radio_button_similar_images_very_high.is_active() { similarity = similar_images::Similarity::VeryHigh; } else { panic!("No radio button is pressed"); @@ -331,23 +331,23 @@ pub fn connect_button_search( get_list_store(&tree_view_same_music_finder).clear(); - let minimal_file_size = entry_same_music_minimal_size.get_text().as_str().parse::().unwrap_or(1024); + let minimal_file_size = entry_same_music_minimal_size.text().as_str().parse::().unwrap_or(1024); let mut music_similarity: MusicSimilarity = MusicSimilarity::NONE; - if check_button_music_title.get_active() { + if check_button_music_title.is_active() { music_similarity |= MusicSimilarity::TITLE; } - if check_button_music_artist.get_active() { + if check_button_music_artist.is_active() { music_similarity |= MusicSimilarity::ARTIST; } - if check_button_music_album_title.get_active() { + if check_button_music_album_title.is_active() { music_similarity |= MusicSimilarity::ALBUM_TITLE; } - if check_button_music_album_artist.get_active() { + if check_button_music_album_artist.is_active() { music_similarity |= MusicSimilarity::ALBUM_ARTIST; } - if check_button_music_year.get_active() { + if check_button_music_year.is_active() { music_similarity |= MusicSimilarity::YEAR; } diff --git a/czkawka_gui/src/connect_button_select.rs b/czkawka_gui/src/connect_button_select.rs index 5c923cb..f2663d7 100644 --- a/czkawka_gui/src/connect_button_select.rs +++ b/czkawka_gui/src/connect_button_select.rs @@ -39,7 +39,7 @@ pub fn connect_button_select(gui_data: &GuiData) { let buttons_select = gui_data.bottom_buttons.buttons_select.clone(); buttons_select_clone.connect_clicked(move |_| { - show_required_popovers(&gui_data, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &hashmap); + show_required_popovers(&gui_data, &to_notebook_main_enum(notebook_main.current_page().unwrap()), &hashmap); popover_select.set_relative_to(Some(&buttons_select)); popover_select.popup(); }); diff --git a/czkawka_gui/src/connect_button_stop.rs b/czkawka_gui/src/connect_button_stop.rs index c0fef4f..98338a7 100644 --- a/czkawka_gui/src/connect_button_stop.rs +++ b/czkawka_gui/src/connect_button_stop.rs @@ -6,7 +6,7 @@ pub fn connect_button_stop(gui_data: &GuiData) { let button_stop_in_dialog = gui_data.progress_window.button_stop_in_dialog.clone(); let stop_sender = gui_data.stop_sender.clone(); button_stop_in_dialog.connect_key_release_event(move |_, e| { - if e.get_keycode() == Some(36) { + if e.keycode() == Some(36) { // Only accept enter key to stop search stop_sender.send(()).unwrap(); } diff --git a/czkawka_gui/src/connect_button_symlink.rs b/czkawka_gui/src/connect_button_symlink.rs index ff1508e..7ad8eb8 100644 --- a/czkawka_gui/src/connect_button_symlink.rs +++ b/czkawka_gui/src/connect_button_symlink.rs @@ -18,7 +18,7 @@ pub fn connect_button_symlink(gui_data: &GuiData) { let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone(); - buttons_symlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) { + buttons_symlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.current_page().unwrap()) { NotebookMainEnum::Duplicate => { symlink(tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data); } @@ -43,9 +43,9 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co reset_text_view(&text_view_errors); let list_store = get_list_store(&tree_view); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let (selection_rows, tree_model) = selection.selected_rows(); if selection_rows.is_empty() { return; } @@ -57,11 +57,11 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co let mut vec_tree_path_to_remove: Vec = Vec::new(); // List of symlinked files without its root let mut vec_symlink_data: Vec = Vec::new(); - let current_iter: TreeIter = tree_model.get_iter_first().unwrap(); // Symlink button should be only visible when more than 1 element is visible, otherwise it needs to be fixed + let current_iter: TreeIter = tree_model.iter_first().unwrap(); // Symlink button should be only visible when more than 1 element is visible, otherwise it needs to be fixed let mut current_symlink_data: Option = None; let mut current_selected_index = 0; loop { - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { if let Some(current_symlink_data) = current_symlink_data { if !current_symlink_data.files_to_symlink.is_empty() { vec_symlink_data.push(current_symlink_data); @@ -75,13 +75,13 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co continue; } - if tree_model.get_path(¤t_iter).unwrap() == selection_rows[current_selected_index] { - let file_name = tree_model.get_value(¤t_iter, column_file_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(¤t_iter, column_path).get::().unwrap().unwrap(); + if tree_model.path(¤t_iter).unwrap() == selection_rows[current_selected_index] { + let file_name = tree_model.value(¤t_iter, column_file_name).get::().unwrap(); + let path = tree_model.value(¤t_iter, column_path).get::().unwrap(); let full_file_path = format!("{}/{}", path, file_name); if current_symlink_data.is_some() { - vec_tree_path_to_remove.push(tree_model.get_path(¤t_iter).unwrap()); + vec_tree_path_to_remove.push(tree_model.path(¤t_iter).unwrap()); let mut temp_data = current_symlink_data.unwrap(); temp_data.files_to_symlink.push(full_file_path); current_symlink_data = Some(temp_data); @@ -149,34 +149,34 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co println!(); } for tree_path in vec_tree_path_to_remove.iter().rev() { - list_store.remove(&tree_model.get_iter(tree_path).unwrap()); + list_store.remove(&tree_model.iter(tree_path).unwrap()); } // Remove only child from header - if let Some(first_iter) = list_store.get_iter_first() { + if let Some(first_iter) = list_store.iter_first() { let mut vec_tree_path_to_delete: Vec = Vec::new(); let mut current_iter = first_iter; - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!(); // First element should be header }; let mut next_iter; let mut next_next_iter; 'main: loop { - if tree_model.get_value(¤t_iter, column_color).get::().unwrap().unwrap() != HEADER_ROW_COLOR { + if tree_model.value(¤t_iter, column_color).get::().unwrap() != HEADER_ROW_COLOR { panic!(); // First element should be header }; next_iter = current_iter.clone(); if !list_store.iter_next(&next_iter) { // There is only single header left (H1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // There are two headers each others(we remove just first) -> (H1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); current_iter = next_iter.clone(); continue 'main; } @@ -184,15 +184,15 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co next_next_iter = next_iter.clone(); if !list_store.iter_next(&next_next_iter) { // There is only one child of header left, so we remove it with header (H1 -> C1 -> END) -> (NOTHING) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); break 'main; } - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { // One child between two headers, we can remove them (H1 -> C1 -> H2) -> (H2) - vec_tree_path_to_delete.push(list_store.get_path(¤t_iter).unwrap()); - vec_tree_path_to_delete.push(list_store.get_path(&next_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(¤t_iter).unwrap()); + vec_tree_path_to_delete.push(list_store.path(&next_iter).unwrap()); current_iter = next_next_iter.clone(); continue 'main; } @@ -203,14 +203,14 @@ fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, co break 'main; } // Move to next header - if tree_model.get_value(&next_next_iter, column_color).get::().unwrap().unwrap() == HEADER_ROW_COLOR { + if tree_model.value(&next_next_iter, column_color).get::().unwrap() == HEADER_ROW_COLOR { current_iter = next_next_iter.clone(); continue 'main; } } } for tree_path in vec_tree_path_to_delete.iter().rev() { - list_store.remove(&list_store.get_iter(&tree_path).unwrap()); + list_store.remove(&list_store.iter(&tree_path).unwrap()); } } diff --git a/czkawka_gui/src/connect_compute_results.rs b/czkawka_gui/src/connect_compute_results.rs index 3ef2bcb..ffa1b64 100644 --- a/czkawka_gui/src/connect_compute_results.rs +++ b/czkawka_gui/src/connect_compute_results.rs @@ -42,6 +42,9 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< let window_progress = gui_data.progress_window.window_progress.clone(); let taskbar_state = gui_data.taskbar_state.clone(); + let main_context = glib::MainContext::default(); + let _guard = main_context.acquire().unwrap(); + glib_stop_receiver.attach(None, move |msg| { buttons_search.show(); @@ -94,8 +97,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_duplicate_finder); - let col_indices = [0, 1, 2, 3, 4, 5]; - match df.get_check_method() { CheckingMethod::Name => { let btreemap = df.get_files_sorted_by_names(); @@ -113,26 +114,27 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< vector.clone() }; - let values: [&dyn ToValue; 6] = [ - &name, - &(format!("{} results", vector.len())), - &"".to_string(), // No text in 3 column - &(0), // Not used here - &(HEADER_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 6] = [ + (0, &name), + (1, (&(format!("{} results", vector.len())))), + (2, (&"".to_string())), // No text in 3 column + (3, (&(0))), // Not used here + (4, &(HEADER_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + + list_store.set(&list_store.append(), &values); for entry in vector { let (directory, file) = split_path(&entry.path); - let values: [&dyn ToValue; 6] = [ - &file, - &directory, - &(format!("{} - ({})", NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string(), entry.size.file_size(options::BINARY).unwrap())), - &(entry.modified_date), - &(MAIN_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 6] = [ + (0, &file), + (1, &directory), + (2, &(format!("{} - ({})", NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string(), entry.size.file_size(options::BINARY).unwrap()))), + (3, &(entry.modified_date)), + (4, &(MAIN_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } } } @@ -153,26 +155,32 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< vector.clone() }; - let values: [&dyn ToValue; 6] = [ - &(format!("{} x {} ({} bytes)", vector.len(), size.file_size(options::BINARY).unwrap(), size)), - &(format!("{} ({} bytes) lost", ((vector.len() - 1) as u64 * *size as u64).file_size(options::BINARY).unwrap(), (vector.len() - 1) as u64 * *size as u64)), - &"".to_string(), // No text in 3 column - &(0), // Not used here - &(HEADER_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 6] = [ + (0, &(format!("{} x {} ({} bytes)", vector.len(), size.file_size(options::BINARY).unwrap(), size))), + ( + 1, + &(format!("{} ({} bytes) lost", ((vector.len() - 1) as u64 * *size as u64).file_size(options::BINARY).unwrap(), (vector.len() - 1) as u64 * *size as u64)), + ), + (2, &"".to_string()), // No text in 3 column + (3, &(0)), + (4, &(HEADER_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + + list_store.set(&list_store.append(), &values); for entry in vector { let (directory, file) = split_path(&entry.path); - let values: [&dyn ToValue; 6] = [ - &file, - &directory, - &(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string()), - &(entry.modified_date), - &(MAIN_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + + let values: [(u32, &dyn ToValue); 6] = [ + (0, &file), + (1, &directory), + (2, &(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string())), + (3, &(entry.modified_date)), + (4, &(MAIN_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + + list_store.set(&list_store.append(), &values); } } } @@ -192,27 +200,30 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< } else { vector.clone() }; - - let values: [&dyn ToValue; 6] = [ - &(format!("{} x {} ({} bytes)", vector.len(), size.file_size(options::BINARY).unwrap(), size)), - &(format!("{} ({} bytes) lost", ((vector.len() - 1) as u64 * *size as u64).file_size(options::BINARY).unwrap(), (vector.len() - 1) as u64 * *size as u64)), - &"".to_string(), // No text in 3 column - &(0), // Not used here - &(HEADER_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 6] = [ + (0, &(format!("{} x {} ({} bytes)", vector.len(), size.file_size(options::BINARY).unwrap(), size))), + ( + 1, + &(format!("{} ({} bytes) lost", ((vector.len() - 1) as u64 * *size as u64).file_size(options::BINARY).unwrap(), (vector.len() - 1) as u64 * *size as u64)), + ), + (2, &"".to_string()), // No text in 3 column + (3, &(0)), // Not used here + (4, &(HEADER_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + + list_store.set(&list_store.append(), &values); for entry in vector { let (directory, file) = split_path(&entry.path); - let values: [&dyn ToValue; 6] = [ - &file, - &directory, - &(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string()), - &(entry.modified_date), - &(MAIN_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 6] = [ + (0, &file), + (1, &directory), + (2, &(NaiveDateTime::from_timestamp(entry.modified_date as i64, 0).to_string())), + (3, &(entry.modified_date)), + (4, &(MAIN_ROW_COLOR.to_string())), + (5, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } } } @@ -260,8 +271,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_empty_folder_finder); - let col_indices = [0, 1, 2]; - let hashmap = ef.get_empty_folder_list(); let mut vector = hashmap.keys().cloned().collect::>(); @@ -272,8 +281,8 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for path in vector { let (directory, file) = split_path(&path); - let values: [&dyn ToValue; 3] = [&file, &directory, &(NaiveDateTime::from_timestamp(hashmap.get(&path).unwrap().modified_date as i64, 0).to_string())]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 3] = [(0, &file), (1, &directory), (2, &(NaiveDateTime::from_timestamp(hashmap.get(&path).unwrap().modified_date as i64, 0).to_string()))]; + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } @@ -310,8 +319,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_empty_files_finder); - let col_indices = [0, 1, 2]; - let vector = vf.get_empty_files(); // Sort @@ -323,8 +330,8 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 3] = [&file, &directory, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 3] = [(0, &file), (1, &directory), (2, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()))]; + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } @@ -361,8 +368,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_big_files_finder); - let col_indices = [0, 1, 2, 3]; - let btreemap = bf.get_big_files(); for (size, vector) in btreemap.iter().rev() { @@ -373,13 +378,13 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< }); for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 4] = [ - &(format!("{} ({} bytes)", size.file_size(options::BINARY).unwrap(), size)), - &file, - &directory, - &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), + let values: [(u32, &dyn ToValue); 4] = [ + (0, &(format!("{} ({} bytes)", size.file_size(options::BINARY).unwrap(), size))), + (1, &file), + (2, &directory), + (3, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } } print_text_messages_to_text_view(text_messages, &text_view_errors); @@ -417,8 +422,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_temporary_files_finder); - let col_indices = [0, 1, 2]; - let vector = tf.get_temporary_files(); // Sort @@ -430,8 +433,8 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 3] = [&file, &directory, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 3] = [(0, &file), (1, &directory), (2, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()))]; + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } @@ -468,8 +471,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_similar_images_finder); - let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - let vec_struct_similar = sf.get_similar_images(); for vec_file_entry in vec_struct_similar.iter() { @@ -486,36 +487,36 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< }; // Header - let values: [&dyn ToValue; 10] = [ - &"".to_string(), - &"".to_string(), - &(0), - &"".to_string(), - &"".to_string(), - &"".to_string(), - &"".to_string(), - &(0), - &(HEADER_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 10] = [ + (0, &"".to_string()), + (1, &"".to_string()), + (2, &(0)), + (3, &"".to_string()), + (4, &"".to_string()), + (5, &"".to_string()), + (6, &"".to_string()), + (7, &(0)), + (8, &(HEADER_ROW_COLOR.to_string())), + (9, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); // Meat for file_entry in vec_file_entry.iter() { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 10] = [ - &(get_text_from_similarity(&file_entry.similarity).to_string()), - &file_entry.size.file_size(options::BINARY).unwrap(), - &file_entry.size, - &file_entry.dimensions, - &file, - &directory, - &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), - &(file_entry.modified_date), - &(MAIN_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 10] = [ + (0, &(get_text_from_similarity(&file_entry.similarity).to_string())), + (1, &file_entry.size.file_size(options::BINARY).unwrap()), + (2, &file_entry.size), + (3, &file_entry.dimensions), + (4, &file), + (5, &directory), + (6, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())), + (7, &(file_entry.modified_date)), + (8, &(MAIN_ROW_COLOR.to_string())), + (9, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } } @@ -558,8 +559,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_zeroed_files_finder); - let col_indices = [0, 1, 2, 3, 4]; - let vector = zf.get_zeroed_files(); // Sort @@ -571,14 +570,14 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 5] = [ - &(file_entry.size.file_size(options::BINARY).unwrap()), - &(file_entry.size), - &file, - &directory, - &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), + let values: [(u32, &dyn ToValue); 5] = [ + (0, &(file_entry.size.file_size(options::BINARY).unwrap())), + (1, &(file_entry.size)), + (2, &file), + (3, &directory), + (4, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } @@ -615,8 +614,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_same_music_finder); - let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - let vector = mf.get_duplicated_music_entries(); let music_similarity = *mf.get_music_similarity(); @@ -642,55 +639,70 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< vec_file_entry.clone() }; - let values: [&dyn ToValue; 13] = [ - &"".to_string(), - &(0), - &"".to_string(), - &"".to_string(), - &(match is_title { - true => text.clone(), - false => "".to_string(), - }), - &(match is_artist { - true => text.clone(), - false => "".to_string(), - }), - &(match is_album_title { - true => text.clone(), - false => "".to_string(), - }), - &(match is_album_artist { - true => text.clone(), - false => "".to_string(), - }), - &(match is_year { - true => text.clone(), - false => "".to_string(), - }), - &"".to_string(), - &(0), - &(HEADER_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 13] = [ + (0, &"".to_string()), + (1, &(0)), + (2, &"".to_string()), + (3, &"".to_string()), + ( + 4, + &(match is_title { + true => text.clone(), + false => "".to_string(), + }), + ), + ( + 5, + &(match is_artist { + true => text.clone(), + false => "".to_string(), + }), + ), + ( + 6, + &(match is_album_title { + true => text.clone(), + false => "".to_string(), + }), + ), + ( + 7, + &(match is_album_artist { + true => text.clone(), + false => "".to_string(), + }), + ), + ( + 8, + &(match is_year { + true => text.clone(), + false => "".to_string(), + }), + ), + (9, &"".to_string()), + (10, &(0)), + (11, &(HEADER_ROW_COLOR.to_string())), + (12, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); for file_entry in vec_file_entry { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 13] = [ - &file_entry.size.file_size(options::BINARY).unwrap(), - &file_entry.size, - &file, - &directory, - &file_entry.title, - &file_entry.artist, - &file_entry.album_title, - &file_entry.album_artist, - &file_entry.year.to_string(), - &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), - &(file_entry.modified_date), - &(MAIN_ROW_COLOR.to_string()), - &(TEXT_COLOR.to_string()), + let values: [(u32, &dyn ToValue); 13] = [ + (0, &file_entry.size.file_size(options::BINARY).unwrap()), + (1, &file_entry.size), + (2, &file), + (3, &directory), + (4, &file_entry.title), + (5, &file_entry.artist), + (6, &file_entry.album_title), + (7, &file_entry.album_artist), + (8, &file_entry.year.to_string()), + (9, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())), + (10, &(file_entry.modified_date)), + (11, &(MAIN_ROW_COLOR.to_string())), + (12, &(TEXT_COLOR.to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } } print_text_messages_to_text_view(text_messages, &text_view_errors); @@ -732,8 +744,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_invalid_symlinks); - let col_indices = [0, 1, 2, 3, 4]; - let vector = ifs.get_invalid_symlinks(); // Sort @@ -746,14 +756,14 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for file_entry in vector { let (directory, file) = split_path(&file_entry.symlink_path); - let values: [&dyn ToValue; 5] = [ - &file, - &directory, - &file_entry.destination_path.to_string_lossy().to_string(), - &get_text_from_invalid_symlink_cause(&file_entry.type_of_error), - &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), + let values: [(u32, &dyn ToValue); 5] = [ + (0, &file), + (1, &directory), + (2, &file_entry.destination_path.to_string_lossy().to_string()), + (3, &get_text_from_invalid_symlink_cause(&file_entry.type_of_error)), + (4, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())), ]; - list_store.set(&list_store.append(), &col_indices, &values); + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } @@ -790,8 +800,6 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&tree_view_broken_files); - let col_indices = [0, 1, 2, 3]; - let vector = br.get_broken_files(); // Sort @@ -803,8 +811,8 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 4] = [&file, &directory, &file_entry.error_string, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string())]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 4] = [(0, &file), (1, &directory), (2, &file_entry.error_string), (3, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()))]; + list_store.set(&list_store.append(), &values); } print_text_messages_to_text_view(text_messages, &text_view_errors); } diff --git a/czkawka_gui/src/connect_notebook_tabs.rs b/czkawka_gui/src/connect_notebook_tabs.rs index d5b3a9a..953343b 100644 --- a/czkawka_gui/src/connect_notebook_tabs.rs +++ b/czkawka_gui/src/connect_notebook_tabs.rs @@ -22,9 +22,9 @@ pub fn connect_notebook_tabs(gui_data: &GuiData) { { for (index, upper_tab) in get_all_upper_tabs().iter().enumerate() { if *shared_upper_notebooks.borrow_mut().get_mut(¤t_tab_in_main_notebook).unwrap().get_mut(upper_tab).unwrap() { - notebook_upper.get_children().get(index).unwrap().show(); + notebook_upper.children().get(index).unwrap().show(); } else { - notebook_upper.get_children().get(index).unwrap().hide(); + notebook_upper.children().get(index).unwrap().hide(); } } } diff --git a/czkawka_gui/src/connect_popovers.rs b/czkawka_gui/src/connect_popovers.rs index 156e36a..f0e8d99 100644 --- a/czkawka_gui/src/connect_popovers.rs +++ b/czkawka_gui/src/connect_popovers.rs @@ -10,26 +10,26 @@ use gtk::TreeIter; // e.g. 'tar.gz' will be selected instead 'tar.gz (copy)' etc. fn popover_select_all(popover: >k::Popover, tree_view: >k::TreeView) { - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); selection.select_all(); popover.popdown(); } fn popover_unselect_all(popover: >k::Popover, tree_view: >k::TreeView) { - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); selection.unselect_all(); popover.popdown(); } fn popover_reverse(popover: >k::Popover, tree_view: >k::TreeView) { - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (vector_tree_path, tree_model) = selection.get_selected_rows(); + let (vector_tree_path, tree_model) = selection.selected_rows(); if vector_tree_path.is_empty() { selection.select_all(); } else { - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut current_path_index = 0; let mut tree_iter_selected: TreeIter; @@ -37,8 +37,8 @@ fn popover_reverse(popover: >k::Popover, tree_view: >k::TreeView) { if current_path_index >= vector_tree_path.len() { selection.select_iter(&tree_iter_all); } else { - tree_iter_selected = tree_model.get_iter(vector_tree_path.get(current_path_index).unwrap()).unwrap(); - if tree_model.get_path(&tree_iter_all).unwrap() == tree_model.get_path(&tree_iter_selected).unwrap() { + tree_iter_selected = tree_model.iter(vector_tree_path.get(current_path_index).unwrap()).unwrap(); + if tree_model.path(&tree_iter_all).unwrap() == tree_model.path(&tree_iter_selected).unwrap() { selection.unselect_iter(&tree_iter_selected); current_path_index += 1; } else { @@ -55,10 +55,10 @@ fn popover_reverse(popover: >k::Popover, tree_view: >k::TreeView) { } fn popover_all_except_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -71,7 +71,7 @@ fn popover_all_except_oldest(popover: >k::Popover, tree_view: >k::TreeView, let mut file_length: usize = 0; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -79,8 +79,8 @@ fn popover_all_except_oldest(popover: >k::Popover, tree_view: >k::TreeView, break; } tree_iter_array.push(tree_iter_all.clone()); - let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::().unwrap(); + let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::().unwrap().len(); if modification < oldest_modification_time || (modification == oldest_modification_time && current_file_length < file_length) { file_length = current_file_length; oldest_modification_time = modification; @@ -113,10 +113,10 @@ fn popover_all_except_oldest(popover: >k::Popover, tree_view: >k::TreeView, popover.popdown(); } fn popover_all_except_newest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -129,7 +129,7 @@ fn popover_all_except_newest(popover: >k::Popover, tree_view: >k::TreeView, let mut file_length: usize = 0; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -137,8 +137,8 @@ fn popover_all_except_newest(popover: >k::Popover, tree_view: >k::TreeView, break; } tree_iter_array.push(tree_iter_all.clone()); - let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::().unwrap(); + let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::().unwrap().len(); if modification > newest_modification_time || (modification == newest_modification_time && current_file_length < file_length) { file_length = current_file_length; newest_modification_time = modification; @@ -171,10 +171,10 @@ fn popover_all_except_newest(popover: >k::Popover, tree_view: >k::TreeView, popover.popdown(); } fn popover_one_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -187,7 +187,7 @@ fn popover_one_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_ let mut file_length: usize = 0; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -195,8 +195,8 @@ fn popover_one_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_ break; } tree_iter_array.push(tree_iter_all.clone()); - let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::().unwrap(); + let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::().unwrap().len(); if modification < oldest_modification_time || (modification == oldest_modification_time && current_file_length > file_length) { file_length = current_file_length; oldest_modification_time = modification; @@ -229,10 +229,10 @@ fn popover_one_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_ popover.popdown(); } fn popover_one_newest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -244,7 +244,7 @@ fn popover_one_newest(popover: >k::Popover, tree_view: >k::TreeView, column_ let mut file_length: usize = 0; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -252,8 +252,8 @@ fn popover_one_newest(popover: >k::Popover, tree_view: >k::TreeView, column_ break; } tree_iter_array.push(tree_iter_all.clone()); - let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::().unwrap(); + let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::().unwrap().len(); if modification > newest_modification_time || (modification == newest_modification_time && current_file_length > file_length) { file_length = current_file_length; newest_modification_time = modification; @@ -330,7 +330,7 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: grid.attach(&entry_name, 1, 2, 1, 1); grid.attach(&entry_name_path, 1, 3, 1, 1); - for widgets in confirmation_dialog_delete.get_children() { + for widgets in confirmation_dialog_delete.children() { // By default GtkBox is child of dialog, so we can easily add other things to it widgets.downcast::().unwrap().add(&grid); } @@ -339,15 +339,15 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: let response_type = confirmation_dialog_delete.run(); if response_type == gtk::ResponseType::Ok { - if radio_path.get_active() { + if radio_path.is_active() { wildcard_type = WildcardType::Path; - wildcard = entry_path.get_text().to_string(); - } else if radio_name.get_active() { + wildcard = entry_path.text().to_string(); + } else if radio_name.is_active() { wildcard_type = WildcardType::Name; - wildcard = entry_name.get_text().to_string(); - } else if radio_name_path.get_active() { + wildcard = entry_name.text().to_string(); + } else if radio_name_path.is_active() { wildcard_type = WildcardType::PathName; - wildcard = entry_name_path.get_text().to_string(); + wildcard = entry_name_path.text().to_string(); } else { panic!("Non handled option in select wildcard"); } @@ -365,14 +365,14 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: #[cfg(target_family = "windows")] let wildcard = wildcard.as_str(); - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records loop { if let Some(column_color) = column_color { - let color = tree_model.get_value(&tree_iter, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter) { break; @@ -381,8 +381,8 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: } } - let path = tree_model.get_value(&tree_iter, column_path).get::().unwrap().unwrap(); - let name = tree_model.get_value(&tree_iter, column_file_name).get::().unwrap().unwrap(); + let path = tree_model.value(&tree_iter, column_path).get::().unwrap(); + let name = tree_model.value(&tree_iter, column_file_name).get::().unwrap(); match wildcard_type { WildcardType::Path => { if Common::regex_check(wildcard, path) { @@ -458,15 +458,15 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, tree_view let response_type = confirmation_dialog_delete.run(); if response_type == gtk::ResponseType::Ok { - if radio_path.get_active() { + if radio_path.is_active() { wildcard_type = WildcardType::Path; - wildcard = entry_path.get_text().to_string(); - } else if radio_name.get_active() { + wildcard = entry_path.text().to_string(); + } else if radio_name.is_active() { wildcard_type = WildcardType::Name; - wildcard = entry_name.get_text().to_string(); - } else if radio_name_path.get_active() { + wildcard = entry_name.text().to_string(); + } else if radio_name_path.is_active() { wildcard_type = WildcardType::PathName; - wildcard = entry_name_path.get_text().to_string(); + wildcard = entry_name_path.text().to_string(); } else { panic!("Non handled option in unselect wildcard"); } @@ -484,14 +484,14 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, tree_view #[cfg(target_family = "windows")] let wildcard = wildcard.as_str(); - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records loop { if let Some(column_color) = column_color { - let color = tree_model.get_value(&tree_iter, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter) { break; @@ -500,8 +500,8 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, tree_view } } - let path = tree_model.get_value(&tree_iter, column_path).get::().unwrap().unwrap(); - let name = tree_model.get_value(&tree_iter, column_file_name).get::().unwrap().unwrap(); + let path = tree_model.value(&tree_iter, column_path).get::().unwrap(); + let name = tree_model.value(&tree_iter, column_file_name).get::().unwrap(); match wildcard_type { WildcardType::Path => { if Common::regex_check(wildcard, path) { @@ -528,10 +528,10 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, tree_view } fn popover_all_except_biggest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -543,7 +543,7 @@ fn popover_all_except_biggest(popover: >k::Popover, tree_view: >k::TreeView, let mut biggest_number_of_pixels: u64 = 0; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -551,8 +551,8 @@ fn popover_all_except_biggest(popover: >k::Popover, tree_view: >k::TreeView, break; } tree_iter_array.push(tree_iter_all.clone()); - let size_as_bytes = tree_model.get_value(&tree_iter_all, column_size_as_bytes).get::().unwrap().unwrap(); - let dimensions_string = tree_model.get_value(&tree_iter_all, column_dimensions).get::().unwrap().unwrap(); + let size_as_bytes = tree_model.value(&tree_iter_all, column_size_as_bytes).get::().unwrap(); + let dimensions_string = tree_model.value(&tree_iter_all, column_dimensions).get::().unwrap(); let dimensions = change_dimension_to_krotka(dimensions_string); let number_of_pixels = dimensions.0 * dimensions.1; @@ -589,10 +589,10 @@ fn popover_all_except_biggest(popover: >k::Popover, tree_view: >k::TreeView, popover.popdown(); } fn popover_all_except_smallest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) { - let selection = tree_view.get_selection(); - let tree_model = tree_view.get_model().unwrap(); + let selection = tree_view.selection(); + let tree_model = tree_view.model().unwrap(); - let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records + let tree_iter_all = tree_model.iter_first().unwrap(); // Never should be available button where there is no available records let mut end: bool = false; @@ -604,7 +604,7 @@ fn popover_all_except_smallest(popover: >k::Popover, tree_view: >k::TreeView let mut smallest_number_of_pixels: u64 = u64::MAX; loop { - let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_iter_all, column_color).get::().unwrap(); if color == HEADER_ROW_COLOR { if !tree_model.iter_next(&tree_iter_all) { end = true; @@ -612,8 +612,8 @@ fn popover_all_except_smallest(popover: >k::Popover, tree_view: >k::TreeView break; } tree_iter_array.push(tree_iter_all.clone()); - let size_as_bytes = tree_model.get_value(&tree_iter_all, column_size_as_bytes).get::().unwrap().unwrap(); - let dimensions_string = tree_model.get_value(&tree_iter_all, column_dimensions).get::().unwrap().unwrap(); + let size_as_bytes = tree_model.value(&tree_iter_all, column_size_as_bytes).get::().unwrap(); + let dimensions_string = tree_model.value(&tree_iter_all, column_dimensions).get::().unwrap(); let dimensions = change_dimension_to_krotka(dimensions_string); let number_of_pixels = dimensions.0 * dimensions.1; @@ -802,7 +802,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_all.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_select_all(&popover_select, &object_popover.tree_view); }); @@ -811,7 +811,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_unselect_all.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_unselect_all(&popover_select, &object_popover.tree_view); }); @@ -820,7 +820,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_reverse.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_reverse(&popover_select, &object_popover.tree_view); }); @@ -829,7 +829,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_all_except_oldest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_all_except_oldest( &popover_select, &object_popover.tree_view, @@ -844,7 +844,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_all_except_newest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_all_except_newest( &popover_select, &object_popover.tree_view, @@ -859,7 +859,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_one_oldest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_one_oldest( &popover_select, &object_popover.tree_view, @@ -874,7 +874,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_one_newest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_one_newest( &popover_select, &object_popover.tree_view, @@ -890,7 +890,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let vec_popover_objects = popover_objects.clone(); let gui_data_clone = gui_data.clone(); buttons_popover_select_custom.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_select_custom( &popover_select, &gui_data_clone, @@ -907,7 +907,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let vec_popover_objects = popover_objects.clone(); let gui_data_clone = gui_data.clone(); buttons_popover_unselect_custom.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_unselect_custom( &popover_select, &gui_data_clone, @@ -923,7 +923,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects.clone(); buttons_popover_select_all_images_except_biggest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_all_except_biggest( &popover_select, &object_popover.tree_view, @@ -938,7 +938,7 @@ pub fn connect_popovers(gui_data: &GuiData) { let notebook_main = gui_data.main_notebook.notebook_main.clone(); let vec_popover_objects = popover_objects; //.clone(); buttons_popover_select_all_images_except_smallest.connect_clicked(move |_| { - let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap(); + let object_popover = find_name(&to_notebook_main_enum(notebook_main.current_page().unwrap()), &vec_popover_objects).unwrap(); popover_all_except_smallest( &popover_select, &object_popover.tree_view, diff --git a/czkawka_gui/src/connect_progress_window.rs b/czkawka_gui/src/connect_progress_window.rs index 6eac1fa..211275e 100644 --- a/czkawka_gui/src/connect_progress_window.rs +++ b/czkawka_gui/src/connect_progress_window.rs @@ -4,7 +4,8 @@ use crate::taskbar_progress::tbp_flags::TBPF_INDETERMINATE; use czkawka_core::{big_file, broken_files, duplicate, empty_files, empty_folder, invalid_symlinks, same_music, similar_images, temporary, zeroed}; use futures::StreamExt; -use gtk::{LabelExt, ProgressBarExt, WidgetExt}; + +use gtk::prelude::*; #[allow(clippy::too_many_arguments)] pub fn connect_progress_window( @@ -21,6 +22,7 @@ pub fn connect_progress_window( mut futures_receiver_broken_files: futures::channel::mpsc::UnboundedReceiver, ) { let main_context = glib::MainContext::default(); + let _guard = main_context.acquire().unwrap(); { // Duplicate Files diff --git a/czkawka_gui/src/connect_selection_of_directories.rs b/czkawka_gui/src/connect_selection_of_directories.rs index 561dc72..64eb4de 100644 --- a/czkawka_gui/src/connect_selection_of_directories.rs +++ b/czkawka_gui/src/connect_selection_of_directories.rs @@ -16,7 +16,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { let dialog_manual_add_directory = gtk::Dialog::with_buttons(Some("Add directory manually"), Some(&window_main), gtk::DialogFlags::MODAL, &[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)]); let entry: gtk::Entry = gtk::Entry::new(); - for widgets in dialog_manual_add_directory.get_children() { + for widgets in dialog_manual_add_directory.children() { // By default GtkBox is child of dialog, so we can easily add other things to it widgets.clone().downcast::().unwrap().add(&entry); } @@ -25,7 +25,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { let response_type = dialog_manual_add_directory.run(); if response_type == gtk::ResponseType::Ok { - let text = entry.get_text().to_string().trim().to_string(); + let text = entry.text().to_string().trim().to_string(); #[cfg(target_family = "windows")] let text = Common::normalize_windows_path(text).to_string_lossy().to_string(); @@ -33,10 +33,8 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { if !text.is_empty() { let list_store = get_list_store(&tree_view_included_directories); - let col_indices = [0]; - - let values: [&dyn ToValue; 1] = [&text]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &text)]; + list_store.set(&list_store.append(), &values); } } else { dialog_manual_add_directory.close(); @@ -59,7 +57,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { ); let entry: gtk::Entry = gtk::Entry::new(); - for widgets in dialog_manual_add_directory.get_children() { + for widgets in dialog_manual_add_directory.children() { // By default GtkBox is child of dialog, so we can easily add other things to it widgets.clone().downcast::().unwrap().add(&entry); } @@ -68,7 +66,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { let response_type = dialog_manual_add_directory.run(); if response_type == gtk::ResponseType::Ok { - let text = entry.get_text().to_string().trim().to_string(); + let text = entry.text().to_string().trim().to_string(); #[cfg(target_family = "windows")] let text = Common::normalize_windows_path(text).to_string_lossy().to_string(); @@ -76,10 +74,8 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { if !text.is_empty() { let list_store = get_list_store(&tree_view_excluded_directories); - let col_indices = [0]; - - let values: [&dyn ToValue; 1] = [&text]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &text)]; + list_store.set(&list_store.append(), &values); } } else { dialog_manual_add_directory.close(); @@ -104,14 +100,13 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { chooser.show_all(); let response_type = chooser.run(); if response_type == gtk::ResponseType::Ok { - let folder = chooser.get_filenames(); + let folder = chooser.filenames(); let list_store = get_list_store(&tree_view_included_directories); - let col_indices = [0]; for file_entry in &folder { - let values: [&dyn ToValue; 1] = [&file_entry.to_string_lossy().to_string()]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &file_entry.to_string_lossy().to_string())]; + list_store.set(&list_store.append(), &values); } } chooser.close(); @@ -133,15 +128,13 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { chooser.show_all(); let response_type = chooser.run(); if response_type == gtk::ResponseType::Ok { - let folder = chooser.get_filenames(); + let folder = chooser.filenames(); let list_store = get_list_store(&tree_view_excluded_directories); - let col_indices = [0]; - for file_entry in &folder { - let values: [&dyn ToValue; 1] = [&file_entry.to_string_lossy().to_string()]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &file_entry.to_string_lossy().to_string())]; + list_store.set(&list_store.append(), &values); } } chooser.close(); @@ -153,12 +146,12 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone(); buttons_remove_excluded_directory.connect_clicked(move |_| { let list_store = get_list_store(&tree_view_excluded_directories); - let selection = tree_view_excluded_directories.get_selection(); + let selection = tree_view_excluded_directories.selection(); - let (vec_tree_path, _tree_model) = selection.get_selected_rows(); + let (vec_tree_path, _tree_model) = selection.selected_rows(); for tree_path in vec_tree_path.iter().rev() { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } }); } @@ -168,12 +161,12 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) { let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); buttons_remove_included_directory.connect_clicked(move |_| { let list_store = get_list_store(&tree_view_included_directories); - let selection = tree_view_included_directories.get_selection(); + let selection = tree_view_included_directories.selection(); - let (vec_tree_path, _tree_model) = selection.get_selected_rows(); + let (vec_tree_path, _tree_model) = selection.selected_rows(); for tree_path in vec_tree_path.iter().rev() { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } }); } diff --git a/czkawka_gui/src/double_click_opening.rs b/czkawka_gui/src/double_click_opening.rs index 2972d84..bb27cbd 100644 --- a/czkawka_gui/src/double_click_opening.rs +++ b/czkawka_gui/src/double_click_opening.rs @@ -4,149 +4,149 @@ use gtk::prelude::*; // TODO add option to open files and folders from context menu activated by pressing ONCE with right mouse button pub fn opening_double_click_function_duplicates(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_duplicates(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_empty_folders(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_empty_folders(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_empty_files(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_empty_files(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_temporary_files(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_temporary_files(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_big_files(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_big_files(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_zeroed_files(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_zeroed_files(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_same_music(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_same_music(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_similar_images(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_similar_images(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_invalid_symlinks(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_invalid_symlinks(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) } pub fn opening_double_click_function_broken_files(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit { - if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 1 { + if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 { common_open_function(tree_view, ColumnsBrokenFiles::Name as i32, ColumnsBrokenFiles::Path as i32, OpenMode::PathAndName); - } else if event.get_event_type() == gdk::EventType::DoubleButtonPress && event.get_button() == 3 { + } else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 { common_open_function(tree_view, ColumnsBrokenFiles::Name as i32, ColumnsBrokenFiles::Path as i32, OpenMode::OnlyPath); } gtk::Inhibit(false) } pub fn opening_enter_function_broken_files(tree_view: >k::TreeView, event: &gdk::EventKey) -> gtk::Inhibit { - if event.get_keycode() == Some(36) { + if event.keycode() == Some(36) { common_open_function(tree_view, ColumnsBrokenFiles::Name as i32, ColumnsBrokenFiles::Path as i32, OpenMode::PathAndName); } gtk::Inhibit(false) @@ -158,13 +158,13 @@ pub enum OpenMode { } pub fn common_open_function(tree_view: >k::TreeView, column_name: i32, column_path: i32, opening_mode: OpenMode) { - let selection = tree_view.get_selection(); - let (selection_rows, tree_model) = selection.get_selected_rows(); + let selection = tree_view.selection(); + let (selection_rows, tree_model) = selection.selected_rows(); for tree_path in selection_rows.iter().rev() { let end_path; - let name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_name).get::().unwrap().unwrap(); - let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::().unwrap().unwrap(); + let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_name).get::().unwrap(); + let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::().unwrap(); match opening_mode { OpenMode::OnlyPath => { diff --git a/czkawka_gui/src/gui_about.rs b/czkawka_gui/src/gui_about.rs index 283d23f..9630373 100644 --- a/czkawka_gui/src/gui_about.rs +++ b/czkawka_gui/src/gui_about.rs @@ -12,12 +12,12 @@ pub struct GuiAbout { impl GuiAbout { pub fn create_from_builder(builder: >k::Builder) -> Self { - let about_dialog: gtk::AboutDialog = builder.get_object("about_dialog").unwrap(); + let about_dialog: gtk::AboutDialog = builder.object("about_dialog").unwrap(); about_dialog.set_position(WindowPosition::Center); - let button_repository: gtk::Button = builder.get_object("button_repository").unwrap(); - let button_donation: gtk::Button = builder.get_object("button_donation").unwrap(); - let button_instruction: gtk::Button = builder.get_object("button_instruction").unwrap(); + let button_repository: gtk::Button = builder.object("button_repository").unwrap(); + let button_donation: gtk::Button = builder.object("button_donation").unwrap(); + let button_instruction: gtk::Button = builder.object("button_instruction").unwrap(); Self { about_dialog, diff --git a/czkawka_gui/src/gui_bottom_buttons.rs b/czkawka_gui/src/gui_bottom_buttons.rs index b07b623..5e5eb1e 100644 --- a/czkawka_gui/src/gui_bottom_buttons.rs +++ b/czkawka_gui/src/gui_bottom_buttons.rs @@ -16,14 +16,14 @@ pub struct GuiBottomButtons { impl GuiBottomButtons { pub fn create_from_builder(builder: >k::Builder) -> Self { - let buttons_search: gtk::Button = builder.get_object("buttons_search").unwrap(); - let buttons_select: gtk::Button = builder.get_object("buttons_select").unwrap(); - let buttons_delete: gtk::Button = builder.get_object("buttons_delete").unwrap(); - let buttons_save: gtk::Button = builder.get_object("buttons_save").unwrap(); - let buttons_symlink: gtk::Button = builder.get_object("buttons_symlink").unwrap(); - let buttons_hardlink: gtk::Button = builder.get_object("buttons_hardlink").unwrap(); + let buttons_search: gtk::Button = builder.object("buttons_search").unwrap(); + let buttons_select: gtk::Button = builder.object("buttons_select").unwrap(); + let buttons_delete: gtk::Button = builder.object("buttons_delete").unwrap(); + let buttons_save: gtk::Button = builder.object("buttons_save").unwrap(); + let buttons_symlink: gtk::Button = builder.object("buttons_symlink").unwrap(); + let buttons_hardlink: gtk::Button = builder.object("buttons_hardlink").unwrap(); - let buttons_show_errors: gtk::Button = builder.get_object("buttons_show_errors").unwrap(); + let buttons_show_errors: gtk::Button = builder.object("buttons_show_errors").unwrap(); let buttons_names = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string(), "hardlink".to_string()]; let buttons_array = [buttons_search.clone(), buttons_select.clone(), buttons_delete.clone(), buttons_save.clone(), buttons_symlink.clone(), buttons_hardlink.clone()]; diff --git a/czkawka_gui/src/gui_data.rs b/czkawka_gui/src/gui_data.rs index 2d33f5d..9b0926a 100644 --- a/czkawka_gui/src/gui_data.rs +++ b/czkawka_gui/src/gui_data.rs @@ -84,7 +84,7 @@ impl GuiData { let builder = Builder::from_string(glade_src.as_str()); //// Windows - let window_main: gtk::Window = builder.get_object("window_main").unwrap(); + let window_main: gtk::Window = builder.object("window_main").unwrap(); window_main.show_all(); window_main.set_title("Czkawka"); window_main.set_position(WindowPosition::Center); @@ -146,11 +146,11 @@ impl GuiData { let shared_broken_files_state: Rc> = Rc::new(RefCell::new(BrokenFiles::new())); //// Entry - let entry_info: gtk::Entry = builder.get_object("entry_info").unwrap(); + let entry_info: gtk::Entry = builder.object("entry_info").unwrap(); //// Bottom - let text_view_errors: gtk::TextView = builder.get_object("text_view_errors").unwrap(); - let scrolled_window_errors: gtk::ScrolledWindow = builder.get_object("scrolled_window_errors").unwrap(); + let text_view_errors: gtk::TextView = builder.object("text_view_errors").unwrap(); + let scrolled_window_errors: gtk::ScrolledWindow = builder.object("scrolled_window_errors").unwrap(); scrolled_window_errors.show_all(); // Not sure why needed, but without it text view errors sometimes hide itself // Used for sending stop signal to thread diff --git a/czkawka_gui/src/gui_header.rs b/czkawka_gui/src/gui_header.rs index 940cb50..516404c 100644 --- a/czkawka_gui/src/gui_header.rs +++ b/czkawka_gui/src/gui_header.rs @@ -8,8 +8,8 @@ pub struct GuiHeader { impl GuiHeader { pub fn create_from_builder(builder: >k::Builder) -> Self { - let button_settings: gtk::Button = builder.get_object("button_settings").unwrap(); - let button_app_info: gtk::Button = builder.get_object("button_app_info").unwrap(); + let button_settings: gtk::Button = builder.object("button_settings").unwrap(); + let button_app_info: gtk::Button = builder.object("button_app_info").unwrap(); Self { button_settings, button_app_info } } } diff --git a/czkawka_gui/src/gui_main_notebook.rs b/czkawka_gui/src/gui_main_notebook.rs index 7f047b7..90cecfb 100644 --- a/czkawka_gui/src/gui_main_notebook.rs +++ b/czkawka_gui/src/gui_main_notebook.rs @@ -62,18 +62,18 @@ pub struct GuiMainNotebook { impl GuiMainNotebook { pub fn create_from_builder(builder: >k::Builder) -> Self { - let notebook_main: gtk::Notebook = builder.get_object("notebook_main").unwrap(); + let notebook_main: gtk::Notebook = builder.object("notebook_main").unwrap(); - let scrolled_window_duplicate_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_duplicate_finder").unwrap(); - let scrolled_window_empty_folder_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_empty_folder_finder").unwrap(); - let scrolled_window_empty_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_empty_files_finder").unwrap(); - let scrolled_window_temporary_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_temporary_files_finder").unwrap(); - let scrolled_window_big_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_big_files_finder").unwrap(); - let scrolled_window_similar_images_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_similar_images_finder").unwrap(); - let scrolled_window_zeroed_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_zeroed_files_finder").unwrap(); - let scrolled_window_same_music_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_same_music_finder").unwrap(); - let scrolled_window_invalid_symlinks: gtk::ScrolledWindow = builder.get_object("scrolled_window_invalid_symlinks").unwrap(); - let scrolled_window_broken_files: gtk::ScrolledWindow = builder.get_object("scrolled_window_broken_files").unwrap(); + let scrolled_window_duplicate_finder: gtk::ScrolledWindow = builder.object("scrolled_window_duplicate_finder").unwrap(); + let scrolled_window_empty_folder_finder: gtk::ScrolledWindow = builder.object("scrolled_window_empty_folder_finder").unwrap(); + let scrolled_window_empty_files_finder: gtk::ScrolledWindow = builder.object("scrolled_window_empty_files_finder").unwrap(); + let scrolled_window_temporary_files_finder: gtk::ScrolledWindow = builder.object("scrolled_window_temporary_files_finder").unwrap(); + let scrolled_window_big_files_finder: gtk::ScrolledWindow = builder.object("scrolled_window_big_files_finder").unwrap(); + let scrolled_window_similar_images_finder: gtk::ScrolledWindow = builder.object("scrolled_window_similar_images_finder").unwrap(); + let scrolled_window_zeroed_files_finder: gtk::ScrolledWindow = builder.object("scrolled_window_zeroed_files_finder").unwrap(); + let scrolled_window_same_music_finder: gtk::ScrolledWindow = builder.object("scrolled_window_same_music_finder").unwrap(); + let scrolled_window_invalid_symlinks: gtk::ScrolledWindow = builder.object("scrolled_window_invalid_symlinks").unwrap(); + let scrolled_window_broken_files: gtk::ScrolledWindow = builder.object("scrolled_window_broken_files").unwrap(); let tree_view_duplicate_finder: gtk::TreeView = TreeView::new(); let tree_view_empty_folder_finder: gtk::TreeView = TreeView::new(); @@ -86,36 +86,36 @@ impl GuiMainNotebook { let tree_view_invalid_symlinks: gtk::TreeView = TreeView::new(); let tree_view_broken_files: gtk::TreeView = TreeView::new(); - let entry_similar_images_minimal_size: gtk::Entry = builder.get_object("entry_similar_images_minimal_size").unwrap(); - let entry_duplicate_minimal_size: gtk::Entry = builder.get_object("entry_duplicate_minimal_size").unwrap(); - let entry_big_files_number: gtk::Entry = builder.get_object("entry_big_files_number").unwrap(); - let entry_same_music_minimal_size: gtk::Entry = builder.get_object("entry_same_music_minimal_size").unwrap(); + let entry_similar_images_minimal_size: gtk::Entry = builder.object("entry_similar_images_minimal_size").unwrap(); + let entry_duplicate_minimal_size: gtk::Entry = builder.object("entry_duplicate_minimal_size").unwrap(); + let entry_big_files_number: gtk::Entry = builder.object("entry_big_files_number").unwrap(); + let entry_same_music_minimal_size: gtk::Entry = builder.object("entry_same_music_minimal_size").unwrap(); //// Check Buttons - let check_button_music_title: gtk::CheckButton = builder.get_object("check_button_music_title").unwrap(); - let check_button_music_artist: gtk::CheckButton = builder.get_object("check_button_music_artist").unwrap(); - let check_button_music_album_title: gtk::CheckButton = builder.get_object("check_button_music_album_title").unwrap(); - let check_button_music_album_artist: gtk::CheckButton = builder.get_object("check_button_music_album_artist").unwrap(); - let check_button_music_year: gtk::CheckButton = builder.get_object("check_button_music_year").unwrap(); + let check_button_music_title: gtk::CheckButton = builder.object("check_button_music_title").unwrap(); + let check_button_music_artist: gtk::CheckButton = builder.object("check_button_music_artist").unwrap(); + let check_button_music_album_title: gtk::CheckButton = builder.object("check_button_music_album_title").unwrap(); + let check_button_music_album_artist: gtk::CheckButton = builder.object("check_button_music_album_artist").unwrap(); + let check_button_music_year: gtk::CheckButton = builder.object("check_button_music_year").unwrap(); //// Radio Buttons - let radio_button_duplicates_name: gtk::RadioButton = builder.get_object("radio_button_duplicates_name").unwrap(); - let radio_button_duplicates_size: gtk::RadioButton = builder.get_object("radio_button_duplicates_size").unwrap(); - let radio_button_duplicates_hashmb: gtk::RadioButton = builder.get_object("radio_button_duplicates_hashmb").unwrap(); - let radio_button_duplicates_hash: gtk::RadioButton = builder.get_object("radio_button_duplicates_hash").unwrap(); + let radio_button_duplicates_name: gtk::RadioButton = builder.object("radio_button_duplicates_name").unwrap(); + let radio_button_duplicates_size: gtk::RadioButton = builder.object("radio_button_duplicates_size").unwrap(); + let radio_button_duplicates_hashmb: gtk::RadioButton = builder.object("radio_button_duplicates_hashmb").unwrap(); + let radio_button_duplicates_hash: gtk::RadioButton = builder.object("radio_button_duplicates_hash").unwrap(); - let radio_button_similar_images_minimal: gtk::RadioButton = builder.get_object("radio_button_similar_images_minimal").unwrap(); - let radio_button_similar_images_very_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_small").unwrap(); - let radio_button_similar_images_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_small").unwrap(); - let radio_button_similar_images_medium: gtk::RadioButton = builder.get_object("radio_button_similar_images_medium").unwrap(); - let radio_button_similar_images_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_high").unwrap(); - let radio_button_similar_images_very_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_high").unwrap(); + let radio_button_similar_images_minimal: gtk::RadioButton = builder.object("radio_button_similar_images_minimal").unwrap(); + let radio_button_similar_images_very_small: gtk::RadioButton = builder.object("radio_button_similar_images_very_small").unwrap(); + let radio_button_similar_images_small: gtk::RadioButton = builder.object("radio_button_similar_images_small").unwrap(); + let radio_button_similar_images_medium: gtk::RadioButton = builder.object("radio_button_similar_images_medium").unwrap(); + let radio_button_similar_images_high: gtk::RadioButton = builder.object("radio_button_similar_images_high").unwrap(); + let radio_button_similar_images_very_high: gtk::RadioButton = builder.object("radio_button_similar_images_very_high").unwrap(); - let radio_button_hash_type_blake3: gtk::RadioButton = builder.get_object("radio_button_hash_type_blake3").unwrap(); - let radio_button_hash_type_crc32: gtk::RadioButton = builder.get_object("radio_button_hash_type_crc32").unwrap(); - let radio_button_hash_type_xxh3: gtk::RadioButton = builder.get_object("radio_button_hash_type_xxh3").unwrap(); + let radio_button_hash_type_blake3: gtk::RadioButton = builder.object("radio_button_hash_type_blake3").unwrap(); + let radio_button_hash_type_crc32: gtk::RadioButton = builder.object("radio_button_hash_type_crc32").unwrap(); + let radio_button_hash_type_xxh3: gtk::RadioButton = builder.object("radio_button_hash_type_xxh3").unwrap(); - let image_preview_similar_images: gtk::Image = builder.get_object("image_preview_similar_images").unwrap(); + let image_preview_similar_images: gtk::Image = builder.object("image_preview_similar_images").unwrap(); Self { notebook_main, diff --git a/czkawka_gui/src/gui_popovers.rs b/czkawka_gui/src/gui_popovers.rs index d017bb1..cf9fac1 100644 --- a/czkawka_gui/src/gui_popovers.rs +++ b/czkawka_gui/src/gui_popovers.rs @@ -28,28 +28,28 @@ pub struct GuiPopovers { impl GuiPopovers { pub fn create_from_builder(builder: >k::Builder) -> Self { - let buttons_popover_select_all: gtk::Button = builder.get_object("buttons_popover_select_all").unwrap(); - let buttons_popover_unselect_all: gtk::Button = builder.get_object("buttons_popover_unselect_all").unwrap(); - let buttons_popover_reverse: gtk::Button = builder.get_object("buttons_popover_reverse").unwrap(); - let buttons_popover_select_all_except_oldest: gtk::Button = builder.get_object("buttons_popover_select_all_except_oldest").unwrap(); - let buttons_popover_select_all_except_newest: gtk::Button = builder.get_object("buttons_popover_select_all_except_newest").unwrap(); - let buttons_popover_select_one_oldest: gtk::Button = builder.get_object("buttons_popover_select_one_oldest").unwrap(); - let buttons_popover_select_one_newest: gtk::Button = builder.get_object("buttons_popover_select_one_newest").unwrap(); - let buttons_popover_select_custom: gtk::Button = builder.get_object("buttons_popover_select_custom").unwrap(); - let buttons_popover_unselect_custom: gtk::Button = builder.get_object("buttons_popover_unselect_custom").unwrap(); - let buttons_popover_select_all_images_except_biggest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_biggest").unwrap(); - let buttons_popover_select_all_images_except_smallest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_smallest").unwrap(); + let buttons_popover_select_all: gtk::Button = builder.object("buttons_popover_select_all").unwrap(); + let buttons_popover_unselect_all: gtk::Button = builder.object("buttons_popover_unselect_all").unwrap(); + let buttons_popover_reverse: gtk::Button = builder.object("buttons_popover_reverse").unwrap(); + let buttons_popover_select_all_except_oldest: gtk::Button = builder.object("buttons_popover_select_all_except_oldest").unwrap(); + let buttons_popover_select_all_except_newest: gtk::Button = builder.object("buttons_popover_select_all_except_newest").unwrap(); + let buttons_popover_select_one_oldest: gtk::Button = builder.object("buttons_popover_select_one_oldest").unwrap(); + let buttons_popover_select_one_newest: gtk::Button = builder.object("buttons_popover_select_one_newest").unwrap(); + let buttons_popover_select_custom: gtk::Button = builder.object("buttons_popover_select_custom").unwrap(); + let buttons_popover_unselect_custom: gtk::Button = builder.object("buttons_popover_unselect_custom").unwrap(); + let buttons_popover_select_all_images_except_biggest: gtk::Button = builder.object("buttons_popover_select_all_images_except_biggest").unwrap(); + let buttons_popover_select_all_images_except_smallest: gtk::Button = builder.object("buttons_popover_select_all_images_except_smallest").unwrap(); - let separator_select_image_size: gtk::Separator = builder.get_object("separator_select_image_size").unwrap(); - let separator_select_reverse: gtk::Separator = builder.get_object("separator_select_reverse").unwrap(); - let separator_select_date: gtk::Separator = builder.get_object("separator_select_date").unwrap(); - let separator_select_custom: gtk::Separator = builder.get_object("separator_select_custom").unwrap(); + let separator_select_image_size: gtk::Separator = builder.object("separator_select_image_size").unwrap(); + let separator_select_reverse: gtk::Separator = builder.object("separator_select_reverse").unwrap(); + let separator_select_date: gtk::Separator = builder.object("separator_select_date").unwrap(); + let separator_select_custom: gtk::Separator = builder.object("separator_select_custom").unwrap(); - let buttons_popover_right_click_open_file: gtk::Button = builder.get_object("buttons_popover_right_click_open_file").unwrap(); - let buttons_popover_right_click_open_folder: gtk::Button = builder.get_object("buttons_popover_right_click_open_folder").unwrap(); + let buttons_popover_right_click_open_file: gtk::Button = builder.object("buttons_popover_right_click_open_file").unwrap(); + let buttons_popover_right_click_open_folder: gtk::Button = builder.object("buttons_popover_right_click_open_folder").unwrap(); - let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap(); - let popover_right_click: gtk::Popover = builder.get_object("popover_right_click").unwrap(); + let popover_select: gtk::Popover = builder.object("popover_select").unwrap(); + let popover_right_click: gtk::Popover = builder.object("popover_right_click").unwrap(); Self { buttons_popover_select_all, diff --git a/czkawka_gui/src/gui_progress_dialog.rs b/czkawka_gui/src/gui_progress_dialog.rs index 97d7fa1..b3a2ccc 100644 --- a/czkawka_gui/src/gui_progress_dialog.rs +++ b/czkawka_gui/src/gui_progress_dialog.rs @@ -16,16 +16,16 @@ pub struct GuiProgressDialog { impl GuiProgressDialog { pub fn create_from_builder(builder: >k::Builder) -> Self { - let window_progress: gtk::Window = builder.get_object("window_progress").unwrap(); + let window_progress: gtk::Window = builder.object("window_progress").unwrap(); - let progress_bar_current_stage: gtk::ProgressBar = builder.get_object("progress_bar_current_stage").unwrap(); - let progress_bar_all_stages: gtk::ProgressBar = builder.get_object("progress_bar_all_stages").unwrap(); + let progress_bar_current_stage: gtk::ProgressBar = builder.object("progress_bar_current_stage").unwrap(); + let progress_bar_all_stages: gtk::ProgressBar = builder.object("progress_bar_all_stages").unwrap(); - let label_stage: gtk::Label = builder.get_object("label_stage").unwrap(); + let label_stage: gtk::Label = builder.object("label_stage").unwrap(); - let grid_progress_stages: gtk::Grid = builder.get_object("grid_progress_stages").unwrap(); + let grid_progress_stages: gtk::Grid = builder.object("grid_progress_stages").unwrap(); - let button_stop_in_dialog: gtk::Button = builder.get_object("button_stop_in_dialog").unwrap(); + let button_stop_in_dialog: gtk::Button = builder.object("button_stop_in_dialog").unwrap(); Self { window_progress, diff --git a/czkawka_gui/src/gui_settings.rs b/czkawka_gui/src/gui_settings.rs index 6ec6bf7..c62b71e 100644 --- a/czkawka_gui/src/gui_settings.rs +++ b/czkawka_gui/src/gui_settings.rs @@ -29,29 +29,29 @@ pub struct GuiSettings { impl GuiSettings { pub fn create_from_builder(builder: >k::Builder) -> Self { - let window_settings: gtk::Window = builder.get_object("window_settings").unwrap(); + let window_settings: gtk::Window = builder.object("window_settings").unwrap(); window_settings.set_position(WindowPosition::Center); // General - let check_button_settings_save_at_exit: gtk::CheckButton = builder.get_object("check_button_settings_save_at_exit").unwrap(); - let check_button_settings_load_at_start: gtk::CheckButton = builder.get_object("check_button_settings_load_at_start").unwrap(); - let check_button_settings_confirm_deletion: gtk::CheckButton = builder.get_object("check_button_settings_confirm_deletion").unwrap(); - let check_button_settings_confirm_group_deletion: gtk::CheckButton = builder.get_object("check_button_settings_confirm_group_deletion").unwrap(); - let check_button_settings_show_text_view: gtk::CheckButton = builder.get_object("check_button_settings_show_text_view").unwrap(); - let check_button_settings_use_cache: gtk::CheckButton = builder.get_object("check_button_settings_use_cache").unwrap(); - let check_button_settings_use_trash: gtk::CheckButton = builder.get_object("check_button_settings_use_trash").unwrap(); + let check_button_settings_save_at_exit: gtk::CheckButton = builder.object("check_button_settings_save_at_exit").unwrap(); + let check_button_settings_load_at_start: gtk::CheckButton = builder.object("check_button_settings_load_at_start").unwrap(); + let check_button_settings_confirm_deletion: gtk::CheckButton = builder.object("check_button_settings_confirm_deletion").unwrap(); + let check_button_settings_confirm_group_deletion: gtk::CheckButton = builder.object("check_button_settings_confirm_group_deletion").unwrap(); + let check_button_settings_show_text_view: gtk::CheckButton = builder.object("check_button_settings_show_text_view").unwrap(); + let check_button_settings_use_cache: gtk::CheckButton = builder.object("check_button_settings_use_cache").unwrap(); + let check_button_settings_use_trash: gtk::CheckButton = builder.object("check_button_settings_use_trash").unwrap(); // Duplicates - let check_button_settings_hide_hard_links: gtk::CheckButton = builder.get_object("check_button_settings_hide_hard_links").unwrap(); - let entry_settings_cache_file_minimal_size: gtk::Entry = builder.get_object("entry_settings_cache_file_minimal_size").unwrap(); + let check_button_settings_hide_hard_links: gtk::CheckButton = builder.object("check_button_settings_hide_hard_links").unwrap(); + let entry_settings_cache_file_minimal_size: gtk::Entry = builder.object("entry_settings_cache_file_minimal_size").unwrap(); // Similar Images - let check_button_settings_show_preview_similar_images: gtk::CheckButton = builder.get_object("check_button_settings_show_preview_similar_images").unwrap(); + let check_button_settings_show_preview_similar_images: gtk::CheckButton = builder.object("check_button_settings_show_preview_similar_images").unwrap(); // Saving/Loading/Resetting configuration - let button_settings_save_configuration: gtk::Button = builder.get_object("button_settings_save_configuration").unwrap(); - let button_settings_load_configuration: gtk::Button = builder.get_object("button_settings_load_configuration").unwrap(); - let button_settings_reset_configuration: gtk::Button = builder.get_object("button_settings_reset_configuration").unwrap(); + let button_settings_save_configuration: gtk::Button = builder.object("button_settings_save_configuration").unwrap(); + let button_settings_load_configuration: gtk::Button = builder.object("button_settings_load_configuration").unwrap(); + let button_settings_reset_configuration: gtk::Button = builder.object("button_settings_reset_configuration").unwrap(); Self { window_settings, diff --git a/czkawka_gui/src/gui_upper_notepad.rs b/czkawka_gui/src/gui_upper_notepad.rs index 95545c9..a1bab92 100644 --- a/czkawka_gui/src/gui_upper_notepad.rs +++ b/czkawka_gui/src/gui_upper_notepad.rs @@ -26,25 +26,25 @@ pub struct GuiUpperNotebook { impl GuiUpperNotebook { pub fn create_from_builder(builder: >k::Builder) -> Self { - let notebook_upper: gtk::Notebook = builder.get_object("notebook_upper").unwrap(); + let notebook_upper: gtk::Notebook = builder.object("notebook_upper").unwrap(); - let scrolled_window_included_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_included_directories").unwrap(); - let scrolled_window_excluded_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_excluded_directories").unwrap(); + let scrolled_window_included_directories: gtk::ScrolledWindow = builder.object("scrolled_window_included_directories").unwrap(); + let scrolled_window_excluded_directories: gtk::ScrolledWindow = builder.object("scrolled_window_excluded_directories").unwrap(); let tree_view_included_directories: gtk::TreeView = TreeView::new(); let tree_view_excluded_directories: gtk::TreeView = TreeView::new(); - let entry_allowed_extensions: gtk::Entry = builder.get_object("entry_allowed_extensions").unwrap(); - let entry_excluded_items: gtk::Entry = builder.get_object("entry_excluded_items").unwrap(); + let entry_allowed_extensions: gtk::Entry = builder.object("entry_allowed_extensions").unwrap(); + let entry_excluded_items: gtk::Entry = builder.object("entry_excluded_items").unwrap(); - let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap(); + let check_button_recursive: gtk::CheckButton = builder.object("check_button_recursive").unwrap(); - let buttons_manual_add_directory: gtk::Button = builder.get_object("buttons_manual_add_directory").unwrap(); - let buttons_add_included_directory: gtk::Button = builder.get_object("buttons_add_included_directory").unwrap(); - let buttons_remove_included_directory: gtk::Button = builder.get_object("buttons_remove_included_directory").unwrap(); - let buttons_manual_add_excluded_directory: gtk::Button = builder.get_object("buttons_manual_add_excluded_directory").unwrap(); - let buttons_add_excluded_directory: gtk::Button = builder.get_object("buttons_add_excluded_directory").unwrap(); - let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap(); + let buttons_manual_add_directory: gtk::Button = builder.object("buttons_manual_add_directory").unwrap(); + let buttons_add_included_directory: gtk::Button = builder.object("buttons_add_included_directory").unwrap(); + let buttons_remove_included_directory: gtk::Button = builder.object("buttons_remove_included_directory").unwrap(); + let buttons_manual_add_excluded_directory: gtk::Button = builder.object("buttons_manual_add_excluded_directory").unwrap(); + let buttons_add_excluded_directory: gtk::Button = builder.object("buttons_add_excluded_directory").unwrap(); + let buttons_remove_excluded_directory: gtk::Button = builder.object("buttons_remove_excluded_directory").unwrap(); Self { notebook_upper, diff --git a/czkawka_gui/src/help_functions.rs b/czkawka_gui/src/help_functions.rs index 94432ef..bdf8cf7 100644 --- a/czkawka_gui/src/help_functions.rs +++ b/czkawka_gui/src/help_functions.rs @@ -124,14 +124,14 @@ pub fn get_string_from_list_store(tree_view: >k::TreeView) -> Vec { let mut string_vector: Vec = Vec::new(); - let tree_iter = match list_store.get_iter_first() { + let tree_iter = match list_store.iter_first() { Some(t) => t, None => { return string_vector; } }; loop { - string_vector.push(list_store.get_value(&tree_iter, 0).get::().unwrap().unwrap()); + string_vector.push(list_store.value(&tree_iter, 0).get::().unwrap()); if !list_store.iter_next(&tree_iter) { return string_vector; } @@ -182,16 +182,16 @@ pub fn print_text_messages_to_text_view(text_messages: &Messages, text_view: > messages += "\n"; } - text_view.get_buffer().unwrap().set_text(messages.as_str()); + text_view.buffer().unwrap().set_text(messages.as_str()); } pub fn reset_text_view(text_view: &TextView) { - text_view.get_buffer().unwrap().set_text(""); + text_view.buffer().unwrap().set_text(""); } pub fn add_text_to_text_view(text_view: &TextView, string_to_append: &str) { - let buffer = text_view.get_buffer().unwrap(); - let current_text = match buffer.get_text(&buffer.get_start_iter(), &buffer.get_end_iter(), true) { + let buffer = text_view.buffer().unwrap(); + let current_text = match buffer.text(&buffer.start_iter(), &buffer.end_iter(), true) { Some(t) => t.to_string(), None => "".to_string(), }; @@ -199,10 +199,10 @@ pub fn add_text_to_text_view(text_view: &TextView, string_to_append: &str) { } pub fn select_function_duplicates(_tree_selection: >k::TreeSelection, tree_model: >k::TreeModel, tree_path: >k::TreePath, _is_path_currently_selected: bool) -> bool { - // let name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(),ColumnsDuplicates::Name as i32).get::().unwrap().unwrap(); - // let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsDuplicates::Path as i32).get::().unwrap().unwrap(); - // let modification = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(),ColumnsDuplicates::Modification as i32).get::().unwrap().unwrap(); - let color = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsDuplicates::Color as i32).get::().unwrap().unwrap(); + // let name = tree_model.value(&tree_model.iter(tree_path).unwrap(),ColumnsDuplicates::Name as i32).get::().unwrap(); + // let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsDuplicates::Path as i32).get::().unwrap(); + // let modification = tree_model.value(&tree_model.iter(tree_path).unwrap(),ColumnsDuplicates::Modification as i32).get::().unwrap(); + let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsDuplicates::Color as i32).get::().unwrap(); if color == HEADER_ROW_COLOR { return false; @@ -211,7 +211,7 @@ pub fn select_function_duplicates(_tree_selection: >k::TreeSelection, tree_mod true } pub fn select_function_same_music(_tree_selection: >k::TreeSelection, tree_model: >k::TreeModel, tree_path: >k::TreePath, _is_path_currently_selected: bool) -> bool { - let color = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsSameMusic::Color as i32).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsSameMusic::Color as i32).get::().unwrap(); if color == HEADER_ROW_COLOR { return false; @@ -220,7 +220,7 @@ pub fn select_function_same_music(_tree_selection: >k::TreeSelection, tree_mod true } pub fn select_function_similar_images(_tree_selection: >k::TreeSelection, tree_model: >k::TreeModel, tree_path: >k::TreePath, _is_path_currently_selected: bool) -> bool { - let color = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsSimilarImages::Color as i32).get::().unwrap().unwrap(); + let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsSimilarImages::Color as i32).get::().unwrap(); if color == HEADER_ROW_COLOR { return false; @@ -274,10 +274,10 @@ pub fn get_text_from_invalid_symlink_cause(error: &invalid_symlinks::ErrorType) } pub fn get_list_store(tree_view: >k::TreeView) -> ListStore { - tree_view.get_model().unwrap().downcast::().unwrap() + tree_view.model().unwrap().downcast::().unwrap() } pub fn get_dialog_box_child(dialog: >k::Dialog) -> gtk::Box { - dialog.get_children()[0].clone().downcast::().unwrap() + dialog.children()[0].clone().downcast::().unwrap() } pub fn change_dimension_to_krotka(dimensions: String) -> (u64, u64) { diff --git a/czkawka_gui/src/initialize_gui.rs b/czkawka_gui/src/initialize_gui.rs index ab2de03..7fa65ac 100644 --- a/czkawka_gui/src/initialize_gui.rs +++ b/czkawka_gui/src/initialize_gui.rs @@ -53,19 +53,19 @@ pub fn initialize_gui(gui_data: &mut GuiData) { // Duplicate Files { let col_types: [glib::types::Type; 6] = [ - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, glib::types::Type::U64, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, ]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); - tree_view.get_selection().set_select_function(Some(Box::new(select_function_duplicates))); + tree_view.selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_select_function(Some(Box::new(select_function_duplicates))); create_tree_view_duplicates(&mut tree_view); @@ -73,7 +73,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { tree_view.connect_key_press_event(opening_enter_function_duplicates); tree_view.connect_button_release_event(move |_tree_view, _e| { - // println!("{}", e.get_button()); + // println!("{}", e.button()); gtk::Inhibit(false) }); @@ -83,16 +83,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { - if tree_view.get_selection().get_selected_rows().0.is_empty() { + if tree_view.selection().selected_rows().0.is_empty() { return gtk::Inhibit(false); } if !check_if_can_delete_files(&gui_data.settings.check_button_settings_confirm_deletion, &gui_data.window_main) { return gtk::Inhibit(false); } - if gui_data.settings.check_button_settings_confirm_group_deletion.get_active() + if gui_data.settings.check_button_settings_confirm_group_deletion.is_active() && check_if_deleting_all_files_in_group(&tree_view.clone(), ColumnsDuplicates::Color as i32, &gui_data.window_main, &gui_data.settings.check_button_settings_confirm_group_deletion) { return gtk::Inhibit(false); @@ -105,12 +105,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Empty Folders { - let col_types: [glib::types::Type; 3] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 3] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_empty_folders(&mut tree_view); @@ -123,7 +123,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { empty_folder_remover(&tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data); @@ -134,12 +134,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Empty Files { - let col_types: [glib::types::Type; 3] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 3] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_empty_files(&mut tree_view); @@ -152,7 +152,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data); @@ -163,12 +163,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Temporary Files { - let col_types: [glib::types::Type; 3] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 3] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_temporary_files(&mut tree_view); @@ -181,7 +181,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data); @@ -192,12 +192,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Big Files { - let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 4] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_big_files(&mut tree_view); @@ -210,7 +210,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data); @@ -225,23 +225,23 @@ pub fn initialize_gui(gui_data: &mut GuiData) { image_preview_similar_images.hide(); let col_types: [glib::types::Type; 10] = [ - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, glib::types::Type::U64, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, glib::types::Type::U64, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, ]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); - tree_view.get_selection().set_select_function(Some(Box::new(select_function_similar_images))); + tree_view.selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_select_function(Some(Box::new(select_function_similar_images))); create_tree_view_similar_images(&mut tree_view); @@ -261,16 +261,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone(); let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { - if tree_view.get_selection().get_selected_rows().0.is_empty() { + if tree_view.selection().selected_rows().0.is_empty() { return gtk::Inhibit(false); } if !check_if_can_delete_files(&gui_data.settings.check_button_settings_confirm_deletion, &gui_data.window_main) { return gtk::Inhibit(false); } - if gui_data.settings.check_button_settings_confirm_group_deletion.get_active() + if gui_data.settings.check_button_settings_confirm_group_deletion.is_active() && check_if_deleting_all_files_in_group(&tree_view.clone(), ColumnsSimilarImages::Color as i32, &gui_data.window_main, &gui_data.settings.check_button_settings_confirm_group_deletion) { return gtk::Inhibit(false); @@ -285,12 +285,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Zeroed Files { - let col_types: [glib::types::Type; 5] = [glib::types::Type::String, glib::types::Type::U64, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 5] = [glib::types::Type::STRING, glib::types::Type::U64, glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_zeroed_files(&mut tree_view); @@ -303,7 +303,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data); @@ -315,28 +315,28 @@ pub fn initialize_gui(gui_data: &mut GuiData) { // Same Music { let col_types: [glib::types::Type; 13] = [ - glib::types::Type::String, + glib::types::Type::STRING, glib::types::Type::U64, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, + glib::types::Type::STRING, glib::types::Type::U64, - glib::types::Type::String, - glib::types::Type::String, + glib::types::Type::STRING, + glib::types::Type::STRING, ]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_same_music(&mut tree_view); - tree_view.get_selection().set_select_function(Some(Box::new(select_function_same_music))); + tree_view.selection().set_select_function(Some(Box::new(select_function_same_music))); tree_view.connect_button_press_event(opening_double_click_function_same_music); tree_view.connect_key_press_event(opening_enter_function_same_music); @@ -347,16 +347,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { - if tree_view.get_selection().get_selected_rows().0.is_empty() { + if tree_view.selection().selected_rows().0.is_empty() { return gtk::Inhibit(false); } if !check_if_can_delete_files(&gui_data.settings.check_button_settings_confirm_deletion, &gui_data.window_main) { return gtk::Inhibit(false); } - if gui_data.settings.check_button_settings_confirm_group_deletion.get_active() + if gui_data.settings.check_button_settings_confirm_group_deletion.is_active() && check_if_deleting_all_files_in_group(&tree_view.clone(), ColumnsSameMusic::Color as i32, &gui_data.window_main, &gui_data.settings.check_button_settings_confirm_group_deletion) { return gtk::Inhibit(false); @@ -369,12 +369,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Invalid Symlinks { - let col_types: [glib::types::Type; 5] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 5] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_invalid_symlinks(&mut tree_view); @@ -387,7 +387,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data); @@ -398,12 +398,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Broken Files { - let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 4] = [glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING, glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_broken_files(&mut tree_view); @@ -416,7 +416,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) { let gui_data = gui_data.clone(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { basic_remove(&tree_view, ColumnsBrokenFiles::Name as i32, ColumnsBrokenFiles::Path as i32, &gui_data); @@ -435,12 +435,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { // Set Included Directory { - let col_types: [glib::types::Type; 1] = [glib::types::Type::String]; + let col_types: [glib::types::Type; 1] = [glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_directories(&mut tree_view); @@ -449,16 +449,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) { scrolled_window_included_directories.show_all(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { let list_store = get_list_store(&tree_view); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (vec_tree_path, _tree_model) = selection.get_selected_rows(); + let (vec_tree_path, _tree_model) = selection.selected_rows(); for tree_path in vec_tree_path.iter().rev() { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } } } @@ -467,12 +467,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } // Set Excluded Directory { - let col_types: [glib::types::Type; 1] = [glib::types::Type::String]; + let col_types: [glib::types::Type; 1] = [glib::types::Type::STRING]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); - tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.selection().set_mode(SelectionMode::Multiple); create_tree_view_directories(&mut tree_view); @@ -481,16 +481,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) { scrolled_window_excluded_directories.show_all(); tree_view.connect_key_release_event(move |tree_view, e| { - if let Some(button_number) = e.get_keycode() { + if let Some(button_number) = e.keycode() { // Handle delete button if button_number == 119 { let list_store = get_list_store(&tree_view); - let selection = tree_view.get_selection(); + let selection = tree_view.selection(); - let (vec_tree_path, _tree_model) = selection.get_selected_rows(); + let (vec_tree_path, _tree_model) = selection.selected_rows(); for tree_path in vec_tree_path.iter().rev() { - list_store.remove(&list_store.get_iter(tree_path).unwrap()); + list_store.remove(&list_store.iter(tree_path).unwrap()); } } } @@ -513,12 +513,12 @@ pub fn initialize_gui(gui_data: &mut GuiData) { } } fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_settings_show_preview_similar_images: &CheckButton, image_preview_similar_images: &Image) { - let (selected_rows, tree_model) = tree_view.get_selection().get_selected_rows(); + let (selected_rows, tree_model) = tree_view.selection().selected_rows(); let mut created_image = false; // Only show preview when selected is only one item, because there is no method to recognize current clicked item in multiselection - if selected_rows.len() == 1 && check_button_settings_show_preview_similar_images.get_active() { + if selected_rows.len() == 1 && check_button_settings_show_preview_similar_images.is_active() { let tree_path = selected_rows[0].clone(); if let Some(proj_dirs) = ProjectDirs::from("pl", "Qarmin", "Czkawka") { // TODO labels on {} are in testing stage, so we just ignore for now this warning until found better idea how to fix this @@ -534,8 +534,8 @@ fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_ add_text_to_text_view(&text_view_errors, format!("Failed to create dir {} needed by image preview", cache_dir.display()).as_str()); break 'dir; } - let path = tree_model.get_value(&tree_model.get_iter(&tree_path).unwrap(), ColumnsSimilarImages::Path as i32).get::().unwrap().unwrap(); - let name = tree_model.get_value(&tree_model.get_iter(&tree_path).unwrap(), ColumnsSimilarImages::Name as i32).get::().unwrap().unwrap(); + let path = tree_model.value(&tree_model.iter(&tree_path).unwrap(), ColumnsSimilarImages::Path as i32).get::().unwrap(); + let name = tree_model.value(&tree_model.iter(&tree_path).unwrap(), ColumnsSimilarImages::Name as i32).get::().unwrap(); let file_name = format!("{}/{}", path, name); let file_name = file_name.as_str(); diff --git a/czkawka_gui/src/saving_loading.rs b/czkawka_gui/src/saving_loading.rs index f33a9aa..b4913ba 100644 --- a/czkawka_gui/src/saving_loading.rs +++ b/czkawka_gui/src/saving_loading.rs @@ -2,7 +2,6 @@ use crate::gui_data::*; use crate::help_functions::*; use directories_next::ProjectDirs; use gtk::prelude::*; -use gtk::{EntryExt, GtkListStoreExt, ToggleButtonExt}; use std::fs::File; use std::io::Write; use std::path::Path; @@ -18,7 +17,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { reset_text_view(&text_view_errors); - if !manual_execution && !check_button_settings_save_at_exit.get_active() { + if !manual_execution && !check_button_settings_save_at_exit.is_active() { // When check button is deselected, not save configuration at exit return; } @@ -43,9 +42,9 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { data_to_save.push("--included_directories:".to_string()); let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); let list_store = get_list_store(&tree_view_included_directories); - if let Some(iter) = list_store.get_iter_first() { + if let Some(iter) = list_store.iter_first() { loop { - data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::().unwrap().unwrap()); + data_to_save.push(list_store.value(&iter, ColumnsDirectory::Path as i32).get::().unwrap()); if !list_store.iter_next(&iter) { break; } @@ -56,9 +55,9 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { data_to_save.push("--excluded_directories:".to_string()); let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone(); let list_store = get_list_store(&tree_view_excluded_directories); - if let Some(iter) = list_store.get_iter_first() { + if let Some(iter) = list_store.iter_first() { loop { - data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::().unwrap().unwrap()); + data_to_save.push(list_store.value(&iter, ColumnsDirectory::Path as i32).get::().unwrap()); if !list_store.iter_next(&iter) { break; } @@ -69,7 +68,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { //// Excluded Items data_to_save.push("--excluded_items:".to_string()); let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone(); - for item in entry_excluded_items.get_text().split(',') { + for item in entry_excluded_items.text().split(',') { if item.trim().is_empty() { continue; } @@ -79,7 +78,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { //// Allowed extensions data_to_save.push("--allowed_extensions:".to_string()); let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone(); - for extension in entry_allowed_extensions.get_text().split(',') { + for extension in entry_allowed_extensions.text().split(',') { if extension.trim().is_empty() { continue; } @@ -89,52 +88,52 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) { //// Save at exit data_to_save.push("--save_at_exit:".to_string()); let check_button_settings_save_at_exit = gui_data.settings.check_button_settings_save_at_exit.clone(); - data_to_save.push(check_button_settings_save_at_exit.get_active().to_string()); + data_to_save.push(check_button_settings_save_at_exit.is_active().to_string()); //// Load at start data_to_save.push("--load_at_start:".to_string()); let check_button_settings_load_at_start = gui_data.settings.check_button_settings_load_at_start.clone(); - data_to_save.push(check_button_settings_load_at_start.get_active().to_string()); + data_to_save.push(check_button_settings_load_at_start.is_active().to_string()); //// Confirm deletion of files data_to_save.push("--confirm_deletion:".to_string()); let check_button_settings_confirm_deletion = gui_data.settings.check_button_settings_confirm_deletion.clone(); - data_to_save.push(check_button_settings_confirm_deletion.get_active().to_string()); + data_to_save.push(check_button_settings_confirm_deletion.is_active().to_string()); //// Confirm deletion of all files in group data_to_save.push("--confirm_group_deletion:".to_string()); let check_button_settings_confirm_group_deletion = gui_data.settings.check_button_settings_confirm_group_deletion.clone(); - data_to_save.push(check_button_settings_confirm_group_deletion.get_active().to_string()); + data_to_save.push(check_button_settings_confirm_group_deletion.is_active().to_string()); //// Show image previews in similar images data_to_save.push("--show_previews:".to_string()); let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone(); - data_to_save.push(check_button_settings_show_preview_similar_images.get_active().to_string()); + data_to_save.push(check_button_settings_show_preview_similar_images.is_active().to_string()); //// Show bottom text panel with errors data_to_save.push("--bottom_text_panel:".to_string()); let check_button_settings_show_text_view = gui_data.settings.check_button_settings_show_text_view.clone(); - data_to_save.push(check_button_settings_show_text_view.get_active().to_string()); + data_to_save.push(check_button_settings_show_text_view.is_active().to_string()); //// Hide/Show hard linked files, with same inodes data_to_save.push("--hide_hard_links:".to_string()); let check_button_settings_hide_hard_links = gui_data.settings.check_button_settings_hide_hard_links.clone(); - data_to_save.push(check_button_settings_hide_hard_links.get_active().to_string()); + data_to_save.push(check_button_settings_hide_hard_links.is_active().to_string()); //// Use cache system data_to_save.push("--use_cache:".to_string()); let check_button_settings_use_cache = gui_data.settings.check_button_settings_use_cache.clone(); - data_to_save.push(check_button_settings_use_cache.get_active().to_string()); + data_to_save.push(check_button_settings_use_cache.is_active().to_string()); //// Delete to trash data_to_save.push("--use_trash:".to_string()); let check_button_settings_use_trash = gui_data.settings.check_button_settings_use_trash.clone(); - data_to_save.push(check_button_settings_use_trash.get_active().to_string()); + data_to_save.push(check_button_settings_use_trash.is_active().to_string()); //// minimal cache file size data_to_save.push("--cache_minimal_file_size:".to_string()); let entry_settings_cache_file_minimal_size = gui_data.settings.entry_settings_cache_file_minimal_size.clone(); - data_to_save.push(entry_settings_cache_file_minimal_size.get_text().as_str().parse::().unwrap_or(2 * 1024 * 1024).to_string()); + data_to_save.push(entry_settings_cache_file_minimal_size.text().as_str().parse::().unwrap_or(2 * 1024 * 1024).to_string()); } // Creating/Opening config file @@ -433,11 +432,9 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) { let list_store = get_list_store(&tree_view_included_directories); list_store.clear(); - let col_indices = [0]; - for directory in included_directories { - let values: [&dyn ToValue; 1] = [&directory]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &directory)]; + list_store.set(&list_store.append(), &values); } //// Exclude Directories @@ -445,11 +442,9 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) { let list_store = get_list_store(&tree_view_excluded_directories); list_store.clear(); - let col_indices = [0]; - for directory in excluded_directories { - let values: [&dyn ToValue; 1] = [&directory]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &directory)]; + list_store.set(&list_store.append(), &values); } //// Excluded Items @@ -497,7 +492,6 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) { // Resetting included directories { - let col_indices = [0]; let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); let list_store = get_list_store(&tree_view_included_directories); list_store.clear(); @@ -517,19 +511,18 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) { } }; - let values: [&dyn ToValue; 1] = [¤t_dir]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, ¤t_dir)]; + list_store.set(&list_store.append(), &values); } // Resetting excluded directories { - let col_indices = [0]; let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone(); let list_store = get_list_store(&tree_view_excluded_directories); list_store.clear(); if cfg!(target_family = "unix") { for i in ["/proc", "/dev", "/sys", "/run", "/snap"].iter() { - let values: [&dyn ToValue; 1] = [&i]; - list_store.set(&list_store.append(), &col_indices, &values); + let values: [(u32, &dyn ToValue); 1] = [(0, &i)]; + list_store.set(&list_store.append(), &values); } } }