Mercurial Hosting > editor
comparison editor.luan @ 19:ba59fdcf41f3
work
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Mon, 07 Apr 2025 22:34:55 -0600 |
| parents | fd6d0162e924 |
| children | 1bfd4a2d6d4e |
comparison
equal
deleted
inserted
replaced
| 18:fd6d0162e924 | 19:ba59fdcf41f3 |
|---|---|
| 45 local menu_bar = new_menu_bar() | 45 local menu_bar = new_menu_bar() |
| 46 do | 46 do |
| 47 local file_menu = new_menu() | 47 local file_menu = new_menu() |
| 48 file_menu.text = "File" | 48 file_menu.text = "File" |
| 49 do | 49 do |
| 50 local new_file = new_menu_item() | 50 local new_file = new_menu_item{ |
| 51 new_file.text = "New File" | 51 text = "New File" |
| 52 new_file.accelerator = "meta N" | 52 accelerator = "meta N" |
| 53 new_file.add_action_listener(new_window) | 53 action_listener = new_window |
| 54 } | |
| 54 file_menu.add(new_file) | 55 file_menu.add(new_file) |
| 55 end | 56 end |
| 56 do | 57 do |
| 57 local open = new_menu_item() | 58 local open = new_menu_item{ |
| 58 open.text = "Open..." | 59 text = "Open..." |
| 59 open.accelerator = "meta O" | 60 accelerator = "meta O" |
| 60 open.add_action_listener(window.open) | 61 action_listener = window.open |
| 62 } | |
| 61 file_menu.add(open) | 63 file_menu.add(open) |
| 62 end | 64 end |
| 63 local revert | 65 local revert |
| 64 do | 66 do |
| 65 local save = new_menu_item() | 67 local save = new_menu_item{ |
| 66 save.text = "Save" | 68 text = "Save" |
| 67 save.accelerator = "meta S" | 69 accelerator = "meta S" |
| 68 save.add_action_listener(function() | 70 action_listener = function() |
| 69 if window.save() then | 71 if window.save() then |
| 70 revert.set_enabled(true) | 72 revert.set_enabled(true) |
| 73 end | |
| 71 end | 74 end |
| 72 end) | 75 } |
| 73 file_menu.add(save) | 76 file_menu.add(save) |
| 74 end | 77 end |
| 75 do | 78 do |
| 76 revert = new_menu_item() | 79 revert = new_menu_item{ |
| 77 revert.text = "Revert" | 80 text = "Revert" |
| 78 revert.set_enabled(window.has_file) | 81 enabled = window.has_file |
| 79 revert.add_action_listener(window.revert) | 82 action_listener = window.revert |
| 83 } | |
| 80 file_menu.add(revert) | 84 file_menu.add(revert) |
| 81 end | 85 end |
| 82 menu_bar.add(file_menu) | 86 menu_bar.add(file_menu) |
| 83 end | 87 end |
| 84 do | 88 do |
| 85 local edit_menu = new_menu() | 89 local edit_menu = new_menu() |
| 86 edit_menu.text = "Edit" | 90 edit_menu.text = "Edit" |
| 87 local document = window.text_area.document | 91 local document = window.text_area.document |
| 88 local undo, redo | 92 local undo, redo |
| 89 do | 93 do |
| 90 undo = new_menu_item() | 94 undo = new_menu_item{ |
| 91 undo.text = "Undo" | 95 text = "Undo" |
| 92 undo.accelerator = "meta Z" | 96 accelerator = "meta Z" |
| 93 undo.add_action_listener(document.undo) | 97 action_listener = document.undo |
| 98 } | |
| 94 edit_menu.add(undo) | 99 edit_menu.add(undo) |
| 95 end | 100 end |
| 96 do | 101 do |
| 97 redo = new_menu_item() | 102 redo = new_menu_item{ |
| 98 redo.text = "Redo" | 103 text = "Redo" |
| 99 redo.accelerator = "meta shift Z" | 104 accelerator = "meta shift Z" |
| 100 redo.add_action_listener(document.redo) | 105 action_listener = document.redo |
| 106 } | |
| 101 edit_menu.add(redo) | 107 edit_menu.add(redo) |
| 102 end | 108 end |
| 103 local function update_undo_redo() | 109 local function update_undo_redo() |
| 104 undo.set_enabled(document.can_undo()) | 110 undo.set_enabled(document.can_undo()) |
| 105 redo.set_enabled(document.can_redo()) | 111 redo.set_enabled(document.can_redo()) |
| 107 edit_menu.dont_gc(update_undo_redo) | 113 edit_menu.dont_gc(update_undo_redo) |
| 108 update_undo_redo() | 114 update_undo_redo() |
| 109 document.add_undo_listener(update_undo_redo) | 115 document.add_undo_listener(update_undo_redo) |
| 110 edit_menu.add_separator() | 116 edit_menu.add_separator() |
| 111 do | 117 do |
| 112 local cut = new_menu_item() | 118 local cut = new_menu_item{ |
| 113 cut.text = "Cut" | 119 text = "Cut" |
| 114 cut.accelerator = "meta X" | 120 accelerator = "meta X" |
| 115 cut.add_action_listener(window.text_area.cut) | 121 action_listener = window.text_area.cut |
| 122 } | |
| 116 edit_menu.add(cut) | 123 edit_menu.add(cut) |
| 117 end | 124 end |
| 118 do | 125 do |
| 119 local copy = new_menu_item() | 126 local copy = new_menu_item{ |
| 120 copy.text = "Copy" | 127 text = "Copy" |
| 121 copy.accelerator = "meta C" | 128 accelerator = "meta C" |
| 122 copy.add_action_listener(window.text_area.copy) | 129 action_listener = window.text_area.copy |
| 130 } | |
| 123 edit_menu.add(copy) | 131 edit_menu.add(copy) |
| 124 end | 132 end |
| 125 do | 133 do |
| 126 local paste = new_menu_item() | 134 local paste = new_menu_item{ |
| 127 paste.text = "Paste" | 135 text = "Paste" |
| 128 paste.accelerator = "meta V" | 136 accelerator = "meta V" |
| 129 paste.add_action_listener(window.text_area.paste) | 137 action_listener = window.text_area.paste |
| 138 } | |
| 130 edit_menu.add(paste) | 139 edit_menu.add(paste) |
| 131 end | 140 end |
| 132 edit_menu.add_separator() | 141 edit_menu.add_separator() |
| 133 do | 142 do |
| 134 local indent = new_menu_item() | 143 local indent = new_menu_item() |
