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
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

View file

@ -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);

View file

@ -72,6 +72,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
#[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();

View file

@ -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),