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