Jump to content

Recommended Posts

We just released version 0.11 of the uGFX-Studio. This release doesn't bring any bug fixes but just two new widgets: The TextEdit widget and the virtual on-screen keyboard widget.


### Changes after 0.10 ###
FEATURE: Added virtual on-screen keyboard widget
FEATURE: Added TextEdit widget

Please leave all feature requests, bug reports, feedback and so on below.

~ Tectu

Share this post


Link to post
Share on other sites

Thank you for bringing this to our attention. We fixed this problem and the fix will be part of version 0.12 which will be released in a couple of days.

As of by now, the release will contain 10 bug fixes and 3 new features.

~ Tectu

Share this post


Link to post
Share on other sites

Version 0.12 has just been released. This is the changelog:


### Changes after 0.11 ###
FIX: Fixing issue where the wrong background color was used
FIX: Fixing crash when newly created background is being deleted in BackgroundManager
FIX: Fixing issue with project loading where GWIN default settings weren't restored properly
CHANGE: Improving the way that widget handles are named when copying an item
FIX: Using color with high contrast compared to background color when adding new items in background designer
FIX: Fixing usage of wrong color in slider and progressbar widgets
FIX: Improving renderings (making them more accurate)
FEATURE: Added vertical orientation for progressbar widget
FEATURE: Added option to use physical hardware keyboard to settigns (GINPUT tab)
FEATURE: Added 'Enabled' option to widgets
FIX: Fixed issue where items that were smaller than their default sizes were not placed at the correct location when near the edge
CHANGE: Improving New-Project Wizard
CHANGE: Select the new item when duplicating an existing item
CHANGE: Remove 'Label Attribute' feature as usage of that feature is discouraged. The proper way is to use two separate labels.

We have added the "enabled" option for widgets. When loading an existing project that has been created with a studio version less that 0.12 you'll have to manually enable all widgets as they are disabled by default when loading from an old project.

~ Tectu

Share this post


Link to post
Share on other sites

added an imagebox (with image) (with vs 0.12)

now i get this error

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c||In function 'createPageStartPage':|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c|194|warning: implicit declaration of function 'gwinImageCreate' [-Wimplicit-function-declaration]|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c|194|warning: assignment makes pointer from integer without a cast [enabled by default]|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c|195|warning: implicit declaration of function 'gwinImageOpenFile' [-Wimplicit-function-declaration]|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c|205|warning: assignment makes pointer from integer without a cast [enabled by default]|

bin\Debug\obj\c_drv_drv_\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.o||In function `createPageStartPage':|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c:194||undefined reference to `gwinImageCreate'|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c:195||undefined reference to `gwinImageOpenFile'|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c:205||undefined reference to `gwinImageCreate'|

c:\EmBitz\OVEN_STM32F103\PAGE_GUI2\oven_f103\output\gui.c:206||undefined reference to `gwinImageOpenFile'|

Share this post


Link to post
Share on other sites

Hmm, interesting. We can't reproduce that problem on our side. Can you please upload a ZIP of your µGFX-Studio project including the generated code and the image(s) that you are using so we can give it a try?

~ Tectu

Share this post


Link to post
Share on other sites

We can't reproduce the problem. We verified the code that was generated by the studio (the one you attached) and everything seems right there.

Please check the following things:

  • Execute make clean whenever your configuration file changes
  • Make sure that you copied the generated configuration file too, not just the source files

~ Tectu

Share this post


Link to post
Share on other sites

