Mercurial Hosting > editor
comparison editor.luan @ 4:3d6414265959
add save
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 31 Mar 2025 19:14:04 -0600 |
parents | a79a840691b1 |
children | 57b4c281a03e |
comparison
equal
deleted
inserted
replaced
3:a79a840691b1 | 4:3d6414265959 |
---|---|
20 | 20 |
21 local new_window | 21 local new_window |
22 | 22 |
23 local function make_menu_bar(window) | 23 local function make_menu_bar(window) |
24 local menu_bar = new_menu_bar() | 24 local menu_bar = new_menu_bar() |
25 do | |
25 local file_menu = new_menu() | 26 local file_menu = new_menu() |
26 file_menu.text = "File" | 27 file_menu.text = "File" |
28 do | |
27 local new_file = new_menu_item() | 29 local new_file = new_menu_item() |
28 new_file.text = "New File" | 30 new_file.text = "New File" |
29 new_file.accelerator = "meta N" | 31 new_file.accelerator = "meta N" |
30 new_file.add_action_listener(function() | 32 new_file.add_action_listener(function() |
31 new_window() | 33 new_window() |
32 end) | 34 end) |
33 file_menu.add(new_file) | 35 file_menu.add(new_file) |
36 end | |
37 do | |
34 local open = new_menu_item() | 38 local open = new_menu_item() |
35 open.text = "Open..." | 39 open.text = "Open..." |
36 open.accelerator = "meta O" | 40 open.accelerator = "meta O" |
37 open.add_action_listener(function() | 41 open.add_action_listener(function() |
38 local file_chooser = window.frame.file_chooser_load() | 42 local file_chooser = window.frame.file_chooser_load() |
44 if file ~= nil then | 48 if file ~= nil then |
45 new_window(file) | 49 new_window(file) |
46 end | 50 end |
47 end) | 51 end) |
48 file_menu.add(open) | 52 file_menu.add(open) |
53 end | |
54 do | |
55 local save = new_menu_item() | |
56 save.text = "Save" | |
57 save.accelerator = "meta S" | |
58 save.add_action_listener(function() | |
59 if window.file == nil then | |
60 local file_chooser = window.frame.file_chooser_save() | |
61 file_chooser.visible = true | |
62 local file = file_chooser.file | |
63 if file == nil then | |
64 return | |
65 end | |
66 window.file = file | |
67 window.frame.title = file.canonical().to_string() | |
68 end | |
69 window.file.write_text(window.text_area.text) | |
70 end) | |
71 file_menu.add(save) | |
72 end | |
49 menu_bar.add(file_menu) | 73 menu_bar.add(file_menu) |
74 end | |
75 do | |
50 local view_menu = new_menu() | 76 local view_menu = new_menu() |
51 view_menu.text = "View" | 77 view_menu.text = "View" |
78 do | |
52 local word_wrap = new_check_box_menu_item() | 79 local word_wrap = new_check_box_menu_item() |
53 word_wrap.text = "Word Wrap" | 80 word_wrap.text = "Word Wrap" |
54 word_wrap.state = window.text_area.line_wrap | 81 word_wrap.state = window.text_area.line_wrap |
55 word_wrap.add_action_listener(function() | 82 word_wrap.add_action_listener(function() |
56 window.text_area.line_wrap = word_wrap.state | 83 window.text_area.line_wrap = word_wrap.state |
57 end) | 84 end) |
58 view_menu.add(word_wrap) | 85 view_menu.add(word_wrap) |
86 end | |
59 menu_bar.add(view_menu) | 87 menu_bar.add(view_menu) |
88 end | |
60 return menu_bar | 89 return menu_bar |
61 end | 90 end |
62 | 91 |
63 local n_windows = 0 | 92 local n_windows = 0 |
64 | 93 |
65 function new_window(file) | 94 function new_window(file) |
66 local frame = new_frame() | 95 local frame = new_frame() |
67 frame.title = file and file.canonical().to_string() or "untitled" | 96 frame.title = file and file.canonical().to_string() or "new" |
68 frame.add_close_listener(function() | 97 frame.add_close_listener(function() |
69 n_windows = n_windows - 1 | 98 n_windows = n_windows - 1 |
70 if n_windows == 0 then | 99 if n_windows == 0 then |
71 Luan.exit() | 100 Luan.exit() |
72 end | 101 end |