Add basic scroll window to include and exclude directory folders
This commit is contained in:
parent
4242e8e222
commit
c7b9daaff2
|
@ -61,8 +61,8 @@ cd czkawka
|
|||
```
|
||||
cargo run --bin czkawka_gui
|
||||
```
|
||||
![GUI GTK](https://user-images.githubusercontent.com/41945903/93716818-0eb7ee00-fb72-11ea-8fdb-50b49a221868.png)
|
||||
- Run alternative Orbtk GUI(Still WIP)
|
||||
![GUI GTK](https://user-images.githubusercontent.com/41945903/94106023-d72f9700-fe3a-11ea-821d-48484afd74fb.png)
|
||||
- Run alternative Orbtk GUI(Still WIP, and currently stopped due https://github.com/intellij-rust/intellij-rust/issues/5943)
|
||||
```
|
||||
cargo run --bin czkawka_gui_orbtk
|
||||
```
|
||||
|
|
|
@ -174,7 +174,9 @@ Author: Rafał Mikrut
|
|||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<property name="margin_start">5</property>
|
||||
<property name="margin_end">5</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
|
@ -312,6 +314,7 @@ Author: Rafał Mikrut
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
|
@ -336,6 +339,8 @@ Author: Rafał Mikrut
|
|||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_start">5</property>
|
||||
<property name="margin_end">5</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
|
@ -454,7 +459,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolled_window_included_directories1">
|
||||
<object class="GtkScrolledWindow" id="scrolled_window_excluded_directories">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="shadow_type">in</property>
|
||||
|
@ -528,7 +533,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry">
|
||||
<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>
|
||||
|
@ -648,7 +653,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry">
|
||||
<object class="GtkEntry" id="entry_allowed_extensions">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
|
@ -717,7 +722,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="duplicate_minimal_size">
|
||||
<object class="GtkEntry" id="entry_duplicate_minimal_size">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="max_length">15</property>
|
||||
|
@ -801,10 +806,15 @@ Author: Rafał Mikrut
|
|||
<object class="GtkBox" id="buttons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_start">5</property>
|
||||
<property name="margin_end">5</property>
|
||||
<property name="margin_top">2</property>
|
||||
<property name="margin_bottom">2</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="control_buttons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_search">
|
||||
<property name="visible">True</property>
|
||||
|
@ -1014,6 +1024,7 @@ Author: Rafał Mikrut
|
|||
<object class="GtkBox" id="action_buttons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_select">
|
||||
<property name="visible">True</property>
|
||||
|
@ -1181,6 +1192,7 @@ Author: Rafał Mikrut
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="shadow_type">none</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
@ -1192,7 +1204,9 @@ Author: Rafał Mikrut
|
|||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="resize_mode">queue</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<property name="min_content_height">100</property>
|
||||
<child>
|
||||
<object class="GtkTextView" id="errors">
|
||||
<property name="visible">True</property>
|
||||
|
@ -1204,6 +1218,7 @@ Author: Rafał Mikrut
|
|||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
|
|
@ -19,9 +19,12 @@ enum ColumnsDefault {
|
|||
Path,
|
||||
Modification,
|
||||
}
|
||||
enum ColumnsDirectory {
|
||||
Path = 0,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Check for version check
|
||||
// Printing version
|
||||
{
|
||||
let all_arguments: Vec<String> = env::args().skip(1).collect(); // Not need to check program name
|
||||
|
||||
|
@ -45,9 +48,9 @@ fn main() {
|
|||
main_window.set_title("Czkawka GTK GUI");
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// State
|
||||
// States
|
||||
|
||||
// Buttons State
|
||||
// Buttons State - to remember existence of different buttons on pages
|
||||
|
||||
let shared_buttons: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<String, HashMap<String, bool>>::new()));
|
||||
shared_buttons.borrow_mut().clear();
|
||||
|
@ -65,16 +68,17 @@ fn main() {
|
|||
shared_buttons.borrow_mut().insert(i.to_string(), temp_hashmap);
|
||||
}
|
||||
|
||||
// State of search results
|
||||
// State of search results - probably are not necessary due
|
||||
|
||||
let shared_duplication_state: Rc<RefCell<_>> = Rc::new(RefCell::new(DuplicateFinder::new()));
|
||||
let shared_empty_folders_state: Rc<RefCell<_>> = Rc::new(RefCell::new(EmptyFolder::new()));
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// GUI Notepad Buttons
|
||||
|
||||
// GUI Duplicate Entry
|
||||
let minimal_size_entry: gtk::Entry = builder.get_object("duplicate_minimal_size").unwrap();
|
||||
// GUI Entry
|
||||
let entry_duplicate_minimal_size: gtk::Entry = builder.get_object("entry_duplicate_minimal_size").unwrap();
|
||||
let entry_allowed_extensions: gtk::Entry = builder.get_object("entry_allowed_extensions").unwrap();
|
||||
let entry_excluded_items: gtk::Entry = builder.get_object("entry_excluded_items").unwrap();
|
||||
|
||||
// GUI Buttons
|
||||
let buttons_search: gtk::Button = builder.get_object("buttons_search").unwrap();
|
||||
|
@ -102,18 +106,58 @@ fn main() {
|
|||
// Entry
|
||||
let info_entry: gtk::Entry = builder.get_object("info_entry").unwrap(); // To show default
|
||||
|
||||
// Scrolled window
|
||||
// // Scrolled windows
|
||||
|
||||
// Main notebook
|
||||
let scrolled_window_duplicate_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_duplicate_finder").unwrap();
|
||||
let scrolled_window_empty_folder_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_empty_folder_finder").unwrap();
|
||||
|
||||
// Upper notebook
|
||||
let scrolled_window_included_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_included_directories").unwrap();
|
||||
let scrolled_window_excluded_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_excluded_directories").unwrap();
|
||||
|
||||
// Set starting information in bottom panel
|
||||
{
|
||||
info_entry.set_text("Duplicated Files");
|
||||
|
||||
// Disable all unused buttons
|
||||
// Disable and show buttons
|
||||
buttons_search.show();
|
||||
buttons_save.hide();
|
||||
buttons_delete.hide();
|
||||
|
||||
// Set Include Directory
|
||||
{
|
||||
let col_types: [glib::types::Type; 3] = [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_included_directory: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view_included_directory.get_selection().set_mode(SelectionMode::Single);
|
||||
|
||||
create_tree_view_directories(&mut tree_view_included_directory);
|
||||
|
||||
let col_indices = [0];
|
||||
|
||||
let values: [&dyn ToValue; 1] = [&("/home")];
|
||||
list_store.set(&list_store.append(), &col_indices, &values);
|
||||
|
||||
scrolled_window_included_directories.add(&tree_view_included_directory);
|
||||
scrolled_window_included_directories.show_all();
|
||||
}
|
||||
// Set Excluded Directory
|
||||
{
|
||||
let col_types: [glib::types::Type; 3] = [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_excluded_directory: gtk::TreeView = TreeView::with_model(&list_store);
|
||||
|
||||
tree_view_excluded_directory.get_selection().set_mode(SelectionMode::Single);
|
||||
|
||||
create_tree_view_directories(&mut tree_view_excluded_directory);
|
||||
|
||||
scrolled_window_excluded_directories.add(&tree_view_excluded_directory);
|
||||
scrolled_window_excluded_directories.show_all();
|
||||
}
|
||||
}
|
||||
|
||||
// Connecting events
|
||||
|
@ -204,15 +248,17 @@ fn main() {
|
|||
let mut df = DuplicateFinder::new();
|
||||
let check_method = duplicate::CheckingMethod::HASH;
|
||||
{
|
||||
df.set_include_directory("/home/rafal/Pulpit".to_owned());
|
||||
df.set_exclude_directory("/rafa/".to_owned());
|
||||
df.set_excluded_items("".to_owned());
|
||||
df.set_allowed_extensions("".to_owned());
|
||||
df.set_min_file_size(match minimal_size_entry.get_text().as_str().parse::<u64>() {
|
||||
df.set_include_directory("/home/rafal/Pulpit".to_owned()); // TODO
|
||||
df.set_exclude_directory("/rafa/".to_owned()); // TODO
|
||||
// df.set_include_directory(get_string_from_list_store(&scrolled_window_included_directories)); // TODO
|
||||
// df.set_exclude_directory(get_string_from_list_store(&scrolled_window_excluded_directories)); // TODO
|
||||
df.set_excluded_items(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>() {
|
||||
Ok(t) => t,
|
||||
Err(_) => 1024, // By default
|
||||
});
|
||||
df.set_check_method(check_method.clone());
|
||||
df.set_check_method(check_method.clone()); // TODO
|
||||
df.set_delete_method(duplicate::DeleteMethod::None);
|
||||
df.find_duplicates();
|
||||
}
|
||||
|
@ -475,3 +521,18 @@ pub fn create_tree_view_empty_folders(tree_view_empty_folder_finder: &mut gtk::T
|
|||
|
||||
tree_view_empty_folder_finder.set_vexpand(true);
|
||||
}
|
||||
|
||||
pub fn create_tree_view_directories(tree_view_directories: &mut gtk::TreeView) {
|
||||
let renderer = gtk::CellRendererText::new();
|
||||
let name_column: gtk::TreeViewColumn = TreeViewColumn::new();
|
||||
name_column.pack_start(&renderer, true);
|
||||
name_column.add_attribute(&renderer, "text", ColumnsDirectory::Path as i32);
|
||||
tree_view_directories.append_column(&name_column);
|
||||
|
||||
tree_view_directories.set_headers_visible(false);
|
||||
}
|
||||
|
||||
pub fn get_string_from_list_store(_scrolled_window: >k::ScrolledWindow) -> String {
|
||||
// TODO
|
||||
return "".to_string();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue