1
0
Fork 0
mirror of synced 2024-05-09 23:12:29 +12:00
czkawka/czkawka_gui/src/connect_things/connect_button_save.rs
Rafał Mikrut 378fa1fd6e
Excluded extensions and krokiet new features (#1184)
* AVC

* Import split

* Default thread size

* Hen

* Allowed extensions

* Perf

* Connect

* Excluded

* Zmiany

* Optimization

* 4.10

* At once

* Included

* Chang

* VD

* VD

* Hashes

* Wersja

* SD

* Up

* Up

* 2024

* Dup

* Slint files

* Added  select

* Selections

* Fix

* LTO

* Actions

* Added popup delete

* AB

* V4

* Release

* LTO

* Basic moving

* Commonsy

* Moving probably works

* Popup move
2024-02-14 17:45:25 +01:00

85 lines
4.1 KiB
Rust

use std::cell::RefCell;
use std::collections::HashMap;
use std::env;
use std::rc::Rc;
use gtk4::prelude::*;
use gtk4::{Button, Entry};
use czkawka_core::common_traits::PrintResults;
use crate::flg;
use crate::gui_structs::gui_data::GuiData;
use crate::help_functions::BottomButtonsEnum;
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();
let shared_duplication_state = gui_data.shared_duplication_state.clone();
let shared_empty_folders_state = gui_data.shared_empty_folders_state.clone();
let shared_big_files_state = gui_data.shared_big_files_state.clone();
let shared_temporary_files_state = gui_data.shared_temporary_files_state.clone();
let shared_empty_files_state = gui_data.shared_empty_files_state.clone();
let shared_similar_images_state = gui_data.shared_similar_images_state.clone();
let shared_similar_videos_state = gui_data.shared_similar_videos_state.clone();
let shared_same_music_state = gui_data.shared_same_music_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
let shared_broken_files_state = gui_data.shared_broken_files_state.clone();
let shared_bad_extensions_state = gui_data.shared_bad_extensions_state.clone();
let shared_buttons = gui_data.shared_buttons.clone();
let entry_info = gui_data.entry_info.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
buttons_save.connect_clicked(move |_| {
let result = match to_notebook_main_enum(notebook_main.current_page().unwrap()) {
NotebookMainEnum::Duplicate => shared_duplication_state.borrow().save_all_in_one("results_duplicates"),
NotebookMainEnum::EmptyDirectories => shared_empty_folders_state.borrow().save_all_in_one("results_empty_directories"),
NotebookMainEnum::EmptyFiles => shared_empty_files_state.borrow().save_all_in_one("results_empty_files"),
NotebookMainEnum::Temporary => shared_temporary_files_state.borrow().save_all_in_one("results_temporary_files"),
NotebookMainEnum::BigFiles => shared_big_files_state.borrow().save_all_in_one("results_big_files"),
NotebookMainEnum::SimilarImages => shared_similar_images_state.borrow().save_all_in_one("results_similar_images"),
NotebookMainEnum::SimilarVideos => shared_similar_videos_state.borrow().save_all_in_one("results_similar_videos"),
NotebookMainEnum::SameMusic => shared_same_music_state.borrow().save_all_in_one("results_same_music"),
NotebookMainEnum::Symlinks => shared_same_invalid_symlinks.borrow().save_all_in_one("results_invalid_symlinks"),
NotebookMainEnum::BrokenFiles => shared_broken_files_state.borrow().save_all_in_one("results_broken_files"),
NotebookMainEnum::BadExtensions => shared_bad_extensions_state.borrow().save_all_in_one("results_bad_extensions"),
};
let current_path = match env::current_dir() {
Ok(t) => t.to_string_lossy().to_string(),
Err(_) => "<unknown>".to_string(),
};
match result {
Ok(()) => (),
Err(e) => {
entry_info.set_text(&format!("Failed to save results to folder {current_path}, reason {e}"));
return;
}
}
post_save_things(
&to_notebook_main_enum(notebook_main.current_page().unwrap()),
&shared_buttons,
&entry_info,
&buttons_save_clone,
current_path,
);
});
}
fn post_save_things(
type_of_tab: &NotebookMainEnum,
shared_buttons: &Rc<RefCell<HashMap<NotebookMainEnum, HashMap<BottomButtonsEnum, bool>>>>,
entry_info: &Entry,
buttons_save: &Button,
current_path: String,
) {
entry_info.set_text(&flg!("save_results_to_file", name = current_path));
// Set state
{
buttons_save.hide();
*shared_buttons.borrow_mut().get_mut(type_of_tab).unwrap().get_mut(&BottomButtonsEnum::Save).unwrap() = false;
}
}