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

Added probably all functionality to upper notebook(connection of buttons)

This commit is contained in:
Rafał Mikrut 2020-09-29 23:00:15 +02:00
parent 3c588c6316
commit 326ad5d746
2 changed files with 94 additions and 6 deletions

View file

@ -9,6 +9,7 @@ This is my first ever project in Rust so probably a lot of things are not being
- GUI Orbtk frontend(Very early WIP) - alternative GUI with reduced functionality
- Saving results to file - allows to easily read entries found by tool
- Rich search option - allows setting absolute included and excluded directories, set of allowed files extensions or excluded items with * wildcard
- Clean Glade file in which UI can be easily modernized
- Multiple tools to use:
- Duplicates - Finds duplicates basing on its size(fast), hash(accurate)
- Empty Folders - Finds empty folders with help of advanced algorithm
@ -25,7 +26,6 @@ This is my first ever project in Rust so probably a lot of things are not being
- Maybe windows support, but this will need some refactoring in code
- Translation support
- GTK Gui
- Selection of records(don't know how to do this)
- Popups
- Choosing directories(included, excluded)
- Popup with type of deleted records

View file

@ -83,10 +83,10 @@ fn main() {
let buttons_delete: gtk::Button = builder.get_object("buttons_delete").unwrap();
let buttons_save: gtk::Button = builder.get_object("buttons_save").unwrap();
// let buttons_add_included_directory : gtk::Button =builder.get_object("buttons_add_included_directory").unwrap();
// let buttons_remove_included_directory: gtk::Button =builder.get_object("buttons_remove_included_directory").unwrap();
// let buttons_add_excluded_directory: gtk::Button =builder.get_object("buttons_add_excluded_directory").unwrap();
// let buttons_remove_excluded_directory: gtk::Button =builder.get_object("buttons_remove_excluded_directory").unwrap();
let buttons_add_included_directory: gtk::Button = builder.get_object("buttons_add_included_directory").unwrap();
let buttons_remove_included_directory: gtk::Button = builder.get_object("buttons_remove_included_directory").unwrap();
let buttons_add_excluded_directory: gtk::Button = builder.get_object("buttons_add_excluded_directory").unwrap();
let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap();
// Not used buttons for now
buttons_stop.hide();
@ -298,6 +298,8 @@ fn main() {
let notebook_chooser_tool = notebook_chooser_tool.clone();
let scrolled_window_duplicate_finder = scrolled_window_duplicate_finder.clone();
let scrolled_window_empty_folder_finder = scrolled_window_empty_folder_finder.clone();
let scrolled_window_included_directories = scrolled_window_included_directories.clone();
let scrolled_window_excluded_directories = scrolled_window_excluded_directories.clone();
let text_view_errors = text_view_errors.clone();
buttons_search.connect_clicked(move |_| {
match notebook_chooser_tool_children_names.get(notebook_chooser_tool.get_current_page().unwrap() as usize).unwrap().as_str() {
@ -578,8 +580,94 @@ fn main() {
}
// Upper Notepad
{
// Add included directory
{
let scrolled_window_included_directories = scrolled_window_included_directories.clone();
let main_window = main_window.clone();
buttons_add_included_directory.connect_clicked(move |_| {
let chooser = gtk::FileChooserDialog::with_buttons(
Option::from("Folders to include"),
Option::from(&main_window),
gtk::FileChooserAction::SelectFolder,
&[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)],
);
chooser.show_all();
let response_type = chooser.run();
if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filename().unwrap().to_str().unwrap().to_string();
let tree_view = scrolled_window_included_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let col_indices = [0, 1];
let values: [&dyn ToValue; 2] = [&folder, &(MAIN_ROW_COLOR.to_string())];
list_store.set(&list_store.append(), &col_indices, &values);
}
chooser.close();
});
}
// Add excluded directory
{}
{
let scrolled_window_excluded_directories = scrolled_window_excluded_directories.clone();
let main_window = main_window.clone();
buttons_add_excluded_directory.connect_clicked(move |_| {
let chooser = gtk::FileChooserDialog::with_buttons(
Option::from("Folders to exclude"),
Option::from(&main_window),
gtk::FileChooserAction::SelectFolder,
&[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)],
);
chooser.show_all();
let response_type = chooser.run();
if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filename().unwrap().to_str().unwrap().to_string();
let tree_view = scrolled_window_excluded_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let col_indices = [0, 1];
let values: [&dyn ToValue; 2] = [&folder, &(MAIN_ROW_COLOR.to_string())];
list_store.set(&list_store.append(), &col_indices, &values);
}
chooser.close();
});
}
// Remove Excluded Folder
{
//let scrolled_window_excluded_directories = scrolled_window_excluded_directories.clone();
buttons_remove_excluded_directory.connect_clicked(move |_| {
let tree_view = scrolled_window_excluded_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let selection = tree_view.get_selection();
let (_, tree_iter) = match selection.get_selected() {
Some(t) => t,
None => {
return;
}
};
list_store.remove(&tree_iter);
});
}
// Remove Included Folder
{
//let scrolled_window_included_directories = scrolled_window_included_directories.clone();
buttons_remove_included_directory.connect_clicked(move |_| {
let tree_view = scrolled_window_included_directories.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
let list_store = tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap();
let selection = tree_view.get_selection();
let (_, tree_iter) = match selection.get_selected() {
Some(t) => t,
None => {
return;
}
};
list_store.remove(&tree_iter);
});
}
}
}