changeset 0:090f9b3bccf8

start
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 30 Mar 2025 13:17:48 -0600
parents
children 9aa38deb5883
files dev.sh editor.luan
diffstat 2 files changed, 68 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
diff -r 000000000000 -r 090f9b3bccf8 dev.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev.sh	Sun Mar 30 13:17:48 2025 -0600
@@ -0,0 +1,1 @@
+java -Xdock:name="Luan Editor" -classpath $CLASSPATH luan.Luan editor.luan
diff -r 000000000000 -r 090f9b3bccf8 editor.luan
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/editor.luan	Sun Mar 30 13:17:48 2025 -0600
@@ -0,0 +1,67 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local Io = require "luan:Io.luan"
+local print = Io.print or error()
+local Swing = require "luan:swing/Swing.luan"
+local new_frame = require("luan:swing/Frame.luan").new or error()
+local new_label = require("luan:swing/Label.luan").new or error()
+local new_text_area = require("luan:swing/Text_area.luan").new or error()
+local new_scroll_pane = require("luan:swing/Scroll_pane.luan").new or error()
+local new_list = require("luan:swing/List.luan").new or error()
+local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error()
+local new_menu = require("luan:swing/Menu.luan").new or error()
+local new_menu_item = require("luan:swing/Menu_item.luan").new or error()
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "editor"
+
+
+local new_window
+
+local function make_menu_bar()
+	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)
+	return menu_bar
+end
+
+local n_windows = 0
+
+function new_window()
+	local frame = new_frame()
+	frame.title = "untitled"
+	frame.add_close_listener(function()
+		n_windows = n_windows - 1
+		if n_windows == 0 then
+			Luan.exit()
+		end
+	end)
+	local text_area = new_text_area()
+	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 }
+	--print(text_area.line_count)
+	local scroll_pane = new_scroll_pane(text_area)
+	local list = new_list()
+	list.add_element("1")
+	list.add_element("2")
+	list.add_element("3")
+	--scroll_pane.set_row_header_view(list)
+	frame.add(scroll_pane)
+	local menu_bar = make_menu_bar()
+	frame.set_menu_bar(menu_bar)
+	frame.pack()
+	frame.visible = true
+	text_area.request_focus_in_window()
+	n_windows = n_windows + 1
+end
+
+Swing.run(new_window)