Mercurial Hosting > editor
changeset 4:3d6414265959
add save
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 31 Mar 2025 19:14:04 -0600 |
parents | a79a840691b1 |
children | 57b4c281a03e |
files | editor.luan |
diffstat | 1 files changed, 30 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/editor.luan Mon Mar 31 17:17:38 2025 -0600 +++ b/editor.luan Mon Mar 31 19:14:04 2025 -0600 @@ -22,8 +22,10 @@ local function make_menu_bar(window) local menu_bar = new_menu_bar() + do local file_menu = new_menu() file_menu.text = "File" + do local new_file = new_menu_item() new_file.text = "New File" new_file.accelerator = "meta N" @@ -31,6 +33,8 @@ new_window() end) file_menu.add(new_file) + end + do local open = new_menu_item() open.text = "Open..." open.accelerator = "meta O" @@ -46,9 +50,32 @@ end end) file_menu.add(open) + end + do + local save = new_menu_item() + save.text = "Save" + save.accelerator = "meta S" + save.add_action_listener(function() + if window.file == nil then + local file_chooser = window.frame.file_chooser_save() + file_chooser.visible = true + local file = file_chooser.file + if file == nil then + return + end + window.file = file + window.frame.title = file.canonical().to_string() + end + window.file.write_text(window.text_area.text) + end) + file_menu.add(save) + end menu_bar.add(file_menu) + end + do local view_menu = new_menu() view_menu.text = "View" + do local word_wrap = new_check_box_menu_item() word_wrap.text = "Word Wrap" word_wrap.state = window.text_area.line_wrap @@ -56,7 +83,9 @@ window.text_area.line_wrap = word_wrap.state end) view_menu.add(word_wrap) + end menu_bar.add(view_menu) + end return menu_bar end @@ -64,7 +93,7 @@ function new_window(file) local frame = new_frame() - frame.title = file and file.canonical().to_string() or "untitled" + frame.title = file and file.canonical().to_string() or "new" frame.add_close_listener(function() n_windows = n_windows - 1 if n_windows == 0 then