doc • release • 3.11.0

Gambas 3.11.0

What's new?

Besides tons of bug fixes, here is the main enhancements since the last version:

  • Git support.

  • Debugger interface has been redesigned.

  • Project tree emblems have been redesigned.

  • Several enhancements in image editor.

  • A new dialog for inserting special characters.

  • Braces, brackets, markups and strings are now closed automatically.

  • Two new default stock icons themes.

  • Support for octal numbers in the interpreter.

  • Uninitialized local or private global variables now raise a compiler warning.

  • RDir() is faster.

Compilation and installation

Read the instructions there.

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

Enjoy it !

Changelog

CONFIGURATION

  • Add (short) commit hash and branch name to gb{a,c,i,x}3 --version when compiled from git

  • Put all version compilation constants in version.m4.

DEVELOPMENT ENVIRONMENT

Automatic completion

  • Hide symbols having an underscore in it, unless you have entered an underscore just after the point.

  • Do not hide constants having underscore inside. Only those starting with an underscore.

  • SUPER and ME always show all hidden symbols.

  • Fix word detection and ESC key handling.

  • Use a little bit bigger font size.

  • Use file icon and file preview in file autocompletion.

Code editor

  • Fix current class metadata refresh.

  • Fix procedure popup management so that the focus starts on the current procedure.

  • Close braces, brackets, markups... automatically.

  • Fix completion of words having UTF-8 characters inside.

  • Completion of identifiers is faster now.

  • Move option buttons to the right of the toolbar.

  • Code beautifier should not lose breakpoints and bookmarks anymore.

  • Add groups to the procedure list popup for event handlers and hidden public methods.

  • Try to keep the cursor on the same line after the code has been made pretty.

  • Fix indentation of code beautifier on lines ending with an operator and on strings spread over multiple lines.

  • Add a button and a popup menu to insert today's date in many different formats.

  • The message label now moves if the editor is resized.

  • Added support for nested WITH expressions in code completion.

  • Automatic variable declaration with INC and DEC instructions.

  • Limit the number of colors in the color popup menus.

  • New toolbar button and dialog for inserting special characters.

  • Do not open the signature popup if we are inside a string.

  • Selecting a title line in the procedure pop-up does not move the cursor at the top of the file anymore.

Database editor

  • Add a "no password" option to the connection dialog, to tell that no password is needed when connecting to the database.

  • Display the record counts of tables and SQL queries.

  • Use true toolbars.

  • Use the table stock icon to create the system table icon.

  • Do not try to open a newly created connection if a password is required but not provided.

Debugger

  • Internal redesign of breakpoint management.

  • Breakpoints now can be disabled.

  • Multiple breakpoints can be selected at the same time now.

  • Add buttons to enable or disable breakpoints.

  • Merge the "Local variables" and "Current object" panels in one "Debugging" panel put to the left. Put the stack backtrace in that new panel.

  • Merge the "Watch" panel into the "Debugging" panel.

  • Use the console font for the local variable tree.

  • Add a close button on the top right of the debugging panel.

  • When there is no warning anymore, the warning panel now is automatically hidden.

  • Fix the search result panel layout according to the new debugging panel close button.

  • Don't try to save breakpoints when dealing with a "fake" project.

  • Don't allow to change breakpoints while the project is running, as the internal debugger does not support it.

  • Switch to the debugging panel at startup, and automatically switch to the console only when something is written in it.

Form editor

  • Support for custom control coordinates. Not fully finished.

  • Embedding controls in a new container now takes the form family into account.

  • Fix a possible crash when loading forms with Scaled property set to FALSE.

  • Toolbar expanders are now correctly detected.

  • Opening the text property dialog now displays correctly the current value of the property.

  • Use the same font size in the property help as in automatic completion.

  • Fix property help.

  • Double-clicking on the form title now opens the menu editor.

  • Draw project exported controls icons with a square border.

  • Redesign the tooltip.

  • Add a toolbar button that toggles the tooltip visibility, with the F6 key as shortcut.

  • Enhance font popup by grouping font having similar names in the same menu hierarchy.

  • Fix position of controls dropped from the toolbox.

  • Redesign the menu editor view.

Help browser

  • Always display buzy cursor when opening it.

  • Try to guess a monospace font that matches the default font.

  • Use a smaller font size.

  • Don't load the help browser form immediately to speed up IDE starting.

Image editor

  • Add an opacity effect.

  • Fix selection reverse.

  • Fix balance apply.

  • Add some zoom levels.

  • Separate the grid resolution and the grid snap.

  • The keyboard arrows now move the current paste or the current edited selection.

  • Limit the clipboard history to 16 entries.

  • Enhance the behaviour of the "paste" tool.

  • Use custom mouse cursors that are more visible on a gray background.

  • Change default toolbar icons.

  • Setting the grid snap to zero is now equivalent to default half-pixel snap.

  • Add optional diagonals to the grid.

  • Highlight the last point with the "draw" and "erase" tool.

  • The ALT key is now used for rotating or drawing a line with an angle that is a multiple of 15 degrees.

  • Display fractional coordinates in the tooltip.

  • Fix zero width line drawing.

  • Double-click now hides the selection, and single click never hides it.

  • Fix rectangle selection with SHIFT key.

  • Using SHIFT with the draw tool allows to pick a color from the current image.

  • Redesign the tooltip.

  • Add a toolbar button that toggles the tooltip visibility, with the F6 key as shortcut.

  • Fix undo/redo management.

Image selection dialog

  • Cannot select a void icon anymore.

Main window

  • Add a "reload project" menu entry.

  • Menu buttons of the main toolbar are now correctly disabled like standard menus.

  • The "Tools" menu came back.

  • Add a menu entry in the "run with arguments" menu that opens the project property dialog directly on the "Arguments" tab.

  • The visibility of some toolbar icons was incorrectly managed after a project state change.

  • Add a toolbar menu button for version control.

