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


Фотография

Система визуального программирования FormsMaker

gui программирование интерфейс

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 63

#1 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 05 Август 2015 - 16:33

*
Популярное сообщение!

Каждый, кто занимался разработкой человеко-машинного интерфейса под OpenOS, наверное знает какое это муторное занятие. Даже если Вы используете библиотеку GUI. То и дело приходится выходить из редактора кода, запускать свою программу, смотреть на результат своих стараний и снова заходить в редактор, чтобы исправить всего одну цифру.

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

 

Построена система на основе уже известной Вам gui-библиотеки forms.

При входе в FormsMaker мы видим пустую форму

Прикрепленный файл  2015-08-05_15.40.54.png   2,46К   71 Количество загрузок:

Щелкните правой кнопкой мыши в любом месте формы после чего откроется окно управления компонентом

Прикрепленный файл  2015-08-05_15.40.58.png   4,05К   80 Количество загрузок:

Выбрав пункт "Свойства Form1" можно (будет) редактировать свойства формы, такие как цвет рамка и т.д.

Пункты "Add ..." добавляют на форму соответствующий компонент.

Пункт "Проект" позволит управлять проектом: сохранять, компилировать и т.д.

Для возврата к редактируемой форме выберите "Отмена"

 

К примеру мы выбрали пункт "Add frame". Это добавит на нашу форму рамку.

Прикрепленный файл  2015-08-05_15.41.01.png   2,47К   77 Количество загрузок:

Таким же образом на рамку можно добавить кнопку. Щелкаем ПКМ на рамку

Прикрепленный файл  2015-08-05_15.41.06.png   4,11К   76 Количество загрузок:

и выбираем "Add button"

Прикрепленный файл  2015-08-05_15.41.09.png   2,77К   56 Количество загрузок:

Изменить размер рамки можно при помощи ЛКМ, потянув за правый-нижний ее угол

Прикрепленный файл  2015-08-05_15.41.17.png   2,77К   80 Количество загрузок:

А перемещать рамку по форме можно перетаскивая за любое свободное её место

Прикрепленный файл  2015-08-05_15.41.23.png   2,72К   72 Количество загрузок:

 

pastebin get wA5KMKav fmaker.lua

 

Приму с благодарностью любую посильную помощь в развитии проекта, как в программировании, тестировании так и просто советом.


Сообщение отредактировал Zer0Galaxy: 04 Декабрь 2016 - 17:38


#2 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 05 Август 2015 - 16:50

Проект параметров формы сохраняется в отдельный файл?

Библиотека умеет подгружать этот файл?



#3 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 760
  • Уровень сигнала: 4,47%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 05 Август 2015 - 16:53

Zer0Galaxy, ты как всегда суперские программы пишешь.


  • Fingercomp и qwertyMAN это нравится

#4 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 05 Август 2015 - 17:01

Проект параметров формы сохраняется в отдельный файл?

Библиотека умеет подгружать этот файл?

На данный момент сохранение проекта в файл пока не реализовано. Планируется разработать структуру такого файла для сохранения и последующей загрузки проекта. И конечно же, самое интересное - это трансляция проекта в исполняемый lua-код.

Библиотека сама по себе ни с какими файлами не работает. Подгружать файл будет среда разработки.


Сообщение отредактировал Zer0Galaxy: 05 Август 2015 - 17:02


#5 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 05 Август 2015 - 17:36

Насколько я понял, в библиотеке GUI подразумевается только динамическое создание форм внутри кода программы. Без возможности подгрузки/сохранения файла параметров формы?

Если это так, то было бы логичным добавить в библиотеку что-то вроде loadForm/SaveForm, чтобы иметь возможность статические параметры формы (цвета/размеры/флаги) хранить в отдельном файле и подгружать при необходимости. А в программе пользователя оставить только логику формы.


Сообщение отредактировал swg2you: 05 Август 2015 - 17:37


#6 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 05 Август 2015 - 17:54

Насколько я понял, в библиотеке GUI подразумевается только динамическое создание форм внутри кода программы. Без возможности подгрузки/сохранения файла параметров формы?

Если это так, то было бы логичным добавить в библиотеку что-то вроде loadForm/SaveForm, чтобы иметь возможность статические параметры формы (цвета/размеры/флаги) хранить в отдельном файле и подгружать при необходимости. А в программе пользователя оставить только логику формы.

И форма и все ее компоненты создаются динамически. Параметры компонентов предполагается задавать в коде программы.

Если хранить их в отдельном файле, то для запуска программы потребуется и этот файл. А я не хотел бы лишних файлов, необходимых для исполнения.



