Gambas 3.15.0
What's new?
This release provides the following main features and fixes:
-
A new unit test system made by Christof Thalhofer and Tobias Boege.
-
A new diff mode in the IDE code editor.
-
The ability to save and restore custom IDE layouts.
-
Enhanced support for dark themes.
-
Many fixes in the packager.
-
A new trace mode in the interpreter.
-
A new
OPEN NULL
syntax for opening a null stream.
-
A new
PEEK
instruction.
-
A new
WAIT NEXT
instruction.
-
The
&=
operator is now hundreds of times faster.
-
New special methods that allow any object to be serialized.
-
A new faster
gb.web.gui
component that replaces gb.web.form
.
-
A new
gb.poppler
component that replaces gb.pdf
.
Compilation and installation
Read the instructions
there.
If everything was fine, type "gambas3" to run the development environment.
Enjoy it !
Changelog
CONFIGURATION
-
Switch version to 3.15.0.
-
Switch bytecode version 3.8 to 3.15.
-
Change the order of compilation of components made in Gambas, so that
gb.scanner
is compiled after gb.form.print
, as the project uses it.
-
Remove INSTALL.html file. It was including deprecated links that now points at spam.
-
Update mail address in appdata xml file.
-
gb.ncurses now compiles on systems which only provide wide-character versions of ncurses pkg-config files.
-
Update AUTHORS file.
-
Compile
gb.form.stock
before gb.form
now that is it checked in the gb.form
project components.
-
Fix Gambas e-mail in configuration script.
-
Fix component template generator.
-
Add man pages.
-
Update TODO file.
-
Fix gitlab CI configuration.
DEVELOPMENT ENVIRONMENT
Automatic completion
-
Add
_read
and _write
to the list of special methods.
-
Add
_ready
to the list of special methods.
-
Fix completion of identifiers.
-
Automatically load
gb.test
for automatic completion.
Code editor
-
Add a toolbar button that toggles display of differences with last commit.
-
The automatic completion now appears at the correct position when the view is splitted.
-
Error messages now use the same background as the editor, to ensure they are always readable.
-
When inserting a color, the color dialog is now initialized with the hexadecimal value under the cursor if any.
-
The
THEN
keyword is now automatically inserted if missing.
-
PROPERTY ... USE is taken into account by automatic variable declaration.
-
If you use the PROPERTY ... USE syntax, you have to use the SHIFT key with the ENTER key to automatically insert property handlers.
-
Return value of CLOSE and SHELL / EXEC ... TO syntax are now taken into account by automatic variable declaration.
Database editor
-
The record count is correctly updated now, when records are removed or added.
-
Creating, renaming or removing a table now correctly updates the database template file.
Debugger
-
The stack trace list can be resized.
-
The toggle button that switches between collection or array contents and their symbols does not disappear anymore.
-
The program arguments are now defined through a specific dialog displayed when running the project.
File creation dialog
-
Remember the size of new images.
Form editor
-
Draw the control frame as soon as the Drag event is raised, to try to workaround a drag & drop bug.
-
Add a new possible size to the toolbox.
-
Replace the
toolbar size
option by a button on the toolbox.
-
Replace the
sort properties
option by a button on the property sheet.
-
Support for a diff mode that replaces the gui editor by a text editor showing the differences.
-
Fix default size of virtual controls.
-
Add a information line on the toolbox that displays the name of the current hovered toolbox control, and the component it belongs to.
-
The frame of control dropped from the toolbox should correctly disappear in all cases.
-
Draw the frame of control dropped from the toolbox bigger.
-
Fix the tab order of the control toolbox.
-
Selection of menu icons now allows stock icons again.
-
Toolbox controls icons now adapt to dark themes.
Help browser
-
Support for the new
help
wiki command.
-
Fix behavior of offline documentation.
-
Cancel downloading when using a custom special url.
-
Handle custom array classes in help.
Image editor
-
Fix a possible infinite recursion when refreshing the clipboard tab.
-
Use the new stock icons in the property panel.
-
Draw the grid lines with foreground color.
-
Resize the information tooltip for large coordinate values.
-
The grid configuration gets a sane default the first time it is toggled.
-
Grid configuration is now specific to each editor.
Make executable dialog
-
New design.
-
Add an option that excludes test modules from the executable.
-
The output of the command run after executable has been generated is now put in the IDE console.
-
Ask for a confirmation when making executable if no change has been detected and project version should be incremented.
Main window
-
Fix an ambiguous shortcut: opening file properties dialog is now triggered by CTRL+SHIFT+I.
-
Use a long dash to separate the application name in the IDE window title.
-
Display the current branch in the IDE window title.
-
Refresh the IDE window title only if necessary.
-
Add buttons on top of tab bars to show hidden panels.
-
Add a button to toggle sort by inheritance in the project tree.
-
Remove the
show property help
option.
-
Use tab bar extra buttons for showing project tree, property sheet, control tool box and property help.
-
Add a specific output tab for the unit tests result.
-
Add a
test
button, that run the project in test mode, using the debugger.
-
Reorder debug panel buttons.
-
Add menu entries for toggling most of the debugging environment variables.
-
Adapt the background image to dark themes automatically.
Options dialog
-
Add global interface layout save/restore ability.
-
Provide two default layouts : a default one, and a compact one.
-
Remove "Quiet external commands" option.
-
Remove "Minimize on execution" option.
-
Add a slider for defining the brightness of the background.
-
Make some combo-box a bit larger for some widget themes where their contents is cropped.
-
The invert colors option is now active only on dark themes.
Packager
-
*.deb
packaging now supports spaces in package target directory name.
-
Fix ArchLinux packager.
-
Take package release number into account in
rpm
& deb
dummy package dependencies.
-
Add distribution suffix in rpm support package dependencies.
-
Fix refresh of extra dependencies and additional files tables.
-
New option to add the project major version number to the package name.
-
Underscores are now allowed in extra dependencies package names.
-
Emit dependencies for component projects.
-
Package directory is now stored in the project configuration file.
-
Fix deb package
clean
directive so that it only deletes the .gambas
directory and the executable.
-
Do not use compiler absolute path in packages.
-
Packaging a component with no requirements does not crash anymore.
Project open dialog
-
Do not display the file chooser toolbar when selecting a project.
Project properties dialog
-
The first column of environment table has now a minimum width.
-
Add more project statistics.
-
Add an option to add the current git branch to the project version number.
-
Remove the
arguments
tab.
-
Make some combo-box a bit larger for some widget themes where their contents is cropped.
-
Fix deletion in argument list when pressing Backspace.
-
Use shorter labels so that translations are visible.
Search dialog
-
The project browsing is now done through a background task.
-
Case insensitive search with words only now works correctly in all cases.
-
Support for browsing compressed files.
Text editor
-
The
Compress file
button tooltip now shows the actual compression ratio, not its inverse.
-
Text file compression is now transparent, and activated through a toggle button.
-
Uncompressed files are now stored in the
.hidden/.uncompressed
hidden directory. Files are removed from the old Uncompressed
visible directory as soon as it is marked compressed again.
-
The "remove trailing spaces" formatting option has no effect on
*.md
or *.MD
files.
Version control
-
Add a button that clears the version control terminal output.
-
The command error dialog now works correctly.
-
Correctly cancel commands when password dialogs are cancelled.
-
All local and remote branches are now available.
-
Git synchronization now updates the local list of branches.
-
Fix the height of the error dialog.
-
Do not log
git branch
commands.
-
Version control information and file information are now two distinct dialog boxes.
Version control dialog
-
Always open the dialog, even if there is nothing to commit.
-
Add a version control history tab.
-
Hide the modification tab if there is no changes.
Welcome dialog
-
Sound and animation on a few specific dates. :-)
-
Use a lighter version of the blue color.
Translations
-
Update German translation
-
Update French translation.
-
Update Italian translation.
-
Updated Brazilian Portuguese translation.
Miscellaneous
-
Update Gambas fonts.
-
Make Gambas 16 pixels size font less round and fix many characters.
-
Move the bytecode folder instead of copying it.
-
Add
.startup
, .list
and .info
to projet default gitignore file.
-
Update financial support list.
-
Update Zen color theme.
-
If
chromium
is selected as default browser, then stable Google Chrome can be used if Chromium is not installed.
-
Do not crash if the layout user directory does not exist yet.
-
Add support for test modules.
-
Use bold text instead of shadows to display project titles.
-
Relative paths on command-line are now assumed to be relative to the current working directory.
-
Ignore untranslated title and description when displaying project information.
-
The first opening of the console waits a bit so that the arrangement of its container is made.
-
Add
gb.test.tap
to the list of components.
-
Allow any form family to use the menu editor.
-
Support for custom stock icons sizes depending on the form family.
-
Support for
gb.web.gui
component.
-
Redraw the module icons.
-
Hitting ESC key when the focus is on the console immediate command textbox now always closes the console tab.
-
Change the version control synchronize icon to the
download
icon.
-
Use global constants for IDE blue and orange colors.
-
Use
-r
interpreter option to redirect standard error output.
-
Ignore hidden components specified in the project file.
-
Automatically load
gb.test
information.
-
Get rid of big orange panels.
-
Redraw the class symbols icons, and make them adapt to the desktop font size.
-
Start to clean up the image directory.
-
Use new stock icons.
-
Remove some useless icons.
-
Remove dark versions of many icons, now they are automatically generated.
-
Better default IDE configuration.
-
Check for duplicated class files when opening a project.
-
Do not set current project bookmark if opening the project fails.
-
Update financial support file.
-
Support for the new
gb.poppler
component.
-
Implement "save as" action for external files.
WIKI
-
Fix author and translator page.
-
Implement
help
command that inserts help defined in source code comments.
-
Use the full page width.
-
The
@help
command now can retrieve class help comments.
-
Undo is now possible if the page does not exist.
-
Handle custom array classes automatically.
-
Add command-line options to find or replace a string in all wiki pages.
-
Add a command-line option to print the package table.
-
The Italian translations are now complete.
WEB SITE MAKER
-
Added Brazilian Portuguese translation.
EXAMPLES
-
Add debugging messages to the Printing example and use full page to print.
INTERPRETER
-
Read-only arrays are now really read-only.
-
Add a
-t
option that dumps to the standard error the position of each executed line of code.
-
Floating-point number to string conversion is now 1.7 times faster.
-
System.Trace is a new property that toggles the dump of the position of each executed line.
-
Add command-line help for the
-t
option.
-
Do JIT compilation after class loading. Otherwise the JIT compiler may want to load the class that triggers the compilation again.
-
Remove a useless global variable.
-
Fix exponent sign printed twice in float to string conversion.
-
Fix Find() method on Float, Single, and Long arrays.
-
Fix compilation of function calls with variable arguments passing.
-
Disable some compiler warnings that generate false positives.
-
Fix static array management. They are not read-only anymore. Only methods that want to modify the size of the array are forbidden, as well as the ReadOnly property.
-
Reading a string on a memory stream now correctly skip the terminating null byte.
-
Fix serialization of NULL values.
-
Remove an old debugging message displayed when writing a pointer to a stream.
-
Stream.NullTerminatedString is a new property that tells if writing a string on the stream emits the string length first, or a null terminated zero byte. This property is TRUE by default on memory streams.
-
OPEN NULL
is a new syntax that opens a null stream. Reading always returns end of file, and writing does nothing except advancing the file pointer, allowing to know how many bytes were written.
-
Rename macro that convert a Gambas stream object to the internal stream structure and add a macro that does the reverse conversion.
-
_read
and _write
are two new special methods that allow to make any object serializable by the READ and WRITE instructions.
-
Serializing an object is not ambiguous anymore.
-
Use one byte for writing the class name length when serializing objects.
-
Memory-mapped component archives file descriptors are now automatically closed when a child process is executed.
-
WAIT NEXT
is a new instruction that waits for the next event and process it.
-
Signals are now correctly unregistered if the program exits during a signal handler.
-
Object.Count() does not fail anymore if the object is invalid.
-
A class can declare a public
_invalid
boolean variable. The value of that variable will indicates if the object is invalid.
-
gbx3 -L
now displays the same Gambas version as gbx3 -V
.
-
Error.Text, Error.Where and Error.Backtrace are now available inside the Application_Error handler.
-
Check special methods return value datatype and raise a dedicated error if it is incorrect.
-
Opening a pipe for reading does not block anymore if the pipe has not been opened for writing yet. It help synchronizing applications using the same pipe a lot!
-
Add class name in
incorrect symbol declaration
error message.
-
Fix possible memory leaks when reading objects or variants with the READ instruction.
-
Application.ParentHandle is a new property that returns the parent process id.
-
Fix release of return value of JIT methods called from non-JIT methods.
-
Internal name of libraries uses a point now between vendor and library name, not a slash anymore.
-
Running a process without an event name does not reference its observer for nothing anymore.
-
IsAscii()
, IsLower()
, IsPunct()
... instructions are now a bit faster.
-
PEEK
is a new instruction that peek some bytes from a stream without removing them, so that they are available to the next READ instruction.
-
VarPtr()
on variants now returns a pointer to the variant contents.
-
VarPtr()
on local strings are forbidden again.
-
Converting a string to a pointer returns a pointer pointing at the beginning of the string.
-
Call the event loop just after the JIT compiler has aborted, so that its processes are correctly freed.
-
&=
operator optimization.
-
Strings greater than 4096 bytes are allocated by 4096 bytes steps.
-
Support for JIT
&=
optimization.
-
Enabling an already enabled timer has no effect anymore.
-
Use
-r
option now to redirect standard error output. No conflict anymore with -t
.
-
Update help message and display options in alphabetic order.
-
Add
-T
option to run test modules.
-
Interpreter options now accept a void argument.
-
Automatically load
gb.test
component when the -T
option is used.
-
Make READ and INPUT return void strings instead of NULL, otherwise JIT compiler fails.
-
Make a public function static.
-
Use
time_t
in GB.MakeDateFromTime API.
COMPILER
-
Correctly generate metadata file for events so that there is no spurious ByRef arguments anymore.
-
Remove some useless structure packing directives.
-
Fix compilation of function calls with variable arguments passing.
-
Correctly detect help comments in all cases.
-
Allow initialization of variables associated with property declaration.
-
Allow static arrays to be used with the point operator.
-
OPEN NULL
is a new syntax that opens a null stream.
-
Function names can be put between parenthesis to disable possible warnings on them.
-
Support for the new
WAIT NEXT
instruction.
-
Workaround a gcc 8 compiler optimization bug.
-
Fix a comment typo.
-
Support for the new
PEEK
instruction.
-
Support for test modules.
-
Fix an uninitialized local variable.
-
Do not crash anymore by looking for help comments in form files when controls are public.
-
Support for
&=
operator optimization.
-
Automatically add
gb.test
component information when a project includes a test module.
-
Order options in displayed help.
-
Output a class flag for test modules.
-
Fix compilation of
OPEN STRING
instruction that sometimes failed.
-
Remove now useless structure fields.
ARCHIVER
-
Support for test modules.
-
Order options in displayed help.
INFORMER
-
Redesign verbose messages. Do not print anything if verbose mode is off, except warning messages.
-
Order options in displayed help.
-
If a component includes the information of one component among many, do not fail if the first one does not exist. Try the other ones.
SCRIPTER
-
Order options in displayed help.
AUTHORS
-
Added a new italian translator.
BENCHMARKS
-
Add a new string benchmark.
GB.ARGS
-
Updated Brazilian Portuguese translations.
GB.DB
-
Add DB.LastInsertId, the static version of Connection.LastInsertId.
-
Connection.ApplyTemplate() now updates existing tables.
-
Connection.Url is a new property that returns the URL of the connection.
GB.DB.FORM
-
DataView: Add SelectAll() and UnselectAll() methods.
-
Updated Brazilian Portuguese translations.
GB.DB.MYSQL
-
Add support for
GB_DB_MYSQL_NOSSL
environment variable, that allows to disable SSL connections. They are buggy in some versions of the mysql client library.
-
Make
gb.db.mysql
compile with older versions of MySQL.
-
Make
gb.db.mysql
compile with MySQL version >= 8.0.1.
-
Detect SSL_MODE_DISABLED at configure time, to make the component compile on older mysql clients.
-
Print a warning message if disabling SSL connection is not supported.
GB.DB.POSTGRESQL
-
Fix a possible buffer overflow.
-
Add license exception for OpenSSL.
-
Do not put explicit copyright holder name in the COPYING file.
GB.DB.SQLITE3
-
Fix memory leak in Connection.LastInsertId implementation.
GB.DBUS.TRAYICON
-
Use the Unity protocol on all desktops.
GB.DEBUG
-
Debug.Fifo is a new property that returns the name of the FIFO used for communication with the IDE.
GB.DESKTOP
-
DesktopFile: Fix the case of the "exist" symbol that is used as a public method name.
GB.DESKTOP.X11
-
X11Systray: System tray now works with QT5. A display glitch remains.
-
X11Systray: Show() now takes the icon background color as second optional argument. The default color is black.
GB.DRAW
-
Paint: TextHeight is a new property that returns the height of one line of text. This is not the same as Paint.Font.Height, as the device resolution is taken into account.
GB.EVAL
-
Don't highlight Null as constant inside the new OPEN NULL syntax.
-
Do not crash anymore when analyzing a line that ends with a
{
character.
-
Add Highlight.Added and Highlight.Removed style constants.
GB.EVAL.HIGHLIGHT
-
Fix highlighting of long lines and comments.
GB.FORM
-
ButtonBox: Settings the Filter property to FALSE correctly destroy the internal associated button, and prevent the control to crash if you set the property again.
-
ButtonBox: Custom buttons added with _AddButton() are now always between the clear button, and the standard button.
-
ButtonBox: Filter icons are now a little darker.
-
ColorChooser: Use icons instead of labels for color components.
-
DirChooser: ShowToolbar is a new property that toggles the toolbar.
-
DirChooser: Custom bookmarks are now correctly refreshed when they change.
-
DirView: Do not display an error when a directory is unreadable.
-
DocumentView: Some little design changes.
-
FileChooser: Correctly deal with
&
in bookmark names.
-
FileChooser: Add a separator above the bottom filters when Border property is unset.
-
FileChooser: ShowToolbar is a new property that toggles the toolbar.
-
FileChooser: Custom bookmarks are now correctly refreshed when they change.
-
FileProperties: Click is a new event that is raised when a tab is selected.
-
FileProperties: Index is a new property that returns or sets the current tab index.
-
FileProperties: Add() now returns the index of the added tab.
-
FileProperties: Adding a tab does not raise the Click event anymore.
-
FileProperties: Fix an error triggered by the preview.
-
FileView: Display a lock icon when a directory is unreadable.
-
FileView: Display a text inside the view when a directory is empty.
-
FontChooser: Initializing the font tree is now a lot faster.
-
IconPanel: Scale the panel icons so that each panel title has the same height.
-
ListEditor: Activate event is now emitted if the user clicks twice on the list.
-
ListEditor: Unique is a new property that ensures that all ListEditor elements are unique.
-
ListEditor: Add Remove() method.
-
ListEditor: Add Find() method.
-
ListEditor: Add Index property.
-
ListEditor: Text property now returns or sets the text currently edited.
-
ListEditor: The insert button text is now "Add".
-
MenuButton: Correctly deal with
&
shortcut character.
-
SliderBox: The default value is now applied when double-clicking on the spinbox, not the slider.
-
SliderBox: Add a Picture property.
-
Spinner: Add a Padding property.
-
Stock: Analyze icon directories in alphabetic order, so that numeric directory names are always identified first.
-
Stock: Better support of some icon themes.
-
TabPanel: Add TabBarPaddingStart and TabBarPaddingEnd properties. They allow to define space on the left and the right of the tab bar, so that you can put some widgets on top.
-
TabPanel: Fix tab bar layout routine.
-
TabPanel: The "close all" button is now drawn after the right padding.
-
TabPanel: TabBarSize is a new property that returns the height of the tab bar.
-
Use the KDE SVG version of Tux that is a lot smaller.
-
Add may new stock icons.
-
Update translations.
GB.FORM.DIALOG
-
Updated Brazilian Portuguese translation.
GB.FORM.EDITOR
-
TextEditor: Highlight the entire current line when it is wrapped.
-
TextEditor: Add support for integrated diff mode.
-
TextEditor: CTRL+F opens a simple text search field inside the editor.
-
TextEditor: Add F3 and SHIFT+F3 shortcuts for searching forward and backward in the text search popup.
-
TextEditor: TextEditor[].Purge() works as expected now.
-
TextEditor: Do not use Application.Busy in Load() and Save() methods.
-
TextEditor: String closing routine should be less stupid now.
-
TextEditor: Draw wrapped lines with little arrows at the end.
-
TextEditor: Moving down now should work as expected on wrapped lines.
-
TextEditor: Inserting a string delimiter at the beginning of the line does not crash anymore.
-
TextEditor: Bold text is made bolder when the background is dark.
GB.FORM.MDI
-
ToolBar: Draw a selected border in design mode.
-
Toolbar: SetLayout() is a new static method that defines the saved layout of a toolbar from its key.
-
Toolbar: GetLayout() is a new static method that returns the saved layout of a toolbar from its key.
-
Toolbar: Settings is a new property that allows to return or set the toolbar layout as a string.
-
Workspace: Add TabBarPaddingStart and TabBarPaddingEnd properties. They allow to define space on the left and the right of the tab bar, so that you can put some widgets on top.
-
Workspace: Add a TabPanel property that returns the inner workspace tab panel.
-
Updated Brazilian Portuguese translations.
GB.FORM.PRINT
-
You can continue to freely zoom with the mouse wheel when current zoom is at 100%.
-
The paper size is correctly refreshed when the orientation is changed.
-
Add default margin properties to the Printer class (MarginTop, MarginBottom, MarginLeft and MarginRight).
-
Add component icon.
-
Updated Brazilian Portuguese translations.
-
Update project icon.
GB.FORM.STOCK
-
Redraw some icons, and add new ones.
-
Add a 128 pixels version of the colored
directory
icon.
-
Add 128 pixels version of many icons.
GB.FORM.TERMINAL
-
TerminalView: ReadOnly is a new property that makes the TerminalView ignore keyboard input.
-
TerminalView: Add a 2 pixels margin around the terminal contents.
-
TerminalView: Add a new popup menu entry to select all the text.
-
TerminalView: Automatic scrolling is not smooth anymore.
-
TerminalView: Automatic scrolling is disabled when the last terminal line is hidden.
-
TerminalView: Terminal output processing is now delayed until the control is visible and has been arranged, so that the terminal width is accurate.
-
TerminalView: Better default colors.
-
TerminalView: Reserve one pixel less between characters for bold text.
-
Document the component with help comments.
-
Move XTerm files to the hidden project directory.
-
Updated Brazilian Portuguese translations.
GB.GEOM
-
Remove unnecessary PACKED directives.
-
Fix some spaces in source code.
GB.GTK
-
TextBox: Add Placeholder property. Beware that it does nothing as GTK+2 entry widget does not support placeholder text.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to full screen.
-
Windows whose Utility property is set now use
_NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Do not imbricate focus events.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
TextBox and TextArea KeyPress events cannot be stolen by other controls anymore.
-
Support for the new
WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Printer.Paper now works as expected.
-
The Window State event is correctly raised now, and the state properties are now correctly synchronized.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Negative values are replaced by zero when setting Application.Busy.
-
Opening a popup always raises it to the pop now.
GB.GTK3
-
TextBox: Add Placeholder property.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to fullscreen.
-
Windows whose Utility property is set now use
_NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Do not imbricate focus events.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
TextBox and TextArea KeyPress events cannot be stolen by other controls anymore.
-
Support for the new
WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Printer.Paper now works as expected.
-
The Window State event is correctly raised now, and the state properties are now correctly synchronized.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Fix Style.PaintCheck() and Style.PaintArrow() for GTK+ >= 3.14.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Negative values are replaced by zero when setting Application.Busy.
-
Opening a popup always raises it to the pop now.
GB.GUI
-
Fix detection of GUI components and share some code with
gb.gui.qt
.
GB.GUI.BASE
-
GridView: Selecting while moving the mouse cursor now raises the Select event only when the mouse button is depressed.
-
GridView: Select event is not raised twice on click anymore.
-
IconView: Fix grid height computation.
-
IconView: Do not use rounded rectangles anymore for selection frames.
-
ListBox: Click event is now raised when the Index property is modified.
-
Message: The ENTER key now selects the button having the focus, not the default one, so that message boxes behave the same with GTK+ and Qt.
-
Message: Add a button in message boxes to copy the message in the clipboard.
-
Message: Message boxes now correctly handle multi-line text in buttons.
-
Paint: Paint.Check() is a new method that draws a check mark.
-
Picture: Fix how Picture[] interprets relative paths.
-
Picture: Picture[] now automatically inverts the image for dark themes.
-
ScrollArea: Do not show the shadows in some cases when they should not be visible.
-
TreeView: ShowCheck is a new property that uses checkboxes to handle selection mode.
-
TreeView: Fix right-to-left layout management.
-
TreeView: Take padding into account when interpreting mouse events.
-
TreeView: Use radio buttons when ShowCheck property is set with single selection mode.
-
TreeView: Calling Add() or Remove() now automatically cancels the current renaming.
-
TreeView: Fix multiple selection.
-
TreeView: Setting the Key value with an unknown key now unselects the current key.
-
TreeView: The Selection property now handles single selection mode correctly.
-
Fix drag & drop frame management.
-
Prevent possible flickering of drag & drop frame.
-
The DragLeave event is now emitted reliably when the mouse leaves the drag and drop frame.
-
Default message icons are now visible when
gb.form
component is not used.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Use the new Application.DarkTheme property.
-
Add translations.
GB.GUI.QT
-
Fix detection of GUI components and share some code with
gb.gui
.
GB.HTTPD
-
Do not use
__DATE__
macro for reproducible builds.
GB.IMAGE
-
Remove some surprisingly useless duplicated code in image conversion.
-
Add an API to get the luminance of a color.
-
Color.Invert() is a new method to invert a color.
-
New dark theme color inversion algorithm.
GB.JIT
-
Support for read-only arrays.
-
Implement fast unsafe compilation of
Byte@
, Short@
... functions, that just access memory without checking anything.
-
Fix static arrays management.
-
Add support for
VarPtr()
on variant variables.
-
Fix
VarPtr()
on function arguments.
-
Compiling libraries works now.
-
Correctly handle unary minus operator.
-
Support for the
&=
operator optimization.
-
Cosmetic changes.
-
Fix a badly written code that crashes on 32-bits CPU.
GB.MARKDOWN
-
Allow special commands to be inserted anywhere in the line, except the
index
one.
-
Lines beginning with
#
without a space after do not make the parser crash anymore.
-
Take anchors into account correctly when generating links.
-
Add a couple of tests for common problems.
GB.MEDIA
-
MediaPipeline: Play() now takes an extra optional argument that allows not to wait for the command completion.
-
GB_MEDIA_DEBUG
is a new environment variable that toggles warning messages.
GB.MEDIA.FORM
-
MediaView: Muted is a new property that defines if the audio is muted or not.
-
MediaView: Volume is a new property to return or set the audio volume.
GB.NET.SMTP
-
SmtpClient: Add
_=
sequence in mime part boundaries, as this sequence should not be present in encoded data.
-
SmtpClient: Fix quoted-printable encoding of headers containing e-mail addresses.
-
SmtpClient: Clear() is a new method that clears all attachments.
-
SmtpClient: Make SmtpClient able to send multiple mails correctly.
GB.OPENSSL
-
An internal routine's return value was mismatched causing HMac to return without data whenever the digest method was found. (Bug#1725)
-
Add Scrypt function.
-
Add Pbkdf2 function.
-
Unnecessary kdf.h blocking Xenial.
-
KDF Functions under OpenSSL Class.
-
Declare longs as longs instead of integers.
-
RandomBytes length limit (1 - 0x7FFFEFF7).
-
Hash incorrectly allocated by sizeof a pointer.
-
Avoid doubles in integer power-of-two test.
-
Add beginning of a test suite.
GB.PDF
-
Raise minimal supported poppler version to 0.20.
-
Fix segfault with poppler > 0.83.
-
Make
gb.pdf
compile with poppler >= 0.85.
-
Rely on
pkg-config
only to detect poppler library.
-
Correctly disable
gb.pdf
component if pkg-config
fails.
-
Mark
gb.pdf
as deprecated.
GB.POPPLER
-
New
gb.poppler
component that will replace gb.pdf
. It is based on poppler-glib
, except for rendering that is based on poppler-splash
.
GB.QT4
-
TextBox: Add Placeholder property.
-
Window: set the window size at creation to 1x1, so that there is no default size.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to fullscreen.
-
Windows whose Utility property is set now use
_NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Control.Next and Control.Previous now never return invalid controls.
-
Do not imbricate focus events.
-
Apply Paint.FontScale only when Paint.Font is assigned. Not when one of the Paint.Font properties changes.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
Support for the new
WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Drawing on a cached DrawingArea does not display a warning message anymore.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Some theme-specific workarounds for Style paint methods.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Modal windows are now actually modal before entering their Open event.
-
Negative values are replaced by zero when setting Application.Busy.
-
A modal window can be opened on top of a popup window without breaking the event loop.
GB.QT4.WEBKIT
-
Fix incorrect declarations of special methods.
-
Raise Progress evens later on the event loop, to avoir possible crashes of WebView methods.
GB.QT5
-
TextBox: Add Placeholder property.
-
Window: set the window size at creation to 1x1, so that there is no default size.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to full screen.
-
Windows whose Utility property is set now use
_NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Control.Next and Control.Previous now never return invalid controls.
-
Do not imbricate focus events.
-
Workaround "Setting a QCompleter on non-editable QComboBox is not allowed" message
-
Apply Paint.FontScale only when Paint.Font is assigned. Not when one of the Paint.Font properties changes.
-
Utility windows now kept being in front of their parent window correctly.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
Support for the new
WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
X11 event filter correctly handle ClientMessage events now.
-
Drawing on a cached DrawingArea does not display a warning message anymore.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Some theme-specific workarounds for Style paint methods.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Modal windows are now actually modal before entering their Open event.
-
Negative values are replaced by zero when setting Application.Busy.
-
A modal window can be opened on top of a popup window without breaking the event loop.
GB.QT5.WEBKIT
-
Fix incorrect declarations of special methods.
-
Raise Progress events later on the event loop, to avoid possible crashes of WebView methods.
GB.REPORT2
-
Font size is now the same whatever the printer resolution.
-
Added Brazilian Portuguese translations.
GB.SCANNER
-
Fix bug on the
scanimage
parser to take various configurations into account.
-
An example in the source that use
gb.scanner
abilities.
-
Better error management with an Error event.
-
Add PageBegin and PageEnd events to manage actions between each page.
-
Support for multiple scans from the feeder.
-
Use the stock scanner icon as project icon.
GB.SDL2
-
Support for the new WAIT EVENT instruction.
GB.SETTINGS
-
Settings.Clear() now takes an extra optional boolean argument that tells to remove slots recursively.
-
Display a better error message if the settings file directory disappeared.
-
Settings.Keys.All is a new property that returns an array of all children slot keys.
-
Settings.Keys.Exist() is a new method that returns if a specific child slot exists.
-
Settings.Keys.Count is a new property that returns the number of children slots.
-
Settings.Exist() is a new method that return if a specific settings key is set.
-
Settings.Count is a new property that returns the total number of settings.
GB.TEST
-
New component for unit tests.
GB.UTIL
-
ClassStat: Add the flag for test modules.
-
CsvFile: Charset now can be specified. If not specified, the first line of the files is used to guess if it could be WINDOWS-1252, or otherwise UTF-8.
-
CsvFile: Create() is a new method for opening a CSV file for writing.
-
CsvFile: Open() is a new method for opening a CSV file for reading.
-
CsvFile: Quote() is a new method that quotes a value for the CSV format according to its separator and escape characters.
-
Class.Stat() now understands the ".../" syntax to look for classes in the current project.
-
Process: Add Expect() method that allows to answer the prompts of interactive commands running in a virtual terminal easily (think about ssh, scp...).
-
String: PadRight() is a new method that pad a string to the right up to a specified length using a string pattern.
-
String: PadLeft() is a new method that pad a string to the left up to a specified length using a string pattern.
-
Date.ToISO8601() is a new function that converts a date to ISO-8601 format.
-
String.FromHTML() has better support for
<p>
, <ul>
, <li>
and <ol>
markups.
GB.UTIL.WEB
-
JSONCollection.Copy() now correctly returns a JSONCollection object.
-
Converting a collection into JSON is a now a bit faster.
-
URL.Quote() now quotes spaces as "%20" and not "+" anymore.
-
URL.UnQuote() takes a new optional argument that prevent unquoting "+" into space.
-
Fix query encoding & decoding in URLQuery class.
GB.WEB
-
Fix session abandon.
-
Compress text responses if its size is greater than 512 bytes, not 128.
-
Response.Reset() allows to send the response again.
-
Response.Begin() now takes the content-type as optional argument.
-
Use System.Language if the
Accept-Language
HTTP header is void.
-
Request.Reset() is a new method that reads the request contents again.
-
CGI.Reset() is a new method that resets CGI variables to their initial values.
-
Response.SendFile() now correctly deals with relative paths.
-
CGI.All is a new property that returns a collection of all CGI environment variables.
-
Do not unquote "+" into space in query strings.
GB.WEB.FORM
-
Fix management of dynamically created popups.
-
Make table headers sticky.
-
Fix window buttons.
-
Document the component.
-
Update project title.
-
Fix a typo in WebMenu properties declaration.
-
Updated Brazilian Portuguese translations.
GB.WEB.GUI
-
New component that replaces
gb.web.form
.
GB.XML
-
Fix incorrect declaration of
_put
methods.