diff --git a/i18n/en/cosmic_edit.ftl b/i18n/en/cosmic_edit.ftl index 720993e..aa06825 100644 --- a/i18n/en/cosmic_edit.ftl +++ b/i18n/en/cosmic_edit.ftl @@ -1,5 +1,6 @@ new-document = New document open-project = Open project +todo = TODO # Context Pages @@ -30,8 +31,11 @@ file = File new-file = New file new-window = New window open-file = Open file... -open-recent = Open recent -todo = TODO +open-recent-file = Open recent file +close-file = Close file +menu-open-project = Open project... +open-recent-project = Open recent project +close-project = Close project save = Save save-as = Save as... revert-all-changes = Revert all changes diff --git a/src/config.rs b/src/config.rs index 48266c3..c733c04 100644 --- a/src/config.rs +++ b/src/config.rs @@ -12,11 +12,14 @@ pub const CONFIG_VERSION: u64 = 1; #[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)] pub enum Action { + CloseFile, + CloseProject, Copy, Cut, NewFile, NewWindow, OpenFileDialog, + OpenProjectDialog, Paste, Quit, Save, @@ -28,11 +31,14 @@ pub enum Action { impl Action { pub fn message(&self) -> Message { match self { + Self::CloseFile => Message::CloseFile, + Self::CloseProject => Message::CloseProject, Self::Copy => Message::Copy, Self::Cut => Message::Cut, Self::NewFile => Message::NewFile, Self::NewWindow => Message::NewWindow, Self::OpenFileDialog => Message::OpenFileDialog, + Self::OpenProjectDialog => Message::OpenProjectDialog, Self::Paste => Message::Paste, Self::Quit => Message::Quit, Self::Save => Message::Save, @@ -74,12 +80,14 @@ impl KeyBind { }}; } + bind!([Ctrl], W, CloseFile); bind!([Ctrl], X, Cut); bind!([Ctrl], C, Copy); bind!([Ctrl], V, Paste); - bind!([Ctrl], N, NewFile); - bind!([Ctrl, Shift], N, NewWindow); + bind!([Ctrl], T, NewFile); + bind!([Ctrl], N, NewWindow); bind!([Ctrl], O, OpenFileDialog); + bind!([Ctrl, Shift], O, OpenProjectDialog); bind!([Ctrl], Q, Quit); bind!([Ctrl], S, Save); bind!([Ctrl], A, SelectAll); diff --git a/src/main.rs b/src/main.rs index e130450..20bfd9f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -72,6 +72,8 @@ fn main() -> Result<(), Box> { #[derive(Clone, Debug, Eq, PartialEq)] pub enum Message { Config(Config), + CloseFile, + CloseProject, Copy, Cut, DefaultFont(usize), @@ -523,6 +525,12 @@ impl cosmic::Application for App { 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() { Some(tab) => { let editor = tab.editor.lock().unwrap(); diff --git a/src/menu.rs b/src/menu.rs index 8ed2e74..d62ed3f 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -101,9 +101,17 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> { MenuTree::new(horizontal_rule(1)), menu_item(fl!("open-file"), Message::OpenFileDialog), MenuTree::with_children( - menu_folder(fl!("open-recent")), + menu_folder(fl!("open-recent-file")), 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)), menu_item(fl!("save"), Message::Save), menu_key(fl!("save-as"), "Ctrl + Shift + S", Message::Todo),