doc • release • 3.8.2

Gambas 3.8.2

What's new

This release includes all bugs fixes since the release of Gambas 3.8.1.

It includes a few enhancements too:

  • Support for dark themes.

  • New logo, project, mime types and control icons based on the breeze theme look.

  • Project creation is now based on customizable project templates.

  • Logical set operations on selections in the image editor.

  • Relative paths now can refer to files located in the main project, in the current component, or in components crossed by stacked function calls.

  • The ODBC component is usable now.

ChangeLog

CONFIGURATION

  • Fix gambas server page mimetype file.

  • New breeze-like icons for mimetypes.

  • New Gambas icons.

  • Redraw many control icons.

  • Register mimetype icon with correct sizes.

  • Uninstall now correctly removes templates and XML appdata file.

DEVELOPMENT ENVIRONMENT

  • "F2" now correctly finds the definition of classes used as method or array.

  • Faster about dialog based on a triple image cache.

  • Add a large toolbox icon size, for HighDPI screens.

  • Add an option to invert an editor theme so that it is usable with a GUI dark theme.

  • Add dark theme versions of some icons.

  • Code formatting now does its job entirely.

  • Code formatting now keeps the cursor position.

  • Code formatting when saving does not prevent modification flag to work anymore.

  • Code formatting is faster now by working on a temporary line buffer.

  • Dark version of many icons.

  • Don't crash if the template global directory has not been correctly installed.

  • Don't define an initial position to the tips window.

  • Editor color themes better adapt to desktop dark themes.

  • Fix a crash in the new class metadata management.

  • Fix author list width in about dialog.

  • Fix documentation metadata reset.

  • Fix dutch translation.

  • Fix RichText in a message.

  • Fix some default themes so that they are more usable inverted.

  • Fix windows using icons that do not exist anymore.

  • Hitting ESC while current method signature is displayed only hides the signature now.

  • Image editor: Clip pasted image.

  • Image editor: Fix mouse wheel behaviour when zooming.

  • Image editor: Fix rectangle and ellipse selection when they are done backwards.

  • Image editor: Many bug fixes in draw, erase, and line tool.

  • Image editor: Pasted images are not one pixel too big anymore.

  • Image editor: Set operations on selections (union, intersection, difference and exclusive or).

  • Initialize documentation metadata after command-line options processing, to avoid circular dependencies.

  • Konsole is correctly used by default on KDE5 desktops.

  • Let the MessageView control use its default colors.

  • List property dialog: Invert button.

  • New class CDocumentation that allows to handle distinct sets of component metadata. That way, offline documentation does not interact with automatic completion and method signature popups anymore.

  • New logo and project icons.

  • New control icons.

  • New project creation dialog based on template projects located in /usr/share/gambas3/template and in ~/.local/share/gambas3/template. These are default directories, they may change according to your gambas installation prefix and home directory configuration.

  • Opening the startup class moves to the Main function only the first time now.

  • Option dialog: Change the order of panels.

  • Packager: Fix debian packages so that lintian likes them better.

  • Packager: Really fix Debian standard version.

  • Packager: Unify debian standards version reported inside packages.

  • Profile windows should not crash anymore when displaying percentage values.

  • Project open dialog: Fix a crash when using the recent list several times.

  • Project property dialog: Add two more environment variable definitions.

  • Property sheet: Double-clicking on read-only properties does not open the text property edit dialog anymore.

  • Property sheet: Fix text property edit dialog.

  • Put the WebView icon in the IDE.

  • Remove an image link in the italian tooltips.

  • Remove now useless icons of the old project creation dialog.

  • Store the report-ng.sh script in the "Project" folder, as it is not used anymore.

  • Support for lxterminal works as much as possible.

  • The label of the check-box that adds the vendor prefix to the package names is clearer now.

  • The search result list should be correctly hidden and shown when being refreshed now.

  • Update French translation.

  • Update German translation.

  • Update Spanish translation.

TEMPLATES

  • Project creation is now based on project templates.

WIKI CGI SCRIPT

  • Fix and enhance automatic generation of Gambas application package dependencies.

