Mercurial Hosting > editor
comparison src/luan_editor/window.luan @ 38:8c90e0077cfe
add duplicate window
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Thu, 15 May 2025 11:03:48 -0600 |
| parents | b7ff52d45b9a |
| children | 2a3092ca528e |
comparison
equal
deleted
inserted
replaced
| 37:b7ff52d45b9a | 38:8c90e0077cfe |
|---|---|
| 55 | 55 |
| 56 local function save_config() | 56 local function save_config() |
| 57 config_file.write_text( stringify(config).."\n" ) | 57 config_file.write_text( stringify(config).."\n" ) |
| 58 end | 58 end |
| 59 | 59 |
| 60 local function new_window(file) | 60 local function new_window(file,document) |
| 61 local window = {} | 61 local window = {} |
| 62 window.has_file = file~=nil and file.is_file() | 62 window.has_file = file~=nil and file.is_file() |
| 63 local text_area = new_text_area{ | 63 local text_area = new_text_area{ |
| 64 wrap_style_word = true | 64 wrap_style_word = true |
| 65 line_wrap = config.line_wrap | 65 line_wrap = config.line_wrap |
| 67 tab_size = config.tab_size | 67 tab_size = config.tab_size |
| 68 font = { family="Monospaced", size=13 } | 68 font = { family="Monospaced", size=13 } |
| 69 } | 69 } |
| 70 window.text_area = text_area | 70 window.text_area = text_area |
| 71 local title = file and file.canonical().to_string() or "new" | 71 local title = file and file.canonical().to_string() or "new" |
| 72 if file ~= nil then | 72 if document ~= nil then |
| 73 text_area.document = document | |
| 74 elseif file ~= nil then | |
| 73 local document = documents[title] | 75 local document = documents[title] |
| 74 if document == nil then | 76 if document == nil then |
| 75 documents[title] = text_area.document | 77 documents[title] = text_area.document |
| 76 else | 78 else |
| 77 text_area.document = document | 79 text_area.document = document |
| 237 function window.set_tab_size(tab_size) | 239 function window.set_tab_size(tab_size) |
| 238 text_area.tab_size = tab_size | 240 text_area.tab_size = tab_size |
| 239 config.tab_size = tab_size | 241 config.tab_size = tab_size |
| 240 save_config() | 242 save_config() |
| 241 end | 243 end |
| 244 function window.duplicate() | |
| 245 local new = new_window(file,text_area.document) | |
| 246 new.text_area.set_selection( text_area.get_selection() ) | |
| 247 end | |
| 242 add_menu_bar(window) | 248 add_menu_bar(window) |
| 243 frame.pack() | 249 frame.pack() |
| 244 if config.location ~= nil then | 250 if config.location ~= nil then |
| 245 frame.location = config.location | 251 frame.location = config.location |
| 246 end | 252 end |
| 247 frame.visible = true | 253 frame.visible = true |
| 248 text_area.request_focus_in_window() | 254 text_area.request_focus_in_window() |
| 249 n_windows = n_windows + 1 | 255 n_windows = n_windows + 1 |
| 256 return window | |
| 250 end | 257 end |
| 251 | 258 |
| 252 return new_window | 259 return new_window |
