Gambas 3.8.0

What's new

Here are the main changes in this new version:

  • The text editor has been entirely rewritten in Gambas. It is located in a new component named gb.form.editor. That way, GTK+ programs now have a text editor with syntax highlighting for free.

  • Support for QT5. The new gb.qt5, gb.qt5.opengl and gb.qt5.webkit components have the same interface as the QT4 components.

  • Automatic support for KDE & Unity tray icon DBus protocols. Just use the TrayIcon class as before, and the new protocol will be automatically used if a DBus system tray icon is detected. Otherwise, the old X11 protocol is used.

  • Important bug fixes in UTF-8 string handling.

  • Searching inside native arrays is faster.

  • The SQLite3 driver has been rewritten and is faster now.

  • And of course tons of bug fixes...

Changelog

CONFIGURATION

  • Do not use the AC_LIBLTDL_CONVENIENCE macro. It is deprecated and now useless.

DEVELOPMENT ENVIRONMENT

Source editor

  • New editor based on gb.form.editor.

  • A new button to toggle wrap word mode in code editor and text editor.

  • Code prettyfier should not move the cursor anymore.

  • Fix completion with language keywords.

  • Use IDE breakpoint icon for displaying breakpoints in editor.

Text editor

  • New editor based on gb.form.editor.

  • A new button to toggle wrap word mode in code editor and text editor.

  • Do automatic completion while typing strings.

  • Compression correctly marks the file as modified.

  • Fix text pasting.

Database editor

  • Add a "Remember database structure" checkbox in the connection properties dialog. The IDE will dump the database structure into a template file only if this checkbox is checked. It won't do that all the time anymore.

  • The import CSV dialog is now a wizard.

  • Removing a connection now removes the template file too.

  • The connection properties dialog now correctly uses the provided password to list the available databases.

Form editor

  • Fix the edition of DataComboView.Columns property and any other "field" property that takes its table in another property of the same object.

  • Form property sheet: Don't use theme color for highlighting.

  • Replace a possible error while filling the toolbox by a warning message.

  • Use the "next" icon for the buttons that switch between the class file and the form file.

Image editor

  • Add rectangle roundness option.

  • Don't crash when drawing text if a specific character returns no outline. Just draw nothing.

  • Don't load the image twice.

  • Hide options that are useless to the current tool.

  • Text is now really centered.

  • Text selection does not anchor to itself anymore.

  • Use larger selection dash pattern, it is easier to see.

  • When selecting a rectangle, a line or an ellipse, the width and height displayed in the top right information label are now accurate.

Components

  • Add gb.gui.trayicon description.

  • Add compression driver components descriptions.

  • Component chooser: Correctly uncheck component dependencies.

  • Component chooser: New look. Don't use the round borders anymore.

  • Support for QT5 component.

Debugger

  • Add a close button to the debug panel.

  • Don't show space dots in the console.

  • Hitting Escape while editing a variable does not hide the debugger panel anymore.

  • Put some red inside the breakpoint icon.

  • The output console now uses overwrite editor mode, and always displays its cursor.

Welcome dialog

  • Add an Installed softwares button in the welcome dialog.

  • Do not open the welcome dialog if a project directory has been specified in program arguments.

System information

  • Add the environment variables to the system information.

  • Search for QT5 core library.

Farm client

  • Always center the farm client window.

  • Create the example directory if it does not exist when installing a non-example software having the example tag.

  • Add new categories.

  • Cleaner way of drawing software information.

  • Load the SoftwareBox information only when it is actually displayed.

  • Paint the software names the same way everywhere.

  • Software URL works correctly now.

  • The software description is not incorrectly clipped anymore.

  • Prevent a possible crash in the farm client request manager.

Option dialog

  • An option to define if wrap word mode is enabled by default.

  • Current highlighting theme is now part of the configuration.

  • Make the option dialog smaller.

  • Put the fonts options in their own panel.

