annotate src/luan_editor/menu.luan @ 93:9bb0c8f5bfb9 default tip

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 13 Jul 2025 18:55:27 -0600
parents aefa7f8bb407
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
40
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
3 local ipairs = Luan.ipairs or error()
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local String = require "luan:String.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local to_number = String.to_number or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 local new_menu_item = require("luan:swing/Menu_item.luan").new or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local Menu = require "luan:swing/Menu.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local new_menu = Menu.new or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 local separator = Menu.separator or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 local Option_pane = require "luan:swing/Option_pane.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local show_message_dialog = Option_pane.show_message_dialog or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 local show_input_dialog = Option_pane.show_input_dialog or error()
40
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
15 local Frame = require "luan:swing/Frame.luan"
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
16 local get_all_frames = Frame.get_all_frames or error()
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 local Spell_checker = require "classpath:luan_editor/Spell_checker.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 local spell_check = Spell_checker.spell_check or error()
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 55
diff changeset
19 local Window = require "classpath:luan_editor/Window.luan"
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 55
diff changeset
20 local show_list_window = Window.show_list_window or error()
64
Franklin Schmidt <fschmidt@gmail.com>
parents: 58
diff changeset
21 local new_window = Window.new_window or error()
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 local function action_listener(fn)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 return function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 fn()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 local function add_menu_bar(window)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 local text_area = window.text_area
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 local document = text_area.document
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 local status_bar = window.status_bar
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 local revert = new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 text = "Revert"
93
Franklin Schmidt <fschmidt@gmail.com>
parents: 92
diff changeset
36 accelerator = "R"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 enabled = window.has_file
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 action_listener = action_listener(window.revert)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 }
48
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
40 local view_file_path = new_menu_item{
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
41 text = "File Path"
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
42 enabled = window.has_file
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
43 action_listener = function(_)
92
aefa7f8bb407 better open files
Franklin Schmidt <fschmidt@gmail.com>
parents: 74
diff changeset
44 status_bar.text = window.title
48
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
45 end
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
46 }
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 local undo = new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 text = "Undo"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
49 accelerator = "Z"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 action_listener = action_listener(document.undo)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52 local redo = new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 text = "Redo"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
54 accelerator = "shift Z"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
55 action_listener = action_listener(document.redo)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
56 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
57 local function update_undo_redo()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 undo.set_enabled(document.can_undo())
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
59 redo.set_enabled(document.can_redo())
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
60 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
61 window.update_undo_redo = update_undo_redo -- dont gc
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
62 update_undo_redo()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
63 document.add_undo_listener(update_undo_redo)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
64
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
65 local menu_bar = new_menu_bar{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
66 menus = {
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
67 new_menu{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
68 text = "File"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
69 menu_items = {
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
70 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
71 text = "New File"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
72 accelerator = "N"
64
Franklin Schmidt <fschmidt@gmail.com>
parents: 58
diff changeset
73 action_listener = action_listener(new_window)
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
74 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
75 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
76 text = "Open..."
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
77 accelerator = "O"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
78 action_listener = action_listener(window.open)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
79 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
80 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
81 text = "Save"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
82 accelerator = "S"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
83 action_listener = function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
84 if window.save() then
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
85 revert.set_enabled(true)
48
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
86 view_file_path.set_enabled(true)
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
87 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
88 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
89 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
90 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
91 text = "Print"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
92 action_listener = action_listener(text_area.print)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
93 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
94 revert
55
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
95 new_menu_item{
74
Franklin Schmidt <fschmidt@gmail.com>
parents: 70
diff changeset
96 text = "Paste Files"
64
Franklin Schmidt <fschmidt@gmail.com>
parents: 58
diff changeset
97 accelerator = "P"
55
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
98 action_listener = function(_)
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
99 if not window.paste_files() then
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
100 show_message_dialog(nil,"No files to paste")
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
101 end
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
102 end
77ee3a37475a paste files
Franklin Schmidt <fschmidt@gmail.com>
parents: 48
diff changeset
103 }
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
104 --[[
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
105 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
106 text = "Test"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
107 action_listener = function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
108 local location = window.frame.location
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
109 location.y = location.y - 20
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
110 window.frame.location = location
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
111 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
112 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
113 ]]
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
114 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
115 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
116 new_menu{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
117 text = "Edit"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
118 menu_items = {
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
119 undo
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
120 redo
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
121 separator
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
122 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
123 text = "Cut"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
124 accelerator = "X"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
125 action_listener = action_listener(text_area.cut)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
126 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
127 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
128 text = "Copy"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
129 accelerator = "C"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
130 action_listener = action_listener(text_area.copy)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
131 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
132 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
133 text = "Paste"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
134 accelerator = "V"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
135 action_listener = action_listener(text_area.paste)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
136 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
137 separator
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
138 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
139 text = "Indent"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
140 accelerator = "CLOSE_BRACKET"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
141 action_listener = action_listener(window.indent)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
142 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
143 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
144 text = "Unindent"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
145 accelerator = "OPEN_BRACKET"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
146 action_listener = action_listener(window.unindent)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
147 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
148 separator
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
149 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
150 text = "Select All"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
151 accelerator = "A"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
152 action_listener = action_listener(text_area.select_all)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
153 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
154 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
155 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
156 new_menu{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
157 text = "Find"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
158 menu_items = {
70
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
159 new_menu_item{
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
160 text = "Find and Replace"
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
161 accelerator = "F"
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
162 action_listener = action_listener(window.show_find_panel)
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
163 }
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
164 new_menu_item{
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
165 text = "Close Find and Replace"
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
166 accelerator = "shift F"
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
167 action_listener = action_listener(window.hide_find_panel)
f4e393a13d59 no find toggle
Franklin Schmidt <fschmidt@gmail.com>
parents: 64
diff changeset
168 }
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
169 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
170 text = "Find Case Insensitive"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
171 action_listener = window.find_case_insensitive
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
172 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
173 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
174 text = "Convert Leading Tabs to Spaces"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
175 action_listener = window.tabs_to_spaces
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
176 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
177 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
178 text = "Convert Leading Spaces to Tabs"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
179 action_listener = window.spaces_to_tabs
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
180 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
181 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
182 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
183 new_menu{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
184 text = "View"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
185 menu_items = {
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
186 new_check_box_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
187 text = "Word Wrap"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
188 state = text_area.line_wrap
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
189 action_listener = function(event)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
190 window.set_line_wrap(event.source.state)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
191 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
192 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
193 new_check_box_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
194 text = "Show Whitespace"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
195 accelerator = "W"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
196 state = text_area.whitespace_visible
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
197 action_listener = function(event)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
198 window.set_whitespace_visible(event.source.state)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
199 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
200 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
201 new_check_box_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
202 text = "Spell Check"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
203 accelerator = "SEMICOLON"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
204 action_listener = function(event)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
205 spell_check(text_area,event.source.state)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
206 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
207 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
208 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
209 text = "Cursor Column"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
210 accelerator = "B"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
211 action_listener = function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
212 status_bar.text = "Cursor Column: "..window.cursor_column()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
213 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
214 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
215 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
216 text = "Goto Line"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
217 accelerator = "G"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
218 action_listener = function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
219 local input = show_input_dialog( window.frame, "Goto line" )
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
220 if input == nil then
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
221 return
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
222 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
223 local line = to_number(input)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
224 try
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
225 window.goto(line)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
226 status_bar.text = "Went to line "..line
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
227 catch e
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
228 status_bar.text = "Invalid line: "..input
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
229 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
230 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
231 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
232 new_menu_item{
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
233 text = "Tab Size"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
234 action_listener = function(_)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
235 local input = show_input_dialog( window.frame, "Tab size", text_area.tab_size )
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
236 if input == nil then
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
237 return
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
238 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
239 local size = to_number(input)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
240 try
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
241 window.set_tab_size(size)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
242 status_bar.text = "Set tab size to "..size
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
243 catch e
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
244 status_bar.text = "Invalid tab size: "..input
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
245 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
246 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
247 }
48
Franklin Schmidt <fschmidt@gmail.com>
parents: 41
diff changeset
248 view_file_path
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
249 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
250 }
38
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
251 new_menu{
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
252 text = "Window"
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
253 menu_items = {
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
254 new_menu_item{
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
255 text = "Duplicate Window"
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
256 action_listener = action_listener(window.duplicate)
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
257 }
40
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
258 new_menu_item{
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
259 text = "Align Windows"
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
260 action_listener = function(_)
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
261 local this_frame = window.frame
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
262 local location = this_frame.location
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
263 local size = this_frame.size
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
264 for _, frame in ipairs(get_all_frames()) do
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
265 frame.location = location
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
266 frame.size = size
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
267 end
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
268 end
38bc1cdf77c8 add align windows
Franklin Schmidt <fschmidt@gmail.com>
parents: 38
diff changeset
269 }
41
f7e8c1f532c8 start list window
Franklin Schmidt <fschmidt@gmail.com>
parents: 40
diff changeset
270 new_menu_item{
f7e8c1f532c8 start list window
Franklin Schmidt <fschmidt@gmail.com>
parents: 40
diff changeset
271 text = "List Windows"
58
7e2d6426c155 cross-platform accelerators
Franklin Schmidt <fschmidt@gmail.com>
parents: 56
diff changeset
272 accelerator = "L"
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 55
diff changeset
273 action_listener = action_listener(show_list_window)
41
f7e8c1f532c8 start list window
Franklin Schmidt <fschmidt@gmail.com>
parents: 40
diff changeset
274 }
38
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
275 }
8c90e0077cfe add duplicate window
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
276 }
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
277 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
278 }
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
279 window.frame.set_menu_bar(menu_bar)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
280 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
281
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
282 return add_menu_bar