mozers
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: --[[ --------------------------------------------------- Тестирование gui.dll Оригинальная версия от Стива Донована (с исходниками и документацией): http://mysite.mweb.co.za/residents/sdonovan/scite/gui_ext.zip Подключение: Помещаем gui.dll в любой каталог описанный в параметре package.cpath (например в SciTE-Ru\tools\LuaLib\) Открываем этот скрипт и запускаем по F5 У библиотеки gui.dll множество интересных методов (см. докуметацию) позволяющих создавать панели, списки, тулбары и пр. ]] ----------------------------------------------------- require 'gui' -- БАГ: После этой команды начисто перестает работать ввод русских букв (( ------------------------------ -- Создаем боковую панель (справа) local my_panel = gui.panel(200) gui.set_panel(my_panel,"right") -- Создаем контекстное меню для панели -- (имхо уместнее было бы создание контекстного меню для конкретного списка) -- Контекстное меню показывается всегда, но вот работает ОЧЕНЬ нестабильно. Почему??? Не понятно... function one() print("Выбран ПЕРВЫЙ пункт контекстного меню") end function two() print("Выбран ВТОРОЙ пункт контекстного меню") end my_panel:context_menu { 'Первый пункт|one', 'Второй пункт|two', } ------------------------------ -- Создаем первый блок панели - список файлов local list_files = gui.list(false) local files = gui.files("*") if files then for _, f in ipairs(files) do list_files:add_item(f) end end -- размещаем его на нашей панели my_panel:add(list_files, "top", 150) -- задаем поведение при двойном клике на элементе списка list_files:on_double_click(function(idx) print(idx, list_files:get_item_data(idx)) -- почему то второй параметр (текст элемента списка) не выводится (nil) ??? end) ------------------------------ -- Создаем второй блок панели - список из 2х колонок local list_names = gui.list(true) list_names:add_column('ИМЯ',100) list_names:add_column('ФАМИЛИЯ',100) list_names:add_item {'Владимир','Сидоров'} list_names:add_item {'Сергей','Петров'} list_names:add_item {'Петр','Воронов'} -- размещаем его на нашей панели my_panel:add(list_names, "top", 70) -- задаем поведение при выборе элемента списка -- (фактически работает не как on_select, а как on_click) list_names:on_select(function(idx) print('Выбрано имя',idx) end) ------------------------------ -- Создаем третий блок панели - просто текстовое поле (для мини-заметок) local text_pane = gui.memo() -- размещаем его на нашей панели my_panel:add(text_pane, "top", 90) ------------------------------ -- показываем получившуюся панель my_panel:show() --[[ --------------------------------------------------- БАГ: Вместо нашей панели появляется пустое поле справа но стоит чуть подвинуть мышкой вертикальный разделитель, как все заданные нами блоки появляются. В каталоге examples оригинального дистрибутива имеются и другие примеры В них и создание вкладок на панелях и плавающие панели, и тулбары и много чего еще... Эх, сделать бы чтобы это еще и работало путью... ]] ----------------------------------------------------- |
| Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 20:12 15-08-2008 | Исправлено: mozers, 18:49 17-08-2008 |
|