More GTK4 compatibility fixes (#503)
* Don't create new treeview * Dont * ABC * Detlaff * Update
This commit is contained in:
parent
cf668d02a7
commit
619e64466c
99
Cargo.lock
generated
99
Cargo.lock
generated
|
@ -219,9 +219,9 @@ checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c"
|
|||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.7.2"
|
||||
version = "1.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b"
|
||||
checksum = "439989e6b8c38d1b6570a384ef1e49c8848128f5a97f3914baef02920842712f"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
|
@ -769,9 +769,9 @@ checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"
|
|||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e"
|
||||
checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
@ -784,9 +784,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27"
|
||||
checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
|
@ -794,15 +794,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445"
|
||||
checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97"
|
||||
checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
|
@ -811,16 +811,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11"
|
||||
checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd"
|
||||
checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"proc-macro-hack",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
|
@ -828,22 +830,23 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af"
|
||||
checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12"
|
||||
checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.18"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e"
|
||||
checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
|
@ -853,6 +856,8 @@ dependencies = [
|
|||
"memchr",
|
||||
"pin-project-lite",
|
||||
"pin-utils",
|
||||
"proc-macro-hack",
|
||||
"proc-macro-nested",
|
||||
"slab",
|
||||
]
|
||||
|
||||
|
@ -1150,9 +1155,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "i18n-embed"
|
||||
version = "0.13.0"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d8be76966dc82fc0c1fe50bac057170294594ab2a78a0e5d82f85227248a19a1"
|
||||
checksum = "39a0b4598fcd199eb5da38f70ece82903b178ad638839661c00612719bcfc0ad"
|
||||
dependencies = [
|
||||
"fluent",
|
||||
"fluent-langneg",
|
||||
|
@ -1292,9 +1297,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "0.4.8"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
|
||||
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||
|
||||
[[package]]
|
||||
name = "jni"
|
||||
|
@ -1368,9 +1373,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.109"
|
||||
version = "0.2.112"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f98a04dce437184842841303488f70d0188c5f51437d2a834dc097eafa909a01"
|
||||
checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
|
@ -1772,9 +1777,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.8.0"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
|
||||
checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
|
@ -1877,9 +1882,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.23"
|
||||
version = "0.3.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1a3ea4f0dd7f1f3e512cf97bf100819aa547f36a6eccac8dbaae839eb92363e"
|
||||
checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
|
||||
|
||||
[[package]]
|
||||
name = "png"
|
||||
|
@ -1952,10 +1957,22 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.33"
|
||||
name = "proc-macro-hack"
|
||||
version = "0.5.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb37d2df5df740e582f28f8560cf425f52bb267d872fe58358eadb554909f07a"
|
||||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-nested"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1"
|
||||
dependencies = [
|
||||
"unicode-xid",
|
||||
]
|
||||
|
@ -2188,9 +2205,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.6"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568"
|
||||
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
|
@ -2239,18 +2256,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.131"
|
||||
version = "1.0.132"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1"
|
||||
checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.131"
|
||||
version = "1.0.132"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2"
|
||||
checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -2259,9 +2276,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.72"
|
||||
version = "1.0.73"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527"
|
||||
checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
|
|
@ -56,7 +56,7 @@ impl Extensions {
|
|||
}
|
||||
|
||||
pub fn matches_filename(&self, file_name: &str) -> bool {
|
||||
assert_eq!(file_name, file_name.to_lowercase()); // TODO comment this this after tests
|
||||
// assert_eq!(file_name, file_name.to_lowercase());
|
||||
if !self.file_extensions.is_empty() && !self.file_extensions.iter().any(|e| file_name.ends_with(e)) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,14 @@ fn move_things(tree_view: >k::TreeView, column_file_name: i32, column_path: i3
|
|||
let tree_view = tree_view.clone();
|
||||
chooser.connect_response(move |file_chooser, response_type| {
|
||||
if response_type == gtk::ResponseType::Ok {
|
||||
let folders = file_chooser.filenames();
|
||||
let g_files = file_chooser.files();
|
||||
let mut folders: Vec<PathBuf> = Vec::new();
|
||||
for file in g_files {
|
||||
if let Some(path_buf) = file.path() {
|
||||
folders.push(path_buf);
|
||||
}
|
||||
}
|
||||
|
||||
if folders.len() != 1 {
|
||||
add_text_to_text_view(&text_view_errors, format!("{} {:?}", &fl!("move_files_choose_more_than_1_path"), folders).as_str());
|
||||
} else {
|
||||
|
|
|
@ -19,4 +19,11 @@ pub fn connect_button_stop(gui_data: &GuiData) {
|
|||
stop_sender.send(()).unwrap();
|
||||
gtk::Inhibit(false)
|
||||
});
|
||||
|
||||
// let gc_button_stop_in_dialog = gui_data.progress_window.gc_button_stop_in_dialog.clone();
|
||||
// let stop_sender = gui_data.stop_sender.clone();
|
||||
// gc_button_stop_in_dialog.connect_button_release_event(move |_, _e| {
|
||||
// stop_sender.send(()).unwrap();
|
||||
// gtk::Inhibit(false)
|
||||
// });
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use gtk::prelude::*;
|
||||
use gtk::{ResponseType, TreeView, Window};
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[cfg(target_family = "windows")]
|
||||
use czkawka_core::common::Common;
|
||||
|
@ -80,26 +81,31 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
|
|||
fn add_chosen_directories(window_main: &Window, tree_view: &TreeView, excluded_items: bool) {
|
||||
let folders_to = if excluded_items { fl!("exclude_folders_dialog_title") } else { fl!("include_folders_dialog_title") };
|
||||
|
||||
let chooser = gtk::FileChooserDialog::builder().title(&folders_to).action(gtk::FileChooserAction::SelectFolder).transient_for(window_main).modal(true).build();
|
||||
chooser.add_button(&fl!("general_ok_button"), ResponseType::Ok);
|
||||
chooser.add_button(&fl!("general_close_button"), ResponseType::Cancel);
|
||||
let file_chooser = gtk::FileChooserDialog::builder().title(&folders_to).action(gtk::FileChooserAction::SelectFolder).transient_for(window_main).modal(true).build();
|
||||
file_chooser.add_button(&fl!("general_ok_button"), ResponseType::Ok);
|
||||
file_chooser.add_button(&fl!("general_close_button"), ResponseType::Cancel);
|
||||
|
||||
chooser.set_select_multiple(true);
|
||||
chooser.show_all();
|
||||
file_chooser.set_select_multiple(true);
|
||||
file_chooser.show_all();
|
||||
|
||||
let tree_view = tree_view.clone();
|
||||
chooser.connect_response(move |chooser, response_type| {
|
||||
file_chooser.connect_response(move |file_chooser, response_type| {
|
||||
if response_type == gtk::ResponseType::Ok {
|
||||
let folder = chooser.filenames();
|
||||
|
||||
let g_files = file_chooser.files();
|
||||
let mut folders: Vec<PathBuf> = Vec::new();
|
||||
for file in g_files {
|
||||
if let Some(path_buf) = file.path() {
|
||||
folders.push(path_buf);
|
||||
}
|
||||
}
|
||||
let list_store = get_list_store(&tree_view);
|
||||
|
||||
for file_entry in &folder {
|
||||
for file_entry in &folders {
|
||||
let values: [(u32, &dyn ToValue); 1] = [(ColumnsDirectory::Path as u32, &file_entry.to_string_lossy().to_string())];
|
||||
list_store.set(&list_store.append(), &values);
|
||||
}
|
||||
}
|
||||
chooser.close();
|
||||
file_chooser.close();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ use gtk::TreeViewColumn;
|
|||
|
||||
use crate::help_functions::*;
|
||||
|
||||
pub fn create_tree_view_duplicates(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_duplicates(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -61,7 +61,7 @@ pub fn create_tree_view_duplicates(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_empty_folders(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_empty_folders(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -114,7 +114,7 @@ pub fn create_tree_view_empty_folders(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_big_files(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_big_files(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -177,7 +177,7 @@ pub fn create_tree_view_big_files(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_temporary_files(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_temporary_files(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -230,7 +230,7 @@ pub fn create_tree_view_temporary_files(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_empty_files(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_empty_files(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -283,7 +283,7 @@ pub fn create_tree_view_empty_files(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_similar_images(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_similar_images(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -374,7 +374,7 @@ pub fn create_tree_view_similar_images(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_similar_videos(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_similar_videos(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -443,7 +443,7 @@ pub fn create_tree_view_similar_videos(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_directories(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_directories(tree_view: >k::TreeView) {
|
||||
let renderer = gtk::CellRendererText::new();
|
||||
let column: gtk::TreeViewColumn = TreeViewColumn::new();
|
||||
column.pack_start(&renderer, true);
|
||||
|
@ -453,7 +453,7 @@ pub fn create_tree_view_directories(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_headers_visible(false);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_same_music(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_same_music(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -577,7 +577,7 @@ pub fn create_tree_view_same_music(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_invalid_symlinks(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_invalid_symlinks(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
@ -650,7 +650,7 @@ pub fn create_tree_view_invalid_symlinks(tree_view: &mut gtk::TreeView) {
|
|||
tree_view.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_broken_files(tree_view: &mut gtk::TreeView) {
|
||||
pub fn create_tree_view_broken_files(tree_view: >k::TreeView) {
|
||||
let model = get_list_store(tree_view);
|
||||
|
||||
let renderer = gtk::CellRendererToggle::new();
|
||||
|
|
|
@ -75,6 +75,14 @@ impl GuiBottomButtons {
|
|||
get_custom_label_from_label_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_label_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_label_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_label_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_label_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_select.set_tooltip_text(Some(&fl!("bottom_select_button_tooltip")));
|
||||
self.buttons_delete.set_tooltip_text(Some(&fl!("bottom_delete_button_tooltip")));
|
||||
|
|
|
@ -44,6 +44,17 @@ pub struct GuiMainNotebook {
|
|||
pub evk_tree_view_invalid_symlinks: gtk::EventControllerKey,
|
||||
pub evk_tree_view_broken_files: gtk::EventControllerKey,
|
||||
|
||||
// pub gc_tree_view_duplicate_finder: gtk4::GestureClick,
|
||||
// pub gc_tree_view_empty_folder_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_empty_files_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_temporary_files_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_big_files_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_similar_images_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_similar_videos_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_same_music_finder: gtk::GestureClick,
|
||||
// pub gc_tree_view_invalid_symlinks: gtk::GestureClick,
|
||||
// pub gc_tree_view_broken_files: gtk::GestureClick,
|
||||
|
||||
// General
|
||||
|
||||
// Duplicate
|
||||
|
@ -154,6 +165,27 @@ impl GuiMainNotebook {
|
|||
// let evk_tree_view_broken_files: gtk4::EventControllerKey = EventControllerKey::new();
|
||||
// tree_view_broken_files.add_controller(&evk_tree_view_broken_files);
|
||||
|
||||
// let gc_tree_view_duplicate_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_duplicate_finder.add_controller(&gc_tree_view_duplicate_finder);
|
||||
// let gc_tree_view_empty_folder_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_empty_folder_finder.add_controller(&gc_tree_view_empty_folder_finder);
|
||||
// let gc_tree_view_empty_files_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_empty_files_finder.add_controller(&gc_tree_view_empty_files_finder);
|
||||
// let gc_tree_view_temporary_files_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_temporary_files_finder.add_controller(&gc_tree_view_temporary_files_finder);
|
||||
// let gc_tree_view_big_files_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_big_files_finder.add_controller(&gc_tree_view_big_files_finder);
|
||||
// let gc_tree_view_similar_images_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_similar_images_finder.add_controller(&gc_tree_view_similar_images_finder);
|
||||
// let gc_tree_view_similar_videos_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_similar_videos_finder.add_controller(&gc_tree_view_similar_videos_finder);
|
||||
// let gc_tree_view_same_music_finder: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_same_music_finder.add_controller(&gc_tree_view_same_music_finder);
|
||||
// let gc_tree_view_invalid_symlinks: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_invalid_symlinks.add_controller(&gc_tree_view_invalid_symlinks);
|
||||
// let gc_tree_view_broken_files: gtk4::GestureClick = GestureClick::new();
|
||||
// tree_view_broken_files.add_controller(&gc_tree_view_broken_files);
|
||||
|
||||
let combo_box_duplicate_check_method: gtk::ComboBoxText = builder.object("combo_box_duplicate_check_method").unwrap();
|
||||
let combo_box_duplicate_hash_type: gtk::ComboBoxText = builder.object("combo_box_duplicate_hash_type").unwrap();
|
||||
|
||||
|
@ -337,9 +369,12 @@ impl GuiMainNotebook {
|
|||
}
|
||||
}
|
||||
|
||||
// Change name of main notebook tabs
|
||||
let vec_children: Vec<gtk::Widget> = self.notebook_main.children();
|
||||
|
||||
// let vec_children: Vec<gtk::Widget> = get_all_children(&self.notebook_main);
|
||||
// let vec_children: Vec<gtk::Widget> = get_all_children(&vec_children[1]);
|
||||
|
||||
// Change name of main notebook tabs
|
||||
for (main_enum, fl_thing) in [
|
||||
(NotebookMainEnum::Duplicate as usize, fl!("main_notebook_duplicates")),
|
||||
(NotebookMainEnum::EmptyDirectories as usize, fl!("main_notebook_empty_directories")),
|
||||
|
|
|
@ -18,6 +18,7 @@ pub struct GuiProgressDialog {
|
|||
|
||||
pub button_stop_in_dialog: gtk::Button,
|
||||
pub evk_button_stop_in_dialog: gtk::EventControllerKey,
|
||||
// pub gc_button_stop_in_dialog: gtk4::GestureClick,
|
||||
}
|
||||
|
||||
impl GuiProgressDialog {
|
||||
|
@ -41,6 +42,10 @@ impl GuiProgressDialog {
|
|||
|
||||
let button_stop_in_dialog: gtk::Button = builder.object("button_stop_in_dialog").unwrap();
|
||||
let evk_button_stop_in_dialog = EventControllerKey::new(&button_stop_in_dialog);
|
||||
// let evk_button_stop_in_dialog = EventControllerKey::new();
|
||||
// button_stop_in_dialog.add_controller(&evk_button_stop_in_dialog);
|
||||
// let gc_button_stop_in_dialog = gtk4::GestureClick::new();
|
||||
// button_stop_in_dialog.add_controller(&gc_button_stop_in_dialog);
|
||||
|
||||
Self {
|
||||
window_progress,
|
||||
|
|
|
@ -137,6 +137,10 @@ impl GuiUpperNotebook {
|
|||
|
||||
let vec_children: Vec<gtk::Widget> = self.notebook_upper.children();
|
||||
|
||||
// let vec_children: Vec<gtk::Widget> = get_all_children(&self.notebook_upper);
|
||||
// let vec_children: Vec<gtk::Widget> = get_all_children(&vec_children[1]);
|
||||
|
||||
// Change name of upper notebook tabs
|
||||
for (upper_enum, fl_thing) in [
|
||||
(NotebookUpperEnum::ItemsConfiguration as usize, fl!("upper_notebook_items_configuration")),
|
||||
(NotebookUpperEnum::ExcludedDirectories as usize, fl!("upper_notebook_excluded_directories")),
|
||||
|
|
|
@ -542,7 +542,6 @@ pub fn clean_invalid_headers(model: >k::ListStore, column_color: i32) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO children are not available in GTK 4
|
||||
pub fn get_custom_label_from_label_with_image(button: >k::Bin) -> gtk::Label {
|
||||
let internal_box = button.child().unwrap().downcast::<gtk::Box>().unwrap();
|
||||
for child in internal_box.children() {
|
||||
|
@ -552,3 +551,29 @@ pub fn get_custom_label_from_label_with_image(button: >k::Bin) -> gtk::Label {
|
|||
}
|
||||
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();
|
||||
// for child in internal_box.children() {
|
||||
// if let Ok(t) = child.downcast::<gtk::Label>() {
|
||||
// return t;
|
||||
// }
|
||||
// }
|
||||
// panic!("Button doesn't have proper custom label child");
|
||||
// }
|
||||
|
||||
// GTK 4
|
||||
// pub fn get_all_children<P: IsA<gtk::Widget>>(wid: &P) -> Vec<gtk::Widget> {
|
||||
// let mut vector = vec![];
|
||||
// if let Some(mut child) = wid.first_child() {
|
||||
// vector.push(child.clone());
|
||||
// loop {
|
||||
// child = match child.next_sibling() {
|
||||
// Some(t) => t,
|
||||
// None => break,
|
||||
// };
|
||||
// vector.push(child.clone());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return vector;
|
||||
// }
|
||||
|
|
|
@ -7,7 +7,7 @@ use std::rc::Rc;
|
|||
|
||||
use directories_next::ProjectDirs;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{CheckButton, EventControllerKey, Image, SelectionMode, TextView, TreeView};
|
||||
use gtk::{CheckButton, Image, SelectionMode, TextView, TreeView};
|
||||
use image::imageops::FilterType;
|
||||
use image::GenericImageView;
|
||||
|
||||
|
@ -94,30 +94,16 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
|
||||
//// Initialize main scrolled view with notebook
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.main_notebook.scrolled_window_duplicate_finder.clone();
|
||||
let scrolled_window_empty_folder_finder = gui_data.main_notebook.scrolled_window_empty_folder_finder.clone();
|
||||
let scrolled_window_empty_files_finder = gui_data.main_notebook.scrolled_window_empty_files_finder.clone();
|
||||
let scrolled_window_temporary_files_finder = gui_data.main_notebook.scrolled_window_temporary_files_finder.clone();
|
||||
let scrolled_window_big_files_finder = gui_data.main_notebook.scrolled_window_big_files_finder.clone();
|
||||
let scrolled_window_similar_images_finder = gui_data.main_notebook.scrolled_window_similar_images_finder.clone();
|
||||
let scrolled_window_similar_videos_finder = gui_data.main_notebook.scrolled_window_similar_videos_finder.clone();
|
||||
let scrolled_window_same_music_finder = gui_data.main_notebook.scrolled_window_same_music_finder.clone();
|
||||
let scrolled_window_invalid_symlinks = gui_data.main_notebook.scrolled_window_invalid_symlinks.clone();
|
||||
let scrolled_window_broken_files = gui_data.main_notebook.scrolled_window_broken_files.clone();
|
||||
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
|
||||
let scale_similarity_similar_images = gui_data.main_notebook.scale_similarity_similar_images.clone();
|
||||
let scale_similarity_similar_videos = gui_data.main_notebook.scale_similarity_similar_videos.clone();
|
||||
|
||||
// Set step increment
|
||||
{
|
||||
let scale_similarity_similar_images = gui_data.main_notebook.scale_similarity_similar_images.clone();
|
||||
scale_similarity_similar_images.set_range(0_f64, SIMILAR_VALUES[1][5] as f64); // This defaults to value of minimal size of hash 8
|
||||
scale_similarity_similar_images.set_fill_level(SIMILAR_VALUES[1][5] as f64);
|
||||
scale_similarity_similar_images.adjustment().set_step_increment(1_f64);
|
||||
}
|
||||
// Set step increment
|
||||
{
|
||||
let scale_similarity_similar_videos = gui_data.main_notebook.scale_similarity_similar_videos.clone();
|
||||
scale_similarity_similar_videos.set_range(0_f64, MAX_TOLERANCE as f64); // This defaults to value of minimal size of hash 8
|
||||
scale_similarity_similar_videos.set_value(15_f64);
|
||||
scale_similarity_similar_videos.set_fill_level(MAX_TOLERANCE as f64);
|
||||
|
@ -128,8 +114,11 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
{
|
||||
// Duplicate Files
|
||||
{
|
||||
let image_preview_duplicates = gui_data.main_notebook.image_preview_duplicates.clone();
|
||||
image_preview_duplicates.hide();
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_duplicate_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_duplicate_finder.clone();
|
||||
|
||||
let image_preview = gui_data.main_notebook.image_preview_duplicates.clone();
|
||||
image_preview.hide();
|
||||
|
||||
let col_types: [glib::types::Type; 8] = [
|
||||
glib::types::Type::BOOL, // ActivatableSelectButton
|
||||
|
@ -143,50 +132,21 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
tree_view.selection().set_select_function(Some(Box::new(select_function_duplicates)));
|
||||
|
||||
create_tree_view_duplicates(&mut tree_view);
|
||||
create_tree_view_duplicates(&tree_view);
|
||||
|
||||
{
|
||||
// EVK
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_duplicate_finder = evk;
|
||||
}
|
||||
{
|
||||
// Other connects
|
||||
|
||||
let check_button_settings_show_preview_duplicates = gui_data.settings.check_button_settings_show_preview_duplicates.clone();
|
||||
let image_preview_duplicates = gui_data.main_notebook.image_preview_duplicates.clone();
|
||||
let preview_path = gui_data.preview_path.clone();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
tree_view.connect_button_release_event(move |tree_view, _event| {
|
||||
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_duplicates,
|
||||
&image_preview_duplicates,
|
||||
preview_path,
|
||||
nb_object.column_path,
|
||||
nb_object.column_name,
|
||||
);
|
||||
|
||||
gtk::Inhibit(false)
|
||||
});
|
||||
}
|
||||
tree_view.set_widget_name("tree_view_duplicate_finder");
|
||||
gui_data.main_notebook.tree_view_duplicate_finder = tree_view.clone();
|
||||
scrolled_window_duplicate_finder.add(&tree_view);
|
||||
scrolled_window_duplicate_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Empty Folders
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_empty_folder_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 5] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Name
|
||||
|
@ -196,26 +156,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_empty_folders(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
|
||||
gui_data.main_notebook.evk_tree_view_empty_folder_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_empty_folders(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_empty_folder_finder");
|
||||
gui_data.main_notebook.tree_view_empty_folder_finder = tree_view.clone();
|
||||
scrolled_window_empty_folder_finder.add(&tree_view);
|
||||
scrolled_window_empty_folder_finder.show_all();
|
||||
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Empty Files
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_empty_files_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_empty_files_finder.clone();
|
||||
let col_types: [glib::types::Type; 5] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Name
|
||||
|
@ -225,25 +179,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_empty_files(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_empty_files_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_empty_files(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_empty_files_finder");
|
||||
gui_data.main_notebook.tree_view_empty_files_finder = tree_view.clone();
|
||||
scrolled_window_empty_files_finder.add(&tree_view);
|
||||
scrolled_window_empty_files_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Temporary Files
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_temporary_files_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 5] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Name
|
||||
|
@ -253,25 +202,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_temporary_files(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_temporary_files_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_temporary_files(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_temporary_files_finder");
|
||||
gui_data.main_notebook.tree_view_temporary_files_finder = tree_view.clone();
|
||||
scrolled_window_temporary_files_finder.add(&tree_view);
|
||||
scrolled_window_temporary_files_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Big Files
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_big_files_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_big_files_finder.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 7] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Size
|
||||
|
@ -283,27 +227,22 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_big_files(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_big_files_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_big_files(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_big_files_finder");
|
||||
gui_data.main_notebook.tree_view_big_files_finder = tree_view.clone();
|
||||
scrolled_window_big_files_finder.add(&tree_view);
|
||||
scrolled_window_big_files_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Similar Images
|
||||
{
|
||||
let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
|
||||
image_preview_similar_images.hide();
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_similar_images_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_similar_images_finder.clone();
|
||||
|
||||
let image_preview = gui_data.main_notebook.image_preview_similar_images.clone();
|
||||
image_preview.hide();
|
||||
|
||||
let col_types: [glib::types::Type; 12] = [
|
||||
glib::types::Type::BOOL, // ActivatableSelectButton
|
||||
|
@ -321,49 +260,21 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
tree_view.selection().set_select_function(Some(Box::new(select_function_similar_images)));
|
||||
|
||||
create_tree_view_similar_images(&mut tree_view);
|
||||
|
||||
{
|
||||
// EVK
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_similar_images_finder = evk;
|
||||
}
|
||||
{
|
||||
// Other connects
|
||||
let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
|
||||
let preview_path = gui_data.preview_path.clone();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
tree_view.connect_button_release_event(move |tree_view, _event| {
|
||||
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_similar_images,
|
||||
&image_preview_similar_images,
|
||||
preview_path,
|
||||
nb_object.column_path,
|
||||
nb_object.column_name,
|
||||
);
|
||||
gtk::Inhibit(false)
|
||||
});
|
||||
}
|
||||
create_tree_view_similar_images(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_similar_images_finder");
|
||||
gui_data.main_notebook.tree_view_similar_images_finder = tree_view.clone();
|
||||
scrolled_window_similar_images_finder.add(&tree_view);
|
||||
scrolled_window_similar_images_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Similar Videos
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_similar_videos_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_similar_videos_finder.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 10] = [
|
||||
glib::types::Type::BOOL, // ActivatableSelectButton
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
|
@ -378,26 +289,21 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
tree_view.selection().set_select_function(Some(Box::new(select_function_similar_videos)));
|
||||
|
||||
create_tree_view_similar_videos(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_similar_videos_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_similar_videos(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_similar_videos_finder");
|
||||
gui_data.main_notebook.tree_view_similar_videos_finder = tree_view.clone();
|
||||
scrolled_window_similar_videos_finder.add(&tree_view);
|
||||
scrolled_window_similar_videos_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Same Music
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_same_music_finder.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_same_music_finder.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 15] = [
|
||||
glib::types::Type::BOOL, // ActivatableSelectButton
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
|
@ -417,26 +323,21 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
tree_view.selection().set_select_function(Some(Box::new(select_function_same_music)));
|
||||
|
||||
create_tree_view_same_music(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_same_music_finder = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_same_music(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_same_music_finder");
|
||||
gui_data.main_notebook.tree_view_same_music_finder = tree_view.clone();
|
||||
scrolled_window_same_music_finder.add(&tree_view);
|
||||
scrolled_window_same_music_finder.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Invalid Symlinks
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_invalid_symlinks.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 7] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Name
|
||||
|
@ -448,25 +349,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_invalid_symlinks(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_invalid_symlinks = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_invalid_symlinks(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_invalid_symlinks");
|
||||
gui_data.main_notebook.tree_view_invalid_symlinks = tree_view.clone();
|
||||
scrolled_window_invalid_symlinks.add(&tree_view);
|
||||
scrolled_window_invalid_symlinks.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
// Broken Files
|
||||
{
|
||||
let scrolled_window = gui_data.main_notebook.scrolled_window_broken_files.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_broken_files.clone();
|
||||
|
||||
let col_types: [glib::types::Type; 6] = [
|
||||
glib::types::Type::BOOL, // SelectionButton
|
||||
glib::types::Type::STRING, // Name
|
||||
|
@ -477,49 +373,38 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
];
|
||||
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
|
||||
|
||||
let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_broken_files(&mut tree_view);
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
evk.connect_key_pressed(opening_enter_function_ported);
|
||||
gui_data.main_notebook.evk_tree_view_broken_files = evk;
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
create_tree_view_broken_files(&tree_view);
|
||||
|
||||
tree_view.set_widget_name("tree_view_broken_files");
|
||||
gui_data.main_notebook.tree_view_broken_files = tree_view.clone();
|
||||
scrolled_window_broken_files.add(&tree_view);
|
||||
scrolled_window_broken_files.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// Initialize upper notebook
|
||||
{
|
||||
let scrolled_window_included_directories = gui_data.upper_notebook.scrolled_window_included_directories.clone();
|
||||
let scrolled_window_excluded_directories = gui_data.upper_notebook.scrolled_window_excluded_directories.clone();
|
||||
|
||||
// Set Included Directory
|
||||
{
|
||||
let scrolled_window = gui_data.upper_notebook.scrolled_window_included_directories.clone();
|
||||
let tree_view = gui_data.upper_notebook.tree_view_included_directories.clone();
|
||||
let evk = gui_data.upper_notebook.evk_tree_view_included_directories.clone();
|
||||
|
||||
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: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_directories(&mut tree_view);
|
||||
create_tree_view_directories(&tree_view);
|
||||
|
||||
gui_data.upper_notebook.tree_view_included_directories = tree_view.clone();
|
||||
scrolled_window_included_directories.add(&tree_view);
|
||||
scrolled_window_included_directories.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
gui_data.upper_notebook.evk_tree_view_included_directories = evk;
|
||||
gui_data.upper_notebook.evk_tree_view_included_directories.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
if key_code == KEY_DELETE {
|
||||
let list_store = get_list_store(&tree_view);
|
||||
let selection = tree_view.selection();
|
||||
|
@ -534,22 +419,22 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
}
|
||||
// Set Excluded Directory
|
||||
{
|
||||
let scrolled_window = gui_data.upper_notebook.scrolled_window_excluded_directories.clone();
|
||||
let tree_view = gui_data.upper_notebook.tree_view_excluded_directories.clone();
|
||||
let evk = gui_data.upper_notebook.evk_tree_view_excluded_directories.clone();
|
||||
|
||||
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: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view.set_model(Some(&list_store));
|
||||
tree_view.selection().set_mode(SelectionMode::Multiple);
|
||||
|
||||
create_tree_view_directories(&mut tree_view);
|
||||
create_tree_view_directories(&tree_view);
|
||||
|
||||
gui_data.upper_notebook.tree_view_excluded_directories = tree_view.clone();
|
||||
scrolled_window_excluded_directories.add(&tree_view);
|
||||
scrolled_window_excluded_directories.show_all();
|
||||
scrolled_window.add(&tree_view);
|
||||
scrolled_window.show_all();
|
||||
|
||||
let evk = EventControllerKey::new(&tree_view);
|
||||
gui_data.upper_notebook.evk_tree_view_excluded_directories = evk;
|
||||
gui_data.upper_notebook.evk_tree_view_excluded_directories.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
if key_code == KEY_DELETE {
|
||||
let list_store = get_list_store(&tree_view);
|
||||
let selection = tree_view.selection();
|
||||
|
@ -575,20 +460,107 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
|
|||
});
|
||||
}
|
||||
|
||||
// Needs to be called after setting tree_view name, probably in GTK 4 this will be easier
|
||||
// This not need to be run in different code block, but this looks a little less complicated if is available in
|
||||
connect_event_buttons(gui_data);
|
||||
connect_event_mouse(gui_data);
|
||||
}
|
||||
|
||||
fn connect_event_mouse(gui_data: &GuiData) {
|
||||
// Duplicate
|
||||
{
|
||||
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 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| {
|
||||
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);
|
||||
|
||||
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
|
||||
{
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
let tree_view = gui_data.main_notebook.tree_view_similar_images_finder.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();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
tree_view.connect_button_release_event(move |tree_view, _event| {
|
||||
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);
|
||||
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);
|
||||
}
|
||||
// Same Music
|
||||
{
|
||||
let tree_view = gui_data.main_notebook.tree_view_same_music_finder.clone();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
}
|
||||
// Invalid Symlinks
|
||||
{
|
||||
let tree_view = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
}
|
||||
// Broken Files
|
||||
{
|
||||
let tree_view = gui_data.main_notebook.tree_view_broken_files.clone();
|
||||
|
||||
tree_view.connect_button_press_event(opening_double_click_function);
|
||||
}
|
||||
}
|
||||
fn connect_event_buttons(gui_data: &GuiData) {
|
||||
// Duplicate
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
let check_button_settings_show_preview_duplicates = gui_data.settings.check_button_settings_show_preview_duplicates.clone();
|
||||
let image_preview_duplicates = gui_data.main_notebook.image_preview_duplicates.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 evk = gui_data.main_notebook.evk_tree_view_duplicate_finder.clone();
|
||||
|
||||
gui_data.main_notebook.evk_tree_view_duplicate_finder.connect_key_released(move |event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -597,8 +569,8 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
show_preview(
|
||||
&event_controller_key.widget().unwrap().downcast::<gtk::TreeView>().unwrap(),
|
||||
&text_view_errors,
|
||||
&check_button_settings_show_preview_duplicates,
|
||||
&image_preview_duplicates,
|
||||
&check_button_settings_show_preview,
|
||||
&image_preview,
|
||||
preview_path,
|
||||
nb_object.column_path,
|
||||
nb_object.column_name,
|
||||
|
@ -608,7 +580,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Empty Folder
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_empty_folder_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -617,7 +593,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Empty Files
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_empty_files_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -626,7 +606,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Temporary
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_temporary_files_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -635,7 +619,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Big Files
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_big_files_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -645,11 +633,14 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
{
|
||||
let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
|
||||
let image_preview = gui_data.main_notebook.image_preview_similar_images.clone();
|
||||
let gui_data_clone = gui_data.clone();
|
||||
let preview_path = gui_data.preview_path.clone();
|
||||
let evk = gui_data.main_notebook.evk_tree_view_similar_images_finder.clone();
|
||||
|
||||
gui_data.main_notebook.evk_tree_view_similar_images_finder.connect_key_released(move |event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -659,18 +650,21 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
&event_controller_key.widget().unwrap().downcast::<gtk::TreeView>().unwrap(),
|
||||
&text_view_errors,
|
||||
&check_button_settings_show_preview_similar_images,
|
||||
&image_preview_similar_images,
|
||||
&image_preview,
|
||||
preview_path,
|
||||
nb_object.column_path,
|
||||
nb_object.column_name,
|
||||
);
|
||||
});
|
||||
}
|
||||
// Empty Folder
|
||||
// Similar Videos
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
let evk = gui_data.main_notebook.evk_tree_view_similar_videos_finder.clone();
|
||||
|
||||
gui_data.main_notebook.evk_tree_view_similar_videos_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -679,7 +673,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Same music
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_same_music_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -688,7 +686,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Invalid Symlinks
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_invalid_symlinks.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -697,7 +699,11 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
// Broken Files
|
||||
{
|
||||
let gui_data_clone = gui_data.clone();
|
||||
gui_data.main_notebook.evk_tree_view_big_files_finder.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
|
||||
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()));
|
||||
}
|
||||
|
@ -705,7 +711,7 @@ fn connect_event_buttons(gui_data: &GuiData) {
|
|||
}
|
||||
}
|
||||
|
||||
fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_settings_show_preview: &CheckButton, image_preview_similar_images: &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) {
|
||||
let (selected_rows, tree_model) = tree_view.selection().selected_rows();
|
||||
|
||||
let mut created_image = false;
|
||||
|
@ -782,7 +788,7 @@ fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_
|
|||
break 'dir;
|
||||
}
|
||||
let string_dir = file_dir.to_string_lossy().to_string();
|
||||
image_preview_similar_images.set_from_file(string_dir);
|
||||
image_preview.set_from_file(string_dir);
|
||||
|
||||
{
|
||||
let mut preview_path = preview_path.borrow_mut();
|
||||
|
@ -800,9 +806,9 @@ fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_
|
|||
}
|
||||
}
|
||||
if created_image {
|
||||
image_preview_similar_images.show();
|
||||
image_preview.show();
|
||||
} else {
|
||||
image_preview_similar_images.hide();
|
||||
image_preview.hide();
|
||||
{
|
||||
let mut preview_path = preview_path.borrow_mut();
|
||||
*preview_path = "".to_string();
|
||||
|
|
|
@ -76,7 +76,7 @@ mod tests;
|
|||
|
||||
fn main() {
|
||||
let application = gtk::Application::builder().application_id("pl.qarmin.czkawka").build();
|
||||
application.connect_activate(|application| {
|
||||
application.connect_activate(move |application| {
|
||||
let mut gui_data: GuiData = GuiData::new_with_application(application);
|
||||
|
||||
// Used for getting data from thread
|
||||
|
|
|
@ -15,6 +15,20 @@ 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);
|
||||
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_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();
|
||||
// #[cfg(debug_assertions)]
|
||||
// {
|
||||
// println!("key_code {}", key_code);
|
||||
// }
|
||||
//
|
||||
// let nt_object = get_notebook_object_from_tree_view(&tree_view);
|
||||
// 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
|
||||
// }
|
||||
|
||||
pub fn opening_double_click_function(tree_view: >k::TreeView, event: &gdk::EventButton) -> gtk::Inhibit {
|
||||
let nt_object = get_notebook_object_from_tree_view(tree_view);
|
||||
if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 {
|
||||
|
|
Loading…
Reference in a new issue