Open project dialog

  • The project filter now takes the project version into account.

Option dialog

  • Change the look of the background panel of the option dialog.

  • Add an option to toggle automatic closing of braces, brackets...

  • Remove stock themes from the theme list as they are now returned by the Stock.Themes property.

  • Add an option not to separate static symbols in the editor methods selector.

  • Add a project tab to the option dialog for projects global options.

  • Remove unused source archive configuration.

Output console

  • Replace "\n" by "\r\n" when sending text to the output terminal.

  • Add a new button to the console output that suspends the terminal.

  • Don't open console when an external command emits a message.

  • Ensure that the terminal screen width is accurate even if the output console has not been shown yet.

Packager wizard

  • Add a button to create the package immediately if possible.

  • Add "education" & "golang" install groups to debian and ubuntu distributions.

Profiler

  • Add the total time minus time spent in the event loop outside of Gambas functions in the window title.

Project creation dialog

  • Remove old project creation dialog.

  • Really disable filter in project creation dialog.

  • Add a web form project template.

Project properties dialog

  • Library information is correctly refreshed when a library has been installed or uninstalled.

  • Add a version control tab with information about current repository.

  • Version control information is correctly refreshed now.

  • Enhance argument editor behaviour.

  • Use SwitchButton control.

  • New project option to show or hide the deprecated components and controls.

Project tree

  • Rework project tree management.

  • A source folder now can be marked as "non translatable". Every source inside will not be taken into account by the translation dialog.

  • Any source file can be marked as not translatable, not just folders.

  • Correctly refresh startup class in all cases when changing it.

  • Refreshing the project tree now keeps the expanded state of expanded items.

  • When a child class is not stored in the same directory of its parent class, its icon gains the link emblem.

  • File emblems are drawn in a more readable way now.

  • Emblem for modified files that must be committed.

  • Renaming now keep the expanded items.

  • Rename files or move them should update all internal data correctly now.

  • The icon of database connections that can be used as a template now use the "exported" emblem.

  • If a project file is a symbolic link to a file of another project, show a menu entry allowing that file to be opened in its project so that it can be modified.

  • Use desktop mime icons for unknown files.

  • Opening an unknown binary file automatically uses the first program associated with its mime type.

  • Do not crash if a file has no mime-type or no associated icon.

  • Modified classes now correctly update their form icons.

Search dialog

  • Replace is correctly disabled when the project is running.

  • You cannot replace in read-only files anymore.

  • Do not crash anymore if the last searched window has been closed.

Software farm

  • Reset to the default farm if the current farm is removed from the farm list.

  • Tighten the categories, and add a vertical scrollbar if there is not enough space to display all of them.

  • Use small icons in buttons.

System information dialog

  • Do not scan /lib if it is a symlink of /usr/lib, and do not store intermediary results.

Text editor

  • Add a toggle button for indenting with tabs or spaces.

  • Add comment and uncomment feature, according to the type of the file currently edited.

  • Move option buttons to the right of the toolbar.

  • Add a button and a popup menu to insert today's date in many different formats.

  • Add pretty print of CSS, C, C++, and Javascript files.

  • Fix error message popups displayed in standard editor.

Translation dialog

  • The translation verification button always move to the next problem.

  • Add the number of untranslated strings in the statistics.

  • Compute statistics faster.

  • A translation could be lost when a class or a form us marked as not to be translated.

  • A failing msgmerge command does not prevent the loading of the translation file.

  • Better error message dialogs.

  • Generate missing .mo files at each compilation, according to the current language in use. The project LANG environment variable defined in the project property dialog is taken into account.

Version control

  • Redraw some icons.

  • Do not crash when there is nothing to commit.

  • Fix parsing of svn commands run in a virtual terminal.

  • Implement commit on git support.

  • Remember last commit log.

  • Committing with git automatically pushes to origin.

  • Resize commit window at opening widely.

  • Always display commands output if requested, but once.

  • Allow commit user & password to be remembered.

  • Don't print password prompts twice.

  • Commit window got a "do not push" check box if Git is in use.

  • Support for ssh asking to confirm unknown hosts.

  • Ability to switch to another branch.

  • Print shell command output if there was an error.

  • Don't reload project if switching branch fails.

  • Modified state is now correctly refreshed when files are saved.

  • Fix update of conflict flag when saving a file.

  • Added files are now marked as modified with Git.

  • Don't crash when opening a external file.

  • Fix handling of metadata of files not stored in the project. No infinite recursion anymore.

  • Projects can be put under version control. A new Git repository is created for the project if no parent Git repository is found.

  • Git repository without remote are not pushed.

  • Putting a project under version control with Git works correctly now.

  • Implement Git conflict solving.

  • If there is nothing to commit, and if the repository has a remote origin, then pushing is possible.

  • Add an option to enable or disable version control management.

  • The subversion specific dialog has been removed, and is replaced by a commit dialog and sub-menu entries in the "Project" menu.

  • Conflicting files have now their own editor. Solving conflicts is done from that editor. Beware that binary files are not supported yet!

Welcome dialog

  • Quits if loading an external file fails.

  • The project filter entered in the welcome dialog is now transmitted to the open project dialog.

  • Do not crash anymore when clicking many times on the project remove icon in recent project list.

  • Removing a project from the recent project list should not crash anymore.

