Mercurial Hosting > editor
changeset 1:9aa38deb5883
add open
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 31 Mar 2025 13:49:21 -0600 |
parents | 090f9b3bccf8 |
children | f38f6e903369 |
files | dev.sh editor.luan |
diffstat | 2 files changed, 41 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/dev.sh Sun Mar 30 13:17:48 2025 -0600 +++ b/dev.sh Mon Mar 31 13:49:21 2025 -0600 @@ -1,1 +1,1 @@ -java -Xdock:name="Luan Editor" -classpath $CLASSPATH luan.Luan editor.luan +java -Xdock:name="Luan Editor" -classpath $CLASSPATH luan.Luan editor.luan 2> >(grep -v 'openAndSavePanelService' >&2)
--- a/editor.luan Sun Mar 30 13:17:48 2025 -0600 +++ b/editor.luan Mon Mar 31 13:49:21 2025 -0600 @@ -17,24 +17,41 @@ local new_window -local function make_menu_bar() +local function make_menu_bar(window) local menu_bar = new_menu_bar() - local file_menu = new_menu("File") - local new_file = new_menu_item() - new_file.text = "New File" - new_file.add_action_listener(function() - new_window() - end) - file_menu.add(new_file) - menu_bar.add(file_menu) + local file_menu = new_menu() + file_menu.text = "File" + local new_file = new_menu_item() + new_file.text = "New File" + new_file.accelerator = "meta N" + new_file.add_action_listener(function() + new_window() + end) + file_menu.add(new_file) + local open = new_menu_item() + open.text = "Open..." + open.accelerator = "meta O" + open.add_action_listener(function() + local file_chooser = window.frame.file_chooser_load() + if window.file ~= nil then + file_chooser.directory = window.file.parent() + end + file_chooser.visible = true + local file = file_chooser.file + if file ~= nil then + new_window(file) + end + end) + file_menu.add(open) + menu_bar.add(file_menu) return menu_bar end local n_windows = 0 -function new_window() +function new_window(file) local frame = new_frame() - frame.title = "untitled" + frame.title = file and file.to_string() or "untitled" frame.add_close_listener(function() n_windows = n_windows - 1 if n_windows == 0 then @@ -42,12 +59,16 @@ end end) local text_area = new_text_area() + if file ~= nil then + text_area.text = file.read_text() + end text_area.rows = 10 text_area.columns = 20 text_area.wrap_style_word = true text_area.line_wrap = true text_area.tab_size = 4 text_area.set_font{ family="Monospaced", size=13 } + text_area.select(0,0) --print(text_area.line_count) local scroll_pane = new_scroll_pane(text_area) local list = new_list() @@ -56,7 +77,11 @@ list.add_element("3") --scroll_pane.set_row_header_view(list) frame.add(scroll_pane) - local menu_bar = make_menu_bar() + local window = { + frame = frame + file = file + } + local menu_bar = make_menu_bar(window) frame.set_menu_bar(menu_bar) frame.pack() frame.visible = true @@ -64,4 +89,6 @@ n_windows = n_windows + 1 end -Swing.run(new_window) +Swing.run(function() + new_window() +end)