Краудсорсовый GUI. Открытое бета-тестирование. - страница 18

 
Реter Konow:

Уточните, эти "узлы" - динамичные и интерактивные объекты, как и связи между ними? Это ведь не просто схема? Если так, то нечто подобное видел у Андрея Баринова в его графическом конструкторе стратегий. Это имеете ввиду?

Логика связей между узлами неизменна и существует по предопределленым правилам, или это фривольная схема, создаваемая как угодно?

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

Да, это представление стратегии, только не Андрея Баринова, свои наработки.

Визуальное редактирование не предполагается. Будет автоматическая генерация.

"Доп.код не нужен." - Так стратегии в виде файла может и не быть. Так вы хотите парсер ещё делать? Это уже есть, зачем вам это :) ? Могу скинуть примеры по работе со стратегией, там всё просто и удобно.

Вот пример:

#include <Greshnik\\Strategy.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   cStrategy *st=new cStrategy();
   st.Read_from_file("Strategy\\Test\\1.txt");  //Читаем с файла
   st.Print_strategy();                         //Вывести в лог
   int count_top_nodes=st.Get_top_nodes_count();//Количество узлов на вершине
   int my_node=-1;
   for(int i1=0; i1<count_top_nodes; i1++)
     {
      int node_id=st.Get_top_node(i1);
      if(node_id<0)
        {
         Print("Узла на вершине нету по индексу:",i1);
        }
      else
        {
         my_node=node_id;
        }
     }
   if(my_node>=0)
     {
      Print("Тип узла: ",EnumToString(st.Get_node_type(my_node)));
      Print("Количество родительских узлов: ",st.Get_parents_nodes_count(my_node));
     }
   delete st;
  }

При ошибке надо смотреть лог, там на русском всё.

Да и в исходнике всё расписано.

 
Aliaksandr Hryshyn:

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

Без дополнительного кода никак, он позволяет считывать такого рода структуру с текстового файла и получать всю информацию о ней.

Хотелось бы красивого представления данной структуры.

Тут нужно динамическое создание графических элементов.

Вот пример файла с такого рода структурой, по нему можно понять, для чего эта структура нужна :)

Этот файл считывается кодом и там удобный доступ ко всем параметрам структуры. Тут представлены не все типы узлов.

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

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

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

Это больше не к Петру. Не отвлекайте его, пожалуйста.
Вам больше сюда

 
Aliaksandr Hryshyn:

Да, это представление стратегии, только не Андрея Баринова, свои наработки.

Визуальное редактирование не предполагается. Будет автоматическая генерация.

"Доп.код не нужен." - Так стратегии в виде файла может и не быть. Так вы хотите парсер ещё делать? Это уже есть, зачем вам это :) ? Могу скинуть примеры по работе со стратегией, там всё просто и удобно.

Вот пример:

При ошибке надо смотреть лог, там на русском всё.

Да и в исходнике всё расписано.

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

 
Реter Konow:

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

Хорошо.

 
Nikolai Semko:

Это больше не к Петру. Не отвлекайте его, пожалуйста.
Вам больше сюда

Да, то что надо.

 
Aliaksandr Hryshyn:

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

Без дополнительного кода никак, он позволяет считывать такого рода структуру с текстового файла и получать всю информацию о ней.

Хотелось бы красивого представления данной структуры.

Тут нужно динамическое создание графических элементов.

Вот пример файла с такого рода структурой, по нему можно понять, для чего эта структура нужна :)

Этот файл считывается кодом и там удобный доступ ко всем параметрам структуры. Тут представлены не все типы узлов.

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

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

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

Есть классические инструменты для визуализации графов : http://www.graphviz.org/documentation/ он-же https://en.wikipedia.org/wiki/DOT_(graph_description_language)

то есть вам надо сгенерировать .dot файл своего графа по вашей структуре и запустить рендер (их несколько на выбор)

если не ошибаюсь, то .dot файл можно открыть в yEd (https://www.yworks.com/products/yed) чтобы мышкой подправить :-)

PS. визуализация графов не совсем простая задача мягко говоря :-) Её в мире до сих пор решают...

 
Так мне хотелось бы решения на MQL. Ладно, придётся самому делать :).
 

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

"Ядро, разметка"..... без комментариев.

Я понимаю следующие виды разметок: xml, html,json,xaml и так далее. 

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

Петр использует процедурное программирование, поэтому обращение к элементу управления как к объекту, поскольку объектов априори у Петра нет, невозможно.

А значит их нельзя на лету изменять и уж тем делать связку с данными...

Ждем.. Ждем во что это выльется. Но лучше бы Петр генерировал ex4, е не mqh, чтобы не пришлось копаться в ... ядре.

 
Алексей Барбашин:

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

"Ядро, разметка"..... без комментариев.

Я понимаю следующие виды разметок: xml, html,json,xaml и так далее. 

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

Петр использует процедурное программирование, поэтому обращение к элементу управления как к объекту, поскольку объектов априори у Петра нет, невозможно.

А значит их нельзя на лету изменять и уж тем делать связку с данными...

Ждем.. Ждем во что это выльется. Но лучше бы Петр генерировал ex4, е не mqh, чтобы не пришлось копаться в ... ядре.

Улыбнуло :) Все ядро под завязку забито объектами.

Алексей, ты обещал помочь протестировать. То, что этот редактор увидит свет, твоя заслуга. Ты мотивировал меня закончить дело. 

Как только я выставлю редактор (во вторник), мы вместе создадим простейшую панель из кнопок, чекбоксов и полей ввода и подключим ее к простейшему советнику. И на все вопросы сразу будут получены ответы.))

 
Aliaksandr Hryshyn:
Так мне хотелось бы решения на MQL. Ладно, придётся самому делать :).

пришло время вылезти из песочницы :-) детской лопаточки не хватает..

для решения разных задач нужен свой инструментарий 

с другой стороны: можно молотком(даже микроскопом) забивать шурупы

Причина обращения: