aboutsummaryrefslogtreecommitdiff
path: root/core/gui.lua
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2010-06-11 18:51:16 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2010-06-11 18:51:16 -0400
commit8e66381a040f695f4203b28bc3f1d6818d0da7a2 (patch)
treee30e8115d27b423b579e60178f36a151dc795f50 /core/gui.lua
parent7a4800f05f26067a1cef77e5431256aab4c3d675 (diff)
downloadtextadept-8e66381a040f695f4203b28bc3f1d6818d0da7a2.tar.gz
textadept-8e66381a040f695f4203b28bc3f1d6818d0da7a2.zip
Removed _G.textadept.
Created new _SCINTILLA core module. Renamed textadept.constants to _SCINTILLA.constants Renamed textadept.buffer_functions to _SCINTILLA.functions Renamed textadept.buffer_properties to _SCINTILLA.properties Created new gui core module. Renamed textadept._print() to gui._print(). Renamed textadept.check_focused_buffer() to gui.check_focused_buffer(). Renamed textadept.clipboard_text to gui.clipboard_text. Renamed textadept.context_menu to gui.context_menu Renamed textadept.command_entry to gui.command_entry. Renamed textadept.dialog to gui.dialog. Renamed textadept.docstatusbar_text to gui.docstatusbar_text. Renamed textadept.find to gui.find. Renamed textadept.focused_doc_pointer to gui.focused_doc_pointer. Renamed textadept.get_split_table() to gui.get_split_table(). Renamed textadept.gtkmenu() to gui.gtkmenu(). Renamed textadept.goto_view() to gui.goto_view(). Renamed textadept.menubar to gui.menubar. Renamed textadept.print() to gui.print(). Renamed textadept.size to gui.size. Renamed textadept.statusbar_text to gui.statusbar_text. Renamed textadept.switch_buffer() to gui.switch_buffer(). Renamed textadept.title to gui.title. Renamed textadept.buffers to _G._BUFFERS. Renamed textadept.new_buffer() to _G.new_buffer(). Renamed textadept.quit() to _G.quit(). Renamed textadept.reset() to _G.reset(). Renamed textadept.views to _G._VIEWS. Renamed textadept.user_dofile() to _G.user_dofile(). Renamed textadept.iconv to string.iconv. Renamed textadept.session_file to _SESSIONFILE. Renamed appropriate C functions.
Diffstat (limited to 'core/gui.lua')
-rw-r--r--core/gui.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/core/gui.lua b/core/gui.lua
new file mode 100644
index 00000000..e317ecd6
--- /dev/null
+++ b/core/gui.lua
@@ -0,0 +1,72 @@
+-- Copyright 2007-2010 Mitchell mitchell<att>caladbolg.net. See LICENSE.
+
+local gui = _G.gui
+
+-- LuaDoc is in core/.gui.lua.
+function gui.check_focused_buffer(buffer)
+ if type(buffer) ~= 'table' or not buffer.doc_pointer then
+ error(locale.ERR_BUFFER_EXPECTED, 2)
+ elseif gui.focused_doc_pointer ~= buffer.doc_pointer then
+ error(locale.ERR_BUFFER_NOT_FOCUSED, 2)
+ end
+end
+
+-- LuaDoc is in core/.gui.lua.
+function gui._print(buffer_type, ...)
+ local function safe_print(...)
+ local message = table.concat({...}, '\t')
+ local message_buffer, message_buffer_index
+ local message_view, message_view_index
+ for index, buffer in ipairs(_BUFFERS) do
+ if buffer._type == buffer_type then
+ message_buffer, message_buffer_index = buffer, index
+ for jndex, view in ipairs(_VIEWS) do
+ if view.doc_pointer == message_buffer.doc_pointer then
+ message_view, message_view_index = view, jndex
+ break
+ end
+ end
+ break
+ end
+ end
+ if not message_view then
+ local _, message_view = view:split(false) -- horizontal split
+ if not message_buffer then
+ message_buffer = new_buffer()
+ message_buffer._type = buffer_type
+ events.emit('file_opened')
+ else
+ message_view:goto_buffer(message_buffer_index, true)
+ end
+ else
+ gui.goto_view(message_view_index, true)
+ end
+ message_buffer:append_text(message..'\n')
+ message_buffer:set_save_point()
+ end
+ pcall(safe_print, ...) -- prevent endless loops if this errors
+end
+
+-- LuaDoc is in core/.gui.lua.
+function gui.print(...) gui._print(locale.MESSAGE_BUFFER, ...) end
+
+-- LuaDoc is in core/.gui.lua.
+function gui.switch_buffer()
+ local items = {}
+ for _, buffer in ipairs(_BUFFERS) do
+ local filename = buffer.filename or buffer._type or locale.UNTITLED
+ local dirty = buffer.dirty and '*' or ''
+ items[#items + 1] = dirty..filename:match('[^/\\]+$')
+ items[#items + 1] = filename
+ end
+ local out =
+ gui.dialog('filteredlist',
+ '--title', locale.SWITCH_BUFFERS,
+ '--button1', 'gtk-ok',
+ '--button2', 'gtk-cancel',
+ '--no-newline',
+ '--columns', 'Name', 'File',
+ '--items', unpack(items))
+ local i = tonumber(out:match('%-?%d+$'))
+ if i and i >= 0 then view:goto_buffer(i + 1, true) end
+end