Modified include organization
This commit is contained in:
parent
d302c3b2d8
commit
b7e4eaccaf
44 changed files with 281 additions and 219 deletions
|
@ -1,9 +1,11 @@
|
|||
use std::path::PathBuf;
|
||||
|
||||
use img_hash::{FilterType, HashAlg};
|
||||
use structopt::StructOpt;
|
||||
|
||||
use czkawka_core::duplicate::{CheckingMethod, DeleteMethod, HashType};
|
||||
use czkawka_core::same_music::MusicSimilarity;
|
||||
use czkawka_core::similar_images::SimilarityPreset;
|
||||
use img_hash::{FilterType, HashAlg};
|
||||
use std::path::PathBuf;
|
||||
use structopt::StructOpt;
|
||||
|
||||
#[derive(Debug, StructOpt)]
|
||||
#[structopt(name = "czkawka", help_message = HELP_MESSAGE, template = HELP_TEMPLATE)]
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
mod commands;
|
||||
use std::process;
|
||||
|
||||
use structopt::StructOpt;
|
||||
|
||||
use commands::Commands;
|
||||
|
||||
#[allow(unused_imports)] // It is used in release for print_results().
|
||||
use czkawka_core::common_traits::*;
|
||||
|
||||
use czkawka_core::similar_images::test_image_conversion_speed;
|
||||
use czkawka_core::{
|
||||
big_file::{self, BigFile},
|
||||
|
@ -19,8 +19,8 @@ use czkawka_core::{
|
|||
similar_videos::SimilarVideos,
|
||||
temporary::{self, Temporary},
|
||||
};
|
||||
use std::process;
|
||||
use structopt::StructOpt;
|
||||
|
||||
mod commands;
|
||||
|
||||
fn main() {
|
||||
let command = Commands::from_args();
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
use crossbeam_channel::Receiver;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use std::collections::BTreeMap;
|
||||
use std::ffi::OsStr;
|
||||
use std::fs::{File, Metadata};
|
||||
|
@ -19,6 +11,16 @@ use std::time::Duration;
|
|||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
pub files_checked: usize,
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
use std::collections::BTreeMap;
|
||||
use std::fs::{File, Metadata, OpenOptions};
|
||||
use std::io::prelude::*;
|
||||
use std::io::{BufReader, BufWriter};
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, mem, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use rayon::prelude::*;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use rayon::prelude::*;
|
||||
use std::collections::BTreeMap;
|
||||
use std::io::{BufReader, BufWriter};
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
const CACHE_FILE_NAME: &str = "cache_broken_files.txt";
|
||||
|
||||
|
|
|
@ -126,9 +126,10 @@ impl Common {
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::common::Common;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use crate::common::Common;
|
||||
|
||||
#[test]
|
||||
fn test_regex() {
|
||||
assert!(Common::regex_check("*home*", "/home/rafal"));
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_messages::Messages;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::time::SystemTime;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_messages::Messages;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct Directories {
|
||||
pub excluded_directories: Vec<PathBuf>,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use std::time::SystemTime;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_messages::Messages;
|
||||
use std::time::SystemTime;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct Extensions {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_messages::Messages;
|
||||
use std::path::Path;
|
||||
use std::time::SystemTime;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_messages::Messages;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ExcludedItems {
|
||||
pub items: Vec<String>,
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
use crossbeam_channel::Receiver;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use std::collections::BTreeMap;
|
||||
#[cfg(target_family = "unix")]
|
||||
use std::collections::HashSet;
|
||||
use std::fs::{File, Metadata, OpenOptions};
|
||||
use std::hash::Hasher;
|
||||
use std::io::prelude::*;
|
||||
use std::io::{self, Error, ErrorKind};
|
||||
use std::io::{BufReader, BufWriter};
|
||||
#[cfg(target_family = "unix")]
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, mem, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use rayon::prelude::*;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use directories_next::ProjectDirs;
|
||||
use rayon::prelude::*;
|
||||
use std::hash::Hasher;
|
||||
use std::io::{BufReader, BufWriter};
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
const HASH_MB_LIMIT_BYTES: u64 = 1024 * 1024; // 1MB
|
||||
|
||||
|
@ -1482,7 +1483,6 @@ fn load_hashes_from_file(text_messages: &mut Messages, type_of_hash: &HashType)
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::fs::{read_dir, File};
|
||||
use std::io;
|
||||
#[cfg(target_family = "windows")]
|
||||
|
@ -1490,6 +1490,8 @@ mod tests {
|
|||
#[cfg(target_family = "unix")]
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[cfg(target_family = "unix")]
|
||||
fn assert_inode(before: &Metadata, after: &Metadata) {
|
||||
assert_eq!(before.ino(), after.ino());
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
use std::fs::{File, Metadata};
|
||||
use std::io::prelude::*;
|
||||
use std::io::BufWriter;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use crossbeam_channel::Receiver;
|
||||
use std::io::BufWriter;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
use crossbeam_channel::Receiver;
|
||||
use std::collections::BTreeMap;
|
||||
use std::fs::{File, Metadata};
|
||||
use std::io::{BufWriter, Write};
|
||||
|
@ -14,6 +8,14 @@ use std::thread::sleep;
|
|||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
pub current_stage: u8,
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
use std::fs::{File, Metadata};
|
||||
use std::io::prelude::*;
|
||||
use std::io::BufWriter;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use crossbeam_channel::Receiver;
|
||||
use std::io::BufWriter;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
use std::collections::BTreeMap;
|
||||
use std::fs::{File, Metadata};
|
||||
use std::io::prelude::*;
|
||||
use std::io::BufWriter;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use audiotags::Tag;
|
||||
use crossbeam_channel::Receiver;
|
||||
use rayon::prelude::*;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use audiotags::Tag;
|
||||
use crossbeam_channel::Receiver;
|
||||
use rayon::prelude::*;
|
||||
use std::collections::BTreeMap;
|
||||
use std::io::BufWriter;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
|
|
|
@ -1,15 +1,3 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
use bk_tree::BKTree;
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use image::GenericImageView;
|
||||
use img_hash::{FilterType, HashAlg, HasherConfig};
|
||||
use rayon::prelude::*;
|
||||
use std::collections::{BTreeMap, BTreeSet};
|
||||
use std::fs::OpenOptions;
|
||||
use std::fs::{File, Metadata};
|
||||
|
@ -22,6 +10,20 @@ use std::thread::sleep;
|
|||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, mem, thread};
|
||||
|
||||
use bk_tree::BKTree;
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use image::GenericImageView;
|
||||
use img_hash::{FilterType, HashAlg, HasherConfig};
|
||||
use rayon::prelude::*;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
|
||||
// TODO check for better values
|
||||
pub const SIMILAR_VALUES: [[u32; 6]; 3] = [
|
||||
[0, 1, 2, 3, 4, 5], // 4 - Max 16
|
||||
|
|
|
@ -1,14 +1,3 @@
|
|||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use ffmpeg_cmdline_utils::FfmpegErrorKind::FfmpegNotFound;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use rayon::prelude::*;
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
use std::fs::OpenOptions;
|
||||
use std::fs::{File, Metadata};
|
||||
|
@ -20,9 +9,22 @@ use std::sync::Arc;
|
|||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, mem, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
use directories_next::ProjectDirs;
|
||||
use ffmpeg_cmdline_utils::FfmpegErrorKind::FfmpegNotFound;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
use rayon::prelude::*;
|
||||
use vid_dup_finder_lib::HashCreationErrorKind::DetermineVideo;
|
||||
use vid_dup_finder_lib::{NormalizedTolerance, VideoHash};
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_extensions::Extensions;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::{DebugPrint, PrintResults, SaveResults};
|
||||
|
||||
pub const MAX_TOLERANCE: i32 = 20;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
use std::fs::{File, Metadata};
|
||||
use std::io::prelude::*;
|
||||
use std::io::BufWriter;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
use std::{fs, thread};
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
|
||||
use crate::common::Common;
|
||||
use crate::common_directory::Directories;
|
||||
use crate::common_items::ExcludedItems;
|
||||
use crate::common_messages::Messages;
|
||||
use crate::common_traits::*;
|
||||
use crossbeam_channel::Receiver;
|
||||
use std::io::BufWriter;
|
||||
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ProgressData {
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
use humansize::{file_size_opts as options, FileSize};
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
use std::rc::Rc;
|
||||
|
||||
use chrono::NaiveDateTime;
|
||||
use glib::Receiver;
|
||||
use gtk::prelude::*;
|
||||
use humansize::{file_size_opts as options, FileSize};
|
||||
|
||||
use czkawka_core::duplicate::CheckingMethod;
|
||||
use czkawka_core::same_music::MusicSimilarity;
|
||||
use czkawka_core::similar_images;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use chrono::NaiveDateTime;
|
||||
use czkawka_core::duplicate::CheckingMethod;
|
||||
use czkawka_core::same_music::MusicSimilarity;
|
||||
use czkawka_core::similar_images;
|
||||
use glib::Receiver;
|
||||
use gtk::prelude::*;
|
||||
use std::path::PathBuf;
|
||||
use std::rc::Rc;
|
||||
|
||||
pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<Message>) {
|
||||
let buttons_search = gui_data.bottom_buttons.buttons_search.clone();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
|
||||
const SPONSOR_SITE: &str = "https://github.com/sponsors/qarmin";
|
||||
const REPOSITORY_SITE: &str = "https://github.com/qarmin/czkawka";
|
||||
const INSTRUCTION_SITE: &str = "https://github.com/qarmin/czkawka/blob/master/instructions/Instruction.md";
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Align, CheckButton, Dialog, TextView};
|
||||
use std::collections::BTreeMap;
|
||||
use std::fs;
|
||||
use std::fs::Metadata;
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Align, CheckButton, Dialog, TextView};
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
|
||||
// TODO add support for checking if really symlink doesn't point to correct directory/file
|
||||
|
||||
pub fn connect_button_delete(gui_data: &GuiData) {
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::{TextView, TreeIter, TreePath};
|
||||
|
||||
use czkawka_core::duplicate::make_hard_link;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::duplicate::make_hard_link;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{TextView, TreeIter, TreePath};
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub fn connect_button_hardlink_symlink(gui_data: &GuiData) {
|
||||
let buttons_hardlink = gui_data.bottom_buttons.buttons_hardlink.clone();
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
use std::path::{Path, PathBuf};
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreePath;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreePath;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
pub fn connect_button_move(gui_data: &GuiData) {
|
||||
let buttons_move = gui_data.bottom_buttons.buttons_move.clone();
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::common_traits::SaveResults;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Button, Entry};
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::rc::Rc;
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Button, Entry};
|
||||
|
||||
use czkawka_core::common_traits::SaveResults;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::notebook_enums::*;
|
||||
|
||||
pub fn connect_button_save(gui_data: &GuiData) {
|
||||
let buttons_save = gui_data.bottom_buttons.buttons_save.clone();
|
||||
let buttons_save_clone = gui_data.bottom_buttons.buttons_save.clone();
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
use czkawka_core::*;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread;
|
||||
|
||||
use glib::Sender;
|
||||
use gtk::prelude::*;
|
||||
use gtk::WindowPosition;
|
||||
use img_hash::{FilterType, HashAlg};
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::broken_files::BrokenFiles;
|
||||
use czkawka_core::duplicate::{DuplicateFinder, HashType};
|
||||
|
@ -13,15 +17,11 @@ use czkawka_core::same_music::{MusicSimilarity, SameMusic};
|
|||
use czkawka_core::similar_images::SimilarImages;
|
||||
use czkawka_core::similar_videos::SimilarVideos;
|
||||
use czkawka_core::temporary::Temporary;
|
||||
use glib::Sender;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use gtk::WindowPosition;
|
||||
use img_hash::{FilterType, HashAlg};
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread;
|
||||
use czkawka_core::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use crate::taskbar_progress::tbp_flags::TBPF_NOPROGRESS;
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use gtk::prelude::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::gui_popovers::GuiPopovers;
|
||||
use crate::help_functions::PopoverTypes;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn connect_button_select(gui_data: &GuiData) {
|
||||
let mut hashmap: HashMap<NotebookMainEnum, Vec<PopoverTypes>> = Default::default();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
|
||||
pub fn connect_button_stop(gui_data: &GuiData) {
|
||||
let button_stop_in_dialog = gui_data.progress_window.button_stop_in_dialog.clone();
|
||||
let stop_sender = gui_data.stop_sender.clone();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use gtk::prelude::*;
|
||||
use gtk::WindowPosition;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
|
||||
pub fn connect_button_about(gui_data: &GuiData) {
|
||||
let about_dialog = gui_data.about.about_dialog.clone();
|
||||
let button_app_info = gui_data.header.button_app_info.clone();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
|
||||
pub fn connect_hide_text_view_errors(gui_data: &GuiData) {
|
||||
let check_button_settings_show_text_view = gui_data.settings.check_button_settings_show_text_view.clone();
|
||||
let buttons_show_errors = gui_data.bottom_buttons.buttons_show_errors.clone();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use gtk::prelude::*;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
|
||||
pub fn connect_notebook_tabs(gui_data: &GuiData) {
|
||||
let shared_buttons = gui_data.shared_buttons.clone();
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use czkawka_core::common::Common;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{TreeIter, Window};
|
||||
|
||||
use czkawka_core::common::Common;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
|
||||
// File length variable allows users to choose duplicates which have shorter file name
|
||||
// e.g. 'tar.gz' will be selected instead 'tar.gz (copy)' etc.
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::taskbar_progress::tbp_flags::TBPF_INDETERMINATE;
|
||||
use futures::StreamExt;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use czkawka_core::{big_file, broken_files, duplicate, empty_files, empty_folder, invalid_symlinks, same_music, similar_images, similar_videos, temporary};
|
||||
|
||||
use futures::StreamExt;
|
||||
|
||||
use gtk::prelude::*;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::taskbar_progress::tbp_flags::TBPF_INDETERMINATE;
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub fn connect_progress_window(
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::{get_list_store, ColumnsDirectory};
|
||||
use gtk::prelude::*;
|
||||
use gtk::{TreeView, Window};
|
||||
|
||||
#[cfg(target_family = "windows")]
|
||||
use czkawka_core::common::Common;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::{get_list_store, ColumnsDirectory};
|
||||
|
||||
pub fn connect_selection_of_directories(gui_data: &GuiData) {
|
||||
// Add manually directory
|
||||
{
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use crate::saving_loading::{load_configuration, reset_configuration, save_configuration};
|
||||
use gtk::prelude::*;
|
||||
use gtk::WindowPosition;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::saving_loading::{load_configuration, reset_configuration, save_configuration};
|
||||
|
||||
pub fn connect_settings(gui_data: &GuiData) {
|
||||
// Connect button settings
|
||||
{
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
use crate::gui_data::GuiData;
|
||||
use czkawka_core::similar_images::SIMILAR_VALUES;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use czkawka_core::similar_images::SIMILAR_VALUES;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
|
||||
pub fn connect_similar_image_size_change(gui_data: &GuiData) {
|
||||
// This should set values to max possible value like in return_similarity_from_similarity_preset and get_string_from_similarity
|
||||
{
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::help_functions::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreeViewColumn;
|
||||
|
||||
use crate::help_functions::*;
|
||||
|
||||
pub fn create_tree_view_duplicates(tree_view: &mut gtk::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
use crate::gui_about::GuiAbout;
|
||||
use crate::gui_bottom_buttons::GuiBottomButtons;
|
||||
use crate::gui_header::GuiHeader;
|
||||
use crate::gui_main_notebook::GuiMainNotebook;
|
||||
use crate::gui_popovers::GuiPopovers;
|
||||
use crate::gui_progress_dialog::GuiProgressDialog;
|
||||
use crate::gui_settings::GuiSettings;
|
||||
use crate::gui_upper_notepad::GuiUpperNotebook;
|
||||
use crate::notebook_enums::*;
|
||||
use crate::taskbar_progress::TaskbarProgress;
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::rc::Rc;
|
||||
|
||||
use crossbeam_channel::unbounded;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Builder, WindowPosition};
|
||||
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::broken_files::BrokenFiles;
|
||||
use czkawka_core::duplicate::DuplicateFinder;
|
||||
|
@ -19,11 +16,17 @@ use czkawka_core::same_music::SameMusic;
|
|||
use czkawka_core::similar_images::SimilarImages;
|
||||
use czkawka_core::similar_videos::SimilarVideos;
|
||||
use czkawka_core::temporary::Temporary;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Builder, WindowPosition};
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::rc::Rc;
|
||||
|
||||
use crate::gui_about::GuiAbout;
|
||||
use crate::gui_bottom_buttons::GuiBottomButtons;
|
||||
use crate::gui_header::GuiHeader;
|
||||
use crate::gui_main_notebook::GuiMainNotebook;
|
||||
use crate::gui_popovers::GuiPopovers;
|
||||
use crate::gui_progress_dialog::GuiProgressDialog;
|
||||
use crate::gui_settings::GuiSettings;
|
||||
use crate::gui_upper_notepad::GuiUpperNotebook;
|
||||
use crate::notebook_enums::*;
|
||||
use crate::taskbar_progress::TaskbarProgress;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct GuiData {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::notebook_enums::NUMBER_OF_NOTEBOOK_MAIN_TABS;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreeView;
|
||||
|
||||
use crate::notebook_enums::NUMBER_OF_NOTEBOOK_MAIN_TABS;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct GuiMainNotebook {
|
||||
pub notebook_main: gtk::Notebook,
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
use crate::notebook_enums::{NotebookMainEnum, NUMBER_OF_NOTEBOOK_MAIN_TABS};
|
||||
use std::collections::HashMap;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::{ListStore, TextView};
|
||||
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::broken_files::BrokenFiles;
|
||||
use czkawka_core::common_messages::Messages;
|
||||
|
@ -11,10 +16,8 @@ use czkawka_core::same_music::SameMusic;
|
|||
use czkawka_core::similar_images::SimilarImages;
|
||||
use czkawka_core::similar_videos::SimilarVideos;
|
||||
use czkawka_core::temporary::Temporary;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{ListStore, TextView};
|
||||
use std::collections::HashMap;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use crate::notebook_enums::{NotebookMainEnum, NUMBER_OF_NOTEBOOK_MAIN_TABS};
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
pub enum PopoverTypes {
|
||||
|
|
|
@ -1,3 +1,16 @@
|
|||
use std::cmp::Ordering;
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
|
||||
use directories_next::ProjectDirs;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{CheckButton, Image, SelectionMode, TextView, TreeView};
|
||||
use image::imageops::FilterType;
|
||||
use image::GenericImageView;
|
||||
|
||||
use czkawka_core::similar_images::SIMILAR_VALUES;
|
||||
use czkawka_core::similar_videos::MAX_TOLERANCE;
|
||||
|
||||
use crate::connect_button_delete::{basic_remove, empty_folder_remover};
|
||||
use crate::create_tree_view::*;
|
||||
use crate::delete_things;
|
||||
|
@ -5,16 +18,6 @@ use crate::gui_data::*;
|
|||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::NotebookMainEnum;
|
||||
use crate::opening_selecting_records::*;
|
||||
use czkawka_core::similar_images::SIMILAR_VALUES;
|
||||
use czkawka_core::similar_videos::MAX_TOLERANCE;
|
||||
use directories_next::ProjectDirs;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{CheckButton, Image, SelectionMode, TextView, TreeView};
|
||||
use image::imageops::FilterType;
|
||||
use image::GenericImageView;
|
||||
use std::cmp::Ordering;
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
|
||||
const KEY_DELETE: u16 = 119;
|
||||
|
||||
|
|
|
@ -3,6 +3,32 @@
|
|||
#![allow(clippy::collapsible_else_if)]
|
||||
#![allow(clippy::too_many_arguments)]
|
||||
|
||||
use gtk::prelude::*;
|
||||
|
||||
use czkawka_core::*;
|
||||
|
||||
use crate::compute_results::*;
|
||||
use crate::connect_about_buttons::*;
|
||||
use crate::connect_button_delete::*;
|
||||
use crate::connect_button_hardlink::*;
|
||||
use crate::connect_button_move::*;
|
||||
use crate::connect_button_save::*;
|
||||
use crate::connect_button_search::*;
|
||||
use crate::connect_button_select::*;
|
||||
use crate::connect_button_stop::*;
|
||||
use crate::connect_header_buttons::*;
|
||||
use crate::connect_hide_text_view_errors::*;
|
||||
use crate::connect_notebook_tabs::*;
|
||||
use crate::connect_popovers::*;
|
||||
use crate::connect_progress_window::*;
|
||||
use crate::connect_selection_of_directories::*;
|
||||
use crate::connect_settings::*;
|
||||
use crate::connect_similar_image_size_change::*;
|
||||
use crate::gui_data::*;
|
||||
use crate::initialize_gui::*;
|
||||
use crate::saving_loading::*;
|
||||
use crate::tests::validate_notebook_data;
|
||||
|
||||
mod compute_results;
|
||||
mod connect_about_buttons;
|
||||
mod connect_button_delete;
|
||||
|
@ -42,31 +68,6 @@ mod taskbar_progress_dummy;
|
|||
mod taskbar_progress_win;
|
||||
mod tests;
|
||||
|
||||
use czkawka_core::*;
|
||||
|
||||
use crate::compute_results::*;
|
||||
use crate::connect_about_buttons::*;
|
||||
use crate::connect_button_delete::*;
|
||||
use crate::connect_button_hardlink::*;
|
||||
use crate::connect_button_move::*;
|
||||
use crate::connect_button_save::*;
|
||||
use crate::connect_button_search::*;
|
||||
use crate::connect_button_select::*;
|
||||
use crate::connect_button_stop::*;
|
||||
use crate::connect_header_buttons::*;
|
||||
use crate::connect_hide_text_view_errors::*;
|
||||
use crate::connect_notebook_tabs::*;
|
||||
use crate::connect_popovers::*;
|
||||
use crate::connect_progress_window::*;
|
||||
use crate::connect_selection_of_directories::*;
|
||||
use crate::connect_settings::*;
|
||||
use crate::connect_similar_image_size_change::*;
|
||||
use crate::gui_data::*;
|
||||
use crate::initialize_gui::*;
|
||||
use crate::saving_loading::*;
|
||||
use crate::tests::validate_notebook_data;
|
||||
use gtk::prelude::*;
|
||||
|
||||
fn main() {
|
||||
let application = gtk::Application::builder().application_id("com.github.qarmin").build();
|
||||
application.connect_activate(|application| {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use crate::help_functions::*;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use crate::help_functions::*;
|
||||
|
||||
const KEY_ENTER: u16 = 36;
|
||||
const KEY_SPACE: u16 = 65;
|
||||
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
use crate::gui_settings::GuiSettings;
|
||||
use crate::gui_upper_notepad::GuiUpperNotebook;
|
||||
use crate::help_functions::*;
|
||||
use directories_next::ProjectDirs;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{ScrolledWindow, TextView};
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use std::path::Path;
|
||||
use std::{env, fs};
|
||||
|
||||
use directories_next::ProjectDirs;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{ScrolledWindow, TextView};
|
||||
|
||||
use crate::gui_settings::GuiSettings;
|
||||
use crate::gui_upper_notepad::GuiUpperNotebook;
|
||||
use crate::help_functions::*;
|
||||
|
||||
// TODO organize this better, add specific functions that will allow to load from files specific strings
|
||||
const SAVE_FILE_NAME: &str = "czkawka_gui_config.txt";
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#[cfg(target_os = "windows")]
|
||||
pub use crate::taskbar_progress_win::{tbp_flags, TaskbarProgress};
|
||||
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
pub use crate::taskbar_progress_dummy::{tbp_flags, TaskbarProgress};
|
||||
#[cfg(target_os = "windows")]
|
||||
pub use crate::taskbar_progress_win::{tbp_flags, TaskbarProgress};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#![allow(clippy::upper_case_acronyms)]
|
||||
#![cfg(not(target_os = "windows"))]
|
||||
|
||||
use std::convert::From;
|
||||
|
||||
enum HWND__ {}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#![cfg(target_os = "windows")]
|
||||
extern crate winapi;
|
||||
|
||||
use std::cell::RefCell;
|
||||
use std::convert::From;
|
||||
use std::ptr;
|
||||
|
||||
use winapi::ctypes::c_void;
|
||||
use winapi::shared::windef::HWND;
|
||||
use winapi::shared::winerror::{E_POINTER, S_OK};
|
||||
|
|
Loading…
Reference in a new issue