Fix buttons when converting to GTK 4 (#473)
* Fix buttons when converting to GTK 4 * Childrens
This commit is contained in:
parent
4871016a3c
commit
c7b9abcfa0
|
@ -38,18 +38,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ansi_term"
|
||||
version = "0.11.0"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
|
||||
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.49"
|
||||
version = "1.0.51"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a03e93e97a28fbc9f42fbc5ba0886a3c67eb637b476dbee711f80a6ffe8223d"
|
||||
checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203"
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
|
@ -312,9 +312,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "2.33.3"
|
||||
version = "2.34.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
|
||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||
dependencies = [
|
||||
"ansi_term",
|
||||
"atty",
|
||||
|
@ -1889,9 +1889,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.5"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
|
||||
checksum = "3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
|
|
|
@ -3,7 +3,7 @@ use std::fs;
|
|||
use std::fs::Metadata;
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Align, CheckButton, Dialog, TextView};
|
||||
use gtk::{Align, CheckButton, Dialog, ResponseType, TextView};
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
|
@ -96,24 +96,16 @@ pub async fn check_if_can_delete_files(check_button_settings_confirm_deletion: &
|
|||
true
|
||||
}
|
||||
|
||||
fn create_dialog_ask_for_deletion(window_main: >k::Window) -> (Dialog, CheckButton) {
|
||||
let confirmation_dialog_delete = gtk::Dialog::with_buttons(
|
||||
Some("Delete confirmation"),
|
||||
Some(window_main),
|
||||
gtk::DialogFlags::DESTROY_WITH_PARENT,
|
||||
&[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)],
|
||||
);
|
||||
fn create_dialog_ask_for_deletion(_window_main: >k::Window) -> (Dialog, CheckButton) {
|
||||
let confirmation_dialog_delete = gtk::Dialog::builder().title("Delete confirmation").build();
|
||||
let button_ok = confirmation_dialog_delete.add_button("Ok", ResponseType::Ok);
|
||||
confirmation_dialog_delete.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
let label: gtk::Label = gtk::Label::new(Some("Are you sure that you want to delete files?"));
|
||||
let check_button: gtk::CheckButton = gtk::CheckButton::with_label("Ask next time");
|
||||
check_button.set_active(true);
|
||||
check_button.set_halign(Align::Center);
|
||||
|
||||
let button_box = get_dialog_box_child(&confirmation_dialog_delete).children()[0].clone().downcast::<gtk::Box>().unwrap().children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::ButtonBox>()
|
||||
.unwrap();
|
||||
|
||||
let button_ok = button_box.children()[0].clone();
|
||||
button_ok.grab_focus();
|
||||
|
||||
let internal_box = get_dialog_box_child(&confirmation_dialog_delete);
|
||||
|
@ -124,25 +116,17 @@ fn create_dialog_ask_for_deletion(window_main: >k::Window) -> (Dialog, CheckBu
|
|||
(confirmation_dialog_delete, check_button)
|
||||
}
|
||||
|
||||
fn create_dialog_group_deletion(window_main: >k::Window) -> (Dialog, CheckButton) {
|
||||
let confirmation_dialog_group_delete = gtk::Dialog::with_buttons(
|
||||
Some("Confirmation of deleting all files in group"),
|
||||
Some(window_main),
|
||||
gtk::DialogFlags::MODAL,
|
||||
&[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)],
|
||||
);
|
||||
fn create_dialog_group_deletion(_window_main: >k::Window) -> (Dialog, CheckButton) {
|
||||
let confirmation_dialog_group_delete = gtk::Dialog::builder().title("Confirmation of deleting all files in group").build();
|
||||
let button_ok = confirmation_dialog_group_delete.add_button("Ok", ResponseType::Ok);
|
||||
confirmation_dialog_group_delete.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
let label: gtk::Label = gtk::Label::new(Some("In some groups there are selected all records."));
|
||||
let label2: gtk::Label = gtk::Label::new(Some("Are you sure that you want to delete them?"));
|
||||
let check_button: gtk::CheckButton = gtk::CheckButton::with_label("Ask next time");
|
||||
check_button.set_active(true);
|
||||
check_button.set_halign(Align::Center);
|
||||
|
||||
let button_box = get_dialog_box_child(&confirmation_dialog_group_delete).children()[0].clone().downcast::<gtk::Box>().unwrap().children()[0]
|
||||
.clone()
|
||||
.downcast::<gtk::ButtonBox>()
|
||||
.unwrap();
|
||||
|
||||
let button_ok = button_box.children()[0].clone();
|
||||
button_ok.grab_focus();
|
||||
|
||||
let internal_box = get_dialog_box_child(&confirmation_dialog_group_delete);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use std::path::{Path, PathBuf};
|
||||
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreePath;
|
||||
use gtk::{ResponseType, TreePath};
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
|
@ -53,18 +53,22 @@ pub fn connect_button_move(gui_data: &GuiData) {
|
|||
fn move_things(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, column_color: Option<i32>, column_selection: i32, entry_info: >k::Entry, text_view_errors: >k::TextView, window_main: >k::Window) {
|
||||
reset_text_view(text_view_errors);
|
||||
|
||||
let chooser = gtk::FileChooserDialog::with_buttons(
|
||||
Some("Choose folder to which you want to move duplicated files"),
|
||||
Some(window_main),
|
||||
gtk::FileChooserAction::SelectFolder,
|
||||
&[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)],
|
||||
);
|
||||
let chooser = gtk::FileChooserDialog::builder()
|
||||
.title("Choose folder to which you want to move duplicated files")
|
||||
.action(gtk::FileChooserAction::SelectFolder)
|
||||
.build();
|
||||
chooser.add_button("Ok", ResponseType::Ok);
|
||||
chooser.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
chooser.set_select_multiple(false);
|
||||
chooser.show_all();
|
||||
|
||||
window_main.set_sensitive(false);
|
||||
|
||||
let entry_info = entry_info.clone();
|
||||
let text_view_errors = text_view_errors.clone();
|
||||
let tree_view = tree_view.clone();
|
||||
let window_main = window_main.clone();
|
||||
chooser.connect_response(move |file_chooser, response_type| {
|
||||
if response_type == gtk::ResponseType::Ok {
|
||||
let folders = file_chooser.filenames();
|
||||
|
@ -80,6 +84,7 @@ fn move_things(tree_view: >k::TreeView, column_file_name: i32, column_path: i3
|
|||
}
|
||||
}
|
||||
file_chooser.close();
|
||||
window_main.set_sensitive(true);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ pub fn connect_notebook_tabs(gui_data: &GuiData) {
|
|||
{
|
||||
for (index, upper_tab) in get_all_upper_tabs().iter().enumerate() {
|
||||
if *shared_upper_notebooks.borrow_mut().get_mut(¤t_tab_in_main_notebook).unwrap().get_mut(upper_tab).unwrap() {
|
||||
notebook_upper.children().get(index).unwrap().show();
|
||||
notebook_upper.children().get(index).unwrap().show(); // TODO find alternative for children
|
||||
} else {
|
||||
notebook_upper.children().get(index).unwrap().hide();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use gtk::prelude::*;
|
||||
use gtk::{TreeIter, Window};
|
||||
use gtk::{ResponseType, TreeIter, Window};
|
||||
|
||||
use czkawka_core::common::Common;
|
||||
|
||||
|
@ -213,7 +213,7 @@ fn popover_one_oldest_newest(popover: >k::Popover, tree_view: >k::TreeView,
|
|||
popover.popdown();
|
||||
}
|
||||
|
||||
fn popover_custom_select_unselect(popover: >k::Popover, window_main: &Window, tree_view: >k::TreeView, column_color: Option<i32>, column_file_name: i32, column_path: i32, column_button_selection: u32, select_things: bool) {
|
||||
fn popover_custom_select_unselect(popover: >k::Popover, _window_main: &Window, tree_view: >k::TreeView, column_color: Option<i32>, column_file_name: i32, column_path: i32, column_button_selection: u32, select_things: bool) {
|
||||
popover.popdown();
|
||||
|
||||
enum WildcardType {
|
||||
|
@ -229,7 +229,10 @@ fn popover_custom_select_unselect(popover: >k::Popover, window_main: &Window,
|
|||
|
||||
// Accept Dialog
|
||||
{
|
||||
let confirmation_dialog_delete = gtk::Dialog::with_buttons(Some(window_title), Some(window_main), gtk::DialogFlags::MODAL, &[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)]);
|
||||
let confirmation_dialog_select_unselect = gtk::Dialog::builder().title(window_title).build();
|
||||
confirmation_dialog_select_unselect.add_button("Ok", ResponseType::Ok);
|
||||
confirmation_dialog_select_unselect.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
let label: gtk::Label = gtk::Label::new(Some("Usage: */folder-nr*/* or name-version-*.txt"));
|
||||
|
||||
let radio_path = gtk::RadioButton::builder().label("Path").build();
|
||||
|
@ -261,13 +264,13 @@ fn popover_custom_select_unselect(popover: >k::Popover, window_main: &Window,
|
|||
grid.attach(&entry_name, 1, 2, 1, 1);
|
||||
grid.attach(&entry_name_path, 1, 3, 1, 1);
|
||||
|
||||
let box_widget = get_dialog_box_child(&confirmation_dialog_delete);
|
||||
let box_widget = get_dialog_box_child(&confirmation_dialog_select_unselect);
|
||||
box_widget.add(&grid);
|
||||
|
||||
confirmation_dialog_delete.show_all();
|
||||
confirmation_dialog_select_unselect.show_all();
|
||||
|
||||
let tree_view = tree_view.clone();
|
||||
confirmation_dialog_delete.connect_response(move |confirmation_dialog_delete, response_type| {
|
||||
confirmation_dialog_select_unselect.connect_response(move |confirmation_dialog_select_unselect, response_type| {
|
||||
let wildcard_type: WildcardType;
|
||||
let wildcard: String;
|
||||
|
||||
|
@ -334,10 +337,10 @@ fn popover_custom_select_unselect(popover: >k::Popover, window_main: &Window,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
confirmation_dialog_delete.close();
|
||||
confirmation_dialog_select_unselect.close();
|
||||
return;
|
||||
}
|
||||
confirmation_dialog_delete.close();
|
||||
confirmation_dialog_select_unselect.close();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
use gtk::prelude::*;
|
||||
use gtk::{TreeView, Window};
|
||||
use gtk::{ResponseType, TreeView, Window};
|
||||
|
||||
#[cfg(target_family = "windows")]
|
||||
use czkawka_core::common::Common;
|
||||
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::{get_list_store, ColumnsDirectory};
|
||||
use crate::help_functions::{get_dialog_box_child, get_list_store, ColumnsDirectory};
|
||||
|
||||
pub fn connect_selection_of_directories(gui_data: &GuiData) {
|
||||
// Add manually directory
|
||||
|
@ -78,11 +78,18 @@ 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 { "Folders to exclude" } else { "Folders to include" };
|
||||
let chooser = gtk::FileChooserDialog::with_buttons(Some(folders_to), Some(window_main), gtk::FileChooserAction::SelectFolder, &[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)]);
|
||||
|
||||
let chooser = gtk::FileChooserDialog::builder().title(folders_to).action(gtk::FileChooserAction::SelectFolder).build();
|
||||
chooser.add_button("Ok", ResponseType::Ok);
|
||||
chooser.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
chooser.set_select_multiple(true);
|
||||
chooser.show_all();
|
||||
|
||||
window_main.set_sensitive(false);
|
||||
|
||||
let tree_view = tree_view.clone();
|
||||
let window_main = window_main.clone();
|
||||
chooser.connect_response(move |chooser, response_type| {
|
||||
if response_type == gtk::ResponseType::Ok {
|
||||
let folder = chooser.filenames();
|
||||
|
@ -95,21 +102,25 @@ fn add_chosen_directories(window_main: &Window, tree_view: &TreeView, excluded_i
|
|||
}
|
||||
}
|
||||
chooser.close();
|
||||
window_main.set_sensitive(true);
|
||||
});
|
||||
}
|
||||
|
||||
fn add_manually_directories(window_main: &Window, tree_view: &TreeView) {
|
||||
let dialog_manual_add_directory = gtk::Dialog::with_buttons(Some("Add directory manually"), Some(window_main), gtk::DialogFlags::MODAL, &[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)]);
|
||||
let dialog_manual_add_directory = gtk::Dialog::builder().title("Add directory manually").build();
|
||||
dialog_manual_add_directory.add_button("Ok", ResponseType::Ok);
|
||||
dialog_manual_add_directory.add_button("Close", ResponseType::Cancel);
|
||||
|
||||
window_main.set_sensitive(false);
|
||||
|
||||
let entry: gtk::Entry = gtk::Entry::new();
|
||||
|
||||
for widgets in dialog_manual_add_directory.children() {
|
||||
// By default GtkBox is child of dialog, so we can easily add other things to it
|
||||
widgets.clone().downcast::<gtk::Box>().unwrap().add(&entry);
|
||||
}
|
||||
get_dialog_box_child(&dialog_manual_add_directory).add(&entry);
|
||||
|
||||
dialog_manual_add_directory.show_all();
|
||||
|
||||
let tree_view = tree_view.clone();
|
||||
let window_main = window_main.clone();
|
||||
dialog_manual_add_directory.connect_response(move |dialog_manual_add_directory, response_type| {
|
||||
if response_type == gtk::ResponseType::Ok {
|
||||
let text = entry.text().to_string().trim().to_string();
|
||||
|
@ -123,10 +134,8 @@ fn add_manually_directories(window_main: &Window, tree_view: &TreeView) {
|
|||
let values: [(u32, &dyn ToValue); 1] = [(ColumnsDirectory::Path as u32, &text)];
|
||||
list_store.set(&list_store.append(), &values);
|
||||
}
|
||||
} else {
|
||||
dialog_manual_add_directory.close();
|
||||
return;
|
||||
}
|
||||
dialog_manual_add_directory.close();
|
||||
window_main.set_sensitive(true);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -427,10 +427,6 @@ pub fn get_dialog_box_child(dialog: >k::Dialog) -> gtk::Box {
|
|||
dialog.child().unwrap().downcast::<gtk::Box>().unwrap()
|
||||
}
|
||||
|
||||
// pub fn get_box_child_from_box(box_main: >k::Box) -> gtk::Box {
|
||||
// box_main.first_child().unwrap().downcast::<gtk::Box>().unwrap() // TODO Probably fist_child will be proper replacement for childrens()
|
||||
// }
|
||||
|
||||
pub fn change_dimension_to_krotka(dimensions: String) -> (u64, u64) {
|
||||
#[allow(clippy::single_char_pattern)]
|
||||
let vec = dimensions.split::<&str>("x").collect::<Vec<_>>();
|
||||
|
|
Loading…
Reference in New Issue