Gambas Documentation
Application Repository
Code Snippets
Compilation & Installation
Components
Controls pictures
Deprecated components
Developer Documentation
Development Environment Documentation
Documents
About The Best Formula In The World
Architecture details
Benchmarks
Books
By Reference Argument Passing
Compatibility between versions
Creating And Using Libraries
Database Datatype Mapping
Database Request Quoting
Date & time management
Dates and calendars
DBus and Gambas
Differences Between Shell And Exec
Differences From Visual Basic
Distributions & Operating Systems
Drag & Drop
DrawingArea Internal Behaviour
External functions datatype mapping
Frequently Asked Questions
Gambas Farm Server Protocol
Gambas Mailing List Netiquette
Gambas Markdown Syntax
Gambas Naming Conventions
Gambas Object Model
Gambas Scripting
Gambas Server Pages
Gambas Unit Testing
Gambas Wiki Markup Syntax
Getting Started With Gambas
Hall Of Fame
Housekeeping, cleaning up
Image Management In Gambas
Including Help Comments in Source Code
Interpreter limits
Introduction
Just In Time Compiler
Just In Time Compiler (old version)
License
Localisation and Internationalization
Mailing Lists & Forums
Naming Conventions
Network Programming
ODBC Component Documentation
PCRE Pattern Syntax
Porting from Gambas 2 to Gambas 3
Previous News
Project Directory Structure
Release Notes
Gambas 2.23.0
Gambas 2.23.1
Gambas 2.24.0
Gambas 3.0.0
Gambas 3.1.0
Gambas 3.1.1
Gambas 3.2.0
Gambas 3.2.1
Gambas 3.3.0
Gambas 3.3.1
Gambas 3.3.2
Gambas 3.3.3
Gambas 3.3.4
Gambas 3.4.0
Gambas 3.4.1
Gambas 3.4.2
Gambas 3.5.0
Gambas 3.5.1
Gambas 3.5.2
Gambas 3.5.3
Gambas 3.5.4
Gambas 3.6.0
Gambas 3.6.1
Gambas 3.6.2
Gambas 3.7.0
Gambas 3.7.1
Gambas 3.8.0
Gambas 3.8.1
Gambas 3.8.2
Gambas 3.8.3
Gambas 3.8.4
Gambas 3.9.0
Gambas 3.9.1
Gambas 3.9.2
Gambas 3.10.0
Gambas 3.11.0
Gambas 3.11.1
Gambas 3.11.2
Gambas 3.11.3
Gambas 3.11.4
Gambas 3.12.0
Gambas 3.12.1
Gambas 3.12.2
Gambas 3.13.0
Gambas 3.14.0
Gambas 3.14.1
Gambas 3.14.2
Gambas 3.14.3
Gambas 3.15.0
Gambas 3.15.1
Gambas 3.15.2
Gambas 3.16.0
Gambas 3.16.1
Gambas 3.16.2
Gambas 3.16.3
Gambas 3.17.0
Gambas 3.17.1
Gambas 3.17.2
Gambas 3.17.3
Gambas 3.18.0
Gambas 3.18.1
Gambas 3.18.2
Gambas 3.18.3
Gambas 3.18.4
Gambas 3.19.0
Gambas 3.19.1
Gambas 3.19.2
Gambas 3.19.3
Gambas 3.19.4
Gambas 3.19.5
Gambas 3.19.6
Gambas 3 RC1
Gambas 3 RC2
Gambas 3 RC3
Gambas 3 RC4
Gambas 3 RC5
Gambas 3 RC6
Gambas 3 RC7
Reporting a problem, a bug or a crash
Rich Text Syntax
Screenshots
Text highlighting definition file syntax
The Program has stopped unexpectedly by raising signal #11
Variable Naming Convention
WebPage Syntax
Web site home page
What Is Gambas?
Window & Form Management
Window Activation & Deactivation
Window Life Cycle
XML APIs
Error Messages
Gambas Playground
How To's
Language Index
Language Overviews
Last Changes
Lexicon
README
Search the wiki
To Do
Topics
Tutorials
Wiki License
Wiki Manual

Gambas 3.14.0

What's new?

This release brings the main following features:
  • The IDE can now print a source code file.

  • A lot of fixes in the packager wizard.

  • A 16 point size version of the Gambas font.

  • Support for immutable (read-only) arrays.

  • PROPERTY...USE... is a new shortcut syntax for defining properties.

  • Uncaught errors raised from an event handler can be ignored now.

  • The compiler emits column position on errors and warnings if possible.

  • Many fixes for dark themes.

  • Message boxes are not native anymore.

  • Web applications based on gb.web or gb.web.form now correctly handle the Accept-Language HTTP header.

Compilation and installation

Read the instructions there.

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

Enjoy it !

Changelog

CONFIGURATION

  • Fix Willy Raets' mail address.

  • Update Gambas 3 desktop file and add french translations.

DEVELOPMENT ENVIRONMENT

About dialog

  • Wrap license text so that it is not truncated.

  • Update design.

  • Display financial support again.

Automatic completion

  • Handle boxed strings.

  • Fix constructor signature computation.

Code editor

  • Fix keyboard handling in procedure list.

  • Add a print button and menu entry that prints the contents of the editor.

  • Automatic insertion of global variables now inserts the STATIC keyword if the current function is static.

Database editor

  • Locating SQLite database inside the home directory or inside the project now works correctly.

Debugger

  • Make debugging windows fully readable with dark themes.

  • Fix a possible crash when disabling/enabling a breakpoint.

Farm client

  • ESC key now closes the window.

Form editor

  • Fix a possible crash when dragging a toolbox control on a form.

Help browser

  • The loading spinner is now always correctly centered.

Image editor

  • Selection drawing tool now works correctly when snapping lines to 15° angles by pressing the ALT key.

  • Show the grid below the selection and other tool strokes.

Make executable dialog

  • Add an option not to increment version. This option is saved in the local project settings.

Menu editor

  • Double-clicking on a menu entry now automatically closes the menu editor to open the Click event handler of that menu.

Options dialog

  • Use icon-only tool buttons for configuring highlight style.

  • Add an option to define the font used for printing.

Packager wizard

  • Remove deprecated entries in SPEC file for mageia.

  • Remove support for mandriva.

  • Do not remove deprecated entries from SPEC file for Mageia, it does not work.

  • Don't use absolute path for executable in desktop files.

  • The desktop file Name entry is now emitted with its translations.

  • Extra desktop file entries can override default entries.

  • Allow to enter the minimum Gambas version required.

  • Translate project description in desktop file.

  • When making a *.deb package, clean-up the target directory from possible already existing similar packages. Otherwise dpkg-buildpackage does not build.

  • Doing the same package several times without closing the wizard works correctly now.

  • Autotools package does not use the deprecated AM_INIT_AUTOMAKE syntax anymore.

  • Create lower-case symbolic links on executables for Debian, Slackware, ArchLinux and Autotools packages.

Project creation dialog

  • Forbid <, >, (, ), { and } in project names.

  • Disable templates using components not installed on the system.

Project properties dialog

  • Environment variables menus must not be translatable.

  • Standardize the look of lists widgets.

  • Add support for extra references, i.e. external executables that add their symbol information to the automatic completion. This is useful if your project is a library loaded by the extra reference that uses its exported classes.

Project tree

  • Startup class is now drawn with underline bold text instead of using an emblem.

  • "Open in folder" menu entry is now visible on file items, not just directories.

Search dialog

  • The "Public" folder is now correctly browsed in all cases.

Text editor

  • Add a print button and menu entry that prints the contents of the editor.

Translation dialog

  • New button that adds a new translation.

  • The "-" string is not used anymore for strings marked as not to be translated. Instead a specific "# gb-ignore" comment and a void translation are written into the PO file.

  • Automatic translation now works better with multi-line translations.

  • The automatic translation now stops as soon as the translation program fails.

Translations

  • Update French translation.

  • Update French translation so that top-level menu does not use characters with diacritics for shortcuts.

  • Always read the translation of project title and description when displaying a project box, and read them correctly.

  • Updated Dutch translation.

  • Update translations of license.

  • Update Spanish translation.

  • Update Italian translation.

Version control

  • Command timeout is now 15 seconds instead of 30.

  • Add a new tab in the bottom panel for managing version control.

  • Always reload the project after a pull / update from the repository.