Project properties dialog

  • Don't erase component file if you open the project properties dialog without selecting the information tab.

  • Do not display the libraries in the component list anymore.

  • Unchecking a component does not uncheck dependencies that were explicitly checked anymore.

  • The button to show deprecated components is now embedded into the component chooser.

Automatic completion

  • Do automatic completion while typing strings.

  • Hide the help panel in automatic completion when we are not editing source code.

Translations

  • Improved some strings for Dutch translation

  • Update French translation.

  • Updated the Brazilian Portuguese translation.

Help browser

  • Make off-line help downloader more robust.

  • Take gb.qt5 into account in the help system.

  • Take the gb.gui.qt.* components into account in the help system.

Profiler

  • Newly opened profiler windows should have their columns correctly adjusted now.

  • Don't enable procedure collapse.

  • Add a new column for the average self time.

Open project dialog

  • Don't draw the dialog buttons on top of the project view.

  • Fix buttons layout.

Packager wizard

  • When creating a package from a component project, warn the user if the project name is not prefixed by a vendor name and a dot, and stop the process.

  • Fix output window.

  • Fix RPM package generation.

  • The packager now generates packages for QT5 and GTK+3 for project using gb.gui.

  • Use a bigger icon for the packager wizard.

Search dialog

  • The "Show search window" button in the search list does not reset the searching context to the current procedure anymore. It keeps the current context unchanged instead.

Color chooser dialog

  • The system colors of the color choose dialog are now dynamically filled from the Color class information. Consequently, you can add new colors by extending and adding new color constants or properties to the Color class in your project.

Translation editor

  • Correctly quote and unquote translations.

  • Use editor font for editing translations.

  • Use unquoted translation strings.

Miscellaneous

  • Fix all WebView font sizes.

  • Fix many dialog layouts.

  • Fix the cursor positions restore at project startup.

  • Force the background of some scrollbars to be the text background color.

  • If the workspace was filled before the main window is visible, then the QT5 backing store starts displaying garbage. The workaround was to always show the main window before trying to load any file.

  • Redraw some control icons.

  • Redraw some icons.

  • Replace "Every software" by "All software", which is better english.

  • Replace "run that ..." by "run this ...".

  • Software is always a singular word.

  • The string constants are now quoted in .info files. Take that into account.

  • Use MenuButton instead of ToolButton in some places, because Breeze logically always centers the contents even when there is an icon.

  • Use the new CloseButton property of the TabPanel control.

  • Use the new QT4/QT5 switcher components.

  • Use the new TextEditor instead of the old Editor control. Consequently, the gb.qt4.ext component is not needed by the IDE anymore.

  • Workaround the stupid automatic shortcut feature of Qt5.

WIKI CGI SCRIPT

  • Add tooltips for all special methods.

  • Add tooltips on class symbols list.

  • Command for generating the package dependencies table.

  • Correctly handle class reimplementation through different components.

  • Fix signature of _new methods.

  • Fix some HTML syntax errors.

  • Ignore gb.gui.qt and gb.gui.qt.webkit when generating the TODO page.

  • Take gb.qt5 into account.

  • The string constants are now quoted in .info files. Take that into account.

  • Update wiki style sheet.

  • Updated Dutch translations

EXAMPLES

  • Fix Browser example.

  • Fix WebBrowser example.