#7 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 05 Август 2015 - 18:36

Меня смущает название темы. "Система визуального программирования" это немного другая штука. "Редактор форм" - больше подходит


  • Krutoy и krovyaka это нравится

#8 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 05 Август 2015 - 18:44

Меня смущает название темы. "Система визуального программирования" это немного другая штука. "Редактор форм" - больше подходит

Всё таки, конечным результатом работы системы будет луа-код, получаемый в результате компиляции проекта (да простит меня NEO). 


  • Sharplook и Asummonster это нравится

#9 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 767
  • Уровень сигнала: 48,58%
  • В игре: 395 час. 50 мин.

Награды

                 

Отправлено 06 Август 2015 - 20:56

Всё таки, конечным результатом работы системы будет луа-код, получаемый в результате компиляции проекта (да простит меня NEO). 

 

Судя по всему, это будет что-то  грандиозное. Хочется немного ясности. Что пользователь получит в конце после создания дизайна кнопок, окошка или списка + кнопки и прочим. Что это будет после сохранения? Луа код?  А его потом уже можно и нужно дорабатывать функционально? Повесить функции кнопкам и прочее? Так?  Это система быстрого  визуального создания менюшек?



#10 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 212
  • Уровень сигнала: 14,44%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 06 Август 2015 - 22:16

У Зер0 всегда крутые проги получаются.

Спойлер



#11 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 07 Август 2015 - 09:53

Судя по всему, это будет что-то  грандиозное. Хочется немного ясности. Что пользователь получит в конце после создания дизайна кнопок, окошка или списка + кнопки и прочим. Что это будет после сохранения? Луа код?  А его потом уже можно и нужно дорабатывать функционально? Повесить функции кнопкам и прочее? Так?  Это система быстрого  визуального создания менюшек?

После создания окошек, кнопок и прочих элементов интерфейса, пользователь получит файл проекта - особый файл, который можно будет повторно открыть в редакторе и продолжить редактирование. Файл проекта можно будет преобразовать в исполняемый луа-код. Процесс преобразования я назвал генерацией, дабы не травмировать чувств интерпретационистов. А луа-код - уже редактировать и запускать как всякую другую программу. Поначалу предполагалось, что генерироваться будут только строки для создания элементов интерфейса, а логика добавляется вручную в редакторе edit. Затем возникла мысль добавить генерацию обработчиков событий. Но это требует встраивания в FormsMaker текстового редактора. Посмотрим как пойдет.



#12 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 08 Август 2015 - 14:37

Желающие могут опробовать генерацию кода. Для этого надо на уже упоминавшемся компьютере создать элементы интерфейса, после чего нажать ПКМ и в выпадающем списке выбрать пункт "Генерировать код". Этот пункт в список не помещается, поэтому список нужно прокрутить колесиком. Результирующий код смотрим в файле Project1.lua. Его можно даже запустить.



#13 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 11 Август 2015 - 17:12

При выборе пункта "Свойства" теперь доступно окно редактирования свойств компонента

Прикрепленный файл  2015-08-11_16.39.58.png   6,08К   120 Количество загрузок:

В этом окне можно изменять цвет, надпись и другие свойства. Тестовую версию программы по прежнему можно опробовать в дата-центре на компьютере с координатами 10150, 14199.


  • Alex, Totoro и swg2you это нравится

#14 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 760
  • Уровень сигнала: 4,47%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Август 2015 - 17:57

А какие свойства можно добавлять?



#15 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 11 Август 2015 - 18:03

Пока никаких. Но в будущем, возможно, любые. 



#16 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 11 Август 2015 - 23:48

При выборе пункта "Свойства" теперь доступно окно редактирования свойств компонента

attachicon.gif2015-08-11_16.39.58.png

В этом окне можно изменять цвет, надпись и другие свойства. Тестовую версию программы по прежнему можно опробовать в дата-центре на компьютере с координатами 10150, 14199.

Получился редактор луа таблиц )



#17 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 08:56

Получился редактор луа таблиц )

Верно. Любой объект на луа есть ничто иное как таблица. Изменение свойств объекта это редактирование таблицы. А если учесть, что переменные и функции являются полями таблицы _G, то можно говорить, что программирование тоже редактирование таблицы.



#18 Оффлайн   SergOmarov

SergOmarov
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,32%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 12 Август 2015 - 09:03

А как скоро будет готов релиз? И чем можно помочь для ускорения выпуска?



#19 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 09:24

А как скоро будет готов релиз?
Кто же его знает. Как дело пойдет. В принципе, то что есть уже можно использовать.

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

#20 Оффлайн   SergOmarov

