GUI tool kit

Windows specific questions.
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

GUI tool kit

Postby nastasa eodor » Apr 26, 2019 14:25

This is very first of begin but give you an idea about his power...
https://drive.google.com/file/d/1JfaQRv ... sp=sharing
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

Re: GUI tool kit

Postby nastasa eodor » Apr 29, 2019 8:55

the new one
https://drive.google.com/file/d/1b8nc82 ... sp=sharing
i build an google space only for that library so if you made changes or completions load here. if you load same name you can overwrite it.
user : freebasic.gui.toolkit@google.com
pass : freebasic2019

so enjoy and start codings guys
Last edited by nastasa eodor on Apr 29, 2019 16:46, edited 1 time in total.
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » Apr 29, 2019 10:47

And do not plan cross-platform?
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

Re: GUI tool kit

Postby nastasa eodor » Apr 29, 2019 16:47

Xusinboy Bekchanov wrote:And do not plan cross-platform?

well i leave that in your task...so start coding
Munair
Posts: 834
Joined: Oct 19, 2017 15:00
Location: 't Zand, NL
Contact:

Re: GUI tool kit

Postby Munair » Apr 30, 2019 5:37

nastasa eodor wrote:
Xusinboy Bekchanov wrote:And do not plan cross-platform?

well i leave that in your task...so start coding

Cross-platform GUI is a tremendous task. Every OS has its unique interface and to support them all would require a kind of component library. Taking a look at Lazarus' LCL will give you some idea. It is HUGE, also because it supports both leading GUIs for Linux/Unix, GTK and Qt.
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » Apr 30, 2019 5:59

Munair wrote:Cross-platform GUI is a tremendous task. Every OS has its unique interface and to support them all would require a kind of component library. Taking a look at Lazarus' LCL will give you some idea. It is HUGE, also because it supports both leading GUIs for Linux/Unix, GTK and Qt.

Now there is support for GTK2 and GTK3 in MyFbFramework, maybe we can add there QT with the key __USE_QT__.
marcov
Posts: 2754
Joined: Jun 16, 2005 9:45
Location: Eindhoven, NL
Contact:

Re: GUI tool kit

Postby marcov » Apr 30, 2019 8:57

This is from the mistral IDE thread, slightly updated to post it out of context, about the differences of just starting an IDE, and having a more framework based approach.

... before the IDE and designer is how you are going to organize the base of things:

- what will your base/root object?
- What will it do?
- Will you provide levels of inheritance below the first visual object? (e.g. for registering, generalized callback functionality or streaming, non visual components like datasets)
- will you use straight objects inheritance or multiple (C++ style or interfaces?)
- will your hookable events be
- - method pointers ?
- - objects with list of method pointers (multicast method pointers)
- - require subclassing
- - require declaring separate inner classes (Java style?)
- how to setup propagating events (within forms and between forms) and registering. How to safely allow each item to shut down properly.
- how to stream created forms and their settings.
- how to do internationalization
- how to allow users to have custom editors for fields in the IDE/designer.
- will you have non visible classes and forms ?
- databinding, e.g. how can your runtime define a dataset and bind it to a grid, e.g. by figuring out the table layout of a database dynamically.

More or less the choices that GTK's glib does. Not that I'm saying you should choose that (I like the Delphi/Lazarus school of thought more), but more that you must thinking about the alternatives you want to offer, so that it is a basis for the future. Some of these levels can be used for both IDE construction AND user generated apps.

Like with compilers that should be self compiling, RADs that don't use the model for generated applications itself are flawed by design :-) Apparently that class of applications can't be done with it :-)
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » Apr 30, 2019 10:09