INTERPRETER

  • Add a new GB.Component.Declare() API, that allows a component to dynamically register a class description.

  • Add the Rand() syntax description.

  • Allow a component to declare a GB_AFTER_INIT() exported method that is called just after all the components declared in the project are completely loaded.

  • Allow Gambas executables to be run through any relative paths.

  • Correctly raise an error if a component cannot be found.

  • Do not read ahead a ready to read file descriptor if we are in direct mode and if the file is a not a regular file.

  • Do not read ahead file descriptors ready to read opened using the ".xx" special name.

  • Don't close an external library if requesting an unknown symbol on it. Why having done that?

  • Don't crash if a regular expression has a missing closing }.

  • Don't crash if a standard stream has been freed. Raise an error instead.

  • Don't panic if a received signal cannot be written to the signal pipe. Just print a warning.

  • Finally fixed! LINE INPUT internal buffer is now correctly reset when SEEK is used.

  • Fix an infinite loop when a signal is catched and the signal pipe has been closed.

  • Fix compilation of EXEC and SHELL for older bytecode versions.

  • GB.Component.IsLoaded() is a new interpreter API that returns if a specific component has been loaded.

  • GB.GetProperty() API now returns the property value as a GB_VALUE pointer, or NULL if the property could not be read.

  • GB.GetReturnValue() is a new interpreter API that returns a pointer to the internal GB_VALUE slot where GB.ReturnXXX() functions store the return value.

  • Make faster implementations of the Find() and Exist() methods of the native array classes. Only Date[] and Variant[] use the old implementations.

  • New error constant in API header.

  • Object.Lock() and Object.Unlock() are now recursive, i.e. you must call Object.Unlock() as many times as Object.Lock() to actually unlock an object.

  • Object.Raise() is a new method that tells an object to raise one of its events. You should have no use of that for real applications. :-)

  • Prevent a possible infinite recursion when detaching objects.

  • Running executables from an absolute path works again.

  • Shell$() now quotes quotes correctly.

  • Sometimes String.Left(), String.Mid$() or String.Right() methods could go past the end of their strings. This is fixed now.

  • Stream read ahead does not have to wait for the descriptor to be ready for reading.

  • Support for UTF-8 date and time separators, used by Chinese for example.

  • The UTF-8 character to byte position conversion routine now should work in all cases. Fix a corner case in String.Left(), String.Mid$(), String.Right() that sometimes could return an incorrect result.

COMPILER

  • Allow string constants longer than 255 characters when generating .info files.

  • Don't crash when a constant is the void string.

  • The string constants are now quoted in .info files.

INFORMER

  • A component now can declare classes through a GB_OPTIONAL_CLASSES public symbol. Theses classes are included into the information file, but are not automatically loaded as the ones defined through the GB_CLASSES symbol.

GB.CAIRO

  • Release the drawing pattern after destroying the drawing context, because finishing the drawing may need it.

GB.CLIPPER

  • Polygon.AddPoint() now works correctly.

  • Put arguments to Polygon._put() in the correct order.

GB.COMPRESS.BZLIB2

  • Make that compress driver an explicit component.

GB.COMPRESS.ZLIB

  • Make that compress driver an explicit component.

GB.DB

  • SQLRequest is a new class that helps to build a SQL request whose syntax is adapted to a specific connection. The name of table fields are always quoted so that they can include reserved characters.

  • Connection.SQL is a new property that returns a new SQLRequest object that can be used for forging a SQL request whose syntax is adapted to the target connection.

  • Don't crash when a SQLite database is not found and if the hostname is null.

  • Fix a crash when creating twice the same table with the same connection.

  • Fix a memory leak in the Connection.Delete() method.

  • GB_DB_DEBUG is a new environmental variable that allows to externally set the DB.Debug property.

GB.DB.FORM

  • DataComboView: Draw current selected record with the same layout as the popup DataView uses.

  • Display the busy mouse cursor while loading SQL data.

  • Fields with special characters in their name are now correctly quoted, thanks to the new SQL forgin mechanism.
    • Updated Dutch translations

  • Fix blob editor current byte highlighting.

  • Use the new SQL property of the Connection object to build request.

GB.DB.MYSQL

  • Blob fields and unlimited text fields should be detected correctly in all cases now.

  • Don't crash when removing something from the metadata cache.

  • Use the a void database name by default, instead of explicitly connecting to the "mysql" database.

GB.DB.POSTGRESQL

  • Fix a compilation warning.

  • If PostgreSQL version is greater than 9.0, then force the bytea output format to escape, as it was before.

  • Support for materialized views.

