Call for Help - UI Designer

So the LVGL UI Creator is coming along really well, and I do believe this will end up being a world class UI designer.

My intent for this project was for it to be for the community, not just for me. That being said, I have about 1000 features I want to put into it eventually, and only two hand for typing. So if anyone is interested in getting involved, I would love it.

The github ATM is:

If I get some interest in helping I will do a few things to get you started:

  1. Have a discussion with you on the features I would like to see
  2. Hear if you have any you would like to work on
  3. Get some actual dev documentation produced so its not just all in my head (I need to do this regardless, but what dev worth a salt prioritizes docs :wink: )

Also… Community:
What are your wishes for a UI designer? What would you like to see in it?


1 Like

One note: it’s probably worthwhile to get this building on a Unix (or Unix-like) system first, because not everyone uses Windows and Visual Studio.

1 Like

Well those people are losers! (Kidding)

Actually, I have written the code to be portable, just need to create make files and test.

@rohmer I would like to help, but first i would like to see (maybe in a video) what do you have so far. At work I’m using pyside2 (Qt based) for some applications to ease my development but I’m not an expert on UI design. Maybe the 1000 features can be classified according to the difficulty of implementation?

@embeddedt Maybe considering using Qt is worth it.

Ok, well a lot of the features are essentially continuation of others.

For example, every widget needs the following items:

  1. Serialization (To and From JSON). This is easy, just a lot of typing.
  2. Object specific properties, like for example an Arc:

The good news is:

  • A lot of the controls are written. For the above example, that is a CollapsableWindow, which has a container. So you just put your objects in that and everything is taken care of.
  • All of the property types (int, string, bool, etc) are also taken care of. You just have to add a couple of items to the user data (Like JSON path of the property)

So it is just a lot of typing and making things look pretty and testing.

For example: The bar code for properties:

    lv_obj_t* cont = lv_cont_create(pw->ObjectPropWin()->GetWindow(), nullptr);
    lv_cont_set_layout(cont, LV_LAYOUT_PRETTY);
    lv_cont_set_fit(cont, LV_FIT_FILL);

    rngStart= PropertyControls::createNumericEntry(pw, cont, "Range Min", "/bar/range/min");
    rngEnd = PropertyControls::createNumericEntry(pw, cont, "Range Max", "/bar/range/max");
    lv_obj_t* props2 = lv_cont_create(cont, nullptr);
    lv_cont_set_layout(props2, LV_LAYOUT_PRETTY);
    lv_obj_set_size(props2, 370, 100);
    sym = PropertyControls::createCBEntry(pw, props2, "Bar Symmetrical", "/bar/sym");
    animTime = PropertyControls::createNumericEntry(pw, props2, "Animation Time", "/bar/animT");
    PropertyControls::createStyleEntry(pw, cont, "Style BG", "/bar/styleBG");
    PropertyControls::createStyleEntry(pw, cont, "Style Indic", "/bar/styleInd");

A few fun features (Ones I am looking forward to doing):

  1. JSON Optimization
    A. Currently the json stores all of the styles for example for each object.
    B. The optimization step needs to find all of the styles and make a map, so that each object just does a lookup on the modified styles, as opposed to having copies. This is fairly easy, as I currently have a std::map of styles that are in the screen.
    C. Optimization should also remove any values that are defaults.
  2. JSON to C
    A. This one will be fun too. If the optimization step is complete, all that needs to be done is essentially write out code snippets from the json.
    B. This will be interesting as it will provide a lot of opportunity for optimization of code (For size and or speed)
  3. JSON to C++
    A. Same as A, with classes and the stl library

It does look very nice :slight_smile:

About serialization, are you doing it by hand? Have you considered protocol buffers or something simmilar?

Nope, not doing them by hand. Using a library for it. nlohmann::json

For serialization across the network I intend on using msgpack (Which is supported by the lib)

I would like to help but i don’t have installed Visual Studio, have you considered using another framework?

Not esp, because it’s free

I do need to setup makefiles for other build systems though

Ill spend some time now getting a set of Makefiles written

1 Like

Ok, check the Dev branch.

CMake supported. I have an issue in the FileBrowser widget. Need to get it working for Linux (It works for Windows, but in linux I have the wrong includes)