Перейти к содержимому
Zer0Galaxy

"Лёгкая" библиотека GUI

Рекомендуемые сообщения

Ребят, помогите разобраться с событиями в этой библиотеке. У меня есть программа, которая должна уметь принимать сообщения по модему и писать его в лейбл. Решить ее выходит только с помощью огромного костыля в виде таймера и pullSignal, который просто каждую секунду слушает событие модема и перерисовывает лейбл. При использовании событий почему-то выкидывает или nil, или вообще ничего.

Просто создаешь объект Event, в обработчик которого вставляешь изменение лейбы:

function onEvent(receiverAddress, senderAddress, port, distance, message)
  Label1.caption=message
  Label1:redraw()
end

Event1=Form1:addEvent("modem_message", onEvent)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возник такой вопрос. Я пишу небольшую прогу по контролю за реакторами из ic2. Для динамического обновления информации(температура и энергия на выходе)и ее обработки решил использовать таймер с интервалом в секунду. Он вроде задачу свою выполняет, но только если в окне выполняется какое-то действие(например при простом задиме любой клавиши таймер работает, или при постоянных кликах мыши), а вот просто в фоне таймер не подает признаков жизни, что критично для моих реакторов, которым нужен постоянный контроль за температурой и который осуществляется в функции-обработчике таймера.

Сначала думал, что функцию криво написал, но у меня не работает даже пример с computer.energy().

Решил с помощью костыля, просто сделав функцию-обработчик рекурсивной, повесив тем самым любое взаимодействие с кнопками

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 15.06.2019 в 20:33, neon_bones сказал:

Возник такой вопрос. Я пишу небольшую прогу по контролю за реакторами из ic2...

Ты решаешь задачу при помощи библиотеки forms? Код можешь выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос: а как созданный fmk файл, импортировать в редактор, для продолжение его работы, сам файл при запуске ничего не делает.?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 30.08.2019 в 11:43, Gerod сказал:

Вопрос: а как созданный fmk файл, импортировать в редактор, для продолжение его работы, сам файл при запуске ничего не делает.?

Вопрос, я полагаю в тему FormsMaker. Там же можно найти и ответ:

Цитата

Эта версия уже позволяет сохранять редактируемый проект. Для того, что бы открыть сохраненный проект, необходимо запустить fmaker с параметром - имя проекта.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Zer0Galaxy сказал:

Вопрос, я полагаю в тему FormsMaker. Там же можно найти и ответ:

 

Да, спасибо, библиотека и конструктор очень удобны, спасибо за ваши старания. Я новичок в opencomputers, не подскажите, как запустить программу с параметрами? (если есть ответ уже в данной или в другой теме, то прошу прощения)

Изменено пользователем Gerod

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
36 минут назад, Gerod сказал:

Да, спасибо, библиотека и конструктор очень удобны, спасибо за ваши старания. Я новичок в opencomputers, не подскажите, как запустить программу с параметрами? (если есть ответ уже в данной или в другой теме, то прошу прощения)

fmaker pr_name.fmk

где pr_name - имя твоего проекта. К стати, если параметром программы является имя существующего файла, это имя не обязательно вбивать целиком. Достаточно ввести первые несколько букв и нажать Tab. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
_G.forms=forms
_G.TComponent=TComponent
_G.gpu=gpu

А зачем _G?

test=3


это то же что и

_G.test=4

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Griffi сказал:

А зачем _G?


test=3

это то же что и


_G.test=4

 

Не знаю, какой там контекст, код я не читал.
Но всё может поменять наличие в коде local:

local test

test = 3
_G.test = 4

print( _G.test, test )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 20.09.2020 в 18:27, Griffi сказал:

_G.forms=forms
_G.TComponent=TComponent
_G.gpu=gpu

А зачем _G?

Стесняюсь спросить, а о чем вообще речь? Где в коде либы подобные строки? Хотя, давно это было. Может, я и подзабыл чего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Некропостинг, но можно как то из onChange объекта List достать элемент, который был выбран?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, ov3rwrite сказал:

Некропостинг, но можно как то из onChange объекта List достать элемент, который был выбран?

Порылся в коде и обнаружил, что событие onChange принимает три параметра: 1)выбранная строка списка(string), 2)элемент, соответствующий этой строке(любой lua-тип) и 3)имя пользователя, выполнившего клик(string). Поэтому элемент можно достать, например, так:

function onListChange(line,item,user)
  local selectedItem = item
end

List1=Form1:addList(left,top,onListChange)

Кроме того, выбранный элемент списка всегда (не только из onChange) доступен как List1.items[List1.index]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Zer0Galaxy сказал:

Порылся в коде и обнаружил, что событие onChange принимает три параметра: 1)выбранная строка списка(string), 2)элемент, соответствующий этой строке(любой lua-тип) и 3)имя пользователя, выполнившего клик(string). Поэтому элемент можно достать, например, так:


function onListChange(line,item,user)
  local selectedItem = item
end

List1=Form1:addList(left,top,onListChange)

Кроме того, выбранный элемент списка всегда (не только из onChange) доступен как List1.items[List1.index]

Спасибо за помощь, уже пытался в аргументы совать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, RaX сказал:

А где можно скачать эту библиотеку?

ссылка на первой странице https://computercraft.ru/topic/1016-lyogkaya-biblioteka-gui/?do=findComment&comment=13883

 

http://pastebin get iKzRve2g lib/forms.lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 05.08.2015 в 10:33, Zer0Galaxy сказал:

selCol - цвет фона выбранной строки списка (по умолчанию -0x0000ff)

selFont - цвет шрифта выбранной строки (по умолчанию - 0xffff00)

Не соответствует действительности. Правильно:

selColor - цвет фона выбранной строки списка (по умолчанию -0x0000ff)

sfColor- цвет шрифта выбранной строки (по умолчанию - 0xffff00)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Библиотека очень спасает, вот пытаюсь опровергнуть утверждение, что браузер на ней не построить. Правда не хватает некоторого функционала. Самое желанное, это возможность указать функцию, которая будет вызываться каждый раз после отрисовки формы. Не хватает таких элементов как CheckBox, Selector и ScrollBar. Первые два можно реализовать используя кнопки, но хотелось бы иметь отдельные элементы. По поводу кнопок, в монохромных интерфейсах, выделять большие кнопки, меняя местами цвет фона и текста не всегда получается. Хотелось бы иметь возможность делать вокруг кнопки обводку. Буду очень благодарен, если вышеизложенные функции будут реализованы.:rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, AlexCatze сказал:

Не хватает таких элементов как CheckBox, Selector и ScrollBar.

Если есть опыт ООП программирования, могу помочь в создании новых компонентов. Для этого не обязательно менять либу, можно создать свой собственный компонент, который используешь только ты. Если понравится, добавлю компонент в либу, а тебя в соавторы.

13 минуты назад, AlexCatze сказал:

Хотелось бы иметь возможность делать вокруг кнопки обводку.

Кнопка имеет свойство border. Если его установить в 1 или 2, кнопка получит одинарную или двойную окантовку. Но имей в виду, что размеры кнопки должны быть достаточными что бы вместить надпись и окантовку. Т.е. высота должна быть не менее трех.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Zer0Galaxy сказал:

Если есть опыт ООП программирования

Опыт есть. Сегодня попробую, взяв за основу элемент кнопки. Вечером отпишусь.

19 минут назад, Zer0Galaxy сказал:

Кнопка имеет свойство border

Спасибо. Как-то  сразу не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...