1
0
Fork 0
mirror of synced 2024-05-17 10:54:04 +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> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton"> <object class="GtkCheckButton" id="check_button_recursive">
<property name="label" translatable="yes">Recursive</property> <property name="label" translatable="yes">Recursive</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
@ -557,7 +557,7 @@ Author: Rafał Mikrut
<object class="GtkEntry" id="entry_excluded_items"> <object class="GtkEntry" id="entry_excluded_items">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">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> </object>
<packing> <packing>
<property name="expand">True</property> <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 { 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 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 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() { let tree_iter = match list_store.get_iter_first() {
Some(t) => t, Some(t) => t,
None => return "".to_string(), None => return return_string,
}; };
loop {
list_store.get_value(&tree_iter, 0).get::<String>().unwrap().unwrap() 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) { pub fn print_text_messages_to_text_view(text_messages: &Messages, text_view: &gtk::TextView) {
let mut messages: String = String::from(""); let mut messages: String = String::from("");

View file

@ -89,6 +89,9 @@ fn main() {
buttons_pause.hide(); buttons_pause.hide();
buttons_select.hide(); buttons_select.hide();
//// Check Buttons
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
//// Notebooks //// Notebooks
let notebook_chooser_tool: gtk::Notebook = builder.get_object("notebook_chooser_tool").unwrap(); let notebook_chooser_tool: gtk::Notebook = builder.get_object("notebook_chooser_tool").unwrap();
let mut notebook_chooser_tool_children_names: Vec<String> = Vec::new(); let mut notebook_chooser_tool_children_names: Vec<String> = Vec::new();
@ -122,8 +125,38 @@ fn main() {
buttons_save.hide(); buttons_save.hide();
buttons_delete.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 // Set Included Directory
{ {
@ -155,6 +188,13 @@ fn main() {
create_tree_view_directories(&mut tree_view_excluded_directory); 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.add(&tree_view_excluded_directory);
scrolled_window_excluded_directories.show_all(); 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_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_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_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_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>() { df.set_min_file_size(match entry_duplicate_minimal_size.get_text().as_str().parse::<u64>() {
@ -295,19 +336,18 @@ fn main() {
// Create GUI // Create GUI
{ {
// Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears let list_store = scrolled_window_duplicate_finder
for i in &scrolled_window_duplicate_finder.get_children() { .get_children()
scrolled_window_duplicate_finder.remove(i); .get(0)
} .unwrap()
.clone()
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; .downcast::<gtk::TreeView>()
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); .unwrap()
.get_model()
let mut tree_view_duplicate_finder: gtk::TreeView = TreeView::with_model(&list_store); .unwrap()
.downcast::<gtk::ListStore>()
tree_view_duplicate_finder.get_selection().set_mode(SelectionMode::Multiple); .unwrap();
list_store.clear();
create_tree_view_duplicates(&mut tree_view_duplicate_finder);
let col_indices = [0, 1, 2, 3]; 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); print_text_messages_to_text_view(&text_messages, &text_view_errors);
} }
@ -411,19 +445,18 @@ fn main() {
// Create GUI // Create GUI
{ {
// Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears let list_store = scrolled_window_empty_folder_finder
for i in &scrolled_window_empty_folder_finder.get_children() { .get_children()
scrolled_window_empty_folder_finder.remove(i); .get(0)
} .unwrap()
.clone()
let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; .downcast::<gtk::TreeView>()
let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); .unwrap()
.get_model()
let mut tree_view_empty_folder_finder: gtk::TreeView = TreeView::with_model(&list_store); .unwrap()
.downcast::<gtk::ListStore>()
tree_view_empty_folder_finder.get_selection().set_mode(SelectionMode::Multiple); .unwrap();
list_store.clear();
create_tree_view_empty_folders(&mut tree_view_empty_folder_finder);
let col_indices = [0, 1, 2, 3]; let col_indices = [0, 1, 2, 3];
@ -440,10 +473,6 @@ fn main() {
]; ];
list_store.set(&list_store.append(), &col_indices, &values); 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); print_text_messages_to_text_view(&text_messages, &text_view_errors);
} }