1
0
Fork 0
mirror of synced 2024-06-01 18:19:46 +12:00

Popover sort basic

This commit is contained in:
Rafał Mikrut 2023-02-18 08:09:44 +01:00
parent 208529cf98
commit b1a41585e4
9 changed files with 79 additions and 34 deletions

View file

@ -238,11 +238,11 @@ popover_custom_all_in_group_label = Don't select all records in group
popover_custom_mode_unselect = Unselect Custom
popover_custom_mode_select = Select Custom
popover_sort_file_name = "Sort by file name"
popover_sort_folder_name = "Sort by folder name"
popover_sort_full_name = "Sort by full name"
popover_sort_size = "Sort by size"
popover_sort_selection = "Sort by selection"
popover_sort_file_name = File name
popover_sort_folder_name = Folder name
popover_sort_full_name = Full name
popover_sort_size = Size
popover_sort_selection = Selection
popover_invalid_regex = Regex is invalid
popover_valid_regex = Regex is valid

View file

@ -512,6 +512,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
BottomButtonsEnum::Save,
BottomButtonsEnum::Delete,
BottomButtonsEnum::Select,
BottomButtonsEnum::Sort,
BottomButtonsEnum::Symlink,
BottomButtonsEnum::Hardlink,
BottomButtonsEnum::Move,
@ -949,6 +950,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
BottomButtonsEnum::Save,
BottomButtonsEnum::Delete,
BottomButtonsEnum::Select,
BottomButtonsEnum::Sort,
BottomButtonsEnum::Symlink,
BottomButtonsEnum::Hardlink,
BottomButtonsEnum::Move,
@ -1121,6 +1123,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
BottomButtonsEnum::Save,
BottomButtonsEnum::Delete,
BottomButtonsEnum::Select,
BottomButtonsEnum::Sort,
BottomButtonsEnum::Symlink,
BottomButtonsEnum::Hardlink,
BottomButtonsEnum::Move,
@ -1326,6 +1329,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
BottomButtonsEnum::Save,
BottomButtonsEnum::Delete,
BottomButtonsEnum::Select,
BottomButtonsEnum::Sort,
BottomButtonsEnum::Symlink,
BottomButtonsEnum::Hardlink,
BottomButtonsEnum::Move,

View file

@ -1,9 +1,44 @@
use crate::gui_structs::gui_data::GuiData;
use crate::gui_structs::gui_popovers_sort::GuiSortPopovers;
use crate::help_functions::PopoverTypes;
use crate::notebook_enums::{to_notebook_main_enum, NotebookMainEnum};
use crate::notebook_info::NOTEBOOKS_INFO;
use gtk4::prelude::*;
pub fn connect_button_sort(_gui_data: &GuiData) {
// let popovers_select = gui_data.popovers_select.clone();
// let notebook_main = gui_data.main_notebook.notebook_main.clone();
// let gc_buttons_select = gui_data.bottom_buttons.gc_buttons_select.clone();
//
// gc_buttons_select.connect_pressed(move |_, _, _, _| ());
pub fn connect_button_sort(gui_data: &GuiData) {
let popovers_sort = gui_data.popovers_sort.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let gc_buttons_sort = gui_data.bottom_buttons.gc_buttons_sort.clone();
gc_buttons_sort.connect_pressed(move |_, _, _, _| {
show_required_popovers(&popovers_sort, &to_notebook_main_enum(notebook_main.current_page().unwrap()));
});
}
fn show_required_popovers(popovers_sort: &GuiSortPopovers, current_mode: &NotebookMainEnum) {
let buttons_popover_sort_file_name = popovers_sort.buttons_popover_sort_file_name.clone();
let buttons_popover_sort_size = popovers_sort.buttons_popover_sort_size.clone();
let buttons_popover_sort_folder_name = popovers_sort.buttons_popover_sort_folder_name.clone();
let buttons_popover_sort_full_name = popovers_sort.buttons_popover_sort_full_name.clone();
let buttons_popover_sort_selection = popovers_sort.buttons_popover_sort_selection.clone();
let arr = &NOTEBOOKS_INFO[*current_mode as usize].available_modes;
if arr.contains(&PopoverTypes::All) {
buttons_popover_sort_selection.show();
buttons_popover_sort_file_name.show();
buttons_popover_sort_folder_name.show();
buttons_popover_sort_full_name.show();
} else {
buttons_popover_sort_selection.hide();
buttons_popover_sort_file_name.hide();
buttons_popover_sort_folder_name.hide();
buttons_popover_sort_full_name.hide();
}
if arr.contains(&PopoverTypes::Size) {
buttons_popover_sort_size.show();
} else {
buttons_popover_sort_size.hide();
}
}

View file

@ -33,7 +33,7 @@ pub struct GuiBottomButtons {
}
impl GuiBottomButtons {
pub fn create_from_builder(builder: &gtk4::Builder, popover_select: &gtk4::Popover) -> Self {
pub fn create_from_builder(builder: &gtk4::Builder, popover_select: &gtk4::Popover, popover_sort: &gtk4::Popover) -> Self {
let buttons_search: gtk4::Button = builder.object("buttons_search").unwrap();
let buttons_select: gtk4::MenuButton = builder.object("buttons_select").unwrap();
let buttons_delete: gtk4::Button = builder.object("buttons_delete").unwrap();
@ -92,6 +92,7 @@ impl GuiBottomButtons {
];
buttons_select.set_popover(Some(popover_select));
buttons_sort.set_popover(Some(popover_sort));
#[cfg(target_family = "windows")]
buttons_hardlink.set_sensitive(test_hardlinks());

View file

@ -130,7 +130,7 @@ impl GuiData {
let upper_notebook = GuiUpperNotebook::create_from_builder(&builder);
let popovers_select = GuiSelectPopovers::create_from_builder();
let popovers_sort = GuiSortPopovers::create_from_builder();
let bottom_buttons = GuiBottomButtons::create_from_builder(&builder, &popovers_select.popover_select);
let bottom_buttons = GuiBottomButtons::create_from_builder(&builder, &popovers_select.popover_select, &popovers_sort.popover_sort);
let progress_window = GuiProgressDialog::create_from_builder(&window_main);
let about = GuiAbout::create_from_builder(&window_main, &pixbuf);
let header = GuiHeader::create_from_builder(&builder);

View file

@ -6,6 +6,10 @@ use crate::flg;
#[derive(Clone)]
pub struct GuiSortPopovers {
pub buttons_popover_sort_file_name: gtk4::Button,
pub buttons_popover_sort_folder_name: gtk4::Button,
pub buttons_popover_sort_full_name: gtk4::Button,
pub buttons_popover_sort_size: gtk4::Button,
pub buttons_popover_sort_selection: gtk4::Button,
pub popover_sort: gtk4::Popover,
}
@ -16,16 +20,27 @@ impl GuiSortPopovers {
let builder = Builder::from_string(glade_src.as_str());
let buttons_popover_sort_file_name: gtk4::Button = builder.object("buttons_popover_sort_file_name").unwrap();
let buttons_popover_sort_folder_name: gtk4::Button = builder.object("buttons_popover_sort_folder_name").unwrap();
let buttons_popover_sort_full_name: gtk4::Button = builder.object("buttons_popover_sort_full_name").unwrap();
let buttons_popover_sort_size: gtk4::Button = builder.object("buttons_popover_sort_size").unwrap();
let buttons_popover_sort_selection: gtk4::Button = builder.object("buttons_popover_sort_selection").unwrap();
let popover_sort: gtk4::Popover = builder.object("popover_sort").unwrap();
Self {
buttons_popover_sort_file_name,
buttons_popover_sort_folder_name,
buttons_popover_sort_full_name,
buttons_popover_sort_size,
buttons_popover_sort_selection,
popover_sort,
}
}
pub fn update_language(&self) {
self.buttons_popover_sort_file_name.set_label(&flg!("popover_sort_file_name"));
// TODO more languages
self.buttons_popover_sort_folder_name.set_label(&flg!("popover_sort_folder_name"));
self.buttons_popover_sort_full_name.set_label(&flg!("popover_sort_full_name"));
self.buttons_popover_sort_size.set_label(&flg!("popover_sort_size"));
self.buttons_popover_sort_selection.set_label(&flg!("popover_sort_selection"));
}
}

View file

@ -31,24 +31,11 @@ use crate::opening_selecting_records::*;
pub fn initialize_gui(gui_data: &mut GuiData) {
//// Initialize button
{
let buttons_search = gui_data.bottom_buttons.buttons_search.clone();
let buttons_save = gui_data.bottom_buttons.buttons_save.clone();
let buttons_delete = gui_data.bottom_buttons.buttons_delete.clone();
let buttons_select = gui_data.bottom_buttons.buttons_select.clone();
let buttons_symlink = gui_data.bottom_buttons.buttons_symlink.clone();
let buttons_hardlink = gui_data.bottom_buttons.buttons_hardlink.clone();
let buttons_move = gui_data.bottom_buttons.buttons_move.clone();
let buttons_compare = gui_data.bottom_buttons.buttons_compare.clone();
// Disable and show buttons - only search button should be visible
buttons_search.show();
buttons_save.hide();
buttons_delete.hide();
buttons_select.hide();
buttons_symlink.hide();
buttons_hardlink.hide();
buttons_move.hide();
buttons_compare.hide();
let buttons = &gui_data.bottom_buttons.buttons_array;
for button in buttons {
button.hide();
}
gui_data.bottom_buttons.buttons_search.show();
}
//// Initialize language combo box
{

View file

@ -989,6 +989,8 @@
(9,59,"GtkAccessible","accessible-role","menu-item-checkbox",None,None,None,None,None),
(9,59,"GtkWidget","margin-bottom","4",None,None,None,None,None),
(9,59,"GtkWidget","margin-top","5",None,None,None,None,None),
(10,1,"GtkPopover","child",None,None,None,None,None,2),
(10,1,"GtkPopover","position","top",None,None,None,None,None),
(10,2,"GtkOrientable","orientation","vertical",None,None,None,None,None),
(10,3,"GtkButton","label","File name",None,None,None,None,None),
(10,3,"GtkWidget","focusable","1",None,None,None,None,None),

View file

@ -4,7 +4,7 @@
<!-- interface-name popover_sort.ui -->
<requires lib="gtk" version="4.6"/>
<object class="GtkPopover" id="popover_sort">
<child>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
@ -43,6 +43,7 @@
</object>
</child>
</object>
</child>
</property>
<property name="position">top</property>
</object>
</interface>