Add more GTK 4 compatibility fixes (#505)
* Add more compatibility fixes * Simplify
This commit is contained in:
parent
619e64466c
commit
c97bacad99
|
@ -75,13 +75,23 @@ fn move_things(tree_view: >k::TreeView, column_file_name: i32, column_path: i3
|
||||||
let tree_view = tree_view.clone();
|
let tree_view = tree_view.clone();
|
||||||
chooser.connect_response(move |file_chooser, response_type| {
|
chooser.connect_response(move |file_chooser, response_type| {
|
||||||
if response_type == gtk::ResponseType::Ok {
|
if response_type == gtk::ResponseType::Ok {
|
||||||
let g_files = file_chooser.files();
|
let folders: Vec<PathBuf>;
|
||||||
let mut folders: Vec<PathBuf> = Vec::new();
|
// GTK 3
|
||||||
for file in g_files {
|
folders = file_chooser.filenames();
|
||||||
if let Some(path_buf) = file.path() {
|
// GTK 4
|
||||||
folders.push(path_buf);
|
// folders = Vec::new();
|
||||||
}
|
// if let Some(g_files) = file_chooser.files() {
|
||||||
}
|
// for index in 0..g_files.n_items() {
|
||||||
|
// let file = &g_files.item(index);
|
||||||
|
// if let Some(file) = file {
|
||||||
|
// println!("{:?}", file);
|
||||||
|
// let ss = file.clone().downcast::<gtk4::gio::File>().unwrap();
|
||||||
|
// if let Some(path_buf) = ss.path() {
|
||||||
|
// folders.push(path_buf);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if folders.len() != 1 {
|
if folders.len() != 1 {
|
||||||
add_text_to_text_view(&text_view_errors, format!("{} {:?}", &fl!("move_files_choose_more_than_1_path"), folders).as_str());
|
add_text_to_text_view(&text_view_errors, format!("{} {:?}", &fl!("move_files_choose_more_than_1_path"), folders).as_str());
|
||||||
|
|
|
@ -91,13 +91,24 @@ fn add_chosen_directories(window_main: &Window, tree_view: &TreeView, excluded_i
|
||||||
let tree_view = tree_view.clone();
|
let tree_view = tree_view.clone();
|
||||||
file_chooser.connect_response(move |file_chooser, response_type| {
|
file_chooser.connect_response(move |file_chooser, response_type| {
|
||||||
if response_type == gtk::ResponseType::Ok {
|
if response_type == gtk::ResponseType::Ok {
|
||||||
let g_files = file_chooser.files();
|
let folders: Vec<PathBuf>;
|
||||||
let mut folders: Vec<PathBuf> = Vec::new();
|
// GTK 3
|
||||||
for file in g_files {
|
folders = file_chooser.filenames();
|
||||||
if let Some(path_buf) = file.path() {
|
// GTK 4
|
||||||
folders.push(path_buf);
|
// folders = Vec::new();
|
||||||
}
|
// if let Some(g_files) = file_chooser.files() {
|
||||||
}
|
// for index in 0..g_files.n_items() {
|
||||||
|
// let file = &g_files.item(index);
|
||||||
|
// if let Some(file) = file {
|
||||||
|
// println!("{:?}", file);
|
||||||
|
// let ss = file.clone().downcast::<gtk4::gio::File>().unwrap();
|
||||||
|
// if let Some(path_buf) = ss.path() {
|
||||||
|
// folders.push(path_buf);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
let list_store = get_list_store(&tree_view);
|
let list_store = get_list_store(&tree_view);
|
||||||
|
|
||||||
for file_entry in &folders {
|
for file_entry in &folders {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::fl;
|
use crate::fl;
|
||||||
use crate::help_functions::get_custom_label_from_label_with_image;
|
use crate::help_functions::get_custom_label_from_button_with_image;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::{Bin, Widget};
|
use gtk::{Bin, Widget};
|
||||||
|
|
||||||
|
@ -67,21 +67,21 @@ impl GuiBottomButtons {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn update_language(&self) {
|
pub fn update_language(&self) {
|
||||||
get_custom_label_from_label_with_image(&self.buttons_search.clone().upcast::<Bin>()).set_text(&fl!("bottom_search_button"));
|
get_custom_label_from_button_with_image(&self.buttons_search.clone().upcast::<Bin>()).set_text(&fl!("bottom_search_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_select.clone().upcast::<Bin>()).set_text(&fl!("bottom_select_button"));
|
get_custom_label_from_button_with_image(&self.buttons_select.clone().upcast::<Bin>()).set_text(&fl!("bottom_select_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_delete.clone().upcast::<Bin>()).set_text(&fl!("bottom_delete_button"));
|
get_custom_label_from_button_with_image(&self.buttons_delete.clone().upcast::<Bin>()).set_text(&fl!("bottom_delete_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_save.clone().upcast::<Bin>()).set_text(&fl!("bottom_save_button"));
|
get_custom_label_from_button_with_image(&self.buttons_save.clone().upcast::<Bin>()).set_text(&fl!("bottom_save_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_symlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_symlink_button"));
|
get_custom_label_from_button_with_image(&self.buttons_symlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_symlink_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_hardlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_hardlink_button"));
|
get_custom_label_from_button_with_image(&self.buttons_hardlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_hardlink_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_move.clone().upcast::<Bin>()).set_text(&fl!("bottom_move_button"));
|
get_custom_label_from_button_with_image(&self.buttons_move.clone().upcast::<Bin>()).set_text(&fl!("bottom_move_button"));
|
||||||
|
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_search.clone()).set_text(&fl!("bottom_search_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_search.clone()).set_text(&fl!("bottom_search_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_select.clone()).set_text(&fl!("bottom_select_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_select.clone()).set_text(&fl!("bottom_select_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_delete.clone()).set_text(&fl!("bottom_delete_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_delete.clone()).set_text(&fl!("bottom_delete_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_save.clone()).set_text(&fl!("bottom_save_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_save.clone()).set_text(&fl!("bottom_save_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_symlink.clone()).set_text(&fl!("bottom_symlink_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_symlink.clone()).set_text(&fl!("bottom_symlink_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_hardlink.clone()).set_text(&fl!("bottom_hardlink_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_hardlink.clone()).set_text(&fl!("bottom_hardlink_button"));
|
||||||
// get_custom_label_from_label_with_image(&self.buttons_move.clone()).set_text(&fl!("bottom_move_button"));
|
// get_custom_label_from_button_with_image(&self.buttons_move.clone()).set_text(&fl!("bottom_move_button"));
|
||||||
|
|
||||||
self.buttons_search.set_tooltip_text(Some(&fl!("bottom_search_button_tooltip")));
|
self.buttons_search.set_tooltip_text(Some(&fl!("bottom_search_button_tooltip")));
|
||||||
self.buttons_select.set_tooltip_text(Some(&fl!("bottom_select_button_tooltip")));
|
self.buttons_select.set_tooltip_text(Some(&fl!("bottom_select_button_tooltip")));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::fl;
|
use crate::fl;
|
||||||
use crate::help_functions::get_custom_label_from_label_with_image;
|
use crate::help_functions::get_custom_label_from_button_with_image;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::{Bin, Builder, EventControllerKey, Window};
|
use gtk::{Bin, Builder, EventControllerKey, Window};
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ impl GuiProgressDialog {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn update_language(&self) {
|
pub fn update_language(&self) {
|
||||||
get_custom_label_from_label_with_image(&self.button_stop_in_dialog.clone().upcast::<Bin>()).set_text(&fl!("progress_stop_button"));
|
get_custom_label_from_button_with_image(&self.button_stop_in_dialog.clone().upcast::<Bin>()).set_text(&fl!("progress_stop_button"));
|
||||||
|
|
||||||
self.label_progress_current_stage.set_label(&fl!("progress_current_stage"));
|
self.label_progress_current_stage.set_label(&fl!("progress_current_stage"));
|
||||||
self.label_progress_all_stages.set_label(&fl!("progress_all_stages"));
|
self.label_progress_all_stages.set_label(&fl!("progress_all_stages"));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::fl;
|
use crate::fl;
|
||||||
use crate::help_functions::get_custom_label_from_label_with_image;
|
use crate::help_functions::get_custom_label_from_button_with_image;
|
||||||
use crate::notebook_enums::NotebookUpperEnum;
|
use crate::notebook_enums::NotebookUpperEnum;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::{Bin, EventControllerKey, TreeView};
|
use gtk::{Bin, EventControllerKey, TreeView};
|
||||||
|
@ -103,12 +103,20 @@ impl GuiUpperNotebook {
|
||||||
self.check_button_recursive.set_label(&fl!("upper_recursive_button"));
|
self.check_button_recursive.set_label(&fl!("upper_recursive_button"));
|
||||||
self.check_button_recursive.set_tooltip_text(Some(&fl!("upper_recursive_button_tooltip")));
|
self.check_button_recursive.set_tooltip_text(Some(&fl!("upper_recursive_button_tooltip")));
|
||||||
|
|
||||||
get_custom_label_from_label_with_image(&self.buttons_manual_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_included_button"));
|
get_custom_label_from_button_with_image(&self.buttons_manual_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_included_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_included_button"));
|
get_custom_label_from_button_with_image(&self.buttons_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_included_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_remove_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_included_button"));
|
get_custom_label_from_button_with_image(&self.buttons_remove_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_included_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_manual_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_excluded_button"));
|
get_custom_label_from_button_with_image(&self.buttons_manual_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_excluded_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_excluded_button"));
|
get_custom_label_from_button_with_image(&self.buttons_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_excluded_button"));
|
||||||
get_custom_label_from_label_with_image(&self.buttons_remove_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_excluded_button"));
|
get_custom_label_from_button_with_image(&self.buttons_remove_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_excluded_button"));
|
||||||
|
|
||||||
|
// GTK 4
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_manual_add_included_directory.clone()).set_text(&fl!("upper_manual_add_included_button"));
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_add_included_directory.clone()).set_text(&fl!("upper_add_included_button"));
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_remove_included_directory.clone()).set_text(&fl!("upper_remove_included_button"));
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_manual_add_excluded_directory.clone()).set_text(&fl!("upper_manual_add_excluded_button"));
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_add_excluded_directory.clone()).set_text(&fl!("upper_add_excluded_button"));
|
||||||
|
// get_custom_label_from_label_with_image(&self.buttons_remove_excluded_directory.clone()).set_text(&fl!("upper_remove_excluded_button"));
|
||||||
|
|
||||||
self.buttons_manual_add_included_directory.set_tooltip_text(Some(&fl!("upper_manual_add_included_button_tooltip")));
|
self.buttons_manual_add_included_directory.set_tooltip_text(Some(&fl!("upper_manual_add_included_button_tooltip")));
|
||||||
self.buttons_add_included_directory.set_tooltip_text(Some(&fl!("upper_add_included_button_tooltip")));
|
self.buttons_add_included_directory.set_tooltip_text(Some(&fl!("upper_add_included_button_tooltip")));
|
||||||
|
|
|
@ -542,7 +542,7 @@ pub fn clean_invalid_headers(model: >k::ListStore, column_color: i32) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_custom_label_from_label_with_image(button: >k::Bin) -> gtk::Label {
|
pub fn get_custom_label_from_button_with_image(button: >k::Bin) -> gtk::Label {
|
||||||
let internal_box = button.child().unwrap().downcast::<gtk::Box>().unwrap();
|
let internal_box = button.child().unwrap().downcast::<gtk::Box>().unwrap();
|
||||||
for child in internal_box.children() {
|
for child in internal_box.children() {
|
||||||
if let Ok(t) = child.downcast::<gtk::Label>() {
|
if let Ok(t) = child.downcast::<gtk::Label>() {
|
||||||
|
@ -551,15 +551,31 @@ pub fn get_custom_label_from_label_with_image(button: >k::Bin) -> gtk::Label {
|
||||||
}
|
}
|
||||||
panic!("Button doesn't have proper custom label child");
|
panic!("Button doesn't have proper custom label child");
|
||||||
}
|
}
|
||||||
// pub fn get_custom_label_from_label_with_image<P: IsA<gtk::Widget>>(button: &P) -> gtk::Label {
|
|
||||||
// let internal_box = button.widget().unwrap().downcast::<gtk::Box>().unwrap();
|
// GTK 4
|
||||||
// for child in internal_box.children() {
|
// pub fn get_custom_label_from_button_with_image<P: IsA<gtk4::Widget>>(button: &P) -> gtk4::Label {
|
||||||
// if let Ok(t) = child.downcast::<gtk::Label>() {
|
// let internal_box = button.first_child().unwrap().downcast::<gtk4::Box>().unwrap();
|
||||||
|
// for child in get_all_children(&internal_box) {
|
||||||
|
// if let Ok(t) = child.downcast::<gtk4::Label>() {
|
||||||
// return t;
|
// return t;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// panic!("Button doesn't have proper custom label child");
|
// panic!("Button doesn't have proper custom label child");
|
||||||
// }
|
// }
|
||||||
|
// TODO needs GTK 4.6 to be able to set as child of menu button a box
|
||||||
|
// pub fn get_custom_label_from_menubutton_with_image<P: IsA<gtk4::Widget>>(button: &P) -> gtk4::Label {
|
||||||
|
// println!("{:?}", get_all_children(button));
|
||||||
|
// for c1 in get_all_children(button) {
|
||||||
|
// if let Ok(internal_box) = c1.downcast::<gtk4::Box>() {
|
||||||
|
// for child in get_all_children(&internal_box) {
|
||||||
|
// if let Ok(t) = child.downcast::<gtk4::Label>() {
|
||||||
|
// return t;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// panic!("Menu Button doesn't have proper custom label child");
|
||||||
|
// }
|
||||||
|
|
||||||
// GTK 4
|
// GTK 4
|
||||||
// pub fn get_all_children<P: IsA<gtk::Widget>>(wid: &P) -> Vec<gtk::Widget> {
|
// pub fn get_all_children<P: IsA<gtk::Widget>>(wid: &P) -> Vec<gtk::Widget> {
|
||||||
|
|
|
@ -466,6 +466,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn connect_event_mouse(gui_data: &GuiData) {
|
fn connect_event_mouse(gui_data: &GuiData) {
|
||||||
|
for tree_view in [
|
||||||
|
gui_data.main_notebook.tree_view_duplicate_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_empty_folder_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_empty_files_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_temporary_files_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_big_files_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_similar_images_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_similar_videos_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_same_music_finder.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_invalid_symlinks.clone(),
|
||||||
|
gui_data.main_notebook.tree_view_broken_files.clone(),
|
||||||
|
] {
|
||||||
|
tree_view.connect_button_press_event(opening_double_click_function);
|
||||||
|
}
|
||||||
// Duplicate
|
// Duplicate
|
||||||
{
|
{
|
||||||
let text_view_errors = gui_data.text_view_errors.clone();
|
let text_view_errors = gui_data.text_view_errors.clone();
|
||||||
|
@ -474,7 +488,6 @@ fn connect_event_mouse(gui_data: &GuiData) {
|
||||||
let preview_path = gui_data.preview_path.clone();
|
let preview_path = gui_data.preview_path.clone();
|
||||||
let tree_view = gui_data.main_notebook.tree_view_duplicate_finder.clone();
|
let tree_view = gui_data.main_notebook.tree_view_duplicate_finder.clone();
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
|
||||||
tree_view.connect_button_release_event(move |tree_view, _event| {
|
tree_view.connect_button_release_event(move |tree_view, _event| {
|
||||||
let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
|
let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
|
||||||
let preview_path = preview_path.clone();
|
let preview_path = preview_path.clone();
|
||||||
|
@ -483,30 +496,6 @@ fn connect_event_mouse(gui_data: &GuiData) {
|
||||||
gtk::Inhibit(false)
|
gtk::Inhibit(false)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Empty Folders
|
|
||||||
{
|
|
||||||
let tree_view = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
|
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
|
||||||
}
|
|
||||||
// Empty Files
|
|
||||||
{
|
|
||||||
let tree_view = gui_data.main_notebook.tree_view_empty_files_finder.clone();
|
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
|
||||||
}
|
|
||||||
// Temporary Files
|
|
||||||
{
|
|
||||||
let tree_view = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
|
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
|
||||||
}
|
|
||||||
// Big Files
|
|
||||||
{
|
|
||||||
let tree_view = gui_data.main_notebook.tree_view_big_files_finder.clone();
|
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
|
||||||
}
|
|
||||||
// Similar Images
|
// Similar Images
|
||||||
{
|
{
|
||||||
let text_view_errors = gui_data.text_view_errors.clone();
|
let text_view_errors = gui_data.text_view_errors.clone();
|
||||||
|
@ -523,32 +512,79 @@ fn connect_event_mouse(gui_data: &GuiData) {
|
||||||
gtk::Inhibit(false)
|
gtk::Inhibit(false)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Similar Videos
|
|
||||||
{
|
|
||||||
let tree_view = gui_data.main_notebook.tree_view_similar_videos_finder.clone();
|
|
||||||
|
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
// GTK 4
|
||||||
}
|
// for gc in [
|
||||||
// Same Music
|
// gui_data.main_notebook.gc_tree_view_duplicate_finder.clone(),
|
||||||
{
|
// gui_data.main_notebook.gc_tree_view_empty_folder_finder.clone(),
|
||||||
let tree_view = gui_data.main_notebook.tree_view_same_music_finder.clone();
|
// gui_data.main_notebook.gc_tree_view_empty_files_finder.clone(),
|
||||||
|
// gui_data.main_notebook.gc_tree_view_temporary_files_finder.clone(),
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
// gui_data.main_notebook.gc_tree_view_big_files_finder.clone(),
|
||||||
}
|
// gui_data.main_notebook.gc_tree_view_similar_images_finder.clone(),
|
||||||
// Invalid Symlinks
|
// gui_data.main_notebook.gc_tree_view_similar_videos_finder.clone(),
|
||||||
{
|
// gui_data.main_notebook.gc_tree_view_same_music_finder.clone(),
|
||||||
let tree_view = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
|
// gui_data.main_notebook.gc_tree_view_invalid_symlinks.clone(),
|
||||||
|
// gui_data.main_notebook.gc_tree_view_broken_files.clone(),
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
// ] {
|
||||||
}
|
// gc.set_button(0);
|
||||||
// Broken Files
|
// gc.connect_pressed(opening_double_click_function);
|
||||||
{
|
// }
|
||||||
let tree_view = gui_data.main_notebook.tree_view_broken_files.clone();
|
//
|
||||||
|
// // Duplicate
|
||||||
tree_view.connect_button_press_event(opening_double_click_function);
|
// {
|
||||||
}
|
// let text_view_errors = gui_data.text_view_errors.clone();
|
||||||
|
// let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_duplicates.clone();
|
||||||
|
// let image_preview = gui_data.main_notebook.image_preview_duplicates.clone();
|
||||||
|
// let preview_path = gui_data.preview_path.clone();
|
||||||
|
//
|
||||||
|
// let gc = gui_data.main_notebook.gc_tree_view_duplicate_finder.clone();
|
||||||
|
//
|
||||||
|
// gc.connect_released(move |gc, _event, _, _| {
|
||||||
|
// let tree_view = gc.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
|
||||||
|
// let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
|
||||||
|
// let preview_path = preview_path.clone();
|
||||||
|
// show_preview(&tree_view, &text_view_errors, &check_button_settings_show_preview, &image_preview, preview_path, nb_object.column_path, nb_object.column_name);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// // Similar Images
|
||||||
|
// {
|
||||||
|
// let text_view_errors = gui_data.text_view_errors.clone();
|
||||||
|
// let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
|
||||||
|
// let preview_path = gui_data.preview_path.clone();
|
||||||
|
// let image_preview = gui_data.main_notebook.image_preview_similar_images.clone();
|
||||||
|
//
|
||||||
|
// let gc = gui_data.main_notebook.gc_tree_view_similar_images_finder.clone();
|
||||||
|
//
|
||||||
|
// gc.connect_released(move |gc, _event, _, _| {
|
||||||
|
// let tree_view = gc.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
|
||||||
|
// let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::SimilarImages as usize];
|
||||||
|
// let preview_path = preview_path.clone();
|
||||||
|
// show_preview(&tree_view, &text_view_errors, &check_button_settings_show_preview, &image_preview, preview_path, nb_object.column_path, nb_object.column_name);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
fn connect_event_buttons(gui_data: &GuiData) {
|
fn connect_event_buttons(gui_data: &GuiData) {
|
||||||
|
for evk in [
|
||||||
|
//gui_data.main_notebook.evk_tree_view_duplicate_finder.clone(), // Manual - needs to show/hide preview
|
||||||
|
gui_data.main_notebook.evk_tree_view_empty_folder_finder.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_empty_files_finder.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_temporary_files_finder.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_big_files_finder.clone(),
|
||||||
|
//gui_data.main_notebook.evk_tree_view_similar_images_finder.clone(),// Manual - needs to show/hide preview
|
||||||
|
gui_data.main_notebook.evk_tree_view_similar_videos_finder.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_same_music_finder.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_invalid_symlinks.clone(),
|
||||||
|
gui_data.main_notebook.evk_tree_view_broken_files.clone(),
|
||||||
|
] {
|
||||||
|
let gui_data_clone = gui_data.clone();
|
||||||
|
evk.connect_key_pressed(opening_enter_function_ported);
|
||||||
|
|
||||||
|
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||||
|
if key_code == KEY_DELETE {
|
||||||
|
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
// Duplicate
|
// Duplicate
|
||||||
{
|
{
|
||||||
let gui_data_clone = gui_data.clone();
|
let gui_data_clone = gui_data.clone();
|
||||||
|
@ -577,58 +613,6 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Empty Folder
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_empty_folder_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Empty Files
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_empty_files_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Temporary
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_temporary_files_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Big Files
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_big_files_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Similar Images
|
// Similar Images
|
||||||
{
|
{
|
||||||
let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
|
let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
|
||||||
|
@ -657,58 +641,6 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Similar Videos
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_similar_videos_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Same music
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_same_music_finder.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Invalid Symlinks
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_invalid_symlinks.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Broken Files
|
|
||||||
{
|
|
||||||
let gui_data_clone = gui_data.clone();
|
|
||||||
let evk = gui_data.main_notebook.evk_tree_view_broken_files.clone();
|
|
||||||
|
|
||||||
evk.connect_key_pressed(opening_enter_function_ported);
|
|
||||||
|
|
||||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
|
||||||
if key_code == KEY_DELETE {
|
|
||||||
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_settings_show_preview: &CheckButton, image_preview: &Image, preview_path: Rc<RefCell<String>>, column_path: i32, column_name: i32) {
|
fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_settings_show_preview: &CheckButton, image_preview: &Image, preview_path: Rc<RefCell<String>>, column_path: i32, column_name: i32) {
|
||||||
|
|
|
@ -16,8 +16,18 @@ pub fn opening_enter_function_ported(event_controller: >k::EventControllerKey,
|
||||||
false // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
|
false // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
|
||||||
}
|
}
|
||||||
|
|
||||||
// GTK 4
|
pub fn opening_double_click_function(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit {
|
||||||
// pub fn opening_enter_function_ported_(event_controller: >k4::EventControllerKey, _key: gdk4::keys::Key, key_code: u32, _modifier_type: ModifierType) -> gtk4::Inhibit {
|
let nt_object = get_notebook_object_from_tree_view(tree_view);
|
||||||
|
if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 {
|
||||||
|
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
|
||||||
|
} else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 {
|
||||||
|
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
|
||||||
|
}
|
||||||
|
gtk::Inhibit(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// // GTK 4
|
||||||
|
// pub fn opening_enter_function_ported(event_controller: >k4::EventControllerKey, _key: gdk4::keys::Key, key_code: u32, _modifier_type: ModifierType) -> gtk4::Inhibit {
|
||||||
// let tree_view = event_controller.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
|
// let tree_view = event_controller.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
|
||||||
// #[cfg(debug_assertions)]
|
// #[cfg(debug_assertions)]
|
||||||
// {
|
// {
|
||||||
|
@ -28,16 +38,19 @@ pub fn opening_enter_function_ported(event_controller: >k::EventControllerKey,
|
||||||
// handle_tree_keypress(&tree_view, key_code, nt_object.column_name, nt_object.column_path, nt_object.column_selection);
|
// handle_tree_keypress(&tree_view, key_code, nt_object.column_name, nt_object.column_path, nt_object.column_selection);
|
||||||
// Inhibit(false) // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
|
// Inhibit(false) // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
|
||||||
// }
|
// }
|
||||||
|
//
|
||||||
pub fn opening_double_click_function(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit {
|
// pub fn opening_double_click_function(gesture_click: &GestureClick, number_of_clicks: i32, _b: f64, _c: f64) {
|
||||||
let nt_object = get_notebook_object_from_tree_view(tree_view);
|
// let tree_view = gesture_click.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
|
||||||
if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 {
|
//
|
||||||
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
|
// let nt_object = get_notebook_object_from_tree_view(&tree_view);
|
||||||
} else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 {
|
// if number_of_clicks == 2 {
|
||||||
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
|
// if gesture_click.current_button() == 1 {
|
||||||
}
|
// common_open_function(&tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
|
||||||
gtk::Inhibit(false)
|
// } else if gesture_click.current_button() == 3 {
|
||||||
}
|
// common_open_function(&tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
enum OpenMode {
|
enum OpenMode {
|
||||||
OnlyPath,
|
OnlyPath,
|
||||||
|
|
Loading…
Reference in a new issue