the problem was on the name of the image files, i changed the names (leaved blank & -)and now i can compile (i'm on windows with embitz)

a small problem, if outside the program i change the image (resize), the program show me the new image/size, but the button remain with the old size, i must change the 'custom draw' and size become correct

is possible for button widget add property that specify position of the text inside the button?

in my case i want show image, but text must be on the bottom of image, now stay in the center of image, also i can't specify the foreground/background

in the widgetstyle designer, can be very interesting if i can add new style from an existent style, so i can modify only the little things that i need without reenter all the parameters, this speed up much more creation of styles

on the generated code for the label i not see the setup for the 'enabled' parameter

another question, for what is intended the 'custom parameter' ? arbitrary data to pass for event handler?

another thing, if i press 'generate' (before i clean all the files on the output directory), sometimes happen that is writed only 2 files (main_sample.c, romfs_files.h) and 1 directory (rsc, with all the resource files), all the other files not, i must press another time 'generate' and all the files are generated.

i try now on my board (custom with ili9341 display), and i can see text of labels, but not the images of buttons, if i do the preview inside the studio i see all correctly..

before i use buttons as simple button and all was ok

inside the .zip file there are images of studio, of display output & the studio project

thanks

output.zip

Share this post


Link to post
Share on other sites

1 problem solved, images.

1 have 2 files (rom_files.h)

1 in the root of the project to load audio data

1 in the output directory of the project (is in subdir inside the project) wich contains binary datas of images

i must merge the 2nd with the first and all is ok, no confort (i must remember everytime when i do update on the gui), but ok

1 tips

if i have 2 buttons (on different pages) that use the same image (ex: logout.gif)

after generate the romfiles.h contains 2 include at the same image (src/logout.gif) instead of 1

Share this post


Link to post
Share on other sites
the problem was on the name of the image files, i changed the names (leaved blank & -)and now i can compile (i'm on windows with embitz)

Hmm, v0.12 is meant to replace dashes and spaces with underscores. I'll verify that.

a small problem, if outside the program i change the image (resize), the program show me the new image/size, but the button remain with the old size, i must change the 'custom draw' and size become correct

We'll see what we can do about that. The problem is that we don't get notified about changes to the file when you change it outside of the studio. This means that we either have to check periodically or each time the studio gets the focus. We'll put that on the ToDo list!

is possible for button widget add property that specify position of the text inside the button?

in my case i want show image, but text must be on the bottom of image, now stay in the center of image, also i can't specify the foreground/background

For this reason we implemented the custom rendering interface. This way you can render the button how ever you like it to be. Some more information can be found here: http://wiki.ugfx.org/index.php?title=Cr ... ng_routine

Let us know when you have any questions regarding custom rendering functions (new thread please).

Also note that the studio currently isn't able to handle custom rendering functions. I guess we have to put that on the ToDo list as well ;)

in the widgetstyle designer, can be very interesting if i can add new style from an existent style, so i can modify only the little things that i need without reenter all the parameters, this speed up much more creation of styles

Duplicating WidgetStyles - it's on the ToDo list!

on the generated code for the label i not see the setup for the 'enabled' parameter

Just put that on the ToDo list as well :)

another question, for what is intended the 'custom parameter' ? arbitrary data to pass for event handler?

The custom parameter is the parameter that gets passed to the rendering function. It's just a void pointer that who-ever implements the rendering function can use for what ever purpose. For the built-in rendering functions we use it to pass the image for those widget rendering functions that use an image.

However, it doesn't make much sense to expose this to the user in the studio unless he has the ability to define custom rendering functions. That parameter has been added to the studio at the very beginning from back where it was still a very basic tool that didn't assemble code itself. Since even the first public alpha release the studio is able to use that parameter internally to pass the image around when needed. We'll remove that parameter for the future release to avoid confusion.

another thing, if i press 'generate' (before i clean all the files on the output directory), sometimes happen that is writed only 2 files (main_sample.c, romfs_files.h) and 1 directory (rsc, with all the resource files), all the other files not, i must press another time 'generate' and all the files are generated.

That's interesting. We'll try to reproduce that. Did you already figure out how that behavior can be reproduced?

i must merge the 2nd with the first and all is ok, no confort (i must remember everytime when i do update on the gui), but ok

We will add the option to add custom entries to the generated ROMFS file in the settings tab for the next release. It's on the ToDo list now!

if i have 2 buttons (on different pages) that use the same image (ex: logout.gif)

after generate the romfiles.h contains 2 include at the same image (src/logout.gif) instead of 1

That's definitely not the intended behavior. We'll fix that too!

Thank you for all your ideas and bug reports. We appreciate it a lot.

~ Tectu

Share this post


Link to post
Share on other sites

about the problem of 'generate', seems random, i not have investigated so much, but my impression is that some boolean flag remain not initialized or cleaned (inside the code of the studio) in some condition, and part of the files are generated.

i say this becouse i see happen if i press continously generate , 1st 'generate' make only 2 files, the 2nd 'generate' make all files, 3rd 2 files, 4th all files, but not ever... my 2 cent

i give lot of work to the uGFX team :)

