From cf94ab918ebb3dd489e88708872c8f3f4ad50edd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= <41945903+qarmin@users.noreply.github.com> Date: Tue, 31 May 2022 17:52:55 +0200 Subject: [PATCH] Reformat code with Intelij tool (#741) --- .github/workflows/mac.yml | 2 +- .github/workflows/windows.yml.disabled | 2 +- Changelog.md | 18 +- README.md | 8 +- czkawka_cli/src/commands.rs | 2 +- czkawka_cli/src/main.rs | 1 + czkawka_core/src/bad_extensions.rs | 3 +- czkawka_core/src/big_file.rs | 2 +- czkawka_core/src/broken_files.rs | 14 +- czkawka_core/src/common.rs | 9 +- czkawka_core/src/common_dir_traversal.rs | 5 +- czkawka_core/src/duplicate.rs | 3 +- czkawka_core/src/empty_files.rs | 2 +- czkawka_core/src/invalid_symlinks.rs | 2 +- czkawka_core/src/localizer_core.rs | 1 + czkawka_core/src/same_music.rs | 8 +- czkawka_core/src/similar_images.rs | 41 +-- czkawka_core/src/similar_videos.rs | 8 +- czkawka_core/src/temporary.rs | 2 +- czkawka_gui/src/compute_results.rs | 4 +- .../connect_things/connect_button_compare.rs | 33 +- .../connect_things/connect_button_delete.rs | 13 +- .../connect_things/connect_button_hardlink.rs | 14 +- .../src/connect_things/connect_button_move.rs | 1 - .../src/connect_things/connect_button_save.rs | 2 +- .../src/connect_things/connect_button_stop.rs | 2 +- .../connect_things/connect_progress_window.rs | 10 +- .../connect_selection_of_directories.rs | 2 +- .../src/connect_things/connect_settings.rs | 2 +- czkawka_gui/src/create_tree_view.rs | 262 +++++++------- czkawka_gui/src/gui_structs/gui_about.rs | 8 +- .../src/gui_structs/gui_bottom_buttons.rs | 2 +- .../src/gui_structs/gui_compare_images.rs | 14 +- czkawka_gui/src/gui_structs/gui_data.rs | 4 +- .../src/gui_structs/gui_main_notebook.rs | 328 +++++++++--------- .../src/gui_structs/gui_progress_dialog.rs | 2 +- czkawka_gui/src/gui_structs/gui_settings.rs | 4 +- .../src/gui_structs/gui_upper_notebook.rs | 24 +- czkawka_gui/src/help_combo_box.rs | 2 + czkawka_gui/src/help_functions.rs | 55 +-- czkawka_gui/src/initialize_gui.rs | 7 +- czkawka_gui/src/main.rs | 22 +- czkawka_gui/src/opening_selecting_records.rs | 4 +- czkawka_gui/src/saving_loading.rs | 10 +- czkawka_gui/ui/settings.ui | 2 +- instructions/Instruction.md | 24 +- misc/check_results.py | 17 +- misc/translation_test.py | 47 --- 48 files changed, 508 insertions(+), 546 deletions(-) delete mode 100644 misc/translation_test.py diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index f9ea063..0f2a666 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -69,7 +69,7 @@ jobs: - name: Install Homebrew run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - - name: Override link[WORKAROUND] # Looks that this is a bug with current homebrew or Github CI + - name: Override link[WORKAROUND] # Looks that this is a bug with current homebrew or GitHub CI run: rm '/usr/local/bin/2to3' - name: Install GTK4 diff --git a/.github/workflows/windows.yml.disabled b/.github/workflows/windows.yml.disabled index 0c91e1f..cd150e6 100644 --- a/.github/workflows/windows.yml.disabled +++ b/.github/workflows/windows.yml.disabled @@ -56,7 +56,7 @@ jobs: # Duplicate finder checks included and excluded directories # Others are just check delete files number - # Windows build have some elements changed like powershell before wget and unzip, python instead python3, rm -r instead rm -r and one (at the top) additional test which check size of characyers + # Windows build have some elements changed like powershell before wget and unzip, python instead python3, rm -r instead rm -r and one (at the top) additional test which check size of characters - name: test run: | powershell wget https://github.com/qarmin/czkawka/releases/download/1.1.0/TestSuite.zip -O TestSuite.zip diff --git a/Changelog.md b/Changelog.md index c8c6d1d..81e1291 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,7 +3,7 @@ - Resize preview with window - [#466](https://github.com/qarmin/czkawka/pull/466) - Fix removing only one item from list view - [#466](https://github.com/qarmin/czkawka/pull/466) - Fix showing help command in duplicate CLI mode - [#720](https://github.com/qarmin/czkawka/pull/720) -- Fix freeze when not choosing any tag in similiar music mode - [TODO]() +- Fix freeze when not choosing any tag in similar music mode - [TODO]() - Read more tags from music files - [#705](https://github.com/qarmin/czkawka/pull/705) - Improve checking for invalid extensions - [#705](https://github.com/qarmin/czkawka/pull/705) - Support for finding invalid PDF files - [#705](https://github.com/qarmin/czkawka/pull/705) @@ -38,7 +38,7 @@ - Change minimal supported OS to Ubuntu 20.04(needed by GTK) - [#468](https://github.com/qarmin/czkawka/pull/468) - Increased performance by avoiding creating unnecessary image previews - [#468](https://github.com/qarmin/czkawka/pull/468) - Improved performance due caching hash of broken/not supported images/videos = [#471](https://github.com/qarmin/czkawka/pull/471) -- Option to not remove cache from non existent files(e.g. from unplugged pendrive) - [#472](https://github.com/qarmin/czkawka/pull/472) +- Option to not remove cache from non-existent files(e.g. from unplugged pendrive) - [#472](https://github.com/qarmin/czkawka/pull/472) - Add multiple tooltips with helpful messages - [#472](https://github.com/qarmin/czkawka/pull/472) - Allow caching prehash - [#477](https://github.com/qarmin/czkawka/pull/477) - Improve custom selecting of records(allows to use Rust regex) - [#489](https://github.com/qarmin/czkawka/pull/478) @@ -63,7 +63,7 @@ - Add additional info to printed errors [#446](https://github.com/qarmin/czkawka/pull/446) - Add support for multiple image filters, hashes and sizes in similar images tool [#447](https://github.com/qarmin/czkawka/pull/447), [#448](https://github.com/qarmin/czkawka/pull/448) - Button to move files/folders to provided location [#449](https://github.com/qarmin/czkawka/pull/449) -- Add non clickable button to fix white theme [#450](https://github.com/qarmin/czkawka/pull/450) +- Add non-clickable button to fix white theme [#450](https://github.com/qarmin/czkawka/pull/450) - Fixed freeze when opening in same thread file/folder [#448](https://github.com/qarmin/czkawka/pull/448) - Tool to check performance of different image filters and hash types and sizes [#447](https://github.com/qarmin/czkawka/pull/447) - Add scheduled CI and pin it to support Rust 1.53.0 [7bb](https://github.com/qarmin/czkawka/commit/7bbdf742739a513b80d0cc06ba61dfafec976b23), [#431](https://github.com/qarmin/czkawka/pull/431) @@ -123,7 +123,7 @@ - Add support for CRC32 and XXH3 hash - [#243](https://github.com/qarmin/czkawka/pull/243) - Add delete method to replace duplicate files with hard links - [#236](https://github.com/qarmin/czkawka/pull/236) - Add checking for broken music opt-in - [#249](https://github.com/qarmin/czkawka/pull/249) -- Allow to save to files similar images results - [10156ccfd3](https://github.com/qarmin/czkawka/commit/10156ccfd3ba880d26d4bbad1e025b0050d7753b) +- Allow to save to file similar images results - [10156ccfd3](https://github.com/qarmin/czkawka/commit/10156ccfd3ba880d26d4bbad1e025b0050d7753b) - Keep original file if replacing duplicate with hardlink fails - [#256](https://github.com/qarmin/czkawka/pull/256) - Fix Windows theme - [#265](https://github.com/qarmin/czkawka/pull/265) - Windows taskbar progress support - [#264](https://github.com/qarmin/czkawka/pull/264) @@ -169,7 +169,7 @@ This version is only needed to test flatpak build - Add support for delete button - [#159](https://github.com/qarmin/czkawka/pull/159) - Allow to select multiple entries in File Chooser - [#154](https://github.com/qarmin/czkawka/pull/154) - Add cache support for similar images - [#139](https://github.com/qarmin/czkawka/pull/139) -- Add selecting images with it's size - [#138](https://github.com/qarmin/czkawka/pull/138) +- Add selecting images with its size - [#138](https://github.com/qarmin/czkawka/pull/138) - Modernize popovers code and simplify later changes - [#137](https://github.com/qarmin/czkawka/pull/137) ## Version 2.0.0 - 23.12.2020r @@ -213,7 +213,7 @@ This version is only needed to test flatpak build ## Version 1.3.0 - 02.11.2020r - Appimage support - [#77](https://github.com/qarmin/czkawka/pull/77) -- Removed warnings about non existend excluded directories - [#79](https://github.com/qarmin/czkawka/pull/79) +- Removed warnings about non-existed excluded directories - [#79](https://github.com/qarmin/czkawka/pull/79) - Updated README - [8ec](https://github.com/qarmin/czkawka/commit/8ecde0fc9adb3e6cedf432c4ba749e698b645a7a) - Added pre hash support(speedup for searching big duplicates) - [#83](https://github.com/qarmin/czkawka/pull/83) - Support for searching duplicates by file name - [#84](https://github.com/qarmin/czkawka/pull/84) @@ -247,7 +247,7 @@ This version is only needed to test flatpak build ## Version 1.0.1 - 06.10.2020r - Replaced default argument parser with StructOpt [#37](https://github.com/qarmin/czkawka/pull/37) -- Added all(except MacOS GTK build) builds to CI where can be freely downloaded [#41](https://github.com/qarmin/czkawka/pull/41) [#39](https://github.com/qarmin/czkawka/pull/39) +- Added all(except macOS GTK build) builds to CI where can be freely downloaded [#41](https://github.com/qarmin/czkawka/pull/41) [#39](https://github.com/qarmin/czkawka/pull/39) - App can be downloaded also from Arch AUR and Cargo [#36](https://github.com/qarmin/czkawka/pull/36) - Fixed crash with invalid file modification date [#33](https://github.com/qarmin/czkawka/issues/33) - Upper tabs can hide and show when this is necessary [#38](https://github.com/qarmin/czkawka/pull/38) @@ -298,11 +298,11 @@ This version is only needed to test flatpak build - Basic search in GTK - Cleaned core from println - Core functions doesn't use now process::exit(everything is done with help of messages/errors/warnings) -- Added support for non recursive search +- Added support for non-recursive search - Improved finding number and size of duplicated files - Saving results to file - Print how much data was read by duplicate finder(debug only) -- Added Github CI +- Added GitHub CI - Only debug build prints debug information's - Clean code - Add basic idea config to misc folder diff --git a/README.md b/README.md index 46bbbfb..1981558 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ **Czkawka** (_tch•kav•ka_ (IPA: [ʈ͡ʂkafka]), "hiccup" in Polish) is a simple, fast and free app to remove unnecessary files from your computer. ## UNSTABLE WARNING -**Currently master branch of this repository contains unstable GTK 4 port, so multiple regression, broken features etc. are expected.** +**Currently, master branch of this repository contains unstable GTK 4 port, so multiple regression, broken features etc. are expected.** **You can use old stable version built with GTK 3 - [4.1.0](https://github.com/qarmin/czkawka/releases/tag/4.1.0) or compile app from git before GTK 4 PR merge.** @@ -50,7 +50,7 @@ If you want to try and develop Czkawka or just use the latest available feature, Since Czkawka is written in Rust and it aims to be a faster alternative to FSlint or DupeGuru which are written in Python, we need to compare the speed of these tools. -I tested it on a 256 GB SSD and a i7-4770 CPU. +I tested it on a 256 GB SSD and an i7-4770 CPU. I prepared a disk and performed a test without any folder exceptions and with disabled ignoring of hard links. The disk contained 363 215 files, took 221,8 GB and had 62093 duplicate files in 31790 groups which occupied 4,1 GB. @@ -135,7 +135,7 @@ There are many similar applications to Czkawka on the Internet, which do some th ### CLI Due to limited time, the biggest emphasis is on the GUI version so if you are looking for really good and feature-packed console apps, then take a look at these: - [Fclones](https://github.com/pkolaczk/fclones) - One of the fastest tools to find duplicates; it is written also in Rust -- [Rmlint](https://github.com/sahib/rmlint) - Really good console interface and also is feature packed +- [Rmlint](https://github.com/sahib/rmlint) - Nice console interface and also is feature packed - [RdFind](https://github.com/pauldreik/rdfind) - Fast, but written in C++ ¯\\\_(ツ)\_/¯ ## Contributions @@ -185,7 +185,7 @@ Big thanks to Pádraig Brady, creator of fantastic FSlint, because without his w Thanks also to all the people who create patches for this program, make it available on other systems, create videos, articles about it etc. -Also I really appreciate work of people that create crates on which Czkawka is based and for that I try to report bugs to make it even better. +Also, I really appreciate work of people that create crates on which Czkawka is based and for that I try to report bugs to make it even better. ## Donations If you are using the app, I would appreciate a donation for its further development, which can be done [here](https://github.com/sponsors/qarmin). diff --git a/czkawka_cli/src/commands.rs b/czkawka_cli/src/commands.rs index 926dc9d..03ca87b 100644 --- a/czkawka_cli/src/commands.rs +++ b/czkawka_cli/src/commands.rs @@ -302,7 +302,7 @@ pub struct NotRecursive { #[cfg(target_family = "unix")] #[derive(Debug, StructOpt)] pub struct ExcludeOtherFilesystems { - #[structopt(short = "X", long, help = "Exclude files on other filesystmes")] + #[structopt(short = "X", long, help = "Exclude files on other filesystems")] pub exclude_other_filesystems: bool, } diff --git a/czkawka_cli/src/main.rs b/czkawka_cli/src/main.rs index ed28727..79b3125 100644 --- a/czkawka_cli/src/main.rs +++ b/czkawka_cli/src/main.rs @@ -24,6 +24,7 @@ use czkawka_core::{ mod commands; +//noinspection ALL fn main() { let command = Commands::from_args(); diff --git a/czkawka_core/src/bad_extensions.rs b/czkawka_core/src/bad_extensions.rs index 73c7d8a..fea0251 100644 --- a/czkawka_core/src/bad_extensions.rs +++ b/czkawka_core/src/bad_extensions.rs @@ -104,7 +104,7 @@ static WORKAROUNDS: &[(&str, &str)] = &[ ("xml", "xba"), // Libreoffice ("xml", "xcd"), // Libreoffice files ("zip", "apk"), // Android apk - ("zip", "cbr"), // Komiksy + ("zip", "cbr"), // Comics ("zip", "dat"), // Multiple - python, brave ("zip", "doc"), // Word ("zip", "docx"), // Word @@ -132,6 +132,7 @@ pub struct BadFileEntry { pub current_extension: String, pub proper_extensions: String, } + /// Info struck with helpful information's about results #[derive(Default)] pub struct Info { diff --git a/czkawka_core/src/big_file.rs b/czkawka_core/src/big_file.rs index eace775..64ee481 100644 --- a/czkawka_core/src/big_file.rs +++ b/czkawka_core/src/big_file.rs @@ -403,7 +403,7 @@ impl DebugPrint for BigFile { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Number of files to check - {:?}", self.number_of_files_to_check); println!("-----------------------------------------"); } diff --git a/czkawka_core/src/broken_files.rs b/czkawka_core/src/broken_files.rs index 25d8b82..069300b 100644 --- a/czkawka_core/src/broken_files.rs +++ b/czkawka_core/src/broken_files.rs @@ -453,16 +453,16 @@ impl BrokenFiles { Some(Some(file_entry_clone)) } } - TypeOfFile::ArchiveZip => match fs::File::open(&file_entry.path) { + TypeOfFile::ArchiveZip => match File::open(&file_entry.path) { Ok(file) => { if let Err(e) = zip::ZipArchive::new(file) { file_entry.error_string = e.to_string(); } Some(Some(file_entry)) - }, + } Err(_inspected) => Some(None) }, - TypeOfFile::Audio => match fs::File::open(&file_entry.path) { + TypeOfFile::Audio => match File::open(&file_entry.path) { Ok(file) => { let mut file_entry_clone = file_entry.clone(); @@ -481,7 +481,7 @@ impl BrokenFiles { file_entry_clone.error_string = "Audio crashes due parsing, please report bug here - https://github.com/qarmin/audio_checker/issues".to_string(); Some(Some(file_entry_clone)) } - }, + } Err(_inspected) => Some(None), }, @@ -502,7 +502,7 @@ impl BrokenFiles { if let Err(e) = pdf::file::File::from_data(content) { file_entry.error_string = e.to_string(); let error = unpack_pdf_error(e); - if let pdf::PdfError::InvalidPassword = error { + if let PdfError::InvalidPassword = error { return Some(None); } } @@ -515,7 +515,7 @@ impl BrokenFiles { file_entry_clone.error_string = "PDF-rs library crashed when opening pdf, and if it is not reported, please report bug here - https://github.com/pdf-rs/pdf".to_string(); Some(Some(file_entry_clone)) } - }, + } Err(_inspected) => Some(None) } } @@ -615,7 +615,7 @@ impl DebugPrint for BrokenFiles { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Delete Method - {:?}", self.delete_method); println!("-----------------------------------------"); } diff --git a/czkawka_core/src/common.rs b/czkawka_core/src/common.rs index b13fe0e..b7d8854 100644 --- a/czkawka_core/src/common.rs +++ b/czkawka_core/src/common.rs @@ -1,6 +1,3 @@ -use directories_next::ProjectDirs; -use image::{DynamicImage, ImageBuffer, Rgb}; -use imagepipe::{ImageSource, Pipeline}; use std::ffi::OsString; use std::fs; use std::fs::{File, OpenOptions}; @@ -8,6 +5,10 @@ use std::io::BufReader; use std::path::{Path, PathBuf}; use std::time::SystemTime; +use directories_next::ProjectDirs; +use image::{DynamicImage, ImageBuffer, Rgb}; +use imagepipe::{ImageSource, Pipeline}; + /// Class for common functions used across other class/functions pub const RAW_IMAGE_EXTENSIONS: &[&str] = &[ ".mrw", ".arw", ".srf", ".sr2", ".mef", ".orf", ".srw", ".erf", ".kdc", ".kdc", ".dcs", ".rw2", ".raf", ".dcr", ".dng", ".pef", ".crw", ".iiq", ".3fr", ".nrw", ".nef", ".mos", @@ -136,7 +137,7 @@ pub fn get_dynamic_image_from_raw_image(path: impl AsRef + std::fmt::Debug }; // println!("Properly hashed {:?}", path); - Some(image::DynamicImage::ImageRgb8(image)) + Some(DynamicImage::ImageRgb8(image)) } impl Common { diff --git a/czkawka_core/src/common_dir_traversal.rs b/czkawka_core/src/common_dir_traversal.rs index 7dd12fd..3b0ab33 100644 --- a/czkawka_core/src/common_dir_traversal.rs +++ b/czkawka_core/src/common_dir_traversal.rs @@ -7,10 +7,10 @@ use std::thread::sleep; use std::time::{Duration, SystemTime, UNIX_EPOCH}; use std::{fs, thread}; -use crate::common::LOOP_DURATION; use crossbeam_channel::Receiver; use rayon::prelude::*; +use crate::common::LOOP_DURATION; use crate::common_directory::Directories; use crate::common_extensions::Extensions; use crate::common_items::ExcludedItems; @@ -72,7 +72,8 @@ pub(crate) enum FolderEmptiness { /// Struct assigned to each checked folder with parent path(used to ignore parent if children are not empty) and flag which shows if folder is empty #[derive(Clone)] pub struct FolderEntry { - pub(crate) parent_path: Option, // Usable only when finding + pub(crate) parent_path: Option, + // Usable only when finding pub(crate) is_empty: FolderEmptiness, pub modified_date: u64, } diff --git a/czkawka_core/src/duplicate.rs b/czkawka_core/src/duplicate.rs index 76372c2..33edac9 100644 --- a/czkawka_core/src/duplicate.rs +++ b/czkawka_core/src/duplicate.rs @@ -992,7 +992,7 @@ impl DebugPrint for DuplicateFinder { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Minimum file size - {:?}", self.minimal_file_size); println!("Checking Method - {:?}", self.check_method); println!("Delete Method - {:?}", self.delete_method); @@ -1306,6 +1306,7 @@ pub fn save_hashes_to_file(hashmap: &BTreeMap, text_messages: .push(flc!("core_saving_to_cache", generate_translation_hashmap(vec![("number", how_much.to_string())]))); } } + pub fn load_hashes_from_file(text_messages: &mut Messages, delete_outdated_cache: bool, type_of_hash: &HashType, is_prehash: bool) -> Option>> { if let Some(((file_handler, cache_file), (_json_file, _json_name))) = open_cache_folder(&get_file_hash_name(type_of_hash, is_prehash), false, false, &mut text_messages.warnings) diff --git a/czkawka_core/src/empty_files.rs b/czkawka_core/src/empty_files.rs index c0f0202..a4fb59b 100644 --- a/czkawka_core/src/empty_files.rs +++ b/czkawka_core/src/empty_files.rs @@ -203,7 +203,7 @@ impl DebugPrint for EmptyFiles { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Delete Method - {:?}", self.delete_method); println!("-----------------------------------------"); } diff --git a/czkawka_core/src/invalid_symlinks.rs b/czkawka_core/src/invalid_symlinks.rs index 90c2a2f..691459f 100644 --- a/czkawka_core/src/invalid_symlinks.rs +++ b/czkawka_core/src/invalid_symlinks.rs @@ -199,7 +199,7 @@ impl DebugPrint for InvalidSymlinks { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Delete Method - {:?}", self.delete_method); println!("-----------------------------------------"); } diff --git a/czkawka_core/src/localizer_core.rs b/czkawka_core/src/localizer_core.rs index 86964bc..a098aaf 100644 --- a/czkawka_core/src/localizer_core.rs +++ b/czkawka_core/src/localizer_core.rs @@ -46,6 +46,7 @@ pub fn generate_translation_hashmap(vec: Vec<(&'static str, String)>) -> HashMap pub fn fnc_get_similarity_very_high() -> String { flc!("core_similarity_very_high") } + pub fn fnc_get_similarity_minimal() -> String { flc!("core_similarity_minimal") } diff --git a/czkawka_core/src/same_music.rs b/czkawka_core/src/same_music.rs index 971874b..1e581f8 100644 --- a/czkawka_core/src/same_music.rs +++ b/czkawka_core/src/same_music.rs @@ -708,10 +708,10 @@ impl SameMusic { self.duplicated_music_entries = old_duplicates; if self.use_reference_folders { - let mut similars_vector = Default::default(); - mem::swap(&mut self.duplicated_music_entries, &mut similars_vector); + let mut similar_vector = Default::default(); + mem::swap(&mut self.duplicated_music_entries, &mut similar_vector); let reference_directories = self.directories.reference_directories.clone(); - self.duplicated_music_entries_referenced = similars_vector + self.duplicated_music_entries_referenced = similar_vector .into_iter() .filter_map(|vec_file_entry| { let mut files_from_referenced_folders = Vec::new(); @@ -883,7 +883,7 @@ impl DebugPrint for SameMusic { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Delete Method - {:?}", self.delete_method); println!("-----------------------------------------"); } diff --git a/czkawka_core/src/similar_images.rs b/czkawka_core/src/similar_images.rs index 73ab738..7fb0551 100644 --- a/czkawka_core/src/similar_images.rs +++ b/czkawka_core/src/similar_images.rs @@ -562,16 +562,13 @@ impl SimilarImages { let image; - if !IMAGE_RS_SIMILAR_IMAGES_EXTENSIONS.iter().any(|e| file_name_lowercase.ends_with(e)){ - - image = match get_dynamic_image_from_raw_image(&file_entry.path){ + if !IMAGE_RS_SIMILAR_IMAGES_EXTENSIONS.iter().any(|e| file_name_lowercase.ends_with(e)) { + image = match get_dynamic_image_from_raw_image(&file_entry.path) { Some(t) => t, None => - return Some(Some((file_entry, Vec::new()))) + return Some(Some((file_entry, Vec::new()))) }; - } - else { - + } else { let result = panic::catch_unwind(|| { match image::open(file_entry.path.clone()) { Ok(t) => Ok(t), @@ -596,24 +593,22 @@ impl SimilarImages { } - let dimensions = image.dimensions(); + let dimensions = image.dimensions(); - file_entry.dimensions = format!("{}x{}", dimensions.0, dimensions.1); + file_entry.dimensions = format!("{}x{}", dimensions.0, dimensions.1); - let hasher_config = HasherConfig::new() - .hash_size(self.hash_size as u32, self.hash_size as u32) - .hash_alg(self.hash_alg) - .resize_filter(self.image_filter); - let hasher = hasher_config.to_hasher(); + let hasher_config = HasherConfig::new() + .hash_size(self.hash_size as u32, self.hash_size as u32) + .hash_alg(self.hash_alg) + .resize_filter(self.image_filter); + let hasher = hasher_config.to_hasher(); - let hash = hasher.hash_image(&image); - let buf: Vec = hash.as_bytes().to_vec(); - - file_entry.hash = buf.clone(); - - Some(Some((file_entry, buf))) + let hash = hasher.hash_image(&image); + let buf: Vec = hash.as_bytes().to_vec(); + file_entry.hash = buf.clone(); + Some(Some((file_entry, buf))) }) .while_some() .filter(|file_entry| file_entry.is_some()) @@ -887,10 +882,10 @@ impl SimilarImages { } if self.use_reference_folders { - let mut similars_vector = Default::default(); - mem::swap(&mut self.similar_vectors, &mut similars_vector); + let mut similar_vector = Default::default(); + mem::swap(&mut self.similar_vectors, &mut similar_vector); let reference_directories = self.directories.reference_directories.clone(); - self.similar_referenced_vectors = similars_vector + self.similar_referenced_vectors = similar_vector .into_iter() .filter_map(|vec_file_entry| { let mut files_from_referenced_folders = Vec::new(); diff --git a/czkawka_core/src/similar_videos.rs b/czkawka_core/src/similar_videos.rs index f299ec0..3cda46f 100644 --- a/czkawka_core/src/similar_videos.rs +++ b/czkawka_core/src/similar_videos.rs @@ -513,7 +513,7 @@ impl SimilarVideos { return { file_entry.error = format!("Failed to hash file, reason {}", e); Some(file_entry) - } + }; } }; @@ -590,10 +590,10 @@ impl SimilarVideos { self.similar_vectors = collected_similar_videos; if self.use_reference_folders { - let mut similars_vector = Default::default(); - mem::swap(&mut self.similar_vectors, &mut similars_vector); + let mut similar_vector = Default::default(); + mem::swap(&mut self.similar_vectors, &mut similar_vector); let reference_directories = self.directories.reference_directories.clone(); - self.similar_referenced_vectors = similars_vector + self.similar_referenced_vectors = similar_vector .into_iter() .filter_map(|vec_file_entry| { let mut files_from_referenced_folders = Vec::new(); diff --git a/czkawka_core/src/temporary.rs b/czkawka_core/src/temporary.rs index 61882a0..8a3bc14 100644 --- a/czkawka_core/src/temporary.rs +++ b/czkawka_core/src/temporary.rs @@ -377,7 +377,7 @@ impl DebugPrint for Temporary { println!("Excluded directories - {:?}", self.directories.excluded_directories); println!("Recursive search - {}", self.recursive_search); #[cfg(target_family = "unix")] - println!("Skip other filesystmes - {}", self.directories.exclude_other_filesystems()); + println!("Skip other filesystems - {}", self.directories.exclude_other_filesystems()); println!("Delete Method - {:?}", self.delete_method); println!("-----------------------------------------"); } diff --git a/czkawka_gui/src/compute_results.rs b/czkawka_gui/src/compute_results.rs index cdb8e09..d699d06 100644 --- a/czkawka_gui/src/compute_results.rs +++ b/czkawka_gui/src/compute_results.rs @@ -9,6 +9,7 @@ use gtk4::prelude::*; use humansize::{file_size_opts as options, FileSize}; use czkawka_core::common_dir_traversal::CheckingMethod; +use czkawka_core::localizer_core::generate_translation_hashmap; use czkawka_core::same_music::MusicSimilarity; use czkawka_core::similar_images; @@ -18,7 +19,6 @@ use crate::help_combo_box::IMAGES_HASH_SIZE_COMBO_BOX; use crate::help_functions::*; use crate::notebook_enums::*; use crate::opening_selecting_records::*; -use czkawka_core::localizer_core::generate_translation_hashmap; pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver) { let combo_box_image_hash_size = gui_data.main_notebook.combo_box_image_hash_size.clone(); @@ -1595,7 +1595,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< } } // Returning false here would close the receiver and have senders fail - glib::Continue(true) + Continue(true) }); } diff --git a/czkawka_gui/src/connect_things/connect_button_compare.rs b/czkawka_gui/src/connect_things/connect_button_compare.rs index dc79182..80552cc 100644 --- a/czkawka_gui/src/connect_things/connect_button_compare.rs +++ b/czkawka_gui/src/connect_things/connect_button_compare.rs @@ -1,10 +1,11 @@ -use crate::flg; -use gdk4::gdk_pixbuf::{InterpType, Pixbuf}; -use gtk4::prelude::*; -use gtk4::{CheckButton, Image, ListStore, Orientation, ScrolledWindow, TreeIter, TreeModel, TreePath, TreeSelection, Widget}; use std::cell::RefCell; use std::rc::Rc; +use gdk4::gdk_pixbuf::{InterpType, Pixbuf}; +use gtk4::prelude::*; +use gtk4::{CheckButton, Image, ListStore, Orientation, ScrolledWindow, TreeIter, TreeModel, TreePath, TreeSelection, Widget}; + +use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::{count_number_of_groups, get_all_children, get_full_name_from_path_name, get_max_file_name, resize_pixbuf_dimension, NotebookObject, NOTEBOOKS_INFOS}; use crate::localizer_core::generate_translation_hashmap; @@ -255,15 +256,15 @@ fn populate_groups_at_start( model: &TreeModel, shared_current_path: Rc>>, tree_path: TreePath, - image_compare_left: >k4::Image, - image_compare_right: >k4::Image, + image_compare_left: &Image, + image_compare_right: &Image, current_group: u32, group_number: u32, - check_button_left_preview_text: >k4::CheckButton, - check_button_right_preview_text: >k4::CheckButton, - scrolled_window_compare_choose_images: >k4::ScrolledWindow, + check_button_left_preview_text: &CheckButton, + check_button_right_preview_text: &CheckButton, + scrolled_window_compare_choose_images: &ScrolledWindow, label_group_info: >k4::Label, - shared_image_cache: Rc>>, + shared_image_cache: Rc>>, shared_using_for_preview: Rc, Option)>>, button_go_previous_compare_group: >k4::Button, button_go_next_compare_group: >k4::Button, @@ -338,13 +339,13 @@ fn populate_groups_at_start( } /// Generate images which will be used later as preview images without needing to open them again and again -fn generate_cache_for_results(vector_with_path: Vec<(String, String, gtk4::TreePath)>) -> Vec<(String, String, gtk4::Image, gtk4::Image, gtk4::TreePath)> { +fn generate_cache_for_results(vector_with_path: Vec<(String, String, TreePath)>) -> Vec<(String, String, Image, Image, TreePath)> { // TODO use here threads, // For now threads cannot be used because Image and TreeIter cannot be used in threads let mut cache_all_images = Vec::new(); for (full_path, name, tree_path) in vector_with_path { - let small_img = gtk4::Image::new(); - let big_img = gtk4::Image::new(); + let small_img = Image::new(); + let big_img = Image::new(); match Pixbuf::from_file(&full_path) { Ok(pixbuf) => @@ -382,7 +383,7 @@ fn generate_cache_for_results(vector_with_path: Vec<(String, String, gtk4::TreeP } /// Takes info about current items in groups like path -fn get_all_path(model: &TreeModel, current_path: &TreePath, column_header: i32, column_path: i32, column_name: i32) -> Vec<(String, String, gtk4::TreePath)> { +fn get_all_path(model: &TreeModel, current_path: &TreePath, column_header: i32, column_path: i32, column_name: i32) -> Vec<(String, String, TreePath)> { let used_iter = model.iter(current_path).unwrap(); assert!(model.get::(&used_iter, column_header)); @@ -426,7 +427,7 @@ fn get_all_path(model: &TreeModel, current_path: &TreePath, column_header: i32, } /// Moves iterator to previous/next header -fn move_iter(model: >k4::TreeModel, tree_path: &TreePath, column_header: i32, go_next: bool) -> TreePath { +fn move_iter(model: &TreeModel, tree_path: &TreePath, column_header: i32, go_next: bool) -> TreePath { let tree_iter = model.iter(tree_path).unwrap(); assert!(model.get::(&tree_iter, column_header)); @@ -466,7 +467,7 @@ fn populate_similar_scrolled_view( image_compare_left: &Image, image_compare_right: &Image, shared_using_for_preview: Rc, Option)>>, - shared_image_cache: Rc>>, + shared_image_cache: Rc>>, check_button_left_preview_text: &CheckButton, check_button_right_preview_text: &CheckButton, model: &TreeModel, diff --git a/czkawka_gui/src/connect_things/connect_button_delete.rs b/czkawka_gui/src/connect_things/connect_button_delete.rs index dce2ec5..5f48578 100644 --- a/czkawka_gui/src/connect_things/connect_button_delete.rs +++ b/czkawka_gui/src/connect_things/connect_button_delete.rs @@ -6,7 +6,6 @@ use gtk4::prelude::*; use gtk4::{Align, CheckButton, Dialog, Orientation, ResponseType, TextView}; use crate::flg; - use crate::gui_structs::gui_data::GuiData; use crate::help_functions::*; use crate::localizer_core::generate_translation_hashmap; @@ -115,7 +114,7 @@ pub async fn delete_things(gui_data: GuiData) { } pub async fn check_if_can_delete_files( - check_button_settings_confirm_deletion: >k4::CheckButton, + check_button_settings_confirm_deletion: &CheckButton, window_main: >k4::Window, number_of_selected_items: u64, number_of_selected_groups: u64, @@ -140,7 +139,7 @@ pub async fn check_if_can_delete_files( } fn create_dialog_ask_for_deletion(window_main: >k4::Window, number_of_selected_items: u64, number_of_selected_groups: u64) -> (Dialog, CheckButton) { - let dialog = gtk4::Dialog::builder().title(&flg!("delete_title_dialog")).transient_for(window_main).modal(true).build(); + let dialog = Dialog::builder().title(&flg!("delete_title_dialog")).transient_for(window_main).modal(true).build(); let button_ok = dialog.add_button(&flg!("general_ok_button"), ResponseType::Ok); dialog.add_button(&flg!("general_close_button"), ResponseType::Cancel); @@ -157,7 +156,7 @@ fn create_dialog_ask_for_deletion(window_main: >k4::Window, number_of_selected generate_translation_hashmap(vec![("items", number_of_selected_items.to_string()), ("groups", number_of_selected_groups.to_string())]) ))), }; - let check_button: gtk4::CheckButton = gtk4::CheckButton::with_label(&flg!("dialogs_ask_next_time")); + let check_button: CheckButton = CheckButton::with_label(&flg!("dialogs_ask_next_time")); check_button.set_active(true); check_button.set_halign(Align::Center); @@ -177,7 +176,7 @@ fn create_dialog_ask_for_deletion(window_main: >k4::Window, number_of_selected } fn create_dialog_group_deletion(window_main: >k4::Window) -> (Dialog, CheckButton) { - let dialog = gtk4::Dialog::builder() + let dialog = Dialog::builder() .title(&flg!("delete_all_files_in_group_title")) .transient_for(window_main) .modal(true) @@ -187,7 +186,7 @@ fn create_dialog_group_deletion(window_main: >k4::Window) -> (Dialog, CheckBut let label: gtk4::Label = gtk4::Label::new(Some(&flg!("delete_all_files_in_group_label1"))); let label2: gtk4::Label = gtk4::Label::new(Some(&flg!("delete_all_files_in_group_label2"))); - let check_button: gtk4::CheckButton = gtk4::CheckButton::with_label(&flg!("dialogs_ask_next_time")); + let check_button: CheckButton = CheckButton::with_label(&flg!("dialogs_ask_next_time")); check_button.set_active(true); check_button.set_halign(Align::Center); @@ -209,7 +208,7 @@ pub async fn check_if_deleting_all_files_in_group( column_selection: i32, column_path: i32, window_main: >k4::Window, - check_button_settings_confirm_group_deletion: >k4::CheckButton, + check_button_settings_confirm_group_deletion: &CheckButton, ) -> bool { let model = get_list_store(tree_view); diff --git a/czkawka_gui/src/connect_things/connect_button_hardlink.rs b/czkawka_gui/src/connect_things/connect_button_hardlink.rs index bcb4a3d..70f2d92 100644 --- a/czkawka_gui/src/connect_things/connect_button_hardlink.rs +++ b/czkawka_gui/src/connect_things/connect_button_hardlink.rs @@ -4,9 +4,9 @@ use std::path::PathBuf; use gtk4::prelude::*; use gtk4::{Align, CheckButton, Dialog, Orientation, ResponseType, TextView, TreeIter, TreePath}; -use crate::flg; use czkawka_core::duplicate::make_hard_link; +use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::*; use crate::localizer_core::generate_translation_hashmap; @@ -261,7 +261,7 @@ fn hardlink_symlink( } fn create_dialog_non_group(window_main: >k4::Window) -> Dialog { - let dialog = gtk4::Dialog::builder() + let dialog = Dialog::builder() .title(&flg!("hard_sym_invalid_selection_title_dialog")) .transient_for(window_main) .modal(true) @@ -349,7 +349,7 @@ pub async fn check_if_anything_is_selected_async(tree_view: >k4::TreeView, col false } -pub async fn check_if_can_link_files(check_button_settings_confirm_link: >k4::CheckButton, window_main: >k4::Window) -> bool { +pub async fn check_if_can_link_files(check_button_settings_confirm_link: &CheckButton, window_main: >k4::Window) -> bool { if check_button_settings_confirm_link.is_active() { let (confirmation_dialog_link, check_button) = create_dialog_ask_for_linking(window_main); @@ -370,16 +370,12 @@ pub async fn check_if_can_link_files(check_button_settings_confirm_link: >k4:: } fn create_dialog_ask_for_linking(window_main: >k4::Window) -> (Dialog, CheckButton) { - let dialog = gtk4::Dialog::builder() - .title(&flg!("hard_sym_link_title_dialog")) - .transient_for(window_main) - .modal(true) - .build(); + let dialog = Dialog::builder().title(&flg!("hard_sym_link_title_dialog")).transient_for(window_main).modal(true).build(); let button_ok = dialog.add_button(&flg!("general_ok_button"), ResponseType::Ok); dialog.add_button(&flg!("general_close_button"), ResponseType::Cancel); let label: gtk4::Label = gtk4::Label::new(Some(&flg!("hard_sym_link_label"))); - let check_button: gtk4::CheckButton = gtk4::CheckButton::with_label(&flg!("dialogs_ask_next_time")); + let check_button: CheckButton = CheckButton::with_label(&flg!("dialogs_ask_next_time")); check_button.set_active(true); check_button.set_halign(Align::Center); diff --git a/czkawka_gui/src/connect_things/connect_button_move.rs b/czkawka_gui/src/connect_things/connect_button_move.rs index 1ca11d4..9fd596d 100644 --- a/czkawka_gui/src/connect_things/connect_button_move.rs +++ b/czkawka_gui/src/connect_things/connect_button_move.rs @@ -4,7 +4,6 @@ use gtk4::prelude::*; use gtk4::{ResponseType, TreePath}; use crate::flg; - use crate::gui_structs::gui_data::GuiData; use crate::help_functions::*; use crate::localizer_core::generate_translation_hashmap; diff --git a/czkawka_gui/src/connect_things/connect_button_save.rs b/czkawka_gui/src/connect_things/connect_button_save.rs index d3cb506..fa9b13f 100644 --- a/czkawka_gui/src/connect_things/connect_button_save.rs +++ b/czkawka_gui/src/connect_things/connect_button_save.rs @@ -5,9 +5,9 @@ use std::rc::Rc; use gtk4::prelude::*; use gtk4::{Button, Entry}; -use crate::flg; use czkawka_core::common_traits::SaveResults; +use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::BottomButtonsEnum; use crate::localizer_core::generate_translation_hashmap; diff --git a/czkawka_gui/src/connect_things/connect_button_stop.rs b/czkawka_gui/src/connect_things/connect_button_stop.rs index 1d77956..d40d597 100644 --- a/czkawka_gui/src/connect_things/connect_button_stop.rs +++ b/czkawka_gui/src/connect_things/connect_button_stop.rs @@ -1,9 +1,9 @@ use crossbeam_channel::{Sender, TrySendError}; +use gtk4::prelude::*; use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::KEY_ENTER; -use gtk4::prelude::*; fn send_stop_message(stop_sender: &Sender<()>) { stop_sender diff --git a/czkawka_gui/src/connect_things/connect_progress_window.rs b/czkawka_gui/src/connect_things/connect_progress_window.rs index e953a0d..7821db0 100644 --- a/czkawka_gui/src/connect_things/connect_progress_window.rs +++ b/czkawka_gui/src/connect_things/connect_progress_window.rs @@ -13,15 +13,15 @@ use crate::taskbar_progress::tbp_flags::TBPF_INDETERMINATE; #[allow(clippy::too_many_arguments)] pub fn connect_progress_window( gui_data: &GuiData, - mut futures_receiver_duplicate_files: UnboundedReceiver, - mut futures_receiver_empty_files: UnboundedReceiver, - mut futures_receiver_empty_folder: UnboundedReceiver, + mut futures_receiver_duplicate_files: UnboundedReceiver, + mut futures_receiver_empty_files: UnboundedReceiver, + mut futures_receiver_empty_folder: UnboundedReceiver, mut futures_receiver_big_files: UnboundedReceiver, - mut futures_receiver_same_music: UnboundedReceiver, + mut futures_receiver_same_music: UnboundedReceiver, mut futures_receiver_similar_images: UnboundedReceiver, mut futures_receiver_similar_videos: UnboundedReceiver, mut futures_receiver_temporary: UnboundedReceiver, - mut futures_receiver_invalid_symlinks: UnboundedReceiver, + mut futures_receiver_invalid_symlinks: UnboundedReceiver, mut futures_receiver_broken_files: UnboundedReceiver, mut futures_receiver_bad_extensions: UnboundedReceiver, ) { diff --git a/czkawka_gui/src/connect_things/connect_selection_of_directories.rs b/czkawka_gui/src/connect_things/connect_selection_of_directories.rs index b0e7d5b..2dff914 100644 --- a/czkawka_gui/src/connect_things/connect_selection_of_directories.rs +++ b/czkawka_gui/src/connect_things/connect_selection_of_directories.rs @@ -3,10 +3,10 @@ use std::path::PathBuf; use gtk4::prelude::*; use gtk4::{Orientation, ResponseType, TreeView, Window}; -use crate::flg; #[cfg(target_family = "windows")] use czkawka_core::common::Common; +use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::{get_list_store, ColumnsExcludedDirectory, ColumnsIncludedDirectory}; diff --git a/czkawka_gui/src/connect_things/connect_settings.rs b/czkawka_gui/src/connect_things/connect_settings.rs index 3e4b021..fb7f821 100644 --- a/czkawka_gui/src/connect_things/connect_settings.rs +++ b/czkawka_gui/src/connect_things/connect_settings.rs @@ -8,10 +8,10 @@ use gtk4::{ResponseType, Window}; use image::imageops::FilterType; use image_hasher::HashAlg; -use crate::flg; use czkawka_core::common_messages::Messages; use czkawka_core::duplicate::HashType; +use crate::flg; use crate::gui_structs::gui_data::GuiData; use crate::help_functions::get_dialog_box_child; use crate::saving_loading::{load_configuration, reset_configuration, save_configuration}; diff --git a/czkawka_gui/src/create_tree_view.rs b/czkawka_gui/src/create_tree_view.rs index 2f34bd4..f093bdd 100644 --- a/czkawka_gui/src/create_tree_view.rs +++ b/czkawka_gui/src/create_tree_view.rs @@ -1,21 +1,21 @@ use gtk4::prelude::*; -use gtk4::TreeViewColumn; +use gtk4::{CellRendererText, CellRendererToggle, TreeView, TreeViewColumn}; use crate::help_functions::*; // When adding new column do not forget to update translations -pub fn create_tree_view_included_directories(tree_view: >k4::TreeView) { +pub fn create_tree_view_included_directories(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.set_title("Folders to check"); column.pack_start(&renderer, true); column.add_attribute(&renderer, "text", ColumnsIncludedDirectory::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsIncludedDirectory::ReferenceButton as i32); @@ -23,16 +23,16 @@ pub fn create_tree_view_included_directories(tree_view: >k4::TreeView) { model.set_value(&iter, ColumnsIncludedDirectory::ReferenceButton as u32, &fixed.to_value()); }); renderer.set_activatable(true); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.set_title("Reference folder"); column.pack_start(&renderer, true); column.add_attribute(&renderer, "active", ColumnsIncludedDirectory::ReferenceButton as i32); tree_view.append_column(&column); } -pub fn create_tree_view_excluded_directories(tree_view: >k4::TreeView) { - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); +pub fn create_tree_view_excluded_directories(tree_view: &TreeView) { + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.add_attribute(&renderer, "text", ColumnsExcludedDirectory::Path as i32); tree_view.append_column(&column); @@ -40,17 +40,17 @@ pub fn create_tree_view_excluded_directories(tree_view: >k4::TreeView) { tree_view.set_headers_visible(false); } -pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { +pub fn create_tree_view_duplicates(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsDuplicates::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsDuplicates::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); @@ -59,8 +59,8 @@ pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "cell-background", ColumnsDuplicates::Color as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Size"); column.set_resizable(true); @@ -70,8 +70,8 @@ pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsDuplicates::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -81,8 +81,8 @@ pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsDuplicates::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -92,8 +92,8 @@ pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsDuplicates::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -106,25 +106,25 @@ pub fn create_tree_view_duplicates(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_empty_folders(tree_view: >k4::TreeView) { +pub fn create_tree_view_empty_folders(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsEmptyFolders::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsEmptyFolders::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsEmptyFolders::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Folder Name"); column.set_resizable(true); @@ -133,8 +133,8 @@ pub fn create_tree_view_empty_folders(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsEmptyFolders::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -143,8 +143,8 @@ pub fn create_tree_view_empty_folders(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsEmptyFolders::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -156,25 +156,25 @@ pub fn create_tree_view_empty_folders(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_big_files(tree_view: >k4::TreeView) { +pub fn create_tree_view_big_files(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsBigFiles::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsBigFiles::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsBigFiles::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Size"); column.set_resizable(true); @@ -183,8 +183,8 @@ pub fn create_tree_view_big_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBigFiles::SizeAsBytes as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -193,8 +193,8 @@ pub fn create_tree_view_big_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBigFiles::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -203,8 +203,8 @@ pub fn create_tree_view_big_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBigFiles::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -216,25 +216,25 @@ pub fn create_tree_view_big_files(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_temporary_files(tree_view: >k4::TreeView) { +pub fn create_tree_view_temporary_files(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsTemporaryFiles::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsTemporaryFiles::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsTemporaryFiles::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -243,8 +243,8 @@ pub fn create_tree_view_temporary_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsTemporaryFiles::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -253,8 +253,8 @@ pub fn create_tree_view_temporary_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsTemporaryFiles::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -266,25 +266,25 @@ pub fn create_tree_view_temporary_files(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_empty_files(tree_view: >k4::TreeView) { +pub fn create_tree_view_empty_files(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsEmptyFiles::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsEmptyFiles::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsEmptyFiles::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -293,8 +293,8 @@ pub fn create_tree_view_empty_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsEmptyFiles::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -303,8 +303,8 @@ pub fn create_tree_view_empty_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsEmptyFiles::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -316,17 +316,17 @@ pub fn create_tree_view_empty_files(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { +pub fn create_tree_view_similar_images(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsSimilarImages::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsSimilarImages::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); @@ -335,8 +335,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "cell-background", ColumnsSimilarImages::Color as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Similarity"); column.set_resizable(true); @@ -346,8 +346,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarImages::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Size"); column.set_resizable(true); @@ -357,8 +357,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarImages::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Dimensions"); column.set_resizable(true); @@ -368,8 +368,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarImages::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -379,8 +379,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarImages::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -390,8 +390,8 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarImages::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -404,17 +404,17 @@ pub fn create_tree_view_similar_images(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { +pub fn create_tree_view_similar_videos(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsSimilarVideos::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsSimilarVideos::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); @@ -423,8 +423,8 @@ pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "cell-background", ColumnsSimilarVideos::Color as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Size"); column.set_resizable(true); @@ -434,8 +434,8 @@ pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarVideos::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -445,8 +445,8 @@ pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarVideos::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -456,8 +456,8 @@ pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSimilarVideos::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -470,17 +470,17 @@ pub fn create_tree_view_similar_videos(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { +pub fn create_tree_view_same_music(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsSameMusic::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsSameMusic::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); @@ -489,8 +489,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "cell-background", ColumnsSameMusic::Color as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Size"); column.set_resizable(true); @@ -500,8 +500,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("File Name"); column.set_resizable(true); @@ -511,8 +511,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Title"); column.set_resizable(true); @@ -522,8 +522,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Artist"); column.set_resizable(true); @@ -533,8 +533,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Year"); column.set_resizable(true); @@ -544,8 +544,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Bitrate"); column.set_resizable(true); @@ -555,8 +555,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Length"); column.set_resizable(true); @@ -566,8 +566,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Genre"); column.set_resizable(true); @@ -577,8 +577,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -588,8 +588,8 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { column.add_attribute(&renderer, "foreground", ColumnsSameMusic::TextColor as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -602,25 +602,25 @@ pub fn create_tree_view_same_music(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { +pub fn create_tree_view_invalid_symlinks(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsInvalidSymlinks::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsInvalidSymlinks::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsInvalidSymlinks::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Symlink File Name"); column.set_resizable(true); @@ -629,8 +629,8 @@ pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsInvalidSymlinks::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Symlink Folder"); column.set_resizable(true); @@ -639,8 +639,8 @@ pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsInvalidSymlinks::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Destination Path"); column.set_resizable(true); @@ -649,8 +649,8 @@ pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsInvalidSymlinks::DestinationPath as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Type of Error"); column.set_resizable(true); @@ -659,8 +659,8 @@ pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsInvalidSymlinks::TypeOfError as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); @@ -672,25 +672,25 @@ pub fn create_tree_view_invalid_symlinks(tree_view: >k4::TreeView) { tree_view.set_vexpand(true); } -pub fn create_tree_view_broken_files(tree_view: >k4::TreeView) { +pub fn create_tree_view_broken_files(tree_view: &TreeView) { let model = get_list_store(tree_view); - let renderer = gtk4::CellRendererToggle::new(); + let renderer = CellRendererToggle::new(); renderer.connect_toggled(move |_r, path| { let iter = model.iter(&path).unwrap(); let mut fixed = model.get::(&iter, ColumnsBrokenFiles::SelectionButton as i32); fixed = !fixed; model.set_value(&iter, ColumnsBrokenFiles::SelectionButton as u32, &fixed.to_value()); }); - let column = gtk4::TreeViewColumn::new(); + let column = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_resizable(false); column.set_fixed_width(30); column.add_attribute(&renderer, "active", ColumnsBrokenFiles::SelectionButton as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Name"); column.set_resizable(true); @@ -699,8 +699,8 @@ pub fn create_tree_view_broken_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBrokenFiles::Name as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Path"); column.set_resizable(true); @@ -709,8 +709,8 @@ pub fn create_tree_view_broken_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBrokenFiles::Path as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("ErrorType"); column.set_resizable(true); @@ -719,8 +719,8 @@ pub fn create_tree_view_broken_files(tree_view: >k4::TreeView) { column.set_sort_column_id(ColumnsBrokenFiles::ErrorType as i32); tree_view.append_column(&column); - let renderer = gtk4::CellRendererText::new(); - let column: gtk4::TreeViewColumn = TreeViewColumn::new(); + let renderer = CellRendererText::new(); + let column: TreeViewColumn = TreeViewColumn::new(); column.pack_start(&renderer, true); column.set_title("Modification Date"); column.set_resizable(true); diff --git a/czkawka_gui/src/gui_structs/gui_about.rs b/czkawka_gui/src/gui_structs/gui_about.rs index 3b15002..a1cfa95 100644 --- a/czkawka_gui/src/gui_structs/gui_about.rs +++ b/czkawka_gui/src/gui_structs/gui_about.rs @@ -9,10 +9,10 @@ use crate::help_functions::get_all_boxes_from_widget; pub struct GuiAbout { pub about_dialog: gtk4::AboutDialog, - pub button_repository: gtk4::Button, - pub button_donation: gtk4::Button, - pub button_instruction: gtk4::Button, - pub button_translation: gtk4::Button, + pub button_repository: Button, + pub button_donation: Button, + pub button_instruction: Button, + pub button_translation: Button, } impl GuiAbout { diff --git a/czkawka_gui/src/gui_structs/gui_bottom_buttons.rs b/czkawka_gui/src/gui_structs/gui_bottom_buttons.rs index dc248e1..02d78f0 100644 --- a/czkawka_gui/src/gui_structs/gui_bottom_buttons.rs +++ b/czkawka_gui/src/gui_structs/gui_bottom_buttons.rs @@ -23,7 +23,7 @@ pub struct GuiBottomButtons { pub buttons_names: [BottomButtonsEnum; 8], pub buttons_array: [Widget; 8], - pub gc_buttons_select: gtk4::GestureClick, + pub gc_buttons_select: GestureClick, } impl GuiBottomButtons { diff --git a/czkawka_gui/src/gui_structs/gui_compare_images.rs b/czkawka_gui/src/gui_structs/gui_compare_images.rs index fea5fef..3cc31c0 100644 --- a/czkawka_gui/src/gui_structs/gui_compare_images.rs +++ b/czkawka_gui/src/gui_structs/gui_compare_images.rs @@ -1,10 +1,12 @@ -use crate::help_functions::set_icon_of_button; -use crate::{flg, CZK_ICON_LEFT, CZK_ICON_RIGHT}; -use gtk4::prelude::*; -use gtk4::{Builder, TreePath}; use std::cell::RefCell; use std::rc::Rc; +use gtk4::prelude::*; +use gtk4::{Builder, TreePath}; + +use crate::help_functions::set_icon_of_button; +use crate::{flg, CZK_ICON_LEFT, CZK_ICON_RIGHT}; + #[derive(Clone)] pub struct GuiCompareImages { pub window_compare: gtk4::Window, @@ -25,8 +27,8 @@ pub struct GuiCompareImages { pub shared_numbers_of_groups: Rc>, pub shared_current_of_groups: Rc>, pub shared_current_path: Rc>>, - pub shared_image_cache: Rc>>, - pub shared_using_for_preview: Rc, Option)>>, + pub shared_image_cache: Rc>>, + pub shared_using_for_preview: Rc, Option)>>, } impl GuiCompareImages { diff --git a/czkawka_gui/src/gui_structs/gui_data.rs b/czkawka_gui/src/gui_structs/gui_data.rs index c4dc0b9..8c304f2 100644 --- a/czkawka_gui/src/gui_structs/gui_data.rs +++ b/czkawka_gui/src/gui_structs/gui_data.rs @@ -3,12 +3,11 @@ use std::collections::HashMap; use std::rc::Rc; use crossbeam_channel::bounded; -use czkawka_core::bad_extensions::BadExtensions; use gdk4::gdk_pixbuf::Pixbuf; use gtk4::prelude::*; use gtk4::Builder; -use crate::flg; +use czkawka_core::bad_extensions::BadExtensions; use czkawka_core::big_file::BigFile; use czkawka_core::broken_files::BrokenFiles; use czkawka_core::duplicate::DuplicateFinder; @@ -20,6 +19,7 @@ use czkawka_core::similar_images::SimilarImages; use czkawka_core::similar_videos::SimilarVideos; use czkawka_core::temporary::Temporary; +use crate::flg; use crate::gui_structs::gui_about::GuiAbout; use crate::gui_structs::gui_bottom_buttons::GuiBottomButtons; use crate::gui_structs::gui_compare_images::GuiCompareImages; diff --git a/czkawka_gui/src/gui_structs/gui_main_notebook.rs b/czkawka_gui/src/gui_structs/gui_main_notebook.rs index 1bd9b94..5cf10b7 100644 --- a/czkawka_gui/src/gui_structs/gui_main_notebook.rs +++ b/czkawka_gui/src/gui_structs/gui_main_notebook.rs @@ -1,8 +1,8 @@ +use gtk4::prelude::*; +use gtk4::{Builder, CheckButton, ComboBoxText, Entry, EventControllerKey, GestureClick, Image, Label, Notebook, Scale, ScrolledWindow, TreeView, Widget}; + use czkawka_core::common_dir_traversal::CheckingMethod; use czkawka_core::localizer_core::{fnc_get_similarity_minimal, fnc_get_similarity_very_high}; -use gtk4::prelude::*; -use gtk4::{EventControllerKey, GestureClick, TreeView}; - use czkawka_core::similar_images::{get_string_from_similarity, Similarity, SIMILAR_VALUES}; use crate::flg; @@ -12,230 +12,230 @@ use crate::notebook_enums::{NotebookMainEnum, NUMBER_OF_NOTEBOOK_MAIN_TABS}; #[derive(Clone)] pub struct GuiMainNotebook { - pub notebook_main: gtk4::Notebook, + pub notebook_main: Notebook, - pub scrolled_window_duplicate_finder: gtk4::ScrolledWindow, - pub scrolled_window_empty_folder_finder: gtk4::ScrolledWindow, - pub scrolled_window_empty_files_finder: gtk4::ScrolledWindow, - pub scrolled_window_temporary_files_finder: gtk4::ScrolledWindow, - pub scrolled_window_big_files_finder: gtk4::ScrolledWindow, - pub scrolled_window_similar_images_finder: gtk4::ScrolledWindow, - pub scrolled_window_similar_videos_finder: gtk4::ScrolledWindow, - pub scrolled_window_same_music_finder: gtk4::ScrolledWindow, - pub scrolled_window_invalid_symlinks: gtk4::ScrolledWindow, - pub scrolled_window_broken_files: gtk4::ScrolledWindow, - pub scrolled_window_bad_extensions: gtk4::ScrolledWindow, + pub scrolled_window_duplicate_finder: ScrolledWindow, + pub scrolled_window_empty_folder_finder: ScrolledWindow, + pub scrolled_window_empty_files_finder: ScrolledWindow, + pub scrolled_window_temporary_files_finder: ScrolledWindow, + pub scrolled_window_big_files_finder: ScrolledWindow, + pub scrolled_window_similar_images_finder: ScrolledWindow, + pub scrolled_window_similar_videos_finder: ScrolledWindow, + pub scrolled_window_same_music_finder: ScrolledWindow, + pub scrolled_window_invalid_symlinks: ScrolledWindow, + pub scrolled_window_broken_files: ScrolledWindow, + pub scrolled_window_bad_extensions: ScrolledWindow, - pub tree_view_duplicate_finder: gtk4::TreeView, - pub tree_view_empty_folder_finder: gtk4::TreeView, - pub tree_view_empty_files_finder: gtk4::TreeView, - pub tree_view_temporary_files_finder: gtk4::TreeView, - pub tree_view_big_files_finder: gtk4::TreeView, - pub tree_view_similar_images_finder: gtk4::TreeView, - pub tree_view_similar_videos_finder: gtk4::TreeView, - pub tree_view_same_music_finder: gtk4::TreeView, - pub tree_view_invalid_symlinks: gtk4::TreeView, - pub tree_view_broken_files: gtk4::TreeView, - pub tree_view_bad_extensions: gtk4::TreeView, + pub tree_view_duplicate_finder: TreeView, + pub tree_view_empty_folder_finder: TreeView, + pub tree_view_empty_files_finder: TreeView, + pub tree_view_temporary_files_finder: TreeView, + pub tree_view_big_files_finder: TreeView, + pub tree_view_similar_images_finder: TreeView, + pub tree_view_similar_videos_finder: TreeView, + pub tree_view_same_music_finder: TreeView, + pub tree_view_invalid_symlinks: TreeView, + pub tree_view_broken_files: TreeView, + pub tree_view_bad_extensions: TreeView, - pub evk_tree_view_duplicate_finder: gtk4::EventControllerKey, - pub evk_tree_view_empty_folder_finder: gtk4::EventControllerKey, - pub evk_tree_view_empty_files_finder: gtk4::EventControllerKey, - pub evk_tree_view_temporary_files_finder: gtk4::EventControllerKey, - pub evk_tree_view_big_files_finder: gtk4::EventControllerKey, - pub evk_tree_view_similar_images_finder: gtk4::EventControllerKey, - pub evk_tree_view_similar_videos_finder: gtk4::EventControllerKey, - pub evk_tree_view_same_music_finder: gtk4::EventControllerKey, - pub evk_tree_view_invalid_symlinks: gtk4::EventControllerKey, - pub evk_tree_view_broken_files: gtk4::EventControllerKey, - pub evk_tree_view_bad_extensions: gtk4::EventControllerKey, + pub evk_tree_view_duplicate_finder: EventControllerKey, + pub evk_tree_view_empty_folder_finder: EventControllerKey, + pub evk_tree_view_empty_files_finder: EventControllerKey, + pub evk_tree_view_temporary_files_finder: EventControllerKey, + pub evk_tree_view_big_files_finder: EventControllerKey, + pub evk_tree_view_similar_images_finder: EventControllerKey, + pub evk_tree_view_similar_videos_finder: EventControllerKey, + pub evk_tree_view_same_music_finder: EventControllerKey, + pub evk_tree_view_invalid_symlinks: EventControllerKey, + pub evk_tree_view_broken_files: EventControllerKey, + pub evk_tree_view_bad_extensions: EventControllerKey, - pub gc_tree_view_duplicate_finder: gtk4::GestureClick, - pub gc_tree_view_empty_folder_finder: gtk4::GestureClick, - pub gc_tree_view_empty_files_finder: gtk4::GestureClick, - pub gc_tree_view_temporary_files_finder: gtk4::GestureClick, - pub gc_tree_view_big_files_finder: gtk4::GestureClick, - pub gc_tree_view_similar_images_finder: gtk4::GestureClick, - pub gc_tree_view_similar_videos_finder: gtk4::GestureClick, - pub gc_tree_view_same_music_finder: gtk4::GestureClick, - pub gc_tree_view_invalid_symlinks: gtk4::GestureClick, - pub gc_tree_view_broken_files: gtk4::GestureClick, - pub gc_tree_view_bad_extensions: gtk4::GestureClick, + pub gc_tree_view_duplicate_finder: GestureClick, + pub gc_tree_view_empty_folder_finder: GestureClick, + pub gc_tree_view_empty_files_finder: GestureClick, + pub gc_tree_view_temporary_files_finder: GestureClick, + pub gc_tree_view_big_files_finder: GestureClick, + pub gc_tree_view_similar_images_finder: GestureClick, + pub gc_tree_view_similar_videos_finder: GestureClick, + pub gc_tree_view_same_music_finder: GestureClick, + pub gc_tree_view_invalid_symlinks: GestureClick, + pub gc_tree_view_broken_files: GestureClick, + pub gc_tree_view_bad_extensions: GestureClick, // General // Duplicate - pub combo_box_duplicate_check_method: gtk4::ComboBoxText, - pub combo_box_duplicate_hash_type: gtk4::ComboBoxText, - pub label_duplicate_check_method: gtk4::Label, - pub label_duplicate_hash_type: gtk4::Label, - pub check_button_duplicate_case_sensitive_name: gtk4::CheckButton, + pub combo_box_duplicate_check_method: ComboBoxText, + pub combo_box_duplicate_hash_type: ComboBoxText, + pub label_duplicate_check_method: Label, + pub label_duplicate_hash_type: Label, + pub check_button_duplicate_case_sensitive_name: CheckButton, - pub image_preview_duplicates: gtk4::Image, + pub image_preview_duplicates: Image, // Big file - pub label_big_shown_files: gtk4::Label, - pub entry_big_files_number: gtk4::Entry, + pub label_big_shown_files: Label, + pub entry_big_files_number: Entry, // Similar Images - pub scale_similarity_similar_images: gtk4::Scale, + pub scale_similarity_similar_images: Scale, - pub label_image_resize_algorithm: gtk4::Label, - pub label_image_hash_type: gtk4::Label, - pub label_image_hash_size: gtk4::Label, + pub label_image_resize_algorithm: Label, + pub label_image_hash_type: Label, + pub label_image_hash_size: Label, - pub combo_box_image_resize_algorithm: gtk4::ComboBoxText, - pub combo_box_image_hash_algorithm: gtk4::ComboBoxText, - pub combo_box_image_hash_size: gtk4::ComboBoxText, + pub combo_box_image_resize_algorithm: ComboBoxText, + pub combo_box_image_hash_algorithm: ComboBoxText, + pub combo_box_image_hash_size: ComboBoxText, - pub check_button_image_ignore_same_size: gtk4::CheckButton, - pub check_button_video_ignore_same_size: gtk4::CheckButton, + pub check_button_image_ignore_same_size: CheckButton, + pub check_button_video_ignore_same_size: CheckButton, - pub check_button_image_fast_compare: gtk4::CheckButton, + pub check_button_image_fast_compare: CheckButton, - pub label_image_similarity: gtk4::Label, - pub label_image_similarity_max: gtk4::Label, + pub label_image_similarity: Label, + pub label_image_similarity_max: Label, - pub image_preview_similar_images: gtk4::Image, - pub label_similar_images_minimal_similarity: gtk4::Label, + pub image_preview_similar_images: Image, + pub label_similar_images_minimal_similarity: Label, // Video - pub label_video_similarity: gtk4::Label, - pub label_video_similarity_min: gtk4::Label, - pub label_video_similarity_max: gtk4::Label, + pub label_video_similarity: Label, + pub label_video_similarity_min: Label, + pub label_video_similarity_max: Label, - pub scale_similarity_similar_videos: gtk4::Scale, + pub scale_similarity_similar_videos: Scale, // Music - pub check_button_music_title: gtk4::CheckButton, - pub check_button_music_artist: gtk4::CheckButton, - pub check_button_music_year: gtk4::CheckButton, - pub check_button_music_bitrate: gtk4::CheckButton, - pub check_button_music_genre: gtk4::CheckButton, - pub check_button_music_length: gtk4::CheckButton, - pub check_button_music_approximate_comparison: gtk4::CheckButton, + pub check_button_music_title: CheckButton, + pub check_button_music_artist: CheckButton, + pub check_button_music_year: CheckButton, + pub check_button_music_bitrate: CheckButton, + pub check_button_music_genre: CheckButton, + pub check_button_music_length: CheckButton, + pub check_button_music_approximate_comparison: CheckButton, } impl GuiMainNotebook { - pub fn create_from_builder(builder: >k4::Builder) -> Self { - let notebook_main: gtk4::Notebook = builder.object("notebook_main").unwrap(); + pub fn create_from_builder(builder: &Builder) -> Self { + let notebook_main: Notebook = builder.object("notebook_main").unwrap(); - let scrolled_window_duplicate_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_duplicate_finder").unwrap(); - let scrolled_window_empty_folder_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_empty_folder_finder").unwrap(); - let scrolled_window_empty_files_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_empty_files_finder").unwrap(); - let scrolled_window_temporary_files_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_temporary_files_finder").unwrap(); - let scrolled_window_big_files_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_big_files_finder").unwrap(); - let scrolled_window_similar_images_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_similar_images_finder").unwrap(); - let scrolled_window_similar_videos_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_similar_videos_finder").unwrap(); - let scrolled_window_same_music_finder: gtk4::ScrolledWindow = builder.object("scrolled_window_same_music_finder").unwrap(); - let scrolled_window_invalid_symlinks: gtk4::ScrolledWindow = builder.object("scrolled_window_invalid_symlinks").unwrap(); - let scrolled_window_broken_files: gtk4::ScrolledWindow = builder.object("scrolled_window_broken_files").unwrap(); - let scrolled_window_bad_extensions: gtk4::ScrolledWindow = builder.object("scrolled_window_bad_extensions").unwrap(); + let scrolled_window_duplicate_finder: ScrolledWindow = builder.object("scrolled_window_duplicate_finder").unwrap(); + let scrolled_window_empty_folder_finder: ScrolledWindow = builder.object("scrolled_window_empty_folder_finder").unwrap(); + let scrolled_window_empty_files_finder: ScrolledWindow = builder.object("scrolled_window_empty_files_finder").unwrap(); + let scrolled_window_temporary_files_finder: ScrolledWindow = builder.object("scrolled_window_temporary_files_finder").unwrap(); + let scrolled_window_big_files_finder: ScrolledWindow = builder.object("scrolled_window_big_files_finder").unwrap(); + let scrolled_window_similar_images_finder: ScrolledWindow = builder.object("scrolled_window_similar_images_finder").unwrap(); + let scrolled_window_similar_videos_finder: ScrolledWindow = builder.object("scrolled_window_similar_videos_finder").unwrap(); + let scrolled_window_same_music_finder: ScrolledWindow = builder.object("scrolled_window_same_music_finder").unwrap(); + let scrolled_window_invalid_symlinks: ScrolledWindow = builder.object("scrolled_window_invalid_symlinks").unwrap(); + let scrolled_window_broken_files: ScrolledWindow = builder.object("scrolled_window_broken_files").unwrap(); + let scrolled_window_bad_extensions: ScrolledWindow = builder.object("scrolled_window_bad_extensions").unwrap(); - let tree_view_duplicate_finder: gtk4::TreeView = TreeView::new(); + let tree_view_duplicate_finder: TreeView = TreeView::new(); tree_view_duplicate_finder.set_widget_name("PIERD"); - let tree_view_empty_folder_finder: gtk4::TreeView = TreeView::new(); - let tree_view_empty_files_finder: gtk4::TreeView = TreeView::new(); - let tree_view_temporary_files_finder: gtk4::TreeView = TreeView::new(); - let tree_view_big_files_finder: gtk4::TreeView = TreeView::new(); - let tree_view_similar_images_finder: gtk4::TreeView = TreeView::new(); - let tree_view_similar_videos_finder: gtk4::TreeView = TreeView::new(); - let tree_view_same_music_finder: gtk4::TreeView = TreeView::new(); - let tree_view_invalid_symlinks: gtk4::TreeView = TreeView::new(); - let tree_view_broken_files: gtk4::TreeView = TreeView::new(); - let tree_view_bad_extensions: gtk4::TreeView = TreeView::new(); + let tree_view_empty_folder_finder: TreeView = TreeView::new(); + let tree_view_empty_files_finder: TreeView = TreeView::new(); + let tree_view_temporary_files_finder: TreeView = TreeView::new(); + let tree_view_big_files_finder: TreeView = TreeView::new(); + let tree_view_similar_images_finder: TreeView = TreeView::new(); + let tree_view_similar_videos_finder: TreeView = TreeView::new(); + let tree_view_same_music_finder: TreeView = TreeView::new(); + let tree_view_invalid_symlinks: TreeView = TreeView::new(); + let tree_view_broken_files: TreeView = TreeView::new(); + let tree_view_bad_extensions: TreeView = TreeView::new(); - let evk_tree_view_duplicate_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_duplicate_finder: EventControllerKey = EventControllerKey::new(); tree_view_duplicate_finder.add_controller(&evk_tree_view_duplicate_finder); - let evk_tree_view_empty_folder_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_empty_folder_finder: EventControllerKey = EventControllerKey::new(); tree_view_empty_folder_finder.add_controller(&evk_tree_view_empty_folder_finder); - let evk_tree_view_empty_files_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_empty_files_finder: EventControllerKey = EventControllerKey::new(); tree_view_empty_files_finder.add_controller(&evk_tree_view_empty_files_finder); - let evk_tree_view_temporary_files_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_temporary_files_finder: EventControllerKey = EventControllerKey::new(); tree_view_temporary_files_finder.add_controller(&evk_tree_view_temporary_files_finder); - let evk_tree_view_big_files_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_big_files_finder: EventControllerKey = EventControllerKey::new(); tree_view_big_files_finder.add_controller(&evk_tree_view_big_files_finder); - let evk_tree_view_similar_images_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_similar_images_finder: EventControllerKey = EventControllerKey::new(); tree_view_similar_images_finder.add_controller(&evk_tree_view_similar_images_finder); - let evk_tree_view_similar_videos_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_similar_videos_finder: EventControllerKey = EventControllerKey::new(); tree_view_similar_videos_finder.add_controller(&evk_tree_view_similar_videos_finder); - let evk_tree_view_same_music_finder: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_same_music_finder: EventControllerKey = EventControllerKey::new(); tree_view_same_music_finder.add_controller(&evk_tree_view_same_music_finder); - let evk_tree_view_invalid_symlinks: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_invalid_symlinks: EventControllerKey = EventControllerKey::new(); tree_view_invalid_symlinks.add_controller(&evk_tree_view_invalid_symlinks); - let evk_tree_view_broken_files: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_broken_files: EventControllerKey = EventControllerKey::new(); tree_view_broken_files.add_controller(&evk_tree_view_broken_files); - let evk_tree_view_bad_extensions: gtk4::EventControllerKey = EventControllerKey::new(); + let evk_tree_view_bad_extensions: EventControllerKey = EventControllerKey::new(); tree_view_bad_extensions.add_controller(&evk_tree_view_bad_extensions); - let gc_tree_view_duplicate_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_duplicate_finder: GestureClick = GestureClick::new(); tree_view_duplicate_finder.add_controller(&gc_tree_view_duplicate_finder); - let gc_tree_view_empty_folder_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_empty_folder_finder: GestureClick = GestureClick::new(); tree_view_empty_folder_finder.add_controller(&gc_tree_view_empty_folder_finder); - let gc_tree_view_empty_files_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_empty_files_finder: GestureClick = GestureClick::new(); tree_view_empty_files_finder.add_controller(&gc_tree_view_empty_files_finder); - let gc_tree_view_temporary_files_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_temporary_files_finder: GestureClick = GestureClick::new(); tree_view_temporary_files_finder.add_controller(&gc_tree_view_temporary_files_finder); - let gc_tree_view_big_files_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_big_files_finder: GestureClick = GestureClick::new(); tree_view_big_files_finder.add_controller(&gc_tree_view_big_files_finder); - let gc_tree_view_similar_images_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_similar_images_finder: GestureClick = GestureClick::new(); tree_view_similar_images_finder.add_controller(&gc_tree_view_similar_images_finder); - let gc_tree_view_similar_videos_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_similar_videos_finder: GestureClick = GestureClick::new(); tree_view_similar_videos_finder.add_controller(&gc_tree_view_similar_videos_finder); - let gc_tree_view_same_music_finder: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_same_music_finder: GestureClick = GestureClick::new(); tree_view_same_music_finder.add_controller(&gc_tree_view_same_music_finder); - let gc_tree_view_invalid_symlinks: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_invalid_symlinks: GestureClick = GestureClick::new(); tree_view_invalid_symlinks.add_controller(&gc_tree_view_invalid_symlinks); - let gc_tree_view_broken_files: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_broken_files: GestureClick = GestureClick::new(); tree_view_broken_files.add_controller(&gc_tree_view_broken_files); - let gc_tree_view_bad_extensions: gtk4::GestureClick = GestureClick::new(); + let gc_tree_view_bad_extensions: GestureClick = GestureClick::new(); tree_view_bad_extensions.add_controller(&gc_tree_view_bad_extensions); - let combo_box_duplicate_check_method: gtk4::ComboBoxText = builder.object("combo_box_duplicate_check_method").unwrap(); - let combo_box_duplicate_hash_type: gtk4::ComboBoxText = builder.object("combo_box_duplicate_hash_type").unwrap(); + let combo_box_duplicate_check_method: ComboBoxText = builder.object("combo_box_duplicate_check_method").unwrap(); + let combo_box_duplicate_hash_type: ComboBoxText = builder.object("combo_box_duplicate_hash_type").unwrap(); - let entry_big_files_number: gtk4::Entry = builder.object("entry_big_files_number").unwrap(); + let entry_big_files_number: Entry = builder.object("entry_big_files_number").unwrap(); //// Check Buttons - let check_button_duplicate_case_sensitive_name: gtk4::CheckButton = builder.object("check_button_duplicate_case_sensitive_name").unwrap(); - let check_button_music_title: gtk4::CheckButton = builder.object("check_button_music_title").unwrap(); - let check_button_music_artist: gtk4::CheckButton = builder.object("check_button_music_artist").unwrap(); - let check_button_music_year: gtk4::CheckButton = builder.object("check_button_music_year").unwrap(); - let check_button_music_bitrate: gtk4::CheckButton = builder.object("check_button_music_bitrate").unwrap(); - let check_button_music_genre: gtk4::CheckButton = builder.object("check_button_music_genre").unwrap(); - let check_button_music_length: gtk4::CheckButton = builder.object("check_button_music_length").unwrap(); - let check_button_music_approximate_comparison: gtk4::CheckButton = builder.object("check_button_music_approximate_comparison").unwrap(); + let check_button_duplicate_case_sensitive_name: CheckButton = builder.object("check_button_duplicate_case_sensitive_name").unwrap(); + let check_button_music_title: CheckButton = builder.object("check_button_music_title").unwrap(); + let check_button_music_artist: CheckButton = builder.object("check_button_music_artist").unwrap(); + let check_button_music_year: CheckButton = builder.object("check_button_music_year").unwrap(); + let check_button_music_bitrate: CheckButton = builder.object("check_button_music_bitrate").unwrap(); + let check_button_music_genre: CheckButton = builder.object("check_button_music_genre").unwrap(); + let check_button_music_length: CheckButton = builder.object("check_button_music_length").unwrap(); + let check_button_music_approximate_comparison: CheckButton = builder.object("check_button_music_approximate_comparison").unwrap(); //// Radio Buttons - let scale_similarity_similar_images: gtk4::Scale = builder.object("scale_similarity_similar_images").unwrap(); - let scale_similarity_similar_videos: gtk4::Scale = builder.object("scale_similarity_similar_videos").unwrap(); + let scale_similarity_similar_images: Scale = builder.object("scale_similarity_similar_images").unwrap(); + let scale_similarity_similar_videos: Scale = builder.object("scale_similarity_similar_videos").unwrap(); - let check_button_image_fast_compare: gtk4::CheckButton = builder.object("check_button_image_fast_compare").unwrap(); + let check_button_image_fast_compare: CheckButton = builder.object("check_button_image_fast_compare").unwrap(); - let combo_box_image_resize_algorithm: gtk4::ComboBoxText = builder.object("combo_box_image_resize_algorithm").unwrap(); - let combo_box_image_hash_algorithm: gtk4::ComboBoxText = builder.object("combo_box_image_hash_algorithm").unwrap(); - let combo_box_image_hash_size: gtk4::ComboBoxText = builder.object("combo_box_image_hash_size").unwrap(); + let combo_box_image_resize_algorithm: ComboBoxText = builder.object("combo_box_image_resize_algorithm").unwrap(); + let combo_box_image_hash_algorithm: ComboBoxText = builder.object("combo_box_image_hash_algorithm").unwrap(); + let combo_box_image_hash_size: ComboBoxText = builder.object("combo_box_image_hash_size").unwrap(); - let check_button_image_ignore_same_size: gtk4::CheckButton = builder.object("check_button_image_ignore_same_size").unwrap(); - let check_button_video_ignore_same_size: gtk4::CheckButton = builder.object("check_button_video_ignore_same_size").unwrap(); + let check_button_image_ignore_same_size: CheckButton = builder.object("check_button_image_ignore_same_size").unwrap(); + let check_button_video_ignore_same_size: CheckButton = builder.object("check_button_video_ignore_same_size").unwrap(); - let label_similar_images_minimal_similarity: gtk4::Label = builder.object("label_similar_images_minimal_similarity").unwrap(); + let label_similar_images_minimal_similarity: Label = builder.object("label_similar_images_minimal_similarity").unwrap(); - let label_duplicate_check_method: gtk4::Label = builder.object("label_duplicate_check_method").unwrap(); - let label_duplicate_hash_type: gtk4::Label = builder.object("label_duplicate_hash_type").unwrap(); - let label_big_shown_files: gtk4::Label = builder.object("label_big_shown_files").unwrap(); - let label_image_resize_algorithm: gtk4::Label = builder.object("label_image_resize_algorithm").unwrap(); - let label_image_hash_type: gtk4::Label = builder.object("label_image_hash_type").unwrap(); - let label_image_hash_size: gtk4::Label = builder.object("label_image_hash_size").unwrap(); - let label_image_similarity: gtk4::Label = builder.object("label_image_similarity").unwrap(); - let label_image_similarity_max: gtk4::Label = builder.object("label_image_similarity_max").unwrap(); - let label_video_similarity: gtk4::Label = builder.object("label_video_similarity").unwrap(); - let label_video_similarity_min: gtk4::Label = builder.object("label_video_similarity_min").unwrap(); - let label_video_similarity_max: gtk4::Label = builder.object("label_video_similarity_max").unwrap(); + let label_duplicate_check_method: Label = builder.object("label_duplicate_check_method").unwrap(); + let label_duplicate_hash_type: Label = builder.object("label_duplicate_hash_type").unwrap(); + let label_big_shown_files: Label = builder.object("label_big_shown_files").unwrap(); + let label_image_resize_algorithm: Label = builder.object("label_image_resize_algorithm").unwrap(); + let label_image_hash_type: Label = builder.object("label_image_hash_type").unwrap(); + let label_image_hash_size: Label = builder.object("label_image_hash_size").unwrap(); + let label_image_similarity: Label = builder.object("label_image_similarity").unwrap(); + let label_image_similarity_max: Label = builder.object("label_image_similarity_max").unwrap(); + let label_video_similarity: Label = builder.object("label_video_similarity").unwrap(); + let label_video_similarity_min: Label = builder.object("label_video_similarity_min").unwrap(); + let label_video_similarity_max: Label = builder.object("label_video_similarity_max").unwrap(); - let image_preview_similar_images: gtk4::Image = builder.object("image_preview_similar_images").unwrap(); - let image_preview_duplicates: gtk4::Image = builder.object("image_preview_duplicates").unwrap(); + let image_preview_similar_images: Image = builder.object("image_preview_similar_images").unwrap(); + let image_preview_duplicates: Image = builder.object("image_preview_duplicates").unwrap(); Self { notebook_main, @@ -411,8 +411,8 @@ impl GuiMainNotebook { } } - let vec_children: Vec = get_all_children(&self.notebook_main); - let vec_children: Vec = get_all_children(&vec_children[1]); + let vec_children: Vec = get_all_children(&self.notebook_main); + let vec_children: Vec = get_all_children(&vec_children[1]); // Change name of main notebook tabs for (main_enum, fl_thing) in [ @@ -431,7 +431,7 @@ impl GuiMainNotebook { self.notebook_main .tab_label(&vec_children[main_enum]) .unwrap() - .downcast::() + .downcast::