My approach. The core is the engine. - page 28

 
Dmitry Fedoseev:

By the way, Anatoly's library is also a joke. How many articles on the subject? About 50? Everywhere you go in the comments - "Oh, not yet, I need to improve it". What to start using his library, you need to read these 50 articles? What is the gist and meaning?

I tried to connect the mentioned library, my opinion is ambiguous, yes it is convenient, yes it is beautiful, but I was not engaged in MQL when the library was created, and with subsequent builds of MT, the library became "conditionally operational", some examples from the articles do not compile or work with bugs, and to understand the tons of code, alas, it is easier to use the standard delivery of MT

Maxim Kuznetsov:

Modern GUI constructors (the ones that "spread buttons onto forms") are a pretty technological thing and attaching MQL elements to them does not look fantastic.

Almost all of them have in the intermediate form (project file, etc) an XML describing position and relations between the elements.

Generating code for the target platform is in fact an XSLT transformation that can be done by anyone who thinks they are web-developers :-)

Take for example EasyAndFast (https://www.mql5.com/ru/code/19703) because it is object based and has all necessary components. (and by the way, it is open and documented, unlike this one),
and simply write a translator.

There's no gui-mql builder, not because it's mega complicated, but because it's just not popular.


Yes, I am looking for those - I am interested, at least to rub Peter's nose in it! ))))

I have no time or wish to work out all the details - why not just use Crossplatform GUI builder?

 
Igor Makanu:

I tried to connect the above mentioned library, my opinion is ambiguous, yes it is convenient, yes it is beautiful, but I was not involved in MQL when this library was created, and with subsequent builds of MT, the library became "conditionally operational", some examples from the articles do not compile or work with bugs, and to understand tons of code, alas, it is easier to use the default MT package


Yes, I am looking for it - at least to rub Peter's nose in it! ))))

I have no time or wish to look into it all!

Take a look at QT Designer.

 
Dmitry Fedoseev:

Peter, where does it say that your GUI consists not of graphical objects, but is drawn on a canvas? Let's not be deceitful, it looks terrible.

...

As an artist, I couldn't get past those words.


Sure, far from IDEAL, but "awful"???

 
Igor Makanu:

Yes, I'm looking for one - I'd like to rub Peter's nose in it at the very least! ))))

But seriously, I would like to try some cross-platform GUI builder, maybe something to show, that I can look at?

No need to wipe)). And there's no need to look.

DLL to C-sharp. The VS environment already has a constructor. The language is almost similar to MQL. If not for Market, but for yourself, the easiest and most obvious option with modern look and feel.

And what Peter offers is the DOS-like GUI from the Turbo Vision series by Borland back in the early 90s.

 
Yuriy Asaulenko:

And what Peter offers is a DOS-type GUI from Borland's Turbo Vision series back in the early 90s.

It's a pretty good GUI. Maybe I'm too old, but I think it's pretty good.

The question is who could be interested in using it? How many of them are there?

 

Making your own GUI is not the problem.

The problem is finding a meaningful use for it which is needed by a LARGE number of users. So far, this is what everyone has difficulties with. If there is a normal task, there will be a GUI, and more than one...

Petr, what's the answer to the question WHY users need your product? I understand that you are fascinated by the process, I was going through it. But, why do users need it? Who is the target audience?
 
Georgiy Merts:

It's a pretty good GUI. Maybe I'm too old, but I think it's quite good.

The question is, who would be interested in using it? How many of them here?

Good or bad - it all depends on the specific tasks. Some years ago I designed a GUI terminal on Excel sheets - with buttons, fields, tables, real-time graphs and other attributes. I needed it specifically for manual trading. There were no problems with the build and interface.

Peter's GUI is presented as a solution to the problem and simplification of the construction. He conceived it and made it, and well done, of course, but there is no problem here for a long time, and there is not much to simplify.

 

111

Mm-hmm - beautiful. There's also an inconsistency (in style) with some of the other screenshots, which is highly questionable.

 
Реter Konow:

Here's an example of my connection interface:

It's all worked out here already.

I've had a look. It's a mess. The file is almost entirely occupied by the On_Gui_Event function, which is 600 lines long. Here is a fragment of it (the spelling and punctuation are preserved):

void On_Gui_Event(int Element, string value)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_2  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX4___Checkbox_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
//=====================================================================================================================
//WINDOW:   Spin edits | element: D_LIST  | name: D_LIST_2  |  Location: Window's Main Frame
//=====================================================================================================================
case D_LIST20___D_LIST_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
  }
}

It's just rubbish. The code naturally doesn't compile. None of the case constants are defined in the file. Switch is inside the case. Indents are made in such a way as if they wanted to confuse a poor user. There is a heap of just inefficient code like if(selected_option == "L_ITEM 1"){} In short, it's gloom and doom.

 
Vasiliy Sokolov:

I've had a look. It's a mess. The file is almost entirely occupied by On_Gui_Event function, which is 600 lines long. Here is a fragment of it (spelling and punctuation are preserved):

It's just rubbish. The code naturally doesn't compile. None of the case constants are defined in the file. Switch is inside the case. Indents are made in such a way as if they wanted to confuse a poor user. A lot of just inefficient code like if(selected_option == "L_ITEM 1"){} In short, it is gloom and doom.

Vasily, you made me laugh very much. )) Why should you try to compile everything you get your hands on?)

This is an example of a GUI connection file. Ask Oleg Papkov how it works. What kind of "inefficient code"? Normal code which is made to be as clear as possible.

Reason: