Add keybinding to open menu (F10)
This commit is contained in:
parent
ea93d3b090
commit
81dada9fa4
|
@ -21,6 +21,12 @@
|
|||
<property name="title">{{ tr(key="sc-gen-close-window") }}</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="accelerator">F10</property>
|
||||
<property name="title">{{ tr(key="sc-gen-menu") }}</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="accelerator"><Ctrl>q</property>
|
||||
|
|
11
delfin.cmb
11
delfin.cmb
|
@ -21,7 +21,8 @@
|
|||
(2,15,"GtkShortcutsShortcut",None,3,None,None,None,3,None),
|
||||
(2,16,"GtkShortcutsGroup",None,2,None,None,None,1,None),
|
||||
(2,17,"GtkShortcutsShortcut",None,16,None,None,None,None,None),
|
||||
(2,18,"GtkShortcutsShortcut",None,16,None,None,None,1,None)
|
||||
(2,18,"GtkShortcutsShortcut",None,16,None,None,None,1,None),
|
||||
(2,19,"GtkShortcutsShortcut",None,3,None,None,None,3,None)
|
||||
</object>
|
||||
<object_property>
|
||||
(2,2,"GtkShortcutsSection","section-name","Video Player",None,None,None,None,None,None,None,None,None),
|
||||
|
@ -45,12 +46,14 @@
|
|||
(2,12,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-vp-frame-step\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,14,"GtkShortcutsShortcut","accelerator","<Ctrl>w",None,None,None,None,None,None,None,None,None),
|
||||
(2,14,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-gen-close-window\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,15,"GtkShortcutsShortcut","accelerator","<Ctrl>q",None,None,None,None,None,None,None,None,None),
|
||||
(2,15,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-gen-quit\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,15,"GtkShortcutsShortcut","accelerator","F10",None,None,None,None,None,None,None,None,None),
|
||||
(2,15,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-gen-menu\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,16,"GtkShortcutsGroup","title","{{ tr(key=\"sc-lib\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,17,"GtkShortcutsShortcut","accelerator","<Ctrl>f",None,None,None,None,None,None,None,None,None),
|
||||
(2,17,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-lib-search\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,18,"GtkShortcutsShortcut","accelerator","<Ctrl>r",None,None,None,None,None,None,None,None,None),
|
||||
(2,18,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-lib-refresh\") }}",None,None,None,None,None,None,None,None,None)
|
||||
(2,18,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-lib-refresh\") }}",None,None,None,None,None,None,None,None,None),
|
||||
(2,19,"GtkShortcutsShortcut","accelerator","<Ctrl>q",None,None,None,None,None,None,None,None,None),
|
||||
(2,19,"GtkShortcutsShortcut","title","{{ tr(key=\"sc-gen-quit\") }}",None,None,None,None,None,None,None,None,None)
|
||||
</object_property>
|
||||
</cambalache-project>
|
||||
|
|
|
@ -14,6 +14,7 @@ use std::{
|
|||
|
||||
use crate::{
|
||||
accounts::account_list::{AccountList, AccountListInput, AccountListOutput},
|
||||
borgar::borgar_menu::{BorgarMenuInput, BORGAR_MENU_SENDER},
|
||||
config::{self, general::MostRecentLogin},
|
||||
globals::CONFIG,
|
||||
jellyfin_api::api_client::ApiClient,
|
||||
|
@ -357,10 +358,10 @@ impl App {
|
|||
|
||||
let mut group = RelmActionGroup::<AppActionGroup>::new();
|
||||
|
||||
let quit_action: RelmAction<QuitAction> = RelmAction::new_stateless(|_| {
|
||||
relm4::main_application().quit();
|
||||
let menu_action: RelmAction<MenuAction> = RelmAction::new_stateless(|_| {
|
||||
BORGAR_MENU_SENDER.send(BorgarMenuInput::OpenMenu).unwrap();
|
||||
});
|
||||
app.set_accelerators_for_action::<QuitAction>(&["<Ctrl>q"]);
|
||||
app.set_accelerators_for_action::<MenuAction>(&["F10"]);
|
||||
|
||||
let preferences_action: RelmAction<PreferencesAction> = RelmAction::new_stateless({
|
||||
let sender = sender.clone();
|
||||
|
@ -370,8 +371,14 @@ impl App {
|
|||
});
|
||||
app.set_accelerators_for_action::<PreferencesAction>(&["<Ctrl>comma"]);
|
||||
|
||||
group.add_action(quit_action);
|
||||
let quit_action: RelmAction<QuitAction> = RelmAction::new_stateless(|_| {
|
||||
relm4::main_application().quit();
|
||||
});
|
||||
app.set_accelerators_for_action::<QuitAction>(&["<Ctrl>q"]);
|
||||
|
||||
group.add_action(menu_action);
|
||||
group.add_action(preferences_action);
|
||||
group.add_action(quit_action);
|
||||
group.register_for_main_application();
|
||||
}
|
||||
}
|
||||
|
@ -409,5 +416,6 @@ fn convert_library_output(output: LibraryOutput) -> AppInput {
|
|||
}
|
||||
|
||||
relm4::new_action_group!(AppActionGroup, "app");
|
||||
relm4::new_stateless_action!(MenuAction, AppActionGroup, "menu");
|
||||
relm4::new_stateless_action!(PreferencesAction, AppActionGroup, "preferences");
|
||||
relm4::new_stateless_action!(QuitAction, AppActionGroup, "quit");
|
||||
|
|
|
@ -2,10 +2,13 @@ use std::sync::Arc;
|
|||
|
||||
use gtk::gio;
|
||||
use gtk::prelude::*;
|
||||
use once_cell::sync::Lazy;
|
||||
use relm4::{
|
||||
actions::{AccelsPlus, RelmAction, RelmActionGroup},
|
||||
once_cell,
|
||||
prelude::*,
|
||||
};
|
||||
use tokio::sync::broadcast;
|
||||
|
||||
use crate::app::AppInput;
|
||||
use crate::app::APP_BROKER;
|
||||
|
@ -19,6 +22,9 @@ use crate::{
|
|||
|
||||
use super::about::About;
|
||||
|
||||
pub static BORGAR_MENU_SENDER: Lazy<broadcast::Sender<BorgarMenuInput>> =
|
||||
Lazy::new(|| broadcast::channel(1).0);
|
||||
|
||||
pub struct BorgarMenuAuth {
|
||||
pub api_client: Arc<ApiClient>,
|
||||
pub server: Server,
|
||||
|
@ -31,8 +37,9 @@ pub struct BorgarMenu {
|
|||
about: Option<Controller<About>>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum BorgarMenuInput {
|
||||
OpenMenu,
|
||||
SignOut,
|
||||
About,
|
||||
}
|
||||
|
@ -122,6 +129,15 @@ impl Component for BorgarMenu {
|
|||
|
||||
group.register_for_widget(root);
|
||||
|
||||
relm4::spawn({
|
||||
let mut rx = BORGAR_MENU_SENDER.subscribe();
|
||||
async move {
|
||||
while let Ok(msg) = rx.recv().await {
|
||||
sender.input(msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ComponentParts { model, widgets }
|
||||
}
|
||||
|
||||
|
@ -132,7 +148,14 @@ impl Component for BorgarMenu {
|
|||
sender: ComponentSender<Self>,
|
||||
root: &Self::Root,
|
||||
) {
|
||||
if !root.is_mapped() {
|
||||
return;
|
||||
}
|
||||
|
||||
match message {
|
||||
BorgarMenuInput::OpenMenu => {
|
||||
root.activate();
|
||||
}
|
||||
BorgarMenuInput::SignOut => 'msg: {
|
||||
let BorgarMenuAuth {
|
||||
api_client,
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
sc-gen = General
|
||||
sc-gen-shortcuts = Show shortcuts
|
||||
sc-gen-close-window = Close window
|
||||
sc-gen-menu = Open menu
|
||||
sc-gen-quit = Quit
|
||||
# Library
|
||||
# =======
|
||||
|
|
Loading…
Reference in New Issue