Miscellaneous

  • About dialog: Little redesign of the introduction of the about message.

  • Create file dialog: Add a forgotten space after parent class label.

  • File properties: Undoing the changes correctly resets the change tab.

  • Image selection dialog: Correctly define image files filter.

  • Update background images.

  • Add .settings to the .gitignore files of projects.

  • Do not run konsole with arguments it does not understand anymore for no reason.

  • Allow relative symbolic links of imported files to go up six directories instead of four.

  • Fix analyze of boolean constants of the current project.

  • Redraw many icons.

  • Don't open the console if the compilation is successful.

  • Update French translation.

  • Add support for gb.gui.qt.opengl.

  • Fix a typo in the author list.

  • Start making some icons 32x32 pixels for a better look in big toolbars.

  • Fix some icons that were too dark.

  • New icon emblem for symbolic links.

  • Rename source code directory Subversion as VersionControl.

  • Browsing the project after a file has failed to open does not crash anymore.

  • Update Gambas fonts.

  • Form emblems now take the class file into account.

  • Don't use file emblems in menu and workspace icons.

  • Fix the width of SwitchButton according to its new look.

  • Redraw some class symbol icons.

  • Don't crash when opening a newly created project.

  • Update financial contributors.

  • Automatically update the copyright date in the licence file.

  • Update IDE usage text.

  • The "Update all forms" action now do not crash anymore on forms that do not use the form editor.

  • Update private and mailing-list address when sending a crash report.

  • Support for the new Spring control.

  • Use the new Spring control here and there.

  • IDE startup is faster now, by loading the help browser as late as possible.

  • Get rid of uninitialized variables warnings.

  • Minor optimizations in class metadata management.

  • Update error messages.

  • Fix an incorrect test indirectly detected by the recently fixed compiler static datatype checking.

  • Use the same stock grid icon in all editors.

  • Ensure that path arguments are quoted when using the SHELL instruction.

  • Redesign the insertion color menu and dialog.

  • Use new stock icons.

  • Make the Gambas theme current line color lighter, so that there is more difference with the selection color.

  • Using pretty printing on load or save does not crash anymore.

  • Do not write the comment line # Compile with Gambas 3.X.X in the .project file anymore.

  • Fix typo in German translation.

  • Use the new "vector" stock icon for svg images in the project.

  • Use the "vector" stock icon for .svgz files too.

  • Use system tooltip colors for form and image editor tooltips.

  • Support for the new interpreter error message "Free object referenced".

  • Use text colors inverted for form and image editor tooltips.

  • Do not crash if the current project is deleted by another process.

  • Fix Gambas 2 to Gambas 3 project conversion.

  • Remove all explicit form positions, so that they are now automatically centered.

  • Move lock icons to the right of the toolbar.

  • Update source archives exclude list.

  • Update support file.

WIKI

  • The {@classes} command can take arguments to add custom classes to the list of classes.

  • Login works correctly again.

  • New design.

  • Add search field for connected users.

  • New project icon.

  • Some fixes in style sheet.

  • Fix scrolling to an anchor with a CSS trick.

WEB SITE MAKER

  • Update to recent version.

  • Add a link to the playground made by Adrien.

  • The download link now points at gitlab.

INTERPRETER

  • New syntax for octal numbers: &Oxxx.

  • Add an API that allows to create an array class before instanciating it.

  • Collection.Last is a new property that returns the key of the last element of the collection, or NULL if the collection is void.

  • Collection.First is a new property that returns the key of the first element of the collection, or NULL if the collection is void.

  • Process.Wait() does not freeze anymore when the child process actually ends before checking the end of the process just after having run it.

  • Flush the process outputs when it stops immediately after having been launched.

  • Fix pseudo-terminal initialization when running an external process with EXEC or SHELL.

  • When a process is run with a pseudo-terminal, don't set the ECHO flag, and clear the ONLCR flag.

  • Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

  • Initialize pseudo-terminals with ECHO and don't clear OCRNL flag. This is not compatible with previous versions, as now, by default, printing a NL will become CR+NL through the pseudo-terminal.

  • Initialize master terminal of processes run inside a pseudo-terminal before forking.

  • Initialize pseudo-terminal with ICRNL too.

  • Don't use CLOCK_MONOTONIC_RAW if the constant is not defined.

  • Remove undocumented feature in format strings.

  • Take \ escape character into account correctly in format strings.

  • Translate comments in english.

  • RDir() now does less stat() system calls, by assuming that the number of hard links of a directory is its number of sub-directories plus two.

  • Dir() does not loop indefinitely anymore when browsing an archive file with a void pattern.

  • Add an API that returns the first element of a hash table.

  • Rework the stream interface, so that the stream read & write methods just have to actually read or write the data.

  • Fix internal stream buffer management, and STREAM_read_max() function.

  • Fix a crash when an error occurs inside a constructor that is called from another constructor.

  • Fix error management that could lead to other potential crashes.

  • Array construction operator now accepts class names as Variants.

  • Val() and Eval() now correctly read binary and hexadecimal numbers with the maximum number of digits.

  • Oct$() is a new functions that converts an integer to its octal representation.

  • Lof() should work correctly now on streams having a specific implementation of Lof() function.

  • Correctly attach newly created objects.

  • Fix internal renaming of overridden classes, and use the ^ character instead of > to name them.

  • The gb.Descent flag could be erased when sorting objects implementing the _compare special method.

  • gb.Match is a new constant that indicates a string comparison using the PCRE MATCH operator.

  • Component.Version is a new property that returns the version number of a loaded component. If the component is a user library, you get the version number of that library. Otherwise you get the current Gambas version.

  • Component.Library is a new property that returns if a component is actually a user library.

  • LOCK instruction now can be used on existing files without clearing them.

  • Use a dedicated stream for locks, so that the File object returned by LOCK cannot be used for reading or writing the locked file.

  • Fix symbol table binary string comparison for non-ASCII characters.

  • When a task terminates, clean up the temporary directory and exit.

  • Tasks do not print memory and objects clean up warnings anymore.

  • Remove the task output serialization file when it is freed.

  • Don't crash when building a collection with the bracket operator if one of the value is a class.

  • Class.IsLoaded() is a new static method that returns if a specific class is loaded.

  • Fix an uninitialized flag in streams, that make watching real files for reading incorrectly raise the Read event.

  • Fix a possible memory leak when using the Stream.End() method.

  • Deleting a collection item while the collection is enumerated does not crash anymore.

  • Writing to a stream does not crash anymore if the stream is closed while the data is sent in several shots. Socket stream implementation should not close the stream while writing.

  • The AND, OR, XOR and NOT operator now can take a Date, that is converted to boolean.

  • Fix the AND, OR, and XOR operator.

  • New API for referencing a Gambas string.

  • Raise a more explicit "No return value" error when trying to get the return value of a task that didn't return anything.

  • When converting a string to a date with Val(): if the year begins with a zero character, then it is not converted to years between 1931 and 2030 if it is lower than 100.

  • When formatting a date, the number of y is now the minimum number of digits used for displaying the date year.

  • RDir() now works correctly when browsing executable directories.

  • Add a boolean flag in the class structure not to try to call the _free special method if there is not.

  • Raise an error if a object being freed has been referenced by its _free special method.

  • Add a new message error for free object being referenced.

  • UTF-8 string routines position cache now should behave correctly in all cases.