INTERPRETER

  • "../xxx" now refers to a file located in the parent archive, not necessarily the main project archive. "../../xxx" refers to the grand-parent archive, and so on. A component written in Gambas that receives a relative path is supposed to prefix it with "../" if he wants to access it. Please report any incompatibility!

  • Component.FindFromPath() is a new method that returns the name of the component a relative path belongs to.

  • Debugger: Breakpoints now work correctly when some global variables are declared after a function.

  • File.IsRelative() is a new method that returns if a file is relative, i.e. if it does not starts with / or ~.

  • Fix Component.FindFromPath() method signature.

  • Fix thousand separator for locales like norwegian that return an UTF-8 non-breaking space. Replace it by a normal space.

  • Relative paths beginning with ".../" always refer to files stored in the main project archive.

  • Task now ends with by calling _exit() instead of exit(). Because exit() calls the terminator of each loaded shared libraries, and that sometimes crashes.

  • Val() correctly detect dates now, when the date or the time separator is a space character.

COMPILER

  • Correctly set .startup file owner.

  • Take into account the "Use VERSION file" project option to compute the actual version in the .startup file.

ARCHIVER

  • Better verbose mode.

GB.DB

  • Connections are now always searched in the main project archive.

  • Result in creation mode works again.

  • Support for "forward only" Result.

GB.DB.FORM

  • New control icons.

GB.DB.ODBC

  • Clean-up a bit the query_fill() function.

  • Internal query routine is now similar to other database drivers. DB.Debug is taken into account, and prints all queries sent, and the number of rows returned.

  • Rewrite result allocation.

  • Support for "forward only" query results.

GB.DB.SQLITE3

  • Fix debug message printed when DB.Debug is set.

GB.DBUS

  • DBus.IsRegistered() is a new method that returns if a specific DBusObject has been registered to a bus.

  • Fix some memory leaks when using DBusObject and DBusVariant in a method call or a reply.

  • Replace hyphens by dots in normalized interface names. But allow them in application names (as well as underscores).

  • Replace hyphens by dots in the entire interface names.

  • The message observer of a DBusObject may disappear while processing a message. Take that into account.

GB.DBUS.TRAYICON

  • Correctly export menus that are not visible.

  • New breeze default tray icon.

  • Toggle menus triggered from the trayicon menu correctly raise their Click event.

GB.DEBUG

  • Fix profiler error messages.

GB.EVAL

  • Lines of any length can be highlighted now.

GB.FORM

  • ButtonBox: Dark theme version of default select icon.

  • File bookmark editor: Correctly save current bookmark when using "Up" or "Down" button.

  • MessageView default colors are now default text background and foreground.

  • Stock: Correctly detect KDE5 icon theme.

  • Stock: Support for Trinity desktop.

  • TabPanel: Clicking with the middle mouse button on a tab button now closes it.

  • The Stock class does not use the Picture cache anymore. It is useless as normally the Stock class is accessed from the Picture[] method.

  • Use Desktop.Type to get the current desktop.

  • ValueBox: Setting the Type property does not hide the control contents anymore.

GB.FORM.DIALOG

  • Dialog.Key is a new property that allows to define the sub-key used for storing dialog settings.

  • Dialog.SelectFont() now takes Dialog.Title into account.

GB.FORM.EDITOR

  • Don't raise Cursor event if we are between calls to Begin / End or during an undo or redo process.

  • TextEditor: Deleting one collapsed line correctly expands it and does not crash anymore.

  • TextEditor: Load() method now always move the cursor to the beginning, to avoid a possible crash.

  • TextEditor: Print() modifications are not put in the undo buffer.

  • TextEditor: Reset the cursor position before actually setting the Text property, to avoid a possible crash.

  • TextEditor: SHIFT key + mouse click now selects text.

  • TextEditor: Some ANSI codes are taken into account by the Print() method.

  • TextEditor: The Save() and Reset() methods now cancel any pending Change event.

GB.FORM.MDI

  • Correctly read the action pictures in the archive they are declared.

  • Don't load gb.form.mdi action files. What for?

  • Use more granular sizes for stock icons, so that they are not too small for some font sizes.

  • When browsing actions, do not try to load an icon for actions that do not have one.

