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

guix простая библиотеке gui

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

начнем с того что данная библиотека зависима от моего мода для openOS и поставляется с ним в комплекте:

что поваляет делать данная библиотека:

  • создавать многосценные приложения
  • создавать многопоточные приложения средствами библиотеки
  • библиотека позваляет создавать таймеры слышатели и потоки операясь на главный объект gui или на конкретную сцену билиотека сама закроет все таймеры слушатели и потоки при выходе, таймеры слушатели и потоки созданные на конкретной сцене будут работать только тогда когда она выбранна
  • удалять элементы и/или сцены
  • перерисовка ведется автоматически или же самостоятельно, можно перересовать сцену целеком(gui.redraw()) а можно конкретный элемент(obj.draw()) пересовываться элемент будет только если выбрана его сцена
  • открывать контекстное меню
  • кастомное разрешения вплоть до отдельных сцен

оптимизация под слабое железо:

  • я настоятельно рекомендую использовать функцию для выбора цвета в зависимости от выдеокарты (gui.selectColor(main, level2(опционально), level1(опционально(можно использовать boolean))))
  • библиотка может работать даже на экране первого уровня(да даже на роботе) но для этого придеться использовать демон курсора которого пока что не существует но я его сделаю он должен сообщить библиотеки о своей работе чтобы она позволила открыть программу на мониторе первого уровня

поддерживаемые элементы:

  • button, имеет 3 режима, кнопка, переключатель, автоотпускаемый переключатель(кнопка реагирующяя на отжатия)
  • label, думаю тут все понятно
  • seekBar, может быть не кликабельный, поддерживает прокрутку колесиком мыши
  • list, может использоваться для отображения строк, позваляет узнать о нажатии строки, обладает отключаемым автоскролом, автоперересовку тоже можно отключить, по умалчанию сам удаляет элементы когда их много чтобы люди с нерабочим колесиком могли увидеть все пункты

в планах:

  • тягаемые окошки(сделано)

api:

  • для создания объекта gui необходимо вызвать метод create у библиотеки
  • все обрашения в библиотеки через одинарную точку
  • вызвать контекстного мен., gui.context(x, y, tbl) таблица может содержать строки или таблицы такого плана {str, on} если on, false то тогда данный пункт нельзя будет выбрать, вункция вернет значения, str, num или все будет nil если нечего не выбрано
  • создания сцены gui.createScene(backgroundColor, sizeX, sizeY)
  • получения api видеокарты gui.gpu
  • получения выжных значений, gui.screen, gui.keyboard
  • получения настроик видеокарты, gui.depth, gui.userX, gui.userY, gui.maxX, gui.maxY
  • отключения звукового соправождения gui.soundOn = false
  • создания теймеров слушателей потоков createTimer(time, callback) createListen(eventName or nil(all), callback) createThread(func, ...) данные методы необходимо вызывать от имени обекта gui(работа в всем приложении) или же от имени сцены(работа только на ней)
  • создания объектов на сцене, scene.createButton(x, y, sizeX, sizeY, text, callback, mode, state) createLabel(x, y, sizeX, sizeY, text) createSeekbar(posX, posY, size, text, callback, mode, min, max, value, touch, onlyIntegers) createList(posX, posY, sizeX, sizeY, callback)
  • настройки объекта button, backColor, foreColor, invertBackColor, invertForeColor
  • настройки объекта seekBar, backColor, foreColor, scrollCount, scrollWheel(можно ли колесиком крутить(запрет можно использовать например если есть желания переопределить это код(так сделано в list)))
  • настройки объекта list, backColor, foreColor, autoScroll, autoRedraw(выключите если будет добавлять много элементов за раз а потом лутще включить), autoRemove, maxStrsCount, для изменения настроик seekBar обратитесь к нему как к list.seekBar методы addStr, clear
  • inputbox создаеться как createInputbox(posX, posY, sizeX, sizeY, text, callback) у него есть настройки viewData(показываеть последний ввод(изначально true))
  • drawer создаеться createDrawer(posX, posY, drawer) где drawer это функция вызываемыя каждую перересовку отрисовщика в функцию приходит 3 аргумента(gpu(proxy видеокарты), posX, posY(тут нада начать отрисовку размер отрисовываемого изображения выберает сам отрисовши(делайте как хотите)))
  • и наконецто окошки, их можно таскать(если записать true в userMove) они могут использоваться для груперования элементов создания маленькиз минюшек, как создать окно? вот так createWindow(posX, posY, sizeX, sizeY) как настроить его? вот так: color(вебарает цвет окна изначально nil(нивидимый)) и window.attachObj(позиция иск на окне, тоже но y, и обект который на окно нада поместить)
  • для перемешения обекстов используйте метод move(работает и с окошками и перетягивает все элементы на них) метод не обновляет картинку по этому вызовите gui.redraw сомастоятельно(для того чтоб снизит нагрузка кода много действий)
  • если вы хотите временно отключить обект то нада setActive(true/false) не обновляет сцену(для того чтоб снизит нагрузка кода много действий) так что вызовите gui.redraw самастоятельно, setActive прячет обект запрешяя его отрисовку и недает ему реагировать на касания