COMPILER

  • New syntax for octal numbers: &Oxxx.

  • The WITH's expression is now evaluated before entering the WITH's scope.

  • Fix a typo in gbc_trans.h header.

  • Add support for terminal forms (.termform file extension).

  • Make MOVE KILL a synonymous of MOVE DOWNTO .

  • Compile breakpoints for functions whose name begins with a $.

  • Oct$() is a new functions that converts an integer into its octal representation.

  • Allows newlines before a closing ] in array/collection creation operator.

  • Fix some gcc warnings.

  • Sort the internal project class list to make the contents of object files predictable.

  • Correctly raise an error if a quoted identifier starting with { has no corresponding }.

  • Add a warning for uninitialized local and private global variables.

  • Fix a warning message typo.

  • Fix Min() and Max() arguments datatype static checks.

  • Fix parsing of quoted identifiers.

  • Print a warning if the AND, OR or XOR operator mix Boolean and Integer datatypes.

  • Do not raise an error when analyzing the AND, OR or XOR operator.

  • Fix static datatype analysis of DIV and MOD operators.

ARCHIVER

  • The archiver now uses a predictable file order when creating an archive.

  • scandir() work is now correctly freed.

INFORMER

  • Components now can include information for a list of alternatives component. The first one available will be included.

SCRIPTER

  • Remove an unused local variable.

GB.CLIPPER

  • Use a power of two as internal coordinate scale.

GB.DB

  • SqlRequest.Where() method now implicitly uses the AND operator.

  • A table cannot have two fields whose names only differ by case anymore.

  • Remove the no_case database driver flag.

  • Correctly initialize Connection object from Connections collection when that connection has been switched between sqlite and non-sqlite type from the IDE.

  • Result.All() is a new method that returns an array of the values of a specific field from each record. It is about twice faster than the equivalent code written in Gambas.

  • Connection.Handle is correctly declared now.

  • Connection.LastInsertId is a new property that returns the value of the serial field used in the last inserted row. It is supported on MySQL, PostgreSQL and SQLite3 only.

  • Correctly quote index fields when generating an UPDATE or DELETE request in Result.Save() and Result.Delete() methods.

  • Correctly quote table names when using schema.

  • Support for case sensitive schema names.

GB.DB.FORM

  • Make test folder untranslatable.

  • Add some test files.

  • Add some new .mo files.

  • Redraw the control icons.

  • DataView: Long integers are now right aligned like other numbers.

  • DataSource: Better support of SQL queries in the Table property. Using a SQL query now make the DataSource automatically read-only.

  • DataView: Always display the error balloon on the accurate cell.

  • Correctly quote field names everywhere.

GB.DB.MYSQL

  • Support for Connection.LastInsertId.

GB.DB.ODBC

  • Define unixODBC-only constants if they are not available to enable other ODBC backends

  • Fix a warning.

  • Raise an error if Connection.LastInsertId is used.

GB.DB.POSTGRESQL

  • The function that returns the index of a result field from its name is now really case unsensitive.

  • Keep the case of field names when creating a table.

  • Do not use the "no_case" flag.

  • Support for Connection.LastInsertId.

  • Support for case sensitive schema names.

GB.DB.SQLITE2

  • Raise an error if Connection.LastInsertId is used.

GB.DB.SQLITE3

  • Correctly detect the datatype of query columns that are expressions.

  • Support for Connection.LastInsertId.

  • Integer computed fields are always 64 bits.

GB.DBUS

  • When marshalling from DBus to Gambas, create the array classes before instanciating them.

  • Use one watcher by bus, not one for all buses.

  • Correctly initialize DBus connection slot for managing DBus signals.

  • Fix property retrieving implementation.

  • Fix the DbusProxy._Invoke() hidden method so that it can be called directly. This is useful if there are property or method names that are case-ambiguous.

GB.DBUS.TRAYICON

  • Assume Unity indicators when the desktop is not KDE.

GB.DESKTOP

  • Fix DesktopMime.FromFile() method. Mime patterns having a case sensitive flag now are correctly matched. But the flag itself is still ignored, as apparently the mime info files content is incoherent.

  • Fix Desktop.GetFileIcon().

  • Desktop.RemoteDisplay is a new property that returns if the application is connected to a remote display.

  • Load gb.desktop.x11 only if $XDG_SESSION_TYPE is not wayland.

  • Remove static dependency on gb.desktop.x11 component.

  • Use "vector" stock icon for .svg and .svgz files in the Desktop.GetFileIcon() method.

  • DesktopFile: Properties should be correctly writable now.