GB.GTK

  • Assume that the contents of XDG_CURRENT_DESKTOP is the current desktop as soon as other detection methods have failed.

  • Fix detection of XFCE desktop.

  • Fix Image.Rotate() routine.

  • Newly opened windows are centered by default, to mimic the gb.qt4 and gb.qt5 behaviour.

  • Remove the Picture[] array accessor and the Picture.Flush() method. They are now implemented in the gb.gui.base component.

  • Fix popup menu behaviour in X11 TrayIcon context.

GB.GTK3

  • Assume that the contents of XDG_CURRENT_DESKTOP is the current desktop as soon as other detection methods have failed.

  • Fix detection of XFCE desktop.

  • Fix Image.Rotate() routine.

  • Newly opened windows are centered by default, to mimic the gb.qt4 and gb.qt5 behaviour.

  • Remove the Picture[] array accessor and the Picture.Flush() method. They are now implemented in the gb.gui.base component.

GB.GUI.BASE

  • Add support for dark theme specific icons. An icon named abc-dark.png will be the dark theme version of the abc.png icon.

  • Add support for right-to-left specific icons. For example, if an icon is named abc-ltr.png, then it will be considered as a left-to-right icon, and the abc-rtl.png icon will be used if the current langauge is right-to-left written.

  • Fix icon path to internal key generation in the Picture cache.

  • GridView: Don't draw the background if the Background property is set to Color.Transparent.

  • Picture: Use Color[].Luminance on default background color to detect dark themes.

  • Remove support for theme specific icons.

  • ScrollArea: Ignore Style.ScrollBarSpacing when layouting scrollbars.

  • The Picture[] array accessor and the Picture.Flush() method are now implemented in that component.

  • Use the new Component.FindFromPath() method.

GB.IMAGE

  • Color[].Luminance returns the luminance information of a color.

GB.INOTIFY

  • Don't pass NULL key and zero length to GB.HashTable.Remove().

  • Don't rely on GB.NewString() to NUL-terminate the string.

  • Use GB.StringLength() where possible.

GB.QT4

  • Assume that the contents of XDG_CURRENT_DESKTOP is the current desktop as soon as other detection methods have failed.

  • Desktop.Scale is now updated before window Font events are sent.

  • Don't send a move request for windows whose initial position is X = 0 and Y = 0, as gb.gtk does.

  • DrawingArea now can be resized during a paint event as soon as it is not cached.

  • Fix detection of XFCE desktop.

  • Message boxes do not support theme specific icons automatically anymore.

  • Modal dialogs now are centered in the screen of their parent window, not always in the main screen anymore.

  • Raise an error when calling Screen[] with an incorrect index.

  • Remove a debugging message.

  • Remove the Picture[] array accessor and the Picture.Flush() method. They are now implemented in the gb.gui.base component.

  • Startup forms with Visible property set to FALSE are not shown at startup anymore.

  • The parent window of a modal window is correctly set now.

  • Window.TakeFocus works again.

  • Window.Visible property does nothing when set with its current value.

GB.QT5

  • Assume that the contents of XDG_CURRENT_DESKTOP is the current desktop as soon as other detection methods have failed.

  • Desktop.Scale is now updated before window Font events are sent.

  • Don't send a move request for windows whose initial position is X = 0 and Y = 0, as gb.gtk does.

  • DrawingArea now can be resized during a paint event as soon as it is not cached.

  • Fix detection of XFCE desktop.

  • Message boxes do not support theme specific icons automatically anymore.

  • Modal dialogs now are centered in the screen of their parent window, not always in the main screen anymore.

  • Raise an error when calling Screen[] with an incorrect index.

  • Remove a debugging message.

  • Remove the Picture[] array accessor and the Picture.Flush() method. They are now implemented in the gb.gui.base component.

  • Startup forms with Visible property set to FALSE are not shown at startup anymore.

  • The parent window of a modal window is correctly set now.

  • Window.TakeFocus works again.

  • Window.Visible property does nothing when set with its current value.

GB.REPORT2

  • ReportImage: Replace matrix manipulation by the Print.DrawImage function. It solves resolution problem on printing.

  • ReportImage: Remove an old size conversion and replace it by the Report Class One.

  • Update icons.

GB.SETTINGS

  • Settings.Read and Settings.Write can take an absolute key as argument.

Compilation and installation

Read the instructions there.

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

Enjoy it !

See also