SergOmarov
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,32%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 12 Август 2015 - 09:46

Тестировать, находить баги, предлагать свои варианты реализации программы.

Ок, буду периодически заходить в ДЦ) 



#21 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 12 Август 2015 - 11:13

Верно. Любой объект на луа есть ничто иное как таблица. Изменение свойств объекта это редактирование таблицы. А если учесть, что переменные и функции являются полями таблицы _G, то можно говорить, что программирование тоже редактирование таблицы.

Взгляд соответствующий аватарке.

---

А не будет ли лучше, редактировать свойства в компоненте по типу TextEditor?



#22 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 11:21

А не будет ли лучше, редактировать свойства в компоненте по типу TextEditor?
При клике на какое то из свойств открывается окно редактирования свойства (его я не показал на скриншоте), в котором присутствует компонент Edit. В этот Edit вводится новое значение свойства. Или речь идет об одном TextEditorе, в котором редактируются сразу все свойства?

#23 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 12 Август 2015 - 11:31

При клике на какое то из свойств открывается окно редактирования свойства (его я не показал на скриншоте), в котором присутствует компонент Edit. В этот Edit вводится новое значение свойства. Или речь идет об одном TextEditorе, в котором редактируются сразу все свойства?

Об одном. 



#24 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 11:46

Кто сможет сделать компонент TextEditor?



#25 Оффлайн   SergOmarov

SergOmarov
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,32%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 12 Август 2015 - 13:49

С одним свойством?


Сообщение отредактировал SergOmarov: 12 Август 2015 - 13:49


#26 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 14:24

Почему с одним? Сколько надо, столько и делай



#27 Оффлайн   SergOmarov

SergOmarov
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,32%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 12 Август 2015 - 14:38

Сколько надо - по идее надо создать столько экземпляров этого компонента. И еще я не понял: как он должен выглядеть и что точно делать?


Сообщение отредактировал SergOmarov: 12 Август 2015 - 14:39


#28 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 12 Август 2015 - 15:07

TextEdit должен быть похож на компонент Edit, с той лишь разницей, что Edit это редактор одной строки, а TextEdit - многострочный редактор. Но с добавлением этого компонента библиотека forms должна остаться "легкой", а для этого нужно максимально использовать системные ресурсы. К примеру, для создания Edit я использовал стандартный term.read, хоть и не совсем обычным способом.



#29 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 20 Август 2015 - 15:13

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

Запустим fmaker и создадим на форме метку (addLabel). Эта метка будет отображать количество нажатий. Необходимо установить начальное значение равное нулю, для чего щелкнем ПКМ на метке и откроем окно свойств. Выберем свойство "caption" (надпись) и зададим ему новое значение - "0"

Прикрепленный файл  1.png   5,7К   2 Количество загрузок:

Закроем окно свойств метки и аналогичным образом создадим кнопку (addButton). В качестве надписи укажем - "+1"

Прикрепленный файл  2.png   5,85К   2 Количество загрузок:

Щелкнем на строчку onClick в окне свойств кнопки. onClick - это обработчик нажатия на кнопку. Пока он не привязан ни к какой функции, о чем нам и сообщается.

Прикрепленный файл  3.png   5,76К   2 Количество загрузок:

Что бы создать функцию обработки, нажимаем кнопку "New" и попадаем в редактор обработчика событий

Прикрепленный файл  4.png   5,39К   2 Количество загрузок:

Заголовок функции-обработчика и завершающий end создаются автоматически. Наша задача прописать тело функции

Прикрепленный файл  5.png   6,26К   2 Количество загрузок:

Строчка 

Label1.caption=Label1.caption+1

увеличивает значение надписи на единицу. А строчка

Label1:redraw()

вызывает перерисовку компонента Label1.

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

Прикрепленный файл  6.png   5,37К   2 Количество загрузок:

... и выйти из FormsMaker

Прикрепленный файл  7.png   4,88К   3 Количество загрузок:

Что бы посмотреть код, получившийся в результате генерации, откроем его командой "edit Project1.lua"

Прикрепленный файл  8.png   7,56К   2 Количество загрузок:

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

Прикрепленный файл  9.png   2,54К   3 Количество загрузок:

Напоминаю, с последней версией редактора можно поэкспериментировать в дата-центре на компьютере с координатами 10150, 14199.



#30 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 17,94%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 20 Август 2015 - 15:21

Напоминаю, с последней версией редактора можно поэкспериментировать в дата-центре на компьютере с координатами 10150, 14199.

 

Вход в ДЦ забаррикадирован кирпичами))







Темы с аналогичным тегами gui, программирование, интерфейс

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных