comparison src/luan_editor/menu.luan @ 40:38bc1cdf77c8

add align windows
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 15 May 2025 19:12:46 -0600
parents 8c90e0077cfe
children f7e8c1f532c8
comparison
equal deleted inserted replaced
39:2a3092ca528e 40:38bc1cdf77c8
1 local Luan = require "luan:Luan.luan" 1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error 2 local error = Luan.error
3 local ipairs = Luan.ipairs or error()
3 local String = require "luan:String.luan" 4 local String = require "luan:String.luan"
4 local to_number = String.to_number or error() 5 local to_number = String.to_number or error()
5 local new_menu_item = require("luan:swing/Menu_item.luan").new or error() 6 local new_menu_item = require("luan:swing/Menu_item.luan").new or error()
6 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error() 7 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error()
7 local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error() 8 local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error()
9 local new_menu = Menu.new or error() 10 local new_menu = Menu.new or error()
10 local separator = Menu.separator or error() 11 local separator = Menu.separator or error()
11 local Option_pane = require "luan:swing/Option_pane.luan" 12 local Option_pane = require "luan:swing/Option_pane.luan"
12 local show_message_dialog = Option_pane.show_message_dialog or error() 13 local show_message_dialog = Option_pane.show_message_dialog or error()
13 local show_input_dialog = Option_pane.show_input_dialog or error() 14 local show_input_dialog = Option_pane.show_input_dialog or error()
15 local Frame = require "luan:swing/Frame.luan"
16 local get_all_frames = Frame.get_all_frames or error()
14 local Spell_checker = require "classpath:luan_editor/Spell_checker.luan" 17 local Spell_checker = require "classpath:luan_editor/Spell_checker.luan"
15 local spell_check = Spell_checker.spell_check or error() 18 local spell_check = Spell_checker.spell_check or error()
16 19
17 20
18 local function action_listener(fn) 21 local function action_listener(fn)
228 menu_items = { 231 menu_items = {
229 new_menu_item{ 232 new_menu_item{
230 text = "Duplicate Window" 233 text = "Duplicate Window"
231 action_listener = action_listener(window.duplicate) 234 action_listener = action_listener(window.duplicate)
232 } 235 }
236 new_menu_item{
237 text = "Align Windows"
238 action_listener = function(_)
239 local this_frame = window.frame
240 local location = this_frame.location
241 local size = this_frame.size
242 for _, frame in ipairs(get_all_frames()) do
243 frame.location = location
244 frame.size = size
245 end
246 end
247 }
233 } 248 }
234 } 249 }
235 } 250 }
236 } 251 }
237 window.frame.set_menu_bar(menu_bar) 252 window.frame.set_menu_bar(menu_bar)