GB.EVAL

  • New syntax for octal numbers: &Oxxx.

  • Highlight.Custom is a new constant that is the first integer constant that can be used for custom highlighting state.

  • Fix some little differences with compiler sources.

  • Fix parsing of quoted identifiers.

GB.EVAL.HIGHLIGHT

  • Custom CSS properties (i.e. -webkit-, -mozilla-, and so on...) are not displayed as errors anymore.

  • New CSS properties and values list.

  • Add an initialization module that generates CSS properties and values from www.w3schools.com website.

GB.FORM

  • Bookmarks: The path of the bookmarks is now editable, with an automatic path completion.

  • ColorButton: Rewrite its implementation, so that it does not crash anymore with GTK+.

  • ColorPalette: Scrolling with the mouse wheel now works correctly when the Border property is set.

  • Completion: Hide the popup if the left or right key is pressed.

  • Completion: Add a Close() method that closes the popup if it is about to be shown. Useful if the completion is associated with a TableView editor.

  • DateBox: Add a Text read-only property so that ValueBox.Text does not crash anymore in date mode.

  • DateBox: Clicking on a date automatically closes the date chooser popup.

  • DateChooser: Raise a Click event when a date is clicked in the inner calendar.

  • FileProperties: Display the symbolic link contents on its own information row.

  • FileProperties: Display symbolic link target once.

  • FileView: Add a few default file icons.

  • FontChooser: Display font in a treeview by grouping fonts having similar names.

  • FontChooser: Ignore case when sorting fonts.

  • ImageView: ZoomFit() now takes the margin size as an optional argument. The default margin is now zero.

  • MenuButton: Refresh correctly when moving from one MenuButton to another in the same container.

  • MenuButton: Use a flat selected look when the MenuButton is just for opening a popup menu.

  • MenuButton: Fix the button drawing when raising the Click event.

  • MenuButton: Ignore buttons displaying an arrow when searching for other menu buttons while a popup menu is opened.

  • MenuButton: Do not popup a sibling MenuButton if the current one has been closed.

  • SpinBar: Mouse wheel events are not propagated anymore, unless the control is disabled.

  • Stock: Ignore icon theme directories that are symbolic links.

  • Stock: Icon theme names are now capitalized.

  • Stock: Support for new "Gambas" and "Gambas-Mono" icon themes.

  • Stock: Add "Gambas" and "Gambas-Mono" to the icon theme list.

  • Stock: Stock.Sizes is a new property that returns the list of stock icon default sizes.

  • SwitchButton: Raise the Click event after the animation display has been finished.

  • SwitchButton: New "Chromium-like" design, with no "on" / "off" text anymore.

  • TableView: Edit() works correctly again when called from a DblClick event.

  • TabPanel: Keyboard shorcuts now only take visible tabs into account.

  • TabPanel: The tab close button will not appear incorrectly anymore.

  • TabPanel: Draw tab close buttons so that they adapt to the desktop scale.

  • TabPanel: Tab icons are now stretched if they are too big for the tab bar height.

  • ValueBox: Remove default alignment and add an Alignment property.

  • Change "exec" icon for breeze themes.

  • Fix "exec" stock icon for dark breeze theme.

  • Make test folder untranslatable.

  • Correctly detect local icon themes.

  • Add some test files.

  • Remove some uninitialized variables.

  • Fix theme searching routine.

  • Support for a new "tiny" stock icon size.

  • New stock icons.

  • Fix some icons for breeze themes.

  • Support for stock icons of any size, with automatic stretching.

GB.FORM.DIALOG

  • Make test folder untranslatable.

  • Dialog.NoUser is a new property that tells the ask password dialog not to ask for a user.

  • Dialog.Password is a new property that returns the password entered in the ask password dialog.

  • Dialog.User is a new property that returns the user entered in the ask password dialog.

  • Dialog.AskPassword() is a new method that displays a modal dialog box that asks for a user name and a password, and that can remember them provided that the gb.settings and gb.desktop components are loaded and the Dialog.Key property is set.

  • Dialog.AskPassword does not add gb.form.dialog to Dialog.Key to store the password.

  • Dialog.Key is now reset after a dialog has used it.

  • Don't use gb.desktop, it prevents the component from compiling during installation.

