Showing results forΒ 
Search instead forΒ 
Did you mean:Β 

X-CUBE-TOUCHGFX 4.18.0 is out

Senior III

4.18.0 was released 20th of October.

Release notes (which can be found here: is as follows:

  • New TouchGFX Designer Features:
    • New Widget: Video.
    • Added support for new .xml text database.
    • Removed TextEntries database from .touchgfx file.
    • Added support for XRGB.
    • Added full path of applications in recent applications list.
    • Added various animations to icons.
  • Bugfixes in TouchGFX Designer:
    • Fixed missing proxy dialog.
    • Fixed Gauge widget code generation error when placed in Custom Container Definition.
    • Fixed TouchGFX Designer reporting file changes on disk, when files were opened in other editors.
    • Fixed Analog Clock being able to resize.
    • Fixed typography selector in text manager not resizing correctly.
    • Fixed drop down controls sometimes autoselecting.
    • Improved performance of text manager.
    • Improved performance of color pickers.
    • Improved UX behaviour of alpha slider controls.
    • Fixed numeric property up/down controls not working after using mouse wheel.
    • Fixed tabbing between property controls.
    • Fixed dither algorithm selector items missing their names.
    • Fixed ScrollWheel widget erroneous state after deleting the custom container used for Selected Style template.
    • Fixed crash when trying to open recent application that has been deleted on disk.
  • New TouchGFX Core Features:
    • Texts and Languages (translations) are now stored in texts.xml instead of texts.xlsx (Excel format). Tool for exporting and importing translations have been added (touchgfx/framework/tools/textconvert/translation.rb).
    • New Widget: VideoWidget.
    • Added libjpeg libraries for Linux and Windows in 3rdparty/libjpeg (note that Red and Blue are swapped compared to official libjpeg).
    • The simulator can now handle display size not equal to framebuffer size. After call to touchgfx_generic_init() use HAL::setFrameBufferSize() to set the (larger) framebuffer size.
    • Added Drawable::center(), centerX(), centerY() to center a drawable inside its parent.
    • Added Drawable::expand() to make a Drawable the same size as its parent, optionally with a margin around the edge.
    • Added LCD::fillBuffer() to fill a color pattern in any memory buffer.
    • Added ScrollableContainer::getChildrenContainedArea().
    • Faster drawing of ARGB8888 images on 16bpp LCD's.
    • Application::getCurrentScreen() is now static for ease of use.
    • Updated Freetype 2.10.4 to 2.11.0 (used by the font convert utility).
    • Updated nlohmann json 3.9.1 to 3.10.2 (used by the image convert utility).
    • Updated Ruby 1.9.3 to 3.0.2 (used by the text convert utility).
    • ScrollableContainer::doScroll() is now public and ensures that scrolling is valid.
    • The position and size of the root Container in a Screen can now be set.
    • All Bitmap Painters can offset the bitmap, and can tile the bitmap (to help save memory).
  • Bugfixes in TouchGFX Core:
    • TextArea automatic wordwrapping (WideTextAction) did not take indentation into account.
    • ImageConvert would not allow writing to another drive or a full path.
    • TextProvider::initalize() with ... parameter could generate unexpected results.
    • All extern declarations in generated files now match the actual declarations.
    • Possible mess up of FRAME_BUFFER_WIDTH and FRAME_BUFFER_HEIGHT when performing display orientation change.
    • ProgressIndicators and Gauges could not be used with mixins with a timer.
    • PixelDataWidget::getSolidRect() now returns empty Rect when no pixel data buffer has been set.
    • PixelDataWidget::getPixelData() and PixelDataWidget::getBitmapFormat() added.
    • Made simulator applications more responsive to mouse and keyboard events.
    • ScrollableContainer::moveChildrenRelative() now updates values for getScrolledX() and getScrolledY(), but does not update scrollbars. However, moveChildrenRelative() is scheduled to be deprecated, please use doScroll() instead.
    • Fix incorrect use of relative coordinates in ScrollableContainer.
    • Fixed EasingEquations::elasticEaseIn(), EasingEquations::elasticEaseOut() and EasingEquations::elasticEaseInOut().
    • Some 8bpp painters would use the wrong color and in rare cases L8_RGB888 on 32bpp displays would be wrong.
    • LCD16bpp::blitCopy() did not support RGB888.
    • LCD16bpp::fillRect() and LCD16bpp::drawGlyph() now passes 24bit color instead of native 16bit color to DMA.
  • Deprecated TouchGFX Core Features:
    • TouchGFX will soon have support for RGB565 with alpha channel removed. ImageConvert will report this to help a move to e.g. ARGB8888.
    • SDL2 for Linux is no longer included in TouchGFX. Please install package libsdl2-dev and libsdl2-image-dev in your Linux environment.

I'm looking forward to give the new version a testdrive πŸ™‚

What do you think of the new version? Bugs? nice features? Let ST know in the comments

(I'm not affilitated with ST - This post was simply missing so I made it)

ST Employee

You stole my post, I was writing that just now πŸ˜‚.

Thank you for doing it, please everyone share your thoughts and feedback.


Senior II

Base view still not implemented?


How are you supposed to implement for example UI dialogs that are global and can occur in any view?

-> You must copy & paste that dialog handling code into 100+ views. What if you want to change this handling? You must issue the fix into 100+ views.

I don't understand why the BaseView / View inheritance is not at the top of your priority list, even though nearly all GUI projects need the use of global elements and you have acknowledged it as well 24 months ago.

In my TouchGFX use case external sensor can spawn dialogs within any view, and this is nightmare with this setup. 100% of the views must implement the same buttonup, buttondown, buttonselect handling for this global dialog. We also have a globally available main menu, which must be copy-pasted into 100+ views.


It is on the top of the priority list for TouchGFX 4.19. The top priority for 4.18 was the video widget. It has been something we have wished to do for a long time as you know but it requires more ressources than we had before.

I completely agree with you, don't mistake me. It is something that should have been added a long time ago it is one of the big downsides of the actual tool...

I believe an application with a 100+ views can be optimized. Are you using custom containers ? It stills requires to add user code every time but still saves some time.


Sorry - I was too impatient πŸ™‚

Questions about 4.18 started popping up and I couldn't find any place to discuss new features.

Keep up the good work!

Associate II

Trying to install TouchGFX Generator 4.18 into CubeMX.

After clicking on "Refresh" . . . latest available version is 4.17.

4.18 is not listed.


In STM32CubeMX make sure you first go to the "CHECK FOR UPDATES" window to look for and download the TouchGFX 4.18.0 package. Only then can you see it and install it from the "INSTALL/REMOVE" window.0693W00000FE1sCQAT.png 


>It is on the top of the priority list for TouchGFX 4.19

Great, thanks for the update. Any ETA for 4.19? 3 months? 6 months?

4.19 Might be too late for our current project, but maybe next time.

>I believe an application with a 100+ views can be optimized. Are you using custom containers ? 

Yes we do. We have split logic into Views, i.e. each view serve logically same purpose, even if they are visually the same.

For example we have a lot of scroll list Views for device settings. They all use the same ScrollList custom container, but for different purpose. This is to avoid one bloated View that serves multiple purposes by if-else logic.

I think it is better to have all different displayBrightness, keyClickSound, setLanguage, setStandbyTimer Views (which all use the same ScrollList custom container) than a monolith View that has 30 different settings menus integrated into it and logic is based on if-else cases.

-> Monolith View becomes very memory heavy, and more subject to SW regression. Change one setting and another one breaks. And monolith View has zero benefits to my knowledge. Even if we integrated all settings into one View, we would have 70+ views to deal with.



Touchgfx 4.18 documentation, in Translations chapter:

To export the texts, the developer uses the new tool, which is located in 


The tool can be run in the TouchGFX Environment.

I couldn't find the environment in TouchGFX designer. Is there a command window to run translations.rb?

How could I run this command from windows?



To find the environment type "TouchGFX 4.18.0 Environment" in the search bar of your computer.

Otherwise it should be under Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\STMicroelectronics folder

You can also open it by opening msys.bat in the C:\TouchGFX\4.18.0\env\MinGW\msys\1.0 folder