parent
6510173bb6
commit
b5f8d6b028
6
.github/workflows/linux.yml
vendored
6
.github/workflows/linux.yml
vendored
|
@ -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
|
||||
|
|
288
Cargo.lock
generated
288
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -10,4 +10,4 @@ repository = "https://github.com/qarmin/czkawka"
|
|||
|
||||
[dependencies]
|
||||
czkawka_core = { path = "../czkawka_core" }
|
||||
structopt = "0.3.18"
|
||||
structopt = "0.3.21"
|
|
@ -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 = []
|
||||
|
|
|
@ -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"]
|
||||
|
||||
|
|
|
@ -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::<gtk::Box>().unwrap().get_children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::Box>()
|
||||
.unwrap()
|
||||
.get_children()[0]
|
||||
let button_box = confirmation_dialog_delete.children()[0].clone().downcast::<gtk::Box>().unwrap().children()[0].clone().downcast::<gtk::Box>().unwrap().children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::ButtonBox>()
|
||||
.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::<gtk::Box>().unwrap();
|
||||
let internal_box = confirmation_dialog_delete.children()[0].clone().downcast::<gtk::Box>().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::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<gtk::Box>().unwrap().get_children()[0]
|
||||
let button_box = confirmation_dialog_group_delete.children()[0].clone().downcast::<gtk::Box>().unwrap().children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::Box>()
|
||||
.unwrap()
|
||||
.get_children()[0]
|
||||
.children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::ButtonBox>()
|
||||
.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::<gtk::Box>().unwrap();
|
||||
let internal_box = confirmation_dialog_group_delete.children()[0].clone().downcast::<gtk::Box>().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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::<String>().unwrap().unwrap();
|
||||
let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::<String>().unwrap();
|
||||
let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::<String>().unwrap().unwrap();
|
||||
let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::<String>().unwrap();
|
||||
let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::<String>().unwrap().unwrap();
|
||||
let file_name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_file_name).get::<String>().unwrap();
|
||||
let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::<String>().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<gtk::TreePath> = Vec::new();
|
||||
let mut current_iter = first_iter;
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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();
|
||||
}
|
||||
|
|
|
@ -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<TreePath> = Vec::new(); // List of hardlinked files without its root
|
||||
let mut vec_hardlink_data: Vec<HardlinkData> = 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<HardlinkData> = None;
|
||||
let mut current_selected_index = 0;
|
||||
loop {
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(¤t_iter, column_path).get::<String>().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::<String>().unwrap();
|
||||
let path = tree_model.value(¤t_iter, column_path).get::<String>().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<gtk::TreePath> = Vec::new();
|
||||
let mut current_iter = first_iter;
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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::<Vec<String>>();
|
||||
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::<u64>().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::<Vec<String>>();
|
||||
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::<u64>().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::<u64>().unwrap_or(1024);
|
||||
let minimal_file_size = entry_duplicate_minimal_size.text().as_str().parse::<u64>().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::<usize>().unwrap_or(50);
|
||||
let numbers_of_files_to_check = entry_big_files_number.text().as_str().parse::<usize>().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::<u64>().unwrap_or(1024 * 16);
|
||||
let minimal_file_size = entry_similar_images_minimal_size.text().as_str().parse::<u64>().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::<u64>().unwrap_or(1024);
|
||||
let minimal_file_size = entry_same_music_minimal_size.text().as_str().parse::<u64>().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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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<TreePath> = Vec::new(); // List of symlinked files without its root
|
||||
let mut vec_symlink_data: Vec<SymlinkData> = 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<SymlinkData> = None;
|
||||
let mut current_selected_index = 0;
|
||||
loop {
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(¤t_iter, column_path).get::<String>().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::<String>().unwrap();
|
||||
let path = tree_model.value(¤t_iter, column_path).get::<String>().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<gtk::TreePath> = Vec::new();
|
||||
let mut current_iter = first_iter;
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
if tree_model.value(¤t_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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::<String>().unwrap().unwrap() == HEADER_ROW_COLOR {
|
||||
if tree_model.value(&next_next_iter, column_color).get::<String>().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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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::<Vec<PathBuf>>();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::<String>().unwrap().unwrap().len();
|
||||
let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap();
|
||||
let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::<String>().unwrap().unwrap().len();
|
||||
let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap();
|
||||
let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::<String>().unwrap().unwrap().len();
|
||||
let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap();
|
||||
let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::<String>().unwrap().unwrap().len();
|
||||
let modification = tree_model.value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap();
|
||||
let current_file_length = tree_model.value(&tree_iter_all, column_file_name).get::<String>().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::<gtk::Box>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter, column_color).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let name = tree_model.get_value(&tree_iter, column_file_name).get::<String>().unwrap().unwrap();
|
||||
let path = tree_model.value(&tree_iter, column_path).get::<String>().unwrap();
|
||||
let name = tree_model.value(&tree_iter, column_file_name).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter, column_color).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let name = tree_model.get_value(&tree_iter, column_file_name).get::<String>().unwrap().unwrap();
|
||||
let path = tree_model.value(&tree_iter, column_path).get::<String>().unwrap();
|
||||
let name = tree_model.value(&tree_iter, column_file_name).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let dimensions_string = tree_model.get_value(&tree_iter_all, column_dimensions).get::<String>().unwrap().unwrap();
|
||||
let size_as_bytes = tree_model.value(&tree_iter_all, column_size_as_bytes).get::<u64>().unwrap();
|
||||
let dimensions_string = tree_model.value(&tree_iter_all, column_dimensions).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_iter_all, column_color).get::<String>().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::<u64>().unwrap().unwrap();
|
||||
let dimensions_string = tree_model.get_value(&tree_iter_all, column_dimensions).get::<String>().unwrap().unwrap();
|
||||
let size_as_bytes = tree_model.value(&tree_iter_all, column_size_as_bytes).get::<u64>().unwrap();
|
||||
let dimensions_string = tree_model.value(&tree_iter_all, column_dimensions).get::<String>().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,
|
||||
|
|
|
@ -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<broken_files::ProgressData>,
|
||||
) {
|
||||
let main_context = glib::MainContext::default();
|
||||
let _guard = main_context.acquire().unwrap();
|
||||
|
||||
{
|
||||
// Duplicate Files
|
||||
|
|
|
@ -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::<gtk::Box>().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::<gtk::Box>().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());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::<String>().unwrap().unwrap();
|
||||
let name = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_name).get::<String>().unwrap();
|
||||
let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), column_path).get::<String>().unwrap();
|
||||
|
||||
match opening_mode {
|
||||
OpenMode::OnlyPath => {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()];
|
||||
|
|
|
@ -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<RefCell<_>> = 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
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -124,14 +124,14 @@ pub fn get_string_from_list_store(tree_view: >k::TreeView) -> Vec<String> {
|
|||
|
||||
let mut string_vector: Vec<String> = 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::<String>().unwrap().unwrap());
|
||||
string_vector.push(list_store.value(&tree_iter, 0).get::<String>().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::<String>().unwrap().unwrap();
|
||||
// let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsDuplicates::Path as i32).get::<String>().unwrap().unwrap();
|
||||
// let modification = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(),ColumnsDuplicates::Modification as i32).get::<String>().unwrap().unwrap();
|
||||
let color = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), ColumnsDuplicates::Color as i32).get::<String>().unwrap().unwrap();
|
||||
// let name = tree_model.value(&tree_model.iter(tree_path).unwrap(),ColumnsDuplicates::Name as i32).get::<String>().unwrap();
|
||||
// let path = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsDuplicates::Path as i32).get::<String>().unwrap();
|
||||
// let modification = tree_model.value(&tree_model.iter(tree_path).unwrap(),ColumnsDuplicates::Modification as i32).get::<String>().unwrap();
|
||||
let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsDuplicates::Color as i32).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsSameMusic::Color as i32).get::<String>().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::<String>().unwrap().unwrap();
|
||||
let color = tree_model.value(&tree_model.iter(tree_path).unwrap(), ColumnsSimilarImages::Color as i32).get::<String>().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::<gtk::ListStore>().unwrap()
|
||||
tree_view.model().unwrap().downcast::<gtk::ListStore>().unwrap()
|
||||
}
|
||||
pub fn get_dialog_box_child(dialog: >k::Dialog) -> gtk::Box {
|
||||
dialog.get_children()[0].clone().downcast::<gtk::Box>().unwrap()
|
||||
dialog.children()[0].clone().downcast::<gtk::Box>().unwrap()
|
||||
}
|
||||
|
||||
pub fn change_dimension_to_krotka(dimensions: String) -> (u64, u64) {
|
||||
|
|
|
@ -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::<String>().unwrap().unwrap();
|
||||
let name = tree_model.get_value(&tree_model.get_iter(&tree_path).unwrap(), ColumnsSimilarImages::Name as i32).get::<String>().unwrap().unwrap();
|
||||
let path = tree_model.value(&tree_model.iter(&tree_path).unwrap(), ColumnsSimilarImages::Path as i32).get::<String>().unwrap();
|
||||
let name = tree_model.value(&tree_model.iter(&tree_path).unwrap(), ColumnsSimilarImages::Name as i32).get::<String>().unwrap();
|
||||
|
||||
let file_name = format!("{}/{}", path, name);
|
||||
let file_name = file_name.as_str();
|
||||
|
|
|
@ -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::<String>().unwrap().unwrap());
|
||||
data_to_save.push(list_store.value(&iter, ColumnsDirectory::Path as i32).get::<String>().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::<String>().unwrap().unwrap());
|
||||
data_to_save.push(list_store.value(&iter, ColumnsDirectory::Path as i32).get::<String>().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::<u64>().unwrap_or(2 * 1024 * 1024).to_string());
|
||||
data_to_save.push(entry_settings_cache_file_minimal_size.text().as_str().parse::<u64>().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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue