Revamp desktop usability and multiline fields
This commit is contained in:
@@ -8,7 +8,9 @@ use muda::{
|
||||
use crate::action::{self, ActionContext, MenuGroup, UiAction};
|
||||
|
||||
pub struct NativeMenu {
|
||||
_menu: Menu,
|
||||
menu: Menu,
|
||||
window_menu: Submenu,
|
||||
help_menu: Submenu,
|
||||
items: Vec<(UiAction, MenuItem)>,
|
||||
}
|
||||
|
||||
@@ -16,6 +18,8 @@ impl NativeMenu {
|
||||
pub fn install(context: ActionContext) -> Result<Self, muda::Error> {
|
||||
let menu = Menu::new();
|
||||
let mut items = Vec::new();
|
||||
let mut window_menu = None;
|
||||
let mut help_menu = None;
|
||||
for group in MenuGroup::ALL {
|
||||
let submenu = Submenu::new(group.label(), true);
|
||||
match group {
|
||||
@@ -50,10 +54,27 @@ impl NativeMenu {
|
||||
}
|
||||
_ => append_actions(&submenu, group, context, &mut items)?,
|
||||
}
|
||||
if group == MenuGroup::Window {
|
||||
window_menu = Some(submenu.clone());
|
||||
} else if group == MenuGroup::Help {
|
||||
help_menu = Some(submenu.clone());
|
||||
}
|
||||
menu.append(&submenu)?;
|
||||
}
|
||||
menu.init_for_nsapp();
|
||||
Ok(Self { _menu: menu, items })
|
||||
let native = Self {
|
||||
menu,
|
||||
window_menu: window_menu.expect("the Window menu is registered"),
|
||||
help_menu: help_menu.expect("the Help menu is registered"),
|
||||
items,
|
||||
};
|
||||
native.activate();
|
||||
Ok(native)
|
||||
}
|
||||
|
||||
pub fn activate(&self) {
|
||||
self.menu.init_for_nsapp();
|
||||
self.window_menu.set_as_windows_menu_for_nsapp();
|
||||
self.help_menu.set_as_help_menu_for_nsapp();
|
||||
}
|
||||
|
||||
pub fn sync(&self, context: ActionContext) {
|
||||
@@ -117,6 +138,7 @@ fn accelerator(action: UiAction) -> Option<Accelerator> {
|
||||
let (modifiers, code) = match action {
|
||||
UiAction::Settings => (command, Code::Comma),
|
||||
UiAction::NewEntry => (command, Code::KeyN),
|
||||
UiAction::NewFolder => (command | Modifiers::SHIFT, Code::KeyN),
|
||||
UiAction::OpenFolder => (command, Code::KeyO),
|
||||
UiAction::Save => (command, Code::KeyS),
|
||||
UiAction::CloseWindow => (command, Code::KeyW),
|
||||
@@ -129,22 +151,20 @@ fn accelerator(action: UiAction) -> Option<Accelerator> {
|
||||
UiAction::SearchContents => (command | Modifiers::SHIFT, Code::KeyF),
|
||||
UiAction::CommandPalette => (command, Code::KeyK),
|
||||
UiAction::Refresh => (command, Code::KeyR),
|
||||
UiAction::ReloadEntry => (command | Modifiers::SHIFT, Code::KeyR),
|
||||
UiAction::EditEntry => (command, Code::KeyE),
|
||||
UiAction::Lock => (command, Code::KeyL),
|
||||
UiAction::Help => (Modifiers::empty(), Code::F1),
|
||||
UiAction::About
|
||||
| UiAction::InitializeStore
|
||||
| UiAction::NewFolder
|
||||
| UiAction::CopyField
|
||||
| UiAction::CopyEditedField
|
||||
| UiAction::TogglePaneFocus
|
||||
| UiAction::OpenEntry
|
||||
| UiAction::ReloadEntry
|
||||
| UiAction::EditEntry
|
||||
| UiAction::GeneratePassword
|
||||
| UiAction::MoveEntry
|
||||
| UiAction::CopyEntry
|
||||
| UiAction::DeleteEntry
|
||||
| UiAction::ToggleReveal
|
||||
| UiAction::GenerateOtp
|
||||
| UiAction::CopyOtp
|
||||
| UiAction::ImportOtp
|
||||
|
||||
Reference in New Issue
Block a user