примеры кода:

  • https://drive.google.com/file/d/19mpdK9sxy4Yf9AxzdPpy8YkXan7AZU8g/view?usp=sharing (плохой пример, делал чисто для отладки и только для себя, на второй сцене должна midi играть, но для этого ее нада разместить по обсалютному пути пути /mnt/ded/as16.mid(у мена миди на диске ded лежат а у вас пару будет в /usr/midi там midi1.mid и midi2.mid они в комплекте с модом(моим для openOS) идут и вы можете путь на них в примере поменять чтоб все работало как у меня))
Изменено пользователем rootmaster

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


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

@rootmaster А какое API этой библиотеки? Есть примеры использования?

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


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

@rootmaster А какое API этой библиотеки? Есть примеры использования?

скоро будут

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


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

Что, где, как? примеры, инструкции, описания? Как использовать, зачем оно ... опять реклама. И ни одного слова даже о том, как она именуется

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


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

Что, где, как? примеры, инструкции, описания? Как использовать, зачем оно ... опять реклама. И ни одного слова даже о том, как она именуется

что? всмысле неодного слова, я написал api чуть чуть, а названия ей guix

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


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

А можно примеры разместить на гитхабе, пастебине или как-то еще, чтобы не прихоилось качать архив?

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


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

pastebin get iKzRve2g lib/forms.lua

Конечно, браузер на такой библиотеке не построить, но для небольших приложений может сгодится.

 

Библиотека позволяет создавать следующие визуальные компоненты:

Form (форма) - является контейнером для остальных компонентов. Служит для быстрой смены экранного интерфейса без необходимости удалять и создавать компоненты.

Button (кнопка) - тут всё понятно.

Label (метка) - просто строка текста.

Edit (окно ввода) - позволяет вводить текст.

Frame (рамка) - просто рамка.

List (список) - отображается в виде набора строк. Каждой строке ставится в соответствие элемент, способный хранить любое lua-значение (число, строку, таблицу и т.д.). Пользователь может прокручивать список, выбирать один из элементов, производить сортировку списка.

И невизуальные компоненты:

Event (событие) - обрабатывает системные события.

Timer (таймер) - позволяет вызывать функцию-обработчик с заданным периодом.

 

Пример работы с библиотекой:

 

  Скрыть содержимое

 



forms=require("forms")         -- подключаем библиотеку

Form1=forms.addForm()          -- создаем основную форму

exitForm=forms.addForm()       -- и форму диалога выхода
exitForm.border=2
exitForm.W=31
exitForm.H=7
exitForm.left=math.floor((Form1.W-exitForm.W)/2)
exitForm.top =math.floor((Form1.H-exitForm.H)/2)
exitForm:addLabel(8,3,"Вы хотите выйти?")
exitForm:addButton(5,5,"Да",function() forms.stop() end)
exitForm:addButton(18,5,"Нет",function() Form1:setActive() end)

Btn1=Form1:addButton(65,21,"Выход",function() exitForm:setActive() end) -- создаем кнопку выхода
Btn1.color=0x505050                       -- задаем цвет кнопки

forms.run(Form1)               --запускаем gui 

 

 

 

Попробовать библиотеку в действии можно в дата-центре на компьютере с координатами 10150, 14199. Для этого необходимо запустить файл form.lua