Share this post


Link to post
Share on other sites
on the generated code for the label i not see the setup for the 'enabled' parameter

Can you be a bit more specific on this one? I just gave it a look and it seems like everything is like it is supposed to be.

Note that in the generated code gwinDisable() is only called when the 'Enabled' checkbox in the widget editor is not checked as widgets are enabled by default.

~ Tectu

Share this post


Link to post
Share on other sites
on the generated code for the label i not see the setup for the 'enabled' parameter

Can you be a bit more specific on this one? I just gave it a look and it seems like everything is like it is supposed to be.

Note that in the generated code gwinDisable() is only called when the 'Enabled' checkbox in the widget editor is not checked as widgets are enabled by default.

~ Tectu

i look too quick the generated code, and i not see the gwinDisable(), now i understand how the label are en/disabled :roll: my question was about this.

Share this post


Link to post
Share on other sites

I have tried to build sample app with Studio 0.12.

0. Same problem with dashes in image filenames, solved by renaming those files.

But:

1. I have created window 800x600, placed container with 800x600, and see little distance (~5px) between window and container bottom and right sides. May be it is effect of using 19200x1200 screen and 125% DPI settings in Display section of Control Panel (Windows 8.1)?

2. Fonts in Studio and preview differs also. I can see all label text in Studio, but in preview it have cutted right side and looks different too ('record' button, for example). What should I do to get same look in both places? I have not tried it in hardware yet because I need to make cyrillic fonts.. IMHO, ability to use custom fonts and its right rendering in preview is 'must have' feature for Studio, or we will have to change coordinates and sizes of all labels in code in endless tries to get them placed right way.

3. I have 'raised' (in Studio) labels placed over buttons (and progressbars in 'mic' button too), but If I click to button in preview, they disappears. How can I make them always raised?

4. May be it will be useful also add to Studio possibility to make just a simple line?

Thank you in advance!

p.s. Sorry for big screenshots, I do not know how to make it to be appeared as previews in forum.

screenshot1.thumb.png.c7f678eec531c57638

screenshot2.thumb.png.c19f249055b31ea958

Share this post


Link to post
Share on other sites

First of all: Thank you for providing those screenshots - very helpful!

0. Same problem with dashes in image filenames, solved by renaming those files.

Hmm, can you be a bit more specific? By 'same problem' do you mean, that you can't compile the generated code because it uses dashes in the file array generated by file2c? I thought we have fixed this issue.

1. I have created window 800x600, placed container with 800x600, and see little distance (~5px) between window and container bottom and right sides. May be it is effect of using 19200x1200 screen and 125% DPI settings in Display section of Control Panel (Windows 8.1)?

That's a known issue - it was just so low priority that we couldn't bother so far. We will try to fix this for the 0.13 release.

Important note: You don't have to place a container that fills the entire screen yourself. The studio already generates that for you! A display page is essentially nothing else than a container that fills the entire display area. You can take a look at the generated code and see yourself. Adding a display-filling container yourself in the studio doesn't only add overhead to the actual program but also makes it harder to design the GUI itself as you can't select the background of the display page to change backgrounds.

