MineOS/Documentation/ECSAPI.md
Ruslan dca989e18d Документация для файла ECSAPI.lua
Документации мало,пока что только по ECSAPI.lua,в  дальнейшем  будет дополняться
2017-03-26 13:02:43 +03:00

9.9 KiB
Raw Blame History

Функция universalWindow(x, y, width, background, closeWindowAfter, ...)

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

Аргументы функции:

x и y: это числа, обозначающие стартовые координаты левого верхнего угла данного окна.
Вместо цифр вы также можете написать "auto" - и программа автоматически разместит окно
по центру экрана по выбранной координате. Или по обеим координатам, если вам угодно.
 
width: это ширина окна, которую вы можете задать по собственному желанию. Если некторые
объекты требуют расширения окна, то окно будет автоматически расширено.

background: цвет фона окна.

closeWindowAfter: eсли true, то окно по завершению функции будет выгружено, а на его месте
отрисуются пиксели, которые имелись на экране до выполнения функции. Удобно, если нет нужды
перерисовывать интерфейс.

... : многоточием тут является перечень объектов, указанных через запятую. Каждый объект
является массивом и имеет собственный формат. Ниже перечислены все возможные типы объектов.
	
	{"Button", {Цвет кнопки1, Цвет текста на кнопке1, текст1}, {Цвет кнопки2, Цвет текста на кнопке2, текст2}, ...}

		Это объект для рисования кнопок. Каждая кнопка - это массив, состоящий из трех элементов:
		цвета кнопки, цвета текста на кнопке и самого текста. Кнопок может быть неограниченное количество,
		однако чем их больше, тем большее требуется разрешение экрана по ширине.

		Интерактивный объект.

	{"Input", Цвет рамки и текста, Цвет при выделении, Стартовый текст [, Маскировать символом]}

		Объект для рисования полей ввода текстовой информации. Удобно для открытия или сохранения файлов,
		Опциональный аргумент "Маскировать символом" полезен, если вы делаете поле для ввода пароля.
		Никто не увидит ваш текст. В качестве данного аргумента передается символ, например "*".

		Интерактивный объект.

	{"Selector", Цвет рамки, Цвет при выделении, Выбор 1, Выбор 2, Выбор 3 ...}

		Внешне схож с объектом "Input", однако в этом случае вы будете выбирать один из предложенных
		вариантов из выпадающего списка. По умолчанию выбран первый вариант.

		Интерактивный объект.

	{"Select", Цвет рамки, Цвет галочки, Выбор 1, Выбор 2, Выбор 3 ...}

		Объект выбора. Отличается от "Selector" тем, что здесь вы выбираете один из вариантов, отмечая
		его галочкой. По умолчанию выбран первый вариант.

		Интерактивный объект. 

	{"Slider", Цвет линии слайдера, Цвет пимпочки слайдера, Значения слайдера ОТ, Значения слайдера ДО, Текущее значение [, Текст-подсказка ДО] [, Текст-подсказка ПОСЛЕ]}

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

		К примеру, если аргумент "Текст-подсказка ДО" будет равен "Съедено ", а аргумент "Текст-подсказка ПОСЛЕ"
		будет равен " яблок", а значение слайдера будет равно 50, то на экране будет написано "Съедено 50 яблок".

		Интерактивный объект.

	{"Switch", Активный цвет, Пассивный цвет, Цвет текста, Текст, Состояние}

		 Переключатель, принимающий два состояния: true или false. Текст - это всего лишь информация, некое
		 название данного переключателя.

		 Интерактивный объект.  

	{"CenterText", Цвет текста, текст}

		Отображение текста указанного цвета по центру окна. Чисто для информативных целей.

	{"WrappedText", Цвет текста, Текст}

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

    {"TextField", Высота, Цвет фона, Цвет текста, Цвет скроллбара, Цвет пимпочки скроллбара, текст}

    	Текстовое поле с возможностью прокрутки. Отличается от "WrappedText"
    	фиксированной высотой. Чисто для информативных целей.

    {"Separator", Цвет разделителя}

    	Линия-разделитель, помогающая лучше отделять объекты друг от друга. Декоративный объект.

	{"EmptyLine"}

    	Пустое пространство, помогающая лучше отделять объекты друг от друга. Декоративный объект.

	Каждый из объектов рисуется по порядку сверху вниз. Каждый объект автоматически
	увеличивает высоту окна до необходимого значения. Если объектов будет указано слишком много -
	т.е. если окно вылезет за пределы экрана, то программа завершится с ошибкой.

Что возвращает функция:
	
	Возвратом является массив, пронумерованный от 1 до <количества объектов>.
	К примеру, 1 индекс данного массива соответствует 1 указанному объекту.
	Каждый индекс данного массива несет в себе какие-то данные, которые вы
	внесли в объект во время работы функции.
	Например, если в 1-ый объект типа "Input" вы ввели фразу "Hello world",
	то первый индекс в возвращенном массиве будет равен "Hello world".
	Конкретнее это будет вот так: massiv[1] = "Hello world".

	Если взаимодействие с объектом невозможно - например, как в случае
	с EmptyLine, CenterText, TextField или Separator, то в возвращенном
	массиве этот объект указываться не будет.

	Готовые примеры использования функции указаны ниже.

Функция-демонстратор, показывающая все возможные объекты в одном окне. Код окна находится выше.

ecs.demoWindow()

Функция, предлагающая сохранить файл в нужном месте в нужном формате.

ecs.universalWindow("auto", "auto", 30, ecs.windowColors.background, true, {"EmptyLine"}, {"CenterText", 0x262626, "Сохранить как"}, {"EmptyLine"}, {"Input", 0x262626, 0x880000, "Путь"}, {"Selector", 0x262626, 0x880000, "PNG", "JPG", "PSD"}, {"EmptyLine"}, {"Button", {0xbbbbbb, 0xffffff, "OK!"}})