Mercurial Hosting > editor
comparison src/luan_editor/menu.luan @ 58:7e2d6426c155 default tip
cross-platform accelerators
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 30 May 2025 13:17:51 -0600 |
parents | 6059b4e22d47 |
children |
comparison
equal
deleted
inserted
replaced
57:f91c336cdde5 | 58:7e2d6426c155 |
---|---|
42 status_bar.text = window.title() | 42 status_bar.text = window.title() |
43 end | 43 end |
44 } | 44 } |
45 local undo = new_menu_item{ | 45 local undo = new_menu_item{ |
46 text = "Undo" | 46 text = "Undo" |
47 accelerator = "meta Z" | 47 accelerator = "Z" |
48 action_listener = action_listener(document.undo) | 48 action_listener = action_listener(document.undo) |
49 } | 49 } |
50 local redo = new_menu_item{ | 50 local redo = new_menu_item{ |
51 text = "Redo" | 51 text = "Redo" |
52 accelerator = "meta shift Z" | 52 accelerator = "shift Z" |
53 action_listener = action_listener(document.redo) | 53 action_listener = action_listener(document.redo) |
54 } | 54 } |
55 local function update_undo_redo() | 55 local function update_undo_redo() |
56 undo.set_enabled(document.can_undo()) | 56 undo.set_enabled(document.can_undo()) |
57 redo.set_enabled(document.can_redo()) | 57 redo.set_enabled(document.can_redo()) |
60 update_undo_redo() | 60 update_undo_redo() |
61 document.add_undo_listener(update_undo_redo) | 61 document.add_undo_listener(update_undo_redo) |
62 | 62 |
63 local find_menu_item = new_check_box_menu_item{ | 63 local find_menu_item = new_check_box_menu_item{ |
64 text = "Find and Replace" | 64 text = "Find and Replace" |
65 accelerator = "meta F" | 65 accelerator = "F" |
66 action_listener = function(event) | 66 action_listener = function(event) |
67 window.show_find_panel(event.source.state) | 67 window.show_find_panel(event.source.state) |
68 end | 68 end |
69 } | 69 } |
70 window.find_menu_item = find_menu_item | 70 window.find_menu_item = find_menu_item |
74 new_menu{ | 74 new_menu{ |
75 text = "File" | 75 text = "File" |
76 menu_items = { | 76 menu_items = { |
77 new_menu_item{ | 77 new_menu_item{ |
78 text = "New File" | 78 text = "New File" |
79 accelerator = "meta N" | 79 accelerator = "N" |
80 action_listener = action_listener(window.new) | 80 action_listener = action_listener(window.new) |
81 } | 81 } |
82 new_menu_item{ | 82 new_menu_item{ |
83 text = "Open..." | 83 text = "Open..." |
84 accelerator = "meta O" | 84 accelerator = "O" |
85 action_listener = action_listener(window.open) | 85 action_listener = action_listener(window.open) |
86 } | 86 } |
87 new_menu_item{ | 87 new_menu_item{ |
88 text = "Save" | 88 text = "Save" |
89 accelerator = "meta S" | 89 accelerator = "S" |
90 action_listener = function(_) | 90 action_listener = function(_) |
91 if window.save() then | 91 if window.save() then |
92 revert.set_enabled(true) | 92 revert.set_enabled(true) |
93 view_file_path.set_enabled(true) | 93 view_file_path.set_enabled(true) |
94 end | 94 end |
125 undo | 125 undo |
126 redo | 126 redo |
127 separator | 127 separator |
128 new_menu_item{ | 128 new_menu_item{ |
129 text = "Cut" | 129 text = "Cut" |
130 accelerator = "meta X" | 130 accelerator = "X" |
131 action_listener = action_listener(text_area.cut) | 131 action_listener = action_listener(text_area.cut) |
132 } | 132 } |
133 new_menu_item{ | 133 new_menu_item{ |
134 text = "Copy" | 134 text = "Copy" |
135 accelerator = "meta C" | 135 accelerator = "C" |
136 action_listener = action_listener(text_area.copy) | 136 action_listener = action_listener(text_area.copy) |
137 } | 137 } |
138 new_menu_item{ | 138 new_menu_item{ |
139 text = "Paste" | 139 text = "Paste" |
140 accelerator = "meta V" | 140 accelerator = "V" |
141 action_listener = action_listener(text_area.paste) | 141 action_listener = action_listener(text_area.paste) |
142 } | 142 } |
143 separator | 143 separator |
144 new_menu_item{ | 144 new_menu_item{ |
145 text = "Indent" | 145 text = "Indent" |
146 accelerator = "meta CLOSE_BRACKET" | 146 accelerator = "CLOSE_BRACKET" |
147 action_listener = action_listener(window.indent) | 147 action_listener = action_listener(window.indent) |
148 } | 148 } |
149 new_menu_item{ | 149 new_menu_item{ |
150 text = "Unindent" | 150 text = "Unindent" |
151 accelerator = "meta OPEN_BRACKET" | 151 accelerator = "OPEN_BRACKET" |
152 action_listener = action_listener(window.unindent) | 152 action_listener = action_listener(window.unindent) |
153 } | 153 } |
154 separator | 154 separator |
155 new_menu_item{ | 155 new_menu_item{ |
156 text = "Select All" | 156 text = "Select All" |
157 accelerator = "meta A" | 157 accelerator = "A" |
158 action_listener = action_listener(text_area.select_all) | 158 action_listener = action_listener(text_area.select_all) |
159 } | 159 } |
160 } | 160 } |
161 } | 161 } |
162 new_menu{ | 162 new_menu{ |
187 window.set_line_wrap(event.source.state) | 187 window.set_line_wrap(event.source.state) |
188 end | 188 end |
189 } | 189 } |
190 new_check_box_menu_item{ | 190 new_check_box_menu_item{ |
191 text = "Show Whitespace" | 191 text = "Show Whitespace" |
192 accelerator = "meta W" | 192 accelerator = "W" |
193 state = text_area.whitespace_visible | 193 state = text_area.whitespace_visible |
194 action_listener = function(event) | 194 action_listener = function(event) |
195 window.set_whitespace_visible(event.source.state) | 195 window.set_whitespace_visible(event.source.state) |
196 end | 196 end |
197 } | 197 } |
198 new_check_box_menu_item{ | 198 new_check_box_menu_item{ |
199 text = "Spell Check" | 199 text = "Spell Check" |
200 accelerator = "meta SEMICOLON" | 200 accelerator = "SEMICOLON" |
201 action_listener = function(event) | 201 action_listener = function(event) |
202 spell_check(text_area,event.source.state) | 202 spell_check(text_area,event.source.state) |
203 end | 203 end |
204 } | 204 } |
205 new_menu_item{ | 205 new_menu_item{ |
206 text = "Cursor Column" | 206 text = "Cursor Column" |
207 accelerator = "meta B" | 207 accelerator = "B" |
208 action_listener = function(_) | 208 action_listener = function(_) |
209 status_bar.text = "Cursor Column: "..window.cursor_column() | 209 status_bar.text = "Cursor Column: "..window.cursor_column() |
210 end | 210 end |
211 } | 211 } |
212 new_menu_item{ | 212 new_menu_item{ |
213 text = "Goto Line" | 213 text = "Goto Line" |
214 accelerator = "meta G" | 214 accelerator = "G" |
215 action_listener = function(_) | 215 action_listener = function(_) |
216 local input = show_input_dialog( window.frame, "Goto line" ) | 216 local input = show_input_dialog( window.frame, "Goto line" ) |
217 if input == nil then | 217 if input == nil then |
218 return | 218 return |
219 end | 219 end |
264 end | 264 end |
265 end | 265 end |
266 } | 266 } |
267 new_menu_item{ | 267 new_menu_item{ |
268 text = "List Windows" | 268 text = "List Windows" |
269 accelerator = "meta L" | 269 accelerator = "L" |
270 action_listener = action_listener(show_list_window) | 270 action_listener = action_listener(show_list_window) |
271 } | 271 } |
272 } | 272 } |
273 } | 273 } |
274 } | 274 } |