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
GB.QT5.OPENGL
GB.QT5.WEBKIT
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.