Zer0Galaxy
Гуру-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Zer0Galaxy
-
Ты лучше заканчивай Арбузер. А потом сделаем систему визуального программирования: палитру компонентов, инспектор объектов и т.д. (кто работал в Delphi или C-билдере тот поймет). Собственно, под это я и начал делать свою гуи.
-
Для работы с библиотекой подключим её стандартным способом forms=require("forms") Библиотека forms содержит следующие функции: addForm() - создает новую форму. run(form) - запускает обработку интерфейса, устанавливая активной форму form. stop() - прерывает обработку интерфейса. Форма. Создается при помощи команды: Form1=forms.addForm() По сути, форма - это область на экране в которой размещаются компоненты интерфейса. Если форма активна, размещенные в ней компоненты реагируют на действия мыши. Форм в Вашей программе может быть несколько, но активной будет только одна. По умолчанию форма занимает всю область экрана. Изменить размеры формы можно задавая её параметры W и H: Form1.W=31 Form1.H=7 а положение на экране - задавая параметры left и top: Form1.left=10 Form1.top =5 Помимо W, H, left и top форма обладает такими свойствами: border - наличие рамки 0-нет рамки; 1-одинарная рамка; 2-двойная рамка (по умолчанию - 0) color - цвет формы (по умолчанию - 0х000000), fontColor - цвет рамки (по умолчанию - 0xffffff). Форма обладает следующими методами: setActive() - устанавливает форму активной и перерисовывает её. isActive() - возвращает true, если форма активна. redraw() - принудительно перерисовывает форму, если форма активна. addButton(left, top, caption, onClick) - добавляет на форму кнопку. addLabel(left, top, caption) - добавляет на форму строку текста. addEdit(left, top, onEnter) - добавляет на форму окно ввода. addFrame(left, top, brd) - добавляет на форму рамку. addList(left, top, onChange) - добавляет на форму список. Поскольку форма является объектом, методы формы следует вызывать через двоеточие Form1:setActive() Все свойства и методы формы (за исключением setActive и isActive) присущи также другим компонентам интерфейса, которые я опишу позже.
- 105 ответов
-
- 10
-
-
--функция function hello() print("Hello World!") end -- преобразуем функцию в строку str=string.dump(hello) -- передаем на другой компьютер ... -- восстанавливаем hello1=loadstring(str) -- и запускаем hello1()
-
pastebin get iKzRve2g lib/forms.lua Конечно, браузер на такой библиотеке не построить, но для небольших приложений может сгодится. Библиотека позволяет создавать следующие визуальные компоненты: Form (форма) - является контейнером для остальных компонентов. Служит для быстрой смены экранного интерфейса без необходимости удалять и создавать компоненты. Button (кнопка) - тут всё понятно. Label (метка) - просто строка текста. Edit (окно ввода) - позволяет вводить текст. Frame (рамка) - просто рамка. List (список) - отображается в виде набора строк. Каждой строке ставится в соответствие элемент, способный хранить любое lua-значение (число, строку, таблицу и т.д.). Пользователь может прокручивать список, выбирать один из элементов, производить сортировку списка. И невизуальные компоненты: Event (событие) - обрабатывает системные события. Timer (таймер) - позволяет вызывать функцию-обработчик с заданным периодом. Пример работы с библиотекой: Попробовать библиотеку в действии можно в дата-центре на компьютере с координатами 10150, 14199. Для этого необходимо запустить файл form.lua
- 105 ответов
-
- 32
-
-
-
@Asummonster, готова в первом приближении "лёгкая" библиотека гуи. Можем потестировать
-
Да, действительно... Много файлов - библиотека, на мой взгляд, должна храниться в одном файле в папке lib, что бы пользователь не думал что куда разложить. Большой вес файлов - Мне казалось, что минимальный набор компонент можно реализовать гораздо меньшим кодом. Хотя на этот счет уже не уверен. Хотя... Большое потребление оперативки и процессора - не тестировал. Сложная имплементация - если не рассматривать упомянутые Асумонстром стили, использование библиотеки не слишком сложно даже для новичка. Интерфейс моей библиотеки существенно не отличается от GML, хотя использование некоторых компонент будет иное, заточенное под мои потребности. Разумеется, всё сказанное мной не отрицает библиотеку GML. Свою я делаю исключительно для удовольствия. Что получится, посмотрим.
-
Да, вопрос возник при написании гуи. Так у меня вся библиотека гуи получилась меньше чем одна функция read
-
Это тест на нестандартное мышление. Я, к примеру, знаю один способ, но он мне не очень нравится. Может кто еще предложит.
-
При вызове функции term.read() все символы, находящиеся в той же строке справа от курсора очищаются, а при вызове io.read() - по мере ввода смещаются вправо. Существует ли простой способ ограничивать поле ввода так, чтобы символы справа от этого поля не изменялись, а вводимая строка при достижении конца поля смещалась влево, как если бы достигала конца экрана? Вариант написать свою функцию read не рассматривается.
-
Это будет не велосипед, а самокат. Смотрел я GML, он мне тяжеловатым показался для той задачи, которую решаю.
-
Засел писать gui-библиотеку. Есть мысль сделать на ее основе систему визуального программирования
-
Что это за палитра и как ей пользоваться? На вики вскользь про какие то индексы сказано.
- 17 ответов
-
- opencomputers
- lua
-
(и ещё 3 )
Теги:
-
Думаю станет лучше, если за каждым символом будет тянуться шлейф из менее ярких, постепенно гаснущих символов.
- 17 ответов
-
- opencomputers
- lua
-
(и ещё 3 )
Теги:
-
Какой библиотекой GUI пользовался?
-
Каждое знакоместо будет содержать два пикселя. Необходимо заполнять экран символами ▄ (символ из псевдографики - нижняя часть закрашена, верхняя нет) предварительно установив цвет фона равным цвету верхнего пикселя, а цвет шрифта - цвету нижнего. Неплохо было бы заполнить весь экран такими символами заранее, а потом только менять атрибуты цвета для каждого знакоместа, Но, что то не найду такой возможности в библиотеке gpu.
- 15 ответов
-
- camera
- computronics
-
(и ещё 3 )
Теги:
-
А перемещение вверх-вниз, вправо-влево можно? Как я понял, один "пиксел" это два символа █. Можно уменьшить зернистость используя половинки этих символов (не помню какой код)
- 15 ответов
-
- camera
- computronics
-
(и ещё 3 )
Теги:
-
Когда то предлагал Тоторо алгоритм сжатия голограмм. Может и тебе подойдет нечто подобное.
-
Написать SQL возможно на любой машине, обладающей полнотой по Тьюрингу. Луа такой полнотой обладает. Ограничение - только способности программиста.
- 16 ответов
-
- 1
-
-
- DataBase
- OpenComputers
-
(и ещё 1 )
Теги:
-
Дрон в воде отключается? Не знал. А робот? А если через такую дверь будут проходить робот, а под ним дрон, так чтобы на дрона вода не попадала?
-
Анализ библиотеки process.lua показал (по крайней мере мне), что при вызове функции process.load создается новая сопрограмма, тело которой берется из указанного файла. Создается, но не запускается. Чтобы эта сопрограмма работала, основная программа должна обмениваться с ней событиями при помощи функций coroutin.resume и coroutine.yield, каковых я в библиотеке не обнаружил. По поводу того, сможет ли сопрограмма выводить на экран или делать что еще. Всё зависит от того, что ей разрешить в окружении. Если в окружении будет указано {term=term}, то наверное сможет выводить на экран. Но, как сказал Фингер, это похоже системная либа и прикладного применения, скорее всего не найдет.
-
Ну, конечно "m*". Исправил
-
hello=require("hello") hello.set() или так: require("hello").set() Только, если поменялся текст файла hello.lua, необходимо перегрузить компьютер (ОС-компьютер, не реальный) ибо ранее загружавшаяся библиотека второй раз не загружается, а берется из ОЗУ.
-
Чтобы работало require("hello"), hello.lua должна быть оформлена как библиотека, а именно: local hello={} function hello.set() -- бла-бла-бла end return hello
-
вроде такой, но можно и другую
-
Не-е-е. Так не пойдет. У тебя сколько блоков, столько записей в таблице. Включая пустоты. Я хочу перенести область размерами 100х100х60. Сколько ж мне жестких дисков понадобится. Давай уплотнять. Скажем, одна запись - прямоугольная область, заполненная однотипными блоками.
