1
0
Fork 0
mirror of synced 2024-05-02 19:44:09 +12:00

Fixes missing multiple values in excluded and included directories

Added support for recursive button
This commit is contained in:
Rafał Mikrut 2020-09-29 20:19:36 +02:00
parent 4a27b2b3d9
commit b91a115eac
3 changed files with 83 additions and 43 deletions

View file

@ -309,7 +309,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkCheckButton">
<object class="GtkCheckButton" id="check_button_recursive">
<property name="label" translatable="yes">Recursive</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@ -557,7 +557,7 @@ Author: Rafał Mikrut
<object class="GtkEntry" id="entry_excluded_items">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="text" translatable="yes">*/.git,*/node_modules,/proc/*,/dev/*,*/lost+found</property>
<property name="text" translatable="yes">*/.git,*/node_modules,*/lost+found</property>
</object>
<packing>
<property name="expand">True</property>

View file

@ -102,13 +102,24 @@ pub fn create_tree_view_directories(tree_view_directories: &mut gtk::TreeView) {
pub fn get_string_from_list_store(scrolled_window: &gtk::ScrolledWindow) -> String {
let tree_view: gtk::TreeView = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store: gtk::ListStore = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let mut first: bool = true;
let mut return_string: String = "".to_string();
let tree_iter = match list_store.get_iter_first() {
Some(t) => t,
None => return "".to_string(),
None => return return_string,
};
list_store.get_value(&tree_iter, 0).get::<String>().unwrap().unwrap()
loop {
if !first {
return_string += ",";
} else {
first = false;
}
return_string += list_store.get_value(&tree_iter, 0).get::<String>().unwrap().unwrap().as_str();
if !list_store.iter_next(&tree_iter) {
return return_string;
}
}
}
pub fn print_text_messages_to_text_view(text_messages: &Messages, text_view: &gtk::TextView) {
let mut messages: String = String::from("");

View file

@ -89,6 +89,9 @@ fn main() {
buttons_pause.hide();
buttons_select.hide();
//// Check Buttons
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
//// Notebooks
let notebook_chooser_tool: gtk::Notebook = builder.get_object("notebook_chooser_tool").unwrap();
let mut notebook_chooser_tool_children_names: Vec<String> = Vec::new();
@ -122,8 +125,38 @@ fn main() {
buttons_save.hide();
buttons_delete.hide();
// Set treeview for
{}
// Set Main ScrolledWindow Treeviews
{
// Duplicate Files
{
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, 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.get_selection().set_mode(SelectionMode::Multiple);
tree_view.get_selection().set_select_function(Some(Box::new(select_function_3column)));
create_tree_view_duplicates(&mut tree_view);
scrolled_window_duplicate_finder.add(&tree_view);
scrolled_window_duplicate_finder.show_all();
}
// Empty Folders
{
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, 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.get_selection().set_mode(SelectionMode::Multiple);
create_tree_view_empty_folders(&mut tree_view);
scrolled_window_empty_folder_finder.add(&tree_view);
scrolled_window_empty_folder_finder.show_all();
}
}
// Set Included Directory
{
@ -155,6 +188,13 @@ fn main() {
create_tree_view_directories(&mut tree_view_excluded_directory);
let col_indices = [0, 1];
for i in ["/proc/", "/dev/"].iter() {
let values: [&dyn ToValue; 2] = [&i, &(MAIN_ROW_COLOR.to_string())];
list_store.set(&list_store.append(), &col_indices, &values);
}
scrolled_window_excluded_directories.add(&tree_view_excluded_directory);
scrolled_window_excluded_directories.show_all();
}
@ -258,6 +298,7 @@ fn main() {
{
df.set_included_directory(get_string_from_list_store(&scrolled_window_included_directories));
df.set_excluded_directory(get_string_from_list_store(&scrolled_window_excluded_directories));
df.set_recursive_search(check_button_recursive.get_active());
df.set_excluded_items(entry_excluded_items.get_text().as_str().to_string());
df.set_allowed_extensions(entry_allowed_extensions.get_text().as_str().to_string());
df.set_min_file_size(match entry_duplicate_minimal_size.get_text().as_str().parse::<u64>() {
@ -295,19 +336,18 @@ fn main() {
// Create GUI
{
// Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears
for i in &scrolled_window_duplicate_finder.get_children() {
scrolled_window_duplicate_finder.remove(i);
}
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String];
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
let mut tree_view_duplicate_finder: gtk::TreeView = TreeView::with_model(&list_store);
tree_view_duplicate_finder.get_selection().set_mode(SelectionMode::Multiple);
create_tree_view_duplicates(&mut tree_view_duplicate_finder);
let list_store = scrolled_window_duplicate_finder
.get_children()
.get(0)
.unwrap()
.clone()
.downcast::<gtk::TreeView>()
.unwrap()
.get_model()
.unwrap()
.downcast::<gtk::ListStore>()
.unwrap();
list_store.clear();
let col_indices = [0, 1, 2, 3];
@ -367,12 +407,6 @@ fn main() {
}
}
let tree_selection = tree_view_duplicate_finder.get_selection();
tree_selection.set_select_function(Some(Box::new(select_function_3column)));
scrolled_window_duplicate_finder.add(&tree_view_duplicate_finder);
scrolled_window_duplicate_finder.show_all();
print_text_messages_to_text_view(&text_messages, &text_view_errors);
}
@ -411,19 +445,18 @@ fn main() {
// Create GUI
{
// Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears
for i in &scrolled_window_empty_folder_finder.get_children() {
scrolled_window_empty_folder_finder.remove(i);
}
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String];
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types);
let mut tree_view_empty_folder_finder: gtk::TreeView = TreeView::with_model(&list_store);
tree_view_empty_folder_finder.get_selection().set_mode(SelectionMode::Multiple);
create_tree_view_empty_folders(&mut tree_view_empty_folder_finder);
let list_store = scrolled_window_empty_folder_finder
.get_children()
.get(0)
.unwrap()
.clone()
.downcast::<gtk::TreeView>()
.unwrap()
.get_model()
.unwrap()
.downcast::<gtk::ListStore>()
.unwrap();
list_store.clear();
let col_indices = [0, 1, 2, 3];
@ -440,10 +473,6 @@ fn main() {
];
list_store.set(&list_store.append(), &col_indices, &values);
}
scrolled_window_empty_folder_finder.add(&tree_view_empty_folder_finder);
scrolled_window_empty_folder_finder.show_all();
print_text_messages_to_text_view(&text_messages, &text_view_errors);
}