Перейти к публикации
Форум - ComputerCraft
Zer0Galaxy

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

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

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

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

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


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

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

  • Like 2

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


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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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

  • Like 2

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


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

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

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

  • Like 2

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


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

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

 

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

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


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

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

YoWx6sr.png

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


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

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

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

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


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

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

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


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

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

post-7-0-12691700-1439302103_thumb.png

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

  • Like 3

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


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

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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


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

 

 

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

 

 

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

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


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

 

 

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

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

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


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

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

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

---

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

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


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

 

 

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

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


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

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

Об одном. 

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


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

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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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

post-7-0-44038000-1440071175_thumb.png

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

post-7-0-29730500-1440071180_thumb.png

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

post-7-0-28268500-1440071186_thumb.png

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

post-7-0-10419600-1440071193_thumb.png

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

post-7-0-78805100-1440071199_thumb.png

Строчка 

Label1.caption=Label1.caption+1

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

Label1:redraw()

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

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

post-7-0-70738600-1440071205_thumb.png

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

post-7-0-17667700-1440071211_thumb.png

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

post-7-0-64917100-1440071216_thumb.png

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

post-7-0-88628900-1440072510_thumb.png

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

  • Like 5

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


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

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

 

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×