2. Fonts in Studio and preview differs also. I can see all label text in Studio, but in preview it have cutted right side and looks different too ('record' button, for example). What should I do to get same look in both places? I have not tried it in hardware yet because I need to make cyrillic fonts.. IMHO, ability to use custom fonts and its right rendering in preview is 'must have' feature for Studio, or we will have to change coordinates and sizes of all labels in code in endless tries to get them placed right way.

Getting the same look in the display scene as in the actual application is a very difficult task - especially with fonts. The Qt font rendering engine works very differently from the font engine in uGFX. That is the whole reason why we provide the preview feature. The preview feature builds a native uGFX application that uses the actual uGFX code. The result you can see in the preview window will be 1:1 exactly the same as on your actual hardware.

Anyway, we see that this is an issue and we will try to fix this for the 0.13 release. If anything, we can just scale the fonts down in the display scene inside the studio. After all the important thing are the dimensions of the text as you mentioned yourself.

3. I have 'raised' (in Studio) labels placed over buttons (and progressbars in 'mic' button too), but If I click to button in preview, they disappears. How can I make them always raised?

That's not an issue with the code studio and actually expected behavior of the uGFX library itself. Once you click a button it becomes the focused, active element and therefore gets raised to the foreground. Having widgets inside or on top of other widgets is not intended use.

Anyway, if you open a dedicated thread for this issue in the appropriate forum section we will come back to this. Maybe there is a simple work around for this to get it working the way you want to.

4. May be it will be useful also add to Studio possibility to make just a simple line?

Thanks for the suggestion. We will add the possibility to draw lines for the 0.13 release. As for now, you can simply draw a rectangular with 1px width.

Thank you for your feedback. We appreciate it a lot.

~ Tectu

Share this post


Link to post
Share on other sites

Thanks!

0. Yes, for example, errors in generated gui.c from preview:

gdispImage button_usb_green;
gdispImage button-cross; // <--- error is here

In this case I tried to use button-cross.gif as button image.

1. Ok, I got it. I have added container just because I cannot be sure about window size in pixels because window width is 804 or 805 pixels in my case, not 800 :)

2. If width and height of text rendered in Studio will be equal to same sizes in preview - it will solve 90% of this problem.

3. OK, i will. I must to have labels and progressbars inside (or over) button for my task.

4. How can I do it with Studio?

When Studio 0.13 can be expected? :)

Share this post


Link to post
Share on other sites

As ugfx does not support overlapping child windows perhaps the studio should raise a warning if controls do overlap.

Obviously this would need to be just a warning as the code could have multiple controls in the same position but only one visible at run-time at any point in time.

Share this post


Link to post
Share on other sites
0. Yes, for example, errors in generated gui.c from preview:

gdispImage button_usb_green;
gdispImage button-cross; // <--- error is here

In this case I tried to use button-cross.gif as button image.

We'll fix that. That will be in 0.13 for sure.

4. How can I do it with Studio?

Use the Background Designerthat you can find in the Tools menu. Once you created a background, you can assign it by clicking on an empty area on the display page and then selecting the background in the display page editor (upper right corner).

When Studio 0.13 can be expected? :)

Currently it looks bad. We are very busy and it seems that people are not really interested into the studio. Therefore, we have to focus on other things first. If everything goes according to play we can release 0.13 that will only contain bug fixes within the week. Otherwise it might take up to a month.

~ Tectu

Share this post


Link to post
Share on other sites

Fresh bugs/feature requests! :)

1. I have one container with size of window (filled with items). When I tried to resize it, so I can drag all items to window, I have changed size of container and all program was frozen. I suspect this is because coordinates of children items becomes bigger than parent width (or height).

I have solved this problem by direct .ugfx file editing.

2. Another one possibly useful feature: copy all item properties (font sizes, for example) when duplicating via Ctrl-D.

3. Background manager: create rectangle and text label on top of rectangle. Close background manager. Open it again. No text label!

Close it again. Open. Wow! Text label re-appeared! Close, open. No label. Close, open. We can see text!

It appears and disappears at each 'close/open' of background manager.

Question: I have main interface with several buttons, most of them should allow user to tune some parameters (or show some information) when clicked. How can I design frame windows for such actions?

Share this post


Link to post
Share on other sites
Fresh bugs/feature requests! :)

Nice, we love those! :D

1. I have one container with size of window (filled with items). When I tried to resize it, so I can drag all items to window, I have changed size of container and all program was frozen. I suspect this is because coordinates of children items becomes bigger than parent width (or height).

I have solved this problem by direct .ugfx file editing.

We'll look into that. Definitely not intended behavior.

However, just in general, note that you are not supposed to manually place a container that spans the entire display area. A display page is already a container itself and the uGFX-Studio will generate a parent container that has the size of the display automatically (as mentioned in an earlier post). Manually adding another container with the same dimensions at the same location can have weird side effects.

2. Another one possibly useful feature: copy all item properties (font sizes, for example) when duplicating via Ctrl-D.

Well, that's not a new feature but a bug instead! All properties should be copied when duplicating an item. It seems like we forgot to copy the font properties. We'll fix that for 0.13!

3. Background manager: create rectangle and text label on top of rectangle. Close background manager. Open it again. No text label!

Close it again. Open. Wow! Text label re-appeared! Close, open. No label. Close, open. We can see text!

It appears and disappears at each 'close/open' of background manager.

We'll investigate and fix that one too.

Question: I have main interface with several buttons, most of them should allow user to tune some parameters (or show some information) when clicked. How can I design frame windows for such actions?

The uGFX library provides you with two main (or proper) ways of doing this: Either you use a separate display page for settings or you use the frame widget.

Making a dedicated display page for your settings is pretty straight forward. Just right-click on an existing display page at the left side in the studio and click "Add". The code generated by the uGFX-Studio will have a function named guiShowPage() that will take the index of the display page that you want to show as parameter. Therefore, all you have to do is calling guiShowPage() once your "Show Settings" button has been pressed.

When you want to use a real dialog box, use the frame widget. You can find a corresponding demo under /demos/modules/gwin/frame. However, sadly the uGFX-Studio currently doesn't allow to create/add frame widgets.

We should probably add a designer that allows to design dialog boxes. But that's a lot of work and most likely won't come before 0.14.

Thanks for your bug reports. We appreciate them. We are looking forward to release the uGFX-Studio v0.13 before the 15th of Feburary. We are sadly on a very tight schedule the next two weeks.

~ Tectu

Share this post


Link to post
Share on other sites
2. Another one possibly useful feature: copy all item properties (font sizes, for example) when duplicating via Ctrl-D.

Well, that's not a new feature but a bug instead! All properties should be copied when duplicating an item. It seems like we forgot to copy the font properties. We'll fix that for 0.13!

Just fixed that one :)

Really looking forward to the 0.13 release.

~ Tectu

Share this post


Link to post
Share on other sites

I'm glad to know that my bugreports are useful :)

1. Yes, I know that this is not best to place container with total size of window, but I had it placed before you told me first time.

Another way was to change parent in properties, but for me it was better to use search-and-replace in .ugfx file. So, now when I know it, it is not problem for me anymore :)

2. Glad to know this. Waiting for 0.13 :)

About frame widget: I have to complete project as soon as possible, and I was switched to uFGX already (to support making your product better, because of my endless questions, bugreports and feature requests:)), so I cannot wait frames to be implemented into Studio (it has no tabset and graph also).

So I will use display pages as frame windows.

I had also solved problem with absence of widget for digits change (textedit with up/down arrows). I had several approaches, to develop widget by myself, or to use screen keyboard, but I have encoder in my project, so I will use it to change values (while user will select field by tapping on it).

Waiting for 0.13 :)

Share this post


Link to post
Share on other sites
About frame widget: I have to complete project as soon as possible, and I was switched to uFGX already (to support making your product better, because of my endless questions, bugreports and feature requests:)), so I cannot wait frames to be implemented into Studio (it has no tabset and graph also).

So I will use display pages as frame windows.

