Modified include organization

pull/470/head
Rafał Mikrut 3 years ago
parent d302c3b2d8
commit b7e4eaccaf

@ -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 commands::Commands;
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 crate::gui_data::GuiData;
use crate::help_functions::*;
use crate::notebook_enums::*;
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 glib::Receiver;
use gtk::prelude::*;
use std::path::PathBuf;
use std::rc::Rc;
use crate::gui_data::GuiData;
use crate::help_functions::*;
use crate::notebook_enums::*;
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…
Cancel
Save