GB.FORM.EDITOR

  • TextEditor: Update SideBar view font only when needed, and set the Font property once.

  • TextEditor: Always raise Change events before Cursor events.

  • TextEditor: Refresh the sideview immediately when the style changes.

  • TextEditor: Fix a possible crash when the side bar preview is hidden.

  • TextEditor: If the cursor is at the end of the line, keep it there when the line is rewritten by the syntax highlighter.

  • TextEditor: Hitting RETURN or ENTER inside braces, brackets, markups now automatically inserts an indented line.

  • TextEditor: Selecting a character with the mouse is more accurate now.

  • TextEditor: Bold weight now follows font size.

  • TextEditor: TabSize property can be equal to 1.

  • TextEditor: TabIndent is a new property that tell if tabs are used for indenting instead of spaces.

  • TextEditor: Fix ALT+Braces shortcut behaviour in Gambas mode.

  • TextEditor: FindNextString() is faster when searching for an ascii string.

  • TextEditor: Draw the sidebar faster, sacrificing beauty.

  • TextEditor: Fix triggering of sidebar refresh.

  • TextEditor: Fix automatic closing of markups.

  • TextEditor: Don't close braces or brackets if we are at the beginning of a string.

  • TextEditor: GetHighlight() is a new method that returns the result of syntax highlighting for a specific line.

  • TextEditor: Move the cursor once when closing braces automatically. That way the IDE automatic completion stays open.

  • TextEditor: Each style now can have a Background property that defines its background color.

  • TextEditor: Up to 32 highlighting styles can be defined. Custom highlighting styles starts at Highlight.Custom index.

  • TextEditor: Automatically close quotes only in Javascript, CSS and SQL modes.

  • TextEditor: The side bar contents is now still visible on modified or saved lines.

  • TextEditor: SaveCursor() and RestoreCursor() are two methods for saving and restoring the cursor and selected text positions.

  • TextEditor: Don't store breakpoints and bookmarks in each line, but in global collections.

  • TextEditor: Undo & redo now take the breakpoints and the bookmarks into account.

  • TextEditor: Take wayland into account when testing for a remote desktop.

  • TextEditor: Fix highlighting of matching indentations.

  • TextEditor: Draw the side view tooltip in a more compact way.

  • TextEditor: Fix the values displayed in the side view tooltip.

  • TextEditor: The side view does not allow to move the view past the last line anymore.

  • TextEditor: Fix the side view tooltip contents again.

  • TextEditor: Middle click on buttons scroll to the beginning or the end of the file.

  • TextEditor: CloseBraces is a new boolean property that defines if braces, brackets, markups, strings... must be automatically closed.

  • TextEditor: Mode is a new property that defined the behaviour of the editor. It takes the same values as the Highlight property.

  • TextEditor: GetIndent() is a new method that returns the characters that make the indentation of a group of lines.

  • TextEditor: Don't automatically close a brace if the cursor is already between opening and closing braces. Just move the cursor.

  • TextEditor: Enhance automatic string close behaviour.

  • TextEditor: Support for disable breakpoints.

  • TextEditor: Highlight matching indentations.

  • TextEditor: Change the way bookmarks are drawn.

  • TextEditor: Fix a potential crash when some editor views are invalid.

  • TextEditor: Remove an unused global variable.

  • Add some test files.

GB.FORM.MDI

  • Toolbar: Small redesign of the toolbar configuration dialog.

  • Toolbar: Configuration dialog now correctly display big toolbar button icons.

  • Toolbar: Use the toolbar item font when drawing its drag icon.

  • Toolbar: Use an hash pattern to draw toolbar in configuration mode.

  • Toolbar: Add a dark version of the toolbar configuration hash pattern.

  • Toolbar: The minimum height is now 80% of the font height.

  • Toolbar: Disabled controls are now correctly managed when the toolbar is in configuration mode.

  • Toolbar: Correctly manage the disabled state of the item when dropping it on a toolbar.

  • Toolbar: Size is a new property that returns the toolbar icon size as a stock string size.

  • Toolbar: Redesign the expander, separator and space items icons.

  • Toolbar: Make the toolbar configuration dialog defaut size smaller.

  • Toolbar: Support for a new "tiny" toolbar size.

  • Workspace: Raise the CloseAll event after the close all button has been clicked.

  • Make test folder untranslatable.

  • Update French translation.

  • Shortcut configuration dialog: Use the Shortcut class.

  • Shortcut configuration dialog: Display action icons correctly.

GB.FORM.STOCK

  • New monochrome stock icon set named "gambas-mono".

  • Replace the old "gambas" stock theme by a colorized version of "gambas-mono".

  • Support for multiple sets of stock icons.

  • Automatically handle mime types icons.

  • Add support for ttf mime types.

  • Automatic support of dark themes, by using the new Image.Invert() method.

  • New stock icon "vector".

  • Use the "vector" icon for svg mime type.

  • Add a 128 pixel version of the Gambas logo to the gambas stock theme.

GB.FORM.TERMINAL

  • TerminalView: When a key is pressed, automatically scroll to the bottom of the view.

  • TerminalView: CursorHome command now takes the scroll margins into account as required.

  • TerminalView: Fix management of scroll margins.

  • TerminalView: CursorLeft and CursorRight commands now work correctly if the terminal has scrolled.

  • TerminalView: Fix management of ENTER and RETURN keys.

  • TerminalView: When a process is run inside the terminal, set the ECHO and ONLCR flags automatically.

  • TerminalView: Output filter now works correctly when it receives incomplete data.

  • TerminalView: Input() is a new method to send some text to the terminal input.

  • TerminalView: Raise an error now if we try to execute a process or connect streams whereas the terminal is already in use.

  • TerminalView: Fix Paste() method.

  • TerminalView: Fix management of terminal connected to explicit streams.

  • TerminalView: Ignore XTerm specific commands other than title setting.

  • TerminalView: Title is a new property to read or set the terminal title.

  • TerminalView: The mouse wheel now sends up and down keys when we are not in mouse mode, and if there is nothing to scroll.

  • TerminalView: Reorder some tests in escape codes analyze.

  • TerminalView: RETURN and ENTER key must send a NL character, not a CR.

  • TerminalView: Take the bold character width into account for character size.

  • TerminalView: Use more visible default colors for dark backgrounds.

  • TerminalView: Triple click now selects the current line.

  • TerminalView: Double click now selects the current word.

  • TerminalView: Fix line drawing routine.

  • TerminalView: Hitting RETURN or ENTER sends a \r instead of a \n by default.

  • TerminalView: Terminal.Reset() now takes an optional argument to keep the cursor position.

  • TerminalView: TerminalView.Suspended is a new property that allows to suspend or restart the terminal.

  • TerminalView: The scrollbar should now be correctly hidden in all cases.

  • TerminalView: LineHeight is a new property that returns the screen lien height.

  • TerminalView: CharWidth is a new property that returns the screen character width.

  • TerminalView: ScreenWidth is a new property that allows to define the screen width in the case AutoResize is FALSE.

  • TerminalView: AutoResize is a new property that defines if the screen width automatically fits the view.

  • TerminalView: Resize the terminal less often when the terminal view is resized.

  • TerminalView: Add a default popup menu that allows to copy, paste, and clear the terminal.

  • TerminalView: Process output is sent to the terminal each 50 ms now, instead of 250 ms before.

  • TerminalView: Remove "Erase screen" optimization.

  • TerminalView: Fix "EraseStartOfLine" VT-100 command.

  • Update .gitignore.

  • Redraw the control icon.