GB.DB.SQLITE3

  • Detect primary key only with table_info pragma. Consequently, fields declared as "INTEGER" will not be incorrectly taken as a default primary key anymore.

  • Rewrite the SQLite 3 driver in C. Get rid of all that brain-fucking C++ code. Things should consume less memory, and may be a little bit faster.

GB.DBUS

  • A class inheriting DBusVariant can be used as DBus method return value.

  • Add DBus.Raise() and DBus[].Raise() to raise signals. At the moment, there is no difference between the two methods, as there no mean to indicate the sender raising a signal. I don't know yet how DBus decides which service sends a signal!

  • Correctly handle array datatypes.

  • Correctly handle NULL values.

  • Correctly marshall DBus structures and arrays.

  • DBus methods that return nothing now send a void reply, otherwise the caller waits for nothing.

  • DBus._HasSystemTray() is a new method that returns if the DBus system tray is present. That method is used by the gb.gui.trayicon component to know if gb.dbus.trayicon must be loaded.

  • DBus.Null is a new property that is internally used for representing void strings. You should have no use of that!

  • DBus.Register() and DBus.Unregister() are now the two methods to register and unregister a DBusObject under the DBus.Name service.

  • DBus.Session.Register() now can register an object under a specific service name. If the object path does not start with a slash, then its first element is assumed to be that service name.

  • DBus._SplitSignature is new method that allows to split a DBus signature.

  • DBus.Register() and DBus.Unregister() are two new methods to register and unregister a DBusObject under a specific service name.

  • DBusValues is a new class that must be used when a DBus method canonical return several values. It works like DBusVariant.

  • DBusVariant now can be inherited. Use the value of the Signature constant for introspection of methods and properties using a child class of DBusVariant.

  • DBusVariant() static method has been removed.

  • DBusVariant.Signature is now a constant, not a property anymore.

  • DBusVariant.Value is now writable.

  • Fix org.freedesktop.DBus.Introspectable interface declaration.

  • Fix xml introspection analysis.

  • More debugging messages if DBus.Debug is set to TRUE.

  • Null arguments of DBusObserver are correctly interpreted now.

  • Remove support for calling methods and properties directly from the DBusApplication class. Why did I do that?

  • Remove the now useless DBusConnection.Raise(). The DBusConnection Register() and Unregister() are kept for backward-compatibility reason.

  • Show the org.freedesktop.DBus.Peer interface in introspection.

  • Support for sending signals.

  • DBusObject is now marshalled to a DBus object path.

  • The org.freedesktop.DBus.Properties.GetAll method now works correctly.

  • The org.freedesktop.Properties GetAll() method now effectively send all properties, even those being null.

  • Unregistering an object now correctly removes it from the children list of its parent.

GB.DBUS.TRAYICON

  • New component that implements the DBus tray icon protocol and export the tray icon menu with the DBus menu protocol. It support both KDE and Unity that are of course not compatible even if they claim using the same protocol. Thanks again to the Ubuntu guys for badly documenting their custom protocol, and welcome to reverse engeneering with 40°C outside. The component is automatically loaded by the GUI component if a DBus system tray is detected. Otherwise the old protocol is used.

GB.DESKTOP

  • Add support for Unity.

  • Desktop.Type returns "UNITY" now on Unity.

  • DesktopWatcher: Use Desktop.Windows.FromHandle() instead of Desktop.Windows[].

  • Remove the Desktop.Type property.

  • Start supporting KDE5.

GB.DESKTOP.X11

  • Support for gb.qt5.

GB.DRAW

  • Fix Paint text method signatures.

  • Paint.ZoomImage now draws its grid with a dashed line using the specified grid color and its inverse.

