Add menu items for projects and closing files

This commit is contained in:
Jeremy Soller 2023-11-13 07:32:20 -07:00
parent e278317565
commit 5032f74356
No known key found for this signature in database
GPG key ID: DCFCA852D3906975
4 changed files with 33 additions and 5 deletions

View file

@ -1,5 +1,6 @@
new-document = New document new-document = New document
open-project = Open project open-project = Open project
todo = TODO
# Context Pages # Context Pages
@ -30,8 +31,11 @@ file = File
new-file = New file new-file = New file
new-window = New window new-window = New window
open-file = Open file... open-file = Open file...
open-recent = Open recent open-recent-file = Open recent file
todo = TODO close-file = Close file
menu-open-project = Open project...
open-recent-project = Open recent project
close-project = Close project
save = Save save = Save
save-as = Save as... save-as = Save as...
revert-all-changes = Revert all changes revert-all-changes = Revert all changes

View file

@ -12,11 +12,14 @@ pub const CONFIG_VERSION: u64 = 1;
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)] #[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub enum Action { pub enum Action {
CloseFile,
CloseProject,
Copy, Copy,
Cut, Cut,
NewFile, NewFile,
NewWindow, NewWindow,
OpenFileDialog, OpenFileDialog,
OpenProjectDialog,
Paste, Paste,
Quit, Quit,
Save, Save,
@ -28,11 +31,14 @@ pub enum Action {
impl Action { impl Action {
pub fn message(&self) -> Message { pub fn message(&self) -> Message {
match self { match self {
Self::CloseFile => Message::CloseFile,
Self::CloseProject => Message::CloseProject,
Self::Copy => Message::Copy, Self::Copy => Message::Copy,
Self::Cut => Message::Cut, Self::Cut => Message::Cut,
Self::NewFile => Message::NewFile, Self::NewFile => Message::NewFile,
Self::NewWindow => Message::NewWindow, Self::NewWindow => Message::NewWindow,
Self::OpenFileDialog => Message::OpenFileDialog, Self::OpenFileDialog => Message::OpenFileDialog,
Self::OpenProjectDialog => Message::OpenProjectDialog,
Self::Paste => Message::Paste, Self::Paste => Message::Paste,
Self::Quit => Message::Quit, Self::Quit => Message::Quit,
Self::Save => Message::Save, Self::Save => Message::Save,
@ -74,12 +80,14 @@ impl KeyBind {
}}; }};
} }
bind!([Ctrl], W, CloseFile);
bind!([Ctrl], X, Cut); bind!([Ctrl], X, Cut);
bind!([Ctrl], C, Copy); bind!([Ctrl], C, Copy);
bind!([Ctrl], V, Paste); bind!([Ctrl], V, Paste);
bind!([Ctrl], N, NewFile); bind!([Ctrl], T, NewFile);
bind!([Ctrl, Shift], N, NewWindow); bind!([Ctrl], N, NewWindow);
bind!([Ctrl], O, OpenFileDialog); bind!([Ctrl], O, OpenFileDialog);
bind!([Ctrl, Shift], O, OpenProjectDialog);
bind!([Ctrl], Q, Quit); bind!([Ctrl], Q, Quit);
bind!([Ctrl], S, Save); bind!([Ctrl], S, Save);
bind!([Ctrl], A, SelectAll); bind!([Ctrl], A, SelectAll);

View file

@ -72,6 +72,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
#[derive(Clone, Debug, Eq, PartialEq)] #[derive(Clone, Debug, Eq, PartialEq)]
pub enum Message { pub enum Message {
Config(Config), Config(Config),
CloseFile,
CloseProject,
Copy, Copy,
Cut, Cut,
DefaultFont(usize), DefaultFont(usize),
@ -523,6 +525,12 @@ impl cosmic::Application for App {
self.update_config(); self.update_config();
} }
} }
Message::CloseFile => {
return self.update(Message::TabClose(self.tab_model.active()));
}
Message::CloseProject => {
log::info!("TODO");
}
Message::Copy => match self.active_tab() { Message::Copy => match self.active_tab() {
Some(tab) => { Some(tab) => {
let editor = tab.editor.lock().unwrap(); let editor = tab.editor.lock().unwrap();

View file

@ -101,9 +101,17 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> {
MenuTree::new(horizontal_rule(1)), MenuTree::new(horizontal_rule(1)),
menu_item(fl!("open-file"), Message::OpenFileDialog), menu_item(fl!("open-file"), Message::OpenFileDialog),
MenuTree::with_children( MenuTree::with_children(
menu_folder(fl!("open-recent")), menu_folder(fl!("open-recent-file")),
vec![menu_item(fl!("todo"), Message::Todo)], vec![menu_item(fl!("todo"), Message::Todo)],
), ),
menu_item(fl!("close-file"), Message::CloseFile),
MenuTree::new(horizontal_rule(1)),
menu_item(fl!("menu-open-project"), Message::OpenProjectDialog),
MenuTree::with_children(
menu_folder(fl!("open-recent-project")),
vec![menu_item(fl!("todo"), Message::Todo)],
),
menu_item(fl!("close-project"), Message::CloseProject),
MenuTree::new(horizontal_rule(1)), MenuTree::new(horizontal_rule(1)),
menu_item(fl!("save"), Message::Save), menu_item(fl!("save"), Message::Save),
menu_key(fl!("save-as"), "Ctrl + Shift + S", Message::Todo), menu_key(fl!("save-as"), "Ctrl + Shift + S", Message::Todo),