comparison editor.luan @ 11:538cb5ad031c

start line numbers
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 03 Apr 2025 14:34:55 -0600
parents a83c8842ca3b
children 27f2e1aaf8ff
comparison
equal deleted inserted replaced
10:a83c8842ca3b 11:538cb5ad031c
9 local Swing = require "luan:swing/Swing.luan" 9 local Swing = require "luan:swing/Swing.luan"
10 local new_frame = require("luan:swing/Frame.luan").new or error() 10 local new_frame = require("luan:swing/Frame.luan").new or error()
11 local new_label = require("luan:swing/Label.luan").new or error() 11 local new_label = require("luan:swing/Label.luan").new or error()
12 local new_text_area = require("luan:swing/Text_area.luan").new or error() 12 local new_text_area = require("luan:swing/Text_area.luan").new or error()
13 local new_scroll_pane = require("luan:swing/Scroll_pane.luan").new or error() 13 local new_scroll_pane = require("luan:swing/Scroll_pane.luan").new or error()
14 local new_list = require("luan:swing/List.luan").new or error() 14 local List = require "luan:swing/List.luan"
15 local new_default_list = List.new_default_list or error()
16 local new_text_area_line_numbers = List.new_text_area_line_numbers or error()
15 local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error() 17 local new_menu_bar = require("luan:swing/Menu_bar.luan").new or error()
16 local new_menu = require("luan:swing/Menu.luan").new or error() 18 local new_menu = require("luan:swing/Menu.luan").new or error()
17 local new_menu_item = require("luan:swing/Menu_item.luan").new or error() 19 local new_menu_item = require("luan:swing/Menu_item.luan").new or error()
18 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error() 20 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error()
19 local Logging = require "luan:logging/Logging.luan" 21 local Logging = require "luan:logging/Logging.luan"
83 end 85 end
84 local function update_undo_redo() 86 local function update_undo_redo()
85 undo.set_enabled(document.can_undo()) 87 undo.set_enabled(document.can_undo())
86 redo.set_enabled(document.can_redo()) 88 redo.set_enabled(document.can_redo())
87 end 89 end
88 edit_menu.update_undo_redo = update_undo_redo -- prevent gc 90 edit_menu.dont_gc(update_undo_redo)
89 update_undo_redo() 91 update_undo_redo()
90 document.add_undo_listener(update_undo_redo) 92 document.add_undo_listener(update_undo_redo)
91 edit_menu.add_separator() 93 edit_menu.add_separator()
92 do 94 do
93 local cut = new_menu_item() 95 local cut = new_menu_item()
170 s = s.." *" 172 s = s.." *"
171 end 173 end
172 frame.title = s 174 frame.title = s
173 end 175 end
174 set_title() 176 set_title()
175 text_area.set_title = set_title -- no gc 177 text_area.dont_gc(set_title)
176 text_area.document.add_undo_listener(set_title) 178 text_area.document.add_undo_listener(set_title)
177 text_area.rows = 10 179 text_area.rows = 10
178 text_area.columns = 20 180 text_area.columns = 20
179 text_area.wrap_style_word = true 181 text_area.wrap_style_word = true
180 text_area.line_wrap = true 182 text_area.line_wrap = true
181 text_area.tab_size = 4 183 text_area.tab_size = 4
182 text_area.set_font{ family="Monospaced", size=13 } 184 text_area.set_font{ family="Monospaced", size=13 }
183 text_area.caret_position = 0 185 text_area.caret_position = 0
184 --print(text_area.line_count) 186 --print(text_area.line_count)
185 local scroll_pane = new_scroll_pane(text_area) 187 local scroll_pane = new_scroll_pane(text_area)
186 local list = new_list() 188 local list = new_text_area_line_numbers(text_area)
187 list.add_element("1") 189 --print(list.size)
188 list.add_element("2") 190 scroll_pane.set_row_header_view(list)
189 list.add_element("3")
190 --scroll_pane.set_row_header_view(list)
191 frame.add(scroll_pane) 191 frame.add(scroll_pane)
192 function window.open() 192 function window.open()
193 local file_chooser = frame.file_chooser_load() 193 local file_chooser = frame.file_chooser_load()
194 if file ~= nil then 194 if file ~= nil then
195 file_chooser.directory = file.parent() 195 file_chooser.directory = file.parent()