1
0
Fork 0
mirror of synced 2024-05-01 11:02:53 +12:00

Add support for delete button (#159)

This commit is contained in:
Rafał Mikrut 2020-12-29 19:31:09 +01:00 committed by GitHub
parent f622504356
commit 10c32c90c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 201 additions and 40 deletions

View file

@ -748,6 +748,17 @@ fn load_hashes_from_file(text_messages: &mut Messages) -> Option<HashMap<String,
hash[i] = uuu[4 + i].parse::<u8>().unwrap();
}
#[cfg(debug_assertions)]
{
let mut have_at_least: u8 = 0;
for i in hash.iter() {
if *i == 0 {
have_at_least += 1;
}
}
assert!(have_at_least != hash.len() as u8);
}
hashmap_loaded_entries.insert(
uuu[0].to_string(),
FileEntry {

View file

@ -54,23 +54,23 @@ pub fn connect_button_delete(gui_data: &GuiData) {
match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_main_duplicate_finder_label" => {
tree_remove(scrolled_window_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
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" => {
empty_folder_remover(scrolled_window_main_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
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" => {
basic_remove(scrolled_window_main_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
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" => {
basic_remove(scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
basic_remove(&scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
"notebook_big_main_file_finder" => {
basic_remove(scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
basic_remove(&scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
"notebook_main_similar_images_finder_label" => {
tree_remove(
scrolled_window_similar_images_finder.clone(),
&scrolled_window_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
@ -78,20 +78,20 @@ pub fn connect_button_delete(gui_data: &GuiData) {
);
}
"notebook_main_zeroed_files_finder" => {
basic_remove(scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
basic_remove(&scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
"notebook_main_same_music_finder" => {
tree_remove(scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
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" => {
basic_remove(scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
basic_remove(&scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
e => panic!("Not existent {}", e),
}
});
}
fn empty_folder_remover(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
pub fn empty_folder_remover(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
@ -177,7 +177,7 @@ fn empty_folder_remover(scrolled_window: gtk::ScrolledWindow, column_file_name:
selection.unselect_all();
}
fn basic_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
@ -212,7 +212,7 @@ fn basic_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, col
// Remove all occurrences - remove every element which have same path and name as even non selected ones
//
fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
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();
let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();

View file

@ -1,5 +1,6 @@
extern crate gtk;
use crate::gui_data::GuiData;
use crate::help_functions::{get_list_store, get_tree_view};
use gtk::prelude::*;
pub fn connect_selection_of_directories(gui_data: &GuiData) {
@ -69,17 +70,15 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
let buttons_remove_excluded_directory = gui_data.buttons_remove_excluded_directory.clone();
let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
buttons_remove_excluded_directory.connect_clicked(move |_| {
let tree_view = scrolled_window_excluded_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let tree_view = get_tree_view(&scrolled_window_excluded_directories);
let list_store = get_list_store(&scrolled_window_excluded_directories);
let selection = tree_view.get_selection();
let (_, tree_iter) = match selection.get_selected() {
Some(t) => t,
None => {
return;
}
};
list_store.remove(&tree_iter);
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
for tree_path in vec_tree_path.iter().rev() {
list_store.remove(&list_store.get_iter(tree_path).unwrap());
}
});
}
// Remove Included Folder
@ -87,17 +86,15 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
let buttons_remove_included_directory = gui_data.buttons_remove_included_directory.clone();
let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
buttons_remove_included_directory.connect_clicked(move |_| {
let tree_view = scrolled_window_included_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let tree_view = get_tree_view(&scrolled_window_included_directories);
let list_store = get_list_store(&scrolled_window_included_directories);
let selection = tree_view.get_selection();
let (_, tree_iter) = match selection.get_selected() {
Some(t) => t,
None => {
return;
}
};
list_store.remove(&tree_iter);
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
for tree_path in vec_tree_path.iter().rev() {
list_store.remove(&list_store.get_iter(tree_path).unwrap());
}
});
}
}

View file

@ -1,3 +1,4 @@
use crate::connect_button_delete::{basic_remove, empty_folder_remover, tree_remove};
use crate::create_tree_view::*;
use crate::double_click_opening::*;
use crate::gui_data::*;
@ -64,8 +65,24 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_duplicates);
tree_view.connect_button_release_event(move |_tree_view, _e| {
// println!("{}", e.get_button());
gtk::Inhibit(false)
});
scrolled_window_duplicate_finder.add(&tree_view);
scrolled_window_duplicate_finder.show_all();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(&scrolled_window_duplicate_finder, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Empty Folders
{
@ -82,6 +99,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_main_empty_folder_finder.add(&tree_view);
scrolled_window_main_empty_folder_finder.show_all();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
empty_folder_remover(&scrolled_window_main_empty_folder_finder, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Empty Files
{
@ -98,6 +127,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_main_empty_files_finder.add(&tree_view);
scrolled_window_main_empty_files_finder.show_all();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_main_empty_files_finder, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Temporary Files
{
@ -114,6 +155,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_main_temporary_files_finder.add(&tree_view);
scrolled_window_main_temporary_files_finder.show_all();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_main_temporary_files_finder, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Big Files
{
@ -130,6 +183,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_big_files_finder.add(&tree_view);
scrolled_window_big_files_finder.show_all();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_big_files_finder, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Similar Images
{
@ -229,10 +294,26 @@ pub fn initialize_gui(gui_data: &GuiData) {
gtk::Inhibit(false)
});
// tree_view.connect_button_press_event(opening_double_click_function_similar_images);
scrolled_window_similar_images_finder.add(&tree_view);
scrolled_window_similar_images_finder.show_all();
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(
&scrolled_window_similar_images_finder,
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
&gui_data,
);
}
}
gtk::Inhibit(false)
});
}
// Zeroed Files
{
@ -249,6 +330,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_zeroed_files_finder.add(&tree_view);
scrolled_window_zeroed_files_finder.show_all();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_zeroed_files_finder, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Same Music
{
@ -280,6 +373,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_same_music_finder.add(&tree_view);
scrolled_window_same_music_finder.show_all();
let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(&scrolled_window_same_music_finder, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
// Invalid Symlinks
{
@ -296,6 +401,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
scrolled_window_invalid_symlinks.add(&tree_view);
scrolled_window_invalid_symlinks.show_all();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_invalid_symlinks, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
});
}
}
@ -304,28 +421,64 @@ pub fn initialize_gui(gui_data: &GuiData) {
let col_types: [glib::types::Type; 1] = [glib::types::Type::String];
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
let mut tree_view_included_directory: gtk::TreeView = TreeView::with_model(&list_store);
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
tree_view_included_directory.get_selection().set_mode(SelectionMode::Single);
tree_view.get_selection().set_mode(SelectionMode::Multiple);
create_tree_view_directories(&mut tree_view_included_directory);
create_tree_view_directories(&mut tree_view);
scrolled_window_included_directories.add(&tree_view_included_directory);
scrolled_window_included_directories.add(&tree_view);
scrolled_window_included_directories.show_all();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_included_directories);
let list_store = get_list_store(&scrolled_window_included_directories);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
for tree_path in vec_tree_path.iter().rev() {
list_store.remove(&list_store.get_iter(tree_path).unwrap());
}
}
}
gtk::Inhibit(false)
});
}
// Set Excluded Directory
{
let col_types: [glib::types::Type; 1] = [glib::types::Type::String];
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
let mut tree_view_excluded_directory: gtk::TreeView = TreeView::with_model(&list_store);
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
tree_view_excluded_directory.get_selection().set_mode(SelectionMode::Single);
tree_view.get_selection().set_mode(SelectionMode::Multiple);
create_tree_view_directories(&mut tree_view_excluded_directory);
create_tree_view_directories(&mut tree_view);
scrolled_window_excluded_directories.add(&tree_view_excluded_directory);
scrolled_window_excluded_directories.add(&tree_view);
scrolled_window_excluded_directories.show_all();
tree_view.connect_key_release_event(move |_tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_excluded_directories);
let list_store = get_list_store(&scrolled_window_excluded_directories);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
for tree_path in vec_tree_path.iter().rev() {
list_store.remove(&list_store.get_iter(tree_path).unwrap());
}
}
}
gtk::Inhibit(false)
});
}
}
}