Of course you could still use the frame widget. You'd just have to write the code yourself :)

Note that the uGFX-Studio is nothing else but a glorified code generator. The studio doesn't do anything that you couldn't write yourself.

If you still want to use the frame widget, there's a full demo, documentation and the API reference available just as for any other widget.

I had also solved problem with absence of widget for digits change (textedit with up/down arrows). I had several approaches, to develop widget by myself, or to use screen keyboard, but I have encoder in my project, so I will use it to change values (while user will select field by tapping on it).

If you developed a new widget (or improved an existing one) it would be nice if you could share it with us (in a new thread on this forum).

Waiting for 0.13

We'll make sure that it's there by the 15th of February. It should be possible for us to implement any small feature request (if you have any) until then.

One of the other things that we just fixed (and therefore will be part of 0.13) is proper unicode support. Right now you can type non-english characters into the input fields but the generated code will just contain a lot of ????? as you might have noticed. Now the generated files will contain the proper unicode characters.

~ Tectu

Share this post


Link to post
Share on other sites

About new widget: no widget was developed, I just changing values in text labels according to encoder (external hardware part) moves.

Yes, I know that Studio is just a code generator. But I like it. I want to help to make it better!

My problem now is a fact that I cannot use Studio for GUI designing (but as for me, uGFX Studio is most promising product, I can see that you want to make it better and responding to feedback :roll: ).

Now I can just design display page, move it into firmware (changing fontnames, adding my code changes. each time!!!), compile it, download into hardware and see that I should change coordinates and width of my text label, then repeat this again and again and again.. measuring pixels by ruler is VERY boring process. And I asking myself, why I trying to use Studio if I can change coordinates in firmware code? OK, Studio made example for me, now I should change all things by myself in code, and forget about Studio!

I think this is wrong! If I use software that can do 95% or work, why not do 5% more and make 'GUI design and support software' from just 'GUI demo maker'?

So, first step to make Studio excellent for me is allowing to make GUI without downloading into hardware, and get results in preview. I need my fonts in preview (very important), and I need possibility to include my own code changes into preview (not so important, but important too). I using my own converted fonts and cyrillic chars. For example, I want to use big (really big!) digits, but have no way to do this.

To make it possible, maybe you can add possibility to define own fonts for Studio users and use them in preview?

May be, like this:

- user can define (in settings tab) .c or .h filename with converted fonts inside

- Studio will never rewrite this file

- Studio will scan this file for font names

- Studio will add font names to font selection dropdown boxes

- Studio will include this file (if exists) in generated code and use font names from this file

This will allow me to see my GUI in preview without downloading into hardware.

What about code changes, you can add "// USERCODE START [user code] // USERCODE END" section at end of each createPage() function and just move all what you found there into new generated files.

This is relatively minor changes, but it will allow to use Studio for GUI designing in most complicated cases!

As I told before, I really think that GUI design software should make life easier, and if I cannot use my fonts - it is something like if Studio would not able to change color of text. Not so big problem, but makes using impossible!

I need no 'bells and whistles' like font converter included into Studio, custom font rendering engine in designer part, detecting user code changes by neural network, or something like this. But as programmer too, I hope that my variant of features will take not so much time, but will allow to really use Studio in work.

So, for now my priorities to features:

1. possibility to include custom (converted) fonts in preview

2. possibility to leave some code intact in preview

3. including graph and tabset widgets into Studio

I really believe that implementing at least 1 and 2 will allow Studio to become really powerful and useful not just for makeing example interfaces, but for using it to design complete GUI and even use it later if I will decide to change or add something to existing firmware.

Sorry for much text. :)

p.s.. Other small feature request: possibility to make text label's transparent background :)

p.p.s. Anyway, tomorrow I will write script that will get files generated by Studio, change fontnames, add user code and save result into firmware folder, because I cannot wait for two weeks, I should develop interface by end of this week :(

But such features in Studio still important!

Should I share this script in forum?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...