Import split
This commit is contained in:
parent
308b245828
commit
110b0db74f
33 changed files with 117 additions and 100 deletions
|
@ -1,9 +1,10 @@
|
||||||
use log::info;
|
|
||||||
use std::collections::BTreeSet;
|
use std::collections::BTreeSet;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::process::Stdio;
|
use std::process::Stdio;
|
||||||
|
|
||||||
|
use log::info;
|
||||||
|
|
||||||
#[derive(Default, Clone, Debug)]
|
#[derive(Default, Clone, Debug)]
|
||||||
struct CollectedFiles {
|
struct CollectedFiles {
|
||||||
files: BTreeSet<String>,
|
files: BTreeSet<String>,
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
use std::collections::{BTreeMap, HashSet};
|
use std::collections::{BTreeMap, HashSet};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::atomic::Ordering;
|
use std::sync::atomic::Ordering;
|
||||||
use std::{fs, mem, panic};
|
use std::{fs, mem, panic};
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
|
|
||||||
|
use std::{fs, thread};
|
||||||
// I don't wanna fight with unused imports in this file, so simply ignore it to avoid too much complexity
|
// I don't wanna fight with unused imports in this file, so simply ignore it to avoid too much complexity
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
|
@ -8,7 +10,6 @@ use std::sync::atomic::{AtomicBool, AtomicUsize};
|
||||||
use std::sync::{atomic, Arc};
|
use std::sync::{atomic, Arc};
|
||||||
use std::thread::{sleep, JoinHandle};
|
use std::thread::{sleep, JoinHandle};
|
||||||
use std::time::{Duration, Instant, SystemTime};
|
use std::time::{Duration, Instant, SystemTime};
|
||||||
use std::{fs, thread};
|
|
||||||
|
|
||||||
#[cfg(feature = "heif")]
|
#[cfg(feature = "heif")]
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
@ -16,14 +17,12 @@ use crossbeam_channel::Sender;
|
||||||
use directories_next::ProjectDirs;
|
use directories_next::ProjectDirs;
|
||||||
use fun_time::fun_time;
|
use fun_time::fun_time;
|
||||||
use handsome_logger::{ColorChoice, ConfigBuilder, TerminalMode};
|
use handsome_logger::{ColorChoice, ConfigBuilder, TerminalMode};
|
||||||
use image::{DynamicImage, ImageBuffer, Rgb};
|
use image::{DynamicImage, ImageBuffer};
|
||||||
use imagepipe::{ImageSource, Pipeline};
|
|
||||||
#[cfg(feature = "heif")]
|
#[cfg(feature = "heif")]
|
||||||
use libheif_rs::{ColorSpace, HeifContext, RgbChroma};
|
use libheif_rs::{ColorSpace, HeifContext, RgbChroma};
|
||||||
#[cfg(feature = "libraw")]
|
#[cfg(feature = "libraw")]
|
||||||
use libraw::Processor;
|
use libraw::Processor;
|
||||||
use log::{debug, error, info, warn, LevelFilter, Record};
|
use log::{debug, error, info, warn, LevelFilter, Record};
|
||||||
use rawloader::RawLoader;
|
|
||||||
use symphonia::core::conv::IntoSample;
|
use symphonia::core::conv::IntoSample;
|
||||||
|
|
||||||
// #[cfg(feature = "heif")]
|
// #[cfg(feature = "heif")]
|
||||||
|
@ -612,10 +611,11 @@ mod test {
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use tempfile::tempdir;
|
use tempfile::tempdir;
|
||||||
|
|
||||||
use crate::common::{normalize_windows_path, regex_check, remove_folder_if_contains_only_empty_folders};
|
use crate::common::{normalize_windows_path, regex_check, remove_folder_if_contains_only_empty_folders};
|
||||||
use crate::common_items::{new_excluded_item, ExcludedItems};
|
use crate::common_items::new_excluded_item;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_remove_folder_if_contains_only_empty_folders() {
|
fn test_remove_folder_if_contains_only_empty_folders() {
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
use crate::common;
|
use std::collections::BTreeMap;
|
||||||
use crate::common_messages::Messages;
|
use std::io::{BufReader, BufWriter};
|
||||||
use crate::common_traits::ResultEntry;
|
|
||||||
use crate::duplicate::HashType;
|
|
||||||
use crate::similar_images::{convert_algorithm_to_string, convert_filters_to_string};
|
|
||||||
use fun_time::fun_time;
|
use fun_time::fun_time;
|
||||||
use image::imageops::FilterType;
|
use image::imageops::FilterType;
|
||||||
use image_hasher::HashAlg;
|
use image_hasher::HashAlg;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::BTreeMap;
|
|
||||||
use std::io::{BufReader, BufWriter};
|
use crate::common;
|
||||||
|
use crate::common_messages::Messages;
|
||||||
|
use crate::common_traits::ResultEntry;
|
||||||
|
use crate::duplicate::HashType;
|
||||||
|
use crate::similar_images::{convert_algorithm_to_string, convert_filters_to_string};
|
||||||
|
|
||||||
const CACHE_VERSION: &str = "70";
|
const CACHE_VERSION: &str = "70";
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::common::normalize_windows_path;
|
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
#[cfg(target_family = "unix")]
|
#[cfg(target_family = "unix")]
|
||||||
use std::{fs, os::unix::fs::MetadataExt};
|
use std::{fs, os::unix::fs::MetadataExt};
|
||||||
|
|
||||||
|
use crate::common::normalize_windows_path;
|
||||||
use crate::common_messages::Messages;
|
use crate::common_messages::Messages;
|
||||||
use crate::flc;
|
use crate::flc;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
use crate::common_messages::Messages;
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::fs::DirEntry;
|
use std::fs::DirEntry;
|
||||||
|
|
||||||
|
use crate::common_messages::Messages;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
pub struct Extensions {
|
pub struct Extensions {
|
||||||
file_extensions_hashset: HashSet<String>,
|
file_extensions_hashset: HashSet<String>,
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
#[cfg(not(target_family = "unix"))]
|
#[cfg(not(target_family = "unix"))]
|
||||||
use crate::common::normalize_windows_path;
|
use crate::common::normalize_windows_path;
|
||||||
use crate::common::regex_check;
|
use crate::common::regex_check;
|
||||||
use std::path::Path;
|
|
||||||
|
|
||||||
use crate::common_messages::Messages;
|
use crate::common_messages::Messages;
|
||||||
|
|
||||||
#[cfg(target_family = "unix")]
|
#[cfg(target_family = "unix")]
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
use fun_time::fun_time;
|
|
||||||
use serde::Serialize;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{BufWriter, Write};
|
use std::io::{BufWriter, Write};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use fun_time::fun_time;
|
||||||
|
use serde::Serialize;
|
||||||
|
|
||||||
pub trait DebugPrint {
|
pub trait DebugPrint {
|
||||||
fn debug_print(&self);
|
fn debug_print(&self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ impl DuplicateFinder {
|
||||||
ignore_hard_links: true,
|
ignore_hard_links: true,
|
||||||
hash_type: HashType::Blake3,
|
hash_type: HashType::Blake3,
|
||||||
use_prehash_cache: true,
|
use_prehash_cache: true,
|
||||||
minimal_cache_file_size: 1024 * 3256, // By default cache only >= 256 KB files
|
minimal_cache_file_size: 1024 * 256, // By default cache only >= 256 KB files
|
||||||
minimal_prehash_cache_file_size: 0,
|
minimal_prehash_cache_file_size: 0,
|
||||||
case_sensitive_name_comparison: false,
|
case_sensitive_name_comparison: false,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use crossbeam_channel::{Receiver, Sender};
|
use crossbeam_channel::{Receiver, Sender};
|
||||||
|
|
|
@ -5,12 +5,12 @@ use std::io::Write;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::atomic::Ordering;
|
use std::sync::atomic::Ordering;
|
||||||
|
|
||||||
use crate::common::{check_if_stop_received, prepare_thread_handler_common, send_info_and_wait_for_ending_all_threads};
|
|
||||||
use crossbeam_channel::{Receiver, Sender};
|
use crossbeam_channel::{Receiver, Sender};
|
||||||
use fun_time::fun_time;
|
use fun_time::fun_time;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
use crate::common::{check_if_stop_received, prepare_thread_handler_common, send_info_and_wait_for_ending_all_threads};
|
||||||
use crate::common_dir_traversal::{common_get_entry_data, common_get_metadata_dir, common_read_dir, get_modified_time, CheckingMethod, ProgressData, ToolType};
|
use crate::common_dir_traversal::{common_get_entry_data, common_get_metadata_dir, common_read_dir, get_modified_time, CheckingMethod, ProgressData, ToolType};
|
||||||
use crate::common_directory::Directories;
|
use crate::common_directory::Directories;
|
||||||
use crate::common_items::ExcludedItems;
|
use crate::common_items::ExcludedItems;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,12 @@ use std::cmp::max;
|
||||||
use std::collections::{BTreeMap, HashSet};
|
use std::collections::{BTreeMap, HashSet};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::{mem, panic};
|
use std::{mem, panic};
|
||||||
|
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
|
||||||
use crossbeam_channel::{Receiver, Sender};
|
use crossbeam_channel::{Receiver, Sender};
|
||||||
use fun_time::fun_time;
|
use fun_time::fun_time;
|
||||||
use humansize::{format_size, BINARY};
|
use humansize::{format_size, BINARY};
|
||||||
|
|
|
@ -6,7 +6,6 @@ use std::time::SystemTime;
|
||||||
use std::{mem, panic};
|
use std::{mem, panic};
|
||||||
|
|
||||||
use bk_tree::BKTree;
|
use bk_tree::BKTree;
|
||||||
|
|
||||||
use crossbeam_channel::{Receiver, Sender};
|
use crossbeam_channel::{Receiver, Sender};
|
||||||
use fun_time::fun_time;
|
use fun_time::fun_time;
|
||||||
use humansize::{format_size, BINARY};
|
use humansize::{format_size, BINARY};
|
||||||
|
@ -1097,9 +1096,9 @@ mod tests {
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use crate::common_dir_traversal::ToolType;
|
|
||||||
use bk_tree::BKTree;
|
use bk_tree::BKTree;
|
||||||
|
|
||||||
|
use crate::common_dir_traversal::ToolType;
|
||||||
use crate::common_directory::Directories;
|
use crate::common_directory::Directories;
|
||||||
use crate::common_tool::CommonToolData;
|
use crate::common_tool::CommonToolData;
|
||||||
use crate::similar_images::{Hamming, ImHash, ImageType, ImagesEntry, SimilarImages};
|
use crate::similar_images::{Hamming, ImHash, ImageType, ImagesEntry, SimilarImages};
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::fs::DirEntry;
|
use std::fs::DirEntry;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg
|
<svg
|
||||||
enable-background="new 0 0 512 512"
|
enable-background="new 0 0 512 512"
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 512 512"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg16"
|
id="svg16"
|
||||||
sodipodi:docname="czk_hide_down.svg"
|
sodipodi:docname="czk_hide_down.svg"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
>
|
||||||
<defs
|
<defs
|
||||||
id="defs20" />
|
id="defs20" />
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
|
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
|
@ -1,15 +1,15 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg
|
<svg
|
||||||
enable-background="new 0 0 512 512"
|
enable-background="new 0 0 512 512"
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 512 512"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg16"
|
id="svg16"
|
||||||
sodipodi:docname="czk_hide_up.svg"
|
sodipodi:docname="czk_hide_up.svg"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
>
|
||||||
<defs
|
<defs
|
||||||
id="defs20" />
|
id="defs20" />
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
|
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
|
||||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||||
<polygon style="fill:#298983;" points="358.206,345.663 357.688,227.522 292.942,227.806 293.462,345.948 325.975,378.178 "/>
|
<polygon style="fill:#298983;" points="358.206,345.663 357.688,227.522 292.942,227.806 293.462,345.948 325.975,378.178 "/>
|
||||||
<rect x="359.234" y="336.67" transform="matrix(0.7102 0.704 -0.704 0.7102 381.6591 -165.2999)" style="fill:#A5F2E5;" width="64.748" height="88.511"/>
|
<rect x="359.234" y="336.67" transform="matrix(0.7102 0.704 -0.704 0.7102 381.6591 -165.2999)" style="fill:#A5F2E5;" width="64.748" height="88.511"/>
|
||||||
<path d="M462.868,366.489l-57.464-56.96c-1.514-1.501-3.559-2.342-5.69-2.342c-0.012,0-0.024,0-0.036,0
|
<path d="M462.868,366.489l-57.464-56.96c-1.514-1.501-3.559-2.342-5.69-2.342c-0.012,0-0.024,0-0.036,0
|
||||||
|
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
@ -1,9 +1,10 @@
|
||||||
use czkawka_core::common::regex_check;
|
|
||||||
use czkawka_core::common_items::new_excluded_item;
|
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
use gtk4::{ResponseType, TreeIter, Window};
|
use gtk4::{ResponseType, TreeIter, Window};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
|
use czkawka_core::common::regex_check;
|
||||||
|
use czkawka_core::common_items::new_excluded_item;
|
||||||
|
|
||||||
use crate::flg;
|
use crate::flg;
|
||||||
use crate::gui_structs::gui_data::GuiData;
|
use crate::gui_structs::gui_data::GuiData;
|
||||||
use crate::help_functions::*;
|
use crate::help_functions::*;
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
use crossbeam_channel::Receiver;
|
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use crossbeam_channel::Receiver;
|
||||||
use glib::MainContext;
|
use glib::MainContext;
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
use gtk4::ProgressBar;
|
use gtk4::ProgressBar;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use gdk4::{DragAction, FileList};
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use gdk4::{DragAction, FileList};
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
use gtk4::{DropTarget, FileChooserNative, Notebook, Orientation, ResponseType, TreeView, Window};
|
use gtk4::{DropTarget, FileChooserNative, Notebook, Orientation, ResponseType, TreeView, Window};
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
|
|
||||||
use czkawka_core::common_cache::{
|
|
||||||
get_duplicate_cache_file, get_similar_images_cache_file, get_similar_videos_cache_file, load_cache_from_file_generalized_by_path, load_cache_from_file_generalized_by_size,
|
|
||||||
save_cache_to_file_generalized,
|
|
||||||
};
|
|
||||||
use directories_next::ProjectDirs;
|
use directories_next::ProjectDirs;
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
use gtk4::{Label, ResponseType, Window};
|
use gtk4::{Label, ResponseType, Window};
|
||||||
use image::imageops::FilterType;
|
use image::imageops::FilterType;
|
||||||
use image_hasher::HashAlg;
|
use image_hasher::HashAlg;
|
||||||
|
|
||||||
|
use czkawka_core::common_cache::{
|
||||||
|
get_duplicate_cache_file, get_similar_images_cache_file, get_similar_videos_cache_file, load_cache_from_file_generalized_by_path, load_cache_from_file_generalized_by_size,
|
||||||
|
save_cache_to_file_generalized,
|
||||||
|
};
|
||||||
use czkawka_core::common_messages::Messages;
|
use czkawka_core::common_messages::Messages;
|
||||||
use czkawka_core::duplicate::HashType;
|
use czkawka_core::duplicate::HashType;
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
#![allow(clippy::type_complexity)]
|
#![allow(clippy::type_complexity)]
|
||||||
#![allow(clippy::needless_late_init)]
|
#![allow(clippy::needless_late_init)]
|
||||||
|
|
||||||
use crossbeam_channel::{unbounded, Receiver, Sender};
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
|
|
||||||
|
use crossbeam_channel::{unbounded, Receiver, Sender};
|
||||||
use glib::Priority;
|
use glib::Priority;
|
||||||
use gtk4::gio::ApplicationFlags;
|
use gtk4::gio::ApplicationFlags;
|
||||||
use gtk4::prelude::*;
|
use gtk4::prelude::*;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
use crate::CurrentTab;
|
|
||||||
use slint::{ModelRc, SharedString, StandardListViewItem, VecModel};
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use slint::{ModelRc, SharedString, StandardListViewItem, VecModel};
|
||||||
|
|
||||||
|
use crate::CurrentTab;
|
||||||
|
|
||||||
// Remember to match updated this according to ui/main_lists.slint and connect_scan.rs files
|
// Remember to match updated this according to ui/main_lists.slint and connect_scan.rs files
|
||||||
pub fn get_path_idx(active_tab: CurrentTab) -> usize {
|
pub fn get_path_idx(active_tab: CurrentTab) -> usize {
|
||||||
match active_tab {
|
match active_tab {
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
use rayon::prelude::*;
|
||||||
use slint::{ComponentHandle, Model, ModelRc, VecModel};
|
use slint::{ComponentHandle, Model, ModelRc, VecModel};
|
||||||
|
|
||||||
|
use czkawka_core::common::{remove_folder_if_contains_only_empty_folders, CHARACTER};
|
||||||
|
|
||||||
use crate::common::{get_is_header_mode, get_name_idx, get_path_idx};
|
use crate::common::{get_is_header_mode, get_name_idx, get_path_idx};
|
||||||
use crate::{Callabler, CurrentTab, GuiState, MainListModel, MainWindow};
|
use crate::{Callabler, CurrentTab, GuiState, MainListModel, MainWindow};
|
||||||
use czkawka_core::common::{remove_folder_if_contains_only_empty_folders, CHARACTER};
|
|
||||||
use rayon::prelude::*;
|
|
||||||
|
|
||||||
pub fn connect_delete_button(app: &MainWindow) {
|
pub fn connect_delete_button(app: &MainWindow) {
|
||||||
let a = app.as_weak();
|
let a = app.as_weak();
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
use crate::{Callabler, MainWindow};
|
|
||||||
use directories_next::ProjectDirs;
|
use directories_next::ProjectDirs;
|
||||||
use log::error;
|
use log::error;
|
||||||
use slint::ComponentHandle;
|
use slint::ComponentHandle;
|
||||||
|
|
||||||
|
use crate::{Callabler, MainWindow};
|
||||||
|
|
||||||
pub fn connect_open_items(app: &MainWindow) {
|
pub fn connect_open_items(app: &MainWindow) {
|
||||||
app.global::<Callabler>().on_item_opened(move |path| {
|
app.global::<Callabler>().on_item_opened(move |path| {
|
||||||
match open::that(&*path) {
|
match open::that(&*path) {
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
use crate::{MainWindow, ProgressToSend};
|
use std::thread;
|
||||||
|
|
||||||
use crossbeam_channel::Receiver;
|
use crossbeam_channel::Receiver;
|
||||||
use czkawka_core::common_dir_traversal::{ProgressData, ToolType};
|
|
||||||
use slint::ComponentHandle;
|
use slint::ComponentHandle;
|
||||||
use std::thread;
|
|
||||||
|
use czkawka_core::common_dir_traversal::{ProgressData, ToolType};
|
||||||
|
|
||||||
|
use crate::{MainWindow, ProgressToSend};
|
||||||
|
|
||||||
pub fn connect_progress_gathering(app: &MainWindow, progress_receiver: Receiver<ProgressData>) {
|
pub fn connect_progress_gathering(app: &MainWindow, progress_receiver: Receiver<ProgressData>) {
|
||||||
let a = app.as_weak();
|
let a = app.as_weak();
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
use crate::settings::{collect_settings, SettingsCustom, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES};
|
use std::rc::Rc;
|
||||||
use crate::{CurrentTab, GuiState, MainListModel, MainWindow, ProgressToSend};
|
use std::thread;
|
||||||
|
|
||||||
use chrono::NaiveDateTime;
|
use chrono::NaiveDateTime;
|
||||||
use crossbeam_channel::{Receiver, Sender};
|
use crossbeam_channel::{Receiver, Sender};
|
||||||
|
use humansize::{format_size, BINARY};
|
||||||
|
use rayon::prelude::*;
|
||||||
|
use slint::{ComponentHandle, ModelRc, SharedString, VecModel, Weak};
|
||||||
|
|
||||||
use czkawka_core::common::{split_path, split_path_compare, DEFAULT_THREAD_SIZE};
|
use czkawka_core::common::{split_path, split_path_compare, DEFAULT_THREAD_SIZE};
|
||||||
use czkawka_core::common_dir_traversal::{FileEntry, ProgressData};
|
use czkawka_core::common_dir_traversal::{FileEntry, ProgressData};
|
||||||
use czkawka_core::common_tool::CommonData;
|
use czkawka_core::common_tool::CommonData;
|
||||||
|
@ -10,11 +15,9 @@ use czkawka_core::empty_files::EmptyFiles;
|
||||||
use czkawka_core::empty_folder::{EmptyFolder, FolderEntry};
|
use czkawka_core::empty_folder::{EmptyFolder, FolderEntry};
|
||||||
use czkawka_core::similar_images;
|
use czkawka_core::similar_images;
|
||||||
use czkawka_core::similar_images::SimilarImages;
|
use czkawka_core::similar_images::SimilarImages;
|
||||||
use humansize::{format_size, BINARY};
|
|
||||||
use rayon::prelude::*;
|
use crate::settings::{collect_settings, SettingsCustom, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES};
|
||||||
use slint::{ComponentHandle, ModelRc, SharedString, VecModel, Weak};
|
use crate::{CurrentTab, GuiState, MainListModel, MainWindow, ProgressToSend};
|
||||||
use std::rc::Rc;
|
|
||||||
use std::thread;
|
|
||||||
|
|
||||||
pub fn connect_scan_button(app: &MainWindow, progress_sender: Sender<ProgressData>, stop_receiver: Receiver<()>) {
|
pub fn connect_scan_button(app: &MainWindow, progress_sender: Sender<ProgressData>, stop_receiver: Receiver<()>) {
|
||||||
let a = app.as_weak();
|
let a = app.as_weak();
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
use crate::{Callabler, GuiState, MainWindow};
|
use std::path::Path;
|
||||||
use czkawka_core::common::{get_dynamic_image_from_raw_image, IMAGE_RS_EXTENSIONS, RAW_IMAGE_EXTENSIONS};
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
use image::DynamicImage;
|
use image::DynamicImage;
|
||||||
use log::{debug, error};
|
use log::{debug, error};
|
||||||
use slint::ComponentHandle;
|
use slint::ComponentHandle;
|
||||||
use std::path::Path;
|
|
||||||
use std::time::{Duration, Instant};
|
use czkawka_core::common::{get_dynamic_image_from_raw_image, IMAGE_RS_EXTENSIONS, RAW_IMAGE_EXTENSIONS};
|
||||||
|
|
||||||
|
use crate::{Callabler, GuiState, MainWindow};
|
||||||
|
|
||||||
pub type ImageBufferRgba = image::ImageBuffer<image::Rgba<u8>, Vec<u8>>;
|
pub type ImageBufferRgba = image::ImageBuffer<image::Rgba<u8>, Vec<u8>>;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use crate::MainWindow;
|
|
||||||
use crossbeam_channel::Sender;
|
use crossbeam_channel::Sender;
|
||||||
|
|
||||||
|
use crate::MainWindow;
|
||||||
|
|
||||||
pub fn connect_stop_button(app: &MainWindow, stop_sender: Sender<()>) {
|
pub fn connect_stop_button(app: &MainWindow, stop_sender: Sender<()>) {
|
||||||
app.on_scan_stopping(move || {
|
app.on_scan_stopping(move || {
|
||||||
stop_sender.send(()).unwrap();
|
stop_sender.send(()).unwrap();
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use slint::{ComponentHandle, Model};
|
||||||
|
|
||||||
use crate::localizer_krokiet::LANGUAGE_LOADER_GUI;
|
use crate::localizer_krokiet::LANGUAGE_LOADER_GUI;
|
||||||
use crate::{Callabler, MainWindow};
|
use crate::{Callabler, MainWindow};
|
||||||
use slint::{ComponentHandle, Model};
|
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
pub fn connect_translations(app: &MainWindow) {
|
pub fn connect_translations(app: &MainWindow) {
|
||||||
app.global::<Callabler>().on_translate(move |text_to_translate, args| {
|
app.global::<Callabler>().on_translate(move |text_to_translate, args| {
|
||||||
|
|
|
@ -17,6 +17,25 @@
|
||||||
#![allow(clippy::items_after_statements)] // Generated code
|
#![allow(clippy::items_after_statements)] // Generated code
|
||||||
#![allow(clippy::match_same_arms)] // Generated code
|
#![allow(clippy::match_same_arms)] // Generated code
|
||||||
|
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
|
use crossbeam_channel::{unbounded, Receiver, Sender};
|
||||||
|
use slint::VecModel;
|
||||||
|
|
||||||
|
use czkawka_core::common::{print_version_mode, setup_logger};
|
||||||
|
use czkawka_core::common_dir_traversal::ProgressData;
|
||||||
|
|
||||||
|
use crate::connect_delete::connect_delete_button;
|
||||||
|
use crate::connect_directories_changes::connect_add_remove_directories;
|
||||||
|
use crate::connect_open::connect_open_items;
|
||||||
|
use crate::connect_progress_receiver::connect_progress_gathering;
|
||||||
|
use crate::connect_scan::connect_scan_button;
|
||||||
|
use crate::connect_show_preview::connect_show_preview;
|
||||||
|
use crate::connect_stop::connect_stop_button;
|
||||||
|
use crate::connect_translation::connect_translations;
|
||||||
|
use crate::set_initial_gui_info::set_initial_gui_infos;
|
||||||
|
use crate::settings::{connect_changing_settings_preset, create_default_settings_files, load_settings_from_file, save_all_settings_to_file};
|
||||||
|
|
||||||
mod common;
|
mod common;
|
||||||
mod connect_delete;
|
mod connect_delete;
|
||||||
mod connect_directories_changes;
|
mod connect_directories_changes;
|
||||||
|
@ -30,24 +49,8 @@ mod localizer_krokiet;
|
||||||
mod set_initial_gui_info;
|
mod set_initial_gui_info;
|
||||||
mod settings;
|
mod settings;
|
||||||
|
|
||||||
use crossbeam_channel::{unbounded, Receiver, Sender};
|
|
||||||
use slint::VecModel;
|
|
||||||
use std::rc::Rc;
|
|
||||||
// use std::rc::Rc;
|
// use std::rc::Rc;
|
||||||
|
|
||||||
use crate::connect_delete::connect_delete_button;
|
|
||||||
use crate::connect_open::connect_open_items;
|
|
||||||
use crate::connect_scan::connect_scan_button;
|
|
||||||
|
|
||||||
use crate::connect_directories_changes::connect_add_remove_directories;
|
|
||||||
use crate::connect_progress_receiver::connect_progress_gathering;
|
|
||||||
use crate::connect_show_preview::connect_show_preview;
|
|
||||||
use crate::connect_stop::connect_stop_button;
|
|
||||||
use crate::connect_translation::connect_translations;
|
|
||||||
use crate::set_initial_gui_info::set_initial_gui_infos;
|
|
||||||
use crate::settings::{connect_changing_settings_preset, create_default_settings_files, load_settings_from_file, save_all_settings_to_file};
|
|
||||||
use czkawka_core::common::{print_version_mode, setup_logger};
|
|
||||||
use czkawka_core::common_dir_traversal::ProgressData;
|
|
||||||
// use slint::{ModelRc, VecModel};
|
// use slint::{ModelRc, VecModel};
|
||||||
|
|
||||||
slint::include_modules!();
|
slint::include_modules!();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use czkawka_core::common::get_available_threads;
|
|
||||||
use slint::{ComponentHandle, SharedString, VecModel};
|
use slint::{ComponentHandle, SharedString, VecModel};
|
||||||
|
|
||||||
|
use czkawka_core::common::get_available_threads;
|
||||||
|
|
||||||
use crate::settings::{ALLOWED_HASH_SIZE_VALUES, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES};
|
use crate::settings::{ALLOWED_HASH_SIZE_VALUES, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES};
|
||||||
use crate::{GuiState, MainWindow, Settings};
|
use crate::{GuiState, MainWindow, Settings};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue