Галерея UI написанных на MQL - страница 77

 
Реter Konow #:
Сделать такое нелегко. )

Насколько я знаю, в штатном классе Ccanvas отсутствует функционал рисующий цветовой градиент, а как вы решили задачу с градиентом в своем GUI?
Это все решается формулами в коде
Файлы:
 
Yu Zhang бэктестинге твоего советника, я буду благодарен.

Нет ничего проще.

Описанное ядро управляет ВСЕМИ событиями, неважно, тиковое это событие или событие на графике. Вы можете просто получить позицию мыши и т.д. также в тике, проверить изменения и затем запустить OnEACylce() для chart-события. Вы больше ничем не ограничены.

 
Завтра выложу подробный update статуса разработки. 

Сегодня могу сказать что заложены две основы фундамента редактора из 6-ти.
 

Текущий статус разработки:

1. Проделана огромная работа по интеграции сотен свойств объектов, элементов, окон и  параметров во вкладки и таблицы редактора. Было необходимо их разделить и сортировать. Приблизительно на 70% эта задача выполнена. Не все из этих свойств будут нужны пользователям в работе, но они необходимы мне для дальнейшего развития редактора.

2. Отлажен механизм прокрутки. Теперь каждая вкладка "запоминает" положение ползунка и при возвращении канвас автоматически прокручивается на последнее место просмотра.

3. Исправлены лаги связанные с прокруткой. Например, во время прокрутки колесиком мышки интерактивные элементы не реагируют на курсор при заданном пороге скорости. Если скорость прихода событий колесика больше чем 3 в секунду (300 мс между событиями), попадая под курсор элементы не перерисовываются. Также теперь во время прокрутки рисуется только пространство полосы и ее компоненты. Остальное пространство канваса не игнорируется.

4. Налажена работа элементов T_FOLDER - сворачивателей таблиц. Это можно хорошо увидеть на видео.

5. Найденыи и исправлены проблемы с явлением элементов.

6. Лучше продуман дизайн подокон редактора. Найдены удобные и эстетические решения. Однако предстоит немало работы в этом направлении.


Ближайшие планы:

1. Написать функции Get_property() и Set_property(). Они позволят редактировать экземпляры скопированные от шаблонов. Первая функция будет получать сразу все свойства (более 300-от) от каждого элемента и помещать их в редактирующие элементы во вкладках редактора (те что в видео). Вторая функция будет посылать пользовательские значения из элемента-редактора в редактируемое свойство экземпляра на главном канвасе (в центре).

2. Восстановить функционал ручного редактирования элементов который уже хорошо работал 4 года назад.


 
Сегодня 21-ое декабря. Я рассчитывал что минимальная версия редактора будет готова в десятых числах, то есть до 20-го декабря, и в принципе так и получилось бы, если бы я восстанавливал прежнюю минимальную версию которая работала раньше, но я решил создать полную версию редактора. Поэтому работы получилось гораздо больше чем ожидалось.

Ранее я говорил о 6-ти основах визуального редактора. Напомню их:

1. Клонирование элементов/окон. 

Создание новых экземпляров элементов путем копирования шаблонов и модификации их свойств.

2. Удаление элементов/окон.

Стирание клонированных ранее экземпляров из ядра.


3. Получение свойств окон/элементов.

Элементы-редакторы свойств должны получать значения свойств экземпляров попадающих в фокус редактирования.

4. Редактирование свойств элементов/окон.

Всего существует 2 способа редактирования свойств: (1) через элементы-редакторы и (2) ручное редактирование экземпляров. Например рястягивание, перемещение, печатание на поверхности х и т.д.


5. Загрузка шаблонов/проектов. 

Функционал позволяющий загружать сохраненные шаблоны и проекты внутрь редактора для дальнейшего редактирования.

6. Сохранение шаблонов/проектов.

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

В общем, это шесть основ визуального редактора.

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


До Нового Года я рассчитываю реализовать клонирование, удаление и визуальное редактирование как с помощью элементов-редакторов, так и в ручном режиме. Посмотрим что из этого успею.


 
6 основ (коротко и ясно)

1. Копирование элементов.

2. Удаление элементов.

3. Ручное редактирование (перемещение, растягивание, печатание).

4. Редактирование через контроллеры (получение свойств в элементы-редакторы и их изменение).

5. Загрузка шаблонов и проектов GUI из файлов.

6. Сохранение шаблонов и проектов GUI в файлах.
 

Нужна хорошая инструкция, видео уроки создания панели от А до Я. Интерфейс на русском языке ;)

Иначе обилие функционала пугает.

 
Aleksey Vyazmikin #:

Нужна хорошая инструкция, видео уроки создания панели от А до Я. Интерфейс на русском языке ;)

Иначе обилие функционала пугает.

Да, рассчитываю снять видео-уроки и пару статей написать. Но пожалуй основная задача это сделать редактор самопонятным. Например, когда перемещая курсор над элементом будут появлятся стрелки, пользователю будет ясно что можно ухватить его за края и менять размеры. А если появится перекрестие, он поймет что элемент перетаскивается по канвасу. При клике на элемент будут рисоваться его размеры - высота и ширина - тоже вполне понятно. Текст и иконку можно будет перемещать внутри элемента. При наведение на них тоже будут появлятся стрелки. Размер текста можно изменить растягиванием. Расстояния между элементами при перемещении, а также совпадения их позиций по вертикали и горизонтали тоже возникают на канвасе в виде красных линий. В этом плане все понятно сразу.

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

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

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

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


 
Реter Konow #:
По большому счету, почти ничего в этом редакторе не потребует долгих обьяснений или уроков и его освоение займет не более часа. И в этом его неоспоримое преимущество перед языком разметки.)

Хорошая цель! Нужно набирать тестеров, которые действительно будут с нуля осваивать функционал, тогда более явно будет видно на что надо обратить внимание в эргономике интерфейса..

 
Aleksey Vyazmikin #:

Хорошая цель! Нужно набирать тестеров, которые действительно будут с нуля осваивать функционал, тогда более явно будет видно на что надо обратить внимание в эргономике интерфейса..

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