ну такое себе, элементов очень мало, нету даже ползунков и таскаемых окошек, нет списков, это все есть в моей библиотеки guix, нельзя создать паток зашет gui, в моей либе так можно, лайк за красивые рамочьки кстате, да тут документация лутще чем в моем варианте, но я свою библиотеку писал для себя так та, у меня timer/listen/thread можно создать как для всего приложения так и для конкретной сцены(простите если когото обидел)

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

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


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

ну такое себе

...

(простите если когото обидел)

Читатели не одобрили рекламу за чужой счёт. Рекомендую делать сравнение с аналогами в своей теме.

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


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

Читатели не одобрили рекламу за чужой счёт. Рекомендую делать сравнение с аналогами в своей теме.

лан больше пиариться так не буду, ну что поделаеш та если некому мой софт не интересен....

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


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

лан больше пиариться так не буду, ну что поделаеш та если некому мой софт не интересен....

Причину и, более того, даже решение ты уже сам написал:

В 13.04.2022 в 21:39, rootmaster сказал:

тут документация лутще чем в моем варианте, но я свою библиотеку писал для себя так та

Софт-то ты делаешь интересный, для меня как минимум, но уважения к читателю, хотя бы призрачного и лицемерного, не проявил ни в одной из тем, из-за чего и неприятие. Умение правильно подать прогу не менее важно, чем умение прогу написать.

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


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

Причину и, более того, даже решение ты уже сам написал:

Софт-то ты делаешь интересный, для меня как минимум, но уважения к читателю, хотя бы призрачного и лицемерного, не проявил ни в одной из тем, из-за чего и неприятие. Умение правильно подать прогу не менее важно, чем умение прогу написать.

к сожеления "правильно подовать" я и не умею.... даже figaOS которая по сути openOS даже без оболочьки в которую накачали библиотек, стала более популярной, так что как то так, пиариться в чужих тема больше надеюсь не буду, но главная проблемма в моем софте на него нет или почьти нет документации либо же она устарела и неимеет нечегообшего с нынешним продуктом, но я совсом не умею писать доки, что делать?

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


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

что делать?

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

 

Вторым, если программа состоит более чем из одного файла, самодокачивание программой своих/не своих частей необходимых для полноценной работы.

 

Доки на мой взгляд - третьестепенный фактор: большинство пользователей хочет максимально просто получить что-либо и пользоваться этим. Но в это же время предоставляемые продуктом возможности должны быть описаны хоть как-то, иначе они рискуют остаться неизвестными. Например, вывод по кнопке/команде краткого списка "что и как" – один из оптимальных вариантов. Ведь доки, по сути, это задокументированные возможности продукта, а не какие-то взятые с потолка абстрактные рассуждения. И когда автор в теме, в своей теме, пишет что может его программа  – это не только добавляет ему  постов в своей теме, но и - что более важно - делает описание более обширным, более ЗАДОКУМЕНТИРОВАННЫМ. Сделал обновление: что-то добавил или что-то поменял – напиши там же. Это удобно всем.

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


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

Непомерно разросшийся оффтоп в теме "Лёгкая" библиотека GUI перенесён в тему инициатора оффтопа, начиная с этого поста:

В 13.04.2022 в 17:39, rootmaster сказал:

ну такое себе, элементов очень мало...

 

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


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

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

 

Вторым, если программа состоит более чем из одного файла, самодокачивание программой своих/не своих частей необходимых для полноценной работы.

 

Доки на мой взгляд - третьестепенный фактор: большинство пользователей хочет максимально просто получить что-либо и пользоваться этим. Но в это же время предоставляемые продуктом возможности должны быть описаны хоть как-то, иначе они рискуют остаться неизвестными. Например, вывод по кнопке/команде краткого списка "что и как" – один из оптимальных вариантов. Ведь доки, по сути, это задокументированные возможности продукта, а не какие-то взятые с потолка абстрактные рассуждения. И когда автор в теме, в своей теме, пишет что может его программа  – это не только добавляет ему  постов в своей теме, но и - что более важно - делает описание более обширным, более ЗАДОКУМЕНТИРОВАННЫМ. Сделал обновление: что-то добавил или что-то поменял – напиши там же. Это удобно всем.

у моего софта уже давно есть устоновшик

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


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

@rootmaster

 

А что насчёт

В 14.04.2022 в 22:50, Taoshi сказал:

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

а желательно и возможности посмотреть на код, не устанавливая его никуда?

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


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

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

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

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

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

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

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

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

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


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