GB.GTK

  • Application.DblClickTime is a new property that returns the double-click time interval.

  • Fix minimum value of Font.Grade property.

  • Define the parent window of a modal dialog the same way in all GUI components.

  • Clicking outside of an opened popup window now automatically closes it.

  • Use gdk_new_cursor_from_name() instead gdk_new_cursor().

  • Don't call the event loop after changing Application.Busy.

  • Setting Application.Busy now has an immediate effect.

  • Ignore Application.Busy when displaying a message box.

  • Image.FromString() and Picture.FromString() are two new methods that load an image from the contents of a string.

  • Menu.Closed is a new property that returns if a popup menu is closed.

  • Clipboard.HasChanged is a new property that returns if the clipboard contents has changed since the last call to Clipboard.Paste().

  • Implement the menu proxy management.

GB.GTK3

  • Application.DblClickTime is a new property that returns the double-click time interval.

  • Fix Style drawing methods, as GTK+3 breaks again its themin API (for the second time? third time? I dunno).

  • Fix minimum value of Font.Grade property.

  • Define the parent window of a modal dialog the same way in all GUI components.

  • Clicking outside of an opened popup window now automatically closes it.

  • Use gdk_new_cursor_from_name() instead gdk_new_cursor().

  • Don't call the event loop after changing Application.Busy.

  • Setting Application.Busy now has an immediate effect.

  • Ignore Application.Busy when displaying a message box.

  • Image.FromString() and Picture.FromString() are two new methods that load an image from the contents of a string.

  • Menu.Closed is a new property that returns if a popup menu is closed.

  • Clipboard.HasChanged is a new property that returns if the clipboard contents has changed since the last call to Clipboard.Paste().

  • Implement the menu proxy management.

GB.GUI

  • Includes information of the first available gui component.

GB.GUI.BASE

  • ColumnView: Do the internal automatic column resize only for TreeView and ListView.

  • GridView: Prevent a possible crash during multiple selection.

  • GridView: Do not reset row heights when the font changes.

  • GridView: It now raises a Font event when its font changes.

  • GridView: The Selection property cannot return invalid rows anymore.

  • GridView: Correctly react to font changes.

  • GridView: Use a lighter version of the SelectedBackground color instead of a light gray when the control loses the focus.

  • HSplit: MinSize is a new property that allows to define the minimum size of a pane.

  • IconView: Fix rename box.

  • Spring: This is a new control that is just like a Panel with the Expand property set.

  • TreeView: The height of newly created items is now correctly updated when they are explicitly inserted after the last element of their parent.

  • TreeView: Center vertically the rename box.

  • TreeView: Setting the Layout property now works on a copy of item list.

  • TreeView: Raise the Expand or Collapse events as late as possible.

  • TreeView: Correctly react to font changes.

  • TreeView: TreeView[].MoveFirst() and TreeView[].MoveLast() were inverted.

  • TreeView: Don't call the GridView default drawing routine in ListView, TreeView, and ColumnView.

  • TreeView: Add Background, Foreground and Font properties to ListView, TreeView, and ColumnView items.

  • TreeView: Layout is a new properties that allow to save and restore the layout of the control, i.e. which items are expanded and which are collapsed.

  • TreeView: ColumnView[].Rename() method now takes an optional argument to indicate the column to rename.

  • VSplit: MinSize is a new property that allows to define the minimum size of a pane.

  • Remove a test form.

  • Paint.DrawRect() is a new method that draws a rectangle frame.

  • Shortcut: Write modifier keys with the first letter capitalized only.

GB.GUI.OPENGL

  • Includes information of the first available gui OpenGL component.

GB.GUI.QT

  • Includes information of the first available Qt component.

GB.GUI.QT.OPENGL

  • New Qt OpenGL switcher component.

GB.GUI.QT.WEBKIT

  • Includes information of the first available Qt webkit component.

GB.IMAGE

  • Image.Invert() is a new method that inverts an image. It takes an optional boolean argument that indicates if the color hue must be kept.

GB.IMAGE.EFFECT

  • Define an explicit accurate QImage constructor so that effect methods do not crash anymore.

GB.IMAGE.IO

  • Image.FromString() and Picture.FromString() are two new methods that load an image from the contents of a string.

GB.MAP

  • The shape layer now does not display ShapeItems when their current display size at zoom is lower than 2 pixels.

  • _ShapeLayer have a generic FillColor too.

  • Now ShapeItems have a FillColor property that allow to define filling color.

  • AddCircle Fuction on _MapShape Layer allows to display circles.

  • Now the map does not move when zooming in.

  • Fix a forgotten symbol indirectly detected by the recently fixed compiler static datatype checking.

GB.MARKDOWN

  • Index anchors now use id attribute instead of name.

GB.MEDIA

  • MediaControl: Support for GStreamer messages or properties being a GValueArray. They are returned as a Variant[].

  • Support QT default image format when extracting a video frame.

GB.MYSQL

  • Fix the mysql logo that made libpng displays a warning.

GB.NET

  • SerialPort: Port the stream routines to the new interface. They just read and write directly now.

  • Socket: Don't try to read just the available data. Just read what the users wants, and return the data actually read.

  • Socket: Don't implement custom Lof() and Eof() stream methods. Use the default ones.

  • Socket: Close socket on writing only if there is an error.

GB.NET.CURL

  • FtpClient: Allow ftps:// protocol.

  • HttpClient.Download() is a new static method that download an HTTP url and return the result as a string.

  • HttpClient.Redirect is a new boolean property that enables automatic redirection following.

GB.NET.SMTP

  • SmtpClient: Fix the sent date header.