I can answer for my point of view, other participants of the project may have other points of view. I will answer as I understand the questions.
- what will your base/root object?
My.Sys.Object as base/root object.
- What will it do?
Provides the basic functions and properties of all MyFbFramework objects.
- Will you provide levels of inheritance below the first visual object? (e.g. for registering, generalized callback functionality or streaming, non visual components like datasets)
Yes. For components like datasets there are My.Sys.ComponentModel.Component object.
- will you use straight objects inheritance or multiple (C++ style or interfaces?)
We use the possibilities that supports FreeBasic compiler. (Maybe in C++ style).
- will your hookable events be
- - method pointers ?
- - objects with list of method pointers (multicast method pointers)
- - require subclassing
- - require declaring separate inner classes (Java style?)
Single pointers are now used, but can be extended to multicast method pointers.
"- - require declaring separate inner classes (java style?)" don`t know java style
- how to setup propagating events (within forms and between forms) and registering. How to safely allow each item to shut down properly.
Now done as in VisualBasic. First declared as private subs, then at the discretion of the user can be made public. Then the procedure can be used between forms.
- how to stream created forms and their settings.
I don't understand.
- how to do internationalization
Now the library does not deal with localization. But next we are can add this convenience.
- how to allow users to have custom editors for fields in the IDE/designer.
With comments in each property declaration. Documenting properties is now implemented using comments at the beginning of the property declaration.
- will you have non visible classes and forms ?
What are they needed for?
- databinding, e.g. how can your runtime define a dataset and bind it to a grid, e.g. by figuring out the table layout of a database dynamically.
This is in the plans. As usual as others do.
marcov
Posts: 2754
Joined: Jun 16, 2005 9:45
Location: Eindhoven, NL
Contact:

Re: GUI tool kit

Postby marcov » Apr 30, 2019 17:07

Xusinboy Bekchanov wrote:I can answer for my point of view, other participants of the project may have other points of view. I will answer as I understand the questions.


Note it was more meant as a checklist for yourself, not as a interrogation :-)

But since you made the effort, I'll answer them.

- Will you provide levels of inheritance below the first visual object? (e.g. for registering, generalized callback functionality or streaming, non visual components like datasets)
Yes. For components like datasets there are My.Sys.ComponentModel.Component object.


Good.

- will your hookable events be
- - method pointers ?
- - objects with list of method pointers (multicast method pointers)
- - require subclassing
- - require declaring separate inner classes (Java style?)
Single pointers are now used, but can be extended to multicast method pointers.


To identify a method one usually needs a two pointer values (e.g. in a struct). One pointer is the address (of the method to call, the other one the SELF/THIS pointer. Some compilers try to hide this using trampolines but in fully OO frameworks this blows up binary size.

- how to setup propagating events (within forms and between forms) and registering. How to safely allow each item to shut down properly.
Now done as in VisualBasic. First declared as private subs, then at the discretion of the user can be made public. Then the procedure can be used between forms.


I mean more do you have an application object that is the owner of all forms? How do you handle application shutdown. (e.g. onclose of a form calls application.terminate)

- how to stream created forms and their settings.
I don't understand.


The designer changes settings of a designed form. How do you store and reload them (persistence)? Better IDEs store forms as data streams, other ones only generate code. The most basic ones generate code as a one way process (e.g. if you modify the code, it will be lost the next time you change something in the designer).

- how to allow users to have custom editors for fields in the IDE/designer.
With comments in each property declaration. Documenting properties is now implemented using comments at the beginning of the property declaration.


That is not what I meant. I mean if I have a new datatype say class XXXXX, e.g. a specialized dataset and I want to integrate a property editor in the designer, to pick fields from the database, or click together a SQL editor.

How do you arrange the mapping between field type of objects in the Designer and whatever is used to edit them?

This question is related to the streaming'/persisting of the designer, as both have two solutions, having it fully static, or pluggable.

- will you have non visible classes and forms ?
What are they needed for?


Examples:
- a database server connection. The database grid is visible, but the related queries and connection are non-visible (only through the grid).
- a http server. You can click the properties and assign handler events in the designer.
- a simple component that you drop on the form, and persists all settings to/from an ini file.

As your non-visible components grow and are shared between forms (e.g. one database connection per application, but all forms of the application that access the database share it), you want to move them out of the forms to something that is managed by the designer (so you can easily reference them in forms and set properties), but is not a visible form itself. Delphi/Lazarus call them datamodules.

- databinding, e.g. how can your runtime define a dataset and bind it to a grid, e.g. by figuring out the table layout of a database dynamically.
This is in the plans. As usual as others do.


Most don't try, and generate static code for the dataset. But what if a fields must be added. First to the database, and then the application must be updated.
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » May 01, 2019 1:40

marcov wrote:To identify a method one usually needs a two pointer values (e.g. in a struct). One pointer is the address (of the method to call, the other one the SELF/THIS pointer. Some compilers try to hide this using trampolines but in fully OO frameworks this blows up binary size.

Addresses and senders are available in this Tool kit. I don’t know trampolines.

marcov wrote:I mean more do you have an application object that is the owner of all forms? How do you handle application shutdown. (e.g. onclose of a form calls application.terminate)

Completion options are different:

Code: Select all

Enum ShutdownMode
    smAfterMainFormCloses
    smAfterAllFormsCloses
End Enum

Application.Terminate is also possible.

marcov wrote:The designer changes settings of a designed form. How do you store and reload them (persistence)? Better IDEs store forms as data streams, other ones only generate code. The most basic ones generate code as a one way process (e.g. if you modify the code, it will be lost the next time you change something in the designer).

VisualFBEditor works bilaterally as in VisualStudio. And it generates code, and builds a GUI based on the code.

marcov wrote:That is not what I meant. I mean if I have a new datatype say class XXXXX, e.g. a specialized dataset and I want to integrate a property editor in the designer, to pick fields from the database, or click together a SQL editor.

How do you arrange the mapping between field type of objects in the Designer and whatever is used to edit them?

This question is related to the streaming'/persisting of the designer, as both have two solutions, having it fully static, or pluggable.

I said the same. In the comments to the property, you must specify this class, which edits the property during design. IDE calls it when required.

marcov wrote:Examples:
- a database server connection. The database grid is visible, but the related queries and connection are non-visible (only through the grid).
- a http server. You can click the properties and assign handler events in the designer.
- a simple component that you drop on the form, and persists all settings to/from an ini file.

As your non-visible components grow and are shared between forms (e.g. one database connection per application, but all forms of the application that access the database share it), you want to move them out of the forms to something that is managed by the designer (so you can easily reference them in forms and set properties), but is not a visible form itself. Delphi/Lazarus call them datamodules.

We can do it.

marcov wrote:Most don't try, and generate static code for the dataset. But what if a fields must be added. First to the database, and then the application must be updated.

This thing is created by the component itself must do. He set all the necessary properties. He updates them himself.
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

Re: GUI tool kit

Postby nastasa eodor » May 01, 2019 5:25

well guys i am glad for you fire discution...well here is a part of answers
https://drive.google.com/file/d/1b8nc82 ... sp=sharing
enjoy and keep going, it will be a great tool even great than lazarus if you will put you effort togheter.
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » May 07, 2019 15:48

nastasa eodor wrote:the new one
https://drive.google.com/file/d/1b8nc82 ... sp=sharing
i build an google space only for that library so if you made changes or completions load here. if you load same name you can overwrite it.
user : freebasic.gui.toolkit@google.com
pass : freebasic2019

I added there what you asked
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

Re: GUI tool kit

Postby nastasa eodor » May 07, 2019 22:05

the new one
https://drive.google.com/file/d/1thgscO ... sp=sharing
pay attention become more complex...but you will deal it.
Xusinboy Bekchanov
Posts: 72
Joined: Jul 26, 2018 18:28

Re: GUI tool kit

Postby Xusinboy Bekchanov » May 08, 2019 8:34

nastasa eodor wrote:the new one
https://drive.google.com/file/d/1thgscO ... sp=sharing
pay attention become more complex...but you will deal it.

Good work.
nastasa eodor
Posts: 65
Joined: Dec 18, 2018 16:37
Location: Germany, Hessdorf
Contact:

Re: GUI tool kit

Postby nastasa eodor » May 09, 2019 7:50

Xusinboy Bekchanov wrote:
nastasa eodor wrote:the new one
https://drive.google.com/file/d/1thgscO ... sp=sharing
pay attention become more complex...but you will deal it.

Good work.

thanks pleae look on my new wrapper...

Return to “Windows”

Who is online

Users browsing this forum: No registered users and 1 guest