lvgl / lv_gui_builder

[WIP] Drag end drop GUI designer for LVGL
24 stars 7 forks source link

ongoing GUI builder effort in the community #7

Open hackrid opened 4 years ago

hackrid commented 4 years ago

I'm trying to find out what the current state of affairs is regarding a littlevgl gui designer.

here are some links regarding that. Please extend the list if you find something!

https://github.com/kaiakz/lv_gui_designer https://github.com/kaiakz/walv/tree/master https://forum.littlevgl.com/t/wysiwyg-editor-for-littlevgl/642 https://github.com/rohmer/LVGL_UI_Creator

kisvegabor commented 4 years ago

cc @AGlass0fMilk @kaiakz

rohmer commented 4 years ago

I am actively developing on the last one, I am also very happy to accept any pull requests. That being said I am likely 2 weeks from being complete?

kaiakz commented 4 years ago

I am the author of lv_gui_designer and walv. I paused the development of lv_gui_designer, and work on walv. I am now re-designing the interface of walv and rewriting it form jquery to vuejs. With the power of HTML5 and WASM, walv can do more than a designer.

rohmer commented 4 years ago

Also, there is a difference in use cases.

While mine is being designed to be very flexible and extensable, the main point of my doing it is to support another project I am working on. Essentially one of the requirements for that project is the ability to send UI designs over the wire. So the output of my UI designer is:

  1. All objects in a screen are fully serialized to JSON.
  2. There is a yet to be built optimization step that goes through and makes sure things like Fonts/Styles etc, are only created one time, and then referenced (Likely will end up doing this of ALL objects, so if there is a label that is repeated it is only in the JSON once in the data, and then recreated as many times as needed by the deserializer.
  3. Finally there is an abstract class that is the base for the output.
    • INPUT - Serialized JSON objects OUTPUT - C, C++, whatever
rohmer commented 4 years ago

One other thing, I am trying to write it in a way that does 2 things:

  1. The under the covers things are easy to follow, but if you are extending the Designer you DONT have to know everything. The interfaces are documented, and you just use them (Think STL library as an example)
  2. Everything is extendable, I would love once this gets 'Done" to see what the community contributes to it.
CURTLab commented 4 years ago

I'm currently working on a C++/Qt version based on this python example. It is far away from a complete GUI builder for LVGL and not well tested yet.

My question is should I upload my progess I have so far? If yes, where would be the best place.

Here is a screenshot of my current implementation: Capture

embeddedt commented 4 years ago

There is a lot of duplicated effort in regards to a GUI builder for LittlevGL. Perhaps it would be better for you to start with one of the existing implementations (I know that @rohmer has gotten pretty far) instead of remaking yet another one.

That being said, if you do want to upload what you have, you should probably just create a GitHub repository and post it there.

rohmer commented 4 years ago

Well, I am very biased, since I am doing the work. But I would definitely take a look at what I am working on.

I have architected it so that it is fairly open, and can be extended as needed. Also everything is done in LVGL, so it clearly is WYSIWYG

CURTLab commented 4 years ago

In my opinion Qt is a good choice for a GUI builder since it is very stable and tested, it brings all the necessary libraries in one framework, cross-platform and open-source. To use LVGL directly for the builder is a very good idea (Qt had the same) but since Qt can be build using one tool (qmake) I would give it a chance.

Thanks for the input.

rohmer commented 4 years ago

As can LVGL, it is build using CMake

On Monday, October 28, 2019, 04:31:30 PM EDT, CURTLab <notifications@github.com> wrote:  

In my opinion Qt is a good choice for a GUI builder since it is very stable and tested, it brings all the necessary libraries in one framework, cross-platform and open-source. To use LVGL directly for the builder is a very good idea (Qt had the same) but since Qt can be build using one tool (qmake) I would give it a chance.

Thanks for the input.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

AGlass0fMilk commented 4 years ago

In my opinion Qt is a good choice for a GUI builder since it is very stable and tested, it brings all the necessary libraries in one framework, cross-platform and open-source. To use LVGL directly for the builder is a very good idea (Qt had the same) but since Qt can be build using one tool (qmake) I would give it a chance.

Thanks for the input.

Hey @CURTLab, is that based on the branch initial-development in this repo? I'd be interested in working on the project with you in parallel. You can create a fork.

I've been too busy the past few months with other projects that don't involve embedded UI so unfortunately LVGL has fallen from the top of my todo list. I have a couple projects coming up that will have embedded UI though so I'd like to continue contributing.

I think the python builder in this repo is pretty close to a usable first rev. Still need to work out the intermediate format (JSON, XML, etc) and how to convert that to C/Python.

CURTLab commented 4 years ago

In my opinion Qt is a good choice for a GUI builder since it is very stable and tested, it brings all the necessary libraries in one framework, cross-platform and open-source. To use LVGL directly for the builder is a very good idea (Qt had the same) but since Qt can be build using one tool (qmake) I would give it a chance. Thanks for the input.

Hey @CURTLab, is that based on the branch initial-development in this repo? I'd be interested in working on the project with you in parallel. You can create a fork.

I've been too busy the past few months with other projects that don't involve embedded UI so unfortunately LVGL has fallen from the top of my todo list. I have a couple projects coming up that will have embedded UI though so I'd like to continue contributing.

I think the python builder in this repo is pretty close to a usable first rev. Still need to work out the intermediate format (JSON, XML, etc) and how to convert that to C/Python.

Yes it is based on the initial-development but I rewrote it using Qt/C++ and not python. I'm pretty far at the moment and support JSON saving and loading, exporting of a C-Project, copying of widgets and changing the style of single widgets. On the other hand, I programmed it to fit the needs of my LVGL project but if you want I can upload it to my github and you can have a look.

AGlass0fMilk commented 4 years ago

@CURTLab that would be great! I was thinking of going with Qt/C++ for more direct integration with LittlevGL. The introspection of python is probably not worth all that comes with maintaining a porting layer...

If you don’t mind open sourcing your version and putting it up in a repo I’d like to take a look and maybe help continue the effort

CURTLab commented 4 years ago

@AGlass0fMilk I pushed my local project to github. https://github.com/CURTLab/LVGLBuilder There are still lots of things to do but I would be very grateful to get some help and useful inputs.

AGlass0fMilk commented 4 years ago

@CURTLab Could you document some of the things that still need to get done? I'll take a deeper look at it when I have the chance but it looks fairly comprehensive.

Submit some issues against your repository to document what "things" still need to be done and I'll see if I can help out.

AGlass0fMilk commented 4 years ago

@CURTLab Also, could you document your build steps? Are you using any IDE?

CURTLab commented 4 years ago

@AGlass0fMilk I use the QtCreator for development. I wrote now some instructions for building and a basic wiki and todo list. I will extend it in the future as far as I can.

M-Bab commented 3 years ago

I did another look around and this is what I found (and what still seems to be alive):

embeddedt commented 3 years ago

This is technically not a community effort, but there is also Edgeline, the upcoming official editor from LVGL LLC. It's available as a beta here. Unfortunately we do not know the planned pricing model yet.

kisvegabor commented 3 years ago

EdgeLine now in beta but available for testing. See here.

As @embeddedt said, EdgeLine is (will be) LVGL's official UI editor. Although technically GUI Guider is independent of LVGL LLC we have a good relationship with NXP and talk frequently to adjust our goals.