GB.NOTIFY

  • Don't crash anymore when releasing watches.

GB.OPENSSL

  • Cipher.DecryptSalted() doesn't return rubbish after the decrypted text anymore

GB.PCRE

  • Fix a gcc warning.

GB.QT4

  • DblClick event also raises the MouseDown event just before, as in gb.gtk.

  • Application.DblClickTime is a new property that returns the double-click time interval.

  • Fix ComboBox look with Oxygen style.

  • Add an environment variable that toggles key event debugging messages for bug #1161.

  • More keyboard events debugging messages.

  • Fix menu proxy management that could lead to a crash.

  • Fix pasting from clipboard when data is in UTF-16 or UTF-32 format.

  • Share Font.Grade minimum and maximum values between QT and GTK+ components.

  • Define the parent window of a modal dialog the same way in all GUI components.

  • Clipboard.Paste() correctly converts image to ARGB premultiplied format.

  • Ignore Application.Busy when displaying a message box.

  • Image.FromString() and Picture.FromString() are two new methods that load an image from the contents of a string.

  • Menu.Closed is a new property that returns if a popup menu is closed.

  • Clipboard.HasChanged is a new property that returns if the clipboard contents has changed since the last call to Clipboard.Paste().

  • Fix render of Slider controls with Breeze theme.

  • Never disable the Qt GLib event loop, even on KDE.

  • Don't center modal forms if they have been explicitly moved.

GB.QT5

  • DblClick event also raises the MouseDown event just before, as in gb.gtk.

  • Application.DblClickTime is a new property that returns the double-click time interval.

  • DblClick event raises the MouseDown event in all cases now.

  • Fix ComboBox look with Oxygen style.

  • Add an environment variable that toggles key event debugging messages for bug #1161.

  • More keyboard events debugging messages.

  • Fix menu proxy management that could lead to a crash.

  • Don't crash when generating missing leave events after having closed a popup menu.

  • Remove some warnings.

  • Define the parent window of a modal dialog the same way in all GUI components.

  • Clipboard.Paste() correctly converts image to ARGB premultiplied format.

  • Ignore Application.Busy when displaying a message box.

  • Image.FromString() and Picture.FromString() are two new methods that load an image from the contents of a string.

  • Menu.Closed is a new property that returns if a popup menu is closed.

  • Get rid of spurious "selection too old" messages from Qt xcb platform plugin.

  • Clipboard.HasChanged is a new property that returns if the clipboard contents has changed since the last call to Clipboard.Paste().

  • Remove a debugging message.

  • Fix render of Slider controls with Breeze theme.

  • Workaround a new bug in QT5 that prevents some bold fonts from being seen.

  • Never disable the Qt GLib event loop, even on KDE.

  • Don't center modal forms if they have been explicitly moved.

GB.QT5.EXT

  • Add the Dial class from gb.qt4.ext

  • Add the LCDNumber class from gb.qt4.ext

GB.REPORT2

  • Make some strings untranslatable.

  • Make test folder untranslatable.

GB.SDL2.AUDIO

  • Do not use mixer initialization constant if they are not defined.

GB.TERM

  • Use preprocessor to leave out features not available in Cygwin.

  • Remove a debugging message.

  • Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

GB.TERM.FORM

  • Some helptool for debugging : TermWindows now accept 3 values.

  • TermListBox: Changing the text of a line just refresh the line.

  • TermWindow: The maximize property now truely work. And the

  • TermWindow: Do not try to use desktop size with maximized to false

  • Make the component depend on gb.term.

  • New TermListBox widget.

  • Add all the stuff needed for the ide designer.

  • Declare a few "_Properties" constants and a test TermForm to check IDE support.

  • Add control pictures.

  • Use relative path for control picture.

  • Reduce the output volume during list browsing.

  • Dutch translations.

  • Add some _DrawWith constants.

  • Add coordinates properties to TermControl.

  • Add the ShowModal() method.

  • Make the object placement more logical. the 0,0 pos now is the left corner after the border.

  • Better management for title bar showed now only when there is a border.

  • Add some visible properties to TermForm like Resizable, Border and arrangement.

GB.UTIL

  • CsvFile: Handle relative paths as expected.

  • Date.ToUTC() now actually returns the date, instead of returning nothing.

  • String.FromHTML() is a new method that extract text from a piece of HTML. Named entities are mostly not supported. But everything enclosed in a <script> or <style> markup is ignored.

  • Make String.RemoveDiacritics() faster.

  • Date.ToRFC822() now formats hours, minutes and seconds with two digits.

  • String.ToPhonetic() is a new method that returns a string converted to a phonetic equivalent according to the specified language. Only French is supported at the moment!

GB.UTIL.WEB

  • JSON.Encode() now correctly handle null variants or objects.

  • Make JSON.Decode() faster.

  • JSON.ToString() and JSON.FromString() are now synonymous for JSON.Encode() and JSON.Decode().

GB.WEB

  • Activate WAL mode and disable WAL synchronisation for sessions based on a SQLite database.

  • Support for application/x-www-form-urlencoded requests without content length. If the content length is not specified, everything is read up to 8192 bytes.

GB.WEB.FEED

  • Dutch translations.

GB.WEB.FORM

  • Updated Dutch translations.

  • WebTimer.Stop() does not prevent the timer to be restarted anymore.

  • Add a javascript function that copies the contents of a text input or text area to the clipboard.

  • Update .gitignore.

GB.XML

  • Revert special Cygwin handling as memrchr is available with newlib's GNU extensions.

  • Remove deprecated dynamic exception specifiers.

  • Fix crash when using XmlElement.RemoveAttribute().

  • Use NULL instead of the emtpy string in function declarations.

  • The child search methods do not match the parent node anymore.

GB.XML.HTML

  • Fix detection of existing meta charset tags when switching to HTML5.