Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernize notebook handling #189

Merged
merged 1 commit into from
Jan 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 13 additions & 23 deletions czkawka_gui/src/connect_button_delete.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
extern crate gtk;
use crate::gui_data::GuiData;
use crate::help_functions::*;
use crate::notebook_enums::*;
use gtk::prelude::*;
use std::collections::BTreeMap;
use std::fs;
Expand All @@ -12,7 +13,6 @@ pub fn connect_button_delete(gui_data: &GuiData) {
let gui_data = gui_data.clone();
let buttons_delete = gui_data.buttons_delete.clone();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
let notebook_main = gui_data.notebook_main.clone();
let window_main = gui_data.window_main.clone();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
Expand Down Expand Up @@ -53,43 +53,41 @@ pub fn connect_button_delete(gui_data: &GuiData) {
confirmation_dialog_delete.close();
}

match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_main_duplicate_finder_label" => {
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => {
tree_remove(&scrolled_window_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
"scrolled_window_main_empty_folder_finder" => {
NotebookMainEnum::EmptyDirectories => {
empty_folder_remover(&scrolled_window_main_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
"scrolled_window_main_empty_files_finder" => {
NotebookMainEnum::EmptyFiles => {
basic_remove(&scrolled_window_main_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
"scrolled_window_main_temporary_files_finder" => {
NotebookMainEnum::Temporary => {
basic_remove(&scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
"notebook_big_main_file_finder" => {
NotebookMainEnum::BigFiles => {
basic_remove(&scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
"notebook_main_similar_images_finder_label" => {
NotebookMainEnum::SimilarImages => {
tree_remove(
&scrolled_window_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
&gui_data,
);
// let list_store = get_list_store(&scrolled_window_similar_images_finder);
image_preview_similar_images.hide();
}
"notebook_main_zeroed_files_finder" => {
NotebookMainEnum::Zeroed => {
basic_remove(&scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
"notebook_main_same_music_finder" => {
NotebookMainEnum::SameMusic => {
tree_remove(&scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
"scrolled_window_invalid_symlinks" => {
NotebookMainEnum::Symlinks => {
basic_remove(&scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
e => panic!("Not existent {}", e),
}
});
}
Expand All @@ -106,8 +104,6 @@ pub fn empty_folder_remover(scrolled_window: &gtk::ScrolledWindow, column_file_n
}
let list_store = get_list_store(&scrolled_window);

// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows

let mut messages: String = "".to_string();

// Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data
Expand Down Expand Up @@ -192,8 +188,6 @@ pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32
}
let list_store = get_list_store(&scrolled_window);

// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows

let mut messages: String = "".to_string();

// Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data
Expand All @@ -214,7 +208,6 @@ pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32
}

// Remove all occurrences - remove every element which have same path and name as even non selected ones
//
pub fn tree_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();

Expand All @@ -227,8 +220,6 @@ pub fn tree_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32,
}
let list_store = get_list_store(&scrolled_window);

// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows

let mut messages: String = "".to_string();

let mut vec_path_to_delete: Vec<(String, String)> = Vec::new();
Expand All @@ -243,7 +234,6 @@ pub fn tree_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32,

map_with_path_to_delete.entry(path.clone()).or_insert_with(Vec::new);
map_with_path_to_delete.get_mut(path.as_str()).unwrap().push(file_name);
// vec_path_to_delete.push((path, file_name));
}

// Delete duplicated entries, and remove real files
Expand All @@ -267,14 +257,14 @@ pub fn tree_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32,
let mut vec_tree_path_to_delete: Vec<gtk::TreePath> = Vec::new();
let mut current_iter = first_iter;
if tree_model.get_value(&current_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
panic!(); // First element should be header
panic!("First deleted element, should be a header"); // First element should be header
};

let mut next_iter;
let mut next_next_iter;
'main: loop {
if tree_model.get_value(&current_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
panic!(); // First element should be header
panic!("First deleted element, should be a header"); // First element should be header
};

next_iter = current_iter.clone();
Expand Down
118 changes: 52 additions & 66 deletions czkawka_gui/src/connect_button_save.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
extern crate gtk;
use crate::gui_data::GuiData;
use crate::notebook_enums::*;
use czkawka_core::common_traits::SaveResults;
use gtk::prelude::*;

Expand All @@ -15,76 +16,61 @@ pub fn connect_button_save(gui_data: &GuiData) {
let shared_same_music_state = gui_data.shared_same_music_state.clone();
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
let notebook_main = gui_data.notebook_main.clone();
buttons_save.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_main_duplicate_finder_label" => {
let file_name = "results_duplicates.txt";

shared_duplication_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "duplicate", &gui_data);
}
"scrolled_window_main_empty_folder_finder" => {
let file_name = "results_empty_folder.txt";

shared_empty_folders_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "empty_folder", &gui_data);
}
"scrolled_window_main_empty_files_finder" => {
let file_name = "results_empty_files.txt";

shared_empty_files_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "empty_file", &gui_data);
}
"scrolled_window_main_temporary_files_finder" => {
let file_name = "results_temporary_files.txt";

shared_temporary_files_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "temporary_file", &gui_data);
}
"notebook_big_main_file_finder" => {
let file_name = "results_big_files.txt";

shared_big_files_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "big_file", &gui_data);
}
"notebook_main_similar_images_finder_label" => {
let file_name = "results_similar_images.txt";

shared_similar_images_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "similar_images", &gui_data);
}
"notebook_main_zeroed_files_finder" => {
let file_name = "results_zeroed_files.txt";

shared_zeroed_files_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "zeroed_files", &gui_data);
}
"notebook_main_same_music_finder" => {
let file_name = "results_same_music.txt";

shared_same_music_state.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "same_music", &gui_data);
}
"scrolled_window_invalid_symlinks" => {
let file_name = "results_invalid_symlinks.txt";

shared_same_invalid_symlinks.borrow_mut().save_results_to_file(file_name);

post_save_things(file_name, "invalid_symlinks", &gui_data);
buttons_save.connect_clicked(move |_| {
let file_name;

match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => {
file_name = "results_duplicates.txt";

shared_duplication_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::EmptyDirectories => {
file_name = "results_empty_folder.txt";

shared_empty_folders_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::EmptyFiles => {
file_name = "results_empty_files.txt";

shared_empty_files_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::Temporary => {
file_name = "results_temporary_files.txt";

shared_temporary_files_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::BigFiles => {
file_name = "results_big_files.txt";

shared_big_files_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::SimilarImages => {
file_name = "results_similar_images.txt";

shared_similar_images_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::Zeroed => {
file_name = "results_zeroed_files.txt";

shared_zeroed_files_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::SameMusic => {
file_name = "results_same_music.txt";

shared_same_music_state.borrow_mut().save_results_to_file(file_name);
}
NotebookMainEnum::Symlinks => {
file_name = "results_invalid_symlinks.txt";

shared_same_invalid_symlinks.borrow_mut().save_results_to_file(file_name);
}
}
e => panic!("Not existent {}", e),
post_save_things(file_name, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &gui_data);
});
}
fn post_save_things(file_name: &str, type_of_tab: &str, gui_data: &GuiData) {
fn post_save_things(file_name: &str, type_of_tab: &NotebookMainEnum, gui_data: &GuiData) {
let entry_info = gui_data.entry_info.clone();
let buttons_save = gui_data.buttons_save.clone();
let shared_buttons = gui_data.shared_buttons.clone();
Expand Down
25 changes: 12 additions & 13 deletions czkawka_gui/src/connect_button_search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use czkawka_core::*;
extern crate gtk;
use crate::gui_data::GuiData;
use crate::help_functions::*;
use crate::notebook_enums::*;
use czkawka_core::big_file::BigFile;
use czkawka_core::duplicate::DuplicateFinder;
use czkawka_core::empty_files::EmptyFiles;
Expand Down Expand Up @@ -34,7 +35,6 @@ pub fn connect_button_search(
futures_sender_invalid_symlinks: futures::channel::mpsc::Sender<invalid_symlinks::ProgressData>,
) {
let entry_info = gui_data.entry_info.clone();
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
let notebook_main = gui_data.notebook_main.clone();
let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
Expand Down Expand Up @@ -107,8 +107,8 @@ pub fn connect_button_search(

reset_text_view(&text_view_errors);

match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_main_duplicate_finder_label" => {
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => {
label_stage.show();
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
Expand Down Expand Up @@ -147,7 +147,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::Duplicates(df));
});
}
"scrolled_window_main_empty_files_finder" => {
NotebookMainEnum::EmptyFiles => {
label_stage.show();
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
Expand All @@ -171,7 +171,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::EmptyFiles(vf));
});
}
"scrolled_window_main_empty_folder_finder" => {
NotebookMainEnum::EmptyDirectories => {
label_stage.show();
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
Expand All @@ -192,7 +192,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::EmptyFolders(ef));
});
}
"notebook_big_main_file_finder" => {
NotebookMainEnum::BigFiles => {
label_stage.show();
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
Expand All @@ -217,7 +217,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::BigFiles(bf));
});
}
"scrolled_window_main_temporary_files_finder" => {
NotebookMainEnum::Temporary => {
label_stage.show();
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
Expand All @@ -240,7 +240,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::Temporary(tf));
});
}
"notebook_main_similar_images_finder_label" => {
NotebookMainEnum::SimilarImages => {
image_preview_similar_images.hide();

label_stage.show();
Expand Down Expand Up @@ -286,7 +286,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::SimilarImages(sf));
});
}
"notebook_main_zeroed_files_finder" => {
NotebookMainEnum::Zeroed => {
label_stage.show();
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
Expand All @@ -310,7 +310,7 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::ZeroedFiles(zf));
});
}
"notebook_main_same_music_finder" => {
NotebookMainEnum::SameMusic => {
label_stage.show();
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
Expand Down Expand Up @@ -357,12 +357,12 @@ pub fn connect_button_search(
});
} else {
notebook_main.set_sensitive(true);
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("same_music").unwrap(), &buttons_array, &buttons_names);
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap(), &buttons_array, &buttons_names);
entry_info.set_text("ERROR: You must select at least one checkbox with music searching types.");
show_dialog.store(false, Ordering::Relaxed);
}
}
"scrolled_window_invalid_symlinks" => {
NotebookMainEnum::Symlinks => {
label_stage.show();
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
Expand All @@ -384,7 +384,6 @@ pub fn connect_button_search(
let _ = glib_stop_sender.send(Message::InvalidSymlinks(isf));
});
}
e => panic!("Not existent {}", e),
}

// Show progress dialog
Expand Down
Loading