GB.EVAL.HIGHLIGHT

  • Fix highlighting of patterns longer than 255 characters.

  • SQL higlighting: the ` quote character is taken into account now.

  • SQL: Fix string highlighting.

  • TextHighlighter.ToHTML() is a new method that converts a text into highlighted HTML.

  • TextHighlighter[] returns a specific highlighter from its name.

GB.FORM

  • Add support for RightToLeft mode in DocumentView.

  • Balloon now works correctly across screens.

  • Balloon won't crash anymore if the control it is associated with becomes invalid.

  • Balloon won't take focus anymore when being shown.

  • ButtonBox: Setting the Button property now correctly refreshes the control.

  • Completion: Fix a possible crash.

  • Completion: The completion popup now can be clicked without being closed, thanks to the new Window.Activate() method that gives the focus back to the completed text box.

  • Completion: The popup list now follows its top-level window when it moves.

  • DateBox now works correctly with countries using the same separator for date and time, like Finnish.

  • FileChooser does not display an error message anymore if the selected path does not exist. Only if the parent directory is not found.

  • Fix file properties dialog layout.

  • Fix stock icon map for breeze icon theme.

  • Fix the recent stock icon for the Breeze themes.

  • IconPanel: When the Count property is increased, new tabs are correctly visible.

  • IconPanel.Border property behaviour has changed. When set now, the only the left panel gains a border, and a space to its right. When not set, the old behaviour is maintained, i.e. no border but a separator between the left panel and the contents.

  • ImageView uses #808080 as grid color.

  • ImageView.Alignment is a new property that allows to define how the image is aligned when it is smaller than the view.

  • New user and group icons.

  • New syntaxes in icon.map file that allows to specify different icons for small or big sizes.

  • New widget SpinBar. It's a Gimp style widget that allows to visualize and modify a value. Unlike spinbox it supports floating point values.

  • SidePanel.MinSize is a new property to define the minimum size of a SidePanel before it hides. This property may be removed soon, don't use it yet.

  • SliderBox: The slider has always a space for the possible minus sign.

  • Some little changes in DateChooser look.

  • Spinner.Wait() is a new method that calls the event loop, and ensures that it is not called more than every 200 milliseconds.

  • Spinner: Display the label below the rotating spinner.

  • Support for Breeze and Breeze-dark icon themes.

  • TabPanel.CloseButton is a new property that displays a global close button inside the tab bar. That button raises the CloseAll event.

  • TabPanel: Fix a possible crash.

  • TabPanel: Fix a temporary debugging feature that sometimes could lead to a crash.

  • TabPanel: Take object locking recursitivity into account.

  • Updated Dutch translations

  • UrlLabel: Display the link URL if the Text property is not set.

  • ValueBox: The Change event is now raised correctly for numeric type.

  • Wizard: Animation is correct now when the Border property is set.

GB.FORM.EDITOR

  • This new component provides a text editor with syntax highlighting entirely written in Gambas. A bit slower than the old one, but it will work with any toolkit! Moreover, it can wrap its text.

GB.FORM.MDI

  • Fix shortcut configuration dialog layout.

  • Workspace has now a global close button.

  • Workspace.CloseAll() is new method that closes all workspace windows.

  • Workspace: Disable some unused code.

  • Workspace: Fix layout routine when the Border property is set.

  • Workspace: Rename an internal method that was in conflict with the new Window.Activate() method.

GB.FORM.STOCK

  • New user and group icons.

GB.FORM.TERMINAL

  • First commit, nothing usable for now, I just started to write the emulator, which already represents a large number of lines of code, but the most complex work was to understand how the entire virtual terminal. Thank you to all available sources, Xterm, Rxvt, Konsole. I hope to arrive at the end to implement all the functions of VT102.

GB.GTK

  • Actually try to detect the system tray. Only the old protocol is supported.

  • Add a forgotten source file header symbolic link.

  • Add TrayIcon MiddleClick event.

  • Cache Pango layout in each painter so that it is not recreated at each text drawing.

  • Clipboard.Current is a new property that tells if the Clipboard methods and properties operate on the default clipboard or the selection clipboard.

  • Copying a control font now should works as expected.

  • Desktop.Type is now implemented in the GUI components.

  • Drawing text on an image now has the same result as drawing text on the screen. They use the same hinting options.

  • Fix a crash when calling Dialog.SaveFile() with a void Dialog.Path.

  • Fix compilation error.

  • Fix enter and leave events handling.

  • Fix keyboard events handling.

  • Fix the old TrayIcon implementation, so that it matches the QT one.

  • Font.H is now a synonymous of Font.Height.

  • Font.Modified is a new property that returns if the font has been modified, i.e. if one of its properties has been set. This property can be freely reset. That way, it allows to implement the concept of "default font".

  • Font.ToString() now uses the point as font size decimal separator.

  • Implement the TrayIcons.DeleteAll() method, and call it at exit.

  • Let the new gb.gui.trayicon deals with the dbus stuff, but keep the old system tray icon and use them on demand.

  • Load the gb.dbus and gb.dbus.trayicon components if the current desktop is KDE >= 4. Otherwise, use the old TrayIcon implementation.

  • Paint.Font now behaves as expected if one of its property is set.

  • Paint.TextSize does not compute text size twice anymore.

  • Remove TrayIcon Menu event.

  • Row and column arrangement now work correctly with RTL language in both normal and inverted modes.

  • TextBox: Setting the Pos property during a KeyPress event now works in all cases.

  • The color properties of the Color class are now correctly read-only.

  • The local Stock class has been deprecated. GTK+ stock icons are not accessible anymore.

  • Window.Activate is a new method that activates a window.

  • Window.NoTakeFocus works correctly now.

GB.GTK3

  • Actually try to detect the system tray. Only the old protocol is supported.

  • Add a forgotten source file header symbolic link.

  • Add TrayIcon MiddleClick event.

  • Clipboard.Current is a new property that tells if the Clipboard methods and properties operate on the default clipboard or the selection clipboard.

  • Desktop.Type is now implemented in the GUI components.

  • Dialog.SelectFont() does not crash anymore.

  • Drawing text on an image now has the same result as drawing text on the screen. They use the same hinting options.

  • Explicit call to gtk_printer_option_widget_get_type(), otherwise printing crashes. But why???

  • Fix a crash when calling Dialog.SaveFile() with a void Dialog.Path.

  • Fix the component name in deprecation warning messages.

  • Fix the old TrayIcon implementation, so that it matches the QT one.

  • Fix warnings by not using deprecated functions. Only GtkImageMenuItem is kept, because I didn't found a workaround yet of GTK+3 dropping icons in menus!

  • Font.H is now a synonymous of Font.Height.

  • Font.Modified is a new property that returns if the font has been modified, i.e. if one of its properties has been set. This property can be freely reset. That way, it allows to implement the concept of "default font".

  • Font.ToString() now uses the point as font size decimal separator.

  • Implement the TrayIcons.DeleteAll() method, and call it at exit.

  • Let the new gb.gui.trayicon deals with the dbus stuff, but keep the old system tray icon and use them on demand.

  • Load the gb.dbus and gb.dbus.trayicon components if the current desktop is KDE >= 4. Otherwise, use the old TrayIcon implementation.

  • Paint.Font now behaves as expected if one of its property is set.

  • Remove TrayIcon Menu event.

  • Right-to-left languages are taken into account by the arrangement routine correctly now.

  • Row and column arrangement now work correctly with RTL language in both normal and inverted modes.

  • TextBox.Mouse property works correctly again with GTK >= 3.14.

  • TextBox: Setting the Pos property during a KeyPress event now works in all cases.

  • The color properties of the Color class are now correctly read-only.

  • The local Stock class has been deprecated. Deprecated GTK+ stock icons are not accessible anymore.

  • Window.Activate is a new method that activates a window.

  • Window.NoTakeFocus works correctly now.

GB.GUI

  • Use gb.qt5 if the current desktop is KDE5.

GB.GUI.BASE

  • Action: Support for CheckBox controls.

  • Fix Paint.TrimText() routine that trimmed badly is some cases.

  • GridView columns now can have any width.

  • GridView default cell padding is now zero.

  • GridView.Rows[].Refresh now only refreshes the specified row, and not the entire view.

  • GridView: Don't draw the last grid lines.

  • GridView: Picture alignment inside cells is now correct.

  • GridView: Prevent a possible crash while drawing.

  • GridView: Take the Design property into account.

  • GridView: The contents is not shifted anymore when the Border property is set.

  • GridView: The cursor is more visible.

  • GridView: The scrollbars use the same background as the view.

  • GridView: Try to not draw the last grid lines if not needed.

  • GridView: Use the new Font.Modified property so that the initial font of a cell is always the font of the GridView, even if it changed after the cell has been filled.

  • IconView: Draw is a new event that is raised just after a specific IconView item has been drawn.

  • IconView: Draw the hovered item differently.

  • IconView: Fix bad detection of hovered item.

  • IconView: Take the icon shape into account when doing a rectangle selection.

  • ScrollArea is now correctly selectable in the IDE.

  • ScrollArea: Apply foreground color to scrollbars.

  • ScrollArea: Correctly draw the corner background between scrollbars.

  • ScrollArea: Draw the border around the scrollbars now.

  • ScrollArea: The corner widget is now correctly hidden in all cases.

GB.GUI.OPENGL

  • Support for gb.qt5.opengl.

GB.GUI.QT

  • New QT4/QT5 switcher component.

  • Print a warning message if GB_GUI contains an unsupported component.

GB.GUI.QT.WEBKIT

  • New QT4/QT5 WebKit switcher component.

GB.GUI.TRAYICON

  • New component that you must check if you want to have system tray icons. It loads gb.dbus, use DBus._HasSystemTray() to know if it can load gb.dbus.trayicon. Otherwise it tells the current GUI component to declare the old system tray implementation classes.

GB.IMAGE

  • Implement all possible image format conversions.

GB.JIT

  • Fix a warning message when configuration fails.

GB.MARKDOWN

  • Correctly reinitialize the markup routines when an HTML comment has not been closed.

GB.MEDIA

  • Added the MediaMessage class to process GStreamer messages.

  • Added the MediaPipeline_Event event to catch generic GStreamer pipeline events, in the form of a MediaMessage object.

GB.NCURSES

  • Fix Window.ReadLine(): getnstr() doesn't return the input length

  • Screen.Beep() is a new method which makes an audible beep

  • Screen.Flash() produces a visual flash on the screen

GB.QT4

  • Add TrayIcon MiddleClick event.

  • Call TrayIcons.DeleteAll() at exit.

  • Clipboard.Current is a new property that tells if the Clipboard methods and properties operate on the default clipboard or the selection clipboard.

  • ComboBox background and foreground are now correctly taken into account both in read-only and editable modes.

  • Default window title is correctly initialized now.

  • Detect system tray with the Qt routine.

  • Desktop.Type is now implemented in the GUI components.

  • Fix component name in warning messages.

  • Fix horizontal inverted arrangement.

  • Fix Qt5 support.

  • Font.H is now a synonymous of Font.Height.

  • Font.Modified is a new property that returns if the font has been modified, i.e. if one of its properties has been set. This property can be freely reset. That way, it allows to implement the concept of "default font".

  • Get rid of Qt3 support library.

  • Let the new gb.gui.trayicon deals with the dbus stuff, but keep the old system tray icon and use them on demand.

  • Load the gb.dbus and gb.dbus.trayicon components if the current desktop is KDE >= 4. Otherwise, use the old TrayIcon implementation.

  • Minimize X11 window properties changes.

  • Newly created ToolButton does not resize its parent unexpectedly anymore.

  • Non modal windows opened on top of modal windows now are correctly closable now.

  • Remove a debugging message in Style.Name property.

  • Remove the now useless XEmbed tray icon implementation.

  • Remove TrayIcon Menu event.

  • Row and column arrangement now work correctly with RTL language in both normal and inverted modes.

  • Setting Paint.Font to NULL does not crash anymore. It resets the font to its initial value taken at Paint.Begin.

  • Showing a window now automatically raises it.

  • Some hacks for the Breeze Qt4 style.

  • Support for nul bytes inside QT strings.

  • Support for QT5.

  • The color properties of the Color class are now correctly read-only.

  • The TrayIcon is now based on the QSystemTrayIcon class. Consequently, as soon as the sni-qt library is installed on your system, the tray icon will become an indicator visible in the Plasma new system tray, and normally in the Gnome / Unity indicator bar. Beware that This new TrayIcon does not raise any standard Control events, it is entirely managed by the system tray.

  • TrayIcon: Correctly raise Scroll event.

  • Trigger pending focus and activate events before showing a modal dialog.

  • Window.Activate is a new method that activates a window.

  • Window: Redesign the X11 window manager properties management so that everything works the same in gb.qt4 and gb.qt5.

GB.QT4.EXT

  • Editor.Overwrite is a new property that defines the editor insertion mode.

  • Editor is now deprecated. Use the TextEditor control of gb.form.editor component instead.

  • Editor.Print() now supports some ANSI escape sequences.

  • Fixes and enhancements in the ANSI escape sequences management of the Editor.Print() method.

GB.QT4.OPENGL

  • Get rid of QT3 support library.

GB.QT4.WEBKIT

  • Do not crash when starting a download.

  • Fix a missing space in Makefile.am file.

  • Fix Qt5 support.

GB.QT5

  • Add a new X11 helper function that allows to set the _NEW_WM_USER_TIME property of a window, so that Window.TakeFocus can be implemented.

  • New GUI component based on QT5, having the same interface as gb.qt4.

GB.QT5.OPENGL

  • New QT5 OpenGL support component.

  • Use the old OpenGL widget if QT version if 5.3 or lower, and the new one if QT version is 5.4 or greater.

GB.QT5.WEBKIT

  • New webkit component for Qt5.

GB.REPORT

  • All the classes are exported. Now shadows can work.

  • Fix component dependencies.

  • Now the resolution can be set on printing and on file generation.

GB.REPORT2

  • Replace deprecated Image.Gray() method by Image.Desaturate().

  • Fix the bug on Align.none alignment mode.

  • Fix component dependencies.

  • Dutch translations

  • Refresh the print button icon correctly.

  • Remove a bug on drawing grayscale preview in ReportView.

  • Restore the report scaling after drawing in the DocumentView.

  • Setup component requirement.

GB.SDL2

  • Window.Handle is a new property that returns the window handle.

GB.SIGNAL

  • Raise an error instead of panicking when trying to catch the SIGKILL or SIGSTOP signal.

GB.UTIL

  • Fix the signature of public methods.

  • Shell.RmDir() now prevents the deletion of the home and any top- level directories. A new Force optional argument allows to bypass that security.

  • String.Distance() is a new method that returns the Damerau- Levensthein distance between two UTF-8 strings. It's the minimum number of operations needed to transform one string into the other, where an operation is defined as an insertion, deletion, or substitution of a single character, or a transposition of two adjacent characters.

GB.XML

  • Fixed CDATAs and PIs not correctly handling indentation.

  • XmlWriter now correctly uses the newline separator of the stream when indenting, instead of always using n.

  • XmlWriter now uses a string stream as internal buffer, when needed.

  • XmlWriter: Added a new Close() method to close the attached stream.

  • XmlWriter: Buffers are now correctly flushed when ending a document.

Compilation and installation

Read the instructions there.

If everything was fine, type "gambas3" to run the development environment.

Enjoy it !

See also