Miscellaneous

  • Remove the now useless authors.txt file.

  • Add cyrillic and greek character in the SDL default font generation function.

  • When a component of the opened project is not installed, do not remove it from the project component list. Keep it uncheckable.

  • Correctly read multi-lines translations of project title and description.

  • Redraw some icons.

  • Update financial support.

  • Update highlight themes.

  • Support for new Highlight.Alternate style.

  • Add support for the new gb.form.print component.

  • When gb.gui is used, only propose GUI components actually installed on the system.

  • Support for the ByRef annotation in .info files.

  • Update Gambas fonts.

  • Update error messages.

  • Add a 16 point version of the Gambas font, in medium and bold weight.

  • Add dark theme versions of component chooser icons (checked, partially checked, locked).

  • Add a bookmark on the current project in all directory and file choosers.

WIKI

  • Discount comments in .info files when calculating number of symbols.

  • Updated Dutch translations

  • Support for ByRef annotations in .info files.

  • Fix links inside symbol syntax, so that they keep the current language.

WEB SITE MAKER

  • Updated Dutch translations

EXAMPLES

  • DnsClient: Fix mageia web site hostname.

  • Replace "mandrake" by "mageia" in DnsClient example.

  • Make Games/Invaders compile correctly.

  • Update some translations.

INTERPRETER

  • Add two new standard errors: "Multidimensional array" and "Unknown class".

  • Fix gb.Scientific number format.

  • Stream.Eof is a new property that returns if end of stream has been reached. It's the same thing as Eof(Stream).

  • Ignore errors when loading a class for the JIT compiler.

  • Component.Load() can load a component located at an absolute path now.

  • If the current translation does not exist, try to use the first available translation of the same language in another country.

  • The archive path is now a dynamic string.

  • Don't crash anymore when searching into an archive that failed to load.

  • Replace some specific error messages by standard errors.

  • The "Embedded array" error message has been rewritten as "Read-only array".

  • Array.ReadOnly is a new property that make an array read-only. Once set, the property cannot be unset.

  • Static class initializer are now always correctly run in the context of their component.

  • Fix JIT compilation when there are a lot of functions.

  • &/ operator now automatically converts its arguments to strings.

  • Error.Clear() now clears the error flag returned by the ERROR function.

  • Uncaught errors raised from an event handler can be ignored now.

COMPILER

  • Take project extra references into account.

  • Emit column position in almost all error messages. It makes the compiler about 0.5% slower.

  • Some optimizations in symbol table routines.

  • Add ByRef annotations to the ".info" files generated by the compiler. The name of "ByRef" method arguments is now prefixed with a & character.

  • PROPERTY...USE... is a new syntax to declare a property automatically associated with a private global variable.

INFORMER

  • Fix a forgotten ! that broke the informer.

GB.ARGS

  • Updated Dutch translations

GB.CLIPPER

  • Get rid of a gcc warning.

  • Update library to version 6.4.2.

GB.COMPRESS.BZLIB2

  • Fix a few error messages.

  • Fix incorrect datatype of some driver function arguments that lead to a crash.

GB.COMPRESS.ZLIB

  • Fix a few error messages.

GB.DB

  • Print the current date/time before any debugging message.

GB.DB.FORM

  • DataComboView: Add argument to the signature of Event Validate.

  • DataSource: IgnoreParent is a new property that tells the DataSource not to filter its contents with any of its parent DataSource.

  • Updated Dutch translations

GB.DB.MYSQL

  • Build with newer mysql/mariadb.

GB.DB.SQLITE3

  • Multiple statements in the same query does not leak memory anymore. In that case, the result of the last statement is returned.

  • Take newlines, tabs, and backticks into account when analyzing a table schema.

GB.DBUS

  • Always specify the direction of input method arguments in introspection, otherwise the qdbusviewer tool does not work.

GB.DESKTOP

  • Desktop.Passwords: Work correctly now when multiple desktops are included in the Desktop.Type property.

  • DesktopFiles: Remove some useless array copies.

  • DesktopMime: Correctly identify executables as "application/x-executable".

  • Desktop.Types is a new property that returns a read-only array of each desktop defined in Desktop.Type.

GB.DRAW

  • Paint: Scale() second argument is now optional, and takes the same value as the first argument if omitted.

  • Paint: FontScale is a new property that defines a scale applied to the size of the fonts assigned to the Paint.Font property.

  • Painting on an already painted device now correctly inherits the Paint.FontScale property.

GB.EVAL

  • Highlight.Alternate is a new constant that represents the background style used for coloring code embedded into webpages.

GB.EVAL.HIGHLIGHT

  • CSS highlighter: Support for CSS escaped characters.

  • Support for new Highlight.Alternate style.

GB.FORM

  • DocumentView: Allow zoom up to 800%.

  • DocumentView: Desaturate is a new property that desaturates the preview. It's slow when the zoom is huge.

  • DocumentView: ShowPage is new property that displays the current page and the number of pages inside the preview.

  • DocumentView: Fix some cases of page drawing not correctly triggered.

  • DocumentView: Use Paint.Begin() instead of Draw.Begin(), so that preview uses anti-aliasing.

  • DocumentView: The default background color is now a mix of the default text foreground and background colors.

  • DocumentView: Correctly reset the scroll position when setting Arrangement to Arrange.Fill.

  • DocumentView: Remove erroneous public constant written in French.

  • Expander: Redesign the Expander title.

  • FileView: Add information about each file next to the icon in icon view mode.

  • IconPanel: Fix cursor keys management, so that hidden tabs cannot be selected by keyboard.

  • ListEditor: Exist() is a new method that returns if an item exists in the list.

  • ListEditor: Add() is a new method that insert a new element in the list.

  • ListEditor: Add is new event that is raised when the add button is clicked.

  • ListEditor: ReadOnly is a new property that makes ListEditor enter read-only mode.

  • ListEditor: Use the remove icon instead of the delete one.

  • MenuButton: Handle right-to-left written language correctly.

  • MenuButton: Use selected background color when the MenuOnly property is set and the MenuButton has the focus.

  • MenuButton: Focus should not be stolen anymore when clicking on a menu-only MenuButton.

  • MenuButton: Fix possible crashes with focus management.

  • SliderBox: Hitting the ESC key in the SpinBox resets the SliderBox to its default value.

  • Spinner: Use the foreground color to draw the spinner and its label.

  • TabPanel: Draw tab focus like hovered buttons.

  • TabPanel: Fix drawing of tab header contents.

  • TabPanel: Use the TabPanel foreground color to draw the titles of the tabs.

  • Update some translations.

  • Italian translations improvements.

  • Updated Dutch translations.

  • New new-tab stock icon.

  • New call stock icon.

  • Bookmarks is a new static class that allows to define global bookmarks for all FileChooser and DirChooser controls.

  • FileChooser: Add separators between the different kind of bookmarks in the bookmark menu.

GB.FORM.DIALOG

  • Updated Dutch translations

GB.FORM.EDITOR

  • TextEditor: Undo now groups successive single character insertions, and successive single character deletions as well.

  • TextEditor: Don't enclose selection with quotes anymore, it is more annoying than anything else.

  • TextEditor: TextEditor[].Paint() is a new method that paint the contents of a line, without the margin.

  • TextEditor: Now we can set up to 32 style colors without crashing.

  • TextEditor: Draw wrapped lines with a normal background, but with a gray hook to its right.

  • TextEditor: Translate popup menu.

  • TextEditor: When the cursor moves, the blinking timer is reset so that the cursor blinks only when it is not moving.

  • TextEditor: Matching braces now blink with the cursor.

  • TextEditor: Support for new Highlight.Alternate style.

GB.FORM.MIDI

  • Updated Dutch translations

GB.FORM.PRINT

  • gb.form.print is a new component that extends the Printer class with a generic preview and print dialog.

GB.FORM.STOCK

  • Add a 128 pixel version of the delete stock icon.

  • Redraw a few icons.

  • New new-tab stock icon.

  • Add call stock icon and redraw archive icon.

  • Add 128 pixels versions of stock icons used by mimetypes.

GB.FORM.TERMINAL

  • TerminalView: Update colors so that they are readable both on a light and a dark background.

GB.GTK

  • Control: Fix the Tooltip property name.

  • Control: Fix the symbol lookup error of the Tooltip property.

  • Message: Remove the message box native implementation.

  • Paint: Implementation of Paint.FontScale.

  • Printer: All printer events are raised between a single Paint.Begin() / Paint.End().

  • Message boxes now correctly use the translated title.

  • Tooltips now support rich text, like in the QT components.

  • Disable top-level menus shortcuts when the window menu bar is hidden.

  • Drag.X and Drag.Y properties are now writable.

  • Drag.Show() and Drag.Hide() methods are now implemented in gb.gui.base.

  • Automatically set Paint.FontScale when painting on a printer, so that font size is actually the same as on the screen.

  • Fix a memory leak when getting the size of a piece of text.

  • Fix menu proxy management that could crash combo-box popups.

  • Uncaught errors raised from an event handler can be ignored now.

GB.GTK3

  • Control: Fix the Tooltip property name.

  • Control: Fix the symbol lookup error of the Tooltip property.

  • Message: Remove the message box native implementation.

  • Paint: Implementation of Paint.FontScale.

  • Printer: Font sizes now are the same as with QT components.

  • Printer: Print() does now crash anymore.

  • Printer: All printer events are raised between a single Paint.Begin() / Paint.End().

  • Rudimentary support for GDK backends that are not X11.

  • Message boxes now correctly use the translated title.

  • Tooltips now support rich text, like in the QT components.

  • Disable top-level menus shortcuts when the window menu bar is hidden.

  • Finishing a drag & drop now correctly releases the button grab.

  • Drag.X and Drag.Y properties are now writable.

  • Drag.Show() and Drag.Hide() methods are now implemented in gb.gui.base.

  • Automatically set Paint.FontScale when painting on a printer, so that font size is actually the same as on the screen.

  • Fix a memory leak in font object creation.

  • Fix a memory leak when getting the size of a piece of text.

  • Fix menu proxy management that could crash combo-box popups.

  • Uncaught errors raised from an event handler can be ignored now.

GB.GUI.BASE

  • GridView: GridView.Rows[].TextAlign is a new property that allows to define the alignment of the row header text.

  • GridView: The padding of column headers is at least half of Desktop.Scale.

  • GridView: Compute preferred column width correctly.

  • GridView: Border padding is now applied inside the cell, not outside like the margin.

  • GridView: Rich-text in centered cells with no text wrapping is correctly drawn now.

  • IconView: Draw selected icons with a rectangular frame.

  • Message: Implement the message boxes entirely in Gambas.

  • ScrollArea: The Scroll() method returns TRUE now if no scrolling actually occured.

  • SpinBox: Forgot to implement the ReadOnly property.

  • SpinBox: Hitting the ENTER or RETURN key triggers the Change event if needed.

  • TreeView: Item X property now correctly takes the TreeView padding into account.

  • TreeView: Setting the item Font property to NULL does not crash anymore.

  • TreeView: A Scroll event is raised now when the TreeView, the ListView or the ColumnView scrolls.

  • TreeView & ColumnView: The arrow size now follows the font size.

  • TreeView & ColumnView: ShowLines is a new property that makes the control draw tree lines.

  • Paint.DrawRichTextShadow() default radius is now the same as Paint.DrawTextShadow().

  • Add helper function for disabling/enabling top-level menu shortcuts.

  • Drag.Show() and Drag.Hide() methods are now implemented in gb.gui.base.

  • Top-level menus initialization routine takes invalid menus into account now.

  • Paint.Arrow() is a new method that draws an arrow.

  • Don't depend on gb.form, it breaks the compilation!

GB.JIT

  • Loading a class during JIT compilation can fail. Take that into account.

  • Enumerating an unknown datatype does not raise an error automatically anymore.

  • Fix boolean datatype management.

GB.MEDIA.FORM

  • Emit standard control events from the inner DrawingArea.

  • Don't crash when seeking if no media is played.

GB.NET

  • Workaround a bug in system header files on PPC systems.

GB.NET.CURL

  • DownloadManager: Add a Connect event raised when the distant server is connected.

  • DownloadManager: Remove useless Message event.

GB.NET.POP3

  • Fix .project and .component files that incorrectly had conflict marks in it.

  • Updated Dutch translations

GB.OPENSSL

  • Add linking exception for OpenSSL (Thanks, Bastian Germann).

  • Allow arbitrary digest methods to be passed to HMac(). They are now identified by their name. The integer arguments are deprecated.

  • Add OpenSSL.RandomBytes to generate a cryptographically strong pseudo-random string of given length

  • Add static class OpenSSL for general utility methods provided by OpenSSL

GB.PDF

  • Compile with poppler >= 0.76.

GB.QT4

  • Message: Remove the message box native implementation.

  • Paint: Implementation of Paint.FontScale.

  • Dialog.SelectDirectory() now correctly shows hidden files when Dialog.ShowHidden is TRUE.

  • Drawing text now respects right-to-left languages the same way on every drawing device.

  • Disable top-level menus shortcuts when the window menu bar is hidden.

  • Drag.X and Drag.Y properties are now writable.

  • Drag.Show() and Drag.Hide() methods are now implemented in gb.gui.base.

  • Fix rich text size computation.

  • Fix rich text size margins between paragraphs and titles.

  • Automatically set Paint.FontScale when painting on a printer, so that font size is actually the same as on the screen.

  • Uncaught errors raised from an event handler can be ignored now.

GB.QT4.EXT

  • Editor: Fix Highlight.Alternate property.

GB.QT5

  • Message: Remove the message box native implementation.

  • Paint: Implementation of Paint.FontScale.

  • Dialog.SelectDirectory() now correctly shows hidden files when Dialog.ShowHidden is TRUE.

  • Drawing text now respects right-to-left languages the same way on every drawing device.

  • Disable top-level menus shortcuts when the window menu bar is hidden.

  • Drag.X and Drag.Y properties are now writable.

  • Drag.Show() and Drag.Hide() methods are now implemented in gb.gui.base.

  • Fix build with Qt 5.13.

  • Fix rich text size computation.

  • Fix rich text size margins between paragraphs and titles.

  • Automatically set Paint.FontScale when painting on a printer, so that font size is actually the same as on the screen.

  • Uncaught errors raised from an event handler can be ignored now.

GB.QT5.EXT

  • Fix build with Qt 5.13.

GB.QT5.OPENGL

  • Fix build with Qt 5.13.

GB.QT5.WEBKIT

  • Fix build with Qt 5.13.

GB.REPORT

  • Updated Dutch translations.

GB.REPORT2

  • Updated Dutch translations.

GB.SDL2

  • Add Greek and Cyrillic characters to the default font.

  • Update default font with latest version of Gambas font.

GB.TERM.FORM

  • Fix Dutch translation file which had conflict markers inside.

  • Fix project description.

  • Remove useless void translation files.

  • Updated Dutch translator e-mail

GB.UTIL

  • Date.IsWeekEnd() is a new method that returns if a date is a week end.

  • Update French translation.

GB.WEB

  • Request: Posted field request using multipart/form-data and having initial void lines were incorrectly trimmed. Posted files were not affected.

  • Enhance language detection done by the Request.Language property.

  • CGI error message is not translatable.

  • If the request exceeds the maximum size defined by Request.MaxFileSize, a "Request too big" error is raised instead of "Response too big".

  • Request.Language now takes the priority of languages specified in the Accept-Language HTTP header into account.

  • Request.Language now uses an internal dictionary to convert the Accept-Language HTTP header to a correct system language.

  • Request.ContentLength is a new property that returns the Content-Length HTTP header, or -1 if the header is not present.

  • Request.ContentType is a new property that returns the Content-Type HTTP header.

GB.WEB.FEED

  • Update translations.

  • Updated Dutch translator e-mail.

GB.WEB.FORM

  • WebForm: Fix message box icons preloading.

  • WebForm: An error is raised now when trying to show an embedded form.

  • WebForm: Forms embedded into other forms work correctly now.

  • Updated Dutch translator e-mail.

GB.XML

  • Error messages must not be translatable.

  • Component version is now taken from the VERSION file.

  • Fix XmlExplorer constructor declaration.

TEMPLATES